Changelog

v3.0.11

  • CI/CD moved from GitLab CI to GitHub Actions, with separate Pages deployment and npm publish workflows for the GitHub repository.
  • Lib docs Pages deployment now targets the nmorph.dev custom domain with root-relative assets.
  • NmorphButton now aligns text-only default slot labels the same way as the text prop, while plain buttons avoid the nmorph-only vertical text offset.
  • NmorphGuide bordered cards now draw the border around the whole tooltip popup and hide the pointing triangle when the border is enabled.
  • NmorphTooltip now supports contentClass and hideTriangle so composed feedback components can style the popup surface directly.

v3.0.10

  • NmorphGuide now supports bordered to add a visible border around the default guide card.
  • Default guide action buttons now use the plain button design for cleaner in-card controls.

v3.0.9

  • Component Storybook stories and Vitest specs now live next to their components, with shared Storybook utilities and Vitest coverage for co-located src/**/*.spec.ts files.
  • Public component barrels now export more prop and helper types consistently, while emoji sources moved under NmorphEmojiPicker and keep the same package emoji entrypoints.
  • Lib docs examples were refreshed across the component catalog, old docs generators were removed, and docs clean now uses a cross-platform Node helper.
  • Root dev scripts now use the shared dev-open helper from the repository root, docs and sandbox use the Vue devtools stub, and Storybook scripts call the Storybook CLI directly without the wrapper folder.
  • Button, Empty, ColorPicker, TimePicker, Tabs, MediaTile, Table, Image loading slots, and related docs examples received focused visual and API polish.

v3.0.8

  • Legacy docs tooling and package metadata were cleaned up: stale generators and unused docs dependencies were removed, NmorphImage loadingText was replaced by the loading slot docs, and component prop types now export consistently through the public barrels.
  • NmorphMediaTile now exposes design and aspect props, including aspect="fill" for parent-sized call tiles while keeping the default 16:9 video layout.
  • NmorphCarousel now loops through cloned edge slides for seamless forward/back navigation, with corrected left/right controls and sandbox arrow styling.
  • NmorphNotificationProvider now teleports to body by default and uses the shared z-index manager so notifications layer above docs shells and overlays consistently.
  • Docs API tables now keep slots, exposes, events, and translations inside their container, while examples polish dropdown spacing, stacked tabs, borderless stepper arrows, and icon currentColor handling.

v3.0.7

  • NmorphMediaTile now binds srcObject streams to media elements immediately for WebRTC, keeps unmuted remote audio on a stable dedicated audio element, mutes the paired video output, and reports autoplay failures in development.
  • NmorphPagination can reserve a fixed container with width and min-width controls, and docs loading examples keep stable skeleton card space while content arrives.
  • NmorphTable now types bordered as a plain-design-only prop and renders plain bordered tables with cleaner single borders and intact rounded corners.
  • NmorphDrawer now animates open and close transitions, and the sandbox includes the same drawer example shown in lib docs.
  • NmorphImagePreview keeps image scale and rotation per preview image while the component is mounted, docs split Guide Step into its own page, and docs examples received overlay, table, translation, and icon polish.

v3.0.6

  • NmorphMediaTile now splits unmuted MediaStream audio into a dedicated audio element for srcObject streams, keeps video muted for stable autoplay, applies sinkId to both elements, calls play for video and audio, and tracks addtrack/removetrack updates.
  • Docs hydration is more stable: API table column slots now render outside table bodies, theme switching has a matching SSR default, and right-side Contents navigation is registered from component metadata instead of client-only DOM scanning.
  • NmorphVideoPreview now keeps its loading/error state as an overlay to avoid reload artifacts, and audio/video play controls no longer render the extra glowing shadow.
  • Compact loading NmorphFileCard layouts now reserve cleaner action space, keep the inset card surface, and docs show loading file cards on their own row.
  • Lib docs now show a first-load progress card in the main shell, use paper cards across more pages, add copy buttons and multiple package-manager install snippets in the guide, and polish icon/list examples.

v3.0.5

  • NmorphCard now supports a built-in paper texture through paper, and docs card examples use a consistent paper strength for the same tactile surface.
  • NmorphMediaTile now keeps remote audio playing in audio-only videoOff streams, avoids duplicate playback when video is visible, respects muted, and can route media through sinkId when the browser supports setSinkId.
  • Lib docs now use shared paper cards for the main shell, header, footer, overview, guide, about, changelog, and examples, with a real search button that aligns the Ctrl K shortcut cleanly.
  • Docs API tables and examples were refreshed for Card paper, Image frame borders and loading states, MediaTile sinkId, Pagination loading, Scroll, Tooltip, Guide, and related component props.
  • Polished component interaction details across scroll, pagination, carousel, guide, tooltip, stepper, time picker, file upload, and media previews, including the filled hand icon update.

