Changelog
0.3.0
Minor Changes
-
9902609: ### PriceBox
Breaking Changes:
- Renamed
withoutVatprop tofooter(now acceptsReact.ReactNode) - Renamed
reserveVatSpaceprop toreserveFooterSpace - Split “level” into two axes:
typefor promotional styling (priceBomb, superPrice, discount, neo, preorder, alzaPlus, code, new, blackFriday) andpriceLevelfor membership/tier styling (basic, bronze, silver, gold, b2b, benefit, isic, instalmentsD, instalmentsC) alzaPlustype header is now uppercase (was lowercase)
New Features:
- Added
renderprop for polymorphic root rendering — defaults to<span>, can be overridden (e.g.render={<div />}) - Added
pricePrefixandpriceSuffixprops for text before/after the price (e.g. “od”, “měsíčně”) - Added
strikeThroughOriginalPriceprop to manually enable strikethrough on the original price (automatically enabled fortype="discount") - Added
alignprop ('center' | 'left') for left-aligned price boxes — bg variants (full-bg / badge-level) keep inner content centered while the outer container respects left alignment - Added
reserveHeaderSpaceprop to reserve space for header even when hidden (useful for alignment of sibling price boxes) - Added new type variants:
code(coupon),new(new product),blackFriday,alzaPlus - Added new price level variants:
instalmentsD,instalmentsC - Added
PriceBoxProviderfor automatic alignment of sibling price boxes - Added hover effects that automatically apply when inside
<button>or<a>elements
- Renamed
0.2.0
Minor Changes
- Add Slider and RangeSlider component
0.1.20
Patch Changes
- FIX: Flat
<Button />styling:- disabled styling (cursor, bg-color if applicable)
- hover/active bg-color (partialy transparent black)
- focus-outline applies correctly
- FIX:
<Dialog />+<Drawer />uses semantic color instead of hardcoded # - FIX: Typo class in
<Dialog />
0.1.19
Patch Changes
- Changed
<Link />component plain text render.- Plain text doesn’t inherit link color (primary, secondary, etc), but uses
semantic-body-neutralby default (approved by UX). Removed the propallowPlainTextas it is a default behaviour now. If you need to change the non-interactive color, use css variable--link-color-inactiveor tailwind class[--link-color-inactive:*], e.g.[--link-color-inactive:theme(colors.semantic-link-primary)],[--link-color-inactive:inherit]. - Also
disabledis now applied also on plain text. noninteractiverenamed toinactive.
- Plain text doesn’t inherit link color (primary, secondary, etc), but uses
0.1.18
- Fix previous version (didn’t apply changes)
0.1.17 - BROKEN DON’T USE - Changes moved to next version
Patch Changes
- Update Text Input border color to
border-semantic-border-neutral - Update Text Input right icon size to 20px and default color to
text-basic-neutral-500, fix vertical align - Text Fields support type update to
string | React.ReactNodeso it would accept JSX (for example password strength progress bar)
0.1.16
Patch Changes
-
<Link />component renders<span />instead of<button />element to allow correct text wrapping. It uses<Link.SpanButton />component, can be used for externalrenderprop.Added prop
allowPlainTextto<Link />component to render noninteractive spans when nohreforonClickis passed (e.g. product link that has disabled product detail page).
0.1.15
Patch Changes
disabledandaria-disablednow correctly propagate to IconButton
0.1.14
Patch Changes
-
Add automated changelog generation workflow
Implemented Changesets for automated changelog generation from conventional commits. The changelog is now symlinked to the docs site for automatic rendering. Developers create changesets during development, and changelogs are generated during the release process with manual review before publishing.
All notable changes to the Alza React UI library will be documented in this file.
The format is based on Keep a Changelog , and this project adheres to Semantic Versioning .
[Unreleased] - ADS 2.1
Breaking Changes
Button Components
-
BREAKING: IconButton now requires explicit
aria-labelortooltipprop for accessibility- Reason: Icon-only buttons must have accessible labels for screen readers. This requirement is now enforced at the type level.
- Migration: All IconButton components must now explicitly provide either
aria-labelortooltipprop (or both). You can no longer omit both.
// Before (ADS 2.0) <IconButton><TrashIcon /></IconButton> // After (ADS 2.1) <IconButton aria-label="Delete"><TrashIcon /></IconButton> // OR <IconButton tooltip="Delete"><TrashIcon /></IconButton> // OR if using external tooltip, pass tooltip={null} <IconButton tooltip={null} aria-label="Delete"><TrashIcon /></IconButton>- Note: If using an external tooltip library, pass
tooltip={null}to the IconButton and providearia-label. This makes it explicit that you’re handling the tooltip externally while maintaining accessibility.
-
BREAKING: Renamed button size
normaltomediumfor better semantic clarity- Reason: The term “medium” explicitly indicates it’s the middle size option in the
small | medium | largespectrum, making the API more intuitive and self-documenting - Migration: Replace all
size="normal"withsize="medium"in Button, IconButton, and LoadingButton components
- Reason: The term “medium” explicitly indicates it’s the middle size option in the
Color System
-
BREAKING: Complete redesign of semantic color system from ADS 2.0 to ADS 2.1
- See Migration Guide for complete color mapping
-
BREAKING: Removed 26 basic color variables from ADS 2.0
- Removed colors include:
basic-neutral-550,basic-blue-350, variousbasic-green-*,basic-yellow-*,basic-orange-*, andbasic-red-*variants - Migration: Use new color scales or semantic color tokens
- Removed colors include:
-
BREAKING: Changed values for neutral color scale for improved contrast
- All
basic-neutral-*values (100-800) have been updated with new hex values - See migration guide for complete before/after comparison table
- Migration: Visual review recommended for components using neutral colors
- All
Added
Button Utility Classes
- NEW: Introduced
ads-btn-*utility classes for advanced use cases and non-React environments- Recommended: Continue using React components (
<Button>,<IconButton>,<LoadingButton>) for standard usage - they provide an easy, type-safe API - Use utility classes for:
- Non-React environments (plain HTML, server-side templates, other frameworks)
- Granular control over custom button styles
- Framework-agnostic components
- Classes:
ads-btn,ads-btn-small/medium/large,ads-btn-primary/secondary/tertiary/danger/accent,ads-btn-icon,ads-btn-flat - Example:
<button class="ads-btn ads-btn-medium ads-btn-primary">Click me</button> - See Button Classes Documentation for complete reference
- Recommended: Continue using React components (
Components
- NEW:
LoadingButtoncomponent with animated loading states- Smooth slide and blur animations using Framer Motion
- Automatic dimension locking to prevent layout shift
- Loading cursor indicator
- Full Button API compatibility with additional
isLoadingprop - Import:
import { LoadingButton } from '@alza/react-ui/loading-button'
Colors
- NEW: Complete violet color scale (
basic-violet-100throughbasic-violet-900) - NEW: Complete B2B color scale (
basic-b2b-100throughbasic-b2b-900) - NEW: Comprehensive blue light scale (
basic-blue-light-100throughbasic-blue-light-900) - NEW: Complete blue dark scale (
basic-blue-dark-100throughbasic-blue-dark-900) - NEW: Extended green scale (
basic-green-100throughbasic-green-900) - NEW: Extended yellow scale with marketing variant (
basic-yellow-100throughbasic-yellow-900,basic-yellow-mkt) - NEW: Extended orange scale (
basic-orange-100throughbasic-orange-900) - NEW: Extended red scale (
basic-red-100throughbasic-red-900)
Semantic Colors
- NEW: Structured semantic color system with categories:
- Text: Split into headline and body variants with neutral/on-dark options
- Availability: Added
availability-for-order - Links: Added
link-secondary - Backgrounds: Added light/dark variants for positive, negative, warning, and brand colors
- Backgrounds: Added
background-tertiaryandbackground-dialog - Borders: Added
border-brand,border-focused - Special: Added dedicated tokens for gold, silver, bronze, B2B, benefit, and ISIC
Features
- NEW: Button components now properly handle
aria-disabledstate- Click handlers are prevented when button has
aria-disabled="true" - LoadingButton sets
aria-disabledduring loading state for better accessibility
- Click handlers are prevented when button has
Changed
Button Components
-
IMPROVED: Button hover/active states now use
color-mix()instead of linear gradients- Hover: 8% darkening via
color-mix(in srgb, var(--btn-bg) 92%, black 8%) - Active: 16% darkening via
color-mix(in srgb, var(--btn-bg) 84%, black 16%) - Better performance and cleaner CSS output
- Hover: 8% darkening via
-
IMPROVED: Reorganized button component file structure into subdirectories
- Each button variant now has its own directory
- Shared utilities (
button.common.ts,button.docs.mdx) remain at button level - No changes to import paths - internal organization only
Documentation
-
NEW: Comprehensive button utility class documentation in
button.docs.mdx- Complete reference for all
ads-btn-*classes - Detailed descriptions of what each class provides
- CSS variable documentation
- State handling documentation
- Usage examples
- Complete reference for all
-
NEW: ADS 2.1 Migration Guide (
ads-2.1-migration.docs.mdx)- Complete color system comparison
- Button component migration steps
- Common migration patterns
- Breaking changes summary
- Migration checklist
Fixed
- FIX: Button components now correctly prevent onClick handlers when disabled or aria-disabled
- FIX: LoadingButton properly maintains dimensions during loading state transitions
- FIX: LoadingButton animation timing synchronized with motion callbacks (no setTimeout)
Internal
- REFACTOR: Button component imports updated for new directory structure
- REFACTOR: LoadingButton imports updated to reference sibling button directory
- BUILD: Updated package.json export paths for new button directory structure
./button→./dist/components/button/button/button.js./icon-button→./dist/components/button/icon-button/icon-button.js./loading-button→./dist/components/button/loading-button/loading-button.js
File Structure Changes
Button Components Directory
Before (ADS 2.0):
button/
├── button.tsx
├── button.stories.tsx
├── button.common.ts
├── icon-button.tsx
├── icon-button.stories.tsx
├── loading-button.tsx
└── loading-button.stories.tsx
After (ADS 2.1):
button/
├── button.common.ts (shared)
├── button.docs.mdx (shared)
├── button/
│ ├── button.tsx
│ └── button.stories.tsx
├── icon-button/
│ ├── icon-button.tsx
│ └── icon-button.stories.tsx
└── loading-button/
├── loading-button.tsx
└── loading-button.stories.tsxMigration Path
From ADS 2.0 to ADS 2.1
-
Update IconButton Accessibility
// Before <IconButton><TrashIcon /></IconButton> // After - must provide aria-label or tooltip <IconButton aria-label="Delete"><TrashIcon /></IconButton> -
Update Button Sizes
// Before <Button size="normal" /> // After <Button size="medium" /> -
Consider Button Utility Classes (Optional, for advanced cases)
// ✅ Recommended - Continue using React components <Button size="medium" color="primary">Click</Button> // ✅ Use utility classes for non-React or custom cases // Example: Plain HTML, server-side templates <button class="ads-btn ads-btn-medium ads-btn-primary">Click</button> // Example: Highly custom button with granular control <button class="ads-btn ads-btn-large ads-btn-primary rounded-full shadow-lg"> Custom </button> -
Update Color References
- Consult the Migration Guide for complete color mappings
- Most semantic colors have been renamed or restructured
- Many basic colors have been added, removed, or changed
- See color comparison tables in migration guide showing old vs new hex values
-
Adopt New LoadingButton
import { LoadingButton } from '@alza/react-ui/loading-button'; <LoadingButton isLoading={isSubmitting} onClick={handleSubmit}> Submit </LoadingButton>;
Deprecation Notices
- DEPRECATED: All ADS 2.0 semantic color variables are deprecated and will be removed in the next major version
- See migration guide for complete mapping from old to new semantic colors
Notes
- This release includes breaking changes. Please review the Migration Guide carefully
- The
ads-prefix was added to prevent conflicts with global CSS and third-party libraries - Color changes are based on ADS 2.1 design system specifications from Figma
- All changes have been documented with reasoning to help understand design decisions
For detailed migration instructions, see:
Historical Changelog (Pre-Changesets)
The following changelog entries were maintained manually before the adoption of automated changelog generation via Changesets and conventional commits. New entries will be generated automatically based on changesets created during development.
Note: Future releases (v0.1.14 and beyond) will follow the Changesets format with versioned sections and automated changelog entries based on conventional commits.