Releases: cube-js/cube-ui-kit
v0.105.1
v0.105.0
Minor Changes
-
#977
18cb18bdThanks @tenphi! - Add support for dual-colorfillstyle. When two color tokens are provided (e.g.,fill="#primary #secondary"), the first color is applied asbackground-colorand the second as abackground-imagegradient layer via a registered CSS custom property (--tasty-second-fill-color), enabling smooth CSS transitions. ExplicitbackgroundImageorbackgroundproperties override the second color. -
#975
38152302Thanks @tenphi! - Replaced the toast system with a new implementation:- New API:
useToast()hook withtoast(),toast.success(),toast.danger(),toast.warning(), andtoast.note()methods - Progress toasts:
useProgressToast()hook for loading states that persist whileisLoadingis true - Declarative usage:
<Toast>and<Toast.Progress>components for declarative toast rendering - Default icons: Each theme now has a predefined icon (can be overridden)
- Collapse on hover: Toasts collapse when hovering the toast area to reveal content behind
- Deduplication: Toasts with the same content are deduplicated automatically
Breaking changes:
- Removed
useToastsApihook - migrate touseToast - Removed
attentiontheme - usewarninginstead - Renamed
headerprop totitle
- New API:
-
#974
402d5618Thanks @tenphi! - Add support for OKHSL color functions in style parsing and fix CSSWriter.add() method.
v0.104.0
Minor Changes
-
#972
c703a035Thanks @tenphi! - Addwarningandnotethemes to Button, Item, and ItemAction components. These themes are now available for all standard types (primary, secondary, outline, neutral, clear, link, item) in addition to the existing card type support. -
#972
c703a035Thanks @tenphi! - AddTabs.Actioncomponent for prefix/suffix slot actions with automatic dividers and size inheritance from Tabs context -
#972
c703a035Thanks @tenphi! - AddtabPickerPositionandscrollArrowsPositionprops to Tabs component for controlling where the tab picker and scroll arrows are rendered. Both accept'prefix' | 'suffix'with'suffix'as default. -
#972
c703a035Thanks @tenphi! - AddshowScrollArrowsprop to Tabs component for left/right navigation arrows that scroll overflowed tabs. Supportstrue,false, and'auto'(show only when overflow exists). -
#972
c703a035Thanks @tenphi! - Removepaneltab type and unify its visual style into thefiletype. Thefiletype now uses border bottom highlight on selection instead of fill highlight.
v0.103.0
Minor Changes
- #968
b1322fdcThanks @tenphi! - Added drag-and-drop reordering and inline editing capabilities to Tabs component. Tabs can now be reordered by dragging, and tab titles can be edited inline by double-clicking. AddedshowTabPickerprop to display a dropdown menu for quick tab navigation when tabs overflow. AddedTabTypeandTabSizetype exports. Improved tab indicator positioning and state management. Added disabled state support to Item and ItemButton components.
Patch Changes
- #971
08fa1670Thanks @tenphi! - Fixed inset, padding, and margin style handlers to correctly assign values to directions in the order they appear. Previously,inset: 'right 1x top 0'would incorrectly map values based on direction position rather than input order. Now values are correctly assigned: first value to first direction, second value to second direction, etc.
v0.102.0
Minor Changes
-
#966
3244c5d9Thanks @tenphi! - Refactor color system to use OKHSL format with unified constantsWhat's changed:
- Converted all color tokens from RGB to OKHSL format for perceptually uniform color manipulation
- Added color constants (
PURPLE_HUE,DANGER_HUE,MAIN_SATURATION, etc.) for consistent color values across themes - Moved color conversion utilities (
hslToRgb,okhslToRgb) to separate files (hsl-to-rgb.ts,okhsl-to-rgb.ts) - Renamed utility files to kebab-case for consistency (
filter-base-props.ts,get-display-name.ts, etc.) - Removed unused color tokens (
#draft,#dark-75,#pink-02,#pink-8,#pink-9) - Fixed hardcoded RGB value in
FileTabscomponent to use#bordertoken
Why:
OKHSL provides perceptually uniform color space, making it easier to create consistent color variations. Using constants ensures all theme colors maintain consistent saturation and lightness values.
Technical details:
- All color tokens now use
okhsl()format - Color conversion utilities properly handle OKHSL → RGB conversion for CSS variable generation
- Internal file organization improved with consistent naming conventions
-
#966
3244c5d9Thanks @tenphi! - Add warning theme and rename note theme across componentsWhat's changed:
- Added
warningtheme support toBadge,Tag, andItemcomponents - Renamed previous
notetheme towarning(yellow/amber) across the codebase - Added new
notetheme (violet) for informational content, available forcardtype items - Updated component documentation and stories to reflect new themes
- Updated notification icons to use
warningtheme instead ofnote
Components affected:
Badge: Addedwarningtheme optionTag: Addedwarningtheme optionItem: Addedwarning.cardandnote.cardtheme variantsNotificationIcon: Changed default/attention fromnotetowarningcolors
Migration:
- If you were using
theme="note"onBadgeorTagcomponents, change totheme="warning"for the same yellow/amber appearance - For violet informational cards, use
type="card" theme="note"onItemcomponent - Notification icons now use warning colors by default (previously note colors)
- Added
v0.101.0
Minor Changes
-
#964
1a2388beThanks @tenphi! - Breaking:ItemActionnow inheritsisDisabledstate from parentItemorItemButtonvia context. When the parent component is disabled, all nestedItemActioncomponents are automatically disabled.To keep an action enabled when the parent is disabled, explicitly set
isDisabled={false}on theItemAction:<Item isDisabled actions={ <> <ItemAction icon={<IconEdit />} tooltip="Disabled with parent" /> <ItemAction icon={<IconTrash />} tooltip="Still enabled" isDisabled={false} /> </> } > Disabled item with one enabled action </Item>
v0.100.0
Minor Changes
-
#960
d89a036eThanks @tenphi! - Add@propertiessupport for defining CSS@propertyat-rules in tasty styles.New features:
- Define CSS custom properties with
@propertiesin styles using token syntax ($name,#name) - Color tokens (
#name) auto-setsyntax: '<color>'and defaultinitialValue: 'transparent' - Double-prefix syntax (
$name,##name) for referencing property names in transitions and animations useProperty()hook andinjector.property()now accept token syntax- Global properties can be configured via
configure({ properties: {...} })
Example:
// Global properties (optional) configure({ properties: { $rotation: { syntax: "<angle>", initialValue: "0deg" }, }, }); // Local properties in styles const Component = tasty({ styles: { "@properties": { $scale: { syntax: "<number>", initialValue: 1 }, "#accent": { initialValue: "purple" }, // syntax: '<color>' auto-set }, transform: "rotate($rotation) scale($scale)", transition: "$rotation 0.3s, $scale 0.2s", // outputs: --rotation 0.3s, --scale 0.2s }, });
- Define CSS custom properties with
-
#960
d89a036eThanks @tenphi! - Add color token support tofadestyle property. You can now specify custom transparent and opaque colors for the gradient mask, and use multiple comma-separated groups to apply different colors per direction.Add multi-group support to
borderstyle property. Multiple comma-separated groups allow cascading border definitions where later groups override earlier ones for conflicting directions (e.g.,border="1bw #red, 2bw #blue top"). -
#962
09db7beeThanks @tenphi! - Improve background style handling in Tasty. Addimagestyle for background images. Thefillhandler now supports all background CSS properties (backgroundPosition,backgroundSize,backgroundRepeat,backgroundAttachment,backgroundOrigin,backgroundClip). Addbackgroundandimagetransition semantic names. DeprecatebackgroundColor,backgroundImage, andbackgroundstyles in favor offill,image, and separate background properties. -
#960
d89a036eThanks @tenphi! - AddeduseKeyframesandusePropertyReact hooks for declarative CSS @Keyframes and @Property definitions. These hooks follow the same patterns as existing hooks likeuseStylesanduseRawCSS, usinguseInsertionEffectfor proper style injection and cleanup. -
#963
290cfa6cThanks @tenphi! - Breaking: Changedoutlinestyle syntax to use slash separator for offset:outline: '2px solid #red / 4px'instead of the previous space-separated format. Also addedoutlineOffsetas a direct style prop. -
#963
290cfa6cThanks @tenphi! - Added slash separator support in style parser. Style values can now use/surrounded by whitespace to define parts (e.g.,'ellipsis / 3','2px solid #red / 4px'). Each part is available viagroups[n].partsarray for style handlers. -
#960
d89a036eThanks @tenphi! - AddedTabscomponent for organizing content into multiple panels with full accessibility support via React Aria. The component supports multiple visual styles (default, panel, radio), tab deletion, inline title editing, lazy rendering with content caching, and proper integration with Layout components for stretching panels to fill remaining space. -
#963
290cfa6cThanks @tenphi! - Breaking: EnhancedtextOverflowstyle handler with automatic setup for text truncation. Previously,textOverflow: 'ellipsis'only settext-overflow: ellipsis(which doesn't work withoutoverflow: hidden). Now it automatically addsoverflow: hiddenandwhite-space: nowrapfor single-line ellipsis, making it actually functional.New features:
textOverflow: 'ellipsis'- single-line truncation with ellipsis (now works correctly)textOverflow: 'ellipsis / 3'- multi-line truncation (3 lines) with-webkit-line-clamptextOverflow: 'clip'- single-line clip withoverflow: hidden
The
displayStylehandler now managesdisplay,hide,textOverflow,overflow, andwhiteSpacetogether. User-providedoverflowandwhiteSpacevalues take precedence over auto-generated ones fromtextOverflow. -
#958
22e0adc7Thanks @tenphi! - ### Added- Predefined tokens in
configure(): Define reusable tokens ($namefor values,#namefor colors) that are replaced during style parsing. Unlike component-leveltokensprop, predefined tokens are baked into the generated CSS for better performance and consistency.
configure({ tokens: { $spacing: "2x", "$card-padding": "4x", "#accent": "#purple", }, }); // Use in styles - tokens are replaced at parse time const Card = tasty({ styles: { padding: "$card-padding", // → calc(4 * var(--gap)) fill: "#accent", // → var(--purple-color) }, });
- Plugins can now provide predefined tokens via the
tokensproperty inTastyPlugin.
- Predefined tokens in
Patch Changes
-
#963
290cfa6cThanks @tenphi! - Aligned babel plugin configuration interface with runtimeTastyConfig. TheTastyZeroConfignow supportspluginsandparserCacheSizeoptions, and uses the sharedconfigure()function internally. -
#963
290cfa6cThanks @tenphi! - Reorganized internal style chunk definitions. Display-related styles (display,hide,textOverflow,overflow,whiteSpace,scrollbar) are now in a DISPLAY chunk. Layout styles (flow,gap, grid/flex properties) are in a separate LAYOUT chunk. -
#963
290cfa6cThanks @tenphi! - Consolidated style handlers to reduce redundant handler registrations:widthStylenow handlesminWidth,maxWidthdirectlyheightStylenow handlesminHeight,maxHeightdirectlypresetStylenow handles all typography props (fontSize,lineHeight,fontWeight,letterSpacing,textTransform,fontStyle,fontFamily,font) with or withoutpresetdefined
Font props support number values:
fontSize={14}→font-size: 14px,fontWeight={700}→font-weight: 700.The
fontprop has special handling:font="monospace"→var(--monospace-font),font={true}→var(--font),font="CustomFont"→CustomFont, var(--font). ThefontFamilyprop is a direct value without fallback. -
#959
ed477654Thanks @tenphi! - Add custom style handlers API viaconfigure()and plugins. Handlers transform style properties into CSS declarations and replace built-in handlers for the same style name. ExportstyleHandlersobject for delegating to built-in behavior when extending. -
#961
46e84833Thanks @tenphi! - Fix FilterListBox custom value styles not appearing until hover and leaking to other items after filter is cleared. The issue was caused by ListBox virtualization using index-based keys instead of actual item keys, causing React to incorrectly reuse DOM elements. AddedgetItemKeyto the virtualizer to use actual item keys for proper DOM reconciliation.Additionally, when
allowsCustomValueis enabled and there are filtered items visible, the custom value option is now visually separated from the filtered results using a section divider. The visibility check for filtered items now also considers previously-added custom values, ensuring the separator is shown when a search term matches an existing custom item.
v0.99.3
Patch Changes
- #955
edd8bfc6Thanks @tenphi! - Fix Dialog component to merge incoming style props instead of overwriting them. Update FilterPicker and Picker to correctly access trigger width usingUNSAFE_getDOMNode()and pass it to Dialog overlay via--overlay-min-widthCSS custom property. Update Picker overlay width calculation to usemax()function for better min-width handling.