Skip to content

I hope it is easy and convenient to modify the component's style, similar to the style attribute in HTML. #185

Closed

Description

@zhuyuanmin

Native components have limited styling options, their styles are very difficult to adjust, and they lack devtools. I hope this area can be improved!

Activity

  1. proggeramlug commented on Apr 25, 2026

    @proggeramlug
    Contributor

    @zhuyuanmin I hear you my friend and I know what you mean.

    I'm currently working HARD to get the fundamentals as good as possible. This should be finished today, then I'll take deep and comprehensive dives into the UI and styling options.

    You are talking about the perry/ui components though, right?

  2. zhuyuanmin commented on Apr 25, 2026

    @zhuyuanmin
    Author

    @zhuyuanmin I hear you my friend and I know what you mean.

    I'm currently working HARD to get the fundamentals as good as possible. This should be finished today, then I'll take deep and comprehensive dives into the UI and styling options.

    You are talking about the perry/ui components though, right?

    Yes, you are right.

    It is indeed a fantastic project to look forward to. I think I would be happy to participate in its development.

  3. proggeramlug commented on Apr 25, 2026

    @proggeramlug
    Contributor

    @zhuyuanmin Thanks! :)

    Feel free - anything helps:

    • Testing and reporting bugs
    • Developing new features/fixing bugs
    • Working on tutorials, sample apps etc
    • Reporting feature wishes (like you did here!)
  4. added a commit that references this issue on Apr 26, 2026
  5. added 8 commits that reference this issue on Apr 26, 2026
  6. added 2 commits that reference this issue on Apr 26, 2026
  7. 2 remaining items

  8. yumin-chen commented on Apr 27, 2026

    @yumin-chen
    Contributor

    possible to support panda.js as an option? I love css-in-js

  9. added 6 commits that reference this issue on Apr 27, 2026
  10. proggeramlug commented on Apr 28, 2026

    @proggeramlug
    Contributor

    Closing — all three explicit asks from this issue are now shipped end-to-end.

    1. Rich styling primitives — Phase A landed the machine-checked styling matrix (crates/perry-ui/src/styling_matrix.rs + drift CI gate); Phase B closed every cross-platform gap surfaced by the audit (shadow / opacity / borders / text-decoration / font_family); Phase C wired the inline style: { ... } API on every Widget constructor (Button, Text, VStack/HStack, etc.) with both compile-time string-color parsing ("#3B82F6", named colors) and runtime parseColor for dynamic values.

    2. Cross-platform parity — styling matrix at 42-43/43 Wired on every platform Perry currently supports (macOS / iOS / tvOS / visionOS / watchOS / Android / GTK4 / Windows / Web). The lone remaining Stub is Win32 widget.shadow, which needs DirectComposition infra and is tracked under #230.

    3. Devtools — Phase D shipped the live inspector at localhost:7676/:

    • Step 1 (v0.5.349): tree view + per-widget metadata page served from the geisterhand HTTP server.
    • Step 2 (v0.5.350 macOS, v0.5.360 iOS / tvOS / GTK4 / Windows): live style editing via POST /style/:h → main-thread apply_style dispatcher → existing per-platform setters. 9 editable StyleProps in the inspector UI's right-column edit fields.
    • Step 3 (v0.5.361): live screenshot preview in the inspector's center column, with a selection overlay that highlights the clicked widget's frame on top of the live image.

    Tracked follow-ups (all separately ticketed so they don't leak into search-archeology):

    Reference points for anyone landing follow-up work: the styling matrix is the source of truth for what's wired vs missing per backend; the inspector page (crates/perry-ui-geisterhand/src/inspector_ui/index.html) is the canonical consumer of the live edit + screenshot endpoints.

  11. added 3 commits that reference this issue on Apr 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew capability or improvement

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions