Changelog

Review release notes for Pluma components, icons, tokens, and the MCP package.


Changelogs for components, icons, mcp, and tokens. These, and other releases, can also be found on the Pluma repository

@customerio/pluma-components

2.219.0

Minor Changes

  • 4129afd: Data viz: the sequential and semantic palette subsets for 2 to 6 series now skip a step between neighbours instead of running contiguously (3 series is steps 1, 3, 5 rather than 2, 3, 4), so adjacent series in a single-hue chart stay apart in both light and dark mode

Patch Changes

  • cd3350b: Chart: the tooltip and the focus it paints now answer the pointer inside the plot only, so a reader over an axis' numbers or over the band the legend sits in no longer opens a tooltip for whichever column happened to be nearest
  • cd3350b: Chart: an animated mark's shapes now follow the color they are painted in rather than the series behind it, so a change that hands the palette out differently — switching the metric a chart is drawn from, where the rows come back in a new order — travels each band of a stack to its new share instead of repainting every one of them where it stands

2.218.0

Minor Changes

  • 3fee55d: Chart: bar takes layout: 'nested', for series that contain one another rather than adding up to a total — sent, delivered and opened. Each series is drawn inside the one before it on the same category and painted over it, at its own value, with one legend and one shared tooltip
  • 3fee55d: Chart: bar takes a thickness fraction, so a bar can be narrowed by a share of the room its category leaves it rather than by a pixel count — three bars at decreasing fractions read as a funnel at any plot width, where a pixel ladder tuned wide collapses the innermost to nothing narrow

2.217.5

Patch Changes

  • 9ddb0b7: Chart: a row arriving in or leaving an animated stack now moves with the column instead of appearing at full height or fading where it stood — so toggling a series in the legend keeps every column whole, on one timing, with nothing fading in or out

2.217.4

Patch Changes

  • c76ded5: Chart: an animated stack of bars now grows out of the value axis as one column instead of each row growing in place — and the rounded rows at the top and bottom of a stack, which used to appear at full height, grow with it

2.217.3

Patch Changes

  • e7dfb0e: Chart: a donut whose ring changes size when a legend entry is toggled now grows or shrinks into its new size alongside its slices, instead of arriving there in a single frame.
  • 454b2b3: Chart: a legend beside the plot now slides to its new position when a toggle renumbers its figures, on the same timing as the ring, instead of jumping there. A resize still lands in the frame it happens.

2.217.2

Patch Changes

  • 9fa3fe9: Chart: a legend's figures now follow a drawing already measured as a proportion of what it plots — a radial mark, and a stack with stackOffset: 'share'. legendValueFormat is called with what the drawing allocates, so hiding a series re-proportions the numbers the way it re-proportions the slices or the columns, a hidden series reads as zero, and a gauge measures against the total it declared. Marks drawing their own units are unchanged, since their geometry stays put when a series is hidden.

2.217.1

Patch Changes

  • 5feb69a: Chart: a legend entry naming a hidden series no longer leaves the last highlight standing, so hiding a series from under the pointer puts the plot back instead of dimming all of it

2.217.0

Minor Changes

  • a118629: Chart: arc takes an outerRadius fraction, so a ring can be sized apart from the surface it is drawn on — a legend column that needs a row per series no longer sets how big the donut is
  • a118629: Chart: chartSelectors publishes the selectors for the shapes a chart paints, so a test can reach into the plot without hard-coding renderer class names that move between releases
  • a118629: Chart: bar and area take stackOffset: 'share' for a hundred-percent stack — the value axis reads in percent and each row keeps its own number, so the tooltip reads out both
  • a118629: Chart: bar and area take a stackOrder, so a stack can read largest-first without reversing the rows — the palette still follows the order the series are declared in, which reversing the rows by hand silently changes
  • a118629: Chart: Chart<TDatum> types the row behind each focused point, so a custom tooltip can read a field off it without a type assertion

Patch Changes

  • a118629: Chart: a donut and a gauge take the same default corner radius bars do, so a thin slice reads as a small value rather than as an artifact — a pie is left sharp, its wedges having no inner edge to round against

2.216.0

Minor Changes

  • 8542a42: Chart: a value axis guide animates as one scale when its range changes — ticks that arrive, leave, or hand over to another axis travel with the numbers that stay, a second axis' numbers bring grid lines of their own, and a line stretches into the room a vanishing axis gave up
  • 4447257: Chart: label a category axis at one stride — every nth category, for the smallest n that fits — rather than keeping every label that clears its neighbors. A month of daily bins came out labelled every two days except for two three-day jumps, which reads as a gap in the data rather than a gap in the labelling. tickCount now works on a category axis too, where it used to be dropped. A category axis with withGrid: true draws a line per labelled tick rather than per category.
  • 62e2371: Data viz: rework the sequential and categorical palettes. The dark ramps previously mirrored the light palette position for position, which left their first steps all but invisible - sequential-teal-1 was APCA Lc 7.5 against the dark surface. Both modes are now anchored on step 3, the single-series pick, at Lc 60 against white and Lc 55 against the dark surface, with each hue's remaining rungs spaced from there. Categorical takes the same color as the single-series pick. Adds 18 palette steps.

2.215.1

Patch Changes

  • aa6a4c5: Chart: place the legend from the chart's own edges rather than from the plot, so it stays put when a series is hidden. Taking the last series off a value axis takes the axis with it, which slid the plot — and the legend with it — out from under the pointer that had just pressed an entry.
  • 838330a: Chart: paint a legend swatch with the color its mark was given, rather than the palette slot the series was taken out of

2.215.0

Minor Changes

  • abbc8d4: Chart: add categoryInset and maxThickness to the bar mark, for trimming a bar on both sides and for capping how wide it is painted. Both apply per bar, so under layout: 'grouped' they act on each bar in the group.

    Two defaults move with this. The gap between categories widens from a fifth of each category's slot to a third, and bars are drawn with a 2px corner radius instead of square — pass radius: 0 to square them off again. A stack is now rounded as one bar: the two ends of the column are round and every seam inside it stays square.

  • b13e08f: Chart: either end of an axis domain can now be 'auto', which holds the other and leaves that one to the data. domain: [0, 'auto'] anchors an axis at zero without also pinning a maximum.

    Two fixes for charts with several vertical axes: a pinned range no longer skips the pass that picks the tick count for the whole set, and the ticks of a pinned axis are written at the step's own precision, so a [0, 6] over six heights reaches a consumer format as 3.6 rather than 3.5999999999999996.

    Pinning one axis on such a chart can now resolve to a different tick count than the six it used to be fixed at.

  • d0ed060: Chart: the dot a line grows at the focused point now carries a ring in the line's own color at a quarter opacity, and arrives with motion — the dot fades in and the ring grows out of the point. The defaults draw a 5px dot inside a 4px band, replacing the 4px dot with a 1.5px surface-colored stroke.

    Size it per line mark with focusDotRadius, focusDotRingWidth, focusDotRingColor and focusDotRingOpacity.

  • 6490edb: Chart: a shared tick step can now land on 3, so a multi-axis chart reaches counts like 0/300/600/900 instead of climbing to 1200. Ticks on existing multi-axis charts may move as a result; charts with a single vertical axis are unchanged.

  • 7df8025: Chart: tooltip rows now read in the order the marks and series are declared, rather than by where the focused points sit on the plot. Pass tooltipSeriesOrder="position" for the old ordering.

Patch Changes

  • ba12370: Chart: a vertical axis with position: 'right' stays on the right when it is the only axis left. Hiding the last series off the left-hand axis used to walk the surviving guide across the plot; a chart declaring a single right-hand axis drew it on the left for the same reason.
  • aa15d04: Chart: a bar mark that is a single series now names itself in the tooltip. One bar per category gave the grammar no reason to read its color as the series, so the tooltip labelled the row — and its aria-label announced — the mark's generated id (bar-y-1) instead of the mark's seriesName. Lines were unaffected, which made it show up on exactly the documented mixed chart: bars for the volume, a line for the rate.

2.214.0

Minor Changes

  • b6ff7eb: Select: add SelectPalette, the dropdown surface, with optional header, categories rail, detail pane and footer regions. Categories take tooltip/tooltipPlacement and can be grouped with an optional collapse.

    Icon slots across Select and DropdownMenu gain iconSrc, iconColor and iconSize, plus trailingIcon* on DropdownMenu items.

    A palette with a rail or a detail pane holds a fixed height so it doesn't resize as the active category changes — 480px with a header and footer, down to 360px with neither — and traps Tab so it can't be dismissed by tabbing out. It also opens with the caret in the search input rather than on the close button. Override the height with selectPaletteHeight.

    Existing dropdowns are unchanged except for four things: they now cap at 480px tall (raise it with unsafe_popoverSize), the search header is plain rather than grey with 12px padding (selectMenuHeaderBackgroundColor, selectMenuHeaderPadding), the first option is highlighted on open, and the highlight no longer clears when the pointer leaves the list.

2.213.0

Minor Changes

  • 6714e36: Chart: add zones and zoneAxis to the line mark, for stroking part of a line differently — a dashed stretch where the data is still provisional, or a color above a threshold. A zone is a range on the axis, bounded by from, by to, or by both. The line stays one series drawn as one fitted curve, so an area under it keeps a matching edge. A colored zone keeps its color under focus, takes a hoverColor where its color has no vetted hover twin, and lends its color to the tooltip's swatch.

2.212.0

Minor Changes

  • c8269a6: Charts: add the dot mark and decorative

    dot draws a dot per row, for points a reader is meant to notice — where a line turns provisional, an outlier worth naming, readings too sparse to join up. It takes radius, and ringColor / ringWidth for a ring that punches the dot out of whatever it lands on.

    decorative wraps any mark so it still draws and still contributes to the scales, but owns no chart points — which takes it out of the focused group, and so out of the tooltip, off the keyboard cursor's path, and out of onSelect and onFocusChange. The distinction a chart needs whenever a mark restates something already on the plot: a marker on a line, a threshold, a target.

    Both go through marks like every other mark in the grammar.

    The docs Ember renderer also registers @customerio/pluma-components/css/theme-tokens for embedded snippets, which the React one already did — so an Ember example can reach a token the same way.

2.211.0

Minor Changes

  • 7de7c25: Chart: adds a margin prop — one number for every side, or the sides to set — for the space around the plot. A side that is set replaces the room the chart would have measured out for the labels drawn on it rather than adding to it, so it has to be wide enough to hold them, and a single number has to clear all four sides at once. Sides left out keep what was measured, and a legend beside the plot keeps the column it reserves on that side.

    definition is now laid over the definition built from the chart's other props rather than replacing it, so anything the props don't reach can be set without rebuilding Pluma's defaults. Options merge all the way down; arrays, scales and functions replace what they land on. Passing a function instead hands you Pluma's definition and takes back the one to draw.

    A function is the only form that replaces: an object inherits every key it doesn't mention, x, y, theme, motion, focus, focusRing, maxFocusDistance and tooltip included. A chart passing a whole buildChartDefinition result should hand it over as a function — definition={() => myDefinition} — which matters most for a radial or sankey definition, since those omit the cartesian axes an object form would inherit.

  • 7845f49: Chart: adds withExport, which puts a download menu in the chart's top corner offering the chart as a PNG, a PDF, or a CSV of the numbers behind it. exportFormats narrows and orders the menu; exportFileName names the files, which otherwise take their name from ariaLabel. The code that writes a file is loaded on demand, so a chart that offers a download costs nothing until one is asked for.

Patch Changes

  • a47a181: Chart: tooltip series labels now use the base text color instead of subtle
  • df4af28: Data viz: the 3-series sequential subset now uses steps 2, 3, 4 instead of 1, 2, 3

2.210.0

Minor Changes

  • b578ead: Chart: bumps @tanstack/charts to 0.14.0. Pluma's chart props are unchanged. An app that imports @tanstack/charts directly should upgrade with it.

    A line and the area under it are now swept on from the left when a chart animates, rather than revealed behind a clip the size of the plot. The reveal cut both marks at the top and bottom of the plot — a stroke is centred on its geometry, so a series touching either end of its domain had half its width shaved off until the entrance finished. Bars still grow from the baseline, and an arc now sweeps through its angle instead of fading in.

2.209.2

Patch Changes

  • d571356: Chart: keep the hover crosshair from animating on a chart with withAnimation
  • 827a361: Adds ButtonGroup design, a11y, and AI guidelines

2.209.1

Patch Changes

  • 1375027: Data viz: shift the small sequential/semantic subsets one step lighter. A single series is now step 3 (was 4), two series are steps 2 and 3 (were 1 and 4), and the 3- and 4-series subsets are steps 1-3 and 1-4.

2.209.0

Minor Changes

  • d53282e: Chart: the tooltip is a Pluma Popover in the top layer, so a chart inside a card, table cell or drawer no longer has its tooltip clipped by an ancestor that hides its overflow. It is no longer rendered inside the chart element, and carries data-pluma-chart-tooltip rather than the renderer's ts-chart-tooltip class. Removes the chartTooltipMotion style export, whose class no longer exists now that Popover owns the tooltip's fade; the tooltip's own class is chartTooltipSurface.
  • 637bd4a: Page: new PageHeaderExtra slot for page-level content between the header's description and its tabs, inside the content band. A header without the slot lays out exactly as before. withDivider on the slot closes the header with the line a header would otherwise need an empty PageHeaderTabs to draw.

Patch Changes

  • 67d1643: Page: document the PageHeaderExtra slot in the design docs — anatomy list and both anatomy diagrams.

2.208.0

Minor Changes

  • 9789838: DataTable: add columnsSettings.maxVisibleColumns, capping how many columns the columns menu will let a reader select. Once the cap is reached the unselected checkboxes are disabled and a tooltip explains why, mirroring how the last visible column's checkbox is already disabled at the lower bound.

2.207.0

Minor Changes

  • b51a762: Cap how far autoPositionedLabel moves a label to clear the line. A label that would have to travel more than a third of the plot's height now stays beside its own point and sits on the series instead — on a short plot whose line runs its whole height there was never any clear space to reach, and text that far from what it labels reads as a stray number. resolveLabelPlacement takes maxPush to retune the limit and returns isOverlapping to say when it applied.

  • 06a0eed: Draw Chart lines at 2px by default, replacing the charting grammar's off-scale 2.25px, and drop the narrower widths the sparkline examples set by hand. Lines given an explicit strokeWidth are unchanged.

    Lines also stop being stroked vector-effect="non-scaling-stroke", which Chrome paints under-width on high-density displays, so a 2px line reads as about one. Temporary, and removed once the Chrome bug is fixed.

Patch Changes

  • 7e8d640: Chart: date tooltip headers name a weekday when the data is daily (Monday, July 20) and the month with its year when it is monthly (January 2026); a monthly axis writes Jan '26 rather than the bucket's day. The tooltip's series swatch and its header spacing now match the rest of the product, and every figure and date the chart formats itself is written in en-US so a chart reads the same wherever it is opened.

2.206.0

Minor Changes

  • 9779075: Add keepColumnHeadersDuringSelection to DataTable. When enabled, selecting rows no longer covers the column labels with the {n} selected overlay — for tables where selection is persistent state rather than transient bulk actions. Defaults to false, so existing tables are unchanged.

Patch Changes

  • eb5410b: Updates docss skill files with updated AI model and re-generates component AI guidelines

2.205.0

Minor Changes

  • f4c3ec0: Chart: bumps @tanstack/charts to 0.9.0 and drops @tanstack/charts-scales, whose scales now ship from @tanstack/charts/scales/*. Pluma's chart props are unchanged except definition, which now takes a DomChartDefinition — the definition type with its tooltip host pinned to dom, which is what buildChartDefinition returns. An app that imports @tanstack/charts directly should upgrade with it: 0.8.0 renamed ChartBehavior to ChartControl and the definition's behaviors to controls, and transform accessors now take (datum, { index, data }).

2.204.0

Minor Changes

  • 3b2f6db: Chart: line and area marks take a curve option — 'smooth' rounds the joins into a monotone spline, for a filled trend in the shape of Highcharts' areaspline. The curve passes through every row and never overshoots, and a stacked area keeps its stackGap under one.
  • fe4b0d6: Chart: the tooltip fades in and out and follows the pointer with a motion-token glide, anywhere in the plot focuses the nearest column, group focus paints a full-height crosshair and a dot on every focused series, and marks take new interaction options — withHoverColor (swaps to -hover data-viz twins), withUnfocusedDim, a focusMode prop ('group' | 'nearest'), color accepting a DataVizColor object, and new --pluma-c-chart-series-*-hover / --pluma-c-chart-crosshair-color CSS variables. Bumps @tanstack/charts and @tanstack/charts-scales to 0.7.2.
  • fe65c51: Chart: withLegendHoverFocus lets pointing at or keyboard-focusing a legend entry highlight that series, driving the marks' existing withHoverColor and withUnfocusedDim options across the whole series. No tooltip or crosshair is drawn.
  • a92ae22: Chart: legendPlacement moves the color legend to the 'bottom', or into a column beside the plot with 'left' or 'right'. legendValueFormat writes a number next to each series' name — its total, its share of every series, or whatever the formatter makes of them.
  • 0587449: Chart: yAxis now accepts an array of axes for quantities in units that have no scale in common. Give an axis an id and point a mark at it with yAxis: '<id>'. Guides are drawn down the left and stack outward in declaration order; position: 'right' moves one opposite. Every axis is drawn at the same tick heights over one grid, and where a bar or an area sits on an axis past the first, they all share a zero.
  • 66eba80: Chart: new arc mark for pie, donut and gauge charts, with innerRadius, sliceGap, cornerRadius, a partial angular range, and total / withTrack for gauges. Adds a chart-arc-track-color CSS override variable.
  • efe902c: Chart: new sankey mark for flow diagrams. It takes one row per link with source, target and value accessors and derives its nodes from them, with nodes for names and fixed colors, nodeLabel, align, nodeWidth, nodePadding, nodeRadius, linkOpacity, withNodeLabels, valueLabel, valueFormat, and the usual withHoverColor / withUnfocusedDim. Pointing at a ribbon focuses that ribbon and opens a tooltip naming both of its nodes.
  • e6bc216: Chart: seriesName names a mark that is a single series, so it can be labeled in the legend without series: () => 'Delivered'. series wins when both are set.
  • 7b2020c: Chart: new variant prop. variant="sparkline" draws the marks alone — no axes, no ticks, no grid — and falls back to a 40px height, for a trend small enough to sit beside the number it qualifies. Everything it sets is a default, so height, width, xAxis and yAxis still override it.
  • 522d77c: Add a darker layered theme with semantic overlay surface and interaction tokens.
  • 150da24: Chart: an animated radial mark's slices now sweep round the ring to their new shares instead of jumping, including when a legend entry is toggled. A slice is also matched across a change by the series that names it, so it keeps its identity when the ring is redivided.
  • 97842a6: Chart: withLegend now renders an interactive legend. Each entry is a button that takes its series off the plot and puts it back, with the axes recomputing from what's left; hiddenSeries / onHiddenSeriesChange control the hidden set. Upgrades TanStack Charts to 0.7.2 for the legend it provides.
  • 17c7cc5: Chart: add withAnimation, which draws the chart in on mount and tweens between shapes when its data changes

Patch Changes

  • 66eba80: Chart: a radial mark's tooltip now opens only when the pointer is actually over a slice. The hole in a donut and the space around the ring previously resolved to whichever slice was nearest, because a chart's whole plot is live so that anywhere on a bar counts as on that bar.
  • 66eba80: Chart: arc's sliceGap is now a width in pixels rather than an angle in degrees, so the gap between slices measures the same at the hole as it does at the outer edge. An angular gap subtends more the further out it is read, which left a donut with visibly more air between its slices outside than inside.
  • 33c6e5e: Chart: documents bar's orientation: 'horizontal', and fixes the axis inference behind it. A horizontal bar transposes which channel defaults to the row index and which to the row itself, so a mark built without an explicit x or y had its tick formats and date handling inferred off the wrong axis.
  • efe902c: Chart: sankey ribbons are drawn as filled shapes rather than stroked lines, so their thickness scales with the chart instead of being held at a constant screen width — a scaled sankey no longer leaves gaps between a node and the flows running through it. Pointing at a sankey now dims what the reader isn't asking about: a node keeps every flow through it and the nodes those flows reach lit, a flow keeps the two nodes it joins lit, and nodes answer the pointer with their own total. Only a position actually inside a band or a node focuses anything. withUnfocusedDim defaults to true for sankey marks. Sankey marks take orientation: 'vertical' to run the flow down the page instead of across it.
  • 981df4e: DataTable: promoted bulk action buttons no longer rebuild themselves whenever the selected-rows header re-renders, which could drop a click and move focus out from under a keyboard user.
  • 4a33844: Chart: fixes function accessors receiving the wrong second argument. x, y, series and key given a function were called with the underlying grammar's { index, data } context instead of the row index ChartAccessor documents, so a mark using one drew nothing. Hiding a series through the legend now also keeps those accessors on the row's original index, rather than renumbering the rows that stay.
  • 9cc8b49: SplitView: a resizer now moves the panes that are actually on screen, skipping hidden ones. Collapsing the middle pane of a three-pane split used to leave the boundary between the two remaining panes dead — the divider beside the collapsed pane still rendered its handle, but had only that collapsed pane to move. Whichever resizer is left with nothing to separate now collapses instead of painting an affordance that cannot be dragged, so resizers can be rendered between every pair of panes regardless of which ones are hidden.

2.203.1

Patch Changes

  • 290bbe1: Adds Image design, a11y, and AI guidelines

2.203.0

Minor Changes

  • b4f6015: Add area and autoPositionedLabel marks to the alpha Chart, plus domain on an axis. area fills to the value axis' zero and takes withGradient for a fill that fades out at zero rather than at the bottom of the plot. withFocus={false} makes a chart a picture — no hover dot, no keyboard cursor, no tooltip, out of the tab order — which is what a sparkline in a table cell wants.

    Stacked areas and bars now leave a 1px transparent gap between segments, since adjacent chart colors don't meet contrast against each other. stackGap changes or removes it. withDomain={false} lets an area fill down to zero without dragging the value axis down to show it.

Patch Changes

  • 4514741: Resolve a Chart tooltip's element through the instance that owns it rather than a document-wide query, so the lookup stays correct on a page with several charts if the tooltip is ever portaled out of its own container.

2.202.0

Minor Changes

  • b8f14cc: Add an alpha Chart with line and bar marks, built on TanStack Charts, under new @customerio/pluma-components/charts/react and @customerio/pluma-components/charts/ember entrypoints. Series colors come from the data-viz tokens, and tooltips use Popover's content styling with React render props / Ember blocks for custom content.

2.201.0

Minor Changes

  • 2e8ae95: Add more icon/image controls to OptionCard component

Patch Changes

  • 99f7cde: Adds Code design, a11y, and AI guidelines

2.200.1

Patch Changes

  • f06b643: SplitView: pixel minSize/maxSize constraints now hold when the split changes size. The constraints resolve against the measured pane space, but a change in that space only re-rendered the split when a pixel-sized pane was present — so a pane clamped to maxSize={320} kept its percentage share and grew right past 320px when the split widened. The same stale clamp let a hidden pane come back at roughly half the split: showing a pane whose resizer mounts in the same commit can catch one measurement while the grid template lags the DOM, and the pane's minSize resolved against that garbage space inflated it — with nothing ever recomputing the layout once the next, correct measurement arrived. A change in the measured space now re-renders the split whenever any pane declares a pixel constraint, so the clamps are always resolved against the space actually on screen.

2.200.0

Minor Changes

  • af39dc9: Add a @customerio/pluma-components/data-viz entry with palette utilities: sequential, semantic, categorical, diverging, defaultColor, dataVizSubset, and the pre-computed categoricalSlots/sequentialPalettes/semanticPalettes/divergingPalettes. Each returns DataVizColor descriptors ({ type, index, name, token, tokenHover }) that reference theme-contract CSS vars, never raw hex; a literal count returns a fixed-length tuple.

Patch Changes

  • 1cc2827: SplitView: sub-pixel measurement noise no longer reads as a resize of the split. With a pixel-sized pane present, a fractional-pixel wobble in the measured pane space (browser zoom, fractionally-sized containers) re-rendered the split on every measurement until React gave up with error #185 ("Maximum update depth exceeded"). The measured space now only moves on a change of more than half a pixel, and smaller differences are compared against a stable anchor so they can never read as a fresh resize on every pass.

2.199.0

Minor Changes

  • 9047b79: Toggle, Checkbox, Radio: make the disabled checked state a stronger grey than the disabled unchecked state, so "on" reads at a glance. Adds a --pluma-c-checkbox-checked-disabled-check-color override for the Checkbox's check mark.

2.198.0

Minor Changes

  • c2f87a2: Add ConditionViewerItem and ConditionViewerGroup for rendering a read-only summary of a set of rules — a boxed sentence per rule, nested under the operator that combines them — plus ConditionViewerTerm for the emphasized runs in a sentence and ConditionViewerDetailList/ConditionViewerDetail for the sub-conditions a rule is refined by.

    The wording, marker icons and recursion stay in the application; Pluma renders the boxes, typography, spacing and semantics.

  • 3ef12fa: Stepper test helpers: adds stepper.clickStep(label) and step.click(), so tests no longer have to query the DOM to navigate a stepper. Both find the step's control whether it renders as a link or a button. Neither is a silent no-op — they throw on an unknown label, and on a step that is disabled or non-interactive, since both render a control that drops the click.

    Also fixes step.isDisabled() and step.isCurrent() returning true when the helper is scoped to a step that isn't there; they now return false.

2.197.1

Patch Changes

  • 524235f: Adds TextLabel design, a11y, and AI guidelines

2.197.0

Minor Changes

  • ff7ad3b: Add PageRail, a column beside PageBody's content for a vertical Stepper, a table of contents, or a summary. Write it before or after the content to put it on that side — or one of each — and it sizes to its content and can stay in view while the sections beside it scroll. The content keeps the width its preset asks for and stays centred on the page while there's room for the rail beside it, giving way only when there isn't.

    Also adds PageBodyContent, which wraps the sections a rail stands beside. It's only needed in a body that has a rail.

  • a67791c: Stepper: adds two attention values to a step's statuscritical for a step whose errors block finishing the flow, and caution for one that needs review but doesn't block. Each marker takes its semantic color plus the icon Pluma pairs with that semantic (error and warning), and carries visually-hidden text ("has errors" / "needs attention") so neither state is conveyed by color alone. content="minimal" markers stay bare dots, so avoid it where a step's status carries weight. A step can be flagged and isCurrent at once: aria-current is unchanged and the status keeps the marker. Connector fill is unaffected.

  • a67791c: Stepper: the current step's ring is now an accent-colored outline around the marker rather than a border inside it, matching Timeline's current marker. It sits outside the coin, so it reads the same around a neutral, completed, or flagged marker instead of competing with that state's own color. A step that isn't current no longer gets an inert isCurrent-false class.

    The ring is configured with three new CSS variables — stepper-current-coin-outline-color, stepper-current-coin-outline-width, and stepper-current-coin-outline-offset. stepper-current-coin-border-color is deprecated in favour of stepper-current-coin-outline-color but still recolors the ring, so an existing override keeps working; the same goes for the currentCoinBorderColor and currentCoinBorderWidth keys on the style exports, which now resolve to their outline equivalents.

Patch Changes

  • 19f903e: Adds Page design guidelines

  • 015d008: The automatic text color applied by a filled backgroundColor now comes from that surface's text-on-* token instead of text-invert, which could not carry the right polarity for both dark fills (bold, navigation) and light ones (caution, information, the -bold variants). This fixes contrast on backgroundColor="bold" and "navigation" in light mode, and on caution, information, and every -bold surface in dark mode.

    Badge, Calendar, SegmentedControl, and Stepper take their text color on filled surfaces from the matching text-on-* token for the same reason. Light mode is unchanged throughout.

    Text and Heading accept a new black value for color, which comes with the new text-black token.

  • 99a92ae: Adds Strong design, a11y, and AI guidelines

2.196.0

Minor Changes

  • 42084b7: Every remaining button now renders aria-disabled="true" instead of the native disabled attribute and blocks interaction programmatically, completing the migration started for Button and PlainButton. This covers the Select trigger, options and collapsible group headers, Tabs tabs, Calendar days, Date picker presets, dropdown menu items, the Combobox open button, the Snackbar and Banner buttons, and Breadcrumbs items. Disabled styling is unchanged.

    Two things to update when upgrading: CSS and test assertions targeting :disabled / [disabled] on these elements need [aria-disabled='true'], and because aria-disabled doesn't suppress events for descendants, your own interactive content inside a disabled component now receives clicks. Native form inputs and Form's <fieldset disabled> are unchanged.

  • 513db70: OptionCardGroup: add a cardsLayout="grid" option that lays the cards out on a real grid, configurable with the same grid props the Grid component takes (cardsColumns, cardsRows, cardsAreas, cardsAutoFlow). Also adds cardsColumnGap, cardsRowGap, cardsAlignContent and cardsJustifyItems to the card container.

2.195.0

Minor Changes

  • 0db4d76: Stepper: the connecting line is now green only between two steps that are both status="complete", instead of filling up to whichever step is isCurrent. Flows that let people jump ahead to a future step no longer show green lines over steps that aren't done. A step that is both complete and current now also takes the current step's ring, on top of its green marker.
  • 9f76268: Export the prop-value types components already declare — PageBodyContentWidth, StepperSize, TimelineColor, SnackbarLayout, Filter, SelectOptionItem and 70+ others — from both the React and Ember entry points. The Ember entry also exports every component's Pluma*Signature, matching React's *Props.

Patch Changes

  • 9f76268: Fix three Ember signatures whose source interfaces were misnamed: PlumaCheckPlumaBoxSignature is now PlumaCheckboxSignature, PlumaSelectMenuPopoverSignature is now PlumaSelectPopoverSignature, and the drawer close button's signature is now PlumaDrawerCloseButtonSignature rather than shadowing PlumaDrawerTitleSignature. None were reachable from an entry point before, so no published name changes.
  • 9f76268: Rename modal-primitive's CloseReason to ModalPrimitiveCloseReason, matching its sibling PopoverPrimitiveCloseReason. The old name was never reachable from an entry point, so nothing published changes.
  • 2f98781: Stepper: steps no longer resize as the current step moves. The current step's label is bolder, and bolder text is wider, so a fit stepper (where every step is as wide as the widest one) shifted its whole grid when the customer stepped forward. Every step now reserves the space its label needs in that bolder state.

2.194.0

Minor Changes

  • d7e7a9b: Add PageSection, a band that stacks inside PageBody with its own contentWidth and an optional divider between it and the next section. Content widths gain a full preset so a single body or section can break out of a narrower page default.

Patch Changes

  • 3c9446c: Adds Paragraph design, a11y, and AI guidelines

2.193.0

Minor Changes

  • ff7bb7f: Extend the elementBefore / elementAfter slot pattern beyond NavItem. DropdownMenuItem, Select options, the Select trigger, TextField, Button and Link all gain the two slots, which compose with each component's built-in content rather than replacing it. In React they are node props; in Ember they can be passed as a component or, except on Select options, via the :elementBefore / :elementAfter named blocks.

    Button and Link also gain iconLeading and iconTrailing, shortcuts for an icon fixed to one side so both sides can carry an icon at once. They render in addition to icon/iconPosition, never in place of it.

    TextField.unsafe_leftSectionComponent, TextField.unsafe_rightSectionComponent and Select.unsafe_leftSectionComponent are deprecated in favour of elementBefore / elementAfter. They keep working until the next major.

2.192.0

Minor Changes

  • fcc6278: Add SplitView test helpers

Patch Changes

  • 004f5da: SplitView: two layout fixes.

    A groupResizeBehavior="preserve-pixel-size" pane now keeps its pixel size when a sibling pane is hidden or shown. Its share was being renormalized along with the relative panes, so hiding a neighbor grew it — a 320px pane beside a hidden 30% pane became 457px instead of staying 320px and letting the relative panes take the freed space.

    minSize and maxSize now also hold when the layout is computed, not only while dragging. A pane that declared no size takes whatever is left over, which could fall under its own minSize when its siblings' declared shares used up the split (a pane with minSize="25%" beside 320px, 30% and 30% siblings rendered at 8%). The shares are now brought inside each pane's constraints, taking the difference from the panes that have room to give and asking panes that hold an exact size (a controlled size, or preserve-pixel-size) last.

2.191.0

Minor Changes

  • 24ca3cc: SplitView: a pixel size/defaultSize no longer makes a pane unresizable. Pixel values now seed a pane's share of the split, so the resizers beside it work like any other, and a pane that asked for a specific share gets exactly that rather than an average. To keep a pane at a literal pixel size while the split resizes, set the new groupResizeBehavior="preserve-pixel-size" on SplitViewPane.

Patch Changes

  • acfbf40: SplitViewResizer: render as a plain divider when it can't move. A resizer that is inert because the group or an adjacent pane has isResizable={false} no longer keeps the resize cursor and hover affordance — previously only its tab stop was dropped.

2.190.2

Patch Changes

  • 544002c: Fixes anatomy table's 'no' option in required column
  • 50031f3: Refactors anatomy list into table of descriptions.

2.190.1

Patch Changes

  • 85de293: Adds customization section for Banner and DataTable. Updates Modal patterns verbiage to configurations.
  • e186e24: SplitView: keep resizing when a fast drag crosses an iframe. The resizer now captures the pointer on drag start and panes get pointer-events: none while dragging, so an iframe in a pane can no longer swallow the drag.

2.190.0

Minor Changes

  • 979b845: Badge absorbs the capabilities of the deprecated Label component (FPS-2955).

    New Badge props (purely additive — the existing contract is unchanged):

    • colorneutral (default), accent, neutral-outline, accent-outline, plus Label's red, raspberry, clementine, yellow, green, teal, blue, plum, purple, and grey. The label-family colors render in Label's squarer shape and are pixel-identical to Label; the neutral/accent colors render as the familiar pill.
    • bold — defaults to true (today's weight); set false for less prominent text.
    • showStatusIndicator — Label's status dot, with the same constraints (only red, yellow, green, blue, purple, grey; bold text only).

    Deprecations (everything keeps working until the next major version):

    • The Label / PlumaLabel component — use Badge with the color prop instead (color="outline" becomes color="neutral-outline").
    • Badge's isEmphasized prop — use color="accent" instead.
    • Badge's isOutline prop — use color="neutral-outline" instead (color="accent-outline" for the combination with isEmphasized).

    The color prop cannot be combined with the deprecated isOutline/isEmphasized props.

  • c41b6fe: Badge gains semantic color values: critical, caution, success, and information render identically to red, yellow, green, and blue but keep the intent readable at the call site. Use them when the color conveys meaning; the raw colors remain first-class for decorative categorization. The Badge test helpers gain getSemanticColor(), which reports the semantic meaning of the rendered color regardless of which spelling was used.

  • 5105bc3: PageBody gains a contentWidth prop to constrain the body independently of the page, and Page gains a matching bodyContentWidth prop that sets the default for every body it contains (a contentWidth on an individual PageBody wins). When neither is set, the body inherits the page width as before (standard, or full-bleed when the page is isFullScreen). "standard" forces the standard page width (min 950px, max 1850px) even under a full-screen header, and "narrow" caps the body at 800px with no minimum width.

  • fd16bc3: Add Stepper, a horizontal navigation component for communicating progress through the ordered steps of a wizard or multi-step flow.

  • 05e0881: Add a vertical orientation to Stepper via a new orientation prop (horizontal default, or vertical). Vertical stacks the steps in a column with each label beside its marker — for a sidebar guide or a long form chunked into stages. States, colors, fill behavior, markup, and ARIA are identical to horizontal; only the axis changes.

  • ac471b5: Default Text/Paragraph no longer renders dark-on-dark inside TooltipContent or Snackbar. The default (base) text color now resolves through a --text-color-default variable that inverted surfaces override, so plain text adopts the surface's color without needing color="inherit". Link children inside a tooltip now adopt the surface color too.

Patch Changes

  • 31c9a35: Expose missing component CSS vars and variant defaults from style exports.
  • 956efbb: Adds Text component design, a11y, and AI guidelines
  • 835c599: Standardize the public/private/resolved CSS-variable pattern and add resolvedVars, privateVars, and defaultVars to the affected component style-exports. Additive and behavior-preserving.
  • 5d3cc63: Adds Table design, accessibility, and AI guidelines

2.189.1

Patch Changes

  • ecefcd4: Fix SplitView resizing on touch devices. The resizer only listened for mouse events, which touch does not synthesize during a drag, so it could not be dragged with a finger. Both frameworks now drive resizing with pointer events (mouse, touch, and pen), and also end the drag on pointercancel.

2.189.0

Minor Changes

  • 31cc579: Add AspectRatio layout component for constraining content to a fixed width-to-height ratio.
  • 8205a74: Add SplitView layout component (React + Ember) for building resizable, nestable config/preview split layouts with SplitViewPane and SplitViewResizer. Supports flexible and fixed panes, min/max sizes, hide/redistribute, snapping, resize callbacks, and full keyboard accessibility. Panes take an optional id for stable identity across conditional mounts, so each pane-set configuration keeps its own layout. Includes a useStoredSplitView hook (React + Ember) that persists a split's layout to storage (localStorage by default), with per-configuration layouts for conditional panels.

2.188.2

Patch Changes

  • 4536393: Fixes Fieldset legend line height to match the form control label

2.188.1

Patch Changes

  • 47dc343: Rewords anatomy descriptions and updates assets.
  • d86f0f4: Adds OptionCard design, accessibility, and AI guidelines

2.188.0

Minor Changes

  • 8928475: Adds a Drawer manager for programmatic control of drawers (useDrawers, useDrawer), mirroring the Modal manager. The Drawer component now accepts a state prop for use with the manager.

Patch Changes

  • f47b19e: Honor withImmediateCallbacks in the modal manager's closeAll/closeAllOfType, matching close. Previously waitForClose promises for modals closed in bulk stayed pending until the close animation finished even when withImmediateCallbacks was true.
  • 0457a76: Adds Toggle component design, accessibility, and AI guidelines

2.187.1

Patch Changes

  • 82cdee4: Updates assets for Pluma anatomy and adds dark mode support
  • 8aed4cd: Updates Pluma anatomy section in docs
  • f4cc94f: Fixes mobile layout for component examples

2.187.0

Minor Changes

  • 87ada2c: Timeline: add markerStatusIndicatorColor to TimelineItem, passed through to the marker coin's status indicator.

2.186.1

Patch Changes

  • 54b4e91: Adds PlainButton design, accessibility, and AI guidelines
  • 78448b8: Mark legacy compatibility styles as deprecated: unsafe_isLegacy (Button, DatePicker, Link, Select, TextArea, TextField, ToggleButton) and the unsafe_useLegacy* PlumaProvider flags. Behavior is unchanged in this release — the flags still apply their overrides — and they will be removed in the next major version.
  • 5744eae: Adds Checkbox design, accessibility, and AI guidelines

2.186.0

Minor Changes

  • 151a581: Add onBeforeToggle and controlled isOpen to Accordion. onBeforeToggle({ isOpen }, event) runs before a toggle and can cancel it by returning (or resolving to) false; it may be async to defer the toggle. isOpen makes the accordion controlled, and onToggle now receives the triggering event as a second argument.

2.185.1

Patch Changes

  • 6b96b73: Fix a Glimmer render crash (Cannot destructure property 'manager' of … undefined) when a Button, PlainButton, or ToggleButton is rendered with a component @as (a non-href @as={{SomeComponent}}).

    The aria-disabled work (2.181) started currying the component @as to inject isDisabled(component this.as isDisabled=…). When that curried component is invoked by the underlying Box (<Element ...attributes>) with the button's forwarded {{on "click"}} interaction modifiers, Glimmer can schedule a modifier/component instance whose manager is undefined, which throws during the render-transaction commit and takes down any page rendering such a button.

    The non-href @as component is now rendered directly again (as it was before 2.181). Disabled state is still conveyed to it via the forwarded aria-disabled attribute, so no behavior is lost. The href branch (which curries PlumaPlainLink) is unchanged.

2.185.0

Minor Changes

  • 28e3a06: Add a size prop to Avatar (matching Coin's sm | md | lg | xl tiers, defaulting to md) and expose the initials typography via text-prefixed props: text, textSize, textWeight, textFamily, and textFontStyle. The initials text scales with size to stay balanced inside the coin (overridable via textSize/text).

    Note: Avatar's size now derives entirely from the underlying Coin (default md, 32px). Previously the avatar was pinned to a fixed 28px, so avatars with no explicit size now render at 32px.

2.184.0

Minor Changes

  • 6173f4c: Add ticks, snapToTicks, snapToleranceFraction, and onTickClick props to Slider. Ticks render as marks along the track (with optional clickable labels below), and soft snap applies to the value on release only — continuous drag and keyboard nav are unaffected.

Patch Changes

  • Updated dependencies [49a2957]
    • @customerio/pluma-icons@1.19.0

2.183.0

Minor Changes

  • bfbc150: Panel padding can now be customized per side. In addition to the existing panelPadding one-var override, Panel exposes panelPaddingBlockStart, panelPaddingBlockEnd, panelPaddingInlineStart, and panelPaddingInlineEnd CSS vars. Each side falls back to panelPadding, which falls back to the default, so panelPadding keeps working as a single-value override.

    Set these vars on a panel (or a container above it) to customize the whole panel's padding, or on an individual PanelSection to override just that section's padding — the section's negative inset margins keep cancelling the panel's padding, so overriding a section no longer needs competing padding declarations and isn't sensitive to the order component stylesheets are imported in.

    A Table inside a Panel now resolves its edge-cell padding from the matching per-side panel padding rather than a single value; for panels with uniform padding this is unchanged.

Patch Changes

  • 68ba0a7: Adds design, accessibility, and AI guidelines for the Form

2.182.0

Minor Changes

  • 1d9f0be: Add FileInput component (React and Ember). It supports a single-button mode and a drag-and-drop dropzone mode (dropToAdd), with loading and selected-image states. The dropzone is built on native HTML drag-and-drop and file input APIs.

2.181.0

Minor Changes

  • 4106b80: Buttons now render aria-disabled="true" instead of the native disabled attribute when disabled (via isDisabled, isLoading, or a disabling Button context). This applies to Button, PlainButton, CloseButton, and ToggleButton.

    A natively disabled element is removed from the accessibility tree and the tab order, so screen readers skip it and it can't be focused — which breaks tooltips and other affordances that explain why a button is disabled. Using aria-disabled keeps disabled buttons focusable and announced (as disabled), while click and keyboard activation are still blocked.

    Behavior change to be aware of:

    • Disabled buttons no longer emit the native disabled attribute, and no longer set tabindex="-1" — they remain in the natural tab order. The disabled styling is unchanged.
    • Consumers targeting button[disabled] / :disabled in CSS, or asserting the disabled attribute in tests, should switch to [aria-disabled='true'].
  • a789ffa: Add shouldShowOpenButton prop to Combobox for hiding the trailing dropdown-toggle button. Also fix onClear reopening the dropdown when shouldOpenOnFocus is enabled.

  • 2bf386b: Radio, Checkbox, and Toggle now render the description prop. Previously the prop was part of their public API (inherited from the shared form-control type) but was never displayed. The description renders below the label, aligned with it, using the standard form description style.

Patch Changes

  • d5cc1e5: Adds Spinner design, accessibility, and AI guidelines
  • Updated dependencies [f510c71]
    • @customerio/pluma-icons@1.18.0

2.180.0

Minor Changes

  • 90527b8: Add the Timeline component (Timeline / TimelineItem, and PlumaTimeline / PlumaTimelineItem in Ember) for rendering ordered sequences of events with markers and a connecting rail.

    Each TimelineItem supports a markerIcon, markerIconSrc, or markerContent (text, any node, or an empty string for a plain coin); a title, description, and meta (leading or trailing via metaPosition); per-row color, trackColor (rail color independent of the marker), markerSize, shape, lineVariant, and isCurrent. Rows with no marker render full-width with the rail passing through them, for hosting a Banner or other context. Color and line variant carry across the seam to the next row, and unsafe_color / unsafe_colorAbove / unsafe_trackColor allow one-off custom rail colors. Includes Timeline and TimelineItem test helpers.

Patch Changes

  • 2cf152d: Recognize renamed IANA timezone aliases in the date picker timezone list. Browsers vary in whether they report the legacy or canonical name for a renamed zone, and several were only listed under one of the two names, causing the picker to fall back to an unrelated timezone. Both names now resolve correctly for Europe/Kiev/Europe/Kyiv, America/Godthab/America/Nuuk, Asia/Rangoon/Asia/Yangon, and Asia/Saigon/Asia/Ho_Chi_Minh.
  • Updated dependencies [64fed3c]
    • @customerio/pluma-icons@1.17.0

2.179.0

Minor Changes

  • be595af: Add unsafe_leftSectionComponent to Select, matching the leading-section prop already on TextField, Search, and NumberField. It renders custom content on the left side of the select trigger — before the selected value and after any icon — for cases the icon prop can't express, such as always-included tokens or a custom badge.

2.178.4

Patch Changes

  • 326607c: Swaps button order in EmptyState examples

2.178.3

Patch Changes

  • a3e6747: Adds Panel design, accessibility, and AI guidelines
  • 58d8ac8: Updates overall Content and EmptyState content guidelines

2.178.2

Patch Changes

  • c211322: Updates Modal confirmation modal content guidelines
  • a693f59: Set position: initial on the Tabs tab element so its pseudo elements are positioned relative to the wrapper rather than the tab itself.

2.178.1

Patch Changes

  • 58f4950: Fix Firefox keyboard shortcut key sizing by avoiding CSS calc division for font-size and line-height.

2.178.0

Minor Changes

  • 38cbee6: Add elementBefore and elementAfter slots to NavItem for rendering custom content (e.g. an icon) in the leading and trailing parts of the item. In React these are node props; in Ember they can be passed as a component or via the :elementBefore / :elementAfter named blocks. Both compose with the built-in icon/arrow rather than replacing them: elementBefore renders after the icon, and elementAfter renders before the expand arrow when withArrow is set.

2.177.2

Patch Changes

  • 103a715: Center Toggle fields vertically with their labels.
  • 17011ac: Clarifies Tooltip content guidelines for sentences/phrase structure
  • c4f5774: Adds leniency to Button and Modal content guidelines for actions

2.177.1

Patch Changes

  • 13b7298: Allow tab lists to scroll horizontally when tabs exceed the available width.

2.177.0

Minor Changes

  • e9ca77f: Avatar: added a withGravatar prop to control the email-based Gravatar lookup, and changed the default behavior so Gravatar is now off by default.

    Previously, passing an email without a src always resolved a Gravatar image. Now the avatar derives initials/label from email but does not fetch a Gravatar unless you opt in with withGravatar (withGravatar={false} remains the default). This avoids surfacing third-party images for emails where that isn't appropriate (e.g. your customers' own contacts).

    If you relied on email automatically showing a Gravatar, add withGravatar to those avatars:

    - <Avatar email="person@example.com" />
    + <Avatar email="person@example.com" withGravatar />

Patch Changes

  • 237c48b: Search (Ember): the className prop is now forwarded to the inner TextField, so it correctly applies to the component's outermost element. Previously it was dropped, matching the existing React behavior.

2.176.1

Patch Changes

  • e9b2ae0: Updates Buttons vs Links description and AI guidelines

2.176.0

Minor Changes

  • 97b279f: PageHeader updates:
    • Added PageHeaderTitleAction slot. Renders inline to the right of PageHeaderTitle (after PageHeaderLabel if present) and is meant for inline action affordances that operate on the page subject (e.g. an edit button). Generic slot — pass any content, typically a single icon-only Button.
    • Reordered the page header so PageHeaderLabel now renders to the right of PageHeaderTitle (previously to the left), matching the latest design spec. Existing consumers automatically pick up the new layout — no API change.
    • Deprecated PageBreadcrumbs. No layout change — it lives as a sibling of PageHeader inside Page, not inside the header grid, so existing pages render exactly as before. New code should render the standalone Breadcrumbs component above the page header instead. PageBreadcrumbs will be removed in the next major release.

Patch Changes

  • e42296b: Ember: stop overlays from throwing when their floating position is recomputed while the host is going away

    Reading an overlay's floating position reads floatingUi.options, which calls the host component's options function — and therefore the host's args and getters. Those getters can touch state that has already gone away (e.g. a destroyed Ember Data store, or an unloaded record), in which case they throw, the error escapes the run loop, and it fails otherwise-unrelated work in the host app (this surfaced widely after consumers upgraded @glimmer/component to v2, which changed teardown ordering).

    This happens via two routes:

    • During an application/engine instance teardown, the instance flags itself as destroying and then flushes a final render queue (re-invoking the reference/floating modifiers) before tearing down individual components. FloatingUi#isTearingDown now also checks the owner — which, unlike the resource or host component, is reliably flagged as destroying during that flush.
    • A deferred reference update can also be flushed in a later run loop after the host's data has gone away even though nothing is flagged as destroying yet. PositionFloating#position now bails with the last computed data if reading the host options throws, instead of letting the error escape.

    Normal overlay open/close/positioning behaviour is unchanged.

2.175.1

Patch Changes

  • 4247bb4: Ember: stop overlays from re-evaluating their floating position during owner teardown

    When a host application/engine instance is destroyed, it flags itself as destroying and then flushes a final render queue before tearing down individual components. That flush re-invokes the reference/floating modifiers, which read PositionFloating#position — and reading position reads floatingUi.options, i.e. the host component's args and getters. Those getters may already touch torn-down state (e.g. a destroyed Ember Data store), so they throw, which fails test teardown and cascades into unrelated tests.

    The existing guard only checked the floating resource and host component, but neither is flagged as destroying at flush time. FloatingUi#isTearingDown now also checks the owner (application/engine instance), which is reliably flagged as destroying during that flush, and PositionFloating#position returns the last computed data instead of reading options while tearing down.

2.175.0

Minor Changes

  • 8adfb1e: Add SideNavGroup title visibility controls for animated navigation sections.

2.174.1

Patch Changes

  • 3a10f02: Make untitled SideNav group spacing animate with visible NavItem presence. Keep NavItem inline visibility transitions from hanging if transitionend does not fire.

2.174.0

Minor Changes

  • f072d7a: Add NavItem inline visibility props for selected and deselected states.

Patch Changes

  • fb723c8: Add semantic backdrop tokens and use them for Modal, Blanket, and Drawer overlay backgrounds.

2.173.0

Minor Changes

  • 08ae4e1: Add an icon prop to Select so React and Ember consumers can render a decorative leading icon in the trigger.

2.172.3

Patch Changes

  • 660567f: Update ember-provide-consume-context to 0.10.0.

2.172.2

Patch Changes

  • b1bb9b7: Export ColorSchemePreference and ResolvedColorScheme from the React and Ember Pluma provider entrypoints.

2.172.1

Patch Changes

  • 1f298de: Adds Heading design, accessibility and AI guidelines
  • 422cc1f: Adds Ember utility subpath exports for component signatures, spread props, and sprinkle props.
  • 02ec324: Fixes missing DataTable anatomy and descriptions

2.172.0

Minor Changes

  • 82a2183: Add menu-only content slots to NavItemDropdownContent.

Patch Changes

  • 1b77120: Add an onRowExpansionChange callback to DataTable.

2.171.6

Patch Changes

  • Updated dependencies [ca4b0cf]
    • @customerio/pluma-icons@1.16.1

2.171.5

Patch Changes

  • aa5a1e0: Fixes some nav items capitalization
  • 675ce99: Adds Icon design, accessibility, and AI guidelines
  • 2554e72: Fixes broken internal links in design docs files
  • cddc973: Add an extra-small xs size for Toggle.
  • Updated dependencies [6cf95b5]
  • Updated dependencies [d8bcfd9]
    • @customerio/pluma-icons@1.16.0

2.171.4

Patch Changes

  • e1b29b7: Pass native textarea attributes through the TextArea component.

2.171.3

Patch Changes

  • 6453592: Adds Link component design and accessibility docs

2.171.2

Patch Changes

  • 181690b: Fix CodeBlock full-line highlights on the final line.
  • 96b6988: Separate linked expandable nav labels from their toggle buttons and keep the docs mobile navigation open while browsing.

2.171.1

Patch Changes

  • 01464fe: Ensure CodeBlock reformats when its mode or theme changes while syntax highlighting is still in progress.

2.171.0

Minor Changes

  • c3883a9: Add CodeBlock props for copy button clicks and disabled copy button state.

2.170.2

Patch Changes

  • e8cad98: Adds DropdownMenu design and accessibility guidelines

2.170.1

Patch Changes

  • 8ec5b0f: Fix React component SSR compatibility for prerendered docs pages.

2.170.0

Minor Changes

  • c147889: Add explicit Banner description rendering and child title/description composition components, with React and Ember codemods for migrating existing Banner children/yields into descriptions.

2.169.2

Patch Changes

  • b787941: Update ProgressBar and ProgressCircle to use the surface accent token for indicators, expose their styling variables through public fallback vars, and move the ProgressCircle transition to motion tokens.

2.169.1

Patch Changes

  • 7f92908: Update dark-mode active surface tokens and align Table/DataTable hover backgrounds with semantic surface hover tokens.

2.169.0

Minor Changes

  • 8e319d0: Add PlumaProvider component config options for CodeBlock default themes, mode, and color-scheme matching.

2.168.1

Patch Changes

  • e45e714: Make modal test helpers with a configured title fail when that titled dialog is not present instead of falling back to another open dialog.

2.168.0

Minor Changes

  • ed6825f: Add family-level React and Ember component package exports and scope CSS side effects to published CSS files.

2.167.1

Patch Changes

  • 2415d3b: Fix polymorphic type checking for as prop — JSX.IntrinsicElementsReact.JSX.IntrinsicElements

    The global JSX namespace doesn't exist in TS 5.x with jsx: "react-jsx". The emitted .d.ts referenced bare JSX.IntrinsicElements, which resolved to nothing in consumers, causing the conditional type to fall through and silently accept any prop when as was used (e.g. <Box as="div" garbage="hello" /> compiled without error).

2.167.0

Minor Changes

  • 3f33c80: Add temporary token overrides for snackbar, label, accent, date picker, and AI gradient tokens, with AI tokens exposed through theme variables and docs.

Patch Changes

  • 1c686d3: Updates design and accesibility docs capitalization and adds missing EmptyState AI guidelines

2.166.4

Patch Changes

  • f9c5b35: Adds Popover design and accessibility guidelines

2.166.3

Patch Changes

  • bad4304: Fix mode-aware token aliases so references inside $extensions.mode resolve to the referenced token's value for the same mode. The tokens build now emits Cobalt UI's internal {token#mode} reference format for generated mode aliases, matching the format Cobalt's Figma collection parser uses for mode-specific variable references, and the components theme build strips that suffix when converting original aliases back to CSS variables.

2.166.2

Patch Changes

  • 2b60dbe: Adds EmptyState design and a11y docs

2.166.1

Patch Changes

  • c2f2ba1: Fix DataTable showing a stray bottom border on the last visible row when virtualization is enabled and there are no more rows to scroll to. The virtualizer's end placeholder row now signals its empty state via a data-pluma-table-end-placeholder attribute, which TableTd uses to suppress the preceding row's bottom border.
  • 4292248: Fix SegmentedControl icon shifting horizontally when the selected option changes. The icon and label now share the same fixed position across both the active (bold) and inactive (regular) states.

2.166.0

Minor Changes

  • 81693ef: Add optional label prop to DataTableHeaderColumnsMenu. When provided, the trigger button displays visible text alongside the icon instead of rendering as icon-only.

2.165.0

Minor Changes

  • 12b1753: DataTable: Group selected columns at top of Columns dropdown. Make Columns trigger button icon-only.
  • f41c63f: FormattedRelativeTime, FormattedDateTime: Widen date prop to accept null | undefined (renders fallback). Treat 0 as missing. Auto-detect epoch seconds vs milliseconds for numeric inputs (values below 10_000_000_000 are converted to ms).

Patch Changes

  • e7b8653: Add Content foundations page with copy guidelines, add content guidelines to component design docs, and add get_content_guidelines MCP tool

2.164.0

Minor Changes

  • 4ade8ba: Button: add unsafe_withMigratedButtonVariants flag (also configurable via PlumaProvider's componentConfig.PlumaButton). When set, button variants render as if the upcoming major release that removes the secondary variant has already shipped:

    • prop secondary renders with current tertiary styles
    • prop tertiary renders with current subtle styles

    Intended to be enabled together with running the codemods/button-variant-rename codemod. With the flag on, the codemod can be applied safely before the breaking-change major release — your app looks the same before and after the rename. When the major eventually ships, drop the flag.

    This flag supersedes unsafe_withSoftDeprecatedSecondaryVariant: when both are set (or just the new one), the secondary → tertiary mapping is still applied.

Patch Changes

  • 4ade8ba: Add codemods (codemods/button-variant-rename/) that consumers can run ahead of the upcoming Button variant renames: tertiary → secondary and subtle → tertiary. Separate transforms ship for React (.tsx/.jsx) and Ember (.gts/.gjs/.hbs); see the codemod README for instructions on running it directly from this repo without publishing an npm package.

    Pair this with the new unsafe_withMigratedButtonVariants flag (see separate changeset) so the renamed source renders identically to the pre-codemod look. When the major release that drops secondary ships, drop the flag — your app keeps rendering the same.

2.163.0

Minor Changes

  • c862593: Add Coin component — a shaped container (circle or rounded square) of fixed size that frames an Icon, Image, or short text content, with optional status indicator and label-token colorVariant. Coin propagates size, shape, imageFit, and color to descendants via context, so child Icon and Image components auto-size and Images can fill the coin edge-to-edge when imageFit="cover".

    Deprecates LabelIcon (use <Coin><Icon /></Coin> instead) and Avatar's icon/iconSize props (compose with Coin for non-user-avatar use cases). Both will be removed in a future major version.

Patch Changes

  • c862593: Avatar: refactor to use Coin internally. Avatar's public API is unchanged. Visual output is unchanged: the gravatar-with-initials fallback (initials show through when the gravatar fails to load for an unknown email) still works. The icon prop still suppresses the initials fallback as before.
  • 8e2b9cb: Updates Modal examples and fixes secondary button styling

2.162.1

Patch Changes

  • b413f84: Fix Ember Avatar backgroundColor passthrough

2.162.0

Minor Changes

  • 8a64870: Add icon and iconSize props to Avatar

Patch Changes

  • 5edd528: Updates do/dont style for doc-cards

2.161.0

Minor Changes

  • 5651263: Add confirmationPhrase option to ConfirmationModal. When set, a text field appears requiring the user to type the exact phrase before the confirm button becomes enabled.

2.160.0

Minor Changes

  • b030e9f: Add NumberField component

Patch Changes

  • 1f66f60: Adds TextField design and a11y guidelines
  • Updated dependencies [acdae62]
    • @customerio/pluma-icons@1.15.0

2.159.0

Minor Changes

  • f47cafd: Add "app" CSS layer

2.158.2

Patch Changes

  • a8a109c: Adds Select design and a11y guidelines

2.158.1

Patch Changes

  • 91eee6f: Adds Modal design and a11y guidelines

2.158.0

Minor Changes

  • f104019: Add color scheme variants to Image component
  • f104019: Add color scheme settings to PlumaProvider

Patch Changes

  • 2728cf9: Fix SegmentedControl initial value indicator transition
  • 2728cf9: Fix SegmentedControl indicator briefly animating in from the default position on initial render. The first position update now uses an inline transition-duration: 0ms override instead of relying on the parent's :has()-driven CSS variable, whose cascade can fail to reach the indicator before style.transform is mutated.

2.157.2

Patch Changes

  • 550b301: Undo Pluma color token changes

2.157.1

Patch Changes

  • a9130e9: Refactors utility design doc component
  • 583dab6: Fix incorrect types path in exports map for react/utils/* subpaths. The types field pointed to dist-react/react/public-utils/ but files are at dist-react/public-utils/.
  • 42756d0: Adds Tooltip design and a11y guidelines
  • 45fdd55: Adds AI skill to compile component docs made to be read by AI

2.157.0

Minor Changes

  • f8059df: Extending Select Component Test Helpers

2.156.2

Patch Changes

  • 87c370e: Bump deps and fix typos in docs

2.156.1

Patch Changes

  • 5456699: Fix skeleton shimmer in dark mode by replacing hardcoded white with a theme-aware color

2.156.0

Minor Changes

  • 3406cae: Add Search component test helpers

Patch Changes

  • ed0c209: Adds Banner design an a11y docs

  • 418c70f: Add early return with dev warning when icon name is undefined

  • 76ab318: fix: replace raw palette refs with semantic tokens for dark mode compatibility

    Components were referencing palette primitives directly instead of semantic color tokens, which breaks on dark themes since palette values don't change between modes.

    • dropdown-menu dividers: palette['grey-100']color['border-minimal']
    • progress-bar track: palette['grey-100']color['surface-subtle']
    • skeleton-shape bg: palette['grey-100']color['surface-subtle']
    • skeleton-text bg: palette['grey-100']color['surface-subtle']
    • data-table selected rows: added dataTableSelectedRowBackgroundColor and dataTableNestedSelectedRowBackgroundColor component vars with current palette values as fallbacks

2.155.4

Patch Changes

  • c8025d4: Fix undefined icon name bug

2.155.3

Patch Changes

  • 70322f9: Updates Label variant descriptions and rewords other descriptions
  • fc04dbc: Add icon-white color token, and fix up tokens in Button and Snackbar
  • Updated dependencies [cb56f59]
    • @customerio/pluma-icons@1.14.0

2.155.2

Patch Changes

  • c178b86: Fix Label status indicator types and variants

2.155.1

Patch Changes

  • d6f92b5: Change underlying tooltip text color token from text-invert to text-white
  • 6e30533: Updates Button state examples to live components

2.155.0

Minor Changes

  • 3b24ecd: Update Dark and Light color tokens, add backwards compatible tokens, add blue and purple status indicators, and update Pluma docs

Patch Changes

  • 911f2c3: Adds Label design and a11y documentation and updates component anatomy assets

2.154.1

Patch Changes

  • 60a4fe1: Updates DataTable deisgn and a11y docs and fixes minor issues

2.154.0

Minor Changes

  • 365aadb: Add autoColor prop to Avatar for deterministic name-based background colors

Patch Changes

  • c30daa4: Adds DataTable design documentation

2.153.0

Minor Changes

  • ade8e2d: DataTable: cell vertical align and test helper improvements

2.152.2

Patch Changes

  • 7657371: Change underlying SideNav div to nav

2.152.1

Patch Changes

  • Updated dependencies [2b4ff94]
    • @customerio/pluma-icons@1.13.0

2.152.0

Minor Changes

  • 7d0bfcf: Update form label styles

Patch Changes

  • 0ba0d07: Change default Page Header to h2

2.151.0

Minor Changes

  • a53dd1f: Allow disabling individual SegmentedControl options

2.150.0

Minor Changes

  • 7c53b5f: Accept iconSrc in SegmentedControl options

2.149.2

Patch Changes

  • 69b0f65: Fix Select placeholder text appearing darker than TextField and Combobox placeholders when value is an empty string.

2.149.1

Patch Changes

  • d03cec3: Add text-wrap: pretty to heading components to improve text wrapping and avoid orphaned words on the last line.
  • Updated dependencies [3b1c8c2]
    • @customerio/pluma-icons@1.12.0

2.149.0

Minor Changes

  • cca0d11: Update Toggle styles to match latest designs

Patch Changes

  • 6095fc9: Fix some flex style properties

2.148.1

Patch Changes

  • b3b2264: Fix for hidden table caption positioning outside of it

2.148.0

Minor Changes

  • 6994e89: Allow remapping icon names via provider config

Patch Changes

  • 1f6c8b1: Add top/bottom padding to DrawerBody
  • 0f3ffac: Fix DataTable header background color overflow out of panel corners
  • 7a317f0: Reduce page header top/bottom padding
  • aabfa2b: Add preferFilled prop to Icon
  • 9879e44: Update Breadcrumb separator color

2.147.0

Minor Changes

  • bf09dd8: Animate-collapse SideNav titles when it collapses
  • 2feed0c: Make SideNav footer sticky

Patch Changes

  • cd83010: Reduce label horizontal padding from space-100 to space-050

2.146.0

Minor Changes

  • 32046c5: Add dropdown variant of NavItem with animated current active

Patch Changes

  • Updated dependencies [5ad2098]
    • @customerio/pluma-icons@1.11.0

2.145.0

Minor Changes

  • c7c69fd: Reduce default Floating UI detect overflow padding

2.144.0

Minor Changes

  • 7ba8c51: Update focus states

Patch Changes

  • 037ed46: Update VisuallyHidden docs

2.143.1

Patch Changes

  • e359003: Fix missing line-height in baseline CSS
  • 135a6b0: Fix invisible focus within Select's hidden input
  • ab9e7e8: Add tooltip to expand/collapse button in Side Nav component
  • 4586cc4: Fix prop spreading in React NavItem

2.143.0

Minor Changes

  • 2c840a7: Add global theme styles and variables

2.142.0

Minor Changes

  • 3eacb12: Drawer: Add lg, xl, and xxl sizes and subtitle prop

  • 5b419db: Remove legacy pseudo-element fade styles from Scrollable

    Removes the fadeLeft, fadeRight, fadeTop, and fadeBottom pseudo-element classes from the Scrollable component. These used sticky ::before/::after elements with white-to-transparent gradients which didn't work well on non-white backgrounds.

    The withEdgeIndicators prop (using mask-image) is now the only approach. The Select multi-value component has been migrated to use maskFadeRight.

2.141.0

Minor Changes

  • 9fea690: KeyboardShorcut: fix color prop passing and adjust sizing
  • f6864a1: Update calendar/datepicker styling

2.140.0

Minor Changes

  • 10e5afb: Scrollable: replace withEdgeIndicators pseudo-element approach with CSS mask-image classes. This fixes edge fade indicators for horizontal flex layouts and simplifies the implementation. The fade size can be overridden via the scrollable.vars.fadeSize CSS variable.
  • 6c7f4a3: Add iconSrc prop to OptionCard for rendering custom image in place of an icon and update horizontal layout to use left text-align.

2.139.0

Minor Changes

  • f3ff499: Adding header and footer divider to match designs

2.138.3

Patch Changes

  • a99dbc4: Add onLoadMore and onSearch support to DataTableHeaderColumnsMenu

    • onLoadMore/shouldLoadMore/isLoadingMore: infinite scroll via IntersectionObserver
    • onSearch/searchResultColumnIds/isSearching: server-side search delegation
  • 3ca22c5: Expose state prop to ModalPrimitive

2.138.2

Patch Changes

  • 383b488: Adjust some types and lint ternaries

2.138.1

Patch Changes

  • 86a2e8d: Prevent auto-open Combobox from reopening after selection

2.138.0

Minor Changes

  • 7a84f5f: Add more style configuration options for some form elements

2.137.0

Minor Changes

  • 0d993fc: Update Page margins/paddings to match latest Figma
  • 1cd5f13: Add flag to soft-deprecate the secondary button variant

Patch Changes

  • 649a653: Improved vertical centering in new PageHeader
  • cf7ee01: Fix unnecessary padding in "fullscreen" PageHeader
  • e40209f: Update drawer padding from space-200 (16px) to space-250 (18px)

2.136.0

Minor Changes

  • 524feed: Update Page component to match new PageHeader design

2.135.1

Patch Changes

  • 02dfca4: Fix scrollMargin calculation in virtualized DataTable

2.135.0

Minor Changes

  • d28860e: Add hover tooltips to collapsed NavItems

2.134.1

Patch Changes

  • 2bdbff8: Add userEvent.setup() with pointerEventsCheck: PointerEventsCheckLevel.Never to ComponentTestHelperBase

2.134.0

Minor Changes

  • d4c7178: Add React (including React 19) to peer deps

2.133.0

Minor Changes

  • d29ad07: Improvements to DataTable
  • e6b3233: Update shadows and borders on popovers/dropdowns

2.132.0

Minor Changes

  • 52ae322: Update Page component widths
  • ecfa868: Make NavItem expansion trigger icon filled when sub item is active

Patch Changes

  • 1a46efb: Fix Panel not respecting backgroundColor prop

2.131.0

Minor Changes

  • e52b6ec: Add collapse behaviors to Breadcrumbs

2.130.0

Minor Changes

  • 01451ac: Add "meta" to theme objects including raw color values

Patch Changes

  • Updated dependencies [d5343be]
    • @customerio/pluma-icons@1.10.0

2.129.0

Minor Changes

  • f58851c: Increase SideNav width

Patch Changes

  • e8d1814: Remove NavItem icon color transition animation

2.128.0

Minor Changes

  • 4aad52e: Make SideNav and NavItem transparent

Patch Changes

  • c0c5a45: Fix NavItem/SideNav collapsible states
  • Updated dependencies [5d08172]
    • @customerio/pluma-icons@1.9.0

2.127.1

Patch Changes

  • 8d1a546: (another) Fix DataTable not rerendering when composed

2.127.0

Minor Changes

  • e52ff27: Add SideNav component

Patch Changes

  • Updated dependencies [e52ff27]
    • @customerio/pluma-icons@1.8.0

2.126.2

Patch Changes

  • Updated dependencies [0f700c7]
    • @customerio/pluma-icons@1.7.0

2.126.1

Patch Changes

  • dacd2d4: Fix DataTable not rerendering when composed

2.126.0

Minor Changes

  • 79234e9: Update tokens to make Figma sync easier

2.125.1

Patch Changes

  • 9a0660f: Allow style to be passed in as an arg to TextField

2.125.0

Minor Changes

  • 6fc450f: Add NavItem component

Patch Changes

  • 58a4b51: Updated keyboard shortcut border radius from radius-4 to radius-6.
  • Updated dependencies [6fc450f]
    • @customerio/pluma-icons@1.6.0

2.124.1

Patch Changes

  • 4617cce: KeyboardShortcut: update border radius to 4px, map special keys to display symbols (Enter→↵, Tab→⇥, ArrowUp→↑, etc.), and use sans font for all symbol characters

2.124.0

Minor Changes

  • 5573eb5: Add new KeyboardShortcut component that displays keyboard shortcuts with platform-aware formatting, powered by @tanstack/react-hotkeys. Supports isInverted prop for dark variant.

2.123.1

Patch Changes

  • Updated dependencies [b750d98]
    • @customerio/pluma-icons@1.5.0

2.123.0

Minor Changes

  • 9d214eb: Add withArrow prop to Tooltip component. When set to false, the arrow indicator on the tooltip content is hidden. Defaults to true to preserve existing behavior.

2.122.4

Patch Changes

  • 220494f: Fix infinite rerender in React DataTable

2.122.3

Patch Changes

  • 9631f8c: fix(DataTable): stabilize config objects to prevent infinite re-renders

    Add use*Config hook wrappers (usePaginationConfig, useSortingConfig, useSearchConfig, useFiltersConfig, useEmptyStateConfig) alongside the existing get*Config functions. The hooks memoize the result using the actual prop dependencies, keeping the plain functions intact for ember usage.

    The get*Config functions return new objects every render. When used directly as contextValue useMemo dependencies, every render produced a new context, forcing DataTableTable to re-render infinitely.

2.122.2

Patch Changes

  • 102419f: fix(DataTable): fix infinite re-render loop in DataTableTable

    table.getFlatHeaders() returns a new array reference on every render. Using it directly as a useLayoutEffect dependency caused setColumnSizing() to fire every render, which triggered a TanStack Table state update, causing another render — resulting in an infinite loop. This was triggered when consumers passed unstable prop references (e.g. inline filters or bulkActions objects).

    Fixed by deriving a stable string key from header IDs to use as the effect dependency instead of the array reference.

2.122.1

Patch Changes

  • 6d7d6d0: fix(TextArea): pass onKeyDown and rows props to inner TextAreaInput

    The React TextArea component accepted onKeyDown and rows in its type definition but silently dropped them — they were never forwarded to the inner TextAreaInput. This caused onKeyDown handlers to never fire and rows (without minRows) to have no effect.

2.122.0

Minor Changes

  • 0146d5a: Add CSS var customization options to Checkbox and Radio

2.121.0

Minor Changes

  • 6ec2006: Mark all dependencies as external in rollup builds
  • 1ec0991: Update ember-provide-consume-context to 0.9.0

2.120.2

Patch Changes

  • 749c4b9: Fix CodeBlock Shiki caching and test flakiness
  • Updated dependencies [d8b56a9]
    • @customerio/pluma-icons@1.4.0

2.120.1

Patch Changes

  • eddd2fe: Fix Pluma Select types

2.120.0

Minor Changes

  • 03390df: Add withTruncatedTooltip to entire Select component as arg

Patch Changes

  • 03390df: Fix timing issues in Ember tooltips

2.119.2

Patch Changes

  • 58931c6: Prevent from calling .lookup on Ember app if being destroyed
  • 1f0787e: The Select optionComponent prop was missing its generic Option param

2.119.1

Patch Changes

  • 6cec3fd: Bust cell colspan cache when colspans change
  • 28651fc: Make sure Tanstack Table type mergig is included in build

2.119.0

Minor Changes

  • 53a9c06: Add tooltip support to Select option items
  • f7f848f: Add colspan configuration to DataTable

2.118.0

Minor Changes

  • 2552969: Add single-row selection mode to DataTable

Patch Changes

  • Updated dependencies [be35e89]
    • @customerio/pluma-icons@1.3.0

2.117.0

Minor Changes

  • d1ce347: Add shouldAllowAutofill prop to TextField and Textarea components (React and Ember). When set to false (default), disables password managers (1Password, LastPass, Bitwarden, Dashlane) by adding appropriate data attributes and autocomplete="off". Set to true to allow password managers on credential fields.

Patch Changes

  • baf4f86: Add DropdownMenu test helpers for integration testing

2.116.3

Patch Changes

  • 9a20763: Update Slider colors to match Figma

2.116.2

Patch Changes

  • 11ef1bd: Fix exported managed modal types

2.116.1

Patch Changes

  • f4faaa8: Fix @testing-library/react peer dependency
  • 6001b68: Fix center baseline alignment of elements with icons
  • 225622a: Fix build output for Ember's confirmation modal
  • 86728ef: Fix circular imports in CodeBlock utils

2.116.0

Minor Changes

  • fd4f3a4: Link - add custom icon support

2.115.0

Minor Changes

  • 865f3bd: Add form control centering utilities

2.114.0

Minor Changes

  • b3af577: Add onOpenChange to Combobox
  • b3af577: Make TextField,Select,Combobox maintain width regardless of isLoading

2.113.0

Minor Changes

  • 5a588df: Add isClearable option to Combobox

2.112.0

Minor Changes

  • e8025e0: Mark react/jsx-runtime as external

Patch Changes

  • 62a87f8: Update Pluma stories and docs to not use the colon notation

2.111.0

Minor Changes

  • c81f122: Better nested modal support

2.110.2

Patch Changes

  • b5d07c8: Fix Ember FloatingUI list navigation refs

2.110.1

Patch Changes

  • 9472c5c: Fixes an issue with pluma select where searching for items wouldn't expand matching groups

2.110.0

Minor Changes

  • a88a065: Add ability to configure PlumaSelect's popover dimensions

2.109.0

Minor Changes

  • d210b1b: Add defaultIsOpen prop to Select
  • fb9883f: Allow wrapping long multi-select values to multiple lines

Patch Changes

  • 241956b: Reduce height of small SegmentedControl

2.108.0

Minor Changes

  • 7624f0b: Add ColorPicker
  • 2d70c8a: Button - add custom icon support

2.107.0

Minor Changes

  • a37b4e1: Add selectContext to Select's header/beforeOptions/footer components

2.106.0

Minor Changes

  • 438dcf0: Add ability to create new options in Select component

Patch Changes

  • 57704ed: Make Portal more useful

2.105.1

Patch Changes

  • 1671236: Adds truncate to Select placeholder

2.105.0

Minor Changes

  • 6e16bf8: Make @internationalized/date a peerDependency

Patch Changes

  • cdc291d: Fix sync issue with external value for react datepicker component.

2.104.0

Minor Changes

  • 5276d72: Add additional Select test helpers

2.103.2

Patch Changes

  • a8b97a9: Followup fix for Ember Floating UI state cleanup

2.103.1

Patch Changes

  • b51af5d: Fix Ember Floating UI cleanup not running when closing

2.103.0

Minor Changes

  • a8f6461: objectFit prop to component

2.102.2

Patch Changes

  • 74c14f9: Fix React CodeBlock style prop merging

2.102.1

Patch Changes

  • c5bde94: Add overrides for certain code tag styles in CodeBlock

2.102.0

Minor Changes

  • 3aa12fa: Add "Select" variant to Filter types

Patch Changes

  • f1bf311: Fix reset styling in CodeBlock

2.101.0

Minor Changes

  • e17e3e7: Add support for md sized LabelIcons

2.100.0

Minor Changes

  • fe88893: Add isClearable to Select component

2.99.0

Minor Changes

  • 247cef4: Add test helpers for Select component

2.98.1

Patch Changes

  • a6a51ca: Change row action event propagation stopping from onclick to onclickcapture to precede custom events

2.98.0

Minor Changes

  • abd35e0: Ember managed modals: auto close in controllers

Patch Changes

  • 720fa2b: Fix vertical alignment in title-less Banners

2.97.1

Patch Changes

  • 3b6d8df: Update ember addon map

2.97.0

Minor Changes

  • 13c3f7c: Add JsonField input
  • 96777c8: add support for unsafe_props to Textarea and JsonField

2.96.0

Minor Changes

  • a553f28: change FormLayoutGroup to use css grid instead of flexbox - removes alignInline prop

Patch Changes

  • ce57ea3: Ensure aria-labelledby error state is appended correctly

2.95.0

Minor Changes

  • 16125bb: Add support for *px format, when specifying widths in the data table
  • 72d0452: add regex support to modal test helpers

Patch Changes

  • 84536a7: Add unsafe_props forwarding to internal form Ember components

2.94.0

Minor Changes

  • 5af3b54: Switch the add filter button to a subtle variant
  • 23ed309: Added isAlwaysShown option to filters

Patch Changes

  • 9cb19c7: Ensure the unix timestamp input adheres to any minDate/maxDate validations in the Datepicker when using withTime

    Adjust PlumaModal test helper dialog getter to use queryByRole instead of getByRole to prevent test timeouts when checking modal state

2.93.0

Minor Changes

  • cb5435d: Add customization to form control sub-elements

2.92.0

Minor Changes

  • 2b23759: Add "by title" query option to Modal test helper

2.91.1

Patch Changes

  • 9785f22: Fix Ember ConfirmationModal message component types

2.91.0

Minor Changes

  • a575a7e: Add onConfirm and onCancel callbacks to the ConfirmationModal

2.90.0

Minor Changes

  • 89a532f: Added confirmation modal

2.89.0

Minor Changes

  • cb5faf9: Add option to autoclose managed modals on unmount

2.88.0

Minor Changes

  • dae9b88: Link improvements: truncation and icon-only links
  • 20dfe37: Add more caching in Ember FloatingUI implementation

Patch Changes

  • c891cbc: Reverse order of ModalProvider and SnackbarProvider

2.87.0

Minor Changes

  • 487a2a6: Add Modal Manager API

2.86.1

Patch Changes

  • f5577ca: Add special language and theme Shiki types to CodeBlock props

2.86.0

Minor Changes

  • 5867bca: Add CodeBlock component

2.85.3

Patch Changes

  • 4ba9d5c: Fix text props not being applied with React version of Truncated component

2.85.2

Patch Changes

  • 94b1a3c: add footerComponent to Select

2.85.1

Patch Changes

  • c1cb6e8: Fix formatting dates in DatePicker (make them timezone-aware)

2.85.0

Minor Changes

  • 74d2b0a: Add verticalAlign utility sprinkle
  • ff5ce87: Add more cursor utility sprinkle values

2.84.0

Minor Changes

  • 7fefb01: Update DatePicker width for withTime, improve Ember props passing

Patch Changes

  • 3421cb5: Avoid flash of old state in DatePicker

2.83.0

Minor Changes

  • f73a94d: Add textTransform "none" utility sprinkle

Patch Changes

  • f4f5bb4: Only show Modal Header if title is present
  • ce5405b: Allow singular units in DatePicker minRange/maxRange strings
  • 237ab5b: Fix TextArea styles (height, outline)

2.82.0

Minor Changes

  • f7d2e29: Accept more formats for DatePicker's minRange and maxRange
  • 180393c: Add unix timestamp input to date (with time) picker

Patch Changes

  • 55e793f: Fix doc rendering for withTime example in Ember
  • 813097f: Implemented various spelling fixes across the docs and components packages using CSpell in ESLint and CI

2.81.0

Minor Changes

  • 6042268: DatePicker component withTime prop

    New Features

    • withTime prop: Enable time selection in DatePicker component
    • reference prop: Allows for DST labels to be calculated correctly based on a reference date (either before or after DST)
    • ZonedDateTime support: When withTime={true}, component returns ZonedDateTime instances instead of CalendarDate
    • Time selection UI:
      • Hour input (12-hour format)
      • Minute input
      • AM/PM selector
      • Timezone selector with comprehensive timezone database
    • Time state management: New utilities in time-zone.ts for managing time selection state
    • Exports updated including SELECTABLE_TIME_ZONES and getSelectableTimeZones() from date-picker utils

    Behavior Changes

    • withTime cannot be used together with isRange (mutually exclusive as seen in Figma)

Patch Changes

  • 7531245: Add linting to CI and added relevant ESlint changes (ignores, code changes)

2.80.1

Patch Changes

  • d62981c: Fix Ember DatePicker timing issues

2.80.0

Minor Changes

  • 39355ee: Add minRange and maxRange to DatePicker
  • 7a7900b: Add isPresetDisabled to DatePicker

2.79.0

Minor Changes

  • a0a1c83: Add "timeZone" prop to DatePicker

Patch Changes

  • 9fe57ba: Add option to adjust color to the react textlabel component, it is already functional in ember

2.78.0

Minor Changes

  • 6edfcef: Update Button padding/sizing to match Figma

2.77.0

Minor Changes

  • 46bf382: Add borderless variant to Accordion

Patch Changes

  • e56dec0: Make banner content expand appropriately:
    • close buttons stay on the right and up
    • buttons go to the bottom and slide right
    • text wraps and hyphenates
  • f909789: Fix Storybook dependency versions

2.76.3

Patch Changes

  • be9a89f: Update eslint in all packages
  • e76a4fd: Update to Glint V2
  • efb1fc6: (internal) Replace @/ alias with relative imports
  • Updated dependencies [be9a89f]
    • @customerio/pluma-icons@1.1.6

2.76.2

Patch Changes

  • 156e515: Ember Floating UI performance improvement
  • 775b0d4: Small performance improvement in Ember DataTable

2.76.1

Patch Changes

  • a6d04b6: Fix tooltip bug

2.76.0

Minor Changes

  • d34835c: add iconComponent prop to Select

Patch Changes

  • 39da22c: Small typo fix in css variable
  • d0b05fd: [ember 6.x] update renderer context path to support apps running ember 6
  • 710d834: Fix valueComponent not rendering
  • acabcff: fix tooltip form submission bug

2.75.1

Patch Changes

  • 068a3cd: Fix disabled popover bug

2.75.0

Minor Changes

  • 5a1ce5f: Add pagination to the top of the DataTable component

Patch Changes

  • 6bd272b: Clean up some boolean logic in utils/events

2.74.0

Minor Changes

  • e531a56: Add support for nested menus in DropdownMenu

2.73.1

Patch Changes

  • 2aceef8: Expand collapsed Select groups when searching
  • 17eafed: Remove unused wait-on dependency

2.73.0

Minor Changes

  • bb61de1: Add multi-select support to Select
  • 27409f2: Make Select groups collapsible

2.72.0

Minor Changes

  • b03812a: Add experimental dark theme

2.71.0

Minor Changes

  • 6adbac8: Add Radio and RadioGroup test helpers

Patch Changes

  • 91c91a9: Disable spinner animation when prefers-reduced-motion is enabled
  • a325d8b: Optimizes processStyleValue a little bit

2.70.0

Minor Changes

  • e083a8d: Adding test helpers for the data table component

2.69.0

Minor Changes

  • fd178af: Add test helpers for CheckboxGroup, Toggle, and Spinner
  • dc755d6: Add Ember FloatingTree implementation, set up PopoverPrimitive for nesting

Patch Changes

  • 3078626: Fix overflows in SegmentedControl

2.68.4

Patch Changes

  • a0becbb: Optimizes rendering of more html elements

2.68.3

Patch Changes

  • 5f56a5a: Optimizes rendering of PlumaBox divs on Ember

2.68.2

Patch Changes

  • ae2b999: Add overflow-wrap to tooltip content

2.68.1

Patch Changes

  • 8ef82a9: Prevent icon in Select from flex-shrinking

2.68.0

Minor Changes

  • 236e08f: Add icon argument to Combobox

2.67.2

Patch Changes

  • 1796506: Fix Ember PlumaFlex args types

2.67.1

Patch Changes

  • 5a1b487: Fix DataTable initial expanded state

2.67.0

Minor Changes

  • 983e519: Make entire DataTable rows clickable

2.66.0

Minor Changes

  • 7e2f424: Add test helpers for ToggleButton and Checkbox

2.65.1

Patch Changes

  • 5b3182a: Update padding/gaps in PageLoader

2.65.0

Minor Changes

  • 311ac37: Add extract and find functions for Test Helpers, deprecate get function

2.64.0

Minor Changes

  • a48d623: Add Card component

2.63.5

Patch Changes

  • 7741aa2: Fix ProgressCircle null state, add animations for ProgressBar and ProgressCircle

2.63.4

Patch Changes

  • 5e64dab: popover buttons should never submit forms

2.63.3

Patch Changes

  • d75cc3e: Add visibility sprinkle

2.63.2

Patch Changes

  • 11c7020: Handle non-strings given to isEmptyString gracefully

2.63.1

Patch Changes

  • 9f1d89c: Fix truncated component not accepting box props in type definition

2.63.0

Minor Changes

  • e58c639: Add Ember utility for spreading props

2.62.2

Patch Changes

  • 27f1023: Missing sprinkle props on popover trigger

2.62.1

Patch Changes

  • 370ce59: Respect open popover regardless of the passed in isActive state
  • 71abc85: Update subtle button hover and active states

2.62.0

Minor Changes

  • 45c0b8b: Accept boolean for DataTable getRowCanSelect

Patch Changes

  • 72a9291: Fix filters dropdowns overflowing on long content
  • Updated dependencies [6c2faba]
    • @customerio/pluma-icons@1.1.4

2.61.0

Minor Changes

  • ef85bbe: Add additional test helpers to Badge, Button, Text, and Banner

2.60.0

Minor Changes

  • 5862bd9: Add missing splattributes to PlumaCombobox

Patch Changes

  • a80c9ee: Update button styles and dimensions
  • Updated dependencies [2a67c32]
    • @customerio/pluma-icons@1.1.3

2.59.0

Minor Changes

  • 1d1302c: Adds isOpen and close function to the PopoverPrimitive

Patch Changes

  • Updated dependencies [1d1302c]
    • @customerio/pluma-icons@1.1.2

2.58.0

Minor Changes

  • 0f9dcdf: Add isActive prop to Button component
  • 810b810: Adds label prop to the Divider component
  • 8f6af20: Add PopoverTriggerButton component

Patch Changes

  • Updated dependencies [4a51fd2]
    • @customerio/pluma-icons@1.1.1

2.57.3

Patch Changes

  • dbf3d92: Adding a tooltip design guideline
  • Updated dependencies [ccb073f]
    • @customerio/pluma-icons@1.1.0

2.57.2

Patch Changes

  • e974722: Don't shrink SkeletonShape in flex containers

2.57.1

Patch Changes

  • 185bcb7: Fixes the fade indicator not showing up

2.57.0

Minor Changes

  • 248bbde: Update to refreshed icon set

Patch Changes

  • Updated dependencies [248bbde]
    • @customerio/pluma-icons@1.0.0

2.56.2

Patch Changes

  • 347317c: Fix autoclosing Snackbars causing brief overflows

2.56.1

Patch Changes

  • d52730d: Fix DataTable header cell contents rendering on top of selection row

2.56.0

Minor Changes

  • d3fefba: Read available icon state from IconManager
  • 3d1343a: DataTable: allow rendering disabled checkboxes in row selection
  • 094e738: Added edgeThreshold and overflow=hidden option to Scrollable component
  • b3f1975: adds withEdgeIndicators option to the Scrollable component

Patch Changes

  • c961c4e: Allow self-selection for Icon test helpers
  • 982c4d0: Fix multiple spritesheets attaching in dev
  • Updated dependencies [d3fefba]
  • Updated dependencies [d3fefba]
  • Updated dependencies [982c4d0]
  • Updated dependencies [d110086]
    • @customerio/pluma-icons@0.9.0

2.55.0

Minor Changes

  • 82eaaa8: Add PlumaIcon defaultSizeVersion to PlumaContext

2.54.1

Patch Changes

  • 409cc8e: Prevent Avatar from shrinking in flexbox layouts

2.54.0

Minor Changes

  • c3f9123: Fix icon IDs potentially conflicting with other DOM elements

Patch Changes

  • Updated dependencies [c3f9123]
    • @customerio/pluma-icons@0.8.0

2.53.0

Minor Changes

  • 6e931f0: Add virtualized rendering support to DataTable

2.52.0

Minor Changes

  • 3aef7d9: Add size option to LabelIcon

Patch Changes

  • Updated dependencies [cc76dd7]
    • @customerio/pluma-icons@0.7.2

2.51.1

Patch Changes

  • 95c161f: Fix aria role for the ProgressBar component

2.51.0

Minor Changes

  • 88466bf: Allow renaming "Default" DataTable saved view

Patch Changes

  • 8081a66: Fix React DataTable effect dependencies
  • b27afbf: Improve DataTable overflow styles

2.50.0

Minor Changes

  • 79f963f: add isLoading and autoLoading to the PlainButton

2.49.0

Minor Changes

  • cb160e8: Add search and virtualization to DataTable columns dropdown
  • 7698317: allow PlainButton to render a PlainLink when given a href

Patch Changes

  • ae0a3e2: Fix z-index issues in DataTable thead

2.48.1

Patch Changes

  • 699a21a: Fix Icon test-helper

2.48.0

Minor Changes

  • c217049: Adds v2 sizing for icons, moving on from fly sizing

2.47.0

Minor Changes

  • 0f61834: Add test helpers

Patch Changes

  • Updated dependencies [0f61834]
    • @customerio/pluma-icons@0.7.1

2.46.0

Minor Changes

  • 5b01963: Update Storybook and Vite to latest versions

2.45.0

Minor Changes

  • 7581f16: Updates vanilla-extract dependencies
  • 4e1fd24: Adds isDraggable option to popover and popover primitive to make them draggable

2.44.0

Minor Changes

  • 951b0a5: Add more configuration options to bulk and row action dropdowns

Patch Changes

  • dc36750: Mark DropdownMenuTriggerButton as active while menu is open

2.43.0

Minor Changes

  • c5de48f: Add "Row actions" support to DataTable

2.42.0

Minor Changes

  • e743ade: Add "load new" and "load more" support to DataTable

2.41.0

Minor Changes

  • 5ea0a8e: adds minRows and maxRows to the <TextArea /> component

2.40.0

Minor Changes

  • b53070a: add isActive prop to <Blanket /> component
  • 98719fd: "Expand" DataTable search input by default

Patch Changes

  • 61d5cfd: Allow margin to be set on vertical dividers

2.39.0

Minor Changes

  • 086b3e0: Add a direction prop to the <Divider /> component

2.38.0

Minor Changes

  • 8ba1d7d: Allow controlled DataTable states without manual sorting/paginating/filtering

Patch Changes

  • 9a71da3: Properly pass name through inputs
  • 9b67486: Keep search field in sync with select field size

2.37.0

Minor Changes

  • 35ca4a3: Add saved views to DataTable

2.36.0

Minor Changes

  • c211673: Add component
  • 689dc47: Changes the code text styles to be relative to the parent width

2.35.1

Patch Changes

  • 892dc6d: Add export for ember hbs component lookups

2.35.0

Minor Changes

  • 912496f: Add empty state to DataTable component
  • 7363af7: Add loading state to DataTable

Patch Changes

  • f6bc20b: Make DataTable "filters" button in header toggle the header section

2.34.0

Minor Changes

  • 510d625: Add search and filter support to DataTable

2.33.0

Minor Changes

  • b4ef7e7: Add date and custom filter support to Filters component

2.32.0

Minor Changes

  • e96fe09: Allow customizing the Button's icon color

2.31.0

Minor Changes

  • 62b9201: Add "dashed" variant to Tag component

Patch Changes

  • cc261bd: Fix: Add explicit type="button" to Tabs when rendered as button elements

2.30.0

Minor Changes

  • cb8ec82: Add Patterns documentation

2.29.0

Minor Changes

  • 50e4b6e: Add bulk action support to DataTable

2.28.1

Patch Changes

  • 662e94c: Prevent TextField left/right sections from flex shrinking

2.28.0

Minor Changes

  • 6f97ca3: Add more props to PlumaSearch

2.27.1

Patch Changes

  • 8bcc144: Fix activeIndex in Ember PopoverPrimitive

2.27.0

Minor Changes

  • bab497c: Add more configuration props to PopoverPrimitive and DropdownMenu
  • 1a647f3: Add "compact" variant to Tag component

2.26.0

Minor Changes

  • 2906d4b: Make DataTable composable

2.25.0

Minor Changes

  • 15ac7c4: Add more Floating UI middleware customization options

2.24.1

Patch Changes

  • a901d82: Revert "don't shrink divider"
  • 073c3d0: Fix Select showing description in default selected value component

2.24.0

Minor Changes

  • 764e810: Adds a withPanel prop to the DataTable to wrap the table in a pluma panel

2.23.0

Minor Changes

  • d6c9c41: Add description option to the Select component
  • 23f8672: Added <DropdownMenuFooter /> component

Patch Changes

  • 1cdbf96: Don't shrink the divider when in a flex container

2.22.0

Minor Changes

  • 5a653e0: Add columns to segmented control

2.21.0

Minor Changes

  • 0848d6f: Add isPulsing to the StatusIndicator component

Patch Changes

  • e2e9164: Forward Text props in the ember Truncate component

2.20.0

Minor Changes

  • c1e6dcf: Added StatusIndicator component

2.19.0

Minor Changes

  • c35c9e6: Added a Truncation to Filter component
  • 154827f: Added Scrollable component

Patch Changes

  • d89a395: Remove extra div from filters truncation implementation
  • 254a853: adds last 365 days preset to pluma datepicker

2.18.0

Minor Changes

  • c5c1bdb: Support modal split in both directions
  • 17c2666: Automatically detect whether a link should be treated as isExternal

Patch Changes

  • 06d4c19: Changes the NativeOnClickEventArgType type to extend from MouseEvent, the actual event, instead of the generic Event type.

2.17.0

Minor Changes

  • a305dd7: Added Truncated component

2.16.0

Minor Changes

  • 10f7e20: Add isLoading and autoLoading to banner action

Patch Changes

  • 2a1f4bd: Allow null as a value for the TextField icon prop

2.15.2

Patch Changes

  • 1a44f8a: Fix misalignment for description in promotion empty state
  • 8d2094c: Render non-interactive dropdown menu item as div
  • e0fb584: Fixes key warning when using Popover on React with render functions

2.15.1

Patch Changes

  • 193316c: Don't include clickable styles unless the dropdown menu item is clickable

2.15.0

Minor Changes

  • e3c01bb: Add isDisabled and onToggle to Accordion. Add defaultOpen to AccordionGroup.

2.14.1

Patch Changes

  • Updated dependencies [7da9784]
    • @customerio/pluma-icons@0.7.0

2.14.0

Minor Changes

  • 70d7185: Added promotion variant to EmptyState

2.13.0

Minor Changes

  • 684c82c: Add new split variant to the modal

2.12.0

Minor Changes

  • e3d29b4: add withPadding property to panel section
  • e89943e: Add Filters component

Patch Changes

  • 1d50217: Remove unneeded Proxy hack
  • 1af5198: Moved panel title to default to level 3 instead of level 2
  • d11938b: Fix misconfigured css in the accordion styles

2.11.0

Minor Changes

  • 513f3c8: Added size and isInline props to the Image component

2.10.1

Patch Changes

  • bf94bce: Select legacy styling: update text color

2.10.0

Minor Changes

  • 8e0654d: Add CloseButton component
  • cbe1553: Add "legacy" style variant to Select component

2.9.0

Minor Changes

  • a5cb80e: Added align meta option for data table configuration

2.8.0

Minor Changes

  • 887aca6: Add isDisabled prop to Tag component
  • f3f83df: Simplify PopoverContent styles

Patch Changes

  • 9ce5413: Update DataTable docs and Ember proxy function
  • 887aca6: Fixed incorrect height due to border for Tag component. Set the cursor for the Tag component delete button.
  • 54010e8: Fix layout issue in panel footer

2.7.0

Minor Changes

  • ab5e0b9: set a min size of 25 characters when the date picker is a range

2.6.0

Minor Changes

  • 3b72342: Add Description component to Panel

2.5.0

Minor Changes

  • c5a7c45: Added ProgressCircle component
  • 1bb6c83: Added variant support for banner actions and added isOutlined prop for banners
  • 3335c4a: Add Accordion and AccordionGroup components

2.4.0

Minor Changes

  • ecd5296: DataTable: Add pagination support
  • 306b129: DataTable: Add sorting support
  • 08a5be6: Added PlainButton component

2.3.0

Minor Changes

  • 3fa7c3f: added size option to option card

2.2.0

Minor Changes

  • db49dab: DataTable: Add column width configuration

2.1.0

Minor Changes

  • 63046b4: DataTable: Add support for selecting rows

Patch Changes

  • 658d7ae: Update code examples in Select docs

2.0.1

Patch Changes

  • 0505c9f: Pluma Table: fixed clickable table header's spacing.

2.0.0

Major Changes

  • fac2aa7: Prevent date formatting from crashing Ember VM on some browsers.

Minor Changes

  • a12db01: Add onCheckedChange to checkbox, radio, and option card
  • 4e4a1bf: Add flex:1 to option-card-content
  • ee56da6: DataTable: add support for nested/expanding rows

Patch Changes

  • Updated dependencies [4495cf5]
  • Updated dependencies [c05554d]
    • @customerio/pluma-icons@0.6.0

1.49.0

Minor Changes

  • ff8471c: Adds tooltip prop to the DropdownMenuItem

1.48.0

Minor Changes

  • b96c715: Add support for DropdownMenuGroup without a label

Patch Changes

  • dd40f3d: Fix select and combobox placement to be fixed to the left or right of the target
  • 3d16dd2: Spaced button groups have a gap of 100 instead of 150

1.47.2

Patch Changes

  • 33afa03: Make sure to destroy Floating UI plugin when component destroys

1.47.1

Patch Changes

  • a375e75: Fix potential ResizeObserver loop bugs in Ember

1.47.0

Minor Changes

  • 7cd4df4: Add DropdownMenuCheckboxItem component
  • a4267cb: Add shouldCloseOnClick to DropdownMenu
  • 4230bab: Fix PlumaButton issue with ember-concurrency task

1.46.0

Minor Changes

  • e15ca30: Added <Image /> component
  • 7453e7f: Adds description option to DropdownMenuItem component

1.45.0

Minor Changes

  • 8eb5599: Add first version of DataTable component
  • 5e18455: Update Table styles

1.44.0

Minor Changes

  • fb5d096: Added DropdownMenuTrigger button component

1.43.0

Minor Changes

  • 85f8072: Add async support to Select and Combobox

1.42.0

Minor Changes

  • e820f31: Added DropdownMenu component

1.41.1

Patch Changes

  • 93f3fcf: Make Radio/Checkbox context value handling safer

1.41.0

Minor Changes

  • 3c9e19d: Add Combobox component

1.40.0

Minor Changes

  • ef298bc: Added minDate, maxDate, isDateDisabled to DatePicker component

Patch Changes

  • Updated dependencies [ff24aa5]
    • @customerio/pluma-icons@0.5.0

1.39.0

Minor Changes

  • 54daca8: Added onClick to breadcrumb items

1.38.0

Minor Changes

  • 3ab082a: Add virtualized rendering to PlumaSelect

1.37.1

Patch Changes

  • 3aa827e: Prevent Ember Checkbox/Radio from changing state when not wanted

1.37.0

Minor Changes

  • c5a2994: Added isLoading prop to <Page::Body /> component
  • 4d20cbb: Added <PopoverPrimitive::Item/> component for creating navigable items inside popovers

Patch Changes

  • Updated dependencies [320ade6]
    • @customerio/pluma-icons@0.4.3

1.36.0

Minor Changes

  • 8ef1df3: Replace wordBreak sprinkle utility with overflowWrap sprinkle utility

Patch Changes

  • 63caa05: Extracts Yield internal utility for react
  • a215764: Extend PopoverPrimitive types instead of duplicating them
  • 81c127d: Prevent buttons from shrinking in flex wrappers

1.35.0

Minor Changes

  • 5af20f1: Add wordBreak and truncate sprinkle utilities

1.34.0

Minor Changes

  • 1c63973: Remove absolute positioning from form control error label

Patch Changes

  • e9b6566: Align actions to the right when responsively stacked
  • a1d890e: Align title/description with icon in banner

1.33.0

Minor Changes

  • 5c5aeda: Passing 0 to autoCloseTimeout in the snackbar should prevent it from closing automatically

1.32.0

Minor Changes

  • f7200c0: Add support for clearing all snackbars

1.31.0

Minor Changes

  • 6386b41: Renamed warning option in <Banner /> to caution

Patch Changes

  • c4fc506: Remove extra space around popover primitive trigger

1.30.2

Patch Changes

  • ffb705b: Remove extra space around popover primitive trigger

1.30.1

Patch Changes

  • 7f8266d: Add ability to create portable Snackbar API instance

1.30.0

Minor Changes

  • b8a1927: Creates the PlumaTag component
  • a037499: Added error and success variants to the snackbar
  • d86a66a: Added <PlumaEmptyState::Graphic /> for custom graphics

Patch Changes

  • 28215a8: Moved popover to use popover primitive

1.29.0

Minor Changes

  • a23d85b: Added statusIndicatorColor option to <Avatar />
  • 414ff13: Added shouldSubmitOnEnter to the TextArea component

Patch Changes

  • 902ec28: Minor type updates to the flex component
  • 1f7900c: Don't flex-shrink pagination component

1.28.0

Minor Changes

  • ea1a125: Added withResponsiveContainer to make inline banners responsive

1.27.0

Minor Changes

  • 006815b: PlumaTable: allow hover-highlighting only specific rows

Patch Changes

  • 14d3d87: Tooltip content text center-aligned on top or bottom placement, left-aligned for all other placements

1.26.1

Patch Changes

  • d7a93ab: Fix Tabs alignment (again)

1.26.0

Minor Changes

  • a42169a: Update border colors to match latest Figma state

1.25.0

Minor Changes

  • 0e4457f: Adds <Form /> component

Patch Changes

  • 5a6b5cd: Fix vertical alignment of Tabs in TabsList

1.24.0

Minor Changes

  • c077b15: Adds withOverlay option to disable overlays for drawers
  • 06f40ed: Table matches panel padding when inside of a panel
  • 85ca547: Add inline alignment option to Tabs
  • c0de8a3: Date components fall back to an em dash when given a falsy value
  • 4df7846: Add isUnderlined option to PopoverTrigger

Patch Changes

  • a28ef7d: Updated Panel component to have a padding of 20px

1.23.3

Patch Changes

  • 7fefe9f: Remove whitespace around Ember PopoverTrigger

1.23.2

Patch Changes

  • e415a6a: Improves styles for full screen pages

1.23.1

Patch Changes

  • 0382478: Improve React Select component performance

1.23.0

Minor Changes

  • 1ab3a3d: Add shorthand prop values for sizing on button group, button, progress bar, segmented control, select, text field, toggle button, and toggle

Patch Changes

  • ba2764a: Improve styles for isFullScreen in page component

1.22.2

Patch Changes

  • f2586f1: Fix bug where justify content didn't work on buttons

1.22.1

Patch Changes

  • 7837a68: Button content container does not expand past parent width

1.22.0

Minor Changes

  • 6055aba: Update workflow color tokens

1.21.3

Patch Changes

  • eff3174: Fix default alignInline value for PlumaInlineStack (change to "start")

1.21.2

Patch Changes

  • 09f2608: Use more stable references in Ember floating ui/contexts
  • 9a638bb: Apply floating-ui size middleware callbacks in rAF

1.21.1

Patch Changes

  • 91562e5: Fixed modal incorrectly positioned in ember

1.21.0

Minor Changes

  • 1959761: Add @style prop to all components to sidestep ember style attributes clobbering each other

Patch Changes

  • 1e9c72a: Fixes popover arrow border over dark backgrounds

1.20.1

Patch Changes

  • 7a29df2: Fix misalignment with text in SkeletonText component'
  • fe6c373: Open PlumaSelect on mousedown (instead of click)

1.20.0

Minor Changes

  • a47d5fa: Change styling to be subtler for skeleton components and added shouldAnimate option to disable animation

1.19.0

Minor Changes

  • 4b5b6cc: Added <Avatar /> component

1.18.1

Patch Changes

  • ed03547: Improve Ember context usage

1.18.0

Minor Changes

  • 6810742: Added shape prop to <LabelIcon /> component
  • 4974f15: Add <Drawer /> component
  • 4974f15: Added <PlumaModalPrimitive /> component

Patch Changes

  • ed11ec8: Adds autofocus attribute to TextField component

1.17.1

Patch Changes

  • 8fb878d: Restrict PopoverContent max height/width

1.17.0

Minor Changes

  • eedf309: Added truncate property to text components
  • d725b9f: Deprecated isError and replaced it with isDanger for the <Button /> component
  • e97ae74: Added <FormLayout /> component

1.16.0

Minor Changes

  • 8f38f00: Add cursor-based paging support to Pagination component

1.15.0

Minor Changes

  • 1ec60a3: Added <SkeletonShape /> component

1.14.0

Minor Changes

  • 3bac147: Support customized line widths for SkeletonText
  • 451940d: Add Emphasis and Strong components

1.13.0

Minor Changes

  • bfb1ba6: Added <SkeletonText /> component

1.12.3

Patch Changes

  • 7ccba64: Fix Search prop types to include Box types

1.12.2

Patch Changes

  • 8a60d75: adds an offset to useSnackbars().create method

1.12.1

Patch Changes

  • b9667d1: Fix Modal size argument in Ember

1.12.0

Minor Changes

  • 31d329f: Added a size option to <Modal /> component

Patch Changes

  • 26f0aa0: Adds the start of the PlumaPrimitive component

1.11.0

Minor Changes

  • b139098: Added onClick property for link component

1.10.0

Minor Changes

  • 2e71f83: Add component

1.9.0

Minor Changes

  • bcff4b8: Add "spaced" variant to ButtonGroup

Patch Changes

  • cc3ad85: Update ModalFooter to use spaced ButtonGroup
  • df6a42f: Use button groups for panel actions
  • 4ac48bd: Use button group for page actions
  • d8a35ba: Simplify ButtonGroup gap CSS variable setup

1.8.0

Minor Changes

  • 069b375: Added <ProgressBar /> component

1.7.0

Minor Changes

  • 0ebe75f: Added <Divider /> component

1.6.0

Minor Changes

  • 74264cb: Secondary links now are underlined by default and inherit the text color

Patch Changes

  • 75e4c4f: Fix flashing outline on <Select /> component when mixing keyboard and mouse navigation
  • c226400: Show help cursor when timestamp has tooltip
  • Updated dependencies [bd0b3c3]
    • @customerio/pluma-icons@0.4.0

1.5.1

Patch Changes

  • 90a0b61: Fix Select item indices when options are grouped

1.5.0

Minor Changes

  • b182b14: Add ability to disable individual options in Select component

Patch Changes

  • 7b0ca97: Fix typo in Snackbar types
  • 4520095: Never flex-shrink Icons
  • 11f0eac: Fix React List and ListItem prop arguments

1.4.1

Patch Changes

  • d599ee3: Publish pageHeaderTitleText class

1.4.0

Minor Changes

  • 9fcf231: Add more utility sprinkles

1.3.1

Patch Changes

  • d986ee9: Use consistent padding for floating components

1.3.0

Minor Changes

  • 618b0f1: Adds support for groups in the <Select /> component
  • edb903d: Remove currentIndex and originalIndex from custom components for <Select /> component
  • 2b533dd: Added <Search /> component

1.2.0

Minor Changes

  • 2c07104: Update ember-provide-consume-context

Patch Changes

  • 91e4f3a: Added space-450

1.1.1

Patch Changes

  • 8d8d262: Fix issue where pagination was not disabled if there were no items

1.1.0

Minor Changes

  • 0a57d2b: Adds the isLoading prop to <PlumaPage />

1.0.0

Major Changes

  • 0f76bde: - Added <PlumaPage/> component
    • Renamed <PlumaPageHeader /> to <PlumaPage::Header />
    • Renamed <PlumaPageHeader::Title /> to <PlumaPage::Header::Title />
    • Renamed <PlumaPageHeader::Description /> to <PlumaPage::Header::Description />
    • Renamed <PlumaPageHeader::Actions /> to <PlumaPage::Header::Actions />
    • Renamed <PlumaPageHeader::Breadcrumbs /> to <PlumaPage::Breadcrumbs />

0.15.1

Patch Changes

  • 245dcde: Removed padding from

0.15.0

Minor Changes

  • b97753d: Adds the component
  • 0ec5913: Added tabs property to component

0.14.3

Patch Changes

  • ba4ced1: Use react's synthetic events and change ember click handling

0.14.2

Patch Changes

  • 53fcea3: Fix autoLoading for react buttons

0.14.1

Patch Changes

  • 32223b1: Add loading state for PlumaButton

0.14.0

Minor Changes

  • 18d42b7: Add box-sizing to base reset before and after pseudo elements

0.13.1

Patch Changes

  • 66f059a: No longer disabling page size selection in any state

0.13.0

Minor Changes

  • 354c577: Added onPageSizeChange and pageSizes options to the Pagination component. Together these render a Select component to switch the size of the pages the user paginates through.

0.12.7

Patch Changes

  • f832c43: Fix Slider size in Firefox
  • 3595888: Minor performance improvement in Ember PlumaSelect

0.12.6

Patch Changes

  • Updated dependencies [a66591c]
    • @customerio/pluma-icons@0.3.0

0.12.5

Patch Changes

  • e1ef663: Do not allow href on a disabled link

0.12.4

Patch Changes

  • 49ec7dc: Add overflow and textOverflow to Label Text

0.12.3

Patch Changes

  • df7ad92: Add ToggleButton component

0.12.2

Patch Changes

  • 22615a4: Improved TextField customizability

0.12.1

Patch Changes

  • Updated dependencies [c5949a1]
    • @customerio/pluma-icons@0.2.0

0.12.0

Minor Changes

  • 76487c6: Add LabelIcon component

0.11.13

Patch Changes

  • 67bcb4b: Improve OptionCard styles

0.11.12

Patch Changes

  • dd24188: Update underlying pluma-icons dependency

0.11.11

Patch Changes

  • 8074f35: Add and export PlumaModalCloseButton component

0.11.10

Patch Changes

  • d70cb31: Allow null value for PlumaBanner icon

0.11.9

Patch Changes

  • 335d7c4: Fix Banner argument types

0.11.8

Patch Changes

  • 29cbaae: Add "disabled" text token to component arguments

0.11.7

Patch Changes

  • Updated dependencies [a60b9de]
    • @customerio/pluma-icons@0.1.0

0.11.6

Patch Changes

  • 87b9fd4: Fix TabNav exports in React
  • 32c413c: Add TooltipGroup component

0.11.5

Patch Changes

  • Updated dependencies [0197e0a]
    • @customerio/pluma-icons@0.0.14

0.11.4

Patch Changes

  • fc424c8: Add password visibility toggle to TextField

0.11.3

Patch Changes

  • 9a1a55d: Add more callbacks to PlumaModal

0.11.2

Patch Changes

  • ceaa8b8: Add Spinner and PageLoader components

0.11.1

Patch Changes

  • 3dfe38f: Only treat null/undefined in Select as "no value" state

0.11.0

Minor Changes

  • c95f716: Add option to uppercase/lowercase first letter of formatted time string

0.10.3

Patch Changes

  • 3733faa: Update Label and Badge heights

0.10.2

Patch Changes

  • a7e7612: Update Badge and Label left/right paddings to space-100

0.10.1

Patch Changes

  • a4c600f: Add vertical-align: middle to table cells

0.10.0

Minor Changes

  • 8b9edd5: Export and publish CSS variable and class names in CSS sub-import

0.9.8

Patch Changes

  • d1d5586: Fix row/column gap sprinkle class names
  • 4f44675: Update icons
  • Updated dependencies [4f44675]
    • @customerio/pluma-icons@0.0.13

0.9.7

Patch Changes

  • Updated dependencies [7ae914a]
    • @customerio/pluma-icons@0.0.12

0.9.6

Patch Changes

  • 65d81ec: Remove Floating UI React type imports from Ember components

0.9.5

Patch Changes

  • 5052beb: Fix initial render state in Ember Floating UI

0.9.4

Patch Changes

  • 27c4f6e: Add flex-shrink: 0 to label's status color dot

0.9.3

Patch Changes

  • Updated dependencies [7514216]
    • @customerio/pluma-icons@0.0.11

0.9.2

Patch Changes

  • 6ff0b6b: Fix Ember overlay settings

0.9.1

Patch Changes

  • cf8a6c5: Restrict popover size to prevent overflows outside viewport
  • cdbc20b: Add props for controlling overlay transition delays/animation durations

0.9.0

Minor Changes

  • 0c23aa7: Fix Ember PlumaOptionCard Title and Description components

0.8.5

Patch Changes

  • 75a434a: Fix Ember floating UI mouseenter bubbling
  • 0f18981: Panel improvements

0.8.4

Patch Changes

  • b8eaddf: Improve handling of nested floating elements in Ember

0.8.3

Patch Changes

  • b51eaa3: Fix Ember TabNav "isBorderless" argument

0.8.2

Patch Changes

  • Updated dependencies [6e25bb0]
    • @customerio/pluma-icons@0.0.10

0.8.1

Patch Changes

  • 571bf9a: Update space tokens
  • 809b42f: Add List component

0.8.0

Minor Changes

  • 78a5a11: Added a VisuallyHidden Input into Select to make it native web forms compatible.

0.7.1

Patch Changes

  • 61bdaf1: Add date formatting components

0.7.0

Minor Changes

  • 986eca4: Make Panel section borders optional

0.6.4

Patch Changes

  • dc62ce1: Add flex and flexBasis sprinkles

0.6.3

Patch Changes

  • 39d8af6: Add Slider component

0.6.2

Patch Changes

  • 7bfc27d: Wrap Tabs in flex container
  • d7e4ed6: Fix z index stacking when popovers/tooltips are nested

0.6.1

Patch Changes

  • 9496182: Add DatePicker component

0.6.0

Minor Changes

  • 52f49d1: Update tokens and components to match post-brand-refresh Figma state.

    This change introduces a few breaking changes. It modifies existing styles and changes the available props or variants on some components.

0.5.13

Patch Changes

  • c91f5e5: Add SegmentedControl component

0.5.12

Patch Changes

  • 2a25f2e: Add layout utility components

0.5.11

Patch Changes

  • a1944db: Add Tabs components

0.5.10

Patch Changes

  • 4514382: Update OptionCard styles

0.5.9

Patch Changes

  • Updated dependencies [fab2e0c]
    • @customerio/pluma-icons@0.0.9

0.5.8

Patch Changes

  • c8f184f: Add Pagination component

0.5.7

Patch Changes

  • 25b7620: Add aria-label to Breadcrumbs component

0.5.6

Patch Changes

  • 791f013: Add Breadcrumbs component

0.5.5

Patch Changes

  • 1a68b84: Remove default React PlumaProvider value

0.5.4

Patch Changes

  • 54dcb07: Make isolation class on provider optional

0.5.3

Patch Changes

  • 0f9aa5c: Fix isolate class on Ember provider

0.5.2

Patch Changes

  • 29ec761: Create separate stacking contexts for each provider and portal

0.5.1

Patch Changes

  • 0970971: Create Select component

0.5.0

Minor Changes

  • cf38319: Rename Ember class and signature exports

Patch Changes

  • 37e1d62: Add Floating UI list components to Ember

0.4.12

Patch Changes

  • ad830fb: Update typography prop types and docs

0.4.11

Patch Changes

  • 802646a: Update PlumaProvider prop type doc

0.4.10

Patch Changes

  • fe78580: Add typography utility components

0.4.9

Patch Changes

  • da95535: Document Box component and sprinkles utilities

0.4.8

Patch Changes

  • a043475: Add Table component

0.4.7

Patch Changes

  • 13ae73e: Fix an icon style not being wrapped in CSS layer

0.4.6

Patch Changes

  • Updated dependencies [19d9827]
    • @customerio/pluma-icons@0.0.8

0.4.5

Patch Changes

  • e6cc4d7: Add VisuallyHidden utility component

0.4.4

Patch Changes

  • b44f287: Add Modal component

0.4.3

Patch Changes

  • ba416b5: Add FloatingPortal Ember component

0.4.2

Patch Changes

  • 3bad8eb: Update secondary button style

0.4.1

Patch Changes

  • e0d9e87: Add Snackbar component

0.4.0

Minor Changes

  • aad06e9: Brand refresh tokens update

0.3.15

Patch Changes

  • 68e342b: Release new tokens package versions

0.3.14

Patch Changes

  • d2e93ae: Add Banner component

0.3.13

Patch Changes

  • 8ac87ed: Add OptionCard component

0.3.12

Patch Changes

  • b76831f: Add Popover component

0.3.11

Patch Changes

  • 4e86fee: Fix Toggle CSS selector

0.3.10

Patch Changes

  • 95f51fd: Fix incorrect pseudo selector in Toggle

0.3.9

Patch Changes

  • ebafcdc: Make Link button read legacy prop from context

0.3.8

Patch Changes

  • d760c7d: Update Label and Toggle tokens

0.3.7

Patch Changes

  • 149f780: Add Badge component

0.3.6

Patch Changes

  • fee082b: Refactor form components (use shared internal components)
  • 15cfb2c: Add TextArea component

0.3.5

Patch Changes

  • 10718a0: Add Toggle component

0.3.4

Patch Changes

  • f9b4a28: Add ButtonGroup component

0.3.3

Patch Changes

  • 44a43a5: Fix Link wrapping when rendered as button
  • f6b6e63: Update Radio component

0.3.2

Patch Changes

  • 9da045d: Add Checkbox component

0.3.1

Patch Changes

  • de1fa26: Fix Radio class name

0.3.0

Minor Changes

  • f77e29f: Update tokens to latest values

Patch Changes

  • 894a7c1: Add Radio and RadioGroup components
  • cb739be: Add Panel component

0.2.2

Patch Changes

  • 2b6466d: Update build configs
  • 05976c3: Add atoms utilities

0.2.1

Patch Changes

  • af8aa47: Update docs to use frontmatter, add "family" prop to Text component

0.2.0

Minor Changes

  • 06cec0e: Add Link component

0.1.4

Patch Changes

  • ba1c5fe: Add CSS @layers

0.1.3

Patch Changes

  • 85da927: Reorder PlumaBox imports (put them first)
  • 0e62523: Add Tooltip component

0.1.2

Patch Changes

  • df9901c: Add TextField component

0.1.1

Patch Changes

  • 0a55e9c: Update Label styles

0.1.0

Minor Changes

  • d696a99: Generate meaningful CSS class and variable names

0.0.26

Patch Changes

  • fa2ff55: Update React build

0.0.25

Patch Changes

  • 84a5d4b: Add Label component

0.0.24

Patch Changes

  • 5ee1306: Update ember-provide-consume-context

0.0.23

Patch Changes

  • e7c59c9: Change ember app re-exports to not include index.js

0.0.22

Patch Changes

  • Updated dependencies [208602c]
    • @customerio/pluma-icons@0.0.7

0.0.21

Patch Changes

  • Updated dependencies [b4d57e8]
    • @customerio/pluma-icons@0.0.6

0.0.20

Patch Changes

  • Updated dependencies [eda609b]
    • @customerio/pluma-icons@0.0.5

0.0.19

Patch Changes

  • 24bebbf: Update to @storybook/test

0.0.18

Patch Changes

  • ab00d54: Fix small button size

0.0.17

Patch Changes

  • 86c34ff: Implement Button spec
  • Updated dependencies [e38740d]
    • @customerio/pluma-icons@0.0.4

0.0.16

Patch Changes

  • Updated dependencies [25c5b85]
    • @customerio/pluma-icons@0.0.3

0.0.15

Patch Changes

  • 8bf16b8: Build more tree-shakeable output

0.0.14

Patch Changes

  • f623c02: Add icon documentation
  • Updated dependencies [f623c02]
    • @customerio/pluma-icons@0.0.2

0.0.13

Patch Changes

  • 97463e9: Move type-fest to dependencies

0.0.12

Patch Changes

  • 084aebb: Don't export pluma theme create functions

0.0.11

Patch Changes

  • 0c97204: Improve PlumaProvider and theming
  • 7568e7c: Update ember-context package
  • 682e100: Fix package.json typesVersions
  • 506a181: Add more exports from CSS package

0.0.10

Patch Changes

  • a7b0998: Remove postinstall script

0.0.9

Patch Changes

  • ce255c6: Add Storybook and testing configuration
  • 3f9b19e: Add icons package and components
  • 5a279bb: Update packages to consume new tokens correctly
  • Updated dependencies [3f9b19e]
    • @customerio/pluma-icons@0.0.1

0.0.8

Patch Changes

  • 1e5b041: Use gts in Ember component addon

0.0.7

Patch Changes

  • 0eadd6a: Add docs scaffolding

0.0.6

Patch Changes

  • f6bbc20: Add Text component, and background color option to Box

0.0.5

Patch Changes

  • 7ddae22: Make sprinkles utility-only
  • ed07bfe: Rename "component" argument to "as"

0.0.4

Patch Changes

  • 92dcc99: Make vanilla extract packages dependencies (not devDependencies)

0.0.3

Patch Changes

  • 420c891: Add missing .d.ts file path for css package
  • 918a432: Fix incorrect React .d.ts file path

0.0.2

Patch Changes

  • 272b9cd: Add Box and Button components, and utility Sprinkles

0.0.1

Patch Changes

  • @customerio/pluma-js@0.0.4

Jump to release