* [REF-2098] Allow overlay Close components to have on_click handlers
The child of the Radix *Close components are passed `asChild`, meaning they are
treated as the direct child of the Close itself. This causes the `on_click`
handler attached to such an element to override the default `on_click` behavior
of the Close, which is to close the overlay, thus breaking the desired behavior
of the Close component.
When creating a Close component, if the child has an `on_click` handler, then
internally wrap it in a `Flex` so that the `Flex` gets the `asChild` treatment,
and both the default on_click and the child's on_click are both fired.
Bonus fix: pass `asChild` when constructing the `DrawerClose` to avoid a
<button> in <button> warning in the browser console, because the Drawer does
NOT pass `asChild` to the Close by default.
* Move Trigger logic to RadixThemesTriggerComponent base class
Apply trigger logic to Trigger, Close, Cancel, and Accept components; including
hover_card and dropdown_menu.
The ThemePanel fights with the ThemeProvider when the user color preference key differs from the `appearance` prop specified in the theme. To avoid issues when using the ThemePanel (in development), clear out the user color preference before loading the page and before unloading the page (to ensure it does not freeze on reload).
Clearing the user preference isn't ideal production behavior, but typically the
ThemePanel is only used during development for trying out different styles, and
having it not freeze the app is better dev behavior.
Fix#2650
* [REF-2087] Better rx.progress styling integration with radix themes
Support the `radius` prop on `ProgressRoot`, via data-radius and CSS tokens
Support the `color_scheme` on `ProgressIndicator`, via data-accent-color and CSS token
Move high-level `Progress` to a real `Component` subclass to get better pyi hinting
Allow overriding the background color of the `ProgressIndicator` via low-level api
Remove `value` and `max` props from `ProgressRoot` (these only apply to `ProgressIndicator`)
* Progress: do not pass `value` or `max` to ProgressRoot
* progress: use background_color instead of background-color
* Accordion Items unique Value
use crypto.randomUUID to generate accordion item value at runtime instead of compile time
* use generateUUID in state.js instead of crypto.randomUUID()
* Accordion Root Exclude `color_scheme` and `variant` props in tag
* colorScheme -> color for radix primitives
* remove _rename_props based on pr comments
* lint
* pyi fix
* pop instead of del
* link: respect `is_external` prop and other attributes on A tag
Instead of passing all props to NextLink by default, only pass props that
NextLink understands, placing the remaining props on the Radix link
Add a test case to avoid regression of `is_external` behavior.
* Link is a MemoizationLeaf
Because Link is often rendered with NextLink as_child, and NextLink breaks if
the href is stateful outside of a Link, ensure that any stateful child of Link
gets memoized together.
* Component: translate underscore suffix for props supported by chakra
type_ becomes type
min_ becomes min
max_ becomes max
id_ becomes id
The deprecation warning is only displayed when the underscore suffix prop is
passed and the non-underscore suffix prop is defined on the given component.
* Rename type_ to type in accordion and scroll_area
All of the new radix components avoid the underscore suffix names where
possible.
* Update deprecation warning wording
* Refactor for readability
* Do not raise deprecation warning for `id_`
id is kind of a special prop because it exists on all components
* Add test case for deprecating underscore suffix props
* style: shorthand replacements need camelCase
Avoid warning on terminal and in browser console from using kebab-case CSS
props with emotion.
* _rename_props only replace prop name once
In case the value also contains the prop name, we don't want to replace it
multiple times.
* pyi_generator: ignore _rename_props in create signature
* Avoid shadowing CSS prop `display` and `gap`
Replace usages of `gap` with `spacing` to retain Radix sizing number system,
while allowing users to specify a responsive `gap` using CSS units.
Remove `display` props from radix components, allowing `display` to accept
responsive lists.
* checkbox: apply `gap` to `flex` if provided
* Remove _rename_props from .create signatures
* Fix spacing prop in blank template
* Fixup tests after changing style shorthand to return camelCase
* pyi_generator: always ignore files starting with `tests`
* Move CodeBlock out of chakra namespace
* Expose additional names in the top-level namespace
* code pyi fixup
* expose input and quote at the top-level
* add text_field to top-level namespace (maybe)
* fixup chakra code.pyi
* Remove `text_field` from top level namespace
* Remove top-level big C Cond
* fixup top level pyi
* Reserve top-level __call__ for a future high level API
Instead of aliasing the top-level `__call__` to `.root`, require users
to explicitly call `.root` to avoid breakage when a future high level
API gets implemented and takes over the top-level `__call__`
Fix REF-1839
* alertdialog: forgot this one
* update to ensure every radix component only inherits events from EventTriggers class
* update the naming of event handlers to swap name on_value_change and on_checked_change to on_change
* update to call _replace_prop_names in component.py
* small darglint error fix
* update to ensure every radix component only inherits events from EventTriggers class
* update the naming of event handlers to swap name on_value_change and on_checked_change to on_change
* update to call _replace_prop_names in component.py
* small darglint error fix
* updates to pass pytest tests
* small fix
* duplicate removal
---------
Co-authored-by: Tom Gotsman <tomgotsman@toms-mbp.lan>