Changelog

What changed in Levenium UI, newest first. The current version is 4.0.0.

Toasts pile up

Version 4.0.0 ·

New

  • Toasts pile up with the newest in front, three at a time, and fan out into a column while the pointer or keyboard focus is on them.
  • toast.configure({ stack: false }) goes back to one toast that morphs into the next. The Toast playground has a Stack switch for it.

Improved

  • A call to toast now opens its own toast instead of morphing the one on screen, and a repeated message is no longer merged into a ×2 counter. To keep one toast changing in place, give the calls the same id or use toast.update.
  • Toasts sit 24px from the screen edge, 16px on a phone.
  • The toast engine is our own copy of Ding in components/ui/toast/engine, so @yusufceng1z/ding-vue is no longer a dependency. Remove it from your package.json when you copy the folder.

Toast fills as it counts down

Version 3.1.0 ·

New

  • A Toast that closes on its own fills from the leading edge while it counts down. The fill pauses on hover and keyboard focus, and starts over when the toast is shown again or updated.

Improved

  • Toast uses the app's --font-sans with the style guide's tracking instead of a system font.
  • The Toast playground has a Show Toast button and a Customize panel, and each setting answers with a toast.

Toast replaces Sonner, and Tabs take the Button sizes

Version 3.0.0 ·

New

  • Toast is the new toast component, built on Ding: one toast at a time that morphs in place, with a description, one or two buttons, an avatar, trailing text and a progress bar. Its page has a playground with every kind.
  • toast.update changes a live toast in place, and toast.promise turns a loading toast into the result.
  • Tabs has an xs size.

Improved

  • Sonner is replaced by Toast. Import toast and Toaster from @/components/ui/toast instead of vue-sonner and @/components/ui/sonner. The Sonner files stay in the library as SonnerToaster for anyone who wants to switch back, and its docs page now leads to Toast.
  • Toasts sit at the top centre, are dark on a light page and light on a dark page, and an error closes after 8 seconds.
  • A Tabs list is now as tall as the Button of the same size, so the two line up on one row. Sizes are xs, sm, default and lg; size="md" still works and means default.

The menu opens on the page you're on

Version 2.3.1 ·

Fixed

  • On a Mock scene or a shader docs page, the docs sidebar and the site menu

Mock in the menu, and a gallery that plays

Version 2.3.0 ·

New

  • Mock is in the header, with a panel for the gallery and the docs, and in the menu, the docs sidebar and ⌘K search, which also finds every Mock scene and guide.
  • The Mock gallery plays the scenes on screen: up to three cards at a time swap their still for the live scene once you stop scrolling. With reduced motion on, the stills stay.
  • The homepage's "What's inside" has a Mock card.

Fixed

  • The header search no longer runs into the last link at 1280px wide.

Mock, faux product UI for landing pages and docs

Version 2.2.0 ·

New

  • Mock: believable product screens for landing pages and docs, as stills or animated demos with a scripted cursor, built from MockStage, MockWindow, MockPhone and about 60 more parts.
  • 72 Mock scenes at /mock, from hero demos to bento grids and product studies, each with play, pause, frame-by-frame step, a phone-width preview and its Vue source.
  • Mock guides at /mock/docs on framing, motion, craft and checking a scene before it ships.
  • Button has size="lg-desktop": the default size on phones and tablets, lg from the lg breakpoint, with no jump on load.
  • DatePicker takes a locale for its calendar and the date it shows.

Fixed

  • TableData search ignores the tabs and line breaks a value brings when pasted from a spreadsheet.
  • Opening a Drawer from a menu item no longer leaves the page unclickable after the drawer closes.

FanGallery, LiquidGlassLogo and RefractedText

Version 2.1.0 ·

New

  • FanGallery spreads images along a symmetric curve and parts the fan on hover or focus, with keyboard navigation.
  • LiquidGlassLogo renders a logo as refracting liquid glass.
  • RefractedText renders text as refracting glass.
  • Three new shader presets.
  • The shader editor edits lists, stops and JSON props, so more presets are fully editable.
  • Colour fields in the shader editor accept hex without #, short hex like 0af, and CSS colours.

Improved

  • Text and primary colours are now pure black in light mode and pure white in dark mode, for more contrast.
  • Button labels are semibold.

Cleaner button groups

Version 2.0.1 ·

Fixed

  • Buttons in a ButtonGroup no longer show small notches where they join.

A new LaserFlow that lands on your UI

Version 2.0.0 ·

New

  • LaserFlow is rebuilt on the latest version of the original: the beam drops onto the element you pass as surfaceRef, runs along its top edge and spills over its corners, with props for beamPosition, intensity, beamWidth, flare, spread, spill, fog, dust, streaks, dots, pulse, speed, seed, revealImage, intro, theme and paused.
  • Code using the old LaserFlow props must move to the new ones: horizontalBeamOffset becomes beamPosition (0 to 1 across the width), verticalBeamOffset becomes surfaceLevel or a surfaceRef, fogIntensity becomes fog, backgroundColor becomes theme, and wispDensity, wispSpeed, wispIntensity, flowSpeed, flowStrength, fogScale, fogFallSpeed, decay, falloffStart, mouseTiltStrength and mouseSmoothTime are gone.
  • The LaserFlow docs page has six presets (Waterfall, Twin Falls, Floor, Ember, Glacier and Quiet) and a window the beam lands on.

