Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
165 commits
Select commit Hold shift + click to select a range
5ff97dc
Added the Tv navigation support
TheNoumanDev Mar 6, 2026
370e028
Merge branch 'main' into android_TV_implementation
TheNoumanDev Mar 6, 2026
aea5ef4
chore(release): publish packages
TheNoumanDev Mar 6, 2026
ac926c6
merged main and resolved conflicts
TheNoumanDev Mar 27, 2026
96af6b0
chore(release): publish packages
TheNoumanDev Mar 27, 2026
0ccfcfc
FIxed vertical jerk issue
TheNoumanDev Mar 29, 2026
1da8810
chore(release): publish packages
TheNoumanDev Mar 29, 2026
30b28fa
Add lockHorizontalNavigation and scroll animation options for TV
TheNoumanDev Apr 6, 2026
59a05bc
Merge branch 'main' into android_TV_implementation
TheNoumanDev Apr 6, 2026
7fd5f77
fixed controller file
TheNoumanDev Apr 6, 2026
b9e7bc4
chore(release): publish packages
TheNoumanDev Apr 6, 2026
39fc3dd
Merge main into android_TV_implementation
TheNoumanDev Apr 17, 2026
2083fab
enhance TV focus navigation with delegate options and autoplay controls
TheNoumanDev Apr 22, 2026
3808021
chore(release): publish packages
TheNoumanDev Apr 23, 2026
8b916eb
fixed the scrolling issue and the focus border issues
TheNoumanDev May 20, 2026
cdfd4b2
chore(release): publish packages
TheNoumanDev May 20, 2026
ca53846
added the styling for focused state of button and wrapper widgets
TheNoumanDev May 22, 2026
f21318d
chore(release): publish packages
TheNoumanDev May 22, 2026
ed557c4
merged main and resolved conflicts
TheNoumanDev Jun 3, 2026
9fe6ea2
Merge remote android_TV_implementation branch
TheNoumanDev Jun 3, 2026
992bda6
added teh scrollBar option to support focus
TheNoumanDev Jun 5, 2026
10c0ce9
updated the auto focus property
TheNoumanDev Jun 5, 2026
341f280
added docs for TV guide for now
TheNoumanDev Jun 5, 2026
abaaa8b
chore(release): publish packages
TheNoumanDev Jun 5, 2026
3ac9b0b
updated the tabbar implementation
TheNoumanDev Jun 22, 2026
71797aa
merged main and resolved conflicts
TheNoumanDev Jun 22, 2026
3c9125f
Merge branch 'main' into android_TV_implementation
TheNoumanDev Jun 22, 2026
6290dc3
chore(release): publish packages
TheNoumanDev Jun 22, 2026
476682d
Merge branch 'main' into android_TV_implementation
TheNoumanDev Jun 22, 2026
1306e97
chore(release): publish packages
TheNoumanDev Jun 22, 2026
933b158
chore(release): publish packages
github-actions[bot] Jun 23, 2026
7781d19
fix(tv): render custom tabWidget in TV tab bar buttons
Jun 30, 2026
75dce03
fix(tv): use viewport position instead of screen size for scroll visi…
Jun 30, 2026
b5bffcc
merged main and resolved conflicts
TheNoumanDev Jul 1, 2026
9c93ec9
chore(release): publish packages
github-actions[bot] Jul 1, 2026
fce9129
updated the padding in the tabbar
TheNoumanDev Jul 2, 2026
76759c8
Merge branch 'main' into android_TV_implementation
TheNoumanDev Jul 2, 2026
8da79c6
chore(release): publish packages
github-actions[bot] Jul 2, 2026
21b11df
merged main and resovled conflicts
TheNoumanDev Jul 6, 2026
aa70feb
added the brackets support to TV
TheNoumanDev Jul 7, 2026
9e44df7
chore(release): publish packages
github-actions[bot] Jul 7, 2026
cd2d7aa
fixed the focusColor property
TheNoumanDev Jul 12, 2026
d2b8650
optimized the code and updated the comments
TheNoumanDev Jul 13, 2026
6ca4bfb
updated the comments and optimizations
TheNoumanDev Jul 13, 2026
d640ad2
refactor: remove debug prints related to TV scrollbar handling and up…
TheNoumanDev Jul 13, 2026
355f7e7
docs: add comprehensive TV developer guide with navigation patterns, …
TheNoumanDev Jul 13, 2026
eadd38f
chore: update ensemble dependency references to version 1.2.49
TheNoumanDev Jul 13, 2026
08019f8
chore: clean up pubspec.yaml and update ensemble changelog
TheNoumanDev Jul 13, 2026
6fabd43
add section and edge support for tvOptions
usmanvrtx Jul 14, 2026
65746e3
replace the section with focus gourp and use edget properties with ta…
usmanvrtx Jul 14, 2026
720d598
refactor: remove deprecated section parameter and clean up focus grou…
usmanvrtx Jul 14, 2026
4af3474
refactor: update TVFocusEdgeTargetComposite to use target properties …
usmanvrtx Jul 14, 2026
a16bbf6
refactor: remove fallback for top and bottom inputs in TVFocusEdgesCo…
usmanvrtx Jul 14, 2026
b927f08
feat: implement edge navigation inhrit form parent
usmanvrtx Jul 15, 2026
d5fa96d
fix this focus lose issue on back navigation between groups
usmanvrtx Jul 15, 2026
8db667d
add primaryFocusNode to TV focus components for explicit focus handling
usmanvrtx Jul 15, 2026
55f437d
refactor: remove unused section parameter from _BracketTVFocusProvider
usmanvrtx Jul 15, 2026
9d946d0
Merge pull request #2323 from EnsembleUI/android-TV-edges-implementation
TheNoumanDev Jul 15, 2026
5b8fd8c
Merge branch 'main' into android_TV_implementation
TheNoumanDev Jul 15, 2026
2b90d67
refactor: enhance TVScrollbarWidget visibility handling and initializ…
TheNoumanDev Jul 15, 2026
f9990fb
refactor: add layout scale property for Bracket widget and enhance TV…
TheNoumanDev Jul 17, 2026
f5fdfba
refactor: streamline TVOptions handling and improve focus state manag…
TheNoumanDev Jul 19, 2026
07b8c17
feat: add indicatorSpacing, indicatorLeadingWidget, and indicatorTrai…
usmanvrtx Jul 23, 2026
994d79e
refactor: remove indicatorSpacing property from Carousel
usmanvrtx Jul 23, 2026
e0e7cb5
Merge pull request #2324 from EnsembleUI/carousel-indicator-enhancements
usmanvrtx Jul 23, 2026
959f509
refactor: optimize visibility checks and boundary conditions in scrol…
TheNoumanDev Jul 23, 2026
f985612
feat: implement row position memory for TVFocusWidget navigation
TheNoumanDev Jul 24, 2026
2f67b20
feat: add rememberRowPosition option for enhanced TV focus navigation…
TheNoumanDev Jul 26, 2026
a8a9d12
Merge branch 'main' into android_TV_implementation
TheNoumanDev Jul 26, 2026
60f2fa7
feat: implement row position memory management for TV navigation and …
TheNoumanDev Jul 26, 2026
2119187
docs: add rememberRowPosition option to tvOptions for enhanced focus …
TheNoumanDev Jul 26, 2026
d9e8b89
feat: enhance TV navigation by refining focus selection and caching t…
TheNoumanDev Jul 27, 2026
335bda6
fix: block HTTP redirects for image loading to prevent redirect attacks
usmanvrtx Jul 27, 2026
37cb918
feat: add selected tab border color and width for enhanced TV tab sty…
TheNoumanDev Jul 27, 2026
1a466c6
feat: add allowRedirect option for Avatar and EnsembleImage widgets
usmanvrtx Jul 27, 2026
6f64d13
Merge pull request #2327 from EnsembleUI/fix/block-image-redirects
TheNoumanDev Jul 27, 2026
85cbc40
refactor: improve TV detection logic and clean up unused focus handli…
TheNoumanDev Jul 28, 2026
284cedb
refactor: update TVScrollbarWidget state class name and improve focus…
TheNoumanDev Jul 28, 2026
7f1625b
feat: add focus indicator and tab colors for TV navigation
TheNoumanDev Jul 28, 2026
146b128
refactor: enhance focus handling in TV navigation and stabilize scrol…
TheNoumanDev Jul 28, 2026
6cdb78b
refactor: improve focus handling in input and tap-enabled wrappers
TheNoumanDev Jul 29, 2026
8d18209
fix: enhance TV scrollbar widget, list view, tab bar, and box wrapper
usmanvrtx Jul 29, 2026
9610fad
refactor: optimize list generation and improve scrolling animations i…
TheNoumanDev Jul 29, 2026
ee7e299
Merge branch 'android_TV_implementation' into focusable-scrollbar
TheNoumanDev Jul 29, 2026
a3b3715
refactor: optimize focus probing in ListViewState for performance imp…
TheNoumanDev Jul 29, 2026
87b91b1
fix: scope ListView focus probe
usmanvrtx Jul 29, 2026
3c0007d
Merge pull request #2329 from EnsembleUI/focusable-scrollbar
TheNoumanDev Jul 29, 2026
c3b10c9
Merge branch 'main' into android_TV_implementation
TheNoumanDev Jul 29, 2026
d1d9c10
fix: synchronize column index on page change for non-TV devices
TheNoumanDev Jul 30, 2026
e4cea1e
feat(bracket): add selected tab border color and width properties
TheNoumanDev Jul 31, 2026
7b7458f
Merge branch 'main' into android_TV_implementation
TheNoumanDev Jul 31, 2026
826af4e
fix(tv): handle key repeat events for D-pad navigation
usmanvrtx Aug 6, 2026
00b9ec6
Merge pull request #2337 from EnsembleUI/fix/tv-key-repeat-events
usmanvrtx Aug 7, 2026
7566c5d
feat(tv): scroll focused scrollbar into view
usmanvrtx Aug 7, 2026
ccb1f4b
feat(tv): enhance scrollbar visibility with shared scroll tuning options
TheNoumanDev Aug 8, 2026
c88f83d
Merge pull request #2338 from EnsembleUI/feat/tv-focus-scroll-into-view
usmanvrtx Aug 8, 2026
0d2d4b3
Merge branch 'main' into android_TV_implementation
TheNoumanDev Aug 10, 2026
a34838c
feat: add loading widget support for image and avatar components
usmanvrtx Aug 13, 2026
7d57e05
feat(image): fix loading placeholder handling for SVG and non-SVG images
usmanvrtx Aug 13, 2026
cbf9616
fix: enforce allowRedirect when using custom cache managers
usmanvrtx Aug 13, 2026
3db5dab
Merge pull request #2342 from EnsembleUI/feat/loading-widget-image-av…
usmanvrtx Aug 13, 2026
0511971
feat: add cacheExtent property to list and grid view
usmanvrtx Aug 17, 2026
44f6f59
Merge pull request #2343 from EnsembleUI/feat/add-cacheextent-property
usmanvrtx Aug 17, 2026
06726c6
Merge branch 'main' into android_TV_implementation
TheNoumanDev Aug 20, 2026
ed62c07
Fix cached tab scrollbar focus
usmanvrtx Aug 23, 2026
598b176
fix: scope scrollbar metrics refresh to own scrollable, dedupe visibi…
TheNoumanDev Aug 24, 2026
054381c
Merge pull request #2348 from EnsembleUI/fix/indexed-tab-scrollbar-focus
TheNoumanDev Aug 24, 2026
1a01d00
fix: update documentation and code comments to remove flutter_pca ref…
TheNoumanDev Aug 24, 2026
f41a0a3
Merge branch 'main' into android_TV_implementation
TheNoumanDev Aug 25, 2026
9e5e7be
Merge branch 'main' into android_TV_implementation
TheNoumanDev Aug 25, 2026
16e11d0
feat: improve bracket layout and focus handling
usmanvrtx Aug 25, 2026
a18aea5
fix: enhance TV navigation and layout handling in Bracket widget
TheNoumanDev Aug 26, 2026
9e640b4
Merge pull request #2353 from EnsembleUI/fix/brackets-crashes
usmanvrtx Aug 26, 2026
ebc4d6e
fix: remove internal image getters
usmanvrtx Aug 27, 2026
596d524
fix: remove unused image cache manager override
usmanvrtx Aug 27, 2026
ab4f8ac
Merge pull request #2354 from EnsembleUI/fix/remove-unused-image-cach…
TheNoumanDev Aug 27, 2026
e168d2a
resolved conflcits and merge main
TheNoumanDev Aug 27, 2026
4e6de62
Merge branch 'main' into android_TV_implementation
TheNoumanDev Aug 28, 2026
71833b7
Merge branch 'main' into android_TV_implementation
TheNoumanDev Aug 30, 2026
8cb4eb5
Merge branch 'main' into android_TV_implementation
TheNoumanDev Sep 1, 2026
a0c5252
feat(tab-bar): add customizable divider thickness
usmanvrtx Sep 3, 2026
eff6382
feat(tab-bar): enhance custom divider handling and layout adjustments
TheNoumanDev Sep 4, 2026
6fb5982
Merge pull request #2358 from EnsembleUI/feat/tabbar-divider
usmanvrtx Sep 6, 2026
c4abae3
feat(border): support decimal border widths and radii
usmanvrtx Sep 9, 2026
23c57fb
fix(tv): preserve id focus state on rebuild
usmanvrtx Sep 10, 2026
a2b0dcd
refactor(tv): minimize focus rebuild fix
usmanvrtx Sep 10, 2026
49cbdf7
feat(border): extend decimal border width/radius support to schemas, …
usmanvrtx Sep 10, 2026
e556a88
fix(tv): resync id focus state after widget rebuilds
usmanvrtx Sep 10, 2026
fa967c2
Merge pull request #2362 from EnsembleUI/fix/id-focus-state
usmanvrtx Sep 10, 2026
7d7ef55
feat(border): update borderWidth handling to support direct double va…
TheNoumanDev Sep 11, 2026
6a33f01
Merge pull request #2361 from EnsembleUI/feat/decimal-border-width
usmanvrtx Sep 11, 2026
eb02544
feat(tab-bar): add overlay indicator option
usmanvrtx Sep 11, 2026
c26ed69
Merge pull request #2363 from EnsembleUI/feat/tabbar-indicator-placement
usmanvrtx Sep 11, 2026
44bdf14
feat(tv): add TV tooltip popover with focus management and dismiss fu…
usmanvrtx Sep 13, 2026
abccded
feat(tooltip): enhance TV tooltip popover focus management with paren…
usmanvrtx Sep 13, 2026
1bf4d15
feat(tooltip): add onTriggered action and enable/disable options for …
usmanvrtx Sep 14, 2026
42b2832
Refactor tooltip implementation to use TVTooltip instead of TVTooltip…
usmanvrtx Sep 14, 2026
e2c7ebb
feat(tooltip): improve tooltip options evaluation and focus management
usmanvrtx Sep 14, 2026
0fff74b
feat(tooltip): optimize TV tooltip content and animation handling dur…
usmanvrtx Sep 14, 2026
e18071c
Merge pull request #2364 from EnsembleUI/feat/popover-tooltip
usmanvrtx Sep 14, 2026
5d7cee6
feat(tv): implement focus-aware header collapse and background widget…
usmanvrtx Sep 19, 2026
9ba88a8
feat(tv): update collapsible header configuration and add tests for T…
usmanvrtx Sep 19, 2026
039b156
feat(header): refine collapsible header trigger logic and update sche…
usmanvrtx Sep 20, 2026
7f1db01
feat(tv): update collapsible header trigger from tvFocus to focus and…
usmanvrtx Sep 20, 2026
07f19db
add suport to control autofocus of tabbar
usmanvrtx Sep 20, 2026
0f626c6
feat(tv): animate focus-aware fixed headers
usmanvrtx Sep 20, 2026
336cb29
chore(tv): restore unrelated header formatting
usmanvrtx Sep 20, 2026
0ccb49f
feat(tabbar): improve focus management and scrolling behavior for tab…
usmanvrtx Sep 21, 2026
adcd242
feat(tabbar): add option to reveal TabBar on focus and refactor focus…
usmanvrtx Sep 21, 2026
31fa29c
add minHeight to listveiw
usmanvrtx Sep 21, 2026
da04936
feat(schema): add minHeight property to list configuration
usmanvrtx Sep 21, 2026
ccb7a45
feat(tv): enhance header animation and leading width support for focu…
usmanvrtx Sep 21, 2026
d4406c0
feat(tabbar): enhance focus management and add support for flex-based…
usmanvrtx Sep 21, 2026
074f79a
Merge pull request #2370 from EnsembleUI/feat/tv-header
usmanvrtx Sep 21, 2026
6e6628e
Merge branch 'android_TV_implementation' into fixes/tabbar-focus-shif…
usmanvrtx Sep 21, 2026
e927286
Merge pull request #2372 from EnsembleUI/fixes/tabbar-focus-shifting
usmanvrtx Sep 21, 2026
0789d5d
feat(ensemble_widget): manage shared controller bindings and improve …
usmanvrtx Sep 28, 2026
ad8d5d6
fix(ensemble_widget): update binding owner management to use page dat…
usmanvrtx Sep 28, 2026
9d0a655
fix(scope): improve listener cleanup and restore binding subscription…
usmanvrtx Sep 28, 2026
94a9755
fix(scope): enhance binding listener restoration with owner scope man…
usmanvrtx Sep 28, 2026
db65b59
fix(scope): improve listener cleanup and prevent leaks on dialog and …
usmanvrtx Sep 28, 2026
5b6d9c8
fix(scope): remove redundant listener cleanup in ScopeManager
usmanvrtx Sep 28, 2026
481e112
Merge pull request #2377 from EnsembleUI/fix/unclosed-listeners-tv
usmanvrtx Sep 29, 2026
aa2c609
feat(listview): add support for scroll direction in ListView
usmanvrtx Oct 1, 2026
5e2002b
Merge pull request #2380 from EnsembleUI/feat/listview-direction
usmanvrtx Oct 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
194 changes: 178 additions & 16 deletions modules/bracket/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ This is an optional Ensemble widget module. The package exports `lib/src/bracket
- Implements the Ensemble widget type `Bracket`.
- Supports round and match templates through `RoundTemplate` and `MatchTemplate`.
- Provides bracket rendering widgets and a custom painter for bracket connectors.
- Full TV/Android TV D-pad navigation support with customizable focus styling.

## Installation / Setup

Expand All @@ -28,35 +29,196 @@ The verified public import is:
import 'package:ensemble_bracket/ensemble_bracket.dart';
```