v3.0.3

  • Docs now use the shared NmorphLayout shell with floating header/footer cards, aligned aside/content padding, a GitHub topbar icon, and an overlay search dialog that closes after selecting a result.
  • Component overview cards now use richer visual previews, tighter example padding, visible shared code scrolling, cleaner highlighted snippets, and refreshed media/file-card artwork.
  • NmorphImage now renders a loader icon while images load; loadingText is deprecated in favor of the loading slot, and docs examples no longer show textual loading states.
  • NmorphMediaGallery trigger cards now support content-aware triggerLayout modes, triggerClass/triggerStyle on the trigger container, thumbnail fit controls, item aspectRatio, itemClass/itemStyle, trigger item callbacks, and open the preview at the clicked item index.
  • NmorphScroll now keeps nested horizontal scrolling from also driving the outer vertical scroller, docs scroll examples use y-gap consistently, and NmorphProgress indeterminate starts from the edge without a center jump.
  • NmorphAudioPreview now uses a solid play surface and a clearer external-link action, while NmorphBacktop plain controls render without the extra border.

v3.0.2

  • NmorphAvatar now supports borderless plain avatars through borderless, keeping design="plain" bordered by default.
  • NmorphBadge type="tag" now supports the value slot for compact icon badges while preserving text fallback behavior.
  • NmorphImagePreview and NmorphMediaGallery preview controls now use borderless plain buttons with the same overlay background as Backtop.
  • NmorphImagePreview and NmorphMediaGallery now render preview images with plain image surfaces to avoid extra nmorph edges.
  • NmorphIconHand now uses a thinner outline-only hand glyph without a filled shape.

v3.0.1

  • NmorphButton now supports borderless plain buttons through borderless, keeping design="plain" bordered by default.
  • NmorphMediaTile now supports show-status to hide the bottom-right status overlay without changing video-off fallback behavior.
  • NmorphSelectButton now uses a single custom-thickness prop to override the selected thickness, replacing separate public item sizing props.
  • Added NmorphIconMuteSpeaker, kept NmorphIconSpeaker in the public icon set, and kept NmorphIconSpeakerOff as a compatibility alias.
  • NmorphMediaTile fallback avatars now render with the plain avatar surface for cleaner call tiles.

v3.0.0

  • Breaking: surface design values now use design="plain" instead of design="common" across Empty, Backtop, SkeletonItem, Table, TagList, and TagItem.
  • Breaking: NmorphButton, NmorphCheckbox, NmorphCheckboxGroup, NmorphRadio, and NmorphRadioGroup now use design="nmorph
  • Breaking: input-like form controls no longer expose a design prop; design remains available only for Checkbox, CheckboxGroup, Radio, and RadioGroup selection controls.
  • Breaking: component size preset props are now named thickness instead of height across Button, form controls, selection controls, Pagination, CollapseItem, TagItem, and related option data.
  • Thin native input text now uses the component height as its line box, improving optical vertical centering without changing swipe, click, or layout behavior.
  • Shared component height classes now define control font size and line height, keeping thin/basic/thick text sizing consistent across compact controls.
  • Added foundation typography tokens, NmorphText, and role-based component text styles for consistent text sizing across the library.
  • Plain buttons, dropdowns, selection controls, and data surfaces now use a visible border.
  • Breaking: component-level CSS variables are now private internals. Component customization moves to explicit props, while public CSS variables are reserved for theme and foundation tokens.
  • NmorphStepper no longer throws on pointerup for a single-item, non-interactive stepper while preserving swipe behavior and drag click suppression.

v2.2.59

  • Added NmorphGuide and NmorphGuideStep for coordinated tooltip-based walkthroughs with images, grouped targets, and previous/next controls.
  • Added NmorphStepper, a controlled horizontal stepper that shows one item at a time with transform-based previous/next movement, wheel, swipe, keyboard support, and indicator slots.
  • NmorphAudioMeter now keeps bar heights equal for silence and signal states while preserving the active color and opacity behavior.

v2.2.58

  • NmorphDivider restored its original theme shadow styling while keeping the vertical stretch fix.

v2.2.57

  • NmorphDivider vertical dividers now stretch inside flex and grid layouts.

v2.2.56

  • NmorphFileCard custom actions now use the same top-right action area across visual, compact, and regular cards while PDF preview and default actions stay intact.
  • NmorphVideoPreview and NmorphMediaGallery now show play/pause overlays only after a video is fully buffered.

v2.2.54

  • NmorphFileCard and NmorphMediaGallery now expose height and overlay visibility props so media cards, gallery triggers, info labels, actions, and playback buttons can be tuned per layout.

v2.2.53

  • NmorphMediaGallery can now render its own image/video trigger grid with FileCard-style file names, size labels, play overlay, preview, fullscreen, and download actions.
  • NmorphFileCard image and video previews now open an internal NmorphMediaGallery by default, with preview-mode for emit-only or disabled preview triggers.
  • Sandbox media examples now use download-safe hrefs for audio and video so the download action saves instead of opening cross-origin preview URLs.

v2.2.52

  • NmorphFileCard now supports media-preview="image" from previewSrc, with compact visual thumbnails, shared soft/plain surfaces, file title overlays, size badges, and consistent download actions.
  • Added NmorphMediaGallery for fullscreen mixed image and video galleries with typed items, active index control, keyboard navigation, video pause-on-change/close behavior, and sandbox examples.
  • NmorphImagePreview and NmorphMediaGallery now share the same preview portal flow, so backdrop clicks, Escape closing, navigation arrows, image action bar controls, and synced video play/pause overlays behave consistently.

v2.2.51

  • NmorphVideoPreview now exposes preview and fullscreen overlay actions with showPreviewAction/showFullscreenAction props and preview/fullscreen events.
  • Attachment previews now keep file icons muted while play/pause and PDF eye controls use contrast color, show a single upload action loader, and balance compact video FileCard vertical padding.
  • The sandbox data page now includes NmorphFileCard examples for documents, images, audio, video, archives, loading, error, and long filenames.

v2.2.48

  • Added NmorphVideoPreview, NmorphAudioPreview, and NmorphFileCard as reusable attachment UI primitives for video, audio, documents, and unknown files.
  • NmorphFileUpload now renders typed previews for uploaded video and audio files, document/file cards for PDF, Office, and unknown files, and keeps image previews for images.
  • Documented the K-Room attachment rendering approach, including app-level attachment routers, Nmorph UI primitives, message attachment data shape, and compatibility with existing images.
  • Added optional NmorphEmojiPicker locale files for en, ru, and zh with lazy package imports so host apps can load only the emoji dataset they need.
  • NmorphLink now forwards rel, referrerpolicy, download, aria-label, and title to the inner anchor and resolves target="blank" to _blank.
  • NmorphCallout now supports header/title/default slots for safe rich content and can render its root as an external anchor with href, target, rel, and referrerpolicy.
  • NmorphFileCard now supports soft/plain embedded surfaces plus optional extension badge and icon surface controls for message attachments.
  • NmorphAudioPreview and NmorphVideoPreview now support embedded soft/plain surfaces and show play/pause controls on the media icon, while PDF FileCard previews expose an eye action on the file icon.
  • NmorphFileCard can now render embedded audio and video previews from previewSrc through media-preview while keeping the shared file-card title, type/size metadata, surface, and download action.
  • NmorphNotificationProvider duration indicators now support showDurationValue: false for progress-only countdowns.

v2.2.43

  • NmorphImagePreview now supports ArrowLeft and ArrowRight keyboard navigation while the preview is open, including wrap-around for image sets.
  • NmorphIcon now centers its inner icon content when external classes resize the icon wrapper.
  • NmorphScroll runtime common styles again include the inset track skin and hidden native scrollbar buttons for plugin-only usage.

v2.2.42

  • NmorphTagList and NmorphTagItem now expose a color prop for common design backgrounds, support v-model:selected-value and click events for clicked tag values, automatically choose readable text and close icon colors, and remove borders from common tags.
  • NmorphTagItem now supports a default slot for custom content, and NmorphTagList can forward an item scoped slot while preserving existing text, click, close, and v-model behavior.
  • Added touch-friendly tooltip triggers, call-oriented media and audio meter components, toggle button state, public styling props, typed select modes, richer context menu items, and backward-compatible typo aliases.
  • NmorphContextMenu now only repositions an already open context menu from a repeated right-click inside the trigger, so outside right-clicks no longer move the menu.
  • NmorphTextInput prepend icons now match the placeholder color by default and switch to the focus text color together with the input.

