Skip to content
CAI
Software that uses CAICheck a score

bluzky/salad_ui

58.5

Adequate · 23 September 2026

16.5k

lines of production code

Elixir

with JavaScript

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

SaladUI is a Phoenix LiveView component library that provides a comprehensive suite of accessible, interactive UI elements such as dialogs, menus, and charts. It integrates with Tailwind CSS v4 for styling and utilizes a custom JavaScript framework to manage client-side state, animations, and accessibility features. The system includes automated installation tasks and a Storybook environment to facilitate integration and testing within Phoenix applications.

How it got here

2024 — SaladUI library initial release

11 changes.

This period focused on the creation and stabilization of the SaladUI component library for Phoenix LiveView, introducing a comprehensive suite of UI components and core integration helpers. The work involved upgrading dependencies to Phoenix LiveView 1.0 and Tailwind CSS v4, implementing shadcn-compatible theming, and establishing a robust test suite to ensure component reliability.

2025–2026 — SaladUI component library creation

9 changes.

This period focused on building the SaladUI component library from the ground up, establishing a JavaScript framework with state machines and accessibility features for interactive UI elements. The work included integrating the library with Phoenix LiveView, upgrading the CSS infrastructure to Tailwind CSS v4, and creating automated installation tasks to facilitate adoption.

Features

Added shadcn-compatible color themes and UI assets

The application now includes a comprehensive set of CSS color themes (blue, gray, green, neutral, orange, red, rose, slate, stone, violet, yellow, and zinc) located in priv/static/assets/colors, each providing both light and dark mode variable definitions compatible with the shadcn UI system. Additionally, a new salad\_ui.css file introduces custom styling for scroll areas and an indeterminate progress animation, while a tailwind.colors.json file maps these CSS variables to Tailwind utility classes, enabling consistent theming across the interface.

priv · high confidence

Initial release of SaladUI component library

This change introduces the SaladUI library, a collection of Phoenix LiveView UI components. The diff adds the initial implementations for the Accordion, AlertDialog, Breadcrumb, Chart, Collapsible, Command, HoverCard, Icon, Pagination, Popover, Progress, and RadioGroup components, along with the core LiveView integration helpers in SaladUI.LiveView and SaladUI.JS for handling server commands and client-side dispatching.

_lib/salad\ui · high confidence

Introduce SaladUI module entry point

A new entry point file has been added to the assets/salad\_ui directory, exporting the core Component class, a registration function, and the SaladUIHook. This establishes the public API surface for the SaladUI library, allowing consumers to import and register custom components via the central registry.

_assets/salad\ui · high confidence

Introduces SaladUI Core JavaScript framework for interactive components

This change adds the foundational JavaScript layer for SaladUI components, including a base Component class, a state machine for handling transitions and animations, and a registry/factory system for instantiating components. It introduces core utilities such as a collection manager for handling item selection and focus, a focus trap for modal dialogs, a click-outside monitor, a portal utility for DOM relocation, and a positioning engine for floating elements like popovers and tooltips. The framework also includes a Phoenix LiveView hook to bridge server and client states, ensuring components are correctly mounted, updated, and destroyed during DOM patches.

_assets/salad\ui/core · high confidence

New SaladUI component library and core infrastructure

The \assets/salad\_ui/components\ directory now contains a comprehensive set of new UI components (accordion, chart, collapsible, command, dialog, dropdown menu, hover card, menu, popover, radio group, select, slider, and switch) built on a new internal framework. This framework introduces a state-machine-driven architecture with explicit event mapping (mouse/keyboard), ARIA configuration, and collection management (registry, roving focus, selection) to handle complex interactions like nested items and keyboard navigation. The components also integrate with external libraries (Chart.js) and core utilities (FocusTrap, ClickOutsideMonitor, PositionedElement) to provide accessible, interactive UI elements.

_assets/salad\ui/components · high confidence

New mix tasks for installing and setting up SaladUI

Added \mix salad.install\ and \mix salad.setup\ tasks to automate the integration of SaladUI into Phoenix applications. The \salad.setup\ task configures the development environment by adding TwMerge.Cache to the supervision tree, setting up CSS color schemes, patching Tailwind CSS configurations, and installing JavaScript hooks. The \salad.install\ task copies component source files and JavaScript assets into the project, allowing for customizable module prefixes and color schemes via command-line arguments.

