Skip to content

0.15.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 15:16
· 84 commits to development since this release

Features

  • [Breaking] Legacy theme variable fallbacks removed — a theme that still sets --bg-control-neutral-hover, --stroke-focus-black or --bg-control-accent-gradient-* now falls back to the kit's default colour; rename them to --bg-control-neutral-hover-muted, --stroke-focus and --bg-gradient-* (#913) — see migration guide
  • [Breaking] Slider (2.0) redrawn — a 12px accent thumb with a hover, focus and drag halo over an accent-tint track; the props are unchanged, so typecheck will not flag it (#918) — see migration guide
  • SchemaRenderer (2.0) added — the JSON Schema form rebuilt from 2.0 controls only, keeping the 1.0 props except jsonEditorTheme, with real toggle-button section headers, a name on every control, and a monospace Textarea instead of Monaco for values the schema does not describe (#920)
  • AutocompleteTagInput (2.0) added — a tag field that suggests values while typing and still accepts free text, on the ARIA combobox pattern; openOnFocus lists every remaining suggestion as soon as the field is focused (#916, #925, 2c9b255)
  • Breadcrumbs (2.0) added — a one-line trail whose segments truncate behind EllipsisTooltip and whose middle collapses into an overflow menu past maxVisibleItems; BreadcrumbsSize.Heading serves a path that doubles as the page title (#885, #886)
  • FilterChips (2.0) added — a chip-shaped single-select filter row of aria-pressed toggles, the sibling of Tabs and SegmentedControl, with stretch for equal-width chips (#883)
  • FileIcon, FileName, FolderName and SharedEntityIndicator (2.0) added — the file-manager row pieces with the new per-kind file glyphs, theme-token colours and names such as "PDF file, shared" (#894)
  • TransferQueue (2.0) added — the floating upload, download, import and export status panel, generic over { id, name, status } items, replacing the conversation panel's ImportExportQueue (#896)
  • BottomSheet and SideDrawer (2.0) added — a bottom-edge sheet and an inline-end drawer on the same Floating UI focus, dismiss and scroll-lock pieces as Popup, with style, overlayStyle and headerClassName for themes delivered as var(--…) (#908, #909, #911)
  • Avatar and Badge (2.0) added — an image-or-initials avatar coloured from its name (with the exported extractInitials), and a static 24px label in an outlined or a filled BadgeColor variant (#906, #907)
  • EntityIdentity (2.0) added — the identity block of a DIAL entity (icon, coloured type label, name and version, with optional featured chip, status and footer), plus a new EntityType enum (#914)
  • StarterButton (2.0) added — the outlined conversation-starter pill with gradient-stroked icons, drawing a sparkles icon by default; iconBefore={null} gives a label-only pill (#905, #921)
  • Public class names on every 2.0 component — each stamps a stable, declaration-free class from the exported DIAL_KIT_CLASS record on the element that draws it, so a host can restyle parts the props do not reach without selecting on hashed locals, DOM order or aria-label (#882)
  • --z-overlay stacking token — the overlay layers become z-popup, z-floating, z-interactive-tooltip and z-tooltip, derived from one variable that defaults to today's 52, so a host can lift every kit overlay at once (#889)
  • Dropdown listStyle and Popup overlayStyle (2.0) — inline styles on the portalled panel and backdrop, so var(--…) values reach menu rows and Floating UI's inline overflow can be overridden (#889, #926)
  • Slider (2.0) — showTooltip, showTicks, leftContent and rightContent slots, and showValueInput for a synced 24px NumberInput after the track (#918, #925, #927)
  • Tabs (2.0) — TabOrientation.Vertical draws a settings-page rail driven by ArrowUp and ArrowDown and named by sectionLabel; tabListClassName reaches the tablist, and the selected tab carries dial-kit-tab-selected (#885, #886)
  • InteractiveTooltip (2.0) — trigger={InteractiveTooltipTrigger.Click} opens the panel on click or tap, so an info chip works on mobile, where the hover panel renders nothing (#924)
  • Notification (2.0) — action slot renders a control such as "Try again" at the inline end, inside the live region, instead of packing it into message (#890)
  • Select (2.0) — collapseTagOverflow keeps a multi-select on one row and folds the tags that do not fit into a +N tag whose tooltip lists them (#912)
  • InlineSelect (2.0) — triggerClassName, triggerLabelClassName, onOpenChange, a controlled open and listStyle, so a styled pill trigger and a popover that owns Escape can both use it (#902, #904)
  • ButtonDropdown (2.0) — dropdownProps forwards listClassName and matchReferenceWidth, so a short button's menu no longer has to be as narrow as the button (#899)
  • Accordion (2.0) — caretPosition puts the caret before the title (AccordionCaretPosition.Start) or after it, the default (#897)
  • Calendar (2.0) — showTimezone labels time and datetime fields with the viewer's timezone (through the exported getTimezoneLabel), and onBlur fires when the time input loses focus (#879, #881)
  • MarkdownEditor and DialMarkdownEditor — showDragbar={false} hides the bottom resize grip without overriding .w-md-editor-bar (#922, #923)
  • Grid (2.0) restyled to the 2.0 design — a 1px header divider, hovered and selected rows outlined and tinted with new -subtle accent tokens, and caps column titles; visual only (#915)
  • DialSchemaRenderer — an unschematized additionalProperties entry gets a type selector and JSON editing for objects and arrays, instead of rendering "[object Object]" (#884)
  • DialFileManager — skipForbiddenSymbolsCheckForActions keeps every row action for names with forbidden characters, and additionalGridOptions can now set rowHeight and headerHeight (#891, #895)

Fixes

  • Button and IconButton (2.0) — a disabled button with a tooltip renders aria-disabled="true" instead of disabled, so the tooltip opens for mouse and keyboard users while the click stays swallowed (#901)
  • Dropdown and Select submenus open from the keyboard (ArrowRight, Enter or Space, mirrored in RTL) with arrow, Home and End navigation inside, and close when their menu or the page scrolls (#893, #913)
  • Select and Dropdown (2.0) rows sit 2px apart with the same 8px vertical inset in every list and submenu, and keep their 40px height when the panel is capped (#892, #912)
  • Select (2.0) multi-select tags are the design's 24px field chip, so one row of tags fits the 40px field (#912)
  • Accordion (2.0) — the caret mirrors in RTL and the panel animates open and shut; collapsed content now stays mounted and inert, so render it conditionally if you relied on it unmounting (#898)
  • Input, Textarea and RadioGroupPopupField keep their error border on hover and draw the focus ring in error-alpha, and a TagInput holding tags stays 40px tall (#910)
  • MarkdownEditor (2.0) — the live preview takes kit tokens instead of GitHub's stylesheet (a full-height divider, no white patch in dark themes, list markers and task boxes restored), and the panes swap sides correctly in RTL (#887)
  • InlineSelectTrigger (2.0) — a caller's className merges with the trigger's own classes instead of replacing them, dial-kit-inline-select included (#902)
  • Notification (2.0) — the close button stays on the first line of a multi-line toast and keeps its 24px box (d3a7f19)
  • Textarea (2.0) — invalid no longer reaches the DOM, ending React's non-boolean attribute warning (#920)
  • ConfirmationPopup (2.0) — the Danger variant no longer draws a 4px red top border (#913)
  • DialSchemaRenderer — required-field errors quote the label ("API key" is required); tests asserting the old text need the quotes (#900)

Other

  • Dependencies refreshed — ip-address and @modelcontextprotocol/sdk updated in the lockfile, the dompurify override raised to 3.4.16, and the .trivyignore CVE waivers removed; the published dependency and peer ranges are unchanged (#903, #913, #917, b56b00a)