diff --git a/.changeset/breezy-owls-change.md b/.changeset/breezy-owls-change.md
new file mode 100644
index 00000000..3d3105b7
--- /dev/null
+++ b/.changeset/breezy-owls-change.md
@@ -0,0 +1,5 @@
+---
+"@devup-ui/react": patch
+---
+
+Add grid, Support for selector in css
diff --git a/libs/extractor/src/lib.rs b/libs/extractor/src/lib.rs
index cc163e23..17625413 100644
--- a/libs/extractor/src/lib.rs
+++ b/libs/extractor/src/lib.rs
@@ -812,6 +812,24 @@ mod tests {
;
+"#,
+ ExtractOption {
+ package: "@devup-ui/core".to_string(),
+ css_file: None
+ }
+ )
+ .unwrap());
+
+ reset_class_map();
+ assert_debug_snapshot!(extract(
+ "test.tsx",
+ r#"import { css } from "@devup-ui/core";
+;
"#,
ExtractOption {
package: "@devup-ui/core".to_string(),
diff --git a/libs/extractor/src/snapshots/extractor__tests__extract_static_css_class_name_props-5.snap b/libs/extractor/src/snapshots/extractor__tests__extract_static_css_class_name_props-5.snap
new file mode 100644
index 00000000..5b0cd8b0
--- /dev/null
+++ b/libs/extractor/src/snapshots/extractor__tests__extract_static_css_class_name_props-5.snap
@@ -0,0 +1,35 @@
+---
+source: libs/extractor/src/lib.rs
+expression: "extract(\"test.tsx\",\nr#\"import { css } from \"@devup-ui/core\";\n;\n\"#,\nExtractOption\n{ package: \"@devup-ui/core\".to_string(), css_file: None }).unwrap()"
+---
+ExtractOutput {
+ styles: [
+ Static(
+ ExtractStaticStyle {
+ property: "color",
+ value: "blue",
+ level: 0,
+ selector: Some(
+ Postfix(
+ "hover",
+ ),
+ ),
+ basic: false,
+ },
+ ),
+ Static(
+ ExtractStaticStyle {
+ property: "background",
+ value: "red",
+ level: 0,
+ selector: Some(
+ Postfix(
+ "hover",
+ ),
+ ),
+ basic: false,
+ },
+ ),
+ ],
+ code: "import \"@devup-ui/core/devup-ui.css\";\nimport { css } from \"@devup-ui/core\";\n;\n",
+}
diff --git a/packages/react/src/__tests__/index.test.ts b/packages/react/src/__tests__/index.test.ts
index 242ac4db..9e29b154 100644
--- a/packages/react/src/__tests__/index.test.ts
+++ b/packages/react/src/__tests__/index.test.ts
@@ -10,6 +10,7 @@ describe('export', () => {
Text: expect.any(Function),
VStack: expect.any(Function),
Image: expect.any(Function),
+ Grid: expect.any(Function),
css: expect.any(Function),
})
diff --git a/packages/react/src/components/Grid.tsx b/packages/react/src/components/Grid.tsx
new file mode 100644
index 00000000..1bdb021e
--- /dev/null
+++ b/packages/react/src/components/Grid.tsx
@@ -0,0 +1,9 @@
+import type { DevupProps } from '../types/props'
+import type { Merge } from '../types/utils'
+
+export function Grid(
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ props: Merge, DevupProps>,
+): React.ReactElement {
+ throw new Error('Cannot run on the runtime')
+}
diff --git a/packages/react/src/components/__tests__/index.test.ts b/packages/react/src/components/__tests__/index.test.ts
index 5df15e6c..9c0e1d66 100644
--- a/packages/react/src/components/__tests__/index.test.ts
+++ b/packages/react/src/components/__tests__/index.test.ts
@@ -2,6 +2,7 @@ import { Box } from '../Box'
import { Button } from '../Button'
import { Center } from '../Center'
import { Flex } from '../Flex'
+import { Grid } from '../Grid'
import { Image } from '../Image'
import { Input } from '../Input'
import { Text } from '../Text'
@@ -17,5 +18,6 @@ describe('Component', () => {
expect(() => Text({})).toThrowError('Cannot run on the runtime')
expect(() => VStack({})).toThrowError('Cannot run on the runtime')
expect(() => Image({})).toThrowError('Cannot run on the runtime')
+ expect(() => Grid({})).toThrowError('Cannot run on the runtime')
})
})
diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts
index 1eb16b07..e0c99c4a 100644
--- a/packages/react/src/index.ts
+++ b/packages/react/src/index.ts
@@ -2,6 +2,7 @@ export { Box } from './components/Box'
export { Button } from './components/Button'
export { Center } from './components/Center'
export { Flex } from './components/Flex'
+export { Grid } from './components/Grid'
export { Image } from './components/Image'
export { Input } from './components/Input'
export { Text } from './components/Text'
diff --git a/packages/react/src/utils/css.ts b/packages/react/src/utils/css.ts
index 734c76de..3a8a876c 100644
--- a/packages/react/src/utils/css.ts
+++ b/packages/react/src/utils/css.ts
@@ -1,9 +1,12 @@
import { DevupCommonProps } from '../types/props'
+import type { DevupSelectorProps } from '../types/props/selector'
export function css(props: DevupCommonProps): string
export function css(strings: TemplateStringsArray): string
-export function css(strings: TemplateStringsArray | DevupCommonProps): string {
+export function css(
+ strings: TemplateStringsArray | (DevupCommonProps & DevupSelectorProps),
+): string {
if (Array.isArray(strings)) {
return strings.join('')
}