v1.1.0
27 July 2026
- Add eight components consolidated from downstream repos:
ButtonGroup(a segmented control, generalized from the hand-rolled ones those repos each grew),Toast,ConfirmDialog,DraggablePane,FullscreenButton,Footer,ContributorListandLiteYouTubeEmbed - Add
portal,contrast_colorandforward_window_keydownattachments, bringing the total to thirteen - Add headless modules behind their own subpaths:
svelte-widgets/toast-queue,/dialogs,/fullscreen,/clipboard,/print,/file-dropand/text-search, the last matching across inline markup wherehighlight_matcheswalks text nodes one at a time. It skipsscript,styleandnoscriptso a find-in-page never steps onto text that renders nowhere, and treats text either side of one as continuous - Add shortcut rebinding for "customize shortcuts" UIs:
event_to_combo,normalize_comboandsanitize_shortcut_overridesturn a keydown into a canonical combo and resolve collisions - Add sections to
ContextMenu:actionsacceptsCmdSectionentries rendered as an ARIAgroupofmenuitemradioitems with a selected value per section - Add a
create_highlighter(grammars)factory and asvelte-widgets/live-examples/create-highlightersubpath, so consumers can pick their own grammars without the barrel's eager top-level await of 34 grammars - Consolidate
icon_datafrom 25 to 143 entries using matterviz's curated paths.Iconnow supports fill/stroke glyphs and multi-element SVG markup. The name lookup still ships the full 56 kB raw map with any icon, so tree-shaking remains worth revisiting - Add a
togglesnippet toDraggablePane, so a consumer can put any icon in the toggle button while the component keeps the button and its anchor geometry.open_icon/closed_iconare typed to the bundledIconNames, which left no route to an icon this package doesn't ship, andicon_stylesizes the bundled one without reaching for the snippet at all. The pane carriestoc-excludenow, keeping headings in floating chrome out of a page'sToc, andpane-openwhile it is open, which is what a page needs to style around a pane it does not own - Add an
option_suffixsnippet toButtonGroup, rendered as a sibling of each button rather than inside it, so an option can carry a trailing link without nesting interactive content in a<button>. The wrapper element only appears when the snippet is supplied, so existing.options > buttonselectors keep matching. Adds--btn-group-justify-content,--btn-group-btn-cursor,--btn-group-btn-hover-color,--btn-group-btn-hover-transformand--btn-group-btn-transition, andtooltip_optionsfor consumers whose option tooltips are rich text - Add
dismissandtriggertoContextMenu.dismissmerges over the default{ escape: true }and reaches the wholeclick_outsideconfig, so a trigger that toggles can ask fordismiss_on: 'release'instead of being closed by its own press.trigger: 'none'installs no right-click handler at all, for a consumer drivingatitself - Add
root,on_escapeandrecapturetofocus_trap.rootfollowsclick_outside'sscopeshape and is resolved per keystroke, so a trap can cover an inner dialog while a sibling backdrop stays out of the Tab cycle.on_escaperegisters on the existing layer stack, so a trap inside a modal closes only itself. All three are opt-in - Add a configurable priority ladder to the toast queue:
create_toast_queue({ priorities })takes an ordered list and every type is generic over it, so a consumer's own tiers rank correctly instead of falling below everything. An unknown priority now throws rather than ranking-1, andcreate_toast_queuetakes an options object instead of a baremax_pending - Add
sideEffectsto the manifest, listing onlydist/index.js, which patchesElement.prototype.scrollIntoViewIfNeededon import. Every other module is pure, so a bundler can now drop the components a consumer never imports instead of keeping the whole barrel - Add an
svelte-widgets/iconssubpath and re-exporticon_dataandIconNamefrom the root.IconNametypes the public props ofIcon,ButtonGroup,DraggablePaneandFullscreenButton, but no export let a consumer name it - Drop
vite-plusfrompeerDependencies. It appears in no emitted JavaScript, only as twoimport typelines invite-config.d.ts, and the sole thing referencing it issvelte-widgets/vite-config, which nobody can use without already depending on vite-plus - Fix
parse_shortcutnever resolving themodtoken, which madematches_shortcut(event, 'mod+z')match a barezwith no modifier held. Onlyrun_hotkeyswas unaffected, since it pre-resolved at the call site. This also makesspacematchable for the first time - Fix
highlight_matchesandhighlight_rangesoverwriting each other when they share a CSS highlight name. They keep one store now, so the name holds the union of their ranges until the last owner releases - Fix
svelte-widgets/Toast.sveltefailing to resolve its store when installed from npm: the packaging step rewrote.tsimport specifiers in.jsand.d.tsfiles but not in.sveltefiles - Fix
MultiSelect,Masonry,Popover,ContextMenu,LiteYouTubeEmbedandNavrenderingclass="[object Object]"when handed a class. Svelte types the attribute as aClassValue, so an array or a{ active: true }object is legal, but these interpolated it into a string. They pass it to Svelte's own clsx pass now - Fix
Masonrysilently dropping its virtualization when a consumer passesonscroll: the prop spread sat after the component's own handler and replaced it, leaving the rendered window frozen at the top of the list however far down the user scrolled.LiteYouTubeEmbedhad the mirror image, spreading first and so discarding a consumer'sonclick. Both chain the two handlers now - Full Changelog: v1.0.0...v1.1.0