v2.2.40

  • NmorphContextMenu now supports click, both, longpress, and manual triggers, exposes openAt/openAtElement/close, and keeps pointer menus inside the viewport.
  • NmorphImagePreview now supports a gallery trigger that renders multiple thumbnails before opening the overlay.
  • NmorphButton now uses its height prop as a minimum for regular buttons, allowing multi-line content to expand without clipping while icon buttons stay fixed.
  • NmorphTagList now accepts design="common" to render plain token-backed tags with contrast text and icons instead of the neumorphic inset surface.

v2.2.39

  • Component prop, emit, slot, and shared library typings now live in focused type modules, keeping generated declarations easier to consume.
  • NmorphFileUpload and form validation now share file type matching helpers, so MIME, extension, accept, and image-preview checks stay consistent.
  • NmorphImagePreview now mounts its preview portal only while open, so pages with many previews do not accumulate hidden portals in body.
  • NmorphBadge size now includes medium, large, and extra-large variants for larger tags, dots, and ribbons.

v2.2.38

  • NmorphFormItem now provides field context so nested form controls can bind to a field by id when modelValue is omitted, while explicit v-model remains controlled.
  • NmorphFileUpload now participates in NmorphForm rules, rejects invalid files before accepting them, updates form field errors, and cleans up managed preview URLs.
  • Polished form control sizing and surfaces, including checkbox and radio content height, select radius, text input backgrounds, autofill styling, and card padding propagation.
  • Workspace dev scripts no longer open browser tabs by default; pass --open when the docs or sandbox should launch automatically.

v2.2.37

  • Unified modifier normalization and CSS size helpers across components so boolean modifiers and numeric CSS values follow one code path.
  • Select, Autocomplete, Table, and VirtualList now share option-height and virtual-list style helpers for more consistent scrolling surfaces.
  • NmorphDialog now documents close-on-overlay, keeps close-on-click-modal as a compatibility alias, and uses an accessible close button in the header.
  • Moved Avatar, Image, TextInput, and Scroll layout styles from common injected CSS into their component files for clearer component ownership.

v2.2.36

  • Added NmorphTextarea, NmorphDrawer, NmorphLayout, NmorphSpace, NmorphQRCode, and NmorphVirtualList to the library exports.
  • Added documentation pages, API tables, overview examples, and sandbox demos for the new components.
  • Added more NmorphIcon exports for chevrons, clipboard states, data/server, drag handles, filters, mail, shields, save, undo, and redo actions.
  • Polished existing form, data, and navigation components, including option heights, pagination controls, avatar rendering, switch/button states, and Backtop behavior.
  • Docs API tables can now use inline descriptions when an i18n key is not available, avoiding missing-translation noise for new component pages.

v2.2.35

  • NmorphAvatar fallback initials now use the default text color instead of the accent color.
  • NmorphEmpty now has a valid default padding token, keeps text inside its content area, and the docs example wraps on narrow screens.
  • Collapse examples in the docs now keep their clickable item titles visible while the source-code accordion still hides its internal title.
  • The sandbox table example no longer applies an accent border override, so it matches the default Nmorph table surface more closely.
  • The Skeleton loading docs example now imports NmorphSkeletonItem correctly, so the loading placeholder renders when loading is enabled.
  • Docs API tables now link CSS value types such as Width, Height, Padding, Color, Background, and Transition-duration to MDN.
  • NmorphDropdown and NmorphContextMenu now accept hide-shadow to render menu panels without the default neumorphic shadow.
  • NmorphBacktop now keeps its position variables on the teleported button, and the docs example has a fixed scroll area so the button can appear.
  • Docs API tables now show expose methods without arguments and return values as void instead of () => void.
  • Docs component navigation now restores the left sidebar scroll position when moving between component pages.
  • Autocomplete, Select slot options, and TimePicker menu options now align their item height with the control height.
  • NmorphFileUpload now accepts all files by default, matches restricted types by MIME or extension, and only renders image previews for image files.
  • Added NmorphIconPin.

v2.2.34

  • NmorphLink now accepts iconName/icon-name to render a library icon before the link text, with docs and tests covering the new prop.
  • NmorphAvatar loading icons now inherit the default text color instead of forcing the accent color.
  • NmorphBadge flat corner ribbons now render without rounded outer edges while corner ribbons keep their visible inner radius.
  • Docs API tables now auto-link known attribute, expose, and event types, and stale component links now point to the correct element anchors.
  • Docs example source blocks now use plain English example text instead of copying runtime i18n expressions.
  • Docs and sandbox Nuxt production builds now write to .nuxt-build so build commands no longer overwrite active dev-server metadata.

v2.2.33

  • NmorphFileUpload now stays synchronized with modelValue, clears its native file input on reset/removal/unsupported type, and lets the same file be selected again without a :key reset.

