Conversation
…rations css(a, b) composing classes whose styles the build knows, bound to css() in the file or exported by another module, merges their atoms per property, selector, breakpoint and layer, conditions included, instead of joining classes whose winner the stylesheet order picked. vanilla-extract style([...]) passes each composed style as its own argument, keeping a style composed again later. Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…asurable Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…JSX spreads win Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…led order and JSX element className Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…uate shouldForwardProp at build time Refs #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…ring Refs #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #691 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
… and conditional styles Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…h Emotion Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…ed parameters Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Contributor
Changepacks@devup-ui/wasm@1.0.82 → 1.0.83 - bindings/devup-ui-wasm/package.jsonPatch
@devup-ui/bun-plugin@1.0.21 → 1.0.22 - packages/bun-plugin/package.jsonPatch
@devup-ui/components@0.1.59 → 0.1.60 - packages/components/package.jsonPatch
@devup-ui/eslint-plugin@1.0.21 → 1.0.22 - packages/eslint-plugin/package.jsonPatch
@devup-ui/next-plugin@1.0.89 → 1.0.90 - packages/next-plugin/package.jsonPatch
@devup-ui/plugin-utils@1.0.16 → 1.0.17 - packages/plugin-utils/package.jsonPatch
@devup-ui/react@1.0.44 → 1.0.45 - packages/react/package.jsonPatch
@devup-ui/reset-css@1.0.31 → 1.0.32 - packages/reset-css/package.jsonPatch
@devup-ui/rsbuild-plugin@1.0.66 → 1.0.67 - packages/rsbuild-plugin/package.jsonPatch
@devup-ui/vite-plugin@1.0.72 → 1.0.73 - packages/vite-plugin/package.jsonPatch
@devup-ui/webpack-plugin@1.0.70 → 1.0.71 - packages/webpack-plugin/package.jsonPatch
|
Codecov Report✅ All modified and coverable lines are covered by tests.
🚀 New features to boost your workflow:
|
This was referenced Oct 3, 2026
Open
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #690 (EMO-05 나머지:
ClassNames). #728 위에 쌓은 브랜치입니다. #727, #728이 먼저 병합되어야 합니다.요약
Emotion의
<ClassNames>를 런타임 없이 빌드 때 컴파일합니다. 요소는 자식 함수가 렌더링하는 것으로 바뀌고, 그 안의css/cx호출은 각각 합성되는 클래스 문자열이 됩니다.동작
css(...): Emotion과 같이 문자열은 CSS 텍스트로 읽습니다. 태그드 템플릿css`${mixin}; color: red;`는 mixin 앞뒤로 나뉘어 합성됩니다. 숫자는 Emotion처럼px가 되고(단위 없는 속성 제외), 최상위 상수는 인라인됩니다.cx(...): 문자열과 식별자는 그대로 남는 클래스입니다.{ name: condition }객체는 조건부 클래스가 되고, 안에 있는css(...)/cx(...)호출은 풀어서 합성합니다.&&/||/??도 합성됩니다.theme.a.b/theme.a[2]는ThemeProvider가 설정하는var(--a-b)가 됩니다.@devup-ui/react/compat가ClassNames(빌드 전용, 런타임에 호출하면 throw)와ClassNamesContent,ClassNamesArg타입을 내보냅니다.@emotion/react선언에도 포함되어, Emotion을 설치하지 않아도 타입 검사가 통과합니다.새로 생기는 오류
모두
파일:줄:열, 문제가 된 코드, 이유, 고칠 방법과 함께 빌드 오류로 보고됩니다.<ClassNames>에{ css, cx, theme }를 받아 렌더링할 것을 바로 돌려주는 자식 함수가 정확히 하나 있지 않은 경우: 속성, 다른 자식, rest/기본값/계산된 키/중첩 구조분해 매개변수, async/generator 함수, 여러 문장으로 된 본문theme을css값 안의theme.a.b가 아닌 방식으로 읽는 경우 (예:theme.space(2), 조건식에서 읽기, JSX에서 읽기)css/cx를 호출하지 않고 쓰는 경우 (예:ref={css})cx객체에 spread, getter, 메서드가 있는 경우css/cx가 합성할 수 없는 부분이 있는 경우: 런타임 호출(cx(getClass())), 인자 spread(css(...s)), 조건 하나가 스타일과 클래스를 함께 고르는 경우css()와 같은 오류)남는 한계
cx인자에서 런타임 호출 결과는 변수에 담아 넘겨야 합니다. 변수는 클래스로 그대로 남습니다.css결과는 지금처럼 런타임 클래스로 붙습니다. 모듈 해석을 통한 합성은 A 이슈에서 따로 처리합니다.검증
cargo fmt,cargo +1.99 clippy --workspace --all-targets -- -D warnings,cargo test --workspace통과bun run build,bun test5487 통과, 커버리지 100%bun lint: 기존 경고 2개 외 없음survey/emotion/react-classnames.tsx프로브: 런타임 import 없이"external a",.a{color:var(--color)}@emotion/react의ClassNames타입 검사 통과