Skip to content

Commit 954e2a3

Browse files
authored
Merge pull request #27 from vue-styled-components/alpha
fix(core): not export `styled` and duplicated class adding
2 parents 201815e + ee3a320 commit 954e2a3

File tree

5 files changed

+36
-10
lines changed

5 files changed

+36
-10
lines changed

packages/core/index.ts

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1+
import styled from './src/styled'
2+
13
export * from './src/providers/theme'
24
export * from './src/helper'
35
// export * from './hooks'
46

57
export * from './src/styled'
8+
9+
export default styled

packages/core/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
},
1616
"types": "./dist/index.d.ts",
1717
"repository": {
18-
"url": "https://github.com/vue-styled-components/core.git"
18+
"url": "git+https://github.com/vue-styled-components/core.git"
1919
},
2020
"author": {
2121
"name": "akinoccc",

packages/core/src/styled.ts

+24-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {
2-
ComponentObjectPropsOptions,
3-
ExtractPropTypes,
2+
type ComponentObjectPropsOptions,
3+
type ExtractPropTypes,
4+
type DefineSetupFnComponent,
45
defineComponent,
56
h,
67
inject,
@@ -13,15 +14,30 @@ import {
1314
import domElements, { type SupportedHTMLElements } from '@/src/constants/domElements'
1415
import { type ExpressionType, generateClassName, generateComponentName, insertExpressions, injectStyle, removeStyle } from '@/src/utils'
1516
import { isStyledComponent, isValidElementType, isVueComponent } from '@/src/helper'
16-
import { DefaultTheme } from './providers/theme'
17+
import type { DefaultTheme } from './providers/theme'
1718

1819
type Attrs = Record<string, any>
1920

20-
type BaseContext<T> = T & { theme: DefaultTheme }
21-
type PropsDefinition<T> = {
21+
export type BaseContext<T> = T & { theme: DefaultTheme }
22+
23+
export type PropsDefinition<T> = {
2224
[K in keyof T]: T[K]
2325
}
24-
function baseStyled<T extends object>(target: string | InstanceType<any>, propsDefinition?: PropsDefinition<T>) {
26+
27+
// 定义 styledComponent 类型
28+
interface StyledComponent<T extends object> {
29+
<P>(
30+
styles: TemplateStringsArray,
31+
...expressions: (
32+
| ExpressionType<BaseContext<P & ExtractPropTypes<PropsDefinition<T>>>>
33+
| ExpressionType<BaseContext<P & ExtractPropTypes<PropsDefinition<T>>>>[]
34+
)[]
35+
): DefineSetupFnComponent<{ as?: string; props?: P } & ExtractPropTypes<PropsDefinition<T>>>
36+
37+
attrs<A extends Attrs = Record<string, any>>(attrs: A): StyledComponent<T>
38+
}
39+
40+
function baseStyled<T extends object>(target: string | InstanceType<any>, propsDefinition?: PropsDefinition<T>): StyledComponent<T> {
2541
if (!isValidElementType(target)) {
2642
throw Error('The element is invalid.')
2743
}
@@ -71,7 +87,7 @@ function baseStyled<T extends object>(target: string | InstanceType<any>, propsD
7187
watch(
7288
tailwindClasses,
7389
(classNames) => {
74-
myAttrs.value.class += ` ${defaultClassName} ${classNames.join(' ')}`
90+
myAttrs.value.class += ` ${classNames.join(' ')}`
7591
},
7692
{ deep: true },
7793
)
@@ -141,4 +157,4 @@ domElements.forEach((domElement: SupportedHTMLElements) => {
141157
styled[domElement] = baseStyled(domElement)
142158
})
143159

144-
export { styled }
160+
export { styled, styled as default }

packages/core/vite.config.ts

+6
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@ export default defineConfig({
1313
formats: ['es', 'umd'],
1414
},
1515
rollupOptions: {
16+
output: {
17+
exports: 'named',
18+
globals: {
19+
vue: 'Vue',
20+
},
21+
},
1622
external: ['vue'],
1723
},
1824
},

packages/playground/src/App.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import { styled } from '@/index'
2+
import { styled } from '@vue-styled-components/core'
33

44
const TestProps = styled.div<{
55
color: string

0 commit comments

Comments
 (0)