## 1.4.0

### Bug Fixes

- **Fixed**: `CNTabBar` top-edge shadow bleeding over modals / bottom sheets — the regression of Issue #2 that landed between v1.3.0 and v1.3.8 (Issue #2)
  - Root cause: in v1.3.3 the `clipsToBounds = true` containment from the original v1.3.0 fix was made conditional and disabled on iOS 26+. That removed the only thing keeping the UITabBar's top-edge hairline inside the platform view's bounds.
  - `container.clipsToBounds = true` restored unconditionally on the regular tab-bar platform view (5 sites — single-bar and split-bar in both `init` and `setLayout`)
  - Added `bar.shadowImage = UIImage()` on every `UITabBar` instance as belt-and-suspenders against iOS 26 ignoring the appearance-level shadow override

- **Fixed**: Liquid Glass halo rendering outside platform-view bounds during iOS route transitions — the "placeholder square" reported across CNButton, CNTabBar, and other widgets (Issue #29)
  - Root cause: iOS 26 Liquid Glass effects (`UIButton.Configuration.glass()`, `UITabBar` glass material, `.glassEffect()` SwiftUI modifier) render a translucent halo that extends slightly outside the view's frame. Without containment, that halo became visible during route transitions as a square outline around the widget on the outgoing page.
  - Same containment pattern as Issue #2 applied to: `CNButton`, `CNPopupMenuButton`, `CNSearchBar`, `CNFloatingIsland`, `CNLiquidGlassContainer`
  - `container.clipsToBounds = true`, `container.layer.shadowOpacity = 0`, `container.layer.backgroundColor = clear`, `container.isOpaque = false` plus the same on the inner subview where applicable

- **Fixed**: `CNTabBar` with `searchItem` — the floating Liquid Glass search orb's top edge was being cropped (commented in Issue #31 by @el2zay)
  - The iOS 26+ search-tab-bar variant (`CupertinoTabBarSearchPlatformView`) now leaves its container un-clipped so the search orb can render its top edge correctly. Top-edge hairline is still suppressed via `bar.shadowImage = UIImage()` and `bar.layer.shadowOpacity = 0`, so the original Issue #2 shadow bleed does not return.

- **Fixed**: `CNGlassButtonGroup` badge X-position — the last badge floated near the screen edge instead of sitting on its button when buttons were centered as a tight pill inside a wider container
  - `updateBadgePositions()` now estimates each button's rendered width from icon size + padding + minHeight (capsule width = max(intrinsic, minHeight)), computes the centered-HStack starting offset, and places each badge at the actual button's top-right corner instead of dividing container width evenly across button count.

- **Fixed**: `CNGlassButtonGroup` Auto Layout `_UITemporaryLayoutWidth = 0` warning on initial mount — silenced by lowering hosting-view constraint priorities to `.defaultHigh` so UIKit can break them silently during the brief temp-width=0 phase without logging.

### Test demos added

- `Testing → #2: Modal bottom sheet shadow` — opens a `CupertinoModalPopup` over a `CNTabBar` so the top-edge shadow bleed (or its absence) is easy to inspect
- `Testing → #29: Per-widget halo test` — one slow-transition push per widget so each can be verified in isolation
- `Testing → CNTabBar split-search clip` — `CNTabBar` with a `searchItem` so the floating orb is easy to inspect at the bottom-right
- `Testing → #31: TextField disappear in modal` — Material `Scaffold` + `CNTabBar` (with `searchItem`) in `bottomNavigationBar`, opens a modal sheet with a Material `TextField` and a `CupertinoTextField` for comparison

### Pana

- 160/160

---

## 1.3.9

### New Features

- **Added**: `checked` property on `CNPopupMenuItem` for checkmark/selected state (Issue #28)
  - Native iOS uses `UIAction.state = .on` for native checkmark display
  - Supports single-selection, multi-selection, and mixed checked+disabled states
  - Flutter fallback shows a checkmark icon before the label

### Bug Fixes

- **Fixed**: `PlatformException(recreating_view)` on iOS hot restart (PR #30 by @lucakramberger)
  - New `PlatformViewGuard` utility delays platform view creation during startup
  - `CNTabBar` refactored from nested FutureBuilders to state-managed async pipeline
  - Native `deinit` cleanup added to tab bar platform views

---

## 1.3.8

### Bug Fixes

- **Fixed**: macOS build — resolved 5 compilation errors in native Swift code
  - `badgeCount` parameter missing from `setupSwiftUIButton` method
  - `.clear` color inference on `CALayer.backgroundColor` (now uses `NSColor.clear.cgColor`)
  - `FlutterPlatformView` protocol replaced with `NSView` for LiquidGlassContainer
  - Removed invalid `namespace` argument from `GlassButtonSwiftUI` call
  - `NSButton.title` non-optional handling

---

## 1.3.7

### New Features

- **Added**: Popup menu button support in `CNGlassButtonGroup` via `CNButtonData.popup()` (PR #23 by @byackee)
  - Mix regular icon buttons and popup menu buttons in the same glass button group
  - Native SwiftUI rendering with `UIMenu` support
  - `CNButtonDataPopupItem` model for popup menu items
- **Added**: `labelFontFamily` and `labelFontSize` properties for `CNTabBar` (PR #26, Issue #16 by @byackee)
  - Customize tab bar label font with any registered font family
  - Dynamic font updates via method channel

### Bug Fixes

- **Fixed**: `buttonCustomIconColor` now works on iOS 26 with Liquid Glass rendering (PR #24, Issue #21 by @byackee)
  - Color is now sent to the native side via `capturedButtonIconColor`
  - Native side applies `.withTintColor(.alwaysOriginal)` to preserve custom icon colors
  - Menu item `iconColor` also supported for custom `IconData` icons
- **Fixed**: `CNSwitch` no longer pushed upward by keyboard (PR #25, Issue #4 by @byackee)
  - iOS 16.4+: uses `safeAreaRegions.remove(.keyboard)` official API
  - Pre-iOS 16.4: runtime fix targeting the hosting view's private keyboard notification handler

---

## 1.3.6

### Bug Fixes

- **Fixed**: Horizontal glass button group "waist" effect — reduced toolbar shrinkage between adjacent buttons by enforcing minimum 80pt glass spacing for horizontal groups with 2+ buttons (PR #20 by @byackee)
- **Fixed**: `CNTabBar` now shows a Flutter fallback tab bar while the native view initializes, instead of blank space for ~2 seconds (Issue #5)
- **Fixed**: `CNTabBar` with 5 items no longer has sporadic missing labels — added a second refresh pass for slow-to-initialize native views (Issue #6)

### Improvements

- **Added**: macOS podspec for CocoaPods support (Issue #10)

---

## 1.3.5

### Bug Fixes

- **Fixed**: `CNTabBar` `iconSize` now correctly applies to `CNImageAsset` (SVG/image) icons (Issue #19)
  - Previously, only SF Symbol icons respected the `iconSize` property
  - Image assets loaded via `loadFlutterAsset` and `createImageFromData` now receive the size parameter

---

## 1.3.4

### New Features

- **Added**: `interaction` property for `CNButtonConfig` and `CNButtonDataConfig` (PR #15 by @anirudhrao-github)
  - Allows disabling button touch handling without changing visual appearance
  - When `interaction: false`, button maintains normal look but doesn't respond to touches
  - Useful for conditional interactivity while preserving UI consistency

### Improvements

- **Improved**: `LiquidGlassContainer` layout simplified for better parent alignment control

---

## 1.3.3

### New Features

- **Added**: `customIconSize` property for `CNButtonConfig` and `CNButtonDataConfig` (PR #12 by @anirudhrao-github)
  - Allows customizing the size of custom icons (IconData) in buttons
  - Previously hardcoded to 20.0 points, now configurable

- **Added**: `iconSize` property for `CNTabBar` to control SF Symbol icon sizes
  - Supports dynamic icon sizing with automatic height adjustment
  - Note: Icons above 30pt may have minor visual quirks due to UITabBar constraints

### Bug Fixes

- **Fixed**: `CNGlassButtonGroup` no longer forces equal width on all buttons (PR #12 by @anirudhrao-github)
  - Buttons now use their intrinsic width based on content
  - Label buttons can now be wider than icon-only buttons in the same group
  - Uses SwiftUI `.fixedSize(horizontal: true, vertical: false)` for proper sizing

- **Fixed**: `CNTabBar.onTap` now fires for reselects (Issue #13)
  - Previously, tapping the already-selected tab did not trigger the callback
  - Now all taps fire `onTap`, allowing scroll-to-top or navigation reset on reselect

- **Fixed**: `CNTabBar` icon clipping on iOS 26+ Liquid Glass
  - Disabled `clipsToBounds` on iOS 26+ to allow proper Liquid Glass pill overflow
  - Tab bar height now adjusts dynamically based on icon size

### Improvements

- **Improved**: Initial layout rendering for `CNGlassButtonGroup`
  - Added immediate layout pass after view creation for correct first render

---

## 1.3.2

### New Features

- **Added**: Badge support for `CNGlassButtonGroup` icon buttons (PR #11 by @anirudhrao-github)
  - New `badgeCount` property on `CNButtonData.icon()` for displaying notification badges
  - Badges display as red circles with white text, showing "99+" for counts over 99
  - Uses UIKit overlay on iOS to prevent glass effect sampling artifacts
  - Proper clipping during page transitions

### Improvements

- **Improved**: Added library-level documentation for better API discoverability
  - Enhanced dartdoc comments for `button`, `button_data`, `button_style`, and `cupertino_native` libraries
  - 91.4% API documentation coverage

- **Fixed**: Dart formatting issues for pub.dev compliance
  - Resolved formatting in `button.dart` and `glass_button_group.dart`
  - Achieves 160/160 pana score

---

## 1.3.1

### Bug Fixes

- **Fixed**: Tint color now works correctly when buttons are inside `CNGlassButtonGroup` (PR #8 by @anirudhrao-github)
  - Previously, button tint colors were ignored when placed inside grouped glass buttons
  - Now buttons properly inherit and display their configured tint colors within button groups

---

## 1.3.0

### New Features

- **Added**: `CNTabBarNative` - Native iOS 26 Tab Bar with full UITabBarController integration
  - Uses native `UITabBarController` + `UISearchController` for authentic iOS 26 liquid glass effects
  - `CNTabBarNative.enable()` / `CNTabBarNative.disable()` for app-level tab bar management
  - `CNTab` class for tab configuration with SF Symbols and search tab support
  - Callbacks: `onTabSelected`, `onSearchChanged`, `onSearchSubmitted`, `onSearchCancelled`, `onSearchActiveChanged`
  - Full badge count support and dynamic styling

- **Added**: `CNSearchScaffold` - Native search scaffold controller for standalone search UI

- **Added**: `CNToast` - Toast notification widget with Liquid Glass effects
  - Static methods: `show()`, `success()`, `error()`, `warning()`, `info()`, `loading()`
  - Duration presets: short (2s), medium (3.5s), long (5s)
  - Position options: top, center, bottom
  - Auto-dismiss with queue management
  - `CNLoadingToastHandle` for dismissing loading toasts

- **Added**: `label` property to `CNTabBarSearchItem` for customizing the search tab label
  - Defaults to 'Search' to match iOS native behavior

- **Added**: `preserveTopToBottomOrder` property to `CNPopupMenuButton` (Issue #3)
  - When `true`, menu items maintain top-to-bottom order (1,2,3,4) regardless of menu direction
  - Default `false` preserves native iOS behavior where item 1 stays closest to the button
  - Uses `UIDeferredMenuElement.uncached` for dynamic position detection

### Improvements

- **Enhanced**: `PlatformVersion` now auto-initializes on first access
  - No longer need to call `await PlatformVersion.initialize()` in `main()`
  - Just use `PlatformVersion.isIOS26OrLater` directly
  - Old `initialize()` method kept for backwards compatibility (marked deprecated)

- **Added**: New helper properties to `PlatformVersion`:
  - `isIOS`, `isMacOS`, `isAndroid`, `isApple`
  - `isIOSVersionInRange(min, max)`, `isMacOSVersionInRange(min, max)`

### Bug Fixes

- **Fixed**: `CNPopupMenuButton.icon` now respects the order defined in items (Issue #3)
  - Added `preserveTopToBottomOrder` parameter to control item ordering behavior
  - Native iOS behavior keeps first item closest to button; set `preserveTopToBottomOrder: true` for consistent top-to-bottom order

- **Fixed**: Tab bar shadow artifact appearing over modals and bottom sheets (Issue #2)
  - Changed `configureWithDefaultBackground()` to `configureWithTransparentBackground()`
  - Added explicit shadow removal: `shadowColor = .clear`, `shadowImage = UIImage()`
  - Added `container.clipsToBounds = true` and `layer.shadowOpacity = 0`

- **Fixed**: Search bar keyboard auto-opening behavior (Issue #1)
  - `automaticallyActivatesSearch: false` now properly prevents keyboard from auto-opening
  - This is native iOS behavior - the search bar expands but keyboard only opens on text field tap

---

## 1.2.0

### New Features

- **Added**: iOS 26 Search Tab Feature for CNTabBar with animated Liquid Glass expansion
  - Native `UISearchTab`-style search integration that follows Apple's iOS 26 design
  - Search button expands into a full search bar with smooth spring animation
  - Tabs collapse to icon-only mode when search is active
  - Full Flutter fallback for iOS < 26 with identical behavior

- **Added**: `CNTabBarSearchItem` configuration class for search tab customization
  - `placeholder`: Custom placeholder text for the search field
  - `onSearchChanged`: Callback for live filtering as user types
  - `onSearchSubmit`: Callback when user submits search
  - `onSearchActiveChanged`: Callback for expand/collapse state changes
  - `automaticallyActivatesSearch`: Control keyboard auto-activation behavior

- **Added**: `CNTabBarSearchStyle` for visual customization
  - Icon sizes, colors, and active states
  - Search bar dimensions, padding, and border radius
  - Animation duration control
  - Clear button visibility toggle

- **Added**: `CNTabBarSearchController` for programmatic search control
  - `activateSearch()` / `deactivateSearch()`: Expand/collapse search programmatically
  - `text` property: Get/set search text
  - `clear()`: Clear search text with optional deactivation
  - Listener support for reactive state management

### Improvements

- **Enhanced**: `automaticallyActivatesSearch` now properly controls keyboard behavior
  - When `false`: Search bar expands but keyboard only opens when user taps the text field
  - When `true` (default): Keyboard opens automatically when search expands
  - Mirrors `UISearchTab.automaticallyActivatesSearch` from UIKit

### Bug Fixes

- **Fixed**: `MissingPluginException` errors during hot reload for `setItems` and `refresh` methods
  - Added try-catch error handling to prevent crashes during development
  - Search view now handles all expected method channel calls

---

## 1.1.9

### New Features

- **Added**: Lightweight `setBadges` method for CNTabBar to update badge values without rebuilding the entire tab bar
  - Previously, badge updates required recreating all tab bar items which caused visible flicker
  - New implementation only updates `badgeValue` on existing UITabBarItems for smooth, instant badge changes
  - Automatically detected when only badges changed (not labels, icons, or symbols) and uses fast path

### Improvements

- **Optimized**: CNTabBar now detects badge-only updates in `_syncPropsToNativeIfNeeded()` and calls lightweight native `setBadges` method instead of full `setItems` rebuild
- **Performance**: Badge updates are now instant with no view recreation or animation interruption

---

## 1.1.8

### Fixes

- **Fixed**: Visual update - minor bug fixes and improvements

---

## 1.1.7

### Fixes

- **Fixed**: Split mode tab selection bug where the wrong tab appeared selected on first load
  - **Issue**: When using `split: true` in CNTabBar, the right bar (e.g., Rewards tab) would incorrectly appear selected even when the left bar tab (e.g., Discover) was actually selected
  - **Root Cause**: In the `refresh` method, when restoring selection after cycling through tabs for label rendering, the code was incorrectly setting `right.selectedItem = rightItems.first` when `rightOriginal` was nil
  - **Solution**: Changed to restore the original selection directly (`right.selectedItem = rightOriginal`), which correctly keeps the right bar unselected when a left bar tab is active

- **Fixed**: Added `setSelectedIndex` call after `refresh` in Flutter widget to ensure correct selection state after view initialization

---

## 1.1.6

### Fixes

- **Fixed**: Attempted fix for split mode tab selection (superseded by 1.1.7)

---

## 1.1.5

### Breaking Changes

- **iOS Minimum Version**: Raised iOS deployment target from 13.0 to **15.0**
  - Required for `@FocusState` and other iOS 15+ SwiftUI features
  - Most production apps already target iOS 15+ (released September 2021)

### Fixes

- **Fixed**: Swift compiler error `'FocusState' is only available in iOS 15.0 or newer`
- **Fixed**: Swift compiler error `'self' used before 'super.init' call` in CNSearchBar
- **Fixed**: Pod installation issues when used in projects with iOS 15+ deployment target

---

## 1.1.4

### Fixes

- **Fixed**: Minor internal improvements

---

## 1.1.3

### Fixes

- **Fixed**: Full 50/50 pub.dev static analysis score (160/160 pana points)
- **Fixed**: All remaining lint and formatting issues

---

## 1.1.2

### Fixes

- **Fixed**: Dart formatter compliance

---

## 1.1.1

### Fixes

- **Fixed**: Resolved `use_build_context_synchronously` lint warnings

---

## 1.1.0

### Documentation Overhaul

- **Added**: Complete documentation for all widgets with real iOS 26 screenshots
- **Added**: CNSwitch documentation with controller examples
- **Added**: CNPopupMenuButton documentation with text and icon variants
- **Added**: CNSegmentedControl documentation with SF Symbols support
- **Added**: Button Styles Gallery showcasing multiple button styles
- **Added**: Popup menu opened state preview image
- **Enhanced**: Features table with Controller column
- **Enhanced**: All images now use centered alignment for better presentation

### New Screenshots

- Real iOS 26 Liquid Glass component screenshots (replacing AI-generated placeholders)
- Button styles gallery (4 preview images)
- Switch, Slider, Popup Menu, Segmented Control, Tab Bar previews
- Popup menu opened state preview

### Test Suite Updates

- **Added**: Comprehensive widget tests for CNSearchBar, CNFloatingIsland, CNGlassButtonGroup
- **Added**: Controller tests for CNSearchBarController, CNFloatingIslandController, CNSliderController
- **Added**: Data model tests for CNButtonData, CNButtonDataConfig, CNSymbol, CNImageAsset
- **Updated**: Platform and method channel tests with error handling and null response tests
- **Updated**: Enum tests for all new enums (CNGlassEffect, CNGlassEffectShape, CNSpotlightMode, etc.)
- **Total**: 82 tests covering all major components and APIs

---

## 1.0.6

### Improvements

- **Fixed**: Dart formatting issues to achieve full 50/50 static analysis score on pub.dev
- **Added**: Preview image for pub.dev package page

---

## 1.0.5

### Improvements

#### Static Analysis Cleanup
- **Fixed**: All `use_build_context_synchronously` warnings by capturing context-derived values before async gaps
- **Fixed**: `dangling_library_doc_comments` warning
- **Fixed**: `unnecessary_library_name` and `unnecessary_import` warnings
- **Improved**: Pub points score (static analysis section)

---

## 1.0.4

### Bug Fixes

#### CNButton Tap Detection (iOS < 26 Fallback)
- **Fixed**: Unreliable tap detection in CupertinoButton fallback mode
- **Issue**: Buttons showed press animation but `onPressed` didn't fire consistently
- **Solution**: Added `minSize: 0` to prevent CupertinoButton's internal minimum size from conflicting with SizedBox constraints
- **Added**: Explicit `borderRadius` and `pressedOpacity` for better hit testing and visual feedback

---

## 1.0.3

### Bug Fixes

#### Critical: iOS 18 Crash Fix
- **Fixed**: Reverted GestureDetector overlay that caused crash on iOS 18
- **Error**: `unrecognized selector sent to instance 'onTap:'`
- **Solution**: Removed Stack/GestureDetector approach, kept simple CupertinoButton

#### Icon Button Padding (kept from 1.0.2)
- **Fixed**: Increased default padding for icon buttons from 4 to 8 pixels

---

## 1.0.2 (BROKEN - DO NOT USE)

### Bug Fixes

#### CNButton Tap Detection (iOS < 26 Fallback)
- **BROKEN**: Added GestureDetector overlay that crashed on iOS 18
- Use 1.0.3 instead

#### Icon Button Padding
- **Fixed**: Increased default padding for icon buttons from 4 to 8 pixels
- Icons now have proper breathing room from the button border

---

## 1.0.1

* **Pub Points Improvement**: Addressed static analysis issues to improve package score.
* **Fix**: Resolved `use_build_context_synchronously` warnings across multiple components.
* **Fix**: Replaced deprecated `Color.value` and `withOpacity` usages with modern alternatives.
* **Documentation**: Added missing documentation for public members.

## 1.0.0

**Major Release - Complete iOS Fallback Fixes**

This release addresses critical issues that caused components to malfunction on iOS versions below 26.

### Breaking Changes
- Package renamed from `cupertino_native_plus` to `cupertino_native_better`
- Main import changed to `package:cupertino_native_better/cupertino_native_better.dart`

### Bug Fixes

#### CNButton Label Disappearing (iOS < 26)
- **Fixed**: Buttons with both icon AND label now correctly display both elements in fallback mode
- **Root Cause**: `widget.isIcon` was returning `true` for any button with an icon, even if it also had a label
- **Solution**: Changed fallback check to `widget.isIcon && widget.label == null` to only treat truly icon-only buttons as icon-only

#### CNTabBar Icons Not Showing (iOS < 26)
- **Fixed**: Tab bar icons now render correctly using CNIcon instead of empty placeholder circles
- **Root Cause**: Fallback code only checked for `customIcon`, ignoring SF Symbols (`icon`/`activeIcon`)
- **Solution**: Added `_buildTabIcon()` helper that properly handles all icon types with correct priority

#### CNIcon/CNButton/CNPopupMenuButton Showing "..." (iOS < 26)
- **Fixed**: All CN components now properly render SF Symbols on older iOS versions
- **Root Cause**: Components were checking `shouldUseNativeGlass` (iOS 26+) for SF Symbol support, but SF Symbols work on iOS 13+
- **Solution**: Added new `supportsSFSymbols` getter that always returns true on iOS/macOS

### New Features
- Added `PlatformVersion.supportsSFSymbols` for checking SF Symbol availability (iOS 13+, macOS 11+)
- Comprehensive dartdoc documentation for all public APIs
- Full comparison table with other packages in README

### Documentation
- Complete rewrite of README with feature comparison
- Migration guide from cupertino_native_plus
- Comprehensive code examples for all widgets

---

## 0.0.9

* Package preparation for public release
* Updated repository URLs

## 0.0.8

* Fixed SF Symbol rendering in fallback mode for CNButton
* Fixed SF Symbol rendering in fallback mode for CNPopupMenuButton
* Added proper imports for CNIcon in button and popup components

## 0.0.7

* Added `supportsSFSymbols` getter to PlatformVersion
* SF Symbols now render natively on all iOS versions (13+), not just iOS 26+
* Separated Liquid Glass support (iOS 26+) from SF Symbol support (iOS 13+)

## 0.0.6

* **Dark Mode Support for LiquidGlassContainer**: Added automatic dark mode detection and synchronization for LiquidGlassContainer, ensuring the glass effect correctly adapts to Flutter's theme changes
* **Gesture Detection Fixes**: Fixed gesture handling in LiquidGlassContainer by wrapping platform views in IgnorePointer, preventing the native view from intercepting touch events and allowing child widgets to receive gestures properly
* **Brightness Syncing Improvements**: Enhanced brightness synchronization for icons and other components, ensuring they automatically update when the system theme changes

## 0.0.5

* **Performance Improvements**: Added method channel updates for button groups to prevent full rebuilds and eliminate freezes when updating button parameters
* **Preserved Animations**: Button groups now update smoothly without losing native animations when button properties change (icon, color, image asset, etc.)
* **Efficient Updates**: Implemented granular updates for individual buttons in groups, only updating changed buttons instead of rebuilding the entire group
* **Reactive SwiftUI Updates**: Converted button group SwiftUI views to use ObservableObject pattern for efficient reactive updates
* **Button Parameter Updates**: Individual buttons in groups can now be updated dynamically via method channels without full view rebuilds

## 0.0.4

* **PNG Image Support**: Added full support for PNG images in all components (buttons, icons, popup menus, tab bars, glass button groups)
* **Automatic Asset Resolution**: Implemented automatic asset resolution based on device pixel ratio, similar to Flutter's automatic asset selection. The system now automatically selects the appropriate resolution-specific asset (e.g., `assets/icons/3.0x/checkcircle.png` for @3x devices) or falls back to the closest bigger size
* **ImageUtils Consolidation**: Consolidated all image loading, format detection, scaling, and tinting logic into a shared `ImageUtils.swift` class for better code maintainability and consistency
* **Fixed PNG Rendering**: Fixed PNG image rendering issues in buttons and glass button groups
* **Fixed Image Orientation**: Fixed image flipping issues for both PNG and SVG images when colors are applied
* **Made buttonIcon Optional**: Made `buttonIcon` parameter optional in `CNPopupMenuButton.icon` constructor, allowing developers to use only `buttonImageAsset` or `buttonCustomIcon`
* **Improved Glass Effect Appearance**: Fixed glass effect appearance synchronization with Flutter's theme mode to prevent dark-to-light transitions on initial render
* **Enhanced Image Format Detection**: Improved automatic image format detection from file extensions and magic bytes
* **Better Fallback Handling**: Improved fallback behavior when asset paths fail to load, ensuring images still render from provided image bytes

## 0.0.3

* Updated README to showcase all icon types (SVG assets, custom icons, and SF Symbols)
* Added comprehensive examples for all icon types in Button, Icon, Popup Menu Button, and Tab Bar sections
* Added icon support overview at the beginning of "What's in the package" section
* Clarified that all components support multiple icon types with unified priority system

## 0.0.2

* Updated README with corrected version requirements and improved documentation
* Fixed iOS minimum version requirement (13.0 instead of 14.0)
* Removed incorrect Xcode 26 beta requirement
* Added Contributing and License sections
* Improved package description and introduction

## 0.0.1

* Initial release
* Fixed iOS 26+ version detection using Platform.operatingSystemVersion parsing
* Native Liquid Glass widgets for iOS and macOS
* Support for CNButton, CNIcon, CNSlider, CNSwitch, CNTabBar, CNPopupMenuButton, CNSegmentedControl
* Glass effect unioning for grouped buttons
* LiquidGlassContainer for applying glass effects to any widget
