Skip to content

Commit ff9afbc

Browse files
committed
fix(style-context): root provider types
1 parent 7fcd100 commit ff9afbc

File tree

6 files changed

+33
-8
lines changed

6 files changed

+33
-8
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@pandacss/generator": patch
3+
---
4+
5+
Fix type issue where `withRootProvider` from style context incorrectly allowed JSX style props to be passed through to the root component. The root provider now correctly accepts only component props, unstyled prop, and recipe variant props, excluding JSX style props.

packages/generator/src/artifacts/preact-jsx/create-style-context.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,11 @@ export function generatePreactCreateStyleContext(ctx: Context) {
140140
type StyleContextProvider<T extends ElementType, R extends SlotRecipe> = ComponentType<
141141
JsxHTMLProps<ComponentProps<T> & UnstyledProps, Assign<RecipeVariantProps<R>, JsxStyleProps>>
142142
>
143-
143+
144+
type StyleContextRootProvider<T extends ElementType, R extends SlotRecipe> = ComponentType<
145+
ComponentProps<T> & UnstyledProps & RecipeVariantProps<R>
146+
>
147+
144148
type StyleContextConsumer<T extends ElementType> = ComponentType<
145149
JsxHTMLProps<ComponentProps<T> & UnstyledProps, JsxStyleProps>
146150
>
@@ -149,7 +153,7 @@ export function generatePreactCreateStyleContext(ctx: Context) {
149153
withRootProvider: <T extends ElementType>(
150154
Component: T,
151155
options?: WithProviderOptions<ComponentProps<T>> | undefined
152-
) => StyleContextProvider<T, R>
156+
) => StyleContextRootProvider<T, R>
153157
withProvider: <T extends ElementType>(
154158
Component: T,
155159
slot: InferSlot<R>,

packages/generator/src/artifacts/react-jsx/create-style-context.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,10 @@ export function generateReactCreateStyleContext(ctx: Context) {
141141
type StyleContextProvider<T extends ElementType, R extends SlotRecipe> = ComponentType<
142142
JsxHTMLProps<ComponentProps<T> & UnstyledProps, Assign<RecipeVariantProps<R>, JsxStyleProps>>
143143
>
144+
145+
type StyleContextRootProvider<T extends ElementType, R extends SlotRecipe> = ComponentType<
146+
ComponentProps<T> & UnstyledProps & RecipeVariantProps<R>
147+
>
144148
145149
type StyleContextConsumer<T extends ElementType> = ComponentType<
146150
JsxHTMLProps<ComponentProps<T> & UnstyledProps, JsxStyleProps>
@@ -150,7 +154,7 @@ export function generateReactCreateStyleContext(ctx: Context) {
150154
withRootProvider: <T extends ElementType>(
151155
Component: T,
152156
options?: WithProviderOptions<ComponentProps<T>> | undefined
153-
) => StyleContextProvider<T, R>
157+
) => StyleContextRootProvider<T, R>
154158
withProvider: <T extends ElementType>(
155159
Component: T,
156160
slot: InferSlot<R>,

packages/generator/src/artifacts/solid-jsx/create-style-context.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,11 @@ export function generateSolidCreateStyleContext(ctx: Context) {
162162
type StyleContextProvider<T extends ElementType, R extends SlotRecipe> = Component<
163163
JsxHTMLProps<ComponentProps<T> & UnstyledProps, Assign<RecipeVariantProps<R>, JsxStyleProps>>
164164
>
165-
165+
166+
type StyleContextRootProvider<T extends ElementType, R extends SlotRecipe> = Component<
167+
ComponentProps<T> & UnstyledProps & RecipeVariantProps<R>
168+
>
169+
166170
type StyleContextConsumer<T extends ElementType> = Component<
167171
JsxHTMLProps<ComponentProps<T> & UnstyledProps, JsxStyleProps>
168172
>
@@ -171,7 +175,7 @@ export function generateSolidCreateStyleContext(ctx: Context) {
171175
withRootProvider: <T extends ElementType>(
172176
Component: T,
173177
options?: WithProviderOptions<ComponentProps<T>> | undefined
174-
) => StyleContextProvider<T, R>
178+
) => StyleContextRootProvider<T, R>
175179
withProvider: <T extends ElementType>(
176180
Component: T,
177181
slot: InferSlot<R>,

packages/generator/src/artifacts/vue-jsx/create-style-context.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,11 @@ export function generateVueCreateStyleContext(ctx: Context) {
177177
type StyleContextProvider<T extends ElementType, R extends SlotRecipe> = FunctionalComponent<
178178
JsxHTMLProps<ComponentProps<T> & UnstyledProps & VModelProps, Assign<RecipeVariantProps<R>, JsxStyleProps>>
179179
>
180-
180+
181+
type StyleContextRootProvider<T extends ElementType, R extends SlotRecipe> = FunctionalComponent<
182+
ComponentProps<T> & UnstyledProps & VModelProps & RecipeVariantProps<R>
183+
>
184+
181185
type StyleContextConsumer<T extends ElementType> = FunctionalComponent<
182186
JsxHTMLProps<ComponentProps<T> & UnstyledProps & VModelProps, JsxStyleProps>
183187
>
@@ -186,7 +190,7 @@ export function generateVueCreateStyleContext(ctx: Context) {
186190
withRootProvider: <T extends ElementType>(
187191
Component: T,
188192
options?: WithProviderOptions<ComponentProps<T>> | undefined
189-
) => StyleContextProvider<T, R>
193+
) => StyleContextRootProvider<T, R>
190194
withProvider: <T extends ElementType>(
191195
Component: T,
192196
slot: InferSlot<R>,

packages/studio/styled-system/jsx/create-style-context.d.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ type StyleContextProvider<T extends ElementType, R extends SlotRecipe> = Compone
3030
JsxHTMLProps<ComponentProps<T> & UnstyledProps, Assign<RecipeVariantProps<R>, JsxStyleProps>>
3131
>
3232

33+
type StyleContextRootProvider<T extends ElementType, R extends SlotRecipe> = ComponentType<
34+
ComponentProps<T> & UnstyledProps & RecipeVariantProps<R>
35+
>
36+
3337
type StyleContextConsumer<T extends ElementType> = ComponentType<
3438
JsxHTMLProps<ComponentProps<T> & UnstyledProps, JsxStyleProps>
3539
>
@@ -38,7 +42,7 @@ export interface StyleContext<R extends SlotRecipe> {
3842
withRootProvider: <T extends ElementType>(
3943
Component: T,
4044
options?: WithProviderOptions<ComponentProps<T>> | undefined
41-
) => StyleContextProvider<T, R>
45+
) => StyleContextRootProvider<T, R>
4246
withProvider: <T extends ElementType>(
4347
Component: T,
4448
slot: InferSlot<R>,

0 commit comments

Comments
 (0)