# What's new in entrepta 3

> 37 components for products: money and dates, lists and tables, filters, dashboards, charts, onboarding and chat. Nothing in 2.x breaks, so there is nothing to migrate.

## Update

The new tokens come with init: the chart palette, the height animation of the Accordion, and fields without code ligatures. Commit first: `--overwrite` replaces local edits.

```bash
# the new tokens: the chart palette, the collapse animation, fields without ligatures
npx @entrepta/cli@latest init --theme=entrepta --overwrite

# the 2.x components that changed; keep the ones your project has
npx @entrepta/cli@latest add button input textarea card dialog tabs toast \
  command-palette code-block sidebar filter-pill rolling-number \
  mode-toggle theme-switcher status-bar top-nav use-mode use-theme --overwrite
```

## New in Primitives

- **Avatar**: A person or a thing as an image over its initials, with a presence dot and a stacked group. [docs](https://entrepta.vercel.app/docs/components/avatar.md)
- **IconTile**: An icon in a tinted square, for a category, an account or a status, with a corner badge. [docs](https://entrepta.vercel.app/docs/components/icon-tile.md)
- **Sheet**: A panel from the edge to create or edit without leaving the list, that asks before losing changes. [docs](https://entrepta.vercel.app/docs/components/sheet.md)
- **Popover**: A panel anchored to a trigger, for content you work in: a calendar, a filter. [docs](https://entrepta.vercel.app/docs/components/popover.md)
- **Accordion**: Sections that open in place, with a trailing value in the header and actions beside it. [docs](https://entrepta.vercel.app/docs/components/accordion.md)
- **Progress**: How far along: a bar, a bar in steps or a ring, as a progressbar with its value in words. [docs](https://entrepta.vercel.app/docs/components/progress.md)
- **Stepper**: Where someone is in a flow: an ordered list, the current step with the diamond. [docs](https://entrepta.vercel.app/docs/components/stepper.md)

## New in Forms

- **MoneyInput**: Money typed like a cash machine or freely, pasted in any format, held in minor units. [docs](https://entrepta.vercel.app/docs/components/money-input.md)
- **Select**: A value from a short list, in a form, with the field's look and the menu's rows. [docs](https://entrepta.vercel.app/docs/components/select.md)
- **Combobox**: A value from a long list you can search: groups, several values, create on the spot. [docs](https://entrepta.vercel.app/docs/components/combobox.md)
- **SegmentedControl**: One choice out of a few, all in view, on native radios with a sliding indicator. [docs](https://entrepta.vercel.app/docs/components/segmented-control.md)
- **ChoiceCard**: A choice that needs more than a word: cards that are labels of native radios or checkboxes. [docs](https://entrepta.vercel.app/docs/components/choice-card.md)
- **SwatchPicker**: A palette color by key, never a hex: native radios, each swatch named after its hue. [docs](https://entrepta.vercel.app/docs/components/swatch-picker.md)
- **SecretField**: A secret to copy once: masked, revealed on request, copied with a polite confirmation. [docs](https://entrepta.vercel.app/docs/components/secret-field.md)
- **FileDropzone**: A real file input to drop on or choose from, checking type and size, listing progress. [docs](https://entrepta.vercel.app/docs/components/file-dropzone.md)
- **Calendar**: A month of days to pick a day or a range from, in plain dates, on react-day-picker. [docs](https://entrepta.vercel.app/docs/components/calendar.md)
- **DatePicker**: A day, a range, a month or a year, picked from a calendar in a popover. [docs](https://entrepta.vercel.app/docs/components/date-picker.md)
- **DateNavigator**: Previous, the period, next and today, to walk through days, months or years. [docs](https://entrepta.vercel.app/docs/components/date-navigator.md)

## New in Layout

- **MobileNav**: Bottom bar with four destinations and More, which opens a sheet. [docs](https://entrepta.vercel.app/docs/components/mobile-nav.md)
- **BentoGrid**: Dashboard tiles on the 12 column grid, each one a size container, entering in order. [docs](https://entrepta.vercel.app/docs/components/bento-grid.md)

## New in Data

- **Amount**: Money shown one way everywhere: mono, tabular, the real minus, a muted symbol. [docs](https://entrepta.vercel.app/docs/components/amount.md)
- **Metric**: One number with its label, how it moved and against what; loads in its own shape. [docs](https://entrepta.vercel.app/docs/components/metric.md)
- **Delta**: How a value moved: an arrow, a sign and the change, colored by whether that is good news. [docs](https://entrepta.vercel.app/docs/components/delta.md)
- **Sparkline**: The shape of a series with no axes, wiping in once on screen, for a Metric's trend. [docs](https://entrepta.vercel.app/docs/components/sparkline.md)
- **Chart**: The frame for Recharts: palette colors, a tooltip in full values, a legend from three series, the data as a table. [docs](https://entrepta.vercel.app/docs/components/chart.md)
- **BarList**: A ranking in rows, each label in full on a bar as long as its share; server safe. [docs](https://entrepta.vercel.app/docs/components/bar-list.md)
- **ContributionGrid**: A year of days as weeks, levels from the brand, one Tab stop walked by the arrows. [docs](https://entrepta.vercel.app/docs/components/contribution-grid.md)
- **Redact**: A value hidden behind a mask of its width when the app asks, read as hidden value. [docs](https://entrepta.vercel.app/docs/components/redact.md)
- **ListRow**: The standard row of a list, with a leading tile, a truncating title and a trailing value. [docs](https://entrepta.vercel.app/docs/components/list-row.md)
- **Table**: A real table that scrolls in its own box, with a sticky header and numbers on the right. [docs](https://entrepta.vercel.app/docs/components/table.md)
- **DataTable**: Records to sort, select and hide columns in, on TanStack Table, virtualized past 500 rows. [docs](https://entrepta.vercel.app/docs/components/data-table.md)
- **FilterBuilder**: Filters built from fields, each one an applied pill, kept in the URL with serializeFilters. [docs](https://entrepta.vercel.app/docs/components/filter-builder.md)

## New in Chat

- **PromptInput**: Where a question is written: grows, sends on Cmd Enter, stops while streaming, suggestions. [docs](https://entrepta.vercel.app/docs/components/prompt-input.md)
- **ChatThread**: A conversation by role, tool results in cards, streaming that keeps your place. [docs](https://entrepta.vercel.app/docs/components/chat-thread.md)

## New in Feedback

- **Alert**: A notice that stays until it is dealt with, its status in a tile and the corner glow. [docs](https://entrepta.vercel.app/docs/components/alert.md)
- **EmptyState**: A list or a widget with nothing in it: what is missing, and the one thing to do. [docs](https://entrepta.vercel.app/docs/components/empty-state.md)

## New in Motion

- **SpotlightCard**: A Card with the brand glow trailing the cursor, usable from a server page. [docs](https://entrepta.vercel.app/docs/components/spotlight-card.md)

## Changed

Everything below keeps its API. It only gained.

- **Theme and mode.** A switch lands in one frame, crossfaded where the browser can, instead of piece by piece.
- **Sidebar.** variant="labeled" with groups, a search slot, a footer and collapsible. It keeps the current item in view, and a labeled sidebar can be text only.
- **FilterPill.** With onRemove it is an applied filter, with a × named after what it removes.
- **Amount, Metric, RollingNumber.** They hide behind a mask when a RedactProvider asks.
- **Button.** asChild works again, and Button, Input, Textarea, StatusBar and TopNav render on the server.
- **Sheet.** container renders it inside a frame of your own.
- **Tabs.** An icon tab keeps its name for screen readers on a phone.
- **CodeBlock.** Scrolling the page over a block works again: it only holds sideways scrolls.
- **ChromeMessage.** Takes headingLevel, for an error inside a layout that has its own h1.
- **Form fields.** No code ligatures, which drew some typed slashes blank.
- **The CLI.** Every write resolves inside the project, symlinks included, and --version tells the truth.