v2.2.32

  • NmorphBadge ribbon corners now use a subtle 4px radius only on the visible inner side, and tiny ribbons render with lighter, smaller text.

v2.2.31

  • NmorphBadge ribbon mode now supports flat corner placement through ribbonTilt, rounded ribbon edges, and expanded docs and sandbox examples.
  • NmorphCallout now exposes size props for padding, border radius, accent strip width, title gap, and title/content font sizes.

v2.2.30

  • NmorphFileUpload now keeps selected file names truncating correctly inside grid and dialog layouts without expanding the row.

v2.2.29

  • NmorphImagePreview now removes the closed preview portal from hit testing so dialogs with inline previews remain interactive.
  • NmorphFileUpload now lays out selected image rows with flexible file info, fixed preview and remove controls, and no horizontal overflow in dialogs.
  • NmorphDialog now uses indentation-03 for its outer padding.

v2.2.28

  • NmorphDialog now hides horizontal overflow inside the content area while keeping vertical content scrolling available.

v2.2.27

  • NmorphBadge now accepts hideOnFalsyValue to hide the badge indicator when value is falsy, including 0.

v2.2.26

  • NmorphBadge dot sizing now comes from size variants and the --nmorph-badge-dot-size CSS variable instead of a dotSize prop.
  • NmorphCard now accepts contentClass so consumers can style the content wrapper without reaching through nested selectors.
  • NmorphDialog now uses 4px outer padding and separate 4px padding for the header and content sections.
  • Sandbox examples now demonstrate badge dot sizing through CSS variables and the checkbox group column state with checkbox design.

v2.2.25

  • NmorphBadge now uses the `type` prop as the primary display mode, including dot and tag modes, and forwards offset props to ribbon CSS variables.

v2.2.24

  • NmorphBadge now supports a ribbon display type for diagonal corner labels with selectable corners, docs, and sandbox examples.
  • NmorphNotificationProvider now follows the shared z-index stack by default so notifications stay above active overlays and dialogs.
  • NmorphDialog now stays within the viewport, keeps its header visible, and scrolls overflowing content inside the dialog body.
  • Sandbox Nuxt dev/build now resolves nmorph runtime imports from library/src so examples reflect source changes without rebuilding dist.

v2.2.23

  • NmorphScroll now defaults xGapInPx and yGapInPx to 0 so custom scrollbars sit flush by default.
  • NmorphImagePreview now lets empty preview space close the overlay instead of blocking outside clicks.
  • Root docs dev script now opens lib-docs at 127.0.0.1 instead of a LAN address.
  • NmorphAutocomplete now closes without refocusing itself, keeps its clear action clickable while open, and applies default spacing to dropdown items.

v2.2.22

  • Added NmorphIconSmile for emoji images and reactions.

v2.2.21

  • Added NmorphIconSend and NmorphIconSendFilled paper plane icons.
  • Added NmorphIconReply, NmorphIconReplyFilled, NmorphIconForward, and NmorphIconForwardFilled for chat message actions.
  • NmorphEmpty now includes its padding inside the component width, preventing empty-state content from pressing against grid or docs preview edges.
  • NmorphImagePreview now lets consumers hide gallery navigation buttons and the bottom action bar independently.

v2.2.20

  • NmorphCard now renders the header wrapper only when the header slot is provided.
  • NmorphCard now forwards --nmorph-card-combined-border-width only for combined shadow cards.

v2.2.19

  • Added NmorphEmpty for empty states, including typed props, slots, docs, and sandbox examples.
  • NmorphCard now accepts a cardPadding prop that forwards to the --card-padding CSS variable, with numeric values converted to pixels.
  • NmorphCard now fills the available width by default and can fit its content when fill is false.
  • NmorphCard now accepts a tag prop so the root element can render as div, article, section, or another HTML tag.
  • Component CSS variables can now be overridden through props across badges, tooltips, form controls, tables, progress, alerts, and related components.
  • NmorphContextMenu now derives the default option hover background from the base text color instead of the accent color, while custom colored items still use their own color.
  • NmorphTooltip now participates in the shared automatic z-index stack and supports an explicit zIndex override.
  • NmorphNotificationProvider now keeps placement transition groups mounted so the first notification animates like the following ones.
  • Carousel and Collapse are now covered by the component registry, docs pages, API tables, examples, and sandbox checks.
  • Added NmorphTimePicker with typed exports, locale strings, docs overview, and sandbox examples.
  • NmorphImagePreview keeps its overlay content inside the preview portal and constrains opened images with contain sizing.
  • Fixed tag remove cursor, right-side number input action order, carousel looping, collapse reopening, and Windows scrollbar button styling.
  • Root dev scripts now open docs and sandbox through a shared helper, and Nuxt dev configs stub Vue devtools API to avoid the devtools export error.