lib/mix/tasks · high confidence

SaladUI library initialization with comprehensive component exports

The \lib/salad\_ui.ex\ module has been initialized as the main entry point for the SaladUI library, replacing the previous minimal setup. It now provides extensive documentation and, crucially, automatically imports a wide range of UI components (such as Accordion, Alert, Button, Dialog, Form, and Chart) when the library is used. Additionally, it replaces the external \Tails\ dependency for CSS class merging with an internal implementation using \TwMerge\, ensuring the library is self-contained for styling utilities.

lib · high confidence

Storybook environment setup and configuration

The storybook location now includes the foundational configuration files required to run the Salad UI component library in isolation. This includes a Dockerfile for containerized builds, Elixir formatter and gitignore rules, and a complete Tailwind CSS setup (including color palettes and configuration) to style the components. Additionally, JavaScript entry points are provided to load the Salad UI components and hooks into the Phoenix LiveView environment, enabling developers to view and test the UI components locally.

storybook · high confidence

Behavioural changes

Automated Tailwind CSS v4 and animation library configuration

The installation helpers now automatically patch CSS and JavaScript files to support Tailwind CSS v4 and the tw-animate.css library. The Tailwind patcher updates stylesheets by replacing legacy v3 imports with the new v4 import, injects a theme block for semantic color and radius tokens, and adds necessary directives (such as source paths and the dark mode variant) to ensure runtime-generated classes are detected. The JavaScript patcher modifies LiveSocket initialization to append new hooks and content after existing imports, ensuring client-side components integrate correctly. Additionally, a dedicated installer downloads the tw-animate.css file to the vendor directory to enable animation support.

lib/mix/tasks/helpers · high confidence

SaladUI v1.0.0-beta.3 introduces breaking changes and new components

This release upgrades the library to version 1.0.0-beta.3 with significant breaking changes: the \tails\ dependency is replaced by \tw\_merge\ (extracted from \turboprop\), requiring users to add \TwMerge.Cache\ to their application's children list, and the \Collapsible\ component no longer uses a builder pattern. New features include a \Sidebar\ component, an \as\_child\ tag for merging multiple SaladUI tags, and a \dynamic\ tag for dynamic rendering. The release also updates the README with installation instructions for both library and local installation modes.

(repo-wide) · high confidence

Upgrade to Tailwind CSS v4 and align with shadcn design tokens

The CSS build system has been upgraded to Tailwind CSS v4, replacing the previous configuration with a new \app.css\ and \storybook.css\ that utilize the modern \@import\ and \@plugin\ directives. This change introduces a new \tailwind.theme.css\ file that explicitly maps design tokens (such as colors, radii, and sidebar variables) to CSS custom properties, ensuring consistency with the shadcn component library. Additionally, the configuration now explicitly sources styles from the \config\, \lib\, and \salad\_ui\ directories, and includes the \tw-animate.css\ vendor library to support updated animation capabilities.

assets/css · high confidence

Fixes

Added Tailwind CSS v4 compatible animation styles

A new CSS file, tw-animate.css, has been added to the vendor assets to provide animation utilities compatible with Tailwind CSS v4. This file replaces the previous tailwindcss-animate approach by defining CSS @property variables and keyframes for enter/exit transitions (such as opacity, scale, and blur) and accordion animations, ensuring that dialog and component lifecycle animations function correctly under the new Tailwind version.

assets/vendor · high confidence

Test coverage

Added test support modules for component and Mix task testing; Added unit tests for JS and Tailwind CSS patchers; Added unit tests for SaladUI component library; Added unit tests for SaladUI components and core utilities; Removed placeholder test from SaladUI test suite.

Dependencies

Added linting, formatting, and color configuration assets

The assets directory now includes configuration files for code quality and styling: an ESLint configuration (eslint.config.js) that sets up recommended rules and environment globals for both application and test files, a Prettier configuration (prettier.config.js) enforcing trailing commas, and a Tailwind color mapping file (tailwind.colors.json) that defines semantic color variables for UI components.

assets · high confidence

Configured Tailwind CSS v4 build settings