A complete Ensemble YAML example was not found in this package, so no YAML data shape is documented here.
### Basic YAML Example (Mobile/Web)

```yaml
Bracket:
id: bracket
styles:
scale: 0.75 # Layout scale (0.1 - 1.0)
borderColor: transparent
borderWidth: 2
lineStyles:
color: 0xff404040
width: 2
tabStyles:
backgroundColor: 0xFF232323
selectedBackgroundColor: 0xFF00C300
textStyle:
color: 0xFFB3B3B3
selectedTextStyle:
color: black
borderRadius: 8

items:
data: ${bracketData}
name: round
title: ${round.title}
item-template:
data: ${round.matches}
name: match
height: 100
template:
MatchCard:
inputs:
match: ${match}
```

### TV YAML Example (Android TV / D-pad)

```yaml
Bracket:
id: bracket
styles:
scale: 0.4 # Smaller scale for TV (more columns visible)
borderColor: transparent
borderWidth: 2
tvOptions:
row: 1 # TV: Tab row, matches start at row+1
lineStyles:
color: 0xff404040
width: 2
tabStyles:
backgroundColor: 0xFF232323
selectedBackgroundColor: 0xFF00C300
textStyle:
color: 0xFFB3B3B3
selectedTextStyle:
color: black
borderRadius: 8
focusBorderRadius: 12 # TV: Focus indicator radius

items:
data: ${bracketData}
name: round
title: ${round.title}
item-template:
data: ${round.matches}
name: match
height: 100
template:
MatchCard:
inputs:
match: ${match}
```