v2.2.18

  • NmorphContextMenu now accepts text, object, and component options with built-in item layout, hover states, disabled handling, and select events.
  • NmorphContextMenu click triggers now stay anchored to the trigger while scrolling, pointer-opened menus close on scroll, and automatic menu width keeps items left-aligned.
  • The old nuxt-sandbox workspace was removed and the main sandbox now runs on Nuxt with the context menu example wired through the same public API as the docs.

v2.2.17

  • NmorphContextMenu now supports contextmenu, click, and both trigger modes, fixes uncontrolled usage without v-model, and documents the new trigger API.
  • NmorphBadge now keeps a wider minimum content width so one-character badges stay readable in compact layouts.
  • Nuxt docs integration now avoids theme switch hydration mismatches, duplicate vue-i18n registration warnings, and noisy dev hook timing logs.

v2.2.16

  • Docs component overviews now lazy-load per route, including example sources and icon data, so the initial docs bundle stays smaller.
  • The library package now exposes separate icons and styles entrypoints, keeps CSS marked as side effects, and avoids forcing consumers to pull unused icons or styles.
  • Added NmorphContextMenu based on NmorphDropdown, with pointer positioning, keyboard context menu support, Escape/outside-click closing, API docs, and sandbox examples.
  • Overlay-based dialog, dropdown, select, and autocomplete flows now share Escape handling, ARIA roles, outside-click behavior, and focus trap support where needed.
  • NmorphTable, NmorphSelect, and NmorphAutocomplete virtualization now support stronger keyboard navigation, dynamic item heights, and scroll position preservation.
  • NmorphDatePicker and calendar utilities now support nullable models plus custom date formatting through Intl options, token patterns, or a formatter function.
  • NmorphButton now preserves a custom color prop, uses normal text color by default, and derives transparent hover color from the passed color instead of accent.
  • Shared shadow tokens now centralize common inset/outset styles, reducing duplicated CSS across components and docs.

v2.2.15

  • NmorphImagePreview now keeps the preview image visible in fullscreen mode, keeps gallery and zoom controls above the overlay, and closes from the backdrop or Escape.
  • Docs attribute examples now use shared source `.example.vue` files, so the rendered preview and highlighted code stay in sync without duplicating templates and styles.
  • Docs code blocks now keep the correct top spacing and copy the full example source through the clipboard API with a fallback path.
  • NmorphCallout no longer ships bottom margin in the library; docs apply their own callout spacing where notices need separation.
  • Storybook and library dev configs now use the Dart Sass modern API instead of the deprecated legacy JS API.
  • Docs and Storybook dev scripts now use local host/path helpers, include asset/raw import typings, and avoid pulling Storybook into the default dev run.
  • CI build and publish jobs now install the workspace with pnpm and publish the library from the prepared package.

v2.2.14

  • Nuxt integration now applies the saved theme before first paint, injects SSR theme/common styles, and avoids the light/dark theme flash on reload.
  • NmorphBacktop now teleports to body, supports z-index and teleport target props, respects mobile safe-area bottom, and avoids clipping inside scroll containers.
  • Common styles now prevent iOS input auto-zoom and align native scrollbar color scheme/thumb colors with the active Nmorph theme.
  • The repo moved to pnpm workspaces with Turbo scripts, Sass uses the modern API, and docs received updated Guide/About content, mobile navigation, layout, search, and code highlighting fixes.

v2.2.13

  • NmorphTable, NmorphSelect, and NmorphAutocomplete now support virtualized large datasets with configurable item height and overscan.
  • NmorphOverlay and NmorphDropdown now render through body Teleport, recalculate placement after open, and support end alignment such as bottom-end.
  • Nuxt integration and theme/browser hooks were updated to keep SSR markup available while deferring browser-only work until the client.
  • Fixed compact radio, checkbox, pagination, icon, and color-picker sizing so disabled and extra-thin controls stay aligned and readable.

v2.2.12

  • NmorphPagination now uses the basic control height by default, so page controls align with pagination buttons.
  • NmorphCheckbox and NmorphRadio controls now use button design by default, support the extra-thin height, and keep shared models synchronized across groups.
  • NmorphAvatar no longer renders a hidden preview trigger, and NmorphImagePreview removes the preview frame shadow.
  • The Nuxt module now merges Nmorph translations into an existing i18n instance automatically.

