Refactor use-portal-container to allocate one persistent <div> per
logical category (:modal, :popup, :tooltip, :default) instead of
creating a new div for every component instance. This keeps the DOM
clean with at most four fixed portal containers and eliminates the
arbitrary growth of empty <div> elements on document.body while
preserving the removeChild race condition fix.
The dedicated-container portal pattern was repeated across 7 components.
Extract it into a reusable use-portal-container hook under app.main.ui.hooks.
Signed-off-by: Andrey Antukh <niwi@niwi.nz>
The previous fix (80b64c440c) only addressed portal-on-document* but
there were 6 additional components that portaled directly to
document.body, causing the same race condition when React attempted
to remove a node that had already been detached during concurrent
state updates (e.g. navigating away while a context menu is open).
Apply the dedicated-container pattern consistently to all portal
sites: modal, context menus, combobox dropdown, theme selector, and
tooltip. Each component now creates a dedicated <div> container
appended to body on mount and removed on cleanup, giving React an
exclusive containerInfo for each portal instance.
Signed-off-by: Andrey Antukh <niwi@niwi.nz>
* ♻️ Update tooltip position on icon buttons
* ♻️ Sort token groups by priority not alphabetically
* ♻️ Add proper padding on text-icon-inputs
* ♻️ Hide detach button when dropdown is open
* 🐛 Fix detach stroke width
* 🐛 Fix strokes applied on all rows
* 🐛 Fix nillable inputs
* 🐛 Fix comments on PR
The color tokens in grid view have a tooltip which is a map.
This is done so the frontend can render:
```
Name: foo
Resolved value: #000000
```
However the validation scheme for tooltips was only accepting functions
and strings.
---
How to reproduce the original (unreported) crash:
* Create a color token
* Create a shape, add a fill
* Pick a color, chose the Token options
* Click on the Grid View
Crash: `{:hint "invalid props on component tooltip*\n\n -> 'content'
should be a string\n"}`
Signed-off-by: Dalai Felinto <dalai@blender.org>
Co-authored-by: Dalai Felinto <dalai@blender.org>
* 🔧 Upgrade to storybook 9.x
* 🔧 Upgrade to storybook 10.x
* 🔧 Update watch:storybook script so it builds its assets dependencies first
* 🔧 Use vitest for storybook tests (test-storybook was deprecated)
* 🐛 Fix apply color token on strokes
* 🐛 Fix size and position of some numeric inputs
* 🐛 Fix padding token application
* ♻️ Fix ci
* 🐛 Fix selected color tick
* 🐛 Fix comments and design review
* ✨ Add token aplication to colorpicker
* 🐛 Change fn name
* 🐛 Change scss from file
* 🐛 Change color for direct-color
* 🐛 Remove vector from fns
* 🐛 Fix CI
* 🐛 Change color-option name
* 🐛 Fix comments
* 🐛 Remove sets without color tokens