Skip to content

Releases: Cratis/Components

Release v4.25.0

Choose a tag to compare

@github-actions github-actions released this 02 Oct 09:31
b0d197f

The toolbar folder can now open as a headed drawer of labeled tiles, and a new @cratis/components/ConfigurationEditor entry point provides the controls for configuring a component.

Added

  • ToolbarFolder presentation='drawer': a visible heading, a close button and labeled icon tiles driven by a host-supplied items catalogue and/or ToolbarButton children. Tile payloads are delivered unchanged on activation and on drag, disabled tiles stay focusable with a reason, and the drawer flips and shifts to stay inside the viewport. The icon-only grid and list presentations are unchanged. (#358)
  • OrderedItemEditor: edits an ordered collection of items with a label, an icon and a destination. It lists locked fixed items separately, enforces per-operation and per-field capabilities, validates entries, and reorders by dragging, with the handle's arrow keys, or with labeled move buttons while keeping focus and announcing the new position. The icon field is the Components icon picker, fed by an iconCatalog and restricted by allowedIcons, with renderIconField as an override. (#358)
  • PropertyControls: text, number, on/off and choice controls described by host descriptors in titled groups, for flow, grid-placement, freeform-placement and responsive settings. (#358)
  • ConfigurationEditorProvider, ConfigurationEditor and useConfigurationEditor: register a component-specific editor under a host-defined component type, with generic controls as the fallback. (#358)
  • messages.toolbar.closeDrawer on CratisComponentsProvider for the drawer's close button, and styling parts for the drawer and both editors.

Fixed

  • The icon picker's provider name on a selected tile now meets the 4.5:1 contrast ratio.

Release v4.24.0

Choose a tag to compare

@github-actions github-actions released this 02 Oct 08:19
f5de427

Added

  • IconPicker in @cratis/components/IconPicker: a controlled icon property control whose closed trigger shows the selected glyph and name and whose popout offers search by name, tag and alias, category groups with Show all, and library filtering over a host-supplied catalog. (#359)
  • Selections are qualified library, key and optional variant values, so the same icon name in two libraries stays distinct. A selection missing from the catalog is shown by its raw identity with a warning instead of being replaced. (#359)
  • Read-only, disabled and allowed restrictions that never emit an unauthorized change, plus loading, empty, no-results and provider-failure states. (#359)
  • Lazily drawn previews, a library credit line, a contained sheet on narrow viewports, keyboard navigation with focus return, and stable data-cratis-part styling parts with an IconPicker/styles stylesheet. (#359)

Release v4.23.1

Choose a tag to compare

@github-actions github-actions released this 02 Oct 00:11
e853686

Fixed

  • Builds of apps using Components no longer fail with a missing observeTimeline export from motion-dom. When upgrading, remove any resolutions or overrides from the workaround that pin motion-dom to 13.2.0 or motion-utils to 13.0.0: framer-motion 13.5.0 requires animateElement, which motion-dom 13.2.0 does not export. (#390)

Release v4.23.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 18:14
e9f644a

Added

  • MarkdownEditor (@cratis/components/MarkdownEditor): a markdown editor with a formatting toolbar, keyboard shortcuts, a write/preview toggle and file uploads, styled through --cratis-* tokens and pt parts (part of Cratis/Direct#1275)
  • Configurable completion for MarkdownEditor: give it trigger characters or patterns (for example #) and a callback that returns suggestions. The editor shows the list and inserts the chosen item (part of Cratis/Direct#1275)

Release v4.22.1

Choose a tag to compare

@github-actions github-actions released this 01 Oct 12:40
04a8506

Fixed

  • The dark theme maps --color-error to the lighter red the field outline already uses and --color-error-bg to a deep red, so a field's validation message and Arc's command exception panel reach the WCAG AA 4.5:1 contrast on the dark surfaces instead of about 2.5:1. Every explicitly light root or subtree keeps the original red on a light background, including a light subtree under a root that is dark only because of the system setting. (#388)
  • The README setup imports the stylesheets from a CSS entry file with @import, and documents the ambient declarations a TypeScript project needs to import them from TypeScript, so the documented setup type-checks on TypeScript 6 (TS2882). (#387)

Release v4.22.0

Choose a tag to compare

@github-actions github-actions released this 30 Sep 12:57
e65d383

Added

  • Message accepts live={false} to render without its alert/status role, so it can be composed inside an existing live region without being announced twice (#385)

Release v4.21.1

Choose a tag to compare

@github-actions github-actions released this 29 Sep 12:10
c82ea70

The renderer adapters and Conformance now install on Node.js 22, and the migration guide describes how adapter versions pair with @cratis/components.

Fixed

  • @cratis/components.mui, @cratis/components.primereact, @cratis/components.primereact10 and @cratis/components.conformance declared engines.node >=23.0.0, so npm and pnpm with engine-strict refused to install them on Node.js 22, a maintained LTS release. They now declare >=22.0.0. CI installs each adapter on Node.js 22 with engine-strict on. (#371)
  • MIGRATION.md said the adapters declare a @cratis/components >=4 <5 peer range. Each published adapter and Conformance release requires exactly the @cratis/components version it was released with, so install and upgrade them together. (#370)

Release v4.21.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 07:41
b0e00d8

Toolbars can offer a single Tab stop, chat hosts can add their own content to messages and the sidebar header, and DataTableCore can have its sort, filter and search state controlled by the host.

Added

  • ToolbarFocusMode.SingleTabStop for Toolbar and ActionMenubar implements the WAI-ARIA toolbar pattern. The toolbar's own tools share one Tab stop, which starts at the first available tool, moves with the arrow keys and returns to the last focused tool. When that tool is disabled, hidden or removed, the Tab stop moves to the next available tool. Controls you add yourself, widgets such as inputs, tools rendered outside the toolbar's markup (for example through a portal), and tools with an explicit tab index keep their own Tab stop. Arrows remains the default until the next major release. (#353)
  • ChatConversation.renderMessageExtra renders your content under a message body, for example reactions or a notice that a reply failed. ChatSidebar forwards it. (#194)
  • ChatSidebar.renderHeaderActions renders your content between the sidebar title and its close button, and receives the open topic. Neither slot adds markup when you leave it unset. (#194)
  • DataTableCore accepts sort with onSortChange, filters (reported through the existing onFilter), and globalFilter with onGlobalFilterChange, so the host can own that state. When a value is left undefined, the table keeps managing it as before. Set rowProcessing={DataTableRowProcessing.None} to render rows exactly as given when the source has already filtered and sorted them. DataTableSort, DataTableSortDirection and DataTableRowProcessing are exported from @cratis/components/DataTables. (#178)

Closes #353, closes #194. Refs #178.

Release v4.20.0

Choose a tag to compare

@github-actions github-actions released this 28 Sep 21:33
e54484e

Chat topic lists can offer per-topic actions, and applications no longer need to install tsyringe themselves.

Added

  • ChatTopicList and ChatSidebar accept topicActions: labeled buttons next to each topic, such as Rename, Pin or Archive, with an optional isAvailable check per topic. Each button's accessible name includes its topic, the buttons can be reached with the keyboard, and activating one does not open the topic. When an action hides itself or removes its topic, focus moves to that topic, to the topic that took its place, or to New topic, unless your handler already moved focus. ChatSidebar's existing actions prop still means message actions. Topics without actions render as before. The ChatTopicAction type is exported. (#206)

Changed

  • tsyringe is now an optional peer. Components never imports it, and Arc React installs it as its own dependency, so you no longer need to install it yourself. reflect-metadata stays a required peer: keep installing it and importing it at your entry point. The package check now fails if a published file imports either package. (#248)

Closes #206, closes #248.

Release v4.19.2

Choose a tag to compare

@github-actions github-actions released this 28 Sep 20:44
22889bd

Published JavaScript and declaration files now ship working source maps.

Fixed

  • Source maps survive the build step that rewrites relative ESM import specifiers. Before, every rewritten .js and .d.ts file lost its map. JavaScript maps now embed their original sources, so stack traces and debuggers show the component source. Declaration maps keep go-to-definition working wherever the sources are available, such as linked or monorepo checkouts. The package grows from about 723 KB to about 1.0 MB, all of it source maps; production bundlers ignore them. (#213)
  • A packed-package check verifies the maps of every file the build rewrote: the exact source positions after each edit, that no stale map is left, and TypeScript's go-to-definition. (#213)

Closes #213.