v2.2.11

  • NmorphAvatar now resolves NmorphImagePreview internally, so avatar preview works with direct component imports.
  • NmorphBacktop now uses the contrast text color for the common design arrow icon.

v2.2.10

  • Component chunks now import their own CSS, so direct component imports no longer require pulling the full library stylesheet.
  • Added the nmorph-ui-kit/plugin entry for plugin setup without component imports, and Nuxt can opt into the full stylesheet with `nmorph.styles: "all"`.

v2.2.9

  • Removed styled-components from Nmorph UI components and replaced runtime-generated styled classes with stable Vue markup and SCSS.
  • Aligned NmorphAvatar image radius with its frame and fixed raw SVG prepend icon rendering in NmorphTextInput.

v2.2.8

  • Added Nuxt module support through `nmorph-ui-kit/nuxt` with automatic plugin registration.
  • NmorphImagePreview now renders its overlay through body, so parent isolation and stacking contexts do not break the preview.
  • NmorphTextInput now sizes and colors raw SVG prepend icons correctly.
  • Aligned docs example action buttons and removed the test coverage roadmap item.

v2.2.7

  • Renamed the shared component height value from `default` to `basic`, and updated component defaults and docs to use thick, basic, and thin.
  • NmorphCheckbox, NmorphCheckboxGroup, NmorphRadio, and NmorphRadioGroup now default to thin height; radio controls now render as round radio controls by default.
  • NmorphTextInput now reserves space for the clear/password action button so placeholder text does not overlap it in narrow inputs.

v2.2.6

  • Added a shared automatic z-index stack for overlays, dropdowns, selects, dialogs, date pickers, autocomplete, and image previews.
  • Nmorph overlay-based components now support `zIndex`, and the library install options can set the shared z-index base.

v2.2.5

  • NmorphCheckbox and NmorphCheckboxGroup now support `height` with thin, basic, and thick component sizes.
  • NmorphRadio and NmorphRadioGroup now support `height` with thin, basic, and thick component sizes.

v2.2.4

  • NmorphAvatar now supports image preview on click, including multiple gallery images through `src` or `previewSrc`.
  • NmorphCallout no longer adds bottom margin by default.

v2.2.3

  • Added media control icons: play, pause, stop, record, and a square exit alternative.

v2.2.2

  • NmorphSelect now supports `fill` and `optionsWidth`, can stretch to container width, truncate long option labels, or expand dropdown options to fit content.
  • NmorphSelect now disables the native input while loading and closes the dropdown when loading starts.
  • NmorphDropdown width props now accept CSS string values and support min-width and max-width.
  • NmorphColorPicker and NmorphSwitch no longer animate background and shadow changes, so theme updates apply instantly.

v2.2.1

  • NmorphCallout title is now optional and the component supports success and error status colors.
  • Added runtime theme APIs: `setThemeColors` and `applyTheme` update the managed Nmorph style tag without writing inline styles to html.
  • Cleaned up theme typings so install options and per-theme color options are typed separately, and missing theme config is handled safely.

v2.2.0

  • Added NmorphCallout to the library, docs, component overview, and sandbox.
  • NmorphSelectButton now supports the `fill` prop and can stretch its items across the container width.
  • NmorphBadge now supports the `size` prop with tiny, extra-small, and base variants.
  • Updated the Guide CSS variables reference and simplified utility class documentation to class names and purpose.
  • Docs side menu now sizes to its content and the mobile header alignment was refined.

v2.1.1

  • NmorphBadge now supports a `zIndex` prop for controlling badge stacking order.
  • NmorphColorPicker can display selected colors as hex, RGB, or HSL values through the `displayFormat` prop.
  • NmorphFileUpload now preserves custom file preview data in `v-model`, respects disabled state for selection and removal, and uses the icon-only remove button slot.
  • NmorphSlider now uses pointer events, improving touch dragging and cleaning up document listeners on unmount.
  • NmorphScroll thumb color now uses the theme text color by default and can be configured with `scrollThumb` / `--nmorph-scroll-thumb-color`.

v2.1.0

  • NmorphAvatar now supports a `name` prop and renders generated initials when no image is available. Avatar docs were updated with API and usage examples.
  • NmorphNotificationProvider now supports `placement` on each notification, so one provider can render notifications in different screen positions.
  • Fixed notification removal when `quantity` is exceeded: leaving alerts keep icon sizing, colors, and layout during the transition.
  • Transparent NmorphButton hover now highlights both text and icons with the accent color.
  • NmorphColorPicker now renders shown hex values with fixed-width formatting so equal-length values keep equal component width.