## Configuration

No additional configuration was found in this package.
### Bracket Properties

| Property | Type | TV | Description |
| ------------- | ------ | :-: | ------------------------------- |
| `borderColor` | Color | | Border color around match cards |
| `borderWidth` | Number | | Border width around match cards |

### Scale (`scale`)

| Property | Type | Description |
| -------- | ------ | -------------------------------------------------------------------------------------------------------------------- |
| `scale` | Number | Layout scale (0.1 - 1.0, default: 0.75). Controls viewportFraction, card width, and connector length proportionally. |

### Line Styles (`lineStyles`)

| Property | Type | Description |
| -------- | ------ | -------------------------------- |
| `color` | Color | Color of bracket connector lines |
| `width` | Number | Width of bracket connector lines |

> **Note**: Vertical connector lines automatically scale based on card spacing when navigating between rounds, ensuring lines always connect properly at any scale.

### Tab Styles (`tabStyles`)

| Property | Type | TV | Description |
| -------------------------- | ---------- | :-: | --------------------------------------------- |
| `backgroundColor` | Color | | Background color of unselected tabs |
| `selectedBackgroundColor` | Color | | Background color of selected tab |
| `textStyle` | TextStyle | | Text style for unselected tabs |
| `selectedTextStyle` | TextStyle | | Text style for selected tab |
| `borderRadius` | Number | | Border radius of tabs |
| `borderColor` | Color | | Border color of tabs |
| `borderWidth` | Number | | Border width of tabs |
| `selectedBorderColor` | Color | | Border color of the selected tab |
| `selectedBorderWidth` | Number | | Border width of the selected tab |
| `padding` | EdgeInsets | | Padding inside tabs |
| `gap` | Number | | Gap between tabs (default: 12) |
| `focusBorderColor` | Color | ✅ | Focus border color when navigating with D-pad |
| `focusBorderWidth` | Number | ✅ | Focus border width (default: 2.0) |
| `focusBorderRadius` | Number | ✅ | Focus border radius (default: 8.0) |
| `focusBackgroundColor` | Color | ✅ | Background color when focused |
| `focusTextStyle` | TextStyle | ✅ | Text style when focused |
| `focusAnimationDurationMs` | Number | ✅ | Focus animation duration in milliseconds |

