Skip to content

Releases: ronjunevaldoz/shadcn-compose

Release list

v0.2.0

Choose a tag to compare

@ronjunevaldoz ronjunevaldoz released this 10 Jul 17:23

Features

  • Catalog: finish the heroicons migration (top bar, Alert, MessageScroller demos) — no more text-glyph icon placeholders
  • Catalog: add an inline sidebar search bar for the component list
  • Catalog: add a top-level Components/Create nav, with a redesigned Create page — theme picker (Style/Base Color/Accent) with per-option color swatches, live preview, and a copy-to-clipboard setup snippet
  • Theme: add ShadcnRing.enabled toggle, now off by default (text inputs are unaffected — they always show their focus ring)
  • ShadcnMessageScroller: add an icon override slot for the jump-to-bottom button
  • ShadcnButton: add a pressed-state push effect

Fixes

  • ShadcnText's muted/explicit color no longer gets silently overridden when nested inside a container that sets an ambient contentColor (ShadcnCard, ShadcnAlert, ShadcnTextField placeholders, ...)
  • ShadcnCarousel: fix the Previous/Next buttons overlapping/clipping against the card edge
  • Catalog: fix Create page dark-mode/theme-preset scoping — dark mode now applies everywhere (top bar included), while Style/Base Color/Accent pickers scope to the sidebar + content pane only
  • Focus ring: fix a layout reflow bug by reverting to a dropShadow-based ring paired with shape

v0.1.0

Choose a tag to compare

@ronjunevaldoz ronjunevaldoz released this 08 Jul 13:06

shadcn-compose v0.1.0 — first release

A shadcn/ui-inspired component library for Kotlin Multiplatform /
Compose Multiplatform
— Android, iOS, Desktop (JVM), and Web (JS + WasmJS) from one
commonMain source set. No Material dependency: every component is drawn from this
library's own design tokens and the experimental Compose Styles API, the same way real
shadcn/ui owns its Tailwind-driven CSS instead of wrapping a design system it doesn't
control.

What's in this release

  • Full registry parity with real shadcn/ui's docs/components/base/* — all 64 real
    components accounted for, with one deliberate scope exception (native-select, which
    would require real native OS widgets per platform, out of this library's pure-Compose
    scope). docs/data-table/direction/toast are correctly treated as non-gaps per
    shadcn's own docs (guide-only, Compose-native equivalent, and deprecated→sonner,
    respectively).
  • shadcn's "AI Elements" family: Message/MessageGroup, Bubble/BubbleGroup,
    Attachment/AttachmentGroup, Marker, and MessageScroller — a chat-transcript
    scroller with sticky-release auto-scroll semantics matching real shadcn's own
    documented behavior, plus a real interactive streaming-reply demo in the catalog app.
  • shadcn's docs/utils/* utilities: Modifier.shadcnShimmer() and
    Modifier.shadcnScrollFade(), both implemented as real Compose draw-phase effects
    (not stubs).
  • Token-based theming: 8 named style presets (Vega/Nova/Maia/Lyra/Mira/Luma/Sera/Rhea),
    multiple base color families, accent overrides, and full light/dark mode support.
  • Slot-based composition APIs where real shadcn needs them (DropdownMenu/ContextMenu/
    Menubar freely mix labeled sections, separators, and destructive items; Command
    supports grouped/headed, live-filterable item lists).

Quality bar

  • Compiles clean on all 6 KMP targets (JVM, Android, iOS arm64 + simulator arm64, JS,
    WasmJS) for both the library and the catalog app.
  • Full test suite (unit tests + Roborazzi screenshot goldens) passes on every testable
    target.
  • ktlintCheck clean project-wide; a custom static check
    (scripts/check_style_block_theme_reads.sh) guards against a real dark-mode-toggle
    bug class found and fixed this cycle.
  • ktlintCheck/detekt/the custom check all run in CI on every push.

Known limitations

  • Not yet published to Maven Central. library/build.gradle.kts is fully wired for
    it (vanniktech plugin, POM metadata), but publishing requires a real Sonatype account
    and GPG signing key that don't exist yet — signAllPublications() is deliberately
    left commented out until then. ./gradlew :library:publishToMavenLocal works today if
    you want to consume it locally in the meantime.
  • No apiCheck/binary-compatibility-validator wired yet — the public API surface isn't
    tracked for breaking changes between versions yet (reasonable for a pre-1.0 first
    release, worth adding before the API is considered stable).
  • Detekt is currently only wired for the two thin platform-entry-point modules
    (:app:desktopApp, :app:androidApp), not :library or :app:shared where almost
    all the actual logic lives.

See the README for the full component catalog, keyword index, and
Installation instructions.