Skip to content

Commit

Permalink
feat: add style-dictionary-plugins
Browse files Browse the repository at this point in the history
  • Loading branch information
mimokmt committed Dec 11, 2024
1 parent 6838732 commit 7eac12c
Show file tree
Hide file tree
Showing 8 changed files with 57 additions and 16 deletions.
8 changes: 6 additions & 2 deletions packages/style-dictionary-plugins/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,18 @@
"type": "module",
"private": true,
"scripts": {
"build": "FORCE_COLOR=1 tsup-node",
"build": "run-p --print-label 'build:*'",
"build:bundle": "FORCE_COLOR=1 tsup-node",
"build:dts": "tsc --project tsconfig.build.json --pretty --emitDeclarationOnly",
"typecheck": "tsc --project tsconfig.build.json --pretty --noEmit"
},
"devDependencies": {
"npm-run-all": "^4.1.5",
"style-dictionary": "^4.2.0",
"tsup": "^8.3.5",
"typescript": "^5.7.2"
},
"dependencies": {
"peerDependencies": {
"style-dictionary": "^4.2.0"
},
"main": "./dist/index.js",
Expand Down
37 changes: 29 additions & 8 deletions packages/style-dictionary-plugins/src/format/index.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,40 @@
import { Formatter, formatHelpers } from 'style-dictionary/types'
import { fileHeader, formattedVariables } from 'style-dictionary/utils'
import type {
FormatFnArguments,
Config,
LocalOptions,
} from 'style-dictionary/types'
import StyleDictionary from 'style-dictionary'

export const variables: Formatter = ({ dictionary, options = {}, file }) => {
const selector =
typeof options.selector == 'string' && options.selector
? options.selector
: `:root`
/** style-dictionaryのtypesがany多用しててつらい */
export const charcoalVariables = ({
dictionary,
options = {},
file,
}: Omit<FormatFnArguments, 'options'> & {
options: Config &
LocalOptions & {
selector?: string
}
}) => {
const selector = options.selector ?? `:root`
const { outputReferences } = options
return (
formatHelpers.fileHeader({ file }) +
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands, @typescript-eslint/no-base-to-string
fileHeader({ file }) +
`${selector} {\n` +
formatHelpers.formattedVariables({
formattedVariables({
format: 'css',
dictionary,
outputReferences,
}) +
`\n}\n`
)
}

export const registerCharcoalFormats = () => {
StyleDictionary.registerFormat({
name: 'css/charcoal-variables',
format: charcoalVariables,
})
}
4 changes: 2 additions & 2 deletions packages/style-dictionary-plugins/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as formats from './format'
import * as transforms from './transform'
import * as formats from './format/index.js'
import * as transforms from './transform/index.js'

export { formats, transforms }
9 changes: 9 additions & 0 deletions packages/style-dictionary-plugins/src/transform/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import StyleDictionary from 'style-dictionary'
import type { TransformedToken } from 'style-dictionary/types'
export const nameTransformer = (token: TransformedToken): string => {
const name = token.path
Expand All @@ -10,3 +11,11 @@ export const nameTransformer = (token: TransformedToken): string => {
.replace(/(--)(\D)/g, '-$2')
return `charcoal-${name}`
}

export const registerCharcoalTransforms = () => {
StyleDictionary.registerTransform({
name: 'charcoal/kebab',
type: 'name',
transform: nameTransformer,
})
}
5 changes: 3 additions & 2 deletions packages/style-dictionary-plugins/tsconfig.build.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
{
"extends": "../../tsconfig.build.json",
"compilerOptions": {
"types": ["node", "style-dictionary/types"],
"incremental": true,
"outDir": "./dist",
"tsBuildInfoFile": "./.tsbuildinfo"
"tsBuildInfoFile": "./.tsbuildinfo",
"module": "NodeNext",
"moduleResolution": "NodeNext"
},
"include": ["./src"]
}
5 changes: 4 additions & 1 deletion packages/style-dictionary-plugins/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"extends": "../../tsconfig.base.json",
"include": ["./src"]
"include": ["./src"],
"compilerOptions": {
"moduleResolution": "nodenext"
}
}
2 changes: 1 addition & 1 deletion packages/style-dictionary-plugins/tsup.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { defineConfig } from 'tsup'

export default defineConfig({
entry: ['src/index.ts'],
target: 'node16',
target: 'esnext',
sourcemap: true,
format: ['cjs', 'esm'],
})
3 changes: 3 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2192,9 +2192,12 @@ __metadata:
version: 0.0.0-use.local
resolution: "@charcoal-ui/style-dictionary-plugins@workspace:packages/style-dictionary-plugins"
dependencies:
npm-run-all: ^4.1.5
style-dictionary: ^4.2.0
tsup: ^8.3.5
typescript: ^5.7.2
peerDependencies:
style-dictionary: ^4.2.0
languageName: unknown
linkType: soft

Expand Down

0 comments on commit 7eac12c

Please sign in to comment.