Improved

  • LaserFlow no longer needs three.js and stops drawing once its intro and the cursor glow have settled, so an idle page costs nothing.

Logos that read on any background

Version 1.3.0 ·

New

  • Avatar with logo and mono-dark turns a logo into a light grey silhouette in dark mode and brings its colour back while a group ancestor is hovered, and in light mode it sits on a tile that suits the logo's own colours.

Improved

  • ChartPie opens with a clockwise sweep from twelve o'clock, the way shadcn's pie and radial charts do.
  • The glass button variant has a softer, wider shadow and no longer shadows its text and icon.
  • Unselected tabs in a segmented TabsList are easier to read in light mode.

Fixed

  • GridFill fills a server-rendered grid's last row with its pattern before the page hydrates, instead of leaving empty grey cells.

Distribution, a ranked list of bars

Version 1.2.0 ·

New

  • Distribution lists categories in order, each with a bar to scale behind its label, a count and its share, with a leading slot for flags or avatars, a done fill for progress inside a row, a color prop and a DistributionSkeleton for loading.
  • HeaderMenuLink and HeaderMenuLinks give the large page links in a header menu one size, line height and spacing, so a label that wraps to two lines still reads as one link.

Improved

  • Small buttons (size="sm") use 14px text, the same as navigation links and default buttons.
  • StatValue, StatDescription, RangeMeterLabel, LaneBoardTitle and the names and figures in Leaderboard use the foreground colour instead of the muted card text.

Fixed

  • A page now scrolls when a swipe starts on a RangeMeter: a read-only meter takes no gestures, and a slider moves only on a horizontal drag or a tap.

Easier-to-see secondary buttons

Version 1.1.1 ·

Fixed

  • Secondary buttons in the Mono style have a stronger background, so they no longer fade into a dark page, and hover darkens them instead of lightening them.
  • RangeMeter tags are white on info, success and destructive, so the percentage reads clearly.
  • The site menu sits further in from the edge on desktop and marks the current page with a dotted underline; group captions are quieter.

Flow and Lane Board

Version 1.1.0 ·

New

  • Flow is a canvas of nodes joined by edges that you pan, zoom and rearrange, with groups, named ports, wiring by drag, a minimap and keyboard moves.
  • LaneBoard lays cards out in lanes you drag them through by pointer, touch or keyboard, and a board can refuse a move with a reason.

Improved

  • Frame, Kpi, Stat, BarPicker and Leaderboard fill with a light wash of the text colour, so their surfaces stay visible on a dark page.
  • The docs sidebar and the site menu list the same pages in the same groups and order, and the menu opens already on the page you are reading.
  • New components carry one blue dot wherever they are listed: the page title, the sidebar, the menu and the catalogue.
  • Bar Picker, Gauge and Range Meter now sit under Data display, and Empty and Result under Feedback and status.
  • The Introduction and Showcase pages are gone; their addresses lead to the components index.

Fixed

  • The Message Scroller page loads again.
  • Gauge no longer makes a phone page scroll sideways.
  • The Carousel, Pagination, Navigation Menu and Rating examples fit a phone screen.

A rebuilt catalogue, and release notes from here on

Version 1.0.0 ·

New

  • The catalogue has a new home page and docs-style browsing, with every preview shown in both light and dark mode.
  • Six new components: Frame, Kpi, Stat, RangeMeter, BarPicker and Leaderboard, each with a full docs page.
  • A Claude theme joins the color themes, in light and dark.
  • This changelog: every release from now on is listed here with its version, and the home page links the newest one.
  • HeaderMenu comes in six variants taken from real mobile menus, and its popover, drilldown and overlay slide in from the right like Drawer.
  • Gauge has its own docs page with every variant, and replaces ChartSemiCircle.
  • PageScrollbar and SurfaceHeader let a header follow the light or dark section scrolling under it.
  • The shader gallery moved to shaders v4 and gained the Optical Prism, Hex Scan and Sorted Chrome 2 presets.

Improved

  • Button has a quieter look: secondary is a soft fill with no border, only outline keeps one, and every size still lines up with inputs and selects. A new shape="pill" rounds the ends fully at any size.
  • The gray scale is now a true neutral, without the blue tint.
  • Logos, menu icons and other marks use the text color instead of the theme color, so they stay neutral under every theme.
  • Every page shares one site header with a menu that lists every docs page on phones.
  • Popovers, menus and tooltips stay inside the screen on phones, even when what opened them is off to the side.
  • Docs pages load only their own examples, so they open faster.

Fixed

  • Swiping a table row on a phone no longer opens its row menu.