diff --git a/.changeset/dull-doors-nail.md b/.changeset/dull-doors-nail.md
new file mode 100644
index 00000000..277e7e5d
--- /dev/null
+++ b/.changeset/dull-doors-nail.md
@@ -0,0 +1,5 @@
+---
+"@devup-ui/wasm": patch
+---
+
+Support static member expression
diff --git a/libs/extractor/src/lib.rs b/libs/extractor/src/lib.rs
index 8e545ed8..17e004f1 100644
--- a/libs/extractor/src/lib.rs
+++ b/libs/extractor/src/lib.rs
@@ -505,6 +505,32 @@ mod tests {
"test.tsx",
r#"import { Box } from "@devup-ui/core";
;
+"#,
+ ExtractOption {
+ package: "@devup-ui/core".to_string(),
+ css_file: None
+ }
+ )
+ .unwrap());
+
+ reset_class_map();
+ assert_debug_snapshot!(extract(
+ "test.tsx",
+ r#"import { Box } from "@devup-ui/core";
+;
+"#,
+ ExtractOption {
+ package: "@devup-ui/core".to_string(),
+ css_file: None
+ }
+ )
+ .unwrap());
+
+ reset_class_map();
+ assert_debug_snapshot!(extract(
+ "test.tsx",
+ r#"import { Box } from "@devup-ui/core";
+;
"#,
ExtractOption {
package: "@devup-ui/core".to_string(),
diff --git a/libs/extractor/src/snapshots/extractor__tests__extract_dynamic_style_props-3.snap b/libs/extractor/src/snapshots/extractor__tests__extract_dynamic_style_props-3.snap
new file mode 100644
index 00000000..87fe2938
--- /dev/null
+++ b/libs/extractor/src/snapshots/extractor__tests__extract_dynamic_style_props-3.snap
@@ -0,0 +1,18 @@
+---
+source: libs/extractor/src/lib.rs
+expression: "extract(\"test.tsx\",\nr#\"import { Box } from \"@devup-ui/core\";\n;\n\"#,\nExtractOption\n{ package: \"@devup-ui/core\".to_string(), css_file: None }).unwrap()"
+---
+ExtractOutput {
+ styles: [
+ Dynamic(
+ ExtractDynamicStyle {
+ property: "background",
+ level: 0,
+ identifier: "data.buttonBgColor",
+ selector: None,
+ style_order: None,
+ },
+ ),
+ ],
+ code: "import \"@devup-ui/core/devup-ui.css\";\n
;\n",
+}
diff --git a/libs/extractor/src/snapshots/extractor__tests__extract_dynamic_style_props-4.snap b/libs/extractor/src/snapshots/extractor__tests__extract_dynamic_style_props-4.snap
new file mode 100644
index 00000000..0ffbbbfb
--- /dev/null
+++ b/libs/extractor/src/snapshots/extractor__tests__extract_dynamic_style_props-4.snap
@@ -0,0 +1,18 @@
+---
+source: libs/extractor/src/lib.rs
+expression: "extract(\"test.tsx\",\nr#\"import { Box } from \"@devup-ui/core\";\n;\n\"#,\nExtractOption\n{ package: \"@devup-ui/core\".to_string(), css_file: None }).unwrap()"
+---
+ExtractOutput {
+ styles: [
+ Dynamic(
+ ExtractDynamicStyle {
+ property: "background",
+ level: 0,
+ identifier: "data.a.b.buttonBgColor",
+ selector: None,
+ style_order: None,
+ },
+ ),
+ ],
+ code: "import \"@devup-ui/core/devup-ui.css\";\n;\n",
+}
diff --git a/libs/extractor/src/style_extractor.rs b/libs/extractor/src/style_extractor.rs
index 454255e6..b7dea643 100644
--- a/libs/extractor/src/style_extractor.rs
+++ b/libs/extractor/src/style_extractor.rs
@@ -329,6 +329,7 @@ pub fn extract_style_from_expression<'a>(
match expression {
Expression::UnaryExpression(_)
| Expression::BinaryExpression(_)
+ | Expression::StaticMemberExpression(_)
| Expression::CallExpression(_) => ExtractResult::Extract {
styles: Some(vec![ExtractStyleProp::Static(Dynamic(
ExtractDynamicStyle::new(