Exadel Smart Library
UI component library with flair and precision
ESL is an open-source web components library that helps developers create modern-looking, effective, and user-friendly interfaces faster.
Why the ESL Web Components Library?
- Efficient
Our library reduces the work needed to create reusable UI components by giving you a reliable base to customize and expand on for fast and accurate development.
- Fast
With ESL, there’s no need to write lengthy markup — the reusable elements in our UI component library are small, but they’re designed to be the optimal building blocks for your content.
- Light
We specifically designed our reusable web components to work quickly and efficiently in browsers, cutting out the unnecessary code that takes a toll on user experience.
- Powerful
While the modules in our web components library may be small, they’re also universal, allowing you to mix and match the UI components at will to create large modules.
- Tested
We covered all of our utilities with unit tests to make ESL the best front end component library, which means every new addition works just as expected.
- Versatile
Our UI component library doesn't introduce any additional restrictions — only benefits, as it offers utilities and framework-agnostic web components that work with any tech stack.
Browser Support
Our web components library uses built-in browser functionality — Web API and ECMAScript 6 features that are fully supported by modern browsers such as Chrome, Firefox, Safari, or Edge.
If you want our UI component library to work in older browsers, you can use one of the polyfill lists — "light" or "full."
Let's Get Started
Join the array of consumers who successfully use our UI component library. ESL brings to you a number of ultra-light reusable UI components to create unique layouts and utilities to improve the development experience.
Our News
-
⚡ ESL v6.0.0 is out! ⚡
ESL 6.0.0 is now available on npm.
This major release focuses on cleanup: safer parsing, long-postponed API removals, pragmatic component polish, and a more predictable base for what comes next in the ESL ecosystem.
What stands out in v6
- Safer config parsing.
evaluateis gone;parseObject/parseObjectSafeare now the supported, explicit path. - Legacy cleanup finally lands. Deprecated utilities and compatibility aliases are removed across the library.
- Core components get practical polish. Popup alignment is clearer, anchor-nav is more explicit, line-clamp gets new helpers, and carousel / footnotes / toggleables are refined.
- Tooling moves forward. ESL linting is centered on
@exadel/eslint-config-esl, Stylelint config is on v17, and website e2e now runs on Playwright.
Ecosystem updates around the release
@exadel/eslint-plugin-eslis no longer the recommended path; use@exadel/eslint-config-eslinstead.- UI Playground makes a one-time jump from
1.0.0to6.0.0to align with the monorepo; future public modules are expected to version more independently.
Upgrade and migration
If you are upgrading from a late v5 release, the move is usually straightforward — but this is still a good release to review once with the overview and migration notes at hand.
What is next
Next up: AI Skills on the website and broader agent-friendly adaptation across the library (targeted for 6.1.0), TypeScript 6 migration work, and cleaner CSS asset distribution on the path to v7.
So while v6 is primarily a stability and cleanup milestone, it also clears the way for the next wave of platform work.
- Safer config parsing.
-
ESL v5.15.0
ESL 5.15.0 is out now on npm – a light stability pass while we progress toward v6.
- Carousel: smarter navigation context ("current" marker + helper APIs) to simplify custom indicators and status UI.
- Popup: race condition fix for rapid open / close cycles improves reliability in dense interactive layouts.
- Docs & site polish: improved mobile table readability and spacing.
Forward look: work on the v6 major (including final removal of the deprecated standalone ESL plugin) continues; adopt the unified ESL ESLint config from 5.14+ to stay aligned.
-
ESL v5.14.0
ESL 5.14.0 is out now on npm – a focused release streamlining linting adoption, strengthening interactive components, and expanding JSX / TSX ergonomics.
- Unified linting:
@exadel/eslint-config-eslnow embeds ESL migration & support rules.@exadel/eslint-plugin-eslis deprecated from this version and will be removed in 6.0.0 – switch to the config to stay current. - JSX / TSX DX: global
ESLIntrinsicElementsdeclarations and an extended TSX guide with full decorator documentation accelerate component authoring. - Interactive components: Carousel gains configurable autoplay restriction logic; Popup exposes lightweight param access with automatic cleanup; Trigger now consistently emits the
esl:change:actionevent; Deprecated action param aliases removed across components. - Site & docs: refreshed navigation & sidebar UX, new decorator docs set, TSX guide, and general cleanup (unused assets & tags removed) for a leaner footprint.
Upgrade notes: adopt the unified ESL ESLint config to prepare for v6, and review carousel / popup configuration if you rely on custom autoplay or popup parameter handling.
- Unified linting:
-
ESL v5.12.0 - v5.13.0
ESL 5.13.0 is out now on npm – delivering a stronger carousel autoplay experience, smarter event type handling, and safer foundations across these two incremental releases.
- Carousel: refined autoplay engine (new interaction scope, smarter pause logic, resilient state machine) drives smoother, more controllable slide engagement.
- Content presentation: new
esl-line‑clampauto mode and tuple mask option. - Developer & platform safety: new
@safedecorator plus stricter typed event targets reduce edge‑case failures and improve diagnostics. - Productivity & UX: autofocus prioritization in toggleable components and clearer media/query error handling lower friction in assembly and QA.
- Security & robustness: utilities hardened against prototype pollution; broader error handling and fallback behaviors reduce runtime risk.
-
ESL v5.11.0
ESL v5.11.0 is now available!
This release adds per‑slide autoplay timeouts for
esl-carouselvia theesl-carousel-autoplayplugin. It also fixes an incorrect slide‑move debug log when adding a slide via the JS API before it’s in the DOM.We also merged the UI Playground codebase into the ESL monorepo. The package remains private; we’ll present it later once docs are moved to the ESL site and independent versioning is in place.
-
ESL v5.10.0
ESL v5.10.0 is now available!
This release introduces the new
esl-line-clampmixin, providing a clean solution for limiting text content within blocks. We've enhanced event handling with improved type support inESLEventUtilsand expanded our TypeScript utilities for better development experience. The update also includes important fixes foresl-carouselwheel event handling and resolves missing event type definitions for custom event targets. Additionally, we've updated our stylelint plugin dependency to version 4.0.0, which now requires stylelint 16.22.0 or higher for improved styling capabilities.