### TV Options (`tvOptions`)

| Property | Type | TV | Description |
| -------- | ------ | :-: | ---------------------------------------------------------------------- |
| `row` | Number | ✅ | TV navigation row offset. Tabs are at this row, matches start at row+1 |

---

## TV D-pad Navigation

> **Note**: This section only applies to Android TV / TV devices with D-pad remote control.

### Focus Styling Priority Chain

The bracket widget follows the same focus styling priority as other Ensemble widgets:

1. **tabStyles focus properties** (`focusBorderColor` / `focusBorderWidth` / `focusBorderRadius`)
2. **Theme** (`EnsembleThemeExtension.tvFocusTheme`)
3. **Provider** (`TVFocusProviderScope`)
4. **tabStyles regular border** (`borderColor` / `borderWidth` / `borderRadius`)
5. **Terminal default (per property):** color → app primary color (`theme.colorScheme.primary`); width → `2.0`; radius → `8.0`

### Navigation Behavior

The bracket widget provides full TV D-pad navigation:

- **LEFT/RIGHT** arrows navigate between rounds (columns)
- **UP/DOWN** arrows navigate between matches within a round
- Focus automatically transfers to the corresponding row when changing rounds
- Row clamping ensures focus stays within available matches (e.g., 8 matches in Round of 16 → 4 matches in Quarter Finals)