The application now uses Tailwind CSS v4 (version 4.3.0) for styling. The configuration defines two build targets: a default target that compiles \assets/css/app.css\ to \priv/static/assets/app.css\, and a storybook target that compiles \assets/css/storybook.css\ to \priv/static/assets/storybook.css\.

config · high confidence

Upgrade to Phoenix LiveView 1.0 and Tailwind CSS v4

The library has been upgraded to support Phoenix LiveView 1.0 (specifically \~\> 1.2) and Tailwind CSS v4, replacing the previous \tails\ dependency with \tw\_merge\. This change also bumps the project version to 1.0.0 and updates the Elixir requirement to \~\> 1.14. Additionally, the Storybook environment has been updated to use \phoenix\_storybook\ v1.3.0 and includes Chart.js for component visualization.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 60 → 58 (-1.8)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 59 → 60 (+0.9)
  • Architecture 99 → 99 (-0.8)
  • Maturity 68 → 72 (+3.8)
  • Readiness 51 → 66 (+15.2)
  • Security 83 → 83 (-0.1)
  • Accessibility 49 (new)

Resolved (25)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Duplicated block (16 lines × 2) (lib/mix/tasks/salad.install.ex)
  • Duplicated block (18 lines × 2) (storybook/storybook/salad_ui_component/badge.story.exs)
  • Duplicated block (37 lines × 2) (storybook/storybook/salad_ui_component/hover_card.story.exs)
  • High CVE: [GHSA redacted] (assets/package-lock.json)
  • High CVE: [GHSA redacted] (assets/package-lock.json)
  • High CVE: [GHSA redacted] (assets/package-lock.json)
  • High CVE: [GHSA redacted] (assets/package-lock.json)
  • High CVE: [GHSA redacted] (assets/package-lock.json)
  • High CVE: [GHSA redacted] (assets/package-lock.json)
  • High IaC: DS-0029 (storybook/Dockerfile)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Medium CVE: EEF-[CVE redacted] (storybook/mix.lock)
  • Medium CVE: EEF-[CVE redacted] (storybook/mix.lock)
  • Medium CVE: EEF-[CVE redacted] (storybook/mix.lock)
  • Medium CVE: [GHSA redacted] (assets/package-lock.json)
  • Medium IaC: CKV_DOCKER_2 (storybook/Dockerfile)
  • No exposed public API
  • …and 5 more

New (68)

  • ClassTooLong: ToastComponent (assets/salad_ui/components/toast.js)
  • CollectionRegistry.getItem (cognitive 18) (assets/salad_ui/core/collection.js)
  • Documentation: no installation or build instructions (docs/DOCUMENTATION_PLAN.md)
  • Duplicated block (18 lines × 2) (lib/mix/tasks/salad.install.ex)
  • Duplicated block (23 lines × 2) (storybook/storybook/salad_ui_component/badge.story.exs)
  • Duplicated block (33 lines × 2) (lib/mix/tasks/salad.install.ex)
  • Duplicated block (35 lines × 2) (lib/salad_ui/alert.ex)
  • Duplicated block (53–61 lines × 2) (storybook/storybook/salad_ui_component/hover_card.story.exs)
  • Duplicated block (8 lines × 2) (lib/salad_ui/dropdown_menu.ex)
  • High CVE: [GHSA redacted] (assets/package-lock.json)
  • High CVE: [GHSA redacted] (assets/package-lock.json)
  • High CVE: [GHSA redacted] (assets/package-lock.json)
  • High CVE: [GHSA redacted] (assets/package-lock.json)
  • High CVE: [GHSA redacted] (assets/package-lock.json)
  • High CVE: [GHSA redacted] (assets/package-lock.json)
  • High CVE: [GHSA redacted] (assets/package-lock.json)
  • High IaC: DS-0029 (storybook/Dockerfile)
  • High IaC: DS-0029 (storybook/Dockerfile)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • …and 48 more

Changes since last survey

  • 3 commits — 2 feature/other, 1 fixes

By area

  • (root) — 3 commits

Notable commits

  • fix: fix: register component_lifecycle.md as doc extra, remove dead CLAUDE.md link
  • change: Update README to remove beta release note
  • change: release v1.0.0

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

bluzky/salad_ui was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 64090eaee36b21e68c9eeef9bcdd3c01801a5467 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.