v2.0.3

  • NmorphScroll now defaults to `height="100%"`, and the API docs plus descriptive copy were aligned with that behavior.
  • Fixed TypeScript typings in NmorphScroll: container size and scroll coordinate access no longer produces `undefined` errors, and the public expose type for `moveTo` and `scrollDOMContainer` was cleaned up.

v2.0.2

  • NmorphNotificationProvider now keeps alert styles intact during close animation, preserves stacked layout, and avoids jarring reflow while notifications leave.
  • useNmorphNotification now generates UUID-based notification ids to avoid collisions when multiple notifications are created in quick succession.

v2.0.1

  • Added NmorphOTPInput with documentation and sandbox examples. It reuses NmorphTextInput styling and supports paste, keyboard navigation, and completion events.
  • NmorphFormItem now forwards autocomplete to nested form controls, and the affected component API docs were updated.
  • NmorphTextInput now exposes focus, blur, and select methods and accepts additional native input attributes for composed controls such as OTP input.
  • NmorphAvatar now accepts a fallback component prop with a default NmorphIconAvatar fallback, and the avatar API docs were updated.
  • NmorphButton fill now reliably stretches to the container width, and transparent buttons support custom text and icon color through the color prop.

v2.0.0

  • Breaking change: NmorphButton slot API was split. `icon` now renders a leading icon next to content, and icon-only buttons must use the new `icon-only` slot.
  • NmorphBadge now accepts `undefined` as `value`, hides itself when no value is provided, and supports a custom `value` slot for badge content. Docs and sandbox examples were added.
  • NmorphScroll now behaves correctly with `height="100%"` when the parent has an explicit height, and the docs now show both fixed and relative height examples.
  • Theme config typings and docs were synchronized with runtime behavior: `focusText` is now correctly typed, and `placeholderText`, `semiContrastText`, and `contrastText` are documented in the theme example.
  • NmorphSelectButtonItem no longer animates background and box-shadow, so theme switching is instant and visually consistent with the rest of the library.
  • Fixed NmorphRadio inject typings so standalone usage no longer causes TypeScript errors when group injections are absent.

v1.1.6

  • Added NmorphColorPicker component, a documentation page for it, and examples for height, value display, disabled state, and theme-accent default color.
  • Added is-tag mode to NmorphBadge so it can render as a standalone badge without overlay positioning or a default slot.
  • NmorphBadge now hides itself when value is undefined; dot mode still renders without a value.
  • Added NmorphIconExit and NmorphIconUsers to the icon set and the icon documentation page.
  • Form validation rules now accept boolean compareValue values, and the form API docs were updated accordingly.
  • Made NmorphImage src optional in the public typings and aligned the image API docs with the runtime behavior.

v1.1.5

  • NmorphSelectButtonItem is now keyboard-accessible: Tab focuses each item, Space/Enter selects it, and a focus-visible outline is shown.
  • Added tabindex prop to INmorphCommonInputProps — all form controls (NmorphTextInput, NmorphSwitch, NmorphSlider, NmorphNumberInput, NmorphSelect, NmorphSelectButtonItem) now support tabindex.

v1.1.4

  • Form controls now inherit id and name from NmorphFormItem automatically, so labels and native form attributes stay linked without manual prop forwarding.
  • Fixed NmorphTextInput autofill styling so browser autofill no longer overrides the neumorphic shadows and field colors.

v1.1.3

  • Added NmorphIconGoogle to the icon set.
  • Added --nmorph-semi-contrast-text-color and --nmorph-contrast-text-color CSS variables to default light and dark themes.
  • NmorphFormItem label now has a correct for attribute linked to the input via inputId prop on NmorphTextInput.
  • NmorphErrorBox now shows only the most relevant error instead of all errors at once.

v1.1.2

  • Fixed NmorphValidationIcon not rendering: icon components were passed as strings instead of component objects.

v1.1.1

  • NmorphSelectButton: unselected items now appear semi-transparent for clearer visual feedback.

v1.1.0

  • Added new NmorphSelectButton component — a segmented button group with slot and options-based API.

v1.0.107

  • Relaxed package engines requirements to support modern Node and npm versions.

v1.0.106

  • Added export of English locale messages from the package entry point.

v1.0.105

  • Fixed Skeleton loading animation: shimmer now works when loading is enabled.

Resolution is not supported

Open the documentation on a device with a screen size of at least 375px by 640px.