### Match Card tvOptions

Match cards within the bracket should include `tvOptions` for focus styling:

```yaml
MatchCard:
body:
Column:
styles:
tvOptions:
row: 0 # Required for box_wrapper focus styling (actual row is set by bracket)
backgroundColor: 0xff303030 # Background when focused
```

Note: The `row` value is overridden by the bracket for navigation ordering, but must be present for box_wrapper to apply focus styling.

## Platform Support

| Platform | Supported | Notes |
| -------- | --------: | ----- |
| Android | Unknown | No Android project is included in this package; host app setup is required. |
| iOS | Unknown | No iOS project is included in this package; host app setup is required. |
| Web | Unknown | No web implementation was found in this package. |
| macOS | Unknown | No macOS project is included in this package. |
| Windows | Unknown | No Windows project is included in this package. |
| Linux | Unknown | No Linux project is included in this package. |
| Platform | Supported | Notes |
| -------- | --------: | ------------------------------------ |
| Android | ✅ | Full support including Android TV |
| iOS | ✅ | Full support |
| Web | ✅ | Full support |
| macOS | ✅ | Full support |
| Windows | ✅ | Full support |
| Linux | - | Not listed in pubspec.yaml platforms |

## Permissions

No runtime permissions were found in this package.

## API Reference

| API | Type | Description |
| --- | ---- | ----------- |
| `EnsembleBracketImpl` | Widget | Ensemble widget implementation for the `Bracket` type. |
| `BracketController` | Controller | Holds bracket properties and template configuration. |
| `RoundTemplate` | Template | Template model for rounds. |
| `MatchTemplate` | Template | Template model for matches. |
| API | Type | Description |
| --------------------- | ---------- | --------------------------------------------------------- |
| `EnsembleBracketImpl` | Widget | Ensemble widget implementation for the `Bracket` type. |
| `BracketController` | Controller | Holds bracket properties and template configuration. |
| `RoundTemplate` | Template | Template model for rounds. |
| `MatchTemplate` | Template | Template model for matches. |
| `RoundData` | Data | Resolved round data with title, matches, and local scope. |

## Development

Expand Down
Loading
Loading