diff --git a/docs/components/checkbox.md b/docs/components/checkbox.md index 6a54019..8a9c8aa 100644 --- a/docs/components/checkbox.md +++ b/docs/components/checkbox.md @@ -1,9 +1,36 @@ ### Basic usage ```py +import streamlit as st + import streamlit_shadcn_ui as ui -ui.checkbox(checked=True, label="I am a Checkbox 1") -ui.checkbox(checked=False, label="I am a Checkbox 2") -ui.checkbox(checked=False, label="I am a Checkbox 3") +st.subheader("Single Choice") +checkbox_options = [ + {"label": "I am a Checkbox 1", "id": "s1", "default_checked": True}, + {"label": "I am a Checkbox 2", "id": "s2", "default_checked": False}, + {"label": "I am a Checkbox 3", "id": "s3", "default_checked": False}, +] + +checkbox_values = [option["default_checked"] for option in checkbox_options] + +checkbox_values[0] = ui.checkbox(mode="single", options=[checkbox_options[0]], key="cb1") +checkbox_values[1] = ui.checkbox(mode="single", options=[checkbox_options[1]], key="cb2") +checkbox_values[2] = ui.checkbox(mode="single", options=[checkbox_options[2]], key="cb3") + +st.markdown(f""" ++ checkbox 1 value: {checkbox_values[0]} ++ checkbox 2 value: {checkbox_values[1]} ++ checkbox 3 value: {checkbox_values[2]} +""") + +st.subheader("Multiple Choices") +checkbox_options_multiple = [ + {"label": "Option A", "id": "m1", "default_checked":False}, + {"label": "Option B", "id": "m2", "default_checked":False}, + {"label": "Option C", "id": "m3", "default_checked":False}, + {"label": "Option D", "id": "m4", "default_checked":False} +] +radio_value_1 = ui.checkbox(mode="multiple", options=checkbox_options_multiple, key="cb4") +st.write("Selected Option:", radio_value_1) ``` \ No newline at end of file diff --git a/docs/components/radio_group.md b/docs/components/radio_group.md index 6e5f577..bc44778 100644 --- a/docs/components/radio_group.md +++ b/docs/components/radio_group.md @@ -8,13 +8,11 @@ import streamlit_shadcn_ui as ui radio_options = [ {"label": "Option A", "value": "A", "id": "r1"}, {"label": "Option B", "value": "B", "id": "r2"}, - {"label": "Option C", "value": "C", "id": "r3"} + {"label": "Option C", "value": "C", "id": "r3"}, + {"label": "Option D", "value": "D", "id": "r4"} ] -radio_value = ui.radio_group(options=radio_options, default_value="B", mode="single",key="radio1") +radio_value = ui.radio_group(options=radio_options, default_value="B", key="radio1") st.write("Selected Radio Option:", radio_value) -radio_value_1 = ui.radio_group(options=radio_options, default_value=["B"], mode="multiple",key="radio2") -st.write("Selected Radio Option:", radio_value_1) - st.write(ui.radio_group) ``` \ No newline at end of file diff --git a/package.json b/package.json deleted file mode 100644 index 0fa7aac..0000000 --- a/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "dependencies": { - "@radix-ui/react-accordion": "^1.2.2", - "@radix-ui/react-aspect-ratio": "^1.1.1", - "@radix-ui/react-collapsible": "^1.1.2", - "@radix-ui/react-progress": "^1.1.1", - "@radix-ui/react-scroll-area": "^1.2.2", - "@radix-ui/react-separator": "^1.1.1", - "@radix-ui/react-toast": "^1.2.5", - "@radix-ui/react-toggle": "^1.1.1", - "cmdk": "^1.0.4", - "embla-carousel-react": "^8.5.2", - "next-themes": "^0.4.4", - "react-resizable-panels": "^2.1.7", - "sonner": "^1.7.2", - "vaul": "^1.1.2" - } -} diff --git a/pages/Checkbox.py b/pages/Checkbox.py index f2b75b3..429ad4a 100644 --- a/pages/Checkbox.py +++ b/pages/Checkbox.py @@ -4,12 +4,18 @@ st.header("Checkbox") -checkbox_values = [True, False, False] +st.subheader("Single Choice") +checkbox_options = [ + {"label": "I am a Checkbox 1", "id": "s1", "default_checked": True}, + {"label": "I am a Checkbox 2", "id": "s2", "default_checked": False}, + {"label": "I am a Checkbox 3", "id": "s3", "default_checked": False}, +] +checkbox_values = [option["default_checked"] for option in checkbox_options] -checkbox_values[0] = ui.checkbox(default_checked=True, label="I am a Checkbox 1", key="cb1") -checkbox_values[1] = ui.checkbox(default_checked=False, label="I am a Checkbox 2", key="cb2") -checkbox_values[2] = ui.checkbox(default_checked=False, label="I am a Checkbox 3", key="cb3") +checkbox_values[0] = ui.checkbox(mode="single", options=[checkbox_options[0]], key="cb1") +checkbox_values[1] = ui.checkbox(mode="single", options=[checkbox_options[1]], key="cb2") +checkbox_values[2] = ui.checkbox(mode="single", options=[checkbox_options[2]], key="cb3") st.markdown(f""" + checkbox 1 value: {checkbox_values[0]} @@ -17,7 +23,17 @@ + checkbox 3 value: {checkbox_values[2]} """) -with open("docs/components/checkbox.md", "r") as f: - st.markdown(f.read()) +st.subheader("Multiple Choices") +checkbox_options_multiple = [ + {"label": "Option A", "id": "m1", "default_checked":False}, + {"label": "Option B", "id": "m2", "default_checked":False}, + {"label": "Option C", "id": "m3", "default_checked":False}, + {"label": "Option D", "id": "m4", "default_checked":False} +] +radio_value_1 = ui.checkbox(mode="multiple", options=checkbox_options_multiple, key="cb4") +st.write("Selected Option:", radio_value_1) + +st.write(ui.checkbox) -st.write(ui.checkbox) \ No newline at end of file +with open("docs/components/checkbox.md", "r") as f: + st.markdown(f.read()) \ No newline at end of file diff --git a/pages/RadioGroup.py b/pages/RadioGroup.py index b53b10b..cfa1f75 100644 --- a/pages/RadioGroup.py +++ b/pages/RadioGroup.py @@ -12,10 +12,7 @@ {"label": "Option C", "value": "C", "id": "r3"}, {"label": "Option D", "value": "D", "id": "r4"} ] -radio_value = ui.radio_group(options=radio_options, default_value="B", mode="single",key="radio1") +radio_value = ui.radio_group(options=radio_options, default_value="B", key="radio1") st.write("Selected Radio Option:", radio_value) -radio_value_1 = ui.radio_group(options=radio_options, default_value=["B"], mode="multiple",key="radio2") -st.write("Selected Radio Option:", radio_value_1) - st.write(ui.radio_group) \ No newline at end of file diff --git a/streamlit_shadcn_ui/components/packages/frontend/src/components/streamlit/checkbox.tsx b/streamlit_shadcn_ui/components/packages/frontend/src/components/streamlit/checkbox.tsx index 67916c8..b0f81e6 100644 --- a/streamlit_shadcn_ui/components/packages/frontend/src/components/streamlit/checkbox.tsx +++ b/streamlit_shadcn_ui/components/packages/frontend/src/components/streamlit/checkbox.tsx @@ -1,31 +1,52 @@ -import { Checkbox } from "@/components/ui/checkbox"; -import { forwardRef, useCallback, useState } from "react"; +import { forwardRef, useState, useCallback, useEffect } from "react"; import { Streamlit } from "streamlit-component-lib"; +import { Checkbox } from "@/components/ui/checkbox"; +import { Label } from "@/components/ui/label"; interface StCheckboxProps { - label?: string; - defaultChecked?: boolean; - disabled?: boolean; + options?: { label: string; id: string; default_checked: boolean }[]; + mode?: "single" | "multiple"; } -export const StCheckbox = forwardRef( + +export const StCheckbox = forwardRef( (props: StCheckboxProps, ref) => { - const { label, defaultChecked, disabled, ..._props } = props; - const [checked, setChecked] = useState(defaultChecked ?? false); - const onCheckedChange = useCallback((checked: boolean) => { - setChecked(checked); - Streamlit.setComponentValue(checked); + const { options, mode, ..._props } = props; + console.log("options",options) + const initialValues = + options?.reduce((acc, option) => { + acc[option.id] = option.default_checked; + return acc; + }, {} as Record) || {}; + console.log("initialValues",initialValues) + const [selectedValues, setSelectedValues] = useState>(initialValues); + + useEffect(() => { + Streamlit.setComponentValue(initialValues); }, []); + + const handleChange = (id: string) => { + setSelectedValues((prevSelected) => { + const updatedSelected = { ...prevSelected, [id]: !prevSelected[id] }; + Streamlit.setComponentValue(updatedSelected); + return updatedSelected; + }); + }; + return ( -
- - {label && ( - +
+ {options && ( +
+ {options.map((option) => ( +
+ handleChange(option.id)} + /> + +
+ ))} +
)}
); diff --git a/streamlit_shadcn_ui/components/packages/frontend/src/components/streamlit/radioGroup.tsx b/streamlit_shadcn_ui/components/packages/frontend/src/components/streamlit/radioGroup.tsx index 2d64037..bdd62bd 100644 --- a/streamlit_shadcn_ui/components/packages/frontend/src/components/streamlit/radioGroup.tsx +++ b/streamlit_shadcn_ui/components/packages/frontend/src/components/streamlit/radioGroup.tsx @@ -2,77 +2,37 @@ import { forwardRef, useState, useEffect } from "react"; import { Streamlit } from "streamlit-component-lib"; import { Label } from "@/components/ui/label"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; -import { Checkbox } from "@/components/ui/checkbox"; + interface StRadioGroupProps { - defaultValue?: string | string[]; + defaultValue?: string; options: { label: string; value: string; id: string }[]; - mode?: "single" | "multiple"; } export const StRadioGroup = forwardRef( (props: StRadioGroupProps, ref) => { - const { defaultValue, options, mode } = props; - const [selectedValue, setSelectedValue] = useState( - mode === "single" - ? (defaultValue as string) || "" - : (defaultValue as string[]) || [] - ); + const { defaultValue, options } = props; + const [selectedValue, setSelectedValue] = useState(defaultValue || ''); + // Update the state when defaultValue changes useEffect(() => { setSelectedValue(defaultValue || ''); }, [defaultValue]); - const handleChange = (value: string) => { - if (mode === "single") { - setSelectedValue(value); - Streamlit.setComponentValue(value); - } else { - setSelectedValue((prevSelected) => { - const updatedSelected = (prevSelected as string[]).includes(value) - ? (prevSelected as string[]).filter((v) => v !== value) - : [...(prevSelected as string[]), value]; - Streamlit.setComponentValue(updatedSelected); - return updatedSelected; - }); - } + // Handle radio value change + const handleRadioChange = (value: string) => { + setSelectedValue(value); + Streamlit.setComponentValue(value); }; return ( -
- { - mode === "single" && - - {options.map(option => ( -
- - -
- ))} -
- } - { - mode === 'multiple' && -
- {options.map((option) => ( -
- handleChange(option.value)} - /> - -
- ))} + + {options.map(option => ( +
+ +
- } - -
- + ))} + ); } -); +); \ No newline at end of file diff --git a/streamlit_shadcn_ui/py_components/checkbox.py b/streamlit_shadcn_ui/py_components/checkbox.py index 358aa24..77182c4 100644 --- a/streamlit_shadcn_ui/py_components/checkbox.py +++ b/streamlit_shadcn_ui/py_components/checkbox.py @@ -2,7 +2,11 @@ _component_func = declare_component("checkbox") -def checkbox(default_checked=False, label=None, key=None): - props = {"defaultChecked": default_checked, "label": label} - component_value = _component_func(comp="checkbox", props=props, key=key, default=default_checked) +def checkbox(mode = None, options=None,key=None): + + props = { + "options": options, + "mode": mode + } + component_value = _component_func(comp="checkbox", props=props, key=key) return component_value diff --git a/streamlit_shadcn_ui/py_components/radio_group.py b/streamlit_shadcn_ui/py_components/radio_group.py index 2606c94..7827603 100644 --- a/streamlit_shadcn_ui/py_components/radio_group.py +++ b/streamlit_shadcn_ui/py_components/radio_group.py @@ -2,11 +2,10 @@ _component_func = declare_component("radio_group") -def radio_group(options, mode = None, default_value=None, key=None): +def radio_group(options, default_value=None, key=None): props = { "defaultValue": default_value, - "options": options, - "mode": mode + "options": options } component_value = _component_func(comp="radio_group", props=props, key=key, default=default_value) - return component_value + return component_value \ No newline at end of file diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 0405fb6..0000000 --- a/yarn.lock +++ /dev/null @@ -1,363 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@radix-ui/number@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.1.0.tgz#1e95610461a09cdf8bb05c152e76ca1278d5da46" - integrity sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ== - -"@radix-ui/primitive@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.1.1.tgz#fc169732d755c7fbad33ba8d0cd7fd10c90dc8e3" - integrity sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA== - -"@radix-ui/react-accordion@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@radix-ui/react-accordion/-/react-accordion-1.2.2.tgz#96ac3de896189553219e342d5e773589eb119dce" - integrity sha512-b1oh54x4DMCdGsB4/7ahiSrViXxaBwRPotiZNnYXjLha9vfuURSAZErki6qjDoSIV0eXx5v57XnTGVtGwnfp2g== - dependencies: - "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-collapsible" "1.1.2" - "@radix-ui/react-collection" "1.1.1" - "@radix-ui/react-compose-refs" "1.1.1" - "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-direction" "1.1.0" - "@radix-ui/react-id" "1.1.0" - "@radix-ui/react-primitive" "2.0.1" - "@radix-ui/react-use-controllable-state" "1.1.0" - -"@radix-ui/react-aspect-ratio@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.1.tgz#95d7692e61bab5eb7fec91f241ea993899593313" - integrity sha512-kNU4FIpcFMBLkOUcgeIteH06/8JLBcYY6Le1iKenDGCYNYFX3TQqCZjzkOsz37h7r94/99GTb7YhEr98ZBJibw== - dependencies: - "@radix-ui/react-primitive" "2.0.1" - -"@radix-ui/react-collapsible@1.1.2", "@radix-ui/react-collapsible@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@radix-ui/react-collapsible/-/react-collapsible-1.1.2.tgz#42477c428bb0d2eec35b9b47601c5ff0a6210165" - integrity sha512-PliMB63vxz7vggcyq0IxNYk8vGDrLXVWw4+W4B8YnwI1s18x7YZYqlG9PLX7XxAJUi0g2DxP4XKJMFHh/iVh9A== - dependencies: - "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-compose-refs" "1.1.1" - "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-id" "1.1.0" - "@radix-ui/react-presence" "1.1.2" - "@radix-ui/react-primitive" "2.0.1" - "@radix-ui/react-use-controllable-state" "1.1.0" - "@radix-ui/react-use-layout-effect" "1.1.0" - -"@radix-ui/react-collection@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.1.1.tgz#be2c7e01d3508e6d4b6d838f492e7d182f17d3b0" - integrity sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA== - dependencies: - "@radix-ui/react-compose-refs" "1.1.1" - "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-primitive" "2.0.1" - "@radix-ui/react-slot" "1.1.1" - -"@radix-ui/react-compose-refs@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz#6f766faa975f8738269ebb8a23bad4f5a8d2faec" - integrity sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw== - -"@radix-ui/react-context@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.1.tgz#82074aa83a472353bb22e86f11bcbd1c61c4c71a" - integrity sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q== - -"@radix-ui/react-dialog@^1.1.1", "@radix-ui/react-dialog@^1.1.2": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.1.5.tgz#1bb2880e6b0ef9d9d0d9f440e1414c94bbacb55b" - integrity sha512-LaO3e5h/NOEL4OfXjxD43k9Dx+vn+8n+PCFt6uhX/BADFflllyv3WJG6rgvvSVBxpTch938Qq/LGc2MMxipXPw== - dependencies: - "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-compose-refs" "1.1.1" - "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-dismissable-layer" "1.1.4" - "@radix-ui/react-focus-guards" "1.1.1" - "@radix-ui/react-focus-scope" "1.1.1" - "@radix-ui/react-id" "1.1.0" - "@radix-ui/react-portal" "1.1.3" - "@radix-ui/react-presence" "1.1.2" - "@radix-ui/react-primitive" "2.0.1" - "@radix-ui/react-slot" "1.1.1" - "@radix-ui/react-use-controllable-state" "1.1.0" - aria-hidden "^1.2.4" - react-remove-scroll "^2.6.2" - -"@radix-ui/react-direction@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.1.0.tgz#a7d39855f4d077adc2a1922f9c353c5977a09cdc" - integrity sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg== - -"@radix-ui/react-dismissable-layer@1.1.4": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.4.tgz#6e31ad92e7d9e77548001fd8c04f8561300c02a9" - integrity sha512-XDUI0IVYVSwjMXxM6P4Dfti7AH+Y4oS/TB+sglZ/EXc7cqLwGAmp1NlMrcUjj7ks6R5WTZuWKv44FBbLpwU3sA== - dependencies: - "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-compose-refs" "1.1.1" - "@radix-ui/react-primitive" "2.0.1" - "@radix-ui/react-use-callback-ref" "1.1.0" - "@radix-ui/react-use-escape-keydown" "1.1.0" - -"@radix-ui/react-focus-guards@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz#8635edd346304f8b42cae86b05912b61aef27afe" - integrity sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg== - -"@radix-ui/react-focus-scope@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.1.tgz#5c602115d1db1c4fcfa0fae4c3b09bb8919853cb" - integrity sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA== - dependencies: - "@radix-ui/react-compose-refs" "1.1.1" - "@radix-ui/react-primitive" "2.0.1" - "@radix-ui/react-use-callback-ref" "1.1.0" - -"@radix-ui/react-id@1.1.0", "@radix-ui/react-id@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.1.0.tgz#de47339656594ad722eb87f94a6b25f9cffae0ed" - integrity sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA== - dependencies: - "@radix-ui/react-use-layout-effect" "1.1.0" - -"@radix-ui/react-portal@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.3.tgz#b0ea5141103a1671b715481b13440763d2ac4440" - integrity sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw== - dependencies: - "@radix-ui/react-primitive" "2.0.1" - "@radix-ui/react-use-layout-effect" "1.1.0" - -"@radix-ui/react-presence@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.2.tgz#bb764ed8a9118b7ec4512da5ece306ded8703cdc" - integrity sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg== - dependencies: - "@radix-ui/react-compose-refs" "1.1.1" - "@radix-ui/react-use-layout-effect" "1.1.0" - -"@radix-ui/react-primitive@2.0.1", "@radix-ui/react-primitive@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-2.0.1.tgz#6d9efc550f7520135366f333d1e820cf225fad9e" - integrity sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg== - dependencies: - "@radix-ui/react-slot" "1.1.1" - -"@radix-ui/react-progress@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-progress/-/react-progress-1.1.1.tgz#af923714ba3723be9c510536749d6c530d8670e4" - integrity sha512-6diOawA84f/eMxFHcWut0aE1C2kyE9dOyCTQOMRR2C/qPiXz/X0SaiA/RLbapQaXUCmy0/hLMf9meSccD1N0pA== - dependencies: - "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-primitive" "2.0.1" - -"@radix-ui/react-scroll-area@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.2.tgz#28e34fd4d83e9de5d987c5e8914a7bd8be9546a5" - integrity sha512-EFI1N/S3YxZEW/lJ/H1jY3njlvTd8tBmgKEn4GHi51+aMm94i6NmAJstsm5cu3yJwYqYc93gpCPm21FeAbFk6g== - dependencies: - "@radix-ui/number" "1.1.0" - "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-compose-refs" "1.1.1" - "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-direction" "1.1.0" - "@radix-ui/react-presence" "1.1.2" - "@radix-ui/react-primitive" "2.0.1" - "@radix-ui/react-use-callback-ref" "1.1.0" - "@radix-ui/react-use-layout-effect" "1.1.0" - -"@radix-ui/react-separator@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-separator/-/react-separator-1.1.1.tgz#dd60621553c858238d876be9b0702287424866d2" - integrity sha512-RRiNRSrD8iUiXriq/Y5n4/3iE8HzqgLHsusUSg5jVpU2+3tqcUFPJXHDymwEypunc2sWxDUS3UC+rkZRlHedsw== - dependencies: - "@radix-ui/react-primitive" "2.0.1" - -"@radix-ui/react-slot@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.1.1.tgz#ab9a0ffae4027db7dc2af503c223c978706affc3" - integrity sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g== - dependencies: - "@radix-ui/react-compose-refs" "1.1.1" - -"@radix-ui/react-toast@^1.2.5": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@radix-ui/react-toast/-/react-toast-1.2.5.tgz#d296d98e9b1e86389c167d334f178b1d60ff61ee" - integrity sha512-ZzUsAaOx8NdXZZKcFNDhbSlbsCUy8qQWmzTdgrlrhhZAOx2ofLtKrBDW9fkqhFvXgmtv560Uj16pkLkqML7SHA== - dependencies: - "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-collection" "1.1.1" - "@radix-ui/react-compose-refs" "1.1.1" - "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-dismissable-layer" "1.1.4" - "@radix-ui/react-portal" "1.1.3" - "@radix-ui/react-presence" "1.1.2" - "@radix-ui/react-primitive" "2.0.1" - "@radix-ui/react-use-callback-ref" "1.1.0" - "@radix-ui/react-use-controllable-state" "1.1.0" - "@radix-ui/react-use-layout-effect" "1.1.0" - "@radix-ui/react-visually-hidden" "1.1.1" - -"@radix-ui/react-toggle@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-toggle/-/react-toggle-1.1.1.tgz#939162f87d2c6cfba912a9908ed5ee651bd1ce8f" - integrity sha512-i77tcgObYr743IonC1hrsnnPmszDRn8p+EGUsUt+5a/JFn28fxaM88Py6V2mc8J5kELMWishI0rLnuGLFD/nnQ== - dependencies: - "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-primitive" "2.0.1" - "@radix-ui/react-use-controllable-state" "1.1.0" - -"@radix-ui/react-use-callback-ref@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz#bce938ca413675bc937944b0d01ef6f4a6dc5bf1" - integrity sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw== - -"@radix-ui/react-use-controllable-state@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz#1321446857bb786917df54c0d4d084877aab04b0" - integrity sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw== - dependencies: - "@radix-ui/react-use-callback-ref" "1.1.0" - -"@radix-ui/react-use-escape-keydown@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz#31a5b87c3b726504b74e05dac1edce7437b98754" - integrity sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw== - dependencies: - "@radix-ui/react-use-callback-ref" "1.1.0" - -"@radix-ui/react-use-layout-effect@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz#3c2c8ce04827b26a39e442ff4888d9212268bd27" - integrity sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w== - -"@radix-ui/react-visually-hidden@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.1.tgz#f7b48c1af50dfdc366e92726aee6d591996c5752" - integrity sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg== - dependencies: - "@radix-ui/react-primitive" "2.0.1" - -aria-hidden@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.4.tgz#b78e383fdbc04d05762c78b4a25a501e736c4522" - integrity sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A== - dependencies: - tslib "^2.0.0" - -cmdk@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cmdk/-/cmdk-1.0.4.tgz#cbddef6f5ade2378f85c80a0b9ad9a8a712779b5" - integrity sha512-AnsjfHyHpQ/EFeAnG216WY7A5LiYCoZzCSygiLvfXC3H3LFGCprErteUcszaVluGOhuOTbJS3jWHrSDYPBBygg== - dependencies: - "@radix-ui/react-dialog" "^1.1.2" - "@radix-ui/react-id" "^1.1.0" - "@radix-ui/react-primitive" "^2.0.0" - use-sync-external-store "^1.2.2" - -detect-node-es@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" - integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== - -embla-carousel-react@^8.5.2: - version "8.5.2" - resolved "https://registry.yarnpkg.com/embla-carousel-react/-/embla-carousel-react-8.5.2.tgz#f79f6c36690596fe2aceec994372ab84bfbfd9cc" - integrity sha512-Tmx+uY3MqseIGdwp0ScyUuxpBgx5jX1f7od4Cm5mDwg/dptEiTKf9xp6tw0lZN2VA9JbnVMl/aikmbc53c6QFA== - dependencies: - embla-carousel "8.5.2" - embla-carousel-reactive-utils "8.5.2" - -embla-carousel-reactive-utils@8.5.2: - version "8.5.2" - resolved "https://registry.yarnpkg.com/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.5.2.tgz#914bf99c3d91e0809282fc1d14df3d1453f222c1" - integrity sha512-QC8/hYSK/pEmqEdU1IO5O+XNc/Ptmmq7uCB44vKplgLKhB/l0+yvYx0+Cv0sF6Ena8Srld5vUErZkT+yTahtDg== - -embla-carousel@8.5.2: - version "8.5.2" - resolved "https://registry.yarnpkg.com/embla-carousel/-/embla-carousel-8.5.2.tgz#95eb936d14a1b9a67b9207a0fde1f25259a5d692" - integrity sha512-xQ9oVLrun/eCG/7ru3R+I5bJ7shsD8fFwLEY7yPe27/+fDHCNj0OT5EoG5ZbFyOxOcG6yTwW8oTz/dWyFnyGpg== - -get-nonce@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" - integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== - -next-themes@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/next-themes/-/next-themes-0.4.4.tgz#ce6f68a4af543821bbc4755b59c0d3ced55c2d13" - integrity sha512-LDQ2qIOJF0VnuVrrMSMLrWGjRMkq+0mpgl6e0juCLqdJ+oo8Q84JRWT6Wh11VDQKkMMe+dVzDKLWs5n87T+PkQ== - -react-remove-scroll-bar@^2.3.7: - version "2.3.8" - resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz#99c20f908ee467b385b68a3469b4a3e750012223" - integrity sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q== - dependencies: - react-style-singleton "^2.2.2" - tslib "^2.0.0" - -react-remove-scroll@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.6.3.tgz#df02cde56d5f2731e058531f8ffd7f9adec91ac2" - integrity sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ== - dependencies: - react-remove-scroll-bar "^2.3.7" - react-style-singleton "^2.2.3" - tslib "^2.1.0" - use-callback-ref "^1.3.3" - use-sidecar "^1.1.3" - -react-resizable-panels@^2.1.7: - version "2.1.7" - resolved "https://registry.yarnpkg.com/react-resizable-panels/-/react-resizable-panels-2.1.7.tgz#afd29d8a3d708786a9f95183a38803c89f13c2e7" - integrity sha512-JtT6gI+nURzhMYQYsx8DKkx6bSoOGFp7A3CwMrOb8y5jFHFyqwo9m68UhmXRw57fRVJksFn1TSlm3ywEQ9vMgA== - -react-style-singleton@^2.2.2, react-style-singleton@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.3.tgz#4265608be69a4d70cfe3047f2c6c88b2c3ace388" - integrity sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ== - dependencies: - get-nonce "^1.0.0" - tslib "^2.0.0" - -sonner@^1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/sonner/-/sonner-1.7.2.tgz#d3e5e414be6aa888da5da5ec558444b43203441c" - integrity sha512-zMbseqjrOzQD1a93lxahm+qMGxWovdMxBlkTbbnZdNqVLt4j+amF9PQxUCL32WfztOFt9t9ADYkejAL3jF9iNA== - -tslib@^2.0.0, tslib@^2.1.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - -use-callback-ref@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.3.tgz#98d9fab067075841c5b2c6852090d5d0feabe2bf" - integrity sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg== - dependencies: - tslib "^2.0.0" - -use-sidecar@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.3.tgz#10e7fd897d130b896e2c546c63a5e8233d00efdb" - integrity sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ== - dependencies: - detect-node-es "^1.1.0" - tslib "^2.0.0" - -use-sync-external-store@^1.2.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz#adbc795d8eeb47029963016cefdf89dc799fcebc" - integrity sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw== - -vaul@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vaul/-/vaul-1.1.2.tgz#c959f8b9dc2ed4f7d99366caee433fbef91f5ba9" - integrity sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA== - dependencies: - "@radix-ui/react-dialog" "^1.1.1"