Skip to content

Merge Playground and Gallery into a combined stac_playground app (#484) - #485

Merged
divyanshub024 merged 1 commit into
mainfrom
dev
Jul 26, 2026
Merged

Merge Playground and Gallery into a combined stac_playground app (#484)#485
divyanshub024 merged 1 commit into
mainfrom
dev

Conversation

@divyanshub024

Copy link
Copy Markdown
Member
  • feat: merge playground and gallery into stac_playground example
  • Move the Stac Playground app (console web UI) into examples/stac_playground
  • Merge all Stac Gallery widget examples into a combined entry index: screens + 76 components with search, grouped index, and descriptions
  • Responsive mobile UI from the Console mobile designs: explore list (dark/light), component detail with Preview/Dart/JSON tabs, fullscreen preview, and links drawer
  • Dart DSL sources generated for gallery examples (35 verified compiling via lib/dsl; remaining 42 stubbed pending migration), loaded alongside JSON assets; stac/stac_core consumed as workspace path deps
  • Remove examples/stac_gallery (superseded) and its melos build scope
  • fix: align mobile UI with Console mobile designs
  • Explore: token-based light/dark palettes (white-alpha containers with hairline borders), circular logo and icon chips, Figtree type scale per design (23px medium hero, 13px tracked label, 16/14 cards), 48px search field with 8px radius
  • Detail: surface-bright header and centered tab bar with accent-green active underline; crop/code/file-code tab icons at design sizes
  • Compile embed screen only on web via conditional import (dart:js_interop is unavailable on native platforms); add non-web stub
  • Fix AppIcon asset catalog casing for iOS builds
  • fix: move dark theme toggle to the end of the mobile drawer

  • feat: restore per-component icons in the mobile explore list

Carry each gallery entry's original material/cupertino icon through the registry and render it via Stac's icon parser inside the card chip; fall back to the square glyph when an entry has no icon.

  • fix: mobile detail screen refinements
  • Dart tab uses the Dart logo mark from the design instead of a glyph
  • Header theme icon toggles only the component preview theme; the app theme stays on the explore drawer switch
  • Smaller detail title (16px)
  • Code views follow the app theme with a VS Code Light+ palette and explicit base text color in light mode
  • fix: show result count label while searching the explore list

  • feat: full-screen menu overlay and exact Figma theme tokens

  • Replace the explore drawer with the designed blurred overlay menu: top bar with close action, plain link rows with hairline dividers, and a Theme row showing the current mode
  • Correct the light palette to the Figma theme variables (#F3F3F3 surface, #07090A on-surface base, #15803D secondary) and align the dark on-surface-variant alpha; accent green now varies per theme
  • chore: remove accidentally committed local tooling directory

Drop the .claude/ worktree snapshot from the branch (a stale local copy of the repo, no private content) and gitignore the directory. Also remove the private deploy mapping (.firebaserc) from the public app.

  • fix: soften detail header action icons to on-surface-variant

  • fix: center-crop the Dart tab logo instead of letterboxing

  • fix: replace Dart tab logo with the square Dart mark in grayscale

  • feat(playground): live Dart editing and complete DSL examples

Every widget example now ships real Stac DSL beside its JSON, and the Dart pane is a first-class editor rather than a read-only reference.

  • Fill in all 42 placeholder lib/dsl files from their JSON sources. 36 round-trip to their asset exactly; the rest differ only by no-op keys the DSL drops and null placeholders for empty {} actions.
  • Add a DSL-subset parser (data/dsl_to_json.dart) so editing Dart drives the live preview. stac build needs a Dart VM to execute the screen and call toJson(), which the web runtime cannot do, so the parser maps the declarative constructor tree to JSON structurally instead. Source that needs evaluation (helper functions) keeps the last good preview and says why. Covered by tests across all 77 examples.
  • Default the editor to Dart, and make it editable.
  • Approximate VS Code semantic highlighting for Dart: types, parameters, members and calls are no longer plain foreground text.
  • Fix the Code Diff toggle's selected background not filling its height.
  • Rename the index sections to EXAMPLES and WIDGETS.
  • Swap phosphor_flutter for phosphoricons_flutter (2.1.0 extends IconData, final as of Flutter 3.44) and bump re_editor to 0.10.0 for the current TextInputClient contract; both broke the build.
  • fix(playground): inline helper calls when previewing Dart

The DSL parser rejected any function call, so editing hello_stac or form_screen — the first two screens in the index — showed "needs evaluation" instead of updating the preview, because both build their content through private helpers (_socialRow, _fieldDecoration).

Resolve calls to single-expression top-level helpers by binding the arguments to the parameter names and parsing the helper's returned expression in that scope, with a depth guard for self-recursion. Handles no-arg, positional and named signatures, which covers every helper in the examples.

All 77 DSL files now parse (navigation and table included); the 36 that reproduce their JSON asset exactly still do. Variables, conditionals and interpolation still report that they need a Dart runtime.

  • refactor: promote stac_playground out of examples

The playground is the public sandbox for Stac, not a sample app, so move it to the repository root and register it with melos directly. Its package path dependencies drop one level accordingly.

stac_gallery is gone as of the playground merge; this also clears the stale working copy left behind on disk.

  • ci: make analyze and format pass for stac_playground

dart analyze . fails on info-level lints, and the playground reported 176:

  • Exclude the vendored JSON editor. Its lexer, scanner and linked-list utilities are derived from the Dart SDK and are better kept close to upstream than restyled; only JsonElement is still used from it, the editor widget itself having been superseded by re_editor.
  • Exclude build/. lib/dsl ships as an asset bundle, so Flutter copies every example in there and each one was reported several times over.
  • Migrate the theme off deprecated ColorScheme.background/onBackground and surfaceVariant, AppBarTheme.color and TooltipThemeData.height. The app reads its palette through the AppColors extension, not ColorScheme, so behaviour is unchanged.
  • Silence deprecated_member_use in the bottom_nav_bar example, whose JSON intentionally uses the deprecated navigation types.

Formatting was drifting in three files, and stac_playground's lockfile did not match a melos bootstrap, which is what the format job compares against.

  • fix(playground): address review findings

Two of these break only on a case-sensitive filesystem, which nothing currently exercises — no CI job builds the playground.

  • Recase 84 platform and asset files (AndroidManifest.xml, ios/Runner/**, CMakeLists.txt, web/icons/Icon-.png, ...). Every embedded reference in the pbxproj files, Podfiles and CMake lists already used the capitalised names, so these were pointing at paths that do not exist off macOS; the fix is renames only, no content edits. Two were live bugs rather than latent: pubspec declares assets/fonts/Figtree.ttf against a committed figtree.ttf, and web/index.html and manifest.json ask for Icon-.png, which Firebase Hosting serves case-sensitively.

  • Repoint refresh_indicator at stac_playground/assets/json/list_view_example.json. It fetched the copy under examples/stac_gallery, which this branch deletes, so it would have 404'd on merge. The moved file is byte-identical. A local asset path is not an option: networkWidget goes through Dio over HTTP.

  • Drop the vendored JSON editor (22 files). Only JsonElement escaped the directory, and it was a lossy Map -> Map round trip: every caller decoded toPrettyString() and re-encoded, while the wrapper silently dropped keys whose value was null and rendered whole doubles as ints. HomeState now carries a plain Map. This also retires the missing Dart SDK BSD notices on scanner.dart, link.dart and link_implementation.dart, and lets the analyzer exclusion go.

  • Treat $ as literal inside raw strings in the DSL parser.

  • Point the image example at assets that exist; the three it referenced were never in the repo.

  • Refresh the stale gallery references in the example README and launch.json, and drop an unrelated movie_app file.

  • fix(playground): give empty DSL actions a real no-op action

The 40 null /* TODO: {} */ placeholders were not equivalent to the {} the source JSON carries. StacAction.fromJson({}) returns a non-null action, and parsers branch on model.onPressed == null — so the elevated_button example, which contrasts rows with and without an action, rendered every button disabled from the Dart tab while the JSON tab showed half of them enabled.

Use StacAction() for an empty action and StacAction(jsonData: {...}) for the four that carry a raw action map, and teach the DSL parser that StacAction serializes as its jsonData rather than as a wrapper around it.

Examples reproducing their JSON asset exactly go from 36 to 48.

  • perf(playground): debounce the live preview

Every keystroke reparsed the whole source and rebuilt the Stac tree, which is wasted work on the larger examples — backdrop_filter is 62 nodes. Coalesce bursts of typing behind a 200ms timer, cancelled on dispose.

The dirty indicator still updates immediately, so only the parse and re-render wait for typing to settle.

  • feat(playground): render the real webView example, fix docs and add a build job

The web_view example shipped a placeholder because StacWebView lives in the stac_webview plugin rather than stac_core. The gallery it replaced depended on that plugin and registered its parser, so restore the same arrangement: the DSL now reads StacWebView(url: ...) and round-trips to its JSON asset exactly, bringing the examples that match byte for byte to 49.

Registration is skipped on web. webview_flutter supports android, iOS and macOS only, and the widget builds its controller in initState — outside the framework's try/catch — so registering it there would render a Flutter error box in the preview. Left unregistered, Stac logs an unsupported-type warning and degrades quietly, while mobile and macOS get a working webview.

Also correct four docs pages that referenced a StacNetworkRequestAction class that does not exist (it is StacNetworkRequest) and an "actionType": "request" that should be "networkRequest".

Add a build_playground CI job. Nothing built this app, which is how the lowercased platform paths and the missing font asset went unnoticed; running it on Linux is also what catches casing that only works on a case-insensitive filesystem.

  • fix(playground): render inline samples that are const maps

form_screen (and any inline-sample entry) showed "Stac Parse Error" cards on its buttons — TypeError: ImmutableMap<dynamic, dynamic> is not a subtype of Map<String, dynamic>.

The inline previews (helloStacSample, formSample) are const map literals, so their nested maps — empty {} action maps especially — are typed <dynamic, dynamic>. Stac's generated fromJson does json['child'] as Map<String, dynamic>, which rejects them. The live DSL and JSON editor paths were unaffected because both produce real Map<String,dynamic> trees (the parser builds them, jsonDecode returns them); only the const samples hit it.

Round-trip the samples through jsonDecode(jsonEncode(...)) before they become jsonData, which rebuilds every node as Map<String,dynamic>/List. Verified the buttons render with zero parse errors on both the VM and a real browser (flutter test --platform chrome).

  • chore(assets): update Stac Playground social banner

Replace assets/playground.png with the new 1200x630 Stac Playground banner, used as the og:image / twitter:image for the playground web app.

  • feat(playground): show per-entry icons in the desktop index

The desktop index rendered a uniform brackets icon for every row while the mobile list showed each entry's own icon. Render the entry icon through Stac's icon parser on desktop too (same path as mobile), so the two stay in sync.

  • refactor(playground): drop the tablet and desktop preview sizes

The preview only needs the mobile frame, so remove the device selector from the toolbar. Nothing else read the device, so the PreviewDevice enum, the HomeState field and setDevice go with it rather than leaving the enum wired to a control that no longer exists; the frame now uses the mobile size directly.

  • refactor(playground): build the index row from ListTile

The row was a hand-rolled InkWell + Container + Row that mapped exactly onto ListTile's leading/title/trailing slots, so use the real thing: the selected state now carries proper semantics for screen readers, and the label grows with the OS text scale instead of clipping against a hard-coded 24px height.

Keeping the IDE-style density does cost a block of overrides, since ListTile's Material defaults are much roomier than a 24px file-list row.


Description

Related Issues

Closes #

Type of Change

  • New feature (non-breaking change which adds functionality)
  • Bug fix (non-breaking change which fixes an issue)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Code refactor
  • Build configuration change
  • Documentation
  • Chore

* feat: merge playground and gallery into stac_playground example

- Move the Stac Playground app (console web UI) into examples/stac_playground
- Merge all Stac Gallery widget examples into a combined entry index:
  screens + 76 components with search, grouped index, and descriptions
- Responsive mobile UI from the Console mobile designs: explore list
  (dark/light), component detail with Preview/Dart/JSON tabs, fullscreen
  preview, and links drawer
- Dart DSL sources generated for gallery examples (35 verified compiling
  via lib/dsl; remaining 42 stubbed pending migration), loaded alongside
  JSON assets; stac/stac_core consumed as workspace path deps
- Remove examples/stac_gallery (superseded) and its melos build scope

* fix: align mobile UI with Console mobile designs

- Explore: token-based light/dark palettes (white-alpha containers with
  hairline borders), circular logo and icon chips, Figtree type scale per
  design (23px medium hero, 13px tracked label, 16/14 cards), 48px search
  field with 8px radius
- Detail: surface-bright header and centered tab bar with accent-green
  active underline; crop/code/file-code tab icons at design sizes
- Compile embed screen only on web via conditional import (dart:js_interop
  is unavailable on native platforms); add non-web stub
- Fix AppIcon asset catalog casing for iOS builds

* fix: move dark theme toggle to the end of the mobile drawer

* feat: restore per-component icons in the mobile explore list

Carry each gallery entry's original material/cupertino icon through the
registry and render it via Stac's icon parser inside the card chip;
fall back to the square glyph when an entry has no icon.

* fix: mobile detail screen refinements

- Dart tab uses the Dart logo mark from the design instead of a glyph
- Header theme icon toggles only the component preview theme; the app
  theme stays on the explore drawer switch
- Smaller detail title (16px)
- Code views follow the app theme with a VS Code Light+ palette and
  explicit base text color in light mode

* fix: show result count label while searching the explore list

* feat: full-screen menu overlay and exact Figma theme tokens

- Replace the explore drawer with the designed blurred overlay menu:
  top bar with close action, plain link rows with hairline dividers,
  and a Theme row showing the current mode
- Correct the light palette to the Figma theme variables (#F3F3F3
  surface, #07090A on-surface base, #15803D secondary) and align the
  dark on-surface-variant alpha; accent green now varies per theme

* chore: remove accidentally committed local tooling directory

Drop the .claude/ worktree snapshot from the branch (a stale local copy
of the repo, no private content) and gitignore the directory. Also
remove the private deploy mapping (.firebaserc) from the public app.

* fix: soften detail header action icons to on-surface-variant

* fix: center-crop the Dart tab logo instead of letterboxing

* fix: replace Dart tab logo with the square Dart mark in grayscale

* feat(playground): live Dart editing and complete DSL examples

Every widget example now ships real Stac DSL beside its JSON, and the Dart
pane is a first-class editor rather than a read-only reference.

- Fill in all 42 placeholder lib/dsl files from their JSON sources. 36
  round-trip to their asset exactly; the rest differ only by no-op keys the
  DSL drops and null placeholders for empty {} actions.
- Add a DSL-subset parser (data/dsl_to_json.dart) so editing Dart drives the
  live preview. `stac build` needs a Dart VM to execute the screen and call
  toJson(), which the web runtime cannot do, so the parser maps the
  declarative constructor tree to JSON structurally instead. Source that
  needs evaluation (helper functions) keeps the last good preview and says
  why. Covered by tests across all 77 examples.
- Default the editor to Dart, and make it editable.
- Approximate VS Code semantic highlighting for Dart: types, parameters,
  members and calls are no longer plain foreground text.
- Fix the Code Diff toggle's selected background not filling its height.
- Rename the index sections to EXAMPLES and WIDGETS.
- Swap phosphor_flutter for phosphoricons_flutter (2.1.0 extends IconData,
  final as of Flutter 3.44) and bump re_editor to 0.10.0 for the current
  TextInputClient contract; both broke the build.

* fix(playground): inline helper calls when previewing Dart

The DSL parser rejected any function call, so editing hello_stac or
form_screen — the first two screens in the index — showed "needs
evaluation" instead of updating the preview, because both build their
content through private helpers (_socialRow, _fieldDecoration).

Resolve calls to single-expression top-level helpers by binding the
arguments to the parameter names and parsing the helper's returned
expression in that scope, with a depth guard for self-recursion. Handles
no-arg, positional and named signatures, which covers every helper in the
examples.

All 77 DSL files now parse (navigation and table included); the 36 that
reproduce their JSON asset exactly still do. Variables, conditionals and
interpolation still report that they need a Dart runtime.

* refactor: promote stac_playground out of examples

The playground is the public sandbox for Stac, not a sample app, so move it
to the repository root and register it with melos directly. Its package path
dependencies drop one level accordingly.

stac_gallery is gone as of the playground merge; this also clears the stale
working copy left behind on disk.

* ci: make analyze and format pass for stac_playground

`dart analyze .` fails on info-level lints, and the playground reported 176:

- Exclude the vendored JSON editor. Its lexer, scanner and linked-list
  utilities are derived from the Dart SDK and are better kept close to
  upstream than restyled; only JsonElement is still used from it, the editor
  widget itself having been superseded by re_editor.
- Exclude build/. lib/dsl ships as an asset bundle, so Flutter copies every
  example in there and each one was reported several times over.
- Migrate the theme off deprecated ColorScheme.background/onBackground and
  surfaceVariant, AppBarTheme.color and TooltipThemeData.height. The app
  reads its palette through the AppColors extension, not ColorScheme, so
  behaviour is unchanged.
- Silence deprecated_member_use in the bottom_nav_bar example, whose JSON
  intentionally uses the deprecated navigation types.

Formatting was drifting in three files, and stac_playground's lockfile did
not match a melos bootstrap, which is what the format job compares against.

* fix(playground): address review findings

Two of these break only on a case-sensitive filesystem, which nothing
currently exercises — no CI job builds the playground.

- Recase 84 platform and asset files (AndroidManifest.xml, ios/Runner/**,
  CMakeLists.txt, web/icons/Icon-*.png, ...). Every embedded reference in
  the pbxproj files, Podfiles and CMake lists already used the capitalised
  names, so these were pointing at paths that do not exist off macOS; the
  fix is renames only, no content edits. Two were live bugs rather than
  latent: pubspec declares assets/fonts/Figtree.ttf against a committed
  figtree.ttf, and web/index.html and manifest.json ask for Icon-*.png,
  which Firebase Hosting serves case-sensitively.

- Repoint refresh_indicator at stac_playground/assets/json/list_view_example.json.
  It fetched the copy under examples/stac_gallery, which this branch deletes,
  so it would have 404'd on merge. The moved file is byte-identical. A local
  asset path is not an option: networkWidget goes through Dio over HTTP.

- Drop the vendored JSON editor (22 files). Only JsonElement escaped the
  directory, and it was a lossy Map -> Map round trip: every caller decoded
  toPrettyString() and re-encoded, while the wrapper silently dropped keys
  whose value was null and rendered whole doubles as ints. HomeState now
  carries a plain Map. This also retires the missing Dart SDK BSD notices on
  scanner.dart, link.dart and link_implementation.dart, and lets the analyzer
  exclusion go.

- Treat $ as literal inside raw strings in the DSL parser.

- Point the image example at assets that exist; the three it referenced were
  never in the repo.

- Refresh the stale gallery references in the example README and launch.json,
  and drop an unrelated movie_app file.

* fix(playground): give empty DSL actions a real no-op action

The 40 `null /* TODO: {} */` placeholders were not equivalent to the `{}` the
source JSON carries. StacAction.fromJson({}) returns a non-null action, and
parsers branch on `model.onPressed == null` — so the elevated_button example,
which contrasts rows with and without an action, rendered every button
disabled from the Dart tab while the JSON tab showed half of them enabled.

Use `StacAction()` for an empty action and `StacAction(jsonData: {...})` for
the four that carry a raw action map, and teach the DSL parser that
StacAction serializes as its jsonData rather than as a wrapper around it.

Examples reproducing their JSON asset exactly go from 36 to 48.

* perf(playground): debounce the live preview

Every keystroke reparsed the whole source and rebuilt the Stac tree, which is
wasted work on the larger examples — backdrop_filter is 62 nodes. Coalesce
bursts of typing behind a 200ms timer, cancelled on dispose.

The dirty indicator still updates immediately, so only the parse and re-render
wait for typing to settle.

* feat(playground): render the real webView example, fix docs and add a build job

The web_view example shipped a placeholder because StacWebView lives in the
stac_webview plugin rather than stac_core. The gallery it replaced depended on
that plugin and registered its parser, so restore the same arrangement: the DSL
now reads StacWebView(url: ...) and round-trips to its JSON asset exactly,
bringing the examples that match byte for byte to 49.

Registration is skipped on web. webview_flutter supports android, iOS and macOS
only, and the widget builds its controller in initState — outside the
framework's try/catch — so registering it there would render a Flutter error box
in the preview. Left unregistered, Stac logs an unsupported-type warning and
degrades quietly, while mobile and macOS get a working webview.

Also correct four docs pages that referenced a StacNetworkRequestAction class
that does not exist (it is StacNetworkRequest) and an "actionType": "request"
that should be "networkRequest".

Add a build_playground CI job. Nothing built this app, which is how the
lowercased platform paths and the missing font asset went unnoticed; running it
on Linux is also what catches casing that only works on a case-insensitive
filesystem.

* fix(playground): render inline samples that are const maps

form_screen (and any inline-sample entry) showed "Stac Parse Error" cards on
its buttons — TypeError: ImmutableMap<dynamic, dynamic> is not a subtype of
Map<String, dynamic>.

The inline previews (helloStacSample, formSample) are const map literals, so
their nested maps — empty {} action maps especially — are typed
<dynamic, dynamic>. Stac's generated fromJson does
`json['child'] as Map<String, dynamic>`, which rejects them. The live DSL and
JSON editor paths were unaffected because both produce real Map<String,dynamic>
trees (the parser builds them, jsonDecode returns them); only the const samples
hit it.

Round-trip the samples through jsonDecode(jsonEncode(...)) before they become
jsonData, which rebuilds every node as Map<String,dynamic>/List<dynamic>.
Verified the buttons render with zero parse errors on both the VM and a real
browser (flutter test --platform chrome).

* chore(assets): update Stac Playground social banner

Replace assets/playground.png with the new 1200x630 Stac Playground banner,
used as the og:image / twitter:image for the playground web app.

* feat(playground): show per-entry icons in the desktop index

The desktop index rendered a uniform brackets icon for every row while the
mobile list showed each entry's own icon. Render the entry icon through Stac's
icon parser on desktop too (same path as mobile), so the two stay in sync.

* refactor(playground): drop the tablet and desktop preview sizes

The preview only needs the mobile frame, so remove the device selector from
the toolbar. Nothing else read the device, so the PreviewDevice enum, the
HomeState field and setDevice go with it rather than leaving the enum wired to
a control that no longer exists; the frame now uses the mobile size directly.

* refactor(playground): build the index row from ListTile

The row was a hand-rolled InkWell + Container + Row that mapped exactly onto
ListTile's leading/title/trailing slots, so use the real thing: the selected
state now carries proper semantics for screen readers, and the label grows with
the OS text scale instead of clipping against a hard-coded 24px height.

Keeping the IDE-style density does cost a block of overrides, since ListTile's
Material defaults are much roomier than a 24px file-list row.

---------

Co-authored-by: Divyanshu Bhargava <divyanshub024@gmail.com>
@coderabbitai

coderabbitai Bot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 279 files, which is 129 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 203d7b10-024e-4390-a2ca-ffcd046848a1

📥 Commits

Reviewing files that changed from the base of the PR and between e3bd43c and 11ed90f.

⛔ Files ignored due to path filters (55)
  • assets/playground.png is excluded by !**/*.png
  • examples/stac_gallery/assets/images/example_image_1.jpeg is excluded by !**/*.jpeg
  • examples/stac_gallery/assets/images/example_image_2.jpeg is excluded by !**/*.jpeg
  • examples/stac_gallery/assets/images/gallery.svg is excluded by !**/*.svg
  • examples/stac_gallery/macos/Podfile.lock is excluded by !**/*.lock
  • examples/stac_gallery/web/favicon.png is excluded by !**/*.png
  • examples/stac_gallery/web/icons/Icon-192.png is excluded by !**/*.png
  • examples/stac_gallery/web/icons/Icon-512.png is excluded by !**/*.png
  • examples/stac_gallery/web/icons/Icon-maskable-192.png is excluded by !**/*.png
  • examples/stac_gallery/web/icons/Icon-maskable-512.png is excluded by !**/*.png
  • stac_playground/android/app/src/main/res/mipmap-hdpi/ic_launcher.png is excluded by !**/*.png
  • stac_playground/android/app/src/main/res/mipmap-mdpi/ic_launcher.png is excluded by !**/*.png
  • stac_playground/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png is excluded by !**/*.png
  • stac_playground/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png is excluded by !**/*.png
  • stac_playground/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png is excluded by !**/*.png
  • stac_playground/assets/fonts/Figtree.ttf is excluded by !**/*.ttf
  • stac_playground/assets/images/dart_logo.png is excluded by !**/*.png
  • stac_playground/assets/images/logo.svg is excluded by !**/*.svg
  • stac_playground/assets/images/logo_console.png is excluded by !**/*.png
  • stac_playground/ios/Podfile.lock is excluded by !**/*.lock
  • stac_playground/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata is excluded by !**/*.xcworkspace/contents.xcworkspacedata
  • stac_playground/ios/Runner.xcworkspace/contents.xcworkspacedata is excluded by !**/*.xcworkspace/contents.xcworkspacedata
  • stac_playground/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png is excluded by !**/*.png
  • stac_playground/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png is excluded by !**/*.png
  • stac_playground/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png is excluded by !**/*.png
  • stac_playground/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png is excluded by !**/*.png
  • stac_playground/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png is excluded by !**/*.png
  • stac_playground/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png is excluded by !**/*.png
  • stac_playground/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png is excluded by !**/*.png
  • stac_playground/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png is excluded by !**/*.png
  • stac_playground/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png is excluded by !**/*.png
  • stac_playground/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png is excluded by !**/*.png
  • stac_playground/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png is excluded by !**/*.png
  • stac_playground/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png is excluded by !**/*.png
  • stac_playground/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png is excluded by !**/*.png
  • stac_playground/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png is excluded by !**/*.png
  • stac_playground/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png is excluded by !**/*.png
  • stac_playground/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png is excluded by !**/*.png
  • stac_playground/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png is excluded by !**/*.png
  • stac_playground/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png is excluded by !**/*.png
  • stac_playground/macos/Runner.xcworkspace/contents.xcworkspacedata is excluded by !**/*.xcworkspace/contents.xcworkspacedata
  • stac_playground/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png is excluded by !**/*.png
  • stac_playground/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png is excluded by !**/*.png
  • stac_playground/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png is excluded by !**/*.png
  • stac_playground/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png is excluded by !**/*.png
  • stac_playground/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png is excluded by !**/*.png
  • stac_playground/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png is excluded by !**/*.png
  • stac_playground/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png is excluded by !**/*.png
  • stac_playground/pubspec.lock is excluded by !**/*.lock
  • stac_playground/web/favicon.png is excluded by !**/*.png
  • stac_playground/web/icons/Icon-192.png is excluded by !**/*.png
  • stac_playground/web/icons/Icon-512.png is excluded by !**/*.png
  • stac_playground/web/icons/Icon-maskable-192.png is excluded by !**/*.png
  • stac_playground/web/icons/Icon-maskable-512.png is excluded by !**/*.png
  • stac_playground/windows/runner/resources/app_icon.ico is excluded by !**/*.ico
📒 Files selected for processing (301)
  • .github/workflows/all_plugins.yaml
  • .gitignore
  • .vscode/launch.json
  • docs/actions/multi_action.mdx
  • docs/actions/set_value.mdx
  • docs/widgets/form.mdx
  • docs/widgets/refresh_indicator.mdx
  • examples/stac_gallery/README.md
  • examples/stac_gallery/analysis_options.yaml
  • examples/stac_gallery/devtools_options.yaml
  • examples/stac_gallery/ios/Runner/AppDelegate.swift
  • examples/stac_gallery/ios/RunnerTests/RunnerTests.swift
  • examples/stac_gallery/lib/app/details/details_screen.dart
  • examples/stac_gallery/lib/app/example/example_screen.dart
  • examples/stac_gallery/lib/app/example/example_screen.freezed.dart
  • examples/stac_gallery/lib/app/example/example_screen.g.dart
  • examples/stac_gallery/lib/app/example/example_screen_parser.dart
  • examples/stac_gallery/lib/app/home/cubit/home_cubit.dart
  • examples/stac_gallery/lib/app/home/cubit/home_state.dart
  • examples/stac_gallery/lib/app/home/home_screen.dart
  • examples/stac_gallery/lib/app_theme/app_theme_cubit.dart
  • examples/stac_gallery/lib/app_theme/app_theme_state.dart
  • examples/stac_gallery/lib/main.dart
  • examples/stac_gallery/linux/flutter/generated_plugin_registrant.cc
  • examples/stac_gallery/macos/Runner/AppDelegate.swift
  • examples/stac_gallery/macos/Runner/MainFlutterWindow.swift
  • examples/stac_gallery/macos/RunnerTests/RunnerTests.swift
  • examples/stac_gallery/test/widget_test.dart
  • examples/stac_gallery/web/index.html
  • melos.yaml
  • packages/stac/example/README.md
  • stac_playground/.gitignore
  • stac_playground/.metadata
  • stac_playground/README.md
  • stac_playground/analysis_options.yaml
  • stac_playground/android/.gitignore
  • stac_playground/android/app/build.gradle
  • stac_playground/android/app/src/debug/AndroidManifest.xml
  • stac_playground/android/app/src/main/AndroidManifest.xml
  • stac_playground/android/app/src/main/kotlin/com/stac/stac_playground/MainActivity.kt
  • stac_playground/android/app/src/main/res/drawable-v21/launch_background.xml
  • stac_playground/android/app/src/main/res/drawable/launch_background.xml
  • stac_playground/android/app/src/main/res/values-night/styles.xml
  • stac_playground/android/app/src/main/res/values/styles.xml
  • stac_playground/android/app/src/profile/AndroidManifest.xml
  • stac_playground/android/build.gradle
  • stac_playground/android/gradle.properties
  • stac_playground/android/gradle/wrapper/gradle-wrapper.properties
  • stac_playground/android/settings.gradle
  • stac_playground/assets/json/align_example.json
  • stac_playground/assets/json/app_bar_example.json
  • stac_playground/assets/json/aspect_ratio_example.json
  • stac_playground/assets/json/auto_complete_example.json
  • stac_playground/assets/json/backdrop_filter_example.json
  • stac_playground/assets/json/badge_example.json
  • stac_playground/assets/json/bottom_nav_bar_example.json
  • stac_playground/assets/json/bottom_sheet_example.json
  • stac_playground/assets/json/card_example.json
  • stac_playground/assets/json/carousel_view_example.json
  • stac_playground/assets/json/center_example.json
  • stac_playground/assets/json/chip_example.json
  • stac_playground/assets/json/circular_progress_indicator_example.json
  • stac_playground/assets/json/clip_oval_example.json
  • stac_playground/assets/json/column_example.json
  • stac_playground/assets/json/conditional_example.json
  • stac_playground/assets/json/container_example.json
  • stac_playground/assets/json/dialog_example.json
  • stac_playground/assets/json/divider_example.json
  • stac_playground/assets/json/drawer_example.json
  • stac_playground/assets/json/dropdown_menu_view_example.json
  • stac_playground/assets/json/dynamic_list_view_example.json
  • stac_playground/assets/json/dynamic_view_example.json
  • stac_playground/assets/json/elevated_button_example.json
  • stac_playground/assets/json/example_dark_theme.json
  • stac_playground/assets/json/example_light_theme.json
  • stac_playground/assets/json/filled_button_example.json
  • stac_playground/assets/json/fitted_box_example.json
  • stac_playground/assets/json/floating_action_button_example.json
  • stac_playground/assets/json/form_example.json
  • stac_playground/assets/json/fractionally_sized_box_example.json
  • stac_playground/assets/json/grid_view_example.json
  • stac_playground/assets/json/hero_example.json
  • stac_playground/assets/json/home_screen.json
  • stac_playground/assets/json/icon_button_example.json
  • stac_playground/assets/json/icon_example.json
  • stac_playground/assets/json/image_example.json
  • stac_playground/assets/json/inkwell_example.json
  • stac_playground/assets/json/limited_box_example.json
  • stac_playground/assets/json/linear_progress_indicator_example.json
  • stac_playground/assets/json/list_tile_example.json
  • stac_playground/assets/json/list_view_example.json
  • stac_playground/assets/json/navigation_bar_example.json
  • stac_playground/assets/json/navigation_example.json
  • stac_playground/assets/json/opacity_example.json
  • stac_playground/assets/json/outlined_button_example.json
  • stac_playground/assets/json/padding_example.json
  • stac_playground/assets/json/page_view_example.json
  • stac_playground/assets/json/placeholder_example.json
  • stac_playground/assets/json/radio_example.json
  • stac_playground/assets/json/refresh_indicator_example.json
  • stac_playground/assets/json/row_example.json
  • stac_playground/assets/json/scaffold_example.json
  • stac_playground/assets/json/scroll_view_example.json
  • stac_playground/assets/json/selectable_text_example.json
  • stac_playground/assets/json/sized_box_example.json
  • stac_playground/assets/json/slider_example.json
  • stac_playground/assets/json/sliver_app_bar_example.json
  • stac_playground/assets/json/sliver_fill_remaining_example.json
  • stac_playground/assets/json/sliver_grid_example.json
  • stac_playground/assets/json/sliver_list_example.json
  • stac_playground/assets/json/sliver_opacity_example.json
  • stac_playground/assets/json/sliver_padding_example.json
  • stac_playground/assets/json/sliver_safe_area_example.json
  • stac_playground/assets/json/sliver_to_box_adapter_example.json
  • stac_playground/assets/json/sliver_visibility_example.json
  • stac_playground/assets/json/snackbar_example.json
  • stac_playground/assets/json/spacer_example.json
  • stac_playground/assets/json/stack_example.json
  • stac_playground/assets/json/switch_example.json
  • stac_playground/assets/json/tab_bar_example.json
  • stac_playground/assets/json/table_example.json
  • stac_playground/assets/json/text_button_example.json
  • stac_playground/assets/json/text_example.json
  • stac_playground/assets/json/text_field_example.json
  • stac_playground/assets/json/tool_tip_example.json
  • stac_playground/assets/json/variable_example.json
  • stac_playground/assets/json/variable_navigate_example.json
  • stac_playground/assets/json/web_view_example.json
  • stac_playground/assets/json/wrap_example.json
  • stac_playground/firebase.json
  • stac_playground/ios/.gitignore
  • stac_playground/ios/Flutter/AppFrameworkInfo.plist
  • stac_playground/ios/Flutter/Debug.xcconfig
  • stac_playground/ios/Flutter/Release.xcconfig
  • stac_playground/ios/Podfile
  • stac_playground/ios/Runner.xcodeproj/project.pbxproj
  • stac_playground/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  • stac_playground/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
  • stac_playground/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
  • stac_playground/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  • stac_playground/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
  • stac_playground/ios/Runner/AppDelegate.swift
  • stac_playground/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
  • stac_playground/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
  • stac_playground/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
  • stac_playground/ios/Runner/Base.lproj/LaunchScreen.storyboard
  • stac_playground/ios/Runner/Base.lproj/Main.storyboard
  • stac_playground/ios/Runner/Info.plist
  • stac_playground/ios/Runner/Runner-Bridging-Header.h
  • stac_playground/ios/RunnerTests/RunnerTests.swift
  • stac_playground/lib/app/cubit/home_cubit.dart
  • stac_playground/lib/app/cubit/home_state.dart
  • stac_playground/lib/app/embed/embed_message_channel.dart
  • stac_playground/lib/app/embed/embed_screen.dart
  • stac_playground/lib/app/embed/embed_screen_stub.dart
  • stac_playground/lib/app/home_screen.dart
  • stac_playground/lib/app/mobile/mobile_shell.dart
  • stac_playground/lib/app/widgets/code_preview.dart
  • stac_playground/lib/app/widgets/console_icon_rail.dart
  • stac_playground/lib/app/widgets/editor_panel.dart
  • stac_playground/lib/app/widgets/find_panel.dart
  • stac_playground/lib/app/widgets/index_panel.dart
  • stac_playground/lib/app/widgets/section_nav.dart
  • stac_playground/lib/data/component_entries.dart
  • stac_playground/lib/data/dsl_to_json.dart
  • stac_playground/lib/data/playground_entry.dart
  • stac_playground/lib/dsl/align.dart
  • stac_playground/lib/dsl/app_bar.dart
  • stac_playground/lib/dsl/aspect_ratio.dart
  • stac_playground/lib/dsl/auto_complete.dart
  • stac_playground/lib/dsl/backdrop_filter.dart
  • stac_playground/lib/dsl/badge.dart
  • stac_playground/lib/dsl/bottom_nav_bar.dart
  • stac_playground/lib/dsl/bottom_sheet.dart
  • stac_playground/lib/dsl/card.dart
  • stac_playground/lib/dsl/carousel_view.dart
  • stac_playground/lib/dsl/center.dart
  • stac_playground/lib/dsl/chip.dart
  • stac_playground/lib/dsl/circular_progress_indicator.dart
  • stac_playground/lib/dsl/clip_oval.dart
  • stac_playground/lib/dsl/column.dart
  • stac_playground/lib/dsl/conditional.dart
  • stac_playground/lib/dsl/container.dart
  • stac_playground/lib/dsl/dialog.dart
  • stac_playground/lib/dsl/divider.dart
  • stac_playground/lib/dsl/drawer.dart
  • stac_playground/lib/dsl/dropdown_menu_view.dart
  • stac_playground/lib/dsl/dynamic_list_view.dart
  • stac_playground/lib/dsl/dynamic_view.dart
  • stac_playground/lib/dsl/elevated_button.dart
  • stac_playground/lib/dsl/filled_button.dart
  • stac_playground/lib/dsl/fitted_box.dart
  • stac_playground/lib/dsl/floating_action_button.dart
  • stac_playground/lib/dsl/form.dart
  • stac_playground/lib/dsl/fractionally_sized_box.dart
  • stac_playground/lib/dsl/grid_view.dart
  • stac_playground/lib/dsl/hero.dart
  • stac_playground/lib/dsl/icon.dart
  • stac_playground/lib/dsl/icon_button.dart
  • stac_playground/lib/dsl/image.dart
  • stac_playground/lib/dsl/inkwell.dart
  • stac_playground/lib/dsl/limited_box.dart
  • stac_playground/lib/dsl/linear_progress_indicator.dart
  • stac_playground/lib/dsl/list_tile.dart
  • stac_playground/lib/dsl/list_view.dart
  • stac_playground/lib/dsl/navigation.dart
  • stac_playground/lib/dsl/navigation_bar.dart
  • stac_playground/lib/dsl/opacity.dart
  • stac_playground/lib/dsl/outlined_button.dart
  • stac_playground/lib/dsl/padding.dart
  • stac_playground/lib/dsl/page_view.dart
  • stac_playground/lib/dsl/placeholder.dart
  • stac_playground/lib/dsl/radio.dart
  • stac_playground/lib/dsl/refresh_indicator.dart
  • stac_playground/lib/dsl/row.dart
  • stac_playground/lib/dsl/scaffold.dart
  • stac_playground/lib/dsl/scroll_view.dart
  • stac_playground/lib/dsl/selectable_text.dart
  • stac_playground/lib/dsl/sized_box.dart
  • stac_playground/lib/dsl/slider.dart
  • stac_playground/lib/dsl/sliver_app_bar.dart
  • stac_playground/lib/dsl/sliver_fill_remaining.dart
  • stac_playground/lib/dsl/sliver_grid.dart
  • stac_playground/lib/dsl/sliver_list.dart
  • stac_playground/lib/dsl/sliver_opacity.dart
  • stac_playground/lib/dsl/sliver_padding.dart
  • stac_playground/lib/dsl/sliver_safe_area.dart
  • stac_playground/lib/dsl/sliver_to_box_adapter.dart
  • stac_playground/lib/dsl/sliver_visibility.dart
  • stac_playground/lib/dsl/snackbar.dart
  • stac_playground/lib/dsl/spacer.dart
  • stac_playground/lib/dsl/stack.dart
  • stac_playground/lib/dsl/switch.dart
  • stac_playground/lib/dsl/tab_bar.dart
  • stac_playground/lib/dsl/table.dart
  • stac_playground/lib/dsl/text.dart
  • stac_playground/lib/dsl/text_button.dart
  • stac_playground/lib/dsl/text_field.dart
  • stac_playground/lib/dsl/tool_tip.dart
  • stac_playground/lib/dsl/variable.dart
  • stac_playground/lib/dsl/variable_navigate.dart
  • stac_playground/lib/dsl/web_view.dart
  • stac_playground/lib/dsl/wrap.dart
  • stac_playground/lib/main.dart
  • stac_playground/lib/theme/app_colors.dart
  • stac_playground/lib/theme/app_text_theme.dart
  • stac_playground/lib/theme/app_theme.dart
  • stac_playground/lib/utils/log.dart
  • stac_playground/linux/.gitignore
  • stac_playground/linux/CMakeLists.txt
  • stac_playground/linux/flutter/CMakeLists.txt
  • stac_playground/linux/flutter/generated_plugin_registrant.cc
  • stac_playground/linux/flutter/generated_plugin_registrant.h
  • stac_playground/linux/flutter/generated_plugins.cmake
  • stac_playground/linux/runner/CMakeLists.txt
  • stac_playground/linux/runner/main.cc
  • stac_playground/linux/runner/my_application.cc
  • stac_playground/linux/runner/my_application.h
  • stac_playground/macos/.gitignore
  • stac_playground/macos/Flutter/Flutter-Debug.xcconfig
  • stac_playground/macos/Flutter/Flutter-Release.xcconfig
  • stac_playground/macos/Flutter/GeneratedPluginRegistrant.swift
  • stac_playground/macos/Podfile
  • stac_playground/macos/Runner.xcodeproj/project.pbxproj
  • stac_playground/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  • stac_playground/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
  • stac_playground/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  • stac_playground/macos/Runner/AppDelegate.swift
  • stac_playground/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
  • stac_playground/macos/Runner/Base.lproj/MainMenu.xib
  • stac_playground/macos/Runner/Configs/AppInfo.xcconfig
  • stac_playground/macos/Runner/Configs/Debug.xcconfig
  • stac_playground/macos/Runner/Configs/Release.xcconfig
  • stac_playground/macos/Runner/Configs/Warnings.xcconfig
  • stac_playground/macos/Runner/DebugProfile.entitlements
  • stac_playground/macos/Runner/Info.plist
  • stac_playground/macos/Runner/MainFlutterWindow.swift
  • stac_playground/macos/Runner/Release.entitlements
  • stac_playground/macos/RunnerTests/RunnerTests.swift
  • stac_playground/pubspec.yaml
  • stac_playground/test/dart_edit_preview_test.dart
  • stac_playground/test/dsl_to_json_test.dart
  • stac_playground/web/index.html
  • stac_playground/web/manifest.json
  • stac_playground/windows/.gitignore
  • stac_playground/windows/CMakeLists.txt
  • stac_playground/windows/flutter/CMakeLists.txt
  • stac_playground/windows/flutter/generated_plugin_registrant.cc
  • stac_playground/windows/flutter/generated_plugin_registrant.h
  • stac_playground/windows/flutter/generated_plugins.cmake
  • stac_playground/windows/runner/CMakeLists.txt
  • stac_playground/windows/runner/Runner.rc
  • stac_playground/windows/runner/flutter_window.cpp
  • stac_playground/windows/runner/flutter_window.h
  • stac_playground/windows/runner/main.cpp
  • stac_playground/windows/runner/resource.h
  • stac_playground/windows/runner/runner.exe.manifest
  • stac_playground/windows/runner/utils.cpp
  • stac_playground/windows/runner/utils.h
  • stac_playground/windows/runner/win32_window.cpp
  • stac_playground/windows/runner/win32_window.h

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@divyanshub024
divyanshub024 merged commit 1f6ed73 into main Jul 26, 2026
6 of 7 checks passed
@divyanshub024
divyanshub024 deleted the dev branch July 26, 2026 10:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants