@charcoal-ui/tailwind-config 5.4.4 → 5.5.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +18 -7
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
- package/src/__snapshots__/tokenV2.test.ts.snap +206 -178
- package/src/index.ts +5 -3
- package/src/tokenV2.ts +6 -3
- package/src/util.ts +26 -1
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":["config: Omit<Config, 'content'>"],"sources":["../../foundation/src/typography.ts","../../foundation/src/spacing.ts","../../foundation/src/border-radius.ts","../../foundation/src/color.ts","../../foundation/src/effect.ts","../../theme/src/abstract-theme.ts","../../theme/src/theme.ts","../src/types.ts","../src/tokenV2.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":["config: Omit<Config, 'content'>"],"sources":["../../foundation/src/typography.ts","../../foundation/src/spacing.ts","../../foundation/src/border-radius.ts","../../foundation/src/color.ts","../../foundation/src/effect.ts","../../theme/src/abstract-theme.ts","../../theme/src/theme.ts","../src/types.ts","../src/tokenV2.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":["config: Omit<Config, 'content'>"],"sources":["../../foundation/src/typography.ts","../../foundation/src/spacing.ts","../../foundation/src/border-radius.ts","../../foundation/src/color.ts","../../foundation/src/effect.ts","../../theme/src/abstract-theme.ts","../../theme/src/theme.ts","../src/types.ts","../src/tokenV2.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["config: Omit<Config, 'content'>"],"sources":["../../foundation/src/typography.ts","../../foundation/src/spacing.ts","../../foundation/src/border-radius.ts","../../foundation/src/color.ts","../../foundation/src/effect.ts","../../theme/src/abstract-theme.ts","../../theme/src/theme.ts","../src/types.ts","../src/tokenV2.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -112,6 +112,17 @@ const flattenKey = (o, join) => {
|
|
|
112
112
|
});
|
|
113
113
|
}));
|
|
114
114
|
};
|
|
115
|
+
/**
|
|
116
|
+
* `DEFAULT` はkey名に結合しない
|
|
117
|
+
*/
|
|
118
|
+
const flattenKeyWithoutDefault = (o, join) => {
|
|
119
|
+
return Object.fromEntries(Object.entries(o).flatMap(([key, v]) => {
|
|
120
|
+
if (typeof v === "string") return [[key, v]];
|
|
121
|
+
return Object.entries(v).map(([kk, vv]) => {
|
|
122
|
+
return [kk === "DEFAULT" || kk === "default" ? key : join?.(key) ?? true ? [key, kk].join("-") : kk, vv];
|
|
123
|
+
});
|
|
124
|
+
}));
|
|
125
|
+
};
|
|
115
126
|
|
|
116
127
|
//#endregion
|
|
117
128
|
//#region src/colors/utils.ts
|
|
@@ -314,12 +325,12 @@ function unstable_createTailwindConfigTokenV2() {
|
|
|
314
325
|
return {
|
|
315
326
|
darkMode: "media",
|
|
316
327
|
theme: {
|
|
317
|
-
borderWidth: flattenKey(__charcoal_ui_theme_unstable_tokens_css_variables_json.default["border-width"]),
|
|
328
|
+
borderWidth: flattenKeyWithoutDefault({ "width-ch": flattenKey(__charcoal_ui_theme_unstable_tokens_css_variables_json.default["border-width"]) }),
|
|
318
329
|
borderRadius: __charcoal_ui_theme_unstable_tokens_css_variables_json.default.radius,
|
|
319
|
-
borderColor: flattenKey(colors.border),
|
|
330
|
+
borderColor: flattenKeyWithoutDefault({ ch: flattenKey(colors.border) }),
|
|
320
331
|
colors,
|
|
321
332
|
fontSize,
|
|
322
|
-
fontWeight: __charcoal_ui_theme_unstable_tokens_css_variables_json.default.text["font-weight"],
|
|
333
|
+
fontWeight: flattenKey({ ch: __charcoal_ui_theme_unstable_tokens_css_variables_json.default.text["font-weight"] }),
|
|
323
334
|
spacing,
|
|
324
335
|
gap: spacing,
|
|
325
336
|
width: __charcoal_ui_theme_unstable_tokens_css_variables_json.default["paragraph-width"]
|
|
@@ -427,11 +438,11 @@ function createTailwindConfig({ theme = { ":root": __charcoal_ui_theme.light },
|
|
|
427
438
|
...borderRadiusV2
|
|
428
439
|
},
|
|
429
440
|
transitionDuration: { [DEFAULT]: "0.2s" },
|
|
430
|
-
...unstableTokenV2 ? {
|
|
441
|
+
...unstableTokenV2 ? { extend: {
|
|
431
442
|
borderWidth: borderWidthV2,
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
} : {}
|
|
443
|
+
fontWeight: fontWeightV2,
|
|
444
|
+
fontSize: fontSizeV2
|
|
445
|
+
} } : {}
|
|
435
446
|
},
|
|
436
447
|
...getVariantOption(version),
|
|
437
448
|
corePlugins: { lineHeight: false },
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["varName: keyof CSSVariables","cssVariableColorPlugin","colors","effect","TYPOGRAPHY_SIZE","light","flattenKeys","mapDefaultKeys","newUtilities: { [key: string]: CSSRuleObject }","iconsV2","iconsV1","charcoalIconsV2: ReturnType<typeof plugin>","charcoalIconsV1: ReturnType<typeof plugin>","light","SPACING","COLUMN_UNIT","GUTTER_UNIT","BORDER_RADIUS","typographyPlugin","theme","cssVariableGradientPlugin","iconsV2","iconsV1","config: Omit<Config, 'content'>"],"sources":["../src/foundation.ts","../src/util.ts","../src/colors/utils.ts","../src/colors/toTailwindConfig.ts","../src/colors/pluginTokenV1.ts","../src/colors/plugin.ts","../src/gradient/plugin.ts","../src/typography/plugin.ts","../src/tokenV2.ts","../src/icons.ts","../src/index.ts"],"sourcesContent":["import { Effect } from '@charcoal-ui/foundation'\nimport { CharcoalTheme as Theme } from '@charcoal-ui/theme'\n\nexport const GRID_COUNT = 12\n\nexport function mergeEffect({\n elementEffect,\n effect,\n}: Pick<Theme, 'elementEffect' | 'effect'>): MergedEffect {\n return {\n ...elementEffect,\n ...effect,\n outline: {\n type: 'opacity',\n opacity: 0.32,\n } as Effect,\n }\n}\n\nexport type MergedEffect = Record<string, Effect>\n","import type { Config } from 'tailwindcss'\nimport { TailwindVersion, ThemeMap } from './types'\n\n/**\n * the key \"default\" or \"DEFAULT\" has special meaning and dropped from class name\n *\n * @see https://tailwindcss.com/docs/upgrading-to-v2#update-default-theme-keys-to-default\n */\nexport function getDefaultKeyName(version: TailwindVersion) {\n switch (version) {\n case 'v3':\n case 'v2': {\n return 'DEFAULT'\n }\n\n case 'v1': {\n return 'default'\n }\n }\n}\n\nexport function getVariantOption(version: TailwindVersion): Partial<Config> {\n switch (version) {\n case 'v3': {\n // v3 以上では variants は variantOrders に改名された\n // そしてこれは上書きをしたいモチベがない\n // https://v2.tailwindcss.com/docs/configuration#variant-order\n return {}\n }\n\n case 'v2':\n case 'v1': {\n return { variants: {} }\n }\n }\n}\n\nfunction setEquals<T>(a: Set<T>, b: Set<T>) {\n return a.size === b.size && Array.from(a).every((value) => b.has(value))\n}\n\nexport function assertAllThemeHaveSameKeys(themeMap: ThemeMap): void {\n const defaultTheme = themeMap[':root']\n const expectedColorKeys = new Set(Object.keys(defaultTheme.color))\n const expectedEffectKeys = new Set(Object.keys(defaultTheme.effect))\n\n for (const [name, theme] of Object.entries(themeMap)) {\n const colorKeys = new Set(Object.keys(theme.color))\n const effectKeys = new Set(Object.keys(theme.effect))\n\n if (!setEquals(colorKeys, expectedColorKeys)) {\n throw new Error(`:root and ${name} does not have same colors.\n\nExpected( :root ): ${JSON.stringify(Array.from(expectedColorKeys))}\nGot: ${JSON.stringify(Array.from(colorKeys))}`)\n }\n\n if (!setEquals(effectKeys, expectedEffectKeys)) {\n throw new Error(`:root and ${name} does not have same effects.\n\nExpected( :root ): ${JSON.stringify(Array.from(expectedEffectKeys))}\nGot: ${JSON.stringify(Array.from(effectKeys))}`)\n }\n }\n}\n\nexport function camelToKebab(value: string) {\n return value\n .replace(/(?<small>[\\da-z]|(?=[A-Z]))(?<capital>[A-Z])/gu, '$1-$2')\n .toLowerCase()\n}\n\nexport const mapDefaultKey = <O extends object>(o: O) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(JSON.stringify(o), function reviver(k: string, v: string) {\n if (k === 'default') {\n const DefaultKey = getDefaultKeyName('v3')\n this[DefaultKey] = v\n return undefined\n }\n return v\n })\n}\n\nexport const flattenKey = <O extends object>(\n o: O,\n join?: (key: string) => boolean,\n) => {\n return Object.fromEntries(\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n Object.entries(o).flatMap(([key, v]) => {\n if (typeof v === 'string') return [[key, v]]\n return Object.entries(v as object).map(([kk, vv]) => {\n return [(join?.(key) ?? true) ? [key, kk].join('-') : kk, vv]\n })\n }),\n )\n}\n","import { GradientMaterial, Material } from '@charcoal-ui/foundation'\n\nexport const COLOR_PREFIX = '--tailwind-color-'\n\nexport function isSingleColor(color: AnyColor): color is Material {\n return typeof color === 'string'\n}\n\ntype AnyColor = Material | GradientMaterial\n\nexport type AnyColorTheme = Record<string, AnyColor>\n","import { Material } from '@charcoal-ui/foundation'\nimport { applyEffect, filterObject, mapObject } from '@charcoal-ui/utils'\nimport type { Config } from 'tailwindcss'\nimport { MergedEffect } from '../foundation'\n\nimport { TailwindVersion } from '../types'\nimport { getDefaultKeyName } from '../util'\n\nimport { AnyColorTheme, COLOR_PREFIX, isSingleColor } from './utils'\n\nexport function colorsToTailwindConfig(\n version: TailwindVersion,\n colors: AnyColorTheme,\n effects: MergedEffect,\n): NonNullable<Config['theme']>['colors'] {\n const targetColors = filterObject(colors, isSingleColor)\n const DEFAULT = getDefaultKeyName(version)\n\n /**\n * こういう感じのを吐き出す\n *\n * ```js\n * {\n * DEFAULT: 'var(--tailwind-color-hoge1, #fff)',\n * hover: 'var(--tailwind-color-hoge1--hover, #eee)',\n * press: 'var(--tailwind-color-hoge1--press, #ddd)',\n * disabled: 'var(--tailwind-color-hoge1--disabled, #eee)',\n * }\n * ```\n */\n function colorsForAllEffects(name: string, color: Material) {\n const varName = `${COLOR_PREFIX}${name}`\n\n return {\n [DEFAULT]: `var(${varName}, ${color})`,\n\n ...mapObject(effects, (effectName, effect) => [\n effectName,\n `var(${varName}--${effectName}, ${applyEffect(color, effect)})`,\n ]),\n }\n }\n\n return mapObject(targetColors, (name, color) => [\n name,\n colorsForAllEffects(name, color),\n ])\n}\n","import {\n applyEffect,\n customPropertyToken,\n filterObject,\n flatMapObject,\n mapObject,\n} from '@charcoal-ui/utils'\nimport { ThemeMap } from '../types'\nimport {\n CharcoalAbstractTheme,\n EffectType,\n Key,\n CharcoalTheme as Theme,\n} from '@charcoal-ui/theme'\n\nexport function defineCssVariablesV1(themeMap: ThemeMap) {\n // @ts-expect-error FIXME\n return mapObject(themeMap, (key, theme) => {\n if (key.startsWith('@media')) {\n return [\n key,\n {\n ':root': defineColorVariableCSS(theme),\n },\n ]\n } else {\n return [key, defineColorVariableCSS(theme)]\n }\n })\n}\n\nexport const defineColorVariableCSS = (theme: Theme) => {\n const borders = mapObject(theme.border, (name, { color }) => [\n // REVIEW: もしtheme.colorにたまたまborder-〇〇で始まる色名がいたら被りうる\n withPrefixes('border', name),\n color,\n ])\n\n const colors = defineThemeVariables({ ...theme.color, ...borders })({ theme })\n return colors\n}\n\n/**\n * Check whether a value is non-null and non-undefined\n *\n * @param value nullable\n */\nexport const isPresent = <T>(value: T): value is NonNullable<T> => value != null\n\n/**\n * 子孫要素で使われるカラーテーマの CSS Variables を上書きする\n *\n * @params colorParams - 上書きしたい色の定義( `theme.color` の一部だけ書けば良い )\n * @params effectParams - effect の定義を上書きしたい場合は渡す(必須ではない)\n *\n * @example\n * ```tsx\n * const LocalTheme = styled.div`\n * ${defineThemeVariables({ text1: '#ff0000' })}\n * // `text1` is now defined as red\n * ${theme((o) => [o.font.text1])}\n * `\n * ```\n */\nexport function defineThemeVariables(\n colorParams: Partial<CharcoalAbstractTheme['color']>,\n effectParams?: Partial<CharcoalAbstractTheme['effect']>,\n) {\n return function toCssObject(props: {\n theme: Pick<CharcoalAbstractTheme, 'effect'>\n }) {\n const colors = filterObject(colorParams, isPresent)\n\n // flatMapObject の中で毎回 Object.entries を呼ぶのは無駄なので外で呼ぶ\n const effects = Object.entries({\n ...props.theme.effect,\n ...effectParams,\n })\n\n return flatMapObject(colors, (colorKey, color) => [\n [customPropertyToken(colorKey), color],\n\n ...effects.map<[string, string]>(([effectKey, effect]) => [\n customPropertyToken(colorKey, [effectKey]),\n applyEffect(color, [effect]),\n ]),\n ])\n }\n}\n\nexport function isSupportedEffect(effect: Key): effect is EffectType {\n return ['hover', 'press', 'disabled'].includes(effect as string)\n}\n\nexport const variable = (value: string) => `var(${value})`\n\nexport function withPrefixes(...parts: string[]) {\n return parts.join('-')\n}\n","import { Material } from '@charcoal-ui/foundation'\nimport { CharcoalTheme as Theme } from '@charcoal-ui/theme'\nimport {\n applyEffect,\n filterObject,\n flatMapObject,\n mapObject,\n} from '@charcoal-ui/utils'\nimport plugin from 'tailwindcss/plugin.js'\nimport { mergeEffect } from '../foundation'\nimport { CSSVariableName, CSSVariables, Definition, ThemeMap } from '../types'\nimport { COLOR_PREFIX, isSingleColor } from './utils'\nimport { defineCssVariablesV1 } from './pluginTokenV1'\n\n/**\n * --tailwind-* また --charcoal-* を生成する\n * TODO: --tailwindをやめる\n */\nexport default function cssVariableColorPlugin(\n themeMap: ThemeMap,\n cssVariablesV1: boolean,\n): ReturnType<typeof plugin> {\n // `:root` 以外のケースで各 CSS Variable がどういう値を取るかを定義する\n const { ':root': _defaultTheme, ...otherThemes } = themeMap\n const definitions = defineCssVariables(otherThemes)\n\n return plugin(({ addBase }) => {\n addBase(definitions)\n\n // styledのTokenInjector移植(background処理除く)\n if (cssVariablesV1) {\n const cssVariablesV1 = defineCssVariablesV1(themeMap)\n // @ts-expect-error FIXME\n addBase(cssVariablesV1)\n }\n })\n}\n\nexport function defineCssVariables(themes: Omit<ThemeMap, ':root'>) {\n return mapObject(themes, (selectorOrMediaQuery, theme) => {\n const css = toCssVariables(theme)\n\n if (selectorOrMediaQuery.startsWith('@media')) {\n return [\n selectorOrMediaQuery,\n {\n ':root': css,\n },\n ]\n } else {\n return [selectorOrMediaQuery, css]\n }\n }) as Definition\n}\n\nfunction toCssVariables(theme: Theme): CSSVariables {\n const colors = filterObject(theme.color, isSingleColor)\n const effects = Object.entries(mergeEffect(theme))\n\n return flatMapObject(colors, (name, color) => {\n const varName: keyof CSSVariables = `${COLOR_PREFIX}${name}`\n\n return [\n [varName, color],\n\n ...effects.map<[CSSVariableName, Material]>(([type, effect]) => [\n `${varName}--${type}`,\n applyEffect(color, effect),\n ]),\n ]\n })\n}\n","import plugin from 'tailwindcss/plugin.js'\nimport { camelToKebab } from '../util'\nimport { GradientMaterial } from '@charcoal-ui/foundation'\nimport { ThemeColorGradient } from '@charcoal-ui/theme'\nimport {\n applyEffectToGradient,\n flatMapObject,\n gradient,\n GradientDirection,\n mapKeys,\n mapObject,\n} from '@charcoal-ui/utils'\nimport { Values } from '../types'\nimport { MergedEffect } from '../foundation'\n\nconst VAR_PREFIX = '--tailwind-gradient-'\n\nexport default function cssVariableColorPlugin(\n gradients: ThemeColorGradient,\n effects: MergedEffect,\n selectorOrMediaQuery: string,\n) {\n const utilities = getUtilities(gradients, effects)\n\n const classRules = mapObject(utilities, (name) => [\n `.bg-${name}`,\n { backgroundImage: `var(${VAR_PREFIX}${name})` },\n ])\n\n return plugin(({ addBase, addUtilities }) => {\n const css = mapKeys(utilities, (name) => `${VAR_PREFIX}${name}`)\n if (selectorOrMediaQuery.startsWith('@media')) {\n addBase({\n [selectorOrMediaQuery]: {\n ':root': css,\n },\n })\n } else {\n addBase({\n [selectorOrMediaQuery]: css,\n })\n }\n\n addUtilities(classRules, {\n // @ts-expect-error FIXME\n variants: ['responsive'],\n })\n })\n}\n\nconst DIRECTIONS = {\n 'to top': 'top',\n 'to bottom': 'bottom',\n 'to left': 'left',\n 'to right': 'right',\n} as const\n\n/**\n * こういう感じのやつ。この時点では `--tailwind-gradient-` のような CSS 変数名になってない\n *\n * ```js\n * {\n * 'hoge1': 'linear-gradient(to top, ...)',\n * ...\n * }\n * ```\n */\ntype Utilities = Record<string, LinearGradient>\n\ntype LinearGradient = `linear-gradient(${string})`\n\nexport function getUtilities(\n gradients: Record<string, GradientMaterial>,\n effect: MergedEffect,\n): Utilities {\n const effects = Object.entries(effect)\n const directions = Object.entries(DIRECTIONS) as [\n GradientDirection,\n Values<typeof DIRECTIONS>,\n ][]\n\n return flatMapObject(gradients, (name, colors) =>\n directions.flatMap(([direction, className]) => {\n const toLinearGradient = (colors: GradientMaterial) => {\n const style = gradient(direction)(colors)\n\n if (!('backgroundImage' in style)) {\n throw new Error(\n `Could not generate linear-gradient() from ${name} ${direction} ${className}`,\n )\n }\n\n // 本当は backgroundColor も同時に生成されるんだけど、使うにはそれ用の CSS 変数も一緒に作らないといけない\n // とりあえず background-image だけで動くのでこっちだけを利用する\n return style.backgroundImage as LinearGradient\n }\n\n return [\n // こういう感じのやつ\n // { 'hoge1': 'linear-gradient(to top, ...)' }\n [createUtilityName(name, className), toLinearGradient(colors)],\n\n // こういう感じのやつ\n // { 'hoge1--hover': 'linear-gradient(to top, ...)' }\n ...effects.map<[string, LinearGradient]>(([effectName, effect]) => [\n createUtilityName(name, className, effectName),\n toLinearGradient(applyEffectToGradient(effect)(colors)),\n ]),\n ]\n }),\n )\n}\n\nfunction createUtilityName(\n gradientName: string,\n direction: Values<typeof DIRECTIONS>,\n suffix = '',\n) {\n return [camelToKebab(gradientName), direction, suffix]\n .filter(Boolean)\n .join('-')\n}\n","import plugin from 'tailwindcss/plugin.js'\nimport { TypographyDescriptor, TYPOGRAPHY_SIZE } from '@charcoal-ui/foundation'\nimport { halfLeading, mapObject, px } from '@charcoal-ui/utils'\n\nconst leadingCancel = {\n display: 'block',\n width: 0,\n height: 0,\n content: '\"\"',\n}\n\nconst typographyStyle = (style: TypographyDescriptor) => {\n const margin = -halfLeading(style)\n\n return {\n 'font-size': px(style.fontSize),\n 'line-height': px(style.lineHeight),\n\n /**\n * cancel leading\n *\n * @see https://yuyakinoshita.com/blog/2020/01/20/line-height-crop/\n */\n '&::before': {\n ...leadingCancel,\n marginTop: px(margin),\n },\n '&::after': {\n ...leadingCancel,\n marginBottom: px(margin),\n },\n }\n}\n\nconst typographyPlugin = plugin(({ addUtilities }) => {\n const typographyClasses = mapObject(TYPOGRAPHY_SIZE, (fontSize, style) => [\n `.typography-${fontSize}`,\n typographyStyle(style),\n ])\n\n addUtilities(\n {\n ...typographyClasses,\n '.preserve-half-leading': {\n '&::before': {\n content: 'none',\n },\n '&::after': {\n content: 'none',\n },\n },\n },\n {\n // @ts-expect-error FIXME\n variants: ['responsive'],\n },\n )\n})\n\nexport default typographyPlugin\n","import light from '@charcoal-ui/theme/unstable-tokens/css-variables.json' with { type: 'json' }\nimport type { Config } from 'tailwindcss'\nimport {\n flattenKey as flattenKeys,\n mapDefaultKey as mapDefaultKeys,\n} from './util'\n\nexport function unstable_createTailwindConfigTokenV2(): Omit<\n Config,\n 'content'\n> {\n const fontSize = Object.fromEntries(\n Object.entries(light.text['font-size']).flatMap(([k, v]) => {\n // text.fontSize.paragraph + text.lineHeight.paragraph -> text-paragraph\n if (typeof v === 'string') {\n return [\n [\n k,\n [\n v,\n // @ts-expect-error k is keyof line-height\n { lineHeight: light.text['line-height'][k] },\n ],\n ],\n ]\n }\n\n // text.fontSize.heading.s + text.lineHeight.heading.s -> text-heading-s\n return Object.entries(v as Record<string, string>).map(([kk, vv]) => {\n return [\n [k, kk].join('-'),\n [\n vv,\n // @ts-expect-error k is keyof line-height\n { lineHeight: light.text['line-height'][k][kk] },\n ],\n ]\n })\n }),\n ) as NonNullable<Config['theme']>['fontSize']\n\n // space.target.s -> p-target-s\n // space.gap.gapButtons -> p-gap-buttons\n const spacing = flattenKeys(light.space, (key) => !/(gap|padding)/.test(key))\n // color.container.default -> bg-container\n // color.container.hover -> bg-container-hover\n const colors = mapDefaultKeys(light.color)\n\n const config: Omit<Config, 'content'> = {\n darkMode: 'media',\n theme: {\n // borderWidth.m -> border-m\n // borderWidth.focus.1 -> border-focus-1\n borderWidth: flattenKeys(light['border-width']),\n borderRadius: light.radius,\n borderColor: flattenKeys(colors.border),\n\n colors,\n\n fontSize,\n fontWeight: light.text['font-weight'],\n\n spacing,\n gap: spacing,\n width: light['paragraph-width'],\n },\n }\n\n return config\n}\n","import plugin from 'tailwindcss/plugin.js'\nimport iconsV2 from '@charcoal-ui/icon-files/v2/datauri'\nimport iconsV1 from '@charcoal-ui/icon-files/v1/datauri'\nimport { CSSRuleObject } from 'tailwindcss/types/config'\n\nconst transformClassNameV2 = (fileName: string) => {\n const [size, variant, name] = fileName.split('/')\n return [\n '.icon-v2',\n name.replaceAll('.', '-'),\n ...(variant === 'regular' ? [] : [variant]),\n ...(size === '24' ? [] : [size]),\n ]\n .join('-')\n .toLowerCase()\n}\n\nconst transformClassNameV1 = (fileName: string) => {\n const [size, name] = fileName.split('/')\n return [\n '.icon-v1',\n name.replaceAll('.', '-'),\n ...(size === '24' ? [] : [size]),\n ]\n .join('-')\n .toLowerCase()\n}\n\nexport const createIconUtilities = ({\n v2 = false,\n}: {\n v2?: boolean\n}): {\n [key: string]: CSSRuleObject\n} => {\n const newUtilities: { [key: string]: CSSRuleObject } = {}\n const icons = v2 ? iconsV2 : iconsV1\n for (const [fileName, { uri, isSetCurrentcolor }] of Object.entries(icons)) {\n const className = v2\n ? transformClassNameV2(fileName)\n : transformClassNameV1(fileName)\n\n newUtilities[className] = {\n display: 'inline-block',\n width: '1em',\n height: '1em',\n maskImage: `url(${uri})`,\n maskSize: '100% 100%',\n background: isSetCurrentcolor ? 'currentColor' : null,\n aspectRatio: '1/1',\n }\n }\n return newUtilities\n}\n\nexport const charcoalIconsV2: ReturnType<typeof plugin> = plugin(\n ({ addUtilities }) => {\n addUtilities(createIconUtilities({ v2: true }))\n },\n)\n\nexport const charcoalIconsV1: ReturnType<typeof plugin> = plugin(\n ({ addUtilities }) => {\n addUtilities(createIconUtilities({ v2: false }))\n },\n)\n","import { GRID_COUNT, mergeEffect } from './foundation'\n\nimport type { Config } from 'tailwindcss'\nimport { TailwindVersion, ThemeMap } from './types'\n\nimport {\n assertAllThemeHaveSameKeys,\n getDefaultKeyName,\n getVariantOption,\n} from './util'\nimport {\n COLUMN_UNIT,\n GUTTER_UNIT,\n SPACING,\n BORDER_RADIUS,\n} from '@charcoal-ui/foundation'\nimport { light } from '@charcoal-ui/theme'\nimport { mapObject, px } from '@charcoal-ui/utils'\nimport { colorsToTailwindConfig } from './colors/toTailwindConfig'\n\nimport cssVariableColorPlugin from './colors/plugin'\nimport cssVariableGradientPlugin from './gradient/plugin'\nimport typographyPlugin from './typography/plugin'\nimport { unstable_createTailwindConfigTokenV2 } from './tokenV2'\nimport { charcoalIconsV1, charcoalIconsV2 } from './icons'\nexport { unstable_createTailwindConfigTokenV2 }\n\ninterface Options {\n version?: TailwindVersion\n theme?: ThemeMap\n cssVariablesV1?: boolean\n unstableTokenV2?: boolean\n iconsV2?: boolean\n iconsV1?: boolean\n}\n\nexport function createTailwindConfig({\n theme = { ':root': light },\n version = 'v3',\n cssVariablesV1 = true,\n unstableTokenV2 = false,\n iconsV2 = false,\n iconsV1 = false,\n}: Options): Omit<Config, 'content'> {\n assertAllThemeHaveSameKeys(theme)\n\n const defaultTheme = theme[':root']\n const effects = mergeEffect(defaultTheme)\n const DEFAULT = getDefaultKeyName(version)\n\n const {\n borderWidth: borderWidthV2,\n borderRadius: borderRadiusV2,\n borderColor: borderColorV2,\n colors: colorsV2,\n fontSize: fontSizeV2,\n fontWeight: fontWeightV2,\n spacing: spacingV2,\n gap: gapV2,\n width: widthV2,\n }: Partial<NonNullable<Config['theme']>> = unstableTokenV2\n ? unstable_createTailwindConfigTokenV2().theme\n : {}\n\n return {\n theme: {\n screens: {\n screen1: px(0),\n screen2: px(defaultTheme.breakpoint.screen1),\n screen3: px(defaultTheme.breakpoint.screen2),\n screen4: px(defaultTheme.breakpoint.screen3),\n screen5: px(defaultTheme.breakpoint.screen4),\n },\n colors: {\n // @deprecated\n black: '#000',\n\n // @deprecated\n white: '#fff',\n\n transparent: 'transparent',\n current: 'currentColor',\n ...colorsToTailwindConfig(version, defaultTheme.color, effects),\n ...colorsV2,\n },\n borderColor: {\n ...colorsToTailwindConfig(\n version,\n mapObject(defaultTheme.border, (k, v) => [k, v.color]),\n effects,\n ),\n ...borderColorV2,\n },\n spacing: {\n ...mapObject(\n SPACING,\n (name, pixel) => [name, px(pixel)] as [string, string],\n ),\n ...spacingV2,\n },\n width: {\n full: '100%',\n screen: '100vw',\n auto: 'auto',\n fit: 'fit-content',\n\n /**\n * generates classes like \"w-col-span-1\"\n */\n ...Array.from({ length: GRID_COUNT }, (_, i) => i + 1).reduce(\n (styles, i) => ({\n ...styles,\n [`col-span-${i}`]: px(COLUMN_UNIT * i + GUTTER_UNIT * (i - 1)),\n }),\n {},\n ),\n\n /**\n * generates classes like \"w-1/12\" (except for 12/12, which just equals to w-full)\n */\n ...Array.from({ length: GRID_COUNT - 1 }, (_, i) => i + 1).reduce(\n (styles, i) => ({\n ...styles,\n [`${i}/${GRID_COUNT}`]: `${(i / GRID_COUNT) * 100}%`,\n }),\n {},\n ),\n ...widthV2,\n },\n gap: {\n fixed: px(GUTTER_UNIT),\n ...gapV2,\n },\n borderRadius: {\n ...mapObject(\n BORDER_RADIUS,\n (name, value) => [name, px(value)] as [string, string],\n ),\n ...borderRadiusV2,\n },\n transitionDuration: {\n [DEFAULT]: '0.2s',\n },\n ...(unstableTokenV2\n ? {\n borderWidth: borderWidthV2,\n fontSize: fontSizeV2,\n fontWeight: fontWeightV2,\n }\n : {}),\n },\n\n ...getVariantOption(version),\n\n corePlugins: {\n lineHeight: false,\n },\n plugins: [\n typographyPlugin,\n cssVariableColorPlugin(theme, Boolean(cssVariablesV1)),\n\n ...Object.entries(theme).map(([selectorOrMediaQuery, theme]) =>\n cssVariableGradientPlugin(\n theme.gradientColor,\n mergeEffect(theme),\n selectorOrMediaQuery,\n ),\n ),\n ...(iconsV2 ? [charcoalIconsV2] : []),\n ...(iconsV1 ? [charcoalIconsV1] : []),\n ],\n }\n}\n\nexport const config: Omit<Config, 'content'> = createTailwindConfig({})\n\nexport default config\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["varName: keyof CSSVariables","cssVariableColorPlugin","colors","effect","TYPOGRAPHY_SIZE","light","flattenKeys","mapDefaultKeys","newUtilities: { [key: string]: CSSRuleObject }","iconsV2","iconsV1","charcoalIconsV2: ReturnType<typeof plugin>","charcoalIconsV1: ReturnType<typeof plugin>","light","SPACING","COLUMN_UNIT","GUTTER_UNIT","BORDER_RADIUS","typographyPlugin","theme","cssVariableGradientPlugin","iconsV2","iconsV1","config: Omit<Config, 'content'>"],"sources":["../src/foundation.ts","../src/util.ts","../src/colors/utils.ts","../src/colors/toTailwindConfig.ts","../src/colors/pluginTokenV1.ts","../src/colors/plugin.ts","../src/gradient/plugin.ts","../src/typography/plugin.ts","../src/tokenV2.ts","../src/icons.ts","../src/index.ts"],"sourcesContent":["import { Effect } from '@charcoal-ui/foundation'\nimport { CharcoalTheme as Theme } from '@charcoal-ui/theme'\n\nexport const GRID_COUNT = 12\n\nexport function mergeEffect({\n elementEffect,\n effect,\n}: Pick<Theme, 'elementEffect' | 'effect'>): MergedEffect {\n return {\n ...elementEffect,\n ...effect,\n outline: {\n type: 'opacity',\n opacity: 0.32,\n } as Effect,\n }\n}\n\nexport type MergedEffect = Record<string, Effect>\n","import type { Config } from 'tailwindcss'\nimport { TailwindVersion, ThemeMap } from './types'\n\n/**\n * the key \"default\" or \"DEFAULT\" has special meaning and dropped from class name\n *\n * @see https://tailwindcss.com/docs/upgrading-to-v2#update-default-theme-keys-to-default\n */\nexport function getDefaultKeyName(version: TailwindVersion) {\n switch (version) {\n case 'v3':\n case 'v2': {\n return 'DEFAULT'\n }\n\n case 'v1': {\n return 'default'\n }\n }\n}\n\nexport function getVariantOption(version: TailwindVersion): Partial<Config> {\n switch (version) {\n case 'v3': {\n // v3 以上では variants は variantOrders に改名された\n // そしてこれは上書きをしたいモチベがない\n // https://v2.tailwindcss.com/docs/configuration#variant-order\n return {}\n }\n\n case 'v2':\n case 'v1': {\n return { variants: {} }\n }\n }\n}\n\nfunction setEquals<T>(a: Set<T>, b: Set<T>) {\n return a.size === b.size && Array.from(a).every((value) => b.has(value))\n}\n\nexport function assertAllThemeHaveSameKeys(themeMap: ThemeMap): void {\n const defaultTheme = themeMap[':root']\n const expectedColorKeys = new Set(Object.keys(defaultTheme.color))\n const expectedEffectKeys = new Set(Object.keys(defaultTheme.effect))\n\n for (const [name, theme] of Object.entries(themeMap)) {\n const colorKeys = new Set(Object.keys(theme.color))\n const effectKeys = new Set(Object.keys(theme.effect))\n\n if (!setEquals(colorKeys, expectedColorKeys)) {\n throw new Error(`:root and ${name} does not have same colors.\n\nExpected( :root ): ${JSON.stringify(Array.from(expectedColorKeys))}\nGot: ${JSON.stringify(Array.from(colorKeys))}`)\n }\n\n if (!setEquals(effectKeys, expectedEffectKeys)) {\n throw new Error(`:root and ${name} does not have same effects.\n\nExpected( :root ): ${JSON.stringify(Array.from(expectedEffectKeys))}\nGot: ${JSON.stringify(Array.from(effectKeys))}`)\n }\n }\n}\n\nexport function camelToKebab(value: string) {\n return value\n .replace(/(?<small>[\\da-z]|(?=[A-Z]))(?<capital>[A-Z])/gu, '$1-$2')\n .toLowerCase()\n}\n\nexport const mapDefaultKey = <O extends object>(o: O) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(JSON.stringify(o), function reviver(k: string, v: string) {\n if (k === 'default') {\n const DefaultKey = getDefaultKeyName('v3')\n this[DefaultKey] = v\n return undefined\n }\n return v\n })\n}\n\nexport const flattenKey = <O extends object>(\n o: O,\n join?: (key: string) => boolean,\n): Record<string, unknown> => {\n return Object.fromEntries(\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n Object.entries(o).flatMap(([key, v]) => {\n if (typeof v === 'string') return [[key, v]]\n return Object.entries(v as object).map(([kk, vv]) => {\n return [(join?.(key) ?? true) ? [key, kk].join('-') : kk, vv]\n })\n }),\n )\n}\n\n/**\n * `DEFAULT` はkey名に結合しない\n */\nexport const flattenKeyWithoutDefault = <O extends object>(\n o: O,\n join?: (key: string) => boolean,\n): Record<string, unknown> => {\n return Object.fromEntries(\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n Object.entries(o).flatMap(([key, v]) => {\n if (typeof v === 'string') return [[key, v]]\n return Object.entries(v as object).map(([kk, vv]) => {\n const isDefaultKey = kk === 'DEFAULT' || kk === 'default'\n const outputKey = isDefaultKey\n ? key\n : (join?.(key) ?? true)\n ? [key, kk].join('-')\n : kk\n return [outputKey, vv]\n })\n }),\n )\n}\n","import { GradientMaterial, Material } from '@charcoal-ui/foundation'\n\nexport const COLOR_PREFIX = '--tailwind-color-'\n\nexport function isSingleColor(color: AnyColor): color is Material {\n return typeof color === 'string'\n}\n\ntype AnyColor = Material | GradientMaterial\n\nexport type AnyColorTheme = Record<string, AnyColor>\n","import { Material } from '@charcoal-ui/foundation'\nimport { applyEffect, filterObject, mapObject } from '@charcoal-ui/utils'\nimport type { Config } from 'tailwindcss'\nimport { MergedEffect } from '../foundation'\n\nimport { TailwindVersion } from '../types'\nimport { getDefaultKeyName } from '../util'\n\nimport { AnyColorTheme, COLOR_PREFIX, isSingleColor } from './utils'\n\nexport function colorsToTailwindConfig(\n version: TailwindVersion,\n colors: AnyColorTheme,\n effects: MergedEffect,\n): NonNullable<Config['theme']>['colors'] {\n const targetColors = filterObject(colors, isSingleColor)\n const DEFAULT = getDefaultKeyName(version)\n\n /**\n * こういう感じのを吐き出す\n *\n * ```js\n * {\n * DEFAULT: 'var(--tailwind-color-hoge1, #fff)',\n * hover: 'var(--tailwind-color-hoge1--hover, #eee)',\n * press: 'var(--tailwind-color-hoge1--press, #ddd)',\n * disabled: 'var(--tailwind-color-hoge1--disabled, #eee)',\n * }\n * ```\n */\n function colorsForAllEffects(name: string, color: Material) {\n const varName = `${COLOR_PREFIX}${name}`\n\n return {\n [DEFAULT]: `var(${varName}, ${color})`,\n\n ...mapObject(effects, (effectName, effect) => [\n effectName,\n `var(${varName}--${effectName}, ${applyEffect(color, effect)})`,\n ]),\n }\n }\n\n return mapObject(targetColors, (name, color) => [\n name,\n colorsForAllEffects(name, color),\n ])\n}\n","import {\n applyEffect,\n customPropertyToken,\n filterObject,\n flatMapObject,\n mapObject,\n} from '@charcoal-ui/utils'\nimport { ThemeMap } from '../types'\nimport {\n CharcoalAbstractTheme,\n EffectType,\n Key,\n CharcoalTheme as Theme,\n} from '@charcoal-ui/theme'\n\nexport function defineCssVariablesV1(themeMap: ThemeMap) {\n // @ts-expect-error FIXME\n return mapObject(themeMap, (key, theme) => {\n if (key.startsWith('@media')) {\n return [\n key,\n {\n ':root': defineColorVariableCSS(theme),\n },\n ]\n } else {\n return [key, defineColorVariableCSS(theme)]\n }\n })\n}\n\nexport const defineColorVariableCSS = (theme: Theme) => {\n const borders = mapObject(theme.border, (name, { color }) => [\n // REVIEW: もしtheme.colorにたまたまborder-〇〇で始まる色名がいたら被りうる\n withPrefixes('border', name),\n color,\n ])\n\n const colors = defineThemeVariables({ ...theme.color, ...borders })({ theme })\n return colors\n}\n\n/**\n * Check whether a value is non-null and non-undefined\n *\n * @param value nullable\n */\nexport const isPresent = <T>(value: T): value is NonNullable<T> => value != null\n\n/**\n * 子孫要素で使われるカラーテーマの CSS Variables を上書きする\n *\n * @params colorParams - 上書きしたい色の定義( `theme.color` の一部だけ書けば良い )\n * @params effectParams - effect の定義を上書きしたい場合は渡す(必須ではない)\n *\n * @example\n * ```tsx\n * const LocalTheme = styled.div`\n * ${defineThemeVariables({ text1: '#ff0000' })}\n * // `text1` is now defined as red\n * ${theme((o) => [o.font.text1])}\n * `\n * ```\n */\nexport function defineThemeVariables(\n colorParams: Partial<CharcoalAbstractTheme['color']>,\n effectParams?: Partial<CharcoalAbstractTheme['effect']>,\n) {\n return function toCssObject(props: {\n theme: Pick<CharcoalAbstractTheme, 'effect'>\n }) {\n const colors = filterObject(colorParams, isPresent)\n\n // flatMapObject の中で毎回 Object.entries を呼ぶのは無駄なので外で呼ぶ\n const effects = Object.entries({\n ...props.theme.effect,\n ...effectParams,\n })\n\n return flatMapObject(colors, (colorKey, color) => [\n [customPropertyToken(colorKey), color],\n\n ...effects.map<[string, string]>(([effectKey, effect]) => [\n customPropertyToken(colorKey, [effectKey]),\n applyEffect(color, [effect]),\n ]),\n ])\n }\n}\n\nexport function isSupportedEffect(effect: Key): effect is EffectType {\n return ['hover', 'press', 'disabled'].includes(effect as string)\n}\n\nexport const variable = (value: string) => `var(${value})`\n\nexport function withPrefixes(...parts: string[]) {\n return parts.join('-')\n}\n","import { Material } from '@charcoal-ui/foundation'\nimport { CharcoalTheme as Theme } from '@charcoal-ui/theme'\nimport {\n applyEffect,\n filterObject,\n flatMapObject,\n mapObject,\n} from '@charcoal-ui/utils'\nimport plugin from 'tailwindcss/plugin.js'\nimport { mergeEffect } from '../foundation'\nimport { CSSVariableName, CSSVariables, Definition, ThemeMap } from '../types'\nimport { COLOR_PREFIX, isSingleColor } from './utils'\nimport { defineCssVariablesV1 } from './pluginTokenV1'\n\n/**\n * --tailwind-* また --charcoal-* を生成する\n * TODO: --tailwindをやめる\n */\nexport default function cssVariableColorPlugin(\n themeMap: ThemeMap,\n cssVariablesV1: boolean,\n): ReturnType<typeof plugin> {\n // `:root` 以外のケースで各 CSS Variable がどういう値を取るかを定義する\n const { ':root': _defaultTheme, ...otherThemes } = themeMap\n const definitions = defineCssVariables(otherThemes)\n\n return plugin(({ addBase }) => {\n addBase(definitions)\n\n // styledのTokenInjector移植(background処理除く)\n if (cssVariablesV1) {\n const cssVariablesV1 = defineCssVariablesV1(themeMap)\n // @ts-expect-error FIXME\n addBase(cssVariablesV1)\n }\n })\n}\n\nexport function defineCssVariables(themes: Omit<ThemeMap, ':root'>) {\n return mapObject(themes, (selectorOrMediaQuery, theme) => {\n const css = toCssVariables(theme)\n\n if (selectorOrMediaQuery.startsWith('@media')) {\n return [\n selectorOrMediaQuery,\n {\n ':root': css,\n },\n ]\n } else {\n return [selectorOrMediaQuery, css]\n }\n }) as Definition\n}\n\nfunction toCssVariables(theme: Theme): CSSVariables {\n const colors = filterObject(theme.color, isSingleColor)\n const effects = Object.entries(mergeEffect(theme))\n\n return flatMapObject(colors, (name, color) => {\n const varName: keyof CSSVariables = `${COLOR_PREFIX}${name}`\n\n return [\n [varName, color],\n\n ...effects.map<[CSSVariableName, Material]>(([type, effect]) => [\n `${varName}--${type}`,\n applyEffect(color, effect),\n ]),\n ]\n })\n}\n","import plugin from 'tailwindcss/plugin.js'\nimport { camelToKebab } from '../util'\nimport { GradientMaterial } from '@charcoal-ui/foundation'\nimport { ThemeColorGradient } from '@charcoal-ui/theme'\nimport {\n applyEffectToGradient,\n flatMapObject,\n gradient,\n GradientDirection,\n mapKeys,\n mapObject,\n} from '@charcoal-ui/utils'\nimport { Values } from '../types'\nimport { MergedEffect } from '../foundation'\n\nconst VAR_PREFIX = '--tailwind-gradient-'\n\nexport default function cssVariableColorPlugin(\n gradients: ThemeColorGradient,\n effects: MergedEffect,\n selectorOrMediaQuery: string,\n) {\n const utilities = getUtilities(gradients, effects)\n\n const classRules = mapObject(utilities, (name) => [\n `.bg-${name}`,\n { backgroundImage: `var(${VAR_PREFIX}${name})` },\n ])\n\n return plugin(({ addBase, addUtilities }) => {\n const css = mapKeys(utilities, (name) => `${VAR_PREFIX}${name}`)\n if (selectorOrMediaQuery.startsWith('@media')) {\n addBase({\n [selectorOrMediaQuery]: {\n ':root': css,\n },\n })\n } else {\n addBase({\n [selectorOrMediaQuery]: css,\n })\n }\n\n addUtilities(classRules, {\n // @ts-expect-error FIXME\n variants: ['responsive'],\n })\n })\n}\n\nconst DIRECTIONS = {\n 'to top': 'top',\n 'to bottom': 'bottom',\n 'to left': 'left',\n 'to right': 'right',\n} as const\n\n/**\n * こういう感じのやつ。この時点では `--tailwind-gradient-` のような CSS 変数名になってない\n *\n * ```js\n * {\n * 'hoge1': 'linear-gradient(to top, ...)',\n * ...\n * }\n * ```\n */\ntype Utilities = Record<string, LinearGradient>\n\ntype LinearGradient = `linear-gradient(${string})`\n\nexport function getUtilities(\n gradients: Record<string, GradientMaterial>,\n effect: MergedEffect,\n): Utilities {\n const effects = Object.entries(effect)\n const directions = Object.entries(DIRECTIONS) as [\n GradientDirection,\n Values<typeof DIRECTIONS>,\n ][]\n\n return flatMapObject(gradients, (name, colors) =>\n directions.flatMap(([direction, className]) => {\n const toLinearGradient = (colors: GradientMaterial) => {\n const style = gradient(direction)(colors)\n\n if (!('backgroundImage' in style)) {\n throw new Error(\n `Could not generate linear-gradient() from ${name} ${direction} ${className}`,\n )\n }\n\n // 本当は backgroundColor も同時に生成されるんだけど、使うにはそれ用の CSS 変数も一緒に作らないといけない\n // とりあえず background-image だけで動くのでこっちだけを利用する\n return style.backgroundImage as LinearGradient\n }\n\n return [\n // こういう感じのやつ\n // { 'hoge1': 'linear-gradient(to top, ...)' }\n [createUtilityName(name, className), toLinearGradient(colors)],\n\n // こういう感じのやつ\n // { 'hoge1--hover': 'linear-gradient(to top, ...)' }\n ...effects.map<[string, LinearGradient]>(([effectName, effect]) => [\n createUtilityName(name, className, effectName),\n toLinearGradient(applyEffectToGradient(effect)(colors)),\n ]),\n ]\n }),\n )\n}\n\nfunction createUtilityName(\n gradientName: string,\n direction: Values<typeof DIRECTIONS>,\n suffix = '',\n) {\n return [camelToKebab(gradientName), direction, suffix]\n .filter(Boolean)\n .join('-')\n}\n","import plugin from 'tailwindcss/plugin.js'\nimport { TypographyDescriptor, TYPOGRAPHY_SIZE } from '@charcoal-ui/foundation'\nimport { halfLeading, mapObject, px } from '@charcoal-ui/utils'\n\nconst leadingCancel = {\n display: 'block',\n width: 0,\n height: 0,\n content: '\"\"',\n}\n\nconst typographyStyle = (style: TypographyDescriptor) => {\n const margin = -halfLeading(style)\n\n return {\n 'font-size': px(style.fontSize),\n 'line-height': px(style.lineHeight),\n\n /**\n * cancel leading\n *\n * @see https://yuyakinoshita.com/blog/2020/01/20/line-height-crop/\n */\n '&::before': {\n ...leadingCancel,\n marginTop: px(margin),\n },\n '&::after': {\n ...leadingCancel,\n marginBottom: px(margin),\n },\n }\n}\n\nconst typographyPlugin = plugin(({ addUtilities }) => {\n const typographyClasses = mapObject(TYPOGRAPHY_SIZE, (fontSize, style) => [\n `.typography-${fontSize}`,\n typographyStyle(style),\n ])\n\n addUtilities(\n {\n ...typographyClasses,\n '.preserve-half-leading': {\n '&::before': {\n content: 'none',\n },\n '&::after': {\n content: 'none',\n },\n },\n },\n {\n // @ts-expect-error FIXME\n variants: ['responsive'],\n },\n )\n})\n\nexport default typographyPlugin\n","import light from '@charcoal-ui/theme/unstable-tokens/css-variables.json' with { type: 'json' }\nimport type { Config } from 'tailwindcss'\nimport {\n flattenKey as flattenKeys,\n flattenKeyWithoutDefault,\n mapDefaultKey as mapDefaultKeys,\n} from './util'\n\nexport function unstable_createTailwindConfigTokenV2(): Omit<\n Config,\n 'content'\n> {\n const fontSize = Object.fromEntries(\n Object.entries(light.text['font-size']).flatMap(([k, v]) => {\n // text.fontSize.paragraph + text.lineHeight.paragraph -> text-paragraph\n if (typeof v === 'string') {\n return [\n [\n k,\n [\n v,\n // @ts-expect-error k is keyof line-height\n { lineHeight: light.text['line-height'][k] },\n ],\n ],\n ]\n }\n\n // text.fontSize.heading.s + text.lineHeight.heading.s -> text-heading-s\n return Object.entries(v as Record<string, string>).map(([kk, vv]) => {\n return [\n [k, kk].join('-'),\n [\n vv,\n // @ts-expect-error k is keyof line-height\n { lineHeight: light.text['line-height'][k][kk] },\n ],\n ]\n })\n }),\n ) as NonNullable<Config['theme']>['fontSize']\n\n // space.target.s -> p-target-s\n // space.gap.gapButtons -> p-gap-buttons\n const spacing = flattenKeys(light.space, (key) => !/(gap|padding)/.test(key))\n // color.container.default -> bg-container\n // color.container.hover -> bg-container-hover\n const colors = mapDefaultKeys(light.color)\n\n const config: Omit<Config, 'content'> = {\n darkMode: 'media',\n theme: {\n // borderWidth.m -> border-m\n // borderWidth.focus.1 -> border-focus-1\n borderWidth: flattenKeyWithoutDefault({\n 'width-ch': flattenKeys(light['border-width']), // unstable border width token\n }),\n borderRadius: light.radius,\n borderColor: flattenKeyWithoutDefault({ ch: flattenKeys(colors.border) }),\n\n colors,\n\n fontSize,\n fontWeight: flattenKeys({ ch: light.text['font-weight'] }),\n\n spacing,\n gap: spacing,\n width: light['paragraph-width'],\n },\n }\n\n return config\n}\n","import plugin from 'tailwindcss/plugin.js'\nimport iconsV2 from '@charcoal-ui/icon-files/v2/datauri'\nimport iconsV1 from '@charcoal-ui/icon-files/v1/datauri'\nimport { CSSRuleObject } from 'tailwindcss/types/config'\n\nconst transformClassNameV2 = (fileName: string) => {\n const [size, variant, name] = fileName.split('/')\n return [\n '.icon-v2',\n name.replaceAll('.', '-'),\n ...(variant === 'regular' ? [] : [variant]),\n ...(size === '24' ? [] : [size]),\n ]\n .join('-')\n .toLowerCase()\n}\n\nconst transformClassNameV1 = (fileName: string) => {\n const [size, name] = fileName.split('/')\n return [\n '.icon-v1',\n name.replaceAll('.', '-'),\n ...(size === '24' ? [] : [size]),\n ]\n .join('-')\n .toLowerCase()\n}\n\nexport const createIconUtilities = ({\n v2 = false,\n}: {\n v2?: boolean\n}): {\n [key: string]: CSSRuleObject\n} => {\n const newUtilities: { [key: string]: CSSRuleObject } = {}\n const icons = v2 ? iconsV2 : iconsV1\n for (const [fileName, { uri, isSetCurrentcolor }] of Object.entries(icons)) {\n const className = v2\n ? transformClassNameV2(fileName)\n : transformClassNameV1(fileName)\n\n newUtilities[className] = {\n display: 'inline-block',\n width: '1em',\n height: '1em',\n maskImage: `url(${uri})`,\n maskSize: '100% 100%',\n background: isSetCurrentcolor ? 'currentColor' : null,\n aspectRatio: '1/1',\n }\n }\n return newUtilities\n}\n\nexport const charcoalIconsV2: ReturnType<typeof plugin> = plugin(\n ({ addUtilities }) => {\n addUtilities(createIconUtilities({ v2: true }))\n },\n)\n\nexport const charcoalIconsV1: ReturnType<typeof plugin> = plugin(\n ({ addUtilities }) => {\n addUtilities(createIconUtilities({ v2: false }))\n },\n)\n","import { GRID_COUNT, mergeEffect } from './foundation'\n\nimport type { Config } from 'tailwindcss'\nimport { TailwindVersion, ThemeMap } from './types'\n\nimport {\n assertAllThemeHaveSameKeys,\n getDefaultKeyName,\n getVariantOption,\n} from './util'\nimport {\n COLUMN_UNIT,\n GUTTER_UNIT,\n SPACING,\n BORDER_RADIUS,\n} from '@charcoal-ui/foundation'\nimport { light } from '@charcoal-ui/theme'\nimport { mapObject, px } from '@charcoal-ui/utils'\nimport { colorsToTailwindConfig } from './colors/toTailwindConfig'\n\nimport cssVariableColorPlugin from './colors/plugin'\nimport cssVariableGradientPlugin from './gradient/plugin'\nimport typographyPlugin from './typography/plugin'\nimport { unstable_createTailwindConfigTokenV2 } from './tokenV2'\nimport { charcoalIconsV1, charcoalIconsV2 } from './icons'\nexport { unstable_createTailwindConfigTokenV2 }\n\ninterface Options {\n version?: TailwindVersion\n theme?: ThemeMap\n cssVariablesV1?: boolean\n unstableTokenV2?: boolean\n iconsV2?: boolean\n iconsV1?: boolean\n}\n\nexport function createTailwindConfig({\n theme = { ':root': light },\n version = 'v3',\n cssVariablesV1 = true,\n unstableTokenV2 = false,\n iconsV2 = false,\n iconsV1 = false,\n}: Options): Omit<Config, 'content'> {\n assertAllThemeHaveSameKeys(theme)\n\n const defaultTheme = theme[':root']\n const effects = mergeEffect(defaultTheme)\n const DEFAULT = getDefaultKeyName(version)\n\n const {\n borderWidth: borderWidthV2,\n borderRadius: borderRadiusV2,\n borderColor: borderColorV2,\n colors: colorsV2,\n fontSize: fontSizeV2,\n fontWeight: fontWeightV2,\n spacing: spacingV2,\n gap: gapV2,\n width: widthV2,\n }: Partial<NonNullable<Config['theme']>> = unstableTokenV2\n ? unstable_createTailwindConfigTokenV2().theme\n : {}\n\n return {\n theme: {\n screens: {\n screen1: px(0),\n screen2: px(defaultTheme.breakpoint.screen1),\n screen3: px(defaultTheme.breakpoint.screen2),\n screen4: px(defaultTheme.breakpoint.screen3),\n screen5: px(defaultTheme.breakpoint.screen4),\n },\n colors: {\n // @deprecated\n black: '#000',\n\n // @deprecated\n white: '#fff',\n\n transparent: 'transparent',\n current: 'currentColor',\n ...colorsToTailwindConfig(version, defaultTheme.color, effects),\n ...colorsV2,\n },\n borderColor: {\n ...colorsToTailwindConfig(\n version,\n mapObject(defaultTheme.border, (k, v) => [k, v.color]),\n effects,\n ),\n ...borderColorV2,\n },\n spacing: {\n ...mapObject(\n SPACING,\n (name, pixel) => [name, px(pixel)] as [string, string],\n ),\n ...spacingV2,\n },\n width: {\n full: '100%',\n screen: '100vw',\n auto: 'auto',\n fit: 'fit-content',\n\n /**\n * generates classes like \"w-col-span-1\"\n */\n ...Array.from({ length: GRID_COUNT }, (_, i) => i + 1).reduce(\n (styles, i) => ({\n ...styles,\n [`col-span-${i}`]: px(COLUMN_UNIT * i + GUTTER_UNIT * (i - 1)),\n }),\n {},\n ),\n\n /**\n * generates classes like \"w-1/12\" (except for 12/12, which just equals to w-full)\n */\n ...Array.from({ length: GRID_COUNT - 1 }, (_, i) => i + 1).reduce(\n (styles, i) => ({\n ...styles,\n [`${i}/${GRID_COUNT}`]: `${(i / GRID_COUNT) * 100}%`,\n }),\n {},\n ),\n ...widthV2,\n },\n gap: {\n fixed: px(GUTTER_UNIT),\n ...gapV2,\n },\n borderRadius: {\n ...mapObject(\n BORDER_RADIUS,\n (name, value) => [name, px(value)] as [string, string],\n ),\n ...borderRadiusV2,\n },\n transitionDuration: {\n [DEFAULT]: '0.2s',\n },\n ...(unstableTokenV2\n ? {\n extend: {\n borderWidth: borderWidthV2,\n fontWeight: fontWeightV2,\n fontSize: fontSizeV2,\n },\n }\n : {}),\n },\n\n ...getVariantOption(version),\n\n corePlugins: {\n lineHeight: false,\n },\n plugins: [\n typographyPlugin,\n cssVariableColorPlugin(theme, Boolean(cssVariablesV1)),\n\n ...Object.entries(theme).map(([selectorOrMediaQuery, theme]) =>\n cssVariableGradientPlugin(\n theme.gradientColor,\n mergeEffect(theme),\n selectorOrMediaQuery,\n ),\n ),\n ...(iconsV2 ? [charcoalIconsV2] : []),\n ...(iconsV1 ? [charcoalIconsV1] : []),\n ],\n }\n}\n\nexport const config: Omit<Config, 'content'> = createTailwindConfig({})\n\nexport default config\n"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -81,6 +81,17 @@ const flattenKey = (o, join) => {
|
|
|
81
81
|
});
|
|
82
82
|
}));
|
|
83
83
|
};
|
|
84
|
+
/**
|
|
85
|
+
* `DEFAULT` はkey名に結合しない
|
|
86
|
+
*/
|
|
87
|
+
const flattenKeyWithoutDefault = (o, join) => {
|
|
88
|
+
return Object.fromEntries(Object.entries(o).flatMap(([key, v]) => {
|
|
89
|
+
if (typeof v === "string") return [[key, v]];
|
|
90
|
+
return Object.entries(v).map(([kk, vv]) => {
|
|
91
|
+
return [kk === "DEFAULT" || kk === "default" ? key : join?.(key) ?? true ? [key, kk].join("-") : kk, vv];
|
|
92
|
+
});
|
|
93
|
+
}));
|
|
94
|
+
};
|
|
84
95
|
|
|
85
96
|
//#endregion
|
|
86
97
|
//#region src/colors/utils.ts
|
|
@@ -283,12 +294,12 @@ function unstable_createTailwindConfigTokenV2() {
|
|
|
283
294
|
return {
|
|
284
295
|
darkMode: "media",
|
|
285
296
|
theme: {
|
|
286
|
-
borderWidth: flattenKey(light$1["border-width"]),
|
|
297
|
+
borderWidth: flattenKeyWithoutDefault({ "width-ch": flattenKey(light$1["border-width"]) }),
|
|
287
298
|
borderRadius: light$1.radius,
|
|
288
|
-
borderColor: flattenKey(colors.border),
|
|
299
|
+
borderColor: flattenKeyWithoutDefault({ ch: flattenKey(colors.border) }),
|
|
289
300
|
colors,
|
|
290
301
|
fontSize,
|
|
291
|
-
fontWeight: light$1.text["font-weight"],
|
|
302
|
+
fontWeight: flattenKey({ ch: light$1.text["font-weight"] }),
|
|
292
303
|
spacing,
|
|
293
304
|
gap: spacing,
|
|
294
305
|
width: light$1["paragraph-width"]
|
|
@@ -396,11 +407,11 @@ function createTailwindConfig({ theme = { ":root": light }, version = "v3", cssV
|
|
|
396
407
|
...borderRadiusV2
|
|
397
408
|
},
|
|
398
409
|
transitionDuration: { [DEFAULT]: "0.2s" },
|
|
399
|
-
...unstableTokenV2 ? {
|
|
410
|
+
...unstableTokenV2 ? { extend: {
|
|
400
411
|
borderWidth: borderWidthV2,
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
} : {}
|
|
412
|
+
fontWeight: fontWeightV2,
|
|
413
|
+
fontSize: fontSizeV2
|
|
414
|
+
} } : {}
|
|
404
415
|
},
|
|
405
416
|
...getVariantOption(version),
|
|
406
417
|
corePlugins: { lineHeight: false },
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["varName: keyof CSSVariables","cssVariableColorPlugin","colors","effect","light","flattenKeys","mapDefaultKeys","newUtilities: { [key: string]: CSSRuleObject }","charcoalIconsV2: ReturnType<typeof plugin>","charcoalIconsV1: ReturnType<typeof plugin>","typographyPlugin","theme","cssVariableGradientPlugin","iconsV2","iconsV1","config: Omit<Config, 'content'>"],"sources":["../src/foundation.ts","../src/util.ts","../src/colors/utils.ts","../src/colors/toTailwindConfig.ts","../src/colors/pluginTokenV1.ts","../src/colors/plugin.ts","../src/gradient/plugin.ts","../src/typography/plugin.ts","../src/tokenV2.ts","../src/icons.ts","../src/index.ts"],"sourcesContent":["import { Effect } from '@charcoal-ui/foundation'\nimport { CharcoalTheme as Theme } from '@charcoal-ui/theme'\n\nexport const GRID_COUNT = 12\n\nexport function mergeEffect({\n elementEffect,\n effect,\n}: Pick<Theme, 'elementEffect' | 'effect'>): MergedEffect {\n return {\n ...elementEffect,\n ...effect,\n outline: {\n type: 'opacity',\n opacity: 0.32,\n } as Effect,\n }\n}\n\nexport type MergedEffect = Record<string, Effect>\n","import type { Config } from 'tailwindcss'\nimport { TailwindVersion, ThemeMap } from './types'\n\n/**\n * the key \"default\" or \"DEFAULT\" has special meaning and dropped from class name\n *\n * @see https://tailwindcss.com/docs/upgrading-to-v2#update-default-theme-keys-to-default\n */\nexport function getDefaultKeyName(version: TailwindVersion) {\n switch (version) {\n case 'v3':\n case 'v2': {\n return 'DEFAULT'\n }\n\n case 'v1': {\n return 'default'\n }\n }\n}\n\nexport function getVariantOption(version: TailwindVersion): Partial<Config> {\n switch (version) {\n case 'v3': {\n // v3 以上では variants は variantOrders に改名された\n // そしてこれは上書きをしたいモチベがない\n // https://v2.tailwindcss.com/docs/configuration#variant-order\n return {}\n }\n\n case 'v2':\n case 'v1': {\n return { variants: {} }\n }\n }\n}\n\nfunction setEquals<T>(a: Set<T>, b: Set<T>) {\n return a.size === b.size && Array.from(a).every((value) => b.has(value))\n}\n\nexport function assertAllThemeHaveSameKeys(themeMap: ThemeMap): void {\n const defaultTheme = themeMap[':root']\n const expectedColorKeys = new Set(Object.keys(defaultTheme.color))\n const expectedEffectKeys = new Set(Object.keys(defaultTheme.effect))\n\n for (const [name, theme] of Object.entries(themeMap)) {\n const colorKeys = new Set(Object.keys(theme.color))\n const effectKeys = new Set(Object.keys(theme.effect))\n\n if (!setEquals(colorKeys, expectedColorKeys)) {\n throw new Error(`:root and ${name} does not have same colors.\n\nExpected( :root ): ${JSON.stringify(Array.from(expectedColorKeys))}\nGot: ${JSON.stringify(Array.from(colorKeys))}`)\n }\n\n if (!setEquals(effectKeys, expectedEffectKeys)) {\n throw new Error(`:root and ${name} does not have same effects.\n\nExpected( :root ): ${JSON.stringify(Array.from(expectedEffectKeys))}\nGot: ${JSON.stringify(Array.from(effectKeys))}`)\n }\n }\n}\n\nexport function camelToKebab(value: string) {\n return value\n .replace(/(?<small>[\\da-z]|(?=[A-Z]))(?<capital>[A-Z])/gu, '$1-$2')\n .toLowerCase()\n}\n\nexport const mapDefaultKey = <O extends object>(o: O) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(JSON.stringify(o), function reviver(k: string, v: string) {\n if (k === 'default') {\n const DefaultKey = getDefaultKeyName('v3')\n this[DefaultKey] = v\n return undefined\n }\n return v\n })\n}\n\nexport const flattenKey = <O extends object>(\n o: O,\n join?: (key: string) => boolean,\n) => {\n return Object.fromEntries(\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n Object.entries(o).flatMap(([key, v]) => {\n if (typeof v === 'string') return [[key, v]]\n return Object.entries(v as object).map(([kk, vv]) => {\n return [(join?.(key) ?? true) ? [key, kk].join('-') : kk, vv]\n })\n }),\n )\n}\n","import { GradientMaterial, Material } from '@charcoal-ui/foundation'\n\nexport const COLOR_PREFIX = '--tailwind-color-'\n\nexport function isSingleColor(color: AnyColor): color is Material {\n return typeof color === 'string'\n}\n\ntype AnyColor = Material | GradientMaterial\n\nexport type AnyColorTheme = Record<string, AnyColor>\n","import { Material } from '@charcoal-ui/foundation'\nimport { applyEffect, filterObject, mapObject } from '@charcoal-ui/utils'\nimport type { Config } from 'tailwindcss'\nimport { MergedEffect } from '../foundation'\n\nimport { TailwindVersion } from '../types'\nimport { getDefaultKeyName } from '../util'\n\nimport { AnyColorTheme, COLOR_PREFIX, isSingleColor } from './utils'\n\nexport function colorsToTailwindConfig(\n version: TailwindVersion,\n colors: AnyColorTheme,\n effects: MergedEffect,\n): NonNullable<Config['theme']>['colors'] {\n const targetColors = filterObject(colors, isSingleColor)\n const DEFAULT = getDefaultKeyName(version)\n\n /**\n * こういう感じのを吐き出す\n *\n * ```js\n * {\n * DEFAULT: 'var(--tailwind-color-hoge1, #fff)',\n * hover: 'var(--tailwind-color-hoge1--hover, #eee)',\n * press: 'var(--tailwind-color-hoge1--press, #ddd)',\n * disabled: 'var(--tailwind-color-hoge1--disabled, #eee)',\n * }\n * ```\n */\n function colorsForAllEffects(name: string, color: Material) {\n const varName = `${COLOR_PREFIX}${name}`\n\n return {\n [DEFAULT]: `var(${varName}, ${color})`,\n\n ...mapObject(effects, (effectName, effect) => [\n effectName,\n `var(${varName}--${effectName}, ${applyEffect(color, effect)})`,\n ]),\n }\n }\n\n return mapObject(targetColors, (name, color) => [\n name,\n colorsForAllEffects(name, color),\n ])\n}\n","import {\n applyEffect,\n customPropertyToken,\n filterObject,\n flatMapObject,\n mapObject,\n} from '@charcoal-ui/utils'\nimport { ThemeMap } from '../types'\nimport {\n CharcoalAbstractTheme,\n EffectType,\n Key,\n CharcoalTheme as Theme,\n} from '@charcoal-ui/theme'\n\nexport function defineCssVariablesV1(themeMap: ThemeMap) {\n // @ts-expect-error FIXME\n return mapObject(themeMap, (key, theme) => {\n if (key.startsWith('@media')) {\n return [\n key,\n {\n ':root': defineColorVariableCSS(theme),\n },\n ]\n } else {\n return [key, defineColorVariableCSS(theme)]\n }\n })\n}\n\nexport const defineColorVariableCSS = (theme: Theme) => {\n const borders = mapObject(theme.border, (name, { color }) => [\n // REVIEW: もしtheme.colorにたまたまborder-〇〇で始まる色名がいたら被りうる\n withPrefixes('border', name),\n color,\n ])\n\n const colors = defineThemeVariables({ ...theme.color, ...borders })({ theme })\n return colors\n}\n\n/**\n * Check whether a value is non-null and non-undefined\n *\n * @param value nullable\n */\nexport const isPresent = <T>(value: T): value is NonNullable<T> => value != null\n\n/**\n * 子孫要素で使われるカラーテーマの CSS Variables を上書きする\n *\n * @params colorParams - 上書きしたい色の定義( `theme.color` の一部だけ書けば良い )\n * @params effectParams - effect の定義を上書きしたい場合は渡す(必須ではない)\n *\n * @example\n * ```tsx\n * const LocalTheme = styled.div`\n * ${defineThemeVariables({ text1: '#ff0000' })}\n * // `text1` is now defined as red\n * ${theme((o) => [o.font.text1])}\n * `\n * ```\n */\nexport function defineThemeVariables(\n colorParams: Partial<CharcoalAbstractTheme['color']>,\n effectParams?: Partial<CharcoalAbstractTheme['effect']>,\n) {\n return function toCssObject(props: {\n theme: Pick<CharcoalAbstractTheme, 'effect'>\n }) {\n const colors = filterObject(colorParams, isPresent)\n\n // flatMapObject の中で毎回 Object.entries を呼ぶのは無駄なので外で呼ぶ\n const effects = Object.entries({\n ...props.theme.effect,\n ...effectParams,\n })\n\n return flatMapObject(colors, (colorKey, color) => [\n [customPropertyToken(colorKey), color],\n\n ...effects.map<[string, string]>(([effectKey, effect]) => [\n customPropertyToken(colorKey, [effectKey]),\n applyEffect(color, [effect]),\n ]),\n ])\n }\n}\n\nexport function isSupportedEffect(effect: Key): effect is EffectType {\n return ['hover', 'press', 'disabled'].includes(effect as string)\n}\n\nexport const variable = (value: string) => `var(${value})`\n\nexport function withPrefixes(...parts: string[]) {\n return parts.join('-')\n}\n","import { Material } from '@charcoal-ui/foundation'\nimport { CharcoalTheme as Theme } from '@charcoal-ui/theme'\nimport {\n applyEffect,\n filterObject,\n flatMapObject,\n mapObject,\n} from '@charcoal-ui/utils'\nimport plugin from 'tailwindcss/plugin.js'\nimport { mergeEffect } from '../foundation'\nimport { CSSVariableName, CSSVariables, Definition, ThemeMap } from '../types'\nimport { COLOR_PREFIX, isSingleColor } from './utils'\nimport { defineCssVariablesV1 } from './pluginTokenV1'\n\n/**\n * --tailwind-* また --charcoal-* を生成する\n * TODO: --tailwindをやめる\n */\nexport default function cssVariableColorPlugin(\n themeMap: ThemeMap,\n cssVariablesV1: boolean,\n): ReturnType<typeof plugin> {\n // `:root` 以外のケースで各 CSS Variable がどういう値を取るかを定義する\n const { ':root': _defaultTheme, ...otherThemes } = themeMap\n const definitions = defineCssVariables(otherThemes)\n\n return plugin(({ addBase }) => {\n addBase(definitions)\n\n // styledのTokenInjector移植(background処理除く)\n if (cssVariablesV1) {\n const cssVariablesV1 = defineCssVariablesV1(themeMap)\n // @ts-expect-error FIXME\n addBase(cssVariablesV1)\n }\n })\n}\n\nexport function defineCssVariables(themes: Omit<ThemeMap, ':root'>) {\n return mapObject(themes, (selectorOrMediaQuery, theme) => {\n const css = toCssVariables(theme)\n\n if (selectorOrMediaQuery.startsWith('@media')) {\n return [\n selectorOrMediaQuery,\n {\n ':root': css,\n },\n ]\n } else {\n return [selectorOrMediaQuery, css]\n }\n }) as Definition\n}\n\nfunction toCssVariables(theme: Theme): CSSVariables {\n const colors = filterObject(theme.color, isSingleColor)\n const effects = Object.entries(mergeEffect(theme))\n\n return flatMapObject(colors, (name, color) => {\n const varName: keyof CSSVariables = `${COLOR_PREFIX}${name}`\n\n return [\n [varName, color],\n\n ...effects.map<[CSSVariableName, Material]>(([type, effect]) => [\n `${varName}--${type}`,\n applyEffect(color, effect),\n ]),\n ]\n })\n}\n","import plugin from 'tailwindcss/plugin.js'\nimport { camelToKebab } from '../util'\nimport { GradientMaterial } from '@charcoal-ui/foundation'\nimport { ThemeColorGradient } from '@charcoal-ui/theme'\nimport {\n applyEffectToGradient,\n flatMapObject,\n gradient,\n GradientDirection,\n mapKeys,\n mapObject,\n} from '@charcoal-ui/utils'\nimport { Values } from '../types'\nimport { MergedEffect } from '../foundation'\n\nconst VAR_PREFIX = '--tailwind-gradient-'\n\nexport default function cssVariableColorPlugin(\n gradients: ThemeColorGradient,\n effects: MergedEffect,\n selectorOrMediaQuery: string,\n) {\n const utilities = getUtilities(gradients, effects)\n\n const classRules = mapObject(utilities, (name) => [\n `.bg-${name}`,\n { backgroundImage: `var(${VAR_PREFIX}${name})` },\n ])\n\n return plugin(({ addBase, addUtilities }) => {\n const css = mapKeys(utilities, (name) => `${VAR_PREFIX}${name}`)\n if (selectorOrMediaQuery.startsWith('@media')) {\n addBase({\n [selectorOrMediaQuery]: {\n ':root': css,\n },\n })\n } else {\n addBase({\n [selectorOrMediaQuery]: css,\n })\n }\n\n addUtilities(classRules, {\n // @ts-expect-error FIXME\n variants: ['responsive'],\n })\n })\n}\n\nconst DIRECTIONS = {\n 'to top': 'top',\n 'to bottom': 'bottom',\n 'to left': 'left',\n 'to right': 'right',\n} as const\n\n/**\n * こういう感じのやつ。この時点では `--tailwind-gradient-` のような CSS 変数名になってない\n *\n * ```js\n * {\n * 'hoge1': 'linear-gradient(to top, ...)',\n * ...\n * }\n * ```\n */\ntype Utilities = Record<string, LinearGradient>\n\ntype LinearGradient = `linear-gradient(${string})`\n\nexport function getUtilities(\n gradients: Record<string, GradientMaterial>,\n effect: MergedEffect,\n): Utilities {\n const effects = Object.entries(effect)\n const directions = Object.entries(DIRECTIONS) as [\n GradientDirection,\n Values<typeof DIRECTIONS>,\n ][]\n\n return flatMapObject(gradients, (name, colors) =>\n directions.flatMap(([direction, className]) => {\n const toLinearGradient = (colors: GradientMaterial) => {\n const style = gradient(direction)(colors)\n\n if (!('backgroundImage' in style)) {\n throw new Error(\n `Could not generate linear-gradient() from ${name} ${direction} ${className}`,\n )\n }\n\n // 本当は backgroundColor も同時に生成されるんだけど、使うにはそれ用の CSS 変数も一緒に作らないといけない\n // とりあえず background-image だけで動くのでこっちだけを利用する\n return style.backgroundImage as LinearGradient\n }\n\n return [\n // こういう感じのやつ\n // { 'hoge1': 'linear-gradient(to top, ...)' }\n [createUtilityName(name, className), toLinearGradient(colors)],\n\n // こういう感じのやつ\n // { 'hoge1--hover': 'linear-gradient(to top, ...)' }\n ...effects.map<[string, LinearGradient]>(([effectName, effect]) => [\n createUtilityName(name, className, effectName),\n toLinearGradient(applyEffectToGradient(effect)(colors)),\n ]),\n ]\n }),\n )\n}\n\nfunction createUtilityName(\n gradientName: string,\n direction: Values<typeof DIRECTIONS>,\n suffix = '',\n) {\n return [camelToKebab(gradientName), direction, suffix]\n .filter(Boolean)\n .join('-')\n}\n","import plugin from 'tailwindcss/plugin.js'\nimport { TypographyDescriptor, TYPOGRAPHY_SIZE } from '@charcoal-ui/foundation'\nimport { halfLeading, mapObject, px } from '@charcoal-ui/utils'\n\nconst leadingCancel = {\n display: 'block',\n width: 0,\n height: 0,\n content: '\"\"',\n}\n\nconst typographyStyle = (style: TypographyDescriptor) => {\n const margin = -halfLeading(style)\n\n return {\n 'font-size': px(style.fontSize),\n 'line-height': px(style.lineHeight),\n\n /**\n * cancel leading\n *\n * @see https://yuyakinoshita.com/blog/2020/01/20/line-height-crop/\n */\n '&::before': {\n ...leadingCancel,\n marginTop: px(margin),\n },\n '&::after': {\n ...leadingCancel,\n marginBottom: px(margin),\n },\n }\n}\n\nconst typographyPlugin = plugin(({ addUtilities }) => {\n const typographyClasses = mapObject(TYPOGRAPHY_SIZE, (fontSize, style) => [\n `.typography-${fontSize}`,\n typographyStyle(style),\n ])\n\n addUtilities(\n {\n ...typographyClasses,\n '.preserve-half-leading': {\n '&::before': {\n content: 'none',\n },\n '&::after': {\n content: 'none',\n },\n },\n },\n {\n // @ts-expect-error FIXME\n variants: ['responsive'],\n },\n )\n})\n\nexport default typographyPlugin\n","import light from '@charcoal-ui/theme/unstable-tokens/css-variables.json' with { type: 'json' }\nimport type { Config } from 'tailwindcss'\nimport {\n flattenKey as flattenKeys,\n mapDefaultKey as mapDefaultKeys,\n} from './util'\n\nexport function unstable_createTailwindConfigTokenV2(): Omit<\n Config,\n 'content'\n> {\n const fontSize = Object.fromEntries(\n Object.entries(light.text['font-size']).flatMap(([k, v]) => {\n // text.fontSize.paragraph + text.lineHeight.paragraph -> text-paragraph\n if (typeof v === 'string') {\n return [\n [\n k,\n [\n v,\n // @ts-expect-error k is keyof line-height\n { lineHeight: light.text['line-height'][k] },\n ],\n ],\n ]\n }\n\n // text.fontSize.heading.s + text.lineHeight.heading.s -> text-heading-s\n return Object.entries(v as Record<string, string>).map(([kk, vv]) => {\n return [\n [k, kk].join('-'),\n [\n vv,\n // @ts-expect-error k is keyof line-height\n { lineHeight: light.text['line-height'][k][kk] },\n ],\n ]\n })\n }),\n ) as NonNullable<Config['theme']>['fontSize']\n\n // space.target.s -> p-target-s\n // space.gap.gapButtons -> p-gap-buttons\n const spacing = flattenKeys(light.space, (key) => !/(gap|padding)/.test(key))\n // color.container.default -> bg-container\n // color.container.hover -> bg-container-hover\n const colors = mapDefaultKeys(light.color)\n\n const config: Omit<Config, 'content'> = {\n darkMode: 'media',\n theme: {\n // borderWidth.m -> border-m\n // borderWidth.focus.1 -> border-focus-1\n borderWidth: flattenKeys(light['border-width']),\n borderRadius: light.radius,\n borderColor: flattenKeys(colors.border),\n\n colors,\n\n fontSize,\n fontWeight: light.text['font-weight'],\n\n spacing,\n gap: spacing,\n width: light['paragraph-width'],\n },\n }\n\n return config\n}\n","import plugin from 'tailwindcss/plugin.js'\nimport iconsV2 from '@charcoal-ui/icon-files/v2/datauri'\nimport iconsV1 from '@charcoal-ui/icon-files/v1/datauri'\nimport { CSSRuleObject } from 'tailwindcss/types/config'\n\nconst transformClassNameV2 = (fileName: string) => {\n const [size, variant, name] = fileName.split('/')\n return [\n '.icon-v2',\n name.replaceAll('.', '-'),\n ...(variant === 'regular' ? [] : [variant]),\n ...(size === '24' ? [] : [size]),\n ]\n .join('-')\n .toLowerCase()\n}\n\nconst transformClassNameV1 = (fileName: string) => {\n const [size, name] = fileName.split('/')\n return [\n '.icon-v1',\n name.replaceAll('.', '-'),\n ...(size === '24' ? [] : [size]),\n ]\n .join('-')\n .toLowerCase()\n}\n\nexport const createIconUtilities = ({\n v2 = false,\n}: {\n v2?: boolean\n}): {\n [key: string]: CSSRuleObject\n} => {\n const newUtilities: { [key: string]: CSSRuleObject } = {}\n const icons = v2 ? iconsV2 : iconsV1\n for (const [fileName, { uri, isSetCurrentcolor }] of Object.entries(icons)) {\n const className = v2\n ? transformClassNameV2(fileName)\n : transformClassNameV1(fileName)\n\n newUtilities[className] = {\n display: 'inline-block',\n width: '1em',\n height: '1em',\n maskImage: `url(${uri})`,\n maskSize: '100% 100%',\n background: isSetCurrentcolor ? 'currentColor' : null,\n aspectRatio: '1/1',\n }\n }\n return newUtilities\n}\n\nexport const charcoalIconsV2: ReturnType<typeof plugin> = plugin(\n ({ addUtilities }) => {\n addUtilities(createIconUtilities({ v2: true }))\n },\n)\n\nexport const charcoalIconsV1: ReturnType<typeof plugin> = plugin(\n ({ addUtilities }) => {\n addUtilities(createIconUtilities({ v2: false }))\n },\n)\n","import { GRID_COUNT, mergeEffect } from './foundation'\n\nimport type { Config } from 'tailwindcss'\nimport { TailwindVersion, ThemeMap } from './types'\n\nimport {\n assertAllThemeHaveSameKeys,\n getDefaultKeyName,\n getVariantOption,\n} from './util'\nimport {\n COLUMN_UNIT,\n GUTTER_UNIT,\n SPACING,\n BORDER_RADIUS,\n} from '@charcoal-ui/foundation'\nimport { light } from '@charcoal-ui/theme'\nimport { mapObject, px } from '@charcoal-ui/utils'\nimport { colorsToTailwindConfig } from './colors/toTailwindConfig'\n\nimport cssVariableColorPlugin from './colors/plugin'\nimport cssVariableGradientPlugin from './gradient/plugin'\nimport typographyPlugin from './typography/plugin'\nimport { unstable_createTailwindConfigTokenV2 } from './tokenV2'\nimport { charcoalIconsV1, charcoalIconsV2 } from './icons'\nexport { unstable_createTailwindConfigTokenV2 }\n\ninterface Options {\n version?: TailwindVersion\n theme?: ThemeMap\n cssVariablesV1?: boolean\n unstableTokenV2?: boolean\n iconsV2?: boolean\n iconsV1?: boolean\n}\n\nexport function createTailwindConfig({\n theme = { ':root': light },\n version = 'v3',\n cssVariablesV1 = true,\n unstableTokenV2 = false,\n iconsV2 = false,\n iconsV1 = false,\n}: Options): Omit<Config, 'content'> {\n assertAllThemeHaveSameKeys(theme)\n\n const defaultTheme = theme[':root']\n const effects = mergeEffect(defaultTheme)\n const DEFAULT = getDefaultKeyName(version)\n\n const {\n borderWidth: borderWidthV2,\n borderRadius: borderRadiusV2,\n borderColor: borderColorV2,\n colors: colorsV2,\n fontSize: fontSizeV2,\n fontWeight: fontWeightV2,\n spacing: spacingV2,\n gap: gapV2,\n width: widthV2,\n }: Partial<NonNullable<Config['theme']>> = unstableTokenV2\n ? unstable_createTailwindConfigTokenV2().theme\n : {}\n\n return {\n theme: {\n screens: {\n screen1: px(0),\n screen2: px(defaultTheme.breakpoint.screen1),\n screen3: px(defaultTheme.breakpoint.screen2),\n screen4: px(defaultTheme.breakpoint.screen3),\n screen5: px(defaultTheme.breakpoint.screen4),\n },\n colors: {\n // @deprecated\n black: '#000',\n\n // @deprecated\n white: '#fff',\n\n transparent: 'transparent',\n current: 'currentColor',\n ...colorsToTailwindConfig(version, defaultTheme.color, effects),\n ...colorsV2,\n },\n borderColor: {\n ...colorsToTailwindConfig(\n version,\n mapObject(defaultTheme.border, (k, v) => [k, v.color]),\n effects,\n ),\n ...borderColorV2,\n },\n spacing: {\n ...mapObject(\n SPACING,\n (name, pixel) => [name, px(pixel)] as [string, string],\n ),\n ...spacingV2,\n },\n width: {\n full: '100%',\n screen: '100vw',\n auto: 'auto',\n fit: 'fit-content',\n\n /**\n * generates classes like \"w-col-span-1\"\n */\n ...Array.from({ length: GRID_COUNT }, (_, i) => i + 1).reduce(\n (styles, i) => ({\n ...styles,\n [`col-span-${i}`]: px(COLUMN_UNIT * i + GUTTER_UNIT * (i - 1)),\n }),\n {},\n ),\n\n /**\n * generates classes like \"w-1/12\" (except for 12/12, which just equals to w-full)\n */\n ...Array.from({ length: GRID_COUNT - 1 }, (_, i) => i + 1).reduce(\n (styles, i) => ({\n ...styles,\n [`${i}/${GRID_COUNT}`]: `${(i / GRID_COUNT) * 100}%`,\n }),\n {},\n ),\n ...widthV2,\n },\n gap: {\n fixed: px(GUTTER_UNIT),\n ...gapV2,\n },\n borderRadius: {\n ...mapObject(\n BORDER_RADIUS,\n (name, value) => [name, px(value)] as [string, string],\n ),\n ...borderRadiusV2,\n },\n transitionDuration: {\n [DEFAULT]: '0.2s',\n },\n ...(unstableTokenV2\n ? {\n borderWidth: borderWidthV2,\n fontSize: fontSizeV2,\n fontWeight: fontWeightV2,\n }\n : {}),\n },\n\n ...getVariantOption(version),\n\n corePlugins: {\n lineHeight: false,\n },\n plugins: [\n typographyPlugin,\n cssVariableColorPlugin(theme, Boolean(cssVariablesV1)),\n\n ...Object.entries(theme).map(([selectorOrMediaQuery, theme]) =>\n cssVariableGradientPlugin(\n theme.gradientColor,\n mergeEffect(theme),\n selectorOrMediaQuery,\n ),\n ),\n ...(iconsV2 ? [charcoalIconsV2] : []),\n ...(iconsV1 ? [charcoalIconsV1] : []),\n ],\n }\n}\n\nexport const config: Omit<Config, 'content'> = createTailwindConfig({})\n\nexport default config\n"],"mappings":";;;;;;;;;AAGA,MAAa,aAAa;AAE1B,SAAgB,YAAY,EAC1B,eACA,UACwD;AACxD,QAAO;EACL,GAAG;EACH,GAAG;EACH,SAAS;GACP,MAAM;GACN,SAAS;GACV;EACF;;;;;;;;;;ACRH,SAAgB,kBAAkB,SAA0B;AAC1D,SAAQ,SAAR;EACE,KAAK;EACL,KAAK,KACH,QAAO;EAGT,KAAK,KACH,QAAO;;;AAKb,SAAgB,iBAAiB,SAA2C;AAC1E,SAAQ,SAAR;EACE,KAAK,KAIH,QAAO,EAAE;EAGX,KAAK;EACL,KAAK,KACH,QAAO,EAAE,UAAU,EAAE,EAAE;;;AAK7B,SAAS,UAAa,GAAW,GAAW;AAC1C,QAAO,EAAE,SAAS,EAAE,QAAQ,MAAM,KAAK,EAAE,CAAC,OAAO,UAAU,EAAE,IAAI,MAAM,CAAC;;AAG1E,SAAgB,2BAA2B,UAA0B;CACnE,MAAM,eAAe,SAAS;CAC9B,MAAM,oBAAoB,IAAI,IAAI,OAAO,KAAK,aAAa,MAAM,CAAC;CAClE,MAAM,qBAAqB,IAAI,IAAI,OAAO,KAAK,aAAa,OAAO,CAAC;AAEpE,MAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,SAAS,EAAE;EACpD,MAAM,YAAY,IAAI,IAAI,OAAO,KAAK,MAAM,MAAM,CAAC;EACnD,MAAM,aAAa,IAAI,IAAI,OAAO,KAAK,MAAM,OAAO,CAAC;AAErD,MAAI,CAAC,UAAU,WAAW,kBAAkB,CAC1C,OAAM,IAAI,MAAM,aAAa,KAAK;;qBAEnB,KAAK,UAAU,MAAM,KAAK,kBAAkB,CAAC,CAAC;OAC5D,KAAK,UAAU,MAAM,KAAK,UAAU,CAAC,GAAG;AAG3C,MAAI,CAAC,UAAU,YAAY,mBAAmB,CAC5C,OAAM,IAAI,MAAM,aAAa,KAAK;;qBAEnB,KAAK,UAAU,MAAM,KAAK,mBAAmB,CAAC,CAAC;OAC7D,KAAK,UAAU,MAAM,KAAK,WAAW,CAAC,GAAG;;;AAKhD,SAAgB,aAAa,OAAe;AAC1C,QAAO,MACJ,QAAQ,kDAAkD,QAAQ,CAClE,aAAa;;AAGlB,MAAa,iBAAmC,MAAS;AAEvD,QAAO,KAAK,MAAM,KAAK,UAAU,EAAE,EAAE,SAAS,QAAQ,GAAW,GAAW;AAC1E,MAAI,MAAM,WAAW;GACnB,MAAM,aAAa,kBAAkB,KAAK;AAC1C,QAAK,cAAc;AACnB;;AAEF,SAAO;GACP;;AAGJ,MAAa,cACX,GACA,SACG;AACH,QAAO,OAAO,YAGZ,OAAO,QAAQ,EAAE,CAAC,SAAS,CAAC,KAAK,OAAO;AACtC,MAAI,OAAO,MAAM,SAAU,QAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5C,SAAO,OAAO,QAAQ,EAAY,CAAC,KAAK,CAAC,IAAI,QAAQ;AACnD,UAAO,CAAE,OAAO,IAAI,IAAI,OAAQ,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG;IAC7D;GACF,CACH;;;;;AC/FH,MAAa,eAAe;AAE5B,SAAgB,cAAc,OAAoC;AAChE,QAAO,OAAO,UAAU;;;;;ACK1B,SAAgB,uBACd,SACA,QACA,SACwC;CACxC,MAAM,eAAe,aAAa,QAAQ,cAAc;CACxD,MAAM,UAAU,kBAAkB,QAAQ;;;;;;;;;;;;;CAc1C,SAAS,oBAAoB,MAAc,OAAiB;EAC1D,MAAM,UAAU,GAAG,eAAe;AAElC,SAAO;IACJ,UAAU,OAAO,QAAQ,IAAI,MAAM;GAEpC,GAAG,UAAU,UAAU,YAAY,WAAW,CAC5C,YACA,OAAO,QAAQ,IAAI,WAAW,IAAI,YAAY,OAAO,OAAO,CAAC,GAC9D,CAAC;GACH;;AAGH,QAAO,UAAU,eAAe,MAAM,UAAU,CAC9C,MACA,oBAAoB,MAAM,MAAM,CACjC,CAAC;;;;;AC/BJ,SAAgB,qBAAqB,UAAoB;AAEvD,QAAO,UAAU,WAAW,KAAK,UAAU;AACzC,MAAI,IAAI,WAAW,SAAS,CAC1B,QAAO,CACL,KACA,EACE,SAAS,uBAAuB,MAAM,EACvC,CACF;MAED,QAAO,CAAC,KAAK,uBAAuB,MAAM,CAAC;GAE7C;;AAGJ,MAAa,0BAA0B,UAAiB;CACtD,MAAM,UAAU,UAAU,MAAM,SAAS,MAAM,EAAE,YAAY,CAE3D,aAAa,UAAU,KAAK,EAC5B,MACD,CAAC;AAGF,QADe,qBAAqB;EAAE,GAAG,MAAM;EAAO,GAAG;EAAS,CAAC,CAAC,EAAE,OAAO,CAAC;;;;;;;AAShF,MAAa,aAAgB,UAAsC,SAAS;;;;;;;;;;;;;;;;AAiB5E,SAAgB,qBACd,aACA,cACA;AACA,QAAO,SAAS,YAAY,OAEzB;EACD,MAAM,SAAS,aAAa,aAAa,UAAU;EAGnD,MAAM,UAAU,OAAO,QAAQ;GAC7B,GAAG,MAAM,MAAM;GACf,GAAG;GACJ,CAAC;AAEF,SAAO,cAAc,SAAS,UAAU,UAAU,CAChD,CAAC,oBAAoB,SAAS,EAAE,MAAM,EAEtC,GAAG,QAAQ,KAAuB,CAAC,WAAW,YAAY,CACxD,oBAAoB,UAAU,CAAC,UAAU,CAAC,EAC1C,YAAY,OAAO,CAAC,OAAO,CAAC,CAC7B,CAAC,CACH,CAAC;;;AAUN,SAAgB,aAAa,GAAG,OAAiB;AAC/C,QAAO,MAAM,KAAK,IAAI;;;;;;;;;AC/ExB,SAAwB,uBACtB,UACA,gBAC2B;CAE3B,MAAM,EAAE,SAAS,cAAe,GAAG,gBAAgB;CACnD,MAAM,cAAc,mBAAmB,YAAY;AAEnD,QAAO,QAAQ,EAAE,cAAc;AAC7B,UAAQ,YAAY;AAGpB,MAAI,eAGF,SAFuB,qBAAqB,SAAS,CAE9B;GAEzB;;AAGJ,SAAgB,mBAAmB,QAAiC;AAClE,QAAO,UAAU,SAAS,sBAAsB,UAAU;EACxD,MAAM,MAAM,eAAe,MAAM;AAEjC,MAAI,qBAAqB,WAAW,SAAS,CAC3C,QAAO,CACL,sBACA,EACE,SAAS,KACV,CACF;MAED,QAAO,CAAC,sBAAsB,IAAI;GAEpC;;AAGJ,SAAS,eAAe,OAA4B;CAClD,MAAM,SAAS,aAAa,MAAM,OAAO,cAAc;CACvD,MAAM,UAAU,OAAO,QAAQ,YAAY,MAAM,CAAC;AAElD,QAAO,cAAc,SAAS,MAAM,UAAU;EAC5C,MAAMA,UAA8B,GAAG,eAAe;AAEtD,SAAO,CACL,CAAC,SAAS,MAAM,EAEhB,GAAG,QAAQ,KAAkC,CAAC,MAAM,YAAY,CAC9D,GAAG,QAAQ,IAAI,QACf,YAAY,OAAO,OAAO,CAC3B,CAAC,CACH;GACD;;;;;ACvDJ,MAAM,aAAa;AAEnB,SAAwBC,yBACtB,WACA,SACA,sBACA;CACA,MAAM,YAAY,aAAa,WAAW,QAAQ;CAElD,MAAM,aAAa,UAAU,YAAY,SAAS,CAChD,OAAO,QACP,EAAE,iBAAiB,OAAO,aAAa,KAAK,IAAI,CACjD,CAAC;AAEF,QAAO,QAAQ,EAAE,SAAS,mBAAmB;EAC3C,MAAM,MAAM,QAAQ,YAAY,SAAS,GAAG,aAAa,OAAO;AAChE,MAAI,qBAAqB,WAAW,SAAS,CAC3C,SAAQ,GACL,uBAAuB,EACtB,SAAS,KACV,EACF,CAAC;MAEF,SAAQ,GACL,uBAAuB,KACzB,CAAC;AAGJ,eAAa,YAAY,EAEvB,UAAU,CAAC,aAAa,EACzB,CAAC;GACF;;AAGJ,MAAM,aAAa;CACjB,UAAU;CACV,aAAa;CACb,WAAW;CACX,YAAY;CACb;AAgBD,SAAgB,aACd,WACA,QACW;CACX,MAAM,UAAU,OAAO,QAAQ,OAAO;CACtC,MAAM,aAAa,OAAO,QAAQ,WAAW;AAK7C,QAAO,cAAc,YAAY,MAAM,WACrC,WAAW,SAAS,CAAC,WAAW,eAAe;EAC7C,MAAM,oBAAoB,aAA6B;GACrD,MAAM,QAAQ,SAAS,UAAU,CAACC,SAAO;AAEzC,OAAI,EAAE,qBAAqB,OACzB,OAAM,IAAI,MACR,6CAA6C,KAAK,GAAG,UAAU,GAAG,YACnE;AAKH,UAAO,MAAM;;AAGf,SAAO,CAGL,CAAC,kBAAkB,MAAM,UAAU,EAAE,iBAAiB,OAAO,CAAC,EAI9D,GAAG,QAAQ,KAA+B,CAAC,YAAYC,cAAY,CACjE,kBAAkB,MAAM,WAAW,WAAW,EAC9C,iBAAiB,sBAAsBA,SAAO,CAAC,OAAO,CAAC,CACxD,CAAC,CACH;GACD,CACH;;AAGH,SAAS,kBACP,cACA,WACA,SAAS,IACT;AACA,QAAO;EAAC,aAAa,aAAa;EAAE;EAAW;EAAO,CACnD,OAAO,QAAQ,CACf,KAAK,IAAI;;;;;ACpHd,MAAM,gBAAgB;CACpB,SAAS;CACT,OAAO;CACP,QAAQ;CACR,SAAS;CACV;AAED,MAAM,mBAAmB,UAAgC;CACvD,MAAM,SAAS,CAAC,YAAY,MAAM;AAElC,QAAO;EACL,aAAa,GAAG,MAAM,SAAS;EAC/B,eAAe,GAAG,MAAM,WAAW;EAOnC,aAAa;GACX,GAAG;GACH,WAAW,GAAG,OAAO;GACtB;EACD,YAAY;GACV,GAAG;GACH,cAAc,GAAG,OAAO;GACzB;EACF;;AAGH,MAAM,mBAAmB,QAAQ,EAAE,mBAAmB;AAMpD,cACE;EACE,GAPsB,UAAU,kBAAkB,UAAU,UAAU,CACxE,eAAe,YACf,gBAAgB,MAAM,CACvB,CAAC;EAKE,0BAA0B;GACxB,aAAa,EACX,SAAS,QACV;GACD,YAAY,EACV,SAAS,QACV;GACF;EACF,EACD,EAEE,UAAU,CAAC,aAAa,EACzB,CACF;EACD;AAEF,qBAAe;;;;ACpDf,SAAgB,uCAGd;CACA,MAAM,WAAW,OAAO,YACtB,OAAO,QAAQC,QAAM,KAAK,aAAa,CAAC,SAAS,CAAC,GAAG,OAAO;AAE1D,MAAI,OAAO,MAAM,SACf,QAAO,CACL,CACE,GACA,CACE,GAEA,EAAE,YAAYA,QAAM,KAAK,eAAe,IAAI,CAC7C,CACF,CACF;AAIH,SAAO,OAAO,QAAQ,EAA4B,CAAC,KAAK,CAAC,IAAI,QAAQ;AACnE,UAAO,CACL,CAAC,GAAG,GAAG,CAAC,KAAK,IAAI,EACjB,CACE,IAEA,EAAE,YAAYA,QAAM,KAAK,eAAe,GAAG,KAAK,CACjD,CACF;IACD;GACF,CACH;CAID,MAAM,UAAUC,WAAYD,QAAM,QAAQ,QAAQ,CAAC,gBAAgB,KAAK,IAAI,CAAC;CAG7E,MAAM,SAASE,cAAeF,QAAM,MAAM;AAsB1C,QApBwC;EACtC,UAAU;EACV,OAAO;GAGL,aAAaC,WAAYD,QAAM,gBAAgB;GAC/C,cAAcA,QAAM;GACpB,aAAaC,WAAY,OAAO,OAAO;GAEvC;GAEA;GACA,YAAYD,QAAM,KAAK;GAEvB;GACA,KAAK;GACL,OAAOA,QAAM;GACd;EACF;;;;;AC7DH,MAAM,wBAAwB,aAAqB;CACjD,MAAM,CAAC,MAAM,SAAS,QAAQ,SAAS,MAAM,IAAI;AACjD,QAAO;EACL;EACA,KAAK,WAAW,KAAK,IAAI;EACzB,GAAI,YAAY,YAAY,EAAE,GAAG,CAAC,QAAQ;EAC1C,GAAI,SAAS,OAAO,EAAE,GAAG,CAAC,KAAK;EAChC,CACE,KAAK,IAAI,CACT,aAAa;;AAGlB,MAAM,wBAAwB,aAAqB;CACjD,MAAM,CAAC,MAAM,QAAQ,SAAS,MAAM,IAAI;AACxC,QAAO;EACL;EACA,KAAK,WAAW,KAAK,IAAI;EACzB,GAAI,SAAS,OAAO,EAAE,GAAG,CAAC,KAAK;EAChC,CACE,KAAK,IAAI,CACT,aAAa;;AAGlB,MAAa,uBAAuB,EAClC,KAAK,YAKF;CACH,MAAMG,eAAiD,EAAE;CACzD,MAAM,QAAQ,KAAK,UAAU;AAC7B,MAAK,MAAM,CAAC,UAAU,EAAE,KAAK,wBAAwB,OAAO,QAAQ,MAAM,EAAE;EAC1E,MAAM,YAAY,KACd,qBAAqB,SAAS,GAC9B,qBAAqB,SAAS;AAElC,eAAa,aAAa;GACxB,SAAS;GACT,OAAO;GACP,QAAQ;GACR,WAAW,OAAO,IAAI;GACtB,UAAU;GACV,YAAY,oBAAoB,iBAAiB;GACjD,aAAa;GACd;;AAEH,QAAO;;AAGT,MAAaC,kBAA6C,QACvD,EAAE,mBAAmB;AACpB,cAAa,oBAAoB,EAAE,IAAI,MAAM,CAAC,CAAC;EAElD;AAED,MAAaC,kBAA6C,QACvD,EAAE,mBAAmB;AACpB,cAAa,oBAAoB,EAAE,IAAI,OAAO,CAAC,CAAC;EAEnD;;;;AC7BD,SAAgB,qBAAqB,EACnC,QAAQ,EAAE,SAAS,OAAO,EAC1B,UAAU,MACV,iBAAiB,MACjB,kBAAkB,OAClB,qBAAU,OACV,qBAAU,SACyB;AACnC,4BAA2B,MAAM;CAEjC,MAAM,eAAe,MAAM;CAC3B,MAAM,UAAU,YAAY,aAAa;CACzC,MAAM,UAAU,kBAAkB,QAAQ;CAE1C,MAAM,EACJ,aAAa,eACb,cAAc,gBACd,aAAa,eACb,QAAQ,UACR,UAAU,YACV,YAAY,cACZ,SAAS,WACT,KAAK,OACL,OAAO,YACkC,kBACvC,sCAAsC,CAAC,QACvC,EAAE;AAEN,QAAO;EACL,OAAO;GACL,SAAS;IACP,SAAS,GAAG,EAAE;IACd,SAAS,GAAG,aAAa,WAAW,QAAQ;IAC5C,SAAS,GAAG,aAAa,WAAW,QAAQ;IAC5C,SAAS,GAAG,aAAa,WAAW,QAAQ;IAC5C,SAAS,GAAG,aAAa,WAAW,QAAQ;IAC7C;GACD,QAAQ;IAEN,OAAO;IAGP,OAAO;IAEP,aAAa;IACb,SAAS;IACT,GAAG,uBAAuB,SAAS,aAAa,OAAO,QAAQ;IAC/D,GAAG;IACJ;GACD,aAAa;IACX,GAAG,uBACD,SACA,UAAU,aAAa,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,EACtD,QACD;IACD,GAAG;IACJ;GACD,SAAS;IACP,GAAG,UACD,UACC,MAAM,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,CACnC;IACD,GAAG;IACJ;GACD,OAAO;IACL,MAAM;IACN,QAAQ;IACR,MAAM;IACN,KAAK;IAKL,GAAG,MAAM,KAAK,EAAE,QAAQ,YAAY,GAAG,GAAG,MAAM,IAAI,EAAE,CAAC,QACpD,QAAQ,OAAO;KACd,GAAG;MACF,YAAY,MAAM,GAAG,cAAc,IAAI,eAAe,IAAI,GAAG;KAC/D,GACD,EAAE,CACH;IAKD,GAAG,MAAM,KAAK,EAAE,QAAQ,aAAa,GAAG,GAAG,GAAG,MAAM,IAAI,EAAE,CAAC,QACxD,QAAQ,OAAO;KACd,GAAG;MACF,GAAG,EAAE,GAAG,eAAe,GAAI,IAAI,aAAc,IAAI;KACnD,GACD,EAAE,CACH;IACD,GAAG;IACJ;GACD,KAAK;IACH,OAAO,GAAG,YAAY;IACtB,GAAG;IACJ;GACD,cAAc;IACZ,GAAG,UACD,gBACC,MAAM,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,CACnC;IACD,GAAG;IACJ;GACD,oBAAoB,GACjB,UAAU,QACZ;GACD,GAAI,kBACA;IACE,aAAa;IACb,UAAU;IACV,YAAY;IACb,GACD,EAAE;GACP;EAED,GAAG,iBAAiB,QAAQ;EAE5B,aAAa,EACX,YAAY,OACb;EACD,SAAS;GACPC;GACA,uBAAuB,OAAO,QAAQ,eAAe,CAAC;GAEtD,GAAG,OAAO,QAAQ,MAAM,CAAC,KAAK,CAAC,sBAAsBC,aACnDC,yBACED,QAAM,eACN,YAAYA,QAAM,EAClB,qBACD,CACF;GACD,GAAIE,YAAU,CAAC,gBAAgB,GAAG,EAAE;GACpC,GAAIC,YAAU,CAAC,gBAAgB,GAAG,EAAE;GACrC;EACF;;AAGH,MAAaC,SAAkC,qBAAqB,EAAE,CAAC;AAEvE,kBAAe"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["varName: keyof CSSVariables","cssVariableColorPlugin","colors","effect","light","flattenKeys","mapDefaultKeys","newUtilities: { [key: string]: CSSRuleObject }","charcoalIconsV2: ReturnType<typeof plugin>","charcoalIconsV1: ReturnType<typeof plugin>","typographyPlugin","theme","cssVariableGradientPlugin","iconsV2","iconsV1","config: Omit<Config, 'content'>"],"sources":["../src/foundation.ts","../src/util.ts","../src/colors/utils.ts","../src/colors/toTailwindConfig.ts","../src/colors/pluginTokenV1.ts","../src/colors/plugin.ts","../src/gradient/plugin.ts","../src/typography/plugin.ts","../src/tokenV2.ts","../src/icons.ts","../src/index.ts"],"sourcesContent":["import { Effect } from '@charcoal-ui/foundation'\nimport { CharcoalTheme as Theme } from '@charcoal-ui/theme'\n\nexport const GRID_COUNT = 12\n\nexport function mergeEffect({\n elementEffect,\n effect,\n}: Pick<Theme, 'elementEffect' | 'effect'>): MergedEffect {\n return {\n ...elementEffect,\n ...effect,\n outline: {\n type: 'opacity',\n opacity: 0.32,\n } as Effect,\n }\n}\n\nexport type MergedEffect = Record<string, Effect>\n","import type { Config } from 'tailwindcss'\nimport { TailwindVersion, ThemeMap } from './types'\n\n/**\n * the key \"default\" or \"DEFAULT\" has special meaning and dropped from class name\n *\n * @see https://tailwindcss.com/docs/upgrading-to-v2#update-default-theme-keys-to-default\n */\nexport function getDefaultKeyName(version: TailwindVersion) {\n switch (version) {\n case 'v3':\n case 'v2': {\n return 'DEFAULT'\n }\n\n case 'v1': {\n return 'default'\n }\n }\n}\n\nexport function getVariantOption(version: TailwindVersion): Partial<Config> {\n switch (version) {\n case 'v3': {\n // v3 以上では variants は variantOrders に改名された\n // そしてこれは上書きをしたいモチベがない\n // https://v2.tailwindcss.com/docs/configuration#variant-order\n return {}\n }\n\n case 'v2':\n case 'v1': {\n return { variants: {} }\n }\n }\n}\n\nfunction setEquals<T>(a: Set<T>, b: Set<T>) {\n return a.size === b.size && Array.from(a).every((value) => b.has(value))\n}\n\nexport function assertAllThemeHaveSameKeys(themeMap: ThemeMap): void {\n const defaultTheme = themeMap[':root']\n const expectedColorKeys = new Set(Object.keys(defaultTheme.color))\n const expectedEffectKeys = new Set(Object.keys(defaultTheme.effect))\n\n for (const [name, theme] of Object.entries(themeMap)) {\n const colorKeys = new Set(Object.keys(theme.color))\n const effectKeys = new Set(Object.keys(theme.effect))\n\n if (!setEquals(colorKeys, expectedColorKeys)) {\n throw new Error(`:root and ${name} does not have same colors.\n\nExpected( :root ): ${JSON.stringify(Array.from(expectedColorKeys))}\nGot: ${JSON.stringify(Array.from(colorKeys))}`)\n }\n\n if (!setEquals(effectKeys, expectedEffectKeys)) {\n throw new Error(`:root and ${name} does not have same effects.\n\nExpected( :root ): ${JSON.stringify(Array.from(expectedEffectKeys))}\nGot: ${JSON.stringify(Array.from(effectKeys))}`)\n }\n }\n}\n\nexport function camelToKebab(value: string) {\n return value\n .replace(/(?<small>[\\da-z]|(?=[A-Z]))(?<capital>[A-Z])/gu, '$1-$2')\n .toLowerCase()\n}\n\nexport const mapDefaultKey = <O extends object>(o: O) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(JSON.stringify(o), function reviver(k: string, v: string) {\n if (k === 'default') {\n const DefaultKey = getDefaultKeyName('v3')\n this[DefaultKey] = v\n return undefined\n }\n return v\n })\n}\n\nexport const flattenKey = <O extends object>(\n o: O,\n join?: (key: string) => boolean,\n): Record<string, unknown> => {\n return Object.fromEntries(\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n Object.entries(o).flatMap(([key, v]) => {\n if (typeof v === 'string') return [[key, v]]\n return Object.entries(v as object).map(([kk, vv]) => {\n return [(join?.(key) ?? true) ? [key, kk].join('-') : kk, vv]\n })\n }),\n )\n}\n\n/**\n * `DEFAULT` はkey名に結合しない\n */\nexport const flattenKeyWithoutDefault = <O extends object>(\n o: O,\n join?: (key: string) => boolean,\n): Record<string, unknown> => {\n return Object.fromEntries(\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n Object.entries(o).flatMap(([key, v]) => {\n if (typeof v === 'string') return [[key, v]]\n return Object.entries(v as object).map(([kk, vv]) => {\n const isDefaultKey = kk === 'DEFAULT' || kk === 'default'\n const outputKey = isDefaultKey\n ? key\n : (join?.(key) ?? true)\n ? [key, kk].join('-')\n : kk\n return [outputKey, vv]\n })\n }),\n )\n}\n","import { GradientMaterial, Material } from '@charcoal-ui/foundation'\n\nexport const COLOR_PREFIX = '--tailwind-color-'\n\nexport function isSingleColor(color: AnyColor): color is Material {\n return typeof color === 'string'\n}\n\ntype AnyColor = Material | GradientMaterial\n\nexport type AnyColorTheme = Record<string, AnyColor>\n","import { Material } from '@charcoal-ui/foundation'\nimport { applyEffect, filterObject, mapObject } from '@charcoal-ui/utils'\nimport type { Config } from 'tailwindcss'\nimport { MergedEffect } from '../foundation'\n\nimport { TailwindVersion } from '../types'\nimport { getDefaultKeyName } from '../util'\n\nimport { AnyColorTheme, COLOR_PREFIX, isSingleColor } from './utils'\n\nexport function colorsToTailwindConfig(\n version: TailwindVersion,\n colors: AnyColorTheme,\n effects: MergedEffect,\n): NonNullable<Config['theme']>['colors'] {\n const targetColors = filterObject(colors, isSingleColor)\n const DEFAULT = getDefaultKeyName(version)\n\n /**\n * こういう感じのを吐き出す\n *\n * ```js\n * {\n * DEFAULT: 'var(--tailwind-color-hoge1, #fff)',\n * hover: 'var(--tailwind-color-hoge1--hover, #eee)',\n * press: 'var(--tailwind-color-hoge1--press, #ddd)',\n * disabled: 'var(--tailwind-color-hoge1--disabled, #eee)',\n * }\n * ```\n */\n function colorsForAllEffects(name: string, color: Material) {\n const varName = `${COLOR_PREFIX}${name}`\n\n return {\n [DEFAULT]: `var(${varName}, ${color})`,\n\n ...mapObject(effects, (effectName, effect) => [\n effectName,\n `var(${varName}--${effectName}, ${applyEffect(color, effect)})`,\n ]),\n }\n }\n\n return mapObject(targetColors, (name, color) => [\n name,\n colorsForAllEffects(name, color),\n ])\n}\n","import {\n applyEffect,\n customPropertyToken,\n filterObject,\n flatMapObject,\n mapObject,\n} from '@charcoal-ui/utils'\nimport { ThemeMap } from '../types'\nimport {\n CharcoalAbstractTheme,\n EffectType,\n Key,\n CharcoalTheme as Theme,\n} from '@charcoal-ui/theme'\n\nexport function defineCssVariablesV1(themeMap: ThemeMap) {\n // @ts-expect-error FIXME\n return mapObject(themeMap, (key, theme) => {\n if (key.startsWith('@media')) {\n return [\n key,\n {\n ':root': defineColorVariableCSS(theme),\n },\n ]\n } else {\n return [key, defineColorVariableCSS(theme)]\n }\n })\n}\n\nexport const defineColorVariableCSS = (theme: Theme) => {\n const borders = mapObject(theme.border, (name, { color }) => [\n // REVIEW: もしtheme.colorにたまたまborder-〇〇で始まる色名がいたら被りうる\n withPrefixes('border', name),\n color,\n ])\n\n const colors = defineThemeVariables({ ...theme.color, ...borders })({ theme })\n return colors\n}\n\n/**\n * Check whether a value is non-null and non-undefined\n *\n * @param value nullable\n */\nexport const isPresent = <T>(value: T): value is NonNullable<T> => value != null\n\n/**\n * 子孫要素で使われるカラーテーマの CSS Variables を上書きする\n *\n * @params colorParams - 上書きしたい色の定義( `theme.color` の一部だけ書けば良い )\n * @params effectParams - effect の定義を上書きしたい場合は渡す(必須ではない)\n *\n * @example\n * ```tsx\n * const LocalTheme = styled.div`\n * ${defineThemeVariables({ text1: '#ff0000' })}\n * // `text1` is now defined as red\n * ${theme((o) => [o.font.text1])}\n * `\n * ```\n */\nexport function defineThemeVariables(\n colorParams: Partial<CharcoalAbstractTheme['color']>,\n effectParams?: Partial<CharcoalAbstractTheme['effect']>,\n) {\n return function toCssObject(props: {\n theme: Pick<CharcoalAbstractTheme, 'effect'>\n }) {\n const colors = filterObject(colorParams, isPresent)\n\n // flatMapObject の中で毎回 Object.entries を呼ぶのは無駄なので外で呼ぶ\n const effects = Object.entries({\n ...props.theme.effect,\n ...effectParams,\n })\n\n return flatMapObject(colors, (colorKey, color) => [\n [customPropertyToken(colorKey), color],\n\n ...effects.map<[string, string]>(([effectKey, effect]) => [\n customPropertyToken(colorKey, [effectKey]),\n applyEffect(color, [effect]),\n ]),\n ])\n }\n}\n\nexport function isSupportedEffect(effect: Key): effect is EffectType {\n return ['hover', 'press', 'disabled'].includes(effect as string)\n}\n\nexport const variable = (value: string) => `var(${value})`\n\nexport function withPrefixes(...parts: string[]) {\n return parts.join('-')\n}\n","import { Material } from '@charcoal-ui/foundation'\nimport { CharcoalTheme as Theme } from '@charcoal-ui/theme'\nimport {\n applyEffect,\n filterObject,\n flatMapObject,\n mapObject,\n} from '@charcoal-ui/utils'\nimport plugin from 'tailwindcss/plugin.js'\nimport { mergeEffect } from '../foundation'\nimport { CSSVariableName, CSSVariables, Definition, ThemeMap } from '../types'\nimport { COLOR_PREFIX, isSingleColor } from './utils'\nimport { defineCssVariablesV1 } from './pluginTokenV1'\n\n/**\n * --tailwind-* また --charcoal-* を生成する\n * TODO: --tailwindをやめる\n */\nexport default function cssVariableColorPlugin(\n themeMap: ThemeMap,\n cssVariablesV1: boolean,\n): ReturnType<typeof plugin> {\n // `:root` 以外のケースで各 CSS Variable がどういう値を取るかを定義する\n const { ':root': _defaultTheme, ...otherThemes } = themeMap\n const definitions = defineCssVariables(otherThemes)\n\n return plugin(({ addBase }) => {\n addBase(definitions)\n\n // styledのTokenInjector移植(background処理除く)\n if (cssVariablesV1) {\n const cssVariablesV1 = defineCssVariablesV1(themeMap)\n // @ts-expect-error FIXME\n addBase(cssVariablesV1)\n }\n })\n}\n\nexport function defineCssVariables(themes: Omit<ThemeMap, ':root'>) {\n return mapObject(themes, (selectorOrMediaQuery, theme) => {\n const css = toCssVariables(theme)\n\n if (selectorOrMediaQuery.startsWith('@media')) {\n return [\n selectorOrMediaQuery,\n {\n ':root': css,\n },\n ]\n } else {\n return [selectorOrMediaQuery, css]\n }\n }) as Definition\n}\n\nfunction toCssVariables(theme: Theme): CSSVariables {\n const colors = filterObject(theme.color, isSingleColor)\n const effects = Object.entries(mergeEffect(theme))\n\n return flatMapObject(colors, (name, color) => {\n const varName: keyof CSSVariables = `${COLOR_PREFIX}${name}`\n\n return [\n [varName, color],\n\n ...effects.map<[CSSVariableName, Material]>(([type, effect]) => [\n `${varName}--${type}`,\n applyEffect(color, effect),\n ]),\n ]\n })\n}\n","import plugin from 'tailwindcss/plugin.js'\nimport { camelToKebab } from '../util'\nimport { GradientMaterial } from '@charcoal-ui/foundation'\nimport { ThemeColorGradient } from '@charcoal-ui/theme'\nimport {\n applyEffectToGradient,\n flatMapObject,\n gradient,\n GradientDirection,\n mapKeys,\n mapObject,\n} from '@charcoal-ui/utils'\nimport { Values } from '../types'\nimport { MergedEffect } from '../foundation'\n\nconst VAR_PREFIX = '--tailwind-gradient-'\n\nexport default function cssVariableColorPlugin(\n gradients: ThemeColorGradient,\n effects: MergedEffect,\n selectorOrMediaQuery: string,\n) {\n const utilities = getUtilities(gradients, effects)\n\n const classRules = mapObject(utilities, (name) => [\n `.bg-${name}`,\n { backgroundImage: `var(${VAR_PREFIX}${name})` },\n ])\n\n return plugin(({ addBase, addUtilities }) => {\n const css = mapKeys(utilities, (name) => `${VAR_PREFIX}${name}`)\n if (selectorOrMediaQuery.startsWith('@media')) {\n addBase({\n [selectorOrMediaQuery]: {\n ':root': css,\n },\n })\n } else {\n addBase({\n [selectorOrMediaQuery]: css,\n })\n }\n\n addUtilities(classRules, {\n // @ts-expect-error FIXME\n variants: ['responsive'],\n })\n })\n}\n\nconst DIRECTIONS = {\n 'to top': 'top',\n 'to bottom': 'bottom',\n 'to left': 'left',\n 'to right': 'right',\n} as const\n\n/**\n * こういう感じのやつ。この時点では `--tailwind-gradient-` のような CSS 変数名になってない\n *\n * ```js\n * {\n * 'hoge1': 'linear-gradient(to top, ...)',\n * ...\n * }\n * ```\n */\ntype Utilities = Record<string, LinearGradient>\n\ntype LinearGradient = `linear-gradient(${string})`\n\nexport function getUtilities(\n gradients: Record<string, GradientMaterial>,\n effect: MergedEffect,\n): Utilities {\n const effects = Object.entries(effect)\n const directions = Object.entries(DIRECTIONS) as [\n GradientDirection,\n Values<typeof DIRECTIONS>,\n ][]\n\n return flatMapObject(gradients, (name, colors) =>\n directions.flatMap(([direction, className]) => {\n const toLinearGradient = (colors: GradientMaterial) => {\n const style = gradient(direction)(colors)\n\n if (!('backgroundImage' in style)) {\n throw new Error(\n `Could not generate linear-gradient() from ${name} ${direction} ${className}`,\n )\n }\n\n // 本当は backgroundColor も同時に生成されるんだけど、使うにはそれ用の CSS 変数も一緒に作らないといけない\n // とりあえず background-image だけで動くのでこっちだけを利用する\n return style.backgroundImage as LinearGradient\n }\n\n return [\n // こういう感じのやつ\n // { 'hoge1': 'linear-gradient(to top, ...)' }\n [createUtilityName(name, className), toLinearGradient(colors)],\n\n // こういう感じのやつ\n // { 'hoge1--hover': 'linear-gradient(to top, ...)' }\n ...effects.map<[string, LinearGradient]>(([effectName, effect]) => [\n createUtilityName(name, className, effectName),\n toLinearGradient(applyEffectToGradient(effect)(colors)),\n ]),\n ]\n }),\n )\n}\n\nfunction createUtilityName(\n gradientName: string,\n direction: Values<typeof DIRECTIONS>,\n suffix = '',\n) {\n return [camelToKebab(gradientName), direction, suffix]\n .filter(Boolean)\n .join('-')\n}\n","import plugin from 'tailwindcss/plugin.js'\nimport { TypographyDescriptor, TYPOGRAPHY_SIZE } from '@charcoal-ui/foundation'\nimport { halfLeading, mapObject, px } from '@charcoal-ui/utils'\n\nconst leadingCancel = {\n display: 'block',\n width: 0,\n height: 0,\n content: '\"\"',\n}\n\nconst typographyStyle = (style: TypographyDescriptor) => {\n const margin = -halfLeading(style)\n\n return {\n 'font-size': px(style.fontSize),\n 'line-height': px(style.lineHeight),\n\n /**\n * cancel leading\n *\n * @see https://yuyakinoshita.com/blog/2020/01/20/line-height-crop/\n */\n '&::before': {\n ...leadingCancel,\n marginTop: px(margin),\n },\n '&::after': {\n ...leadingCancel,\n marginBottom: px(margin),\n },\n }\n}\n\nconst typographyPlugin = plugin(({ addUtilities }) => {\n const typographyClasses = mapObject(TYPOGRAPHY_SIZE, (fontSize, style) => [\n `.typography-${fontSize}`,\n typographyStyle(style),\n ])\n\n addUtilities(\n {\n ...typographyClasses,\n '.preserve-half-leading': {\n '&::before': {\n content: 'none',\n },\n '&::after': {\n content: 'none',\n },\n },\n },\n {\n // @ts-expect-error FIXME\n variants: ['responsive'],\n },\n )\n})\n\nexport default typographyPlugin\n","import light from '@charcoal-ui/theme/unstable-tokens/css-variables.json' with { type: 'json' }\nimport type { Config } from 'tailwindcss'\nimport {\n flattenKey as flattenKeys,\n flattenKeyWithoutDefault,\n mapDefaultKey as mapDefaultKeys,\n} from './util'\n\nexport function unstable_createTailwindConfigTokenV2(): Omit<\n Config,\n 'content'\n> {\n const fontSize = Object.fromEntries(\n Object.entries(light.text['font-size']).flatMap(([k, v]) => {\n // text.fontSize.paragraph + text.lineHeight.paragraph -> text-paragraph\n if (typeof v === 'string') {\n return [\n [\n k,\n [\n v,\n // @ts-expect-error k is keyof line-height\n { lineHeight: light.text['line-height'][k] },\n ],\n ],\n ]\n }\n\n // text.fontSize.heading.s + text.lineHeight.heading.s -> text-heading-s\n return Object.entries(v as Record<string, string>).map(([kk, vv]) => {\n return [\n [k, kk].join('-'),\n [\n vv,\n // @ts-expect-error k is keyof line-height\n { lineHeight: light.text['line-height'][k][kk] },\n ],\n ]\n })\n }),\n ) as NonNullable<Config['theme']>['fontSize']\n\n // space.target.s -> p-target-s\n // space.gap.gapButtons -> p-gap-buttons\n const spacing = flattenKeys(light.space, (key) => !/(gap|padding)/.test(key))\n // color.container.default -> bg-container\n // color.container.hover -> bg-container-hover\n const colors = mapDefaultKeys(light.color)\n\n const config: Omit<Config, 'content'> = {\n darkMode: 'media',\n theme: {\n // borderWidth.m -> border-m\n // borderWidth.focus.1 -> border-focus-1\n borderWidth: flattenKeyWithoutDefault({\n 'width-ch': flattenKeys(light['border-width']), // unstable border width token\n }),\n borderRadius: light.radius,\n borderColor: flattenKeyWithoutDefault({ ch: flattenKeys(colors.border) }),\n\n colors,\n\n fontSize,\n fontWeight: flattenKeys({ ch: light.text['font-weight'] }),\n\n spacing,\n gap: spacing,\n width: light['paragraph-width'],\n },\n }\n\n return config\n}\n","import plugin from 'tailwindcss/plugin.js'\nimport iconsV2 from '@charcoal-ui/icon-files/v2/datauri'\nimport iconsV1 from '@charcoal-ui/icon-files/v1/datauri'\nimport { CSSRuleObject } from 'tailwindcss/types/config'\n\nconst transformClassNameV2 = (fileName: string) => {\n const [size, variant, name] = fileName.split('/')\n return [\n '.icon-v2',\n name.replaceAll('.', '-'),\n ...(variant === 'regular' ? [] : [variant]),\n ...(size === '24' ? [] : [size]),\n ]\n .join('-')\n .toLowerCase()\n}\n\nconst transformClassNameV1 = (fileName: string) => {\n const [size, name] = fileName.split('/')\n return [\n '.icon-v1',\n name.replaceAll('.', '-'),\n ...(size === '24' ? [] : [size]),\n ]\n .join('-')\n .toLowerCase()\n}\n\nexport const createIconUtilities = ({\n v2 = false,\n}: {\n v2?: boolean\n}): {\n [key: string]: CSSRuleObject\n} => {\n const newUtilities: { [key: string]: CSSRuleObject } = {}\n const icons = v2 ? iconsV2 : iconsV1\n for (const [fileName, { uri, isSetCurrentcolor }] of Object.entries(icons)) {\n const className = v2\n ? transformClassNameV2(fileName)\n : transformClassNameV1(fileName)\n\n newUtilities[className] = {\n display: 'inline-block',\n width: '1em',\n height: '1em',\n maskImage: `url(${uri})`,\n maskSize: '100% 100%',\n background: isSetCurrentcolor ? 'currentColor' : null,\n aspectRatio: '1/1',\n }\n }\n return newUtilities\n}\n\nexport const charcoalIconsV2: ReturnType<typeof plugin> = plugin(\n ({ addUtilities }) => {\n addUtilities(createIconUtilities({ v2: true }))\n },\n)\n\nexport const charcoalIconsV1: ReturnType<typeof plugin> = plugin(\n ({ addUtilities }) => {\n addUtilities(createIconUtilities({ v2: false }))\n },\n)\n","import { GRID_COUNT, mergeEffect } from './foundation'\n\nimport type { Config } from 'tailwindcss'\nimport { TailwindVersion, ThemeMap } from './types'\n\nimport {\n assertAllThemeHaveSameKeys,\n getDefaultKeyName,\n getVariantOption,\n} from './util'\nimport {\n COLUMN_UNIT,\n GUTTER_UNIT,\n SPACING,\n BORDER_RADIUS,\n} from '@charcoal-ui/foundation'\nimport { light } from '@charcoal-ui/theme'\nimport { mapObject, px } from '@charcoal-ui/utils'\nimport { colorsToTailwindConfig } from './colors/toTailwindConfig'\n\nimport cssVariableColorPlugin from './colors/plugin'\nimport cssVariableGradientPlugin from './gradient/plugin'\nimport typographyPlugin from './typography/plugin'\nimport { unstable_createTailwindConfigTokenV2 } from './tokenV2'\nimport { charcoalIconsV1, charcoalIconsV2 } from './icons'\nexport { unstable_createTailwindConfigTokenV2 }\n\ninterface Options {\n version?: TailwindVersion\n theme?: ThemeMap\n cssVariablesV1?: boolean\n unstableTokenV2?: boolean\n iconsV2?: boolean\n iconsV1?: boolean\n}\n\nexport function createTailwindConfig({\n theme = { ':root': light },\n version = 'v3',\n cssVariablesV1 = true,\n unstableTokenV2 = false,\n iconsV2 = false,\n iconsV1 = false,\n}: Options): Omit<Config, 'content'> {\n assertAllThemeHaveSameKeys(theme)\n\n const defaultTheme = theme[':root']\n const effects = mergeEffect(defaultTheme)\n const DEFAULT = getDefaultKeyName(version)\n\n const {\n borderWidth: borderWidthV2,\n borderRadius: borderRadiusV2,\n borderColor: borderColorV2,\n colors: colorsV2,\n fontSize: fontSizeV2,\n fontWeight: fontWeightV2,\n spacing: spacingV2,\n gap: gapV2,\n width: widthV2,\n }: Partial<NonNullable<Config['theme']>> = unstableTokenV2\n ? unstable_createTailwindConfigTokenV2().theme\n : {}\n\n return {\n theme: {\n screens: {\n screen1: px(0),\n screen2: px(defaultTheme.breakpoint.screen1),\n screen3: px(defaultTheme.breakpoint.screen2),\n screen4: px(defaultTheme.breakpoint.screen3),\n screen5: px(defaultTheme.breakpoint.screen4),\n },\n colors: {\n // @deprecated\n black: '#000',\n\n // @deprecated\n white: '#fff',\n\n transparent: 'transparent',\n current: 'currentColor',\n ...colorsToTailwindConfig(version, defaultTheme.color, effects),\n ...colorsV2,\n },\n borderColor: {\n ...colorsToTailwindConfig(\n version,\n mapObject(defaultTheme.border, (k, v) => [k, v.color]),\n effects,\n ),\n ...borderColorV2,\n },\n spacing: {\n ...mapObject(\n SPACING,\n (name, pixel) => [name, px(pixel)] as [string, string],\n ),\n ...spacingV2,\n },\n width: {\n full: '100%',\n screen: '100vw',\n auto: 'auto',\n fit: 'fit-content',\n\n /**\n * generates classes like \"w-col-span-1\"\n */\n ...Array.from({ length: GRID_COUNT }, (_, i) => i + 1).reduce(\n (styles, i) => ({\n ...styles,\n [`col-span-${i}`]: px(COLUMN_UNIT * i + GUTTER_UNIT * (i - 1)),\n }),\n {},\n ),\n\n /**\n * generates classes like \"w-1/12\" (except for 12/12, which just equals to w-full)\n */\n ...Array.from({ length: GRID_COUNT - 1 }, (_, i) => i + 1).reduce(\n (styles, i) => ({\n ...styles,\n [`${i}/${GRID_COUNT}`]: `${(i / GRID_COUNT) * 100}%`,\n }),\n {},\n ),\n ...widthV2,\n },\n gap: {\n fixed: px(GUTTER_UNIT),\n ...gapV2,\n },\n borderRadius: {\n ...mapObject(\n BORDER_RADIUS,\n (name, value) => [name, px(value)] as [string, string],\n ),\n ...borderRadiusV2,\n },\n transitionDuration: {\n [DEFAULT]: '0.2s',\n },\n ...(unstableTokenV2\n ? {\n extend: {\n borderWidth: borderWidthV2,\n fontWeight: fontWeightV2,\n fontSize: fontSizeV2,\n },\n }\n : {}),\n },\n\n ...getVariantOption(version),\n\n corePlugins: {\n lineHeight: false,\n },\n plugins: [\n typographyPlugin,\n cssVariableColorPlugin(theme, Boolean(cssVariablesV1)),\n\n ...Object.entries(theme).map(([selectorOrMediaQuery, theme]) =>\n cssVariableGradientPlugin(\n theme.gradientColor,\n mergeEffect(theme),\n selectorOrMediaQuery,\n ),\n ),\n ...(iconsV2 ? [charcoalIconsV2] : []),\n ...(iconsV1 ? [charcoalIconsV1] : []),\n ],\n }\n}\n\nexport const config: Omit<Config, 'content'> = createTailwindConfig({})\n\nexport default config\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@charcoal-ui/tailwind-config",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.5.0-beta.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -26,10 +26,10 @@
|
|
|
26
26
|
"tailwindcss": "^3.4.17"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@charcoal-ui/foundation": "5.
|
|
30
|
-
"@charcoal-ui/
|
|
31
|
-
"@charcoal-ui/icon-files": "5.
|
|
32
|
-
"@charcoal-ui/
|
|
29
|
+
"@charcoal-ui/foundation": "5.5.0-beta.1",
|
|
30
|
+
"@charcoal-ui/theme": "5.5.0-beta.1",
|
|
31
|
+
"@charcoal-ui/icon-files": "5.5.0-beta.1",
|
|
32
|
+
"@charcoal-ui/utils": "5.5.0-beta.1"
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|
|
35
35
|
"csstype": ">=3.0.0",
|
|
@@ -5,20 +5,20 @@ exports[`unstable_createTailwindConfigTokenV2 > config object 1`] = `
|
|
|
5
5
|
"darkMode": "media",
|
|
6
6
|
"theme": {
|
|
7
7
|
"borderColor": {
|
|
8
|
-
"
|
|
9
|
-
"default-text3": "var(--charcoal-color-border-default-text3)",
|
|
10
|
-
"disable": "var(--charcoal-color-border-disable)",
|
|
11
|
-
"focus-1": "var(--charcoal-color-border-focus-1)",
|
|
12
|
-
"focus-2": "var(--charcoal-color-border-focus-2)",
|
|
13
|
-
"focus-legacy": "var(--charcoal-color-border-focus-legacy)",
|
|
14
|
-
"hover": "var(--charcoal-color-border-hover)",
|
|
15
|
-
"hover-text3": "var(--charcoal-color-border-hover-text3)",
|
|
16
|
-
"hud": "var(--charcoal-color-border-hud)",
|
|
17
|
-
"negative": "var(--charcoal-color-border-negative)",
|
|
18
|
-
"press": "var(--charcoal-color-border-press)",
|
|
19
|
-
"press-text3": "var(--charcoal-color-border-press-text3)",
|
|
20
|
-
"secondary": "var(--charcoal-color-border-secondary)",
|
|
21
|
-
"selected": "var(--charcoal-color-border-selected)",
|
|
8
|
+
"ch": "var(--charcoal-color-border-default)",
|
|
9
|
+
"ch-default-text3": "var(--charcoal-color-border-default-text3)",
|
|
10
|
+
"ch-disable": "var(--charcoal-color-border-disable)",
|
|
11
|
+
"ch-focus-1": "var(--charcoal-color-border-focus-1)",
|
|
12
|
+
"ch-focus-2": "var(--charcoal-color-border-focus-2)",
|
|
13
|
+
"ch-focus-legacy": "var(--charcoal-color-border-focus-legacy)",
|
|
14
|
+
"ch-hover": "var(--charcoal-color-border-hover)",
|
|
15
|
+
"ch-hover-text3": "var(--charcoal-color-border-hover-text3)",
|
|
16
|
+
"ch-hud": "var(--charcoal-color-border-hud)",
|
|
17
|
+
"ch-negative": "var(--charcoal-color-border-negative)",
|
|
18
|
+
"ch-press": "var(--charcoal-color-border-press)",
|
|
19
|
+
"ch-press-text3": "var(--charcoal-color-border-press-text3)",
|
|
20
|
+
"ch-secondary": "var(--charcoal-color-border-secondary)",
|
|
21
|
+
"ch-selected": "var(--charcoal-color-border-selected)",
|
|
22
22
|
},
|
|
23
23
|
"borderRadius": {
|
|
24
24
|
"0": "var(--charcoal-radius-0)",
|
|
@@ -31,10 +31,10 @@ exports[`unstable_createTailwindConfigTokenV2 > config object 1`] = `
|
|
|
31
31
|
"xxl": "var(--charcoal-radius-xxl)",
|
|
32
32
|
},
|
|
33
33
|
"borderWidth": {
|
|
34
|
-
"focus-1": "var(--charcoal-border-width-focus-1)",
|
|
35
|
-
"focus-2": "var(--charcoal-border-width-focus-2)",
|
|
36
|
-
"l": "var(--charcoal-border-width-l)",
|
|
37
|
-
"m": "var(--charcoal-border-width-m)",
|
|
34
|
+
"width-ch-focus-1": "var(--charcoal-border-width-focus-1)",
|
|
35
|
+
"width-ch-focus-2": "var(--charcoal-border-width-focus-2)",
|
|
36
|
+
"width-ch-l": "var(--charcoal-border-width-l)",
|
|
37
|
+
"width-ch-m": "var(--charcoal-border-width-m)",
|
|
38
38
|
},
|
|
39
39
|
"colors": {
|
|
40
40
|
"background": {
|
|
@@ -355,8 +355,8 @@ exports[`unstable_createTailwindConfigTokenV2 > config object 1`] = `
|
|
|
355
355
|
],
|
|
356
356
|
},
|
|
357
357
|
"fontWeight": {
|
|
358
|
-
"bold": "var(--charcoal-text-font-weight-bold)",
|
|
359
|
-
"regular": "var(--charcoal-text-font-weight-regular)",
|
|
358
|
+
"ch-bold": "var(--charcoal-text-font-weight-bold)",
|
|
359
|
+
"ch-regular": "var(--charcoal-text-font-weight-regular)",
|
|
360
360
|
},
|
|
361
361
|
"gap": {
|
|
362
362
|
"component-0": "var(--charcoal-space-component-0)",
|
|
@@ -3334,14 +3334,14 @@ exports[`unstable_createTailwindConfigTokenV2 > list of classes 1`] = `
|
|
|
3334
3334
|
"space-y-target-xs",
|
|
3335
3335
|
"space-y-reverse",
|
|
3336
3336
|
"space-x-reverse",
|
|
3337
|
-
"divide-x-focus-1",
|
|
3338
|
-
"divide-x-focus-2",
|
|
3339
|
-
"divide-x-l",
|
|
3340
|
-
"divide-x-m",
|
|
3341
|
-
"divide-y-focus-1",
|
|
3342
|
-
"divide-y-focus-2",
|
|
3343
|
-
"divide-y-l",
|
|
3344
|
-
"divide-y-m",
|
|
3337
|
+
"divide-x-width-ch-focus-1",
|
|
3338
|
+
"divide-x-width-ch-focus-2",
|
|
3339
|
+
"divide-x-width-ch-l",
|
|
3340
|
+
"divide-x-width-ch-m",
|
|
3341
|
+
"divide-y-width-ch-focus-1",
|
|
3342
|
+
"divide-y-width-ch-focus-2",
|
|
3343
|
+
"divide-y-width-ch-l",
|
|
3344
|
+
"divide-y-width-ch-m",
|
|
3345
3345
|
"divide-y-reverse",
|
|
3346
3346
|
"divide-x-reverse",
|
|
3347
3347
|
"divide-solid",
|
|
@@ -3349,19 +3349,20 @@ exports[`unstable_createTailwindConfigTokenV2 > list of classes 1`] = `
|
|
|
3349
3349
|
"divide-dotted",
|
|
3350
3350
|
"divide-double",
|
|
3351
3351
|
"divide-none",
|
|
3352
|
-
"divide-
|
|
3353
|
-
"divide-
|
|
3354
|
-
"divide-
|
|
3355
|
-
"divide-focus-
|
|
3356
|
-
"divide-focus-
|
|
3357
|
-
"divide-
|
|
3358
|
-
"divide-hover
|
|
3359
|
-
"divide-
|
|
3360
|
-
"divide-
|
|
3361
|
-
"divide-
|
|
3362
|
-
"divide-press
|
|
3363
|
-
"divide-
|
|
3364
|
-
"divide-
|
|
3352
|
+
"divide-ch",
|
|
3353
|
+
"divide-ch-default-text3",
|
|
3354
|
+
"divide-ch-disable",
|
|
3355
|
+
"divide-ch-focus-1",
|
|
3356
|
+
"divide-ch-focus-2",
|
|
3357
|
+
"divide-ch-focus-legacy",
|
|
3358
|
+
"divide-ch-hover",
|
|
3359
|
+
"divide-ch-hover-text3",
|
|
3360
|
+
"divide-ch-hud",
|
|
3361
|
+
"divide-ch-negative",
|
|
3362
|
+
"divide-ch-press",
|
|
3363
|
+
"divide-ch-press-text3",
|
|
3364
|
+
"divide-ch-secondary",
|
|
3365
|
+
"divide-ch-selected",
|
|
3365
3366
|
"divide-opacity-0",
|
|
3366
3367
|
"divide-opacity-10",
|
|
3367
3368
|
"divide-opacity-100",
|
|
@@ -3566,147 +3567,174 @@ exports[`unstable_createTailwindConfigTokenV2 > list of classes 1`] = `
|
|
|
3566
3567
|
"rounded-tr-xl",
|
|
3567
3568
|
"rounded-tr-xs",
|
|
3568
3569
|
"rounded-tr-xxl",
|
|
3569
|
-
"border-focus-1",
|
|
3570
|
-
"border-focus-2",
|
|
3571
|
-
"border-l",
|
|
3572
|
-
"border-m",
|
|
3573
|
-
"border-x-focus-1",
|
|
3574
|
-
"border-x-focus-2",
|
|
3575
|
-
"border-x-l",
|
|
3576
|
-
"border-x-m",
|
|
3577
|
-
"border-y-focus-1",
|
|
3578
|
-
"border-y-focus-2",
|
|
3579
|
-
"border-y-l",
|
|
3580
|
-
"border-y-m",
|
|
3581
|
-
"border-b-focus-1",
|
|
3582
|
-
"border-b-focus-2",
|
|
3583
|
-
"border-b-l",
|
|
3584
|
-
"border-b-m",
|
|
3585
|
-
"border-e-focus-1",
|
|
3586
|
-
"border-e-focus-2",
|
|
3587
|
-
"border-e-l",
|
|
3588
|
-
"border-e-m",
|
|
3589
|
-
"border-l-focus-1",
|
|
3590
|
-
"border-l-focus-2",
|
|
3591
|
-
"border-l-l",
|
|
3592
|
-
"border-l-m",
|
|
3593
|
-
"border-r-focus-1",
|
|
3594
|
-
"border-r-focus-2",
|
|
3595
|
-
"border-r-l",
|
|
3596
|
-
"border-r-m",
|
|
3597
|
-
"border-s-focus-1",
|
|
3598
|
-
"border-s-focus-2",
|
|
3599
|
-
"border-s-l",
|
|
3600
|
-
"border-s-m",
|
|
3601
|
-
"border-t-focus-1",
|
|
3602
|
-
"border-t-focus-2",
|
|
3603
|
-
"border-t-l",
|
|
3604
|
-
"border-t-m",
|
|
3570
|
+
"border-width-ch-focus-1",
|
|
3571
|
+
"border-width-ch-focus-2",
|
|
3572
|
+
"border-width-ch-l",
|
|
3573
|
+
"border-width-ch-m",
|
|
3574
|
+
"border-x-width-ch-focus-1",
|
|
3575
|
+
"border-x-width-ch-focus-2",
|
|
3576
|
+
"border-x-width-ch-l",
|
|
3577
|
+
"border-x-width-ch-m",
|
|
3578
|
+
"border-y-width-ch-focus-1",
|
|
3579
|
+
"border-y-width-ch-focus-2",
|
|
3580
|
+
"border-y-width-ch-l",
|
|
3581
|
+
"border-y-width-ch-m",
|
|
3582
|
+
"border-b-width-ch-focus-1",
|
|
3583
|
+
"border-b-width-ch-focus-2",
|
|
3584
|
+
"border-b-width-ch-l",
|
|
3585
|
+
"border-b-width-ch-m",
|
|
3586
|
+
"border-e-width-ch-focus-1",
|
|
3587
|
+
"border-e-width-ch-focus-2",
|
|
3588
|
+
"border-e-width-ch-l",
|
|
3589
|
+
"border-e-width-ch-m",
|
|
3590
|
+
"border-l-width-ch-focus-1",
|
|
3591
|
+
"border-l-width-ch-focus-2",
|
|
3592
|
+
"border-l-width-ch-l",
|
|
3593
|
+
"border-l-width-ch-m",
|
|
3594
|
+
"border-r-width-ch-focus-1",
|
|
3595
|
+
"border-r-width-ch-focus-2",
|
|
3596
|
+
"border-r-width-ch-l",
|
|
3597
|
+
"border-r-width-ch-m",
|
|
3598
|
+
"border-s-width-ch-focus-1",
|
|
3599
|
+
"border-s-width-ch-focus-2",
|
|
3600
|
+
"border-s-width-ch-l",
|
|
3601
|
+
"border-s-width-ch-m",
|
|
3602
|
+
"border-t-width-ch-focus-1",
|
|
3603
|
+
"border-t-width-ch-focus-2",
|
|
3604
|
+
"border-t-width-ch-l",
|
|
3605
|
+
"border-t-width-ch-m",
|
|
3605
3606
|
"border-solid",
|
|
3606
3607
|
"border-dashed",
|
|
3607
3608
|
"border-dotted",
|
|
3608
3609
|
"border-double",
|
|
3609
3610
|
"border-hidden",
|
|
3610
3611
|
"border-none",
|
|
3611
|
-
"border-
|
|
3612
|
-
"border-
|
|
3613
|
-
"border-
|
|
3614
|
-
"border-
|
|
3615
|
-
"border-
|
|
3616
|
-
"border-
|
|
3617
|
-
"border-
|
|
3618
|
-
"border-
|
|
3619
|
-
"border-
|
|
3620
|
-
"border-
|
|
3621
|
-
"border-
|
|
3622
|
-
"border-
|
|
3623
|
-
"border-
|
|
3624
|
-
"border-
|
|
3625
|
-
"border-x-
|
|
3626
|
-
"border-x-
|
|
3627
|
-
"border-x-
|
|
3628
|
-
"border-x-
|
|
3629
|
-
"border-x-
|
|
3630
|
-
"border-x-
|
|
3631
|
-
"border-x-
|
|
3632
|
-
"border-x-
|
|
3633
|
-
"border-
|
|
3634
|
-
"border-
|
|
3635
|
-
"border-
|
|
3636
|
-
"border-
|
|
3637
|
-
"border-
|
|
3638
|
-
"border-
|
|
3639
|
-
"border-y-
|
|
3640
|
-
"border-y-
|
|
3641
|
-
"border-y-
|
|
3642
|
-
"border-y-
|
|
3643
|
-
"border-y-
|
|
3644
|
-
"border-
|
|
3645
|
-
"border-
|
|
3646
|
-
"border-
|
|
3647
|
-
"border-
|
|
3648
|
-
"border-
|
|
3649
|
-
"border-
|
|
3650
|
-
"border-
|
|
3651
|
-
"border-
|
|
3652
|
-
"border-
|
|
3653
|
-
"border-b-
|
|
3654
|
-
"border-b-
|
|
3655
|
-
"border-
|
|
3656
|
-
"border-
|
|
3657
|
-
"border-
|
|
3658
|
-
"border-
|
|
3659
|
-
"border-
|
|
3660
|
-
"border-
|
|
3661
|
-
"border-
|
|
3662
|
-
"border-
|
|
3663
|
-
"border-
|
|
3664
|
-
"border-
|
|
3665
|
-
"border-
|
|
3666
|
-
"border-
|
|
3667
|
-
"border-
|
|
3668
|
-
"border-
|
|
3669
|
-
"border-
|
|
3670
|
-
"border-
|
|
3671
|
-
"border-
|
|
3672
|
-
"border-
|
|
3673
|
-
"border-
|
|
3674
|
-
"border-
|
|
3675
|
-
"border-
|
|
3676
|
-
"border-
|
|
3677
|
-
"border-
|
|
3678
|
-
"border-
|
|
3679
|
-
"border-
|
|
3680
|
-
"border-
|
|
3681
|
-
"border-
|
|
3682
|
-
"border-
|
|
3683
|
-
"border-
|
|
3684
|
-
"border-
|
|
3685
|
-
"border-
|
|
3686
|
-
"border-
|
|
3687
|
-
"border-
|
|
3688
|
-
"border-
|
|
3689
|
-
"border-
|
|
3690
|
-
"border-
|
|
3691
|
-
"border-
|
|
3692
|
-
"border-
|
|
3693
|
-
"border-
|
|
3694
|
-
"border-
|
|
3695
|
-
"border-
|
|
3696
|
-
"border-
|
|
3697
|
-
"border-
|
|
3698
|
-
"border-
|
|
3699
|
-
"border-
|
|
3700
|
-
"border-
|
|
3701
|
-
"border-
|
|
3702
|
-
"border-
|
|
3703
|
-
"border-
|
|
3704
|
-
"border-
|
|
3705
|
-
"border-
|
|
3706
|
-
"border-
|
|
3707
|
-
"border-
|
|
3708
|
-
"border-
|
|
3709
|
-
"border-
|
|
3612
|
+
"border-ch",
|
|
3613
|
+
"border-ch-default-text3",
|
|
3614
|
+
"border-ch-disable",
|
|
3615
|
+
"border-ch-focus-1",
|
|
3616
|
+
"border-ch-focus-2",
|
|
3617
|
+
"border-ch-focus-legacy",
|
|
3618
|
+
"border-ch-hover",
|
|
3619
|
+
"border-ch-hover-text3",
|
|
3620
|
+
"border-ch-hud",
|
|
3621
|
+
"border-ch-negative",
|
|
3622
|
+
"border-ch-press",
|
|
3623
|
+
"border-ch-press-text3",
|
|
3624
|
+
"border-ch-secondary",
|
|
3625
|
+
"border-ch-selected",
|
|
3626
|
+
"border-x-ch",
|
|
3627
|
+
"border-x-ch-default-text3",
|
|
3628
|
+
"border-x-ch-disable",
|
|
3629
|
+
"border-x-ch-focus-1",
|
|
3630
|
+
"border-x-ch-focus-2",
|
|
3631
|
+
"border-x-ch-focus-legacy",
|
|
3632
|
+
"border-x-ch-hover",
|
|
3633
|
+
"border-x-ch-hover-text3",
|
|
3634
|
+
"border-x-ch-hud",
|
|
3635
|
+
"border-x-ch-negative",
|
|
3636
|
+
"border-x-ch-press",
|
|
3637
|
+
"border-x-ch-press-text3",
|
|
3638
|
+
"border-x-ch-secondary",
|
|
3639
|
+
"border-x-ch-selected",
|
|
3640
|
+
"border-y-ch",
|
|
3641
|
+
"border-y-ch-default-text3",
|
|
3642
|
+
"border-y-ch-disable",
|
|
3643
|
+
"border-y-ch-focus-1",
|
|
3644
|
+
"border-y-ch-focus-2",
|
|
3645
|
+
"border-y-ch-focus-legacy",
|
|
3646
|
+
"border-y-ch-hover",
|
|
3647
|
+
"border-y-ch-hover-text3",
|
|
3648
|
+
"border-y-ch-hud",
|
|
3649
|
+
"border-y-ch-negative",
|
|
3650
|
+
"border-y-ch-press",
|
|
3651
|
+
"border-y-ch-press-text3",
|
|
3652
|
+
"border-y-ch-secondary",
|
|
3653
|
+
"border-y-ch-selected",
|
|
3654
|
+
"border-b-ch",
|
|
3655
|
+
"border-b-ch-default-text3",
|
|
3656
|
+
"border-b-ch-disable",
|
|
3657
|
+
"border-b-ch-focus-1",
|
|
3658
|
+
"border-b-ch-focus-2",
|
|
3659
|
+
"border-b-ch-focus-legacy",
|
|
3660
|
+
"border-b-ch-hover",
|
|
3661
|
+
"border-b-ch-hover-text3",
|
|
3662
|
+
"border-b-ch-hud",
|
|
3663
|
+
"border-b-ch-negative",
|
|
3664
|
+
"border-b-ch-press",
|
|
3665
|
+
"border-b-ch-press-text3",
|
|
3666
|
+
"border-b-ch-secondary",
|
|
3667
|
+
"border-b-ch-selected",
|
|
3668
|
+
"border-e-ch",
|
|
3669
|
+
"border-e-ch-default-text3",
|
|
3670
|
+
"border-e-ch-disable",
|
|
3671
|
+
"border-e-ch-focus-1",
|
|
3672
|
+
"border-e-ch-focus-2",
|
|
3673
|
+
"border-e-ch-focus-legacy",
|
|
3674
|
+
"border-e-ch-hover",
|
|
3675
|
+
"border-e-ch-hover-text3",
|
|
3676
|
+
"border-e-ch-hud",
|
|
3677
|
+
"border-e-ch-negative",
|
|
3678
|
+
"border-e-ch-press",
|
|
3679
|
+
"border-e-ch-press-text3",
|
|
3680
|
+
"border-e-ch-secondary",
|
|
3681
|
+
"border-e-ch-selected",
|
|
3682
|
+
"border-l-ch",
|
|
3683
|
+
"border-l-ch-default-text3",
|
|
3684
|
+
"border-l-ch-disable",
|
|
3685
|
+
"border-l-ch-focus-1",
|
|
3686
|
+
"border-l-ch-focus-2",
|
|
3687
|
+
"border-l-ch-focus-legacy",
|
|
3688
|
+
"border-l-ch-hover",
|
|
3689
|
+
"border-l-ch-hover-text3",
|
|
3690
|
+
"border-l-ch-hud",
|
|
3691
|
+
"border-l-ch-negative",
|
|
3692
|
+
"border-l-ch-press",
|
|
3693
|
+
"border-l-ch-press-text3",
|
|
3694
|
+
"border-l-ch-secondary",
|
|
3695
|
+
"border-l-ch-selected",
|
|
3696
|
+
"border-r-ch",
|
|
3697
|
+
"border-r-ch-default-text3",
|
|
3698
|
+
"border-r-ch-disable",
|
|
3699
|
+
"border-r-ch-focus-1",
|
|
3700
|
+
"border-r-ch-focus-2",
|
|
3701
|
+
"border-r-ch-focus-legacy",
|
|
3702
|
+
"border-r-ch-hover",
|
|
3703
|
+
"border-r-ch-hover-text3",
|
|
3704
|
+
"border-r-ch-hud",
|
|
3705
|
+
"border-r-ch-negative",
|
|
3706
|
+
"border-r-ch-press",
|
|
3707
|
+
"border-r-ch-press-text3",
|
|
3708
|
+
"border-r-ch-secondary",
|
|
3709
|
+
"border-r-ch-selected",
|
|
3710
|
+
"border-s-ch",
|
|
3711
|
+
"border-s-ch-default-text3",
|
|
3712
|
+
"border-s-ch-disable",
|
|
3713
|
+
"border-s-ch-focus-1",
|
|
3714
|
+
"border-s-ch-focus-2",
|
|
3715
|
+
"border-s-ch-focus-legacy",
|
|
3716
|
+
"border-s-ch-hover",
|
|
3717
|
+
"border-s-ch-hover-text3",
|
|
3718
|
+
"border-s-ch-hud",
|
|
3719
|
+
"border-s-ch-negative",
|
|
3720
|
+
"border-s-ch-press",
|
|
3721
|
+
"border-s-ch-press-text3",
|
|
3722
|
+
"border-s-ch-secondary",
|
|
3723
|
+
"border-s-ch-selected",
|
|
3724
|
+
"border-t-ch",
|
|
3725
|
+
"border-t-ch-default-text3",
|
|
3726
|
+
"border-t-ch-disable",
|
|
3727
|
+
"border-t-ch-focus-1",
|
|
3728
|
+
"border-t-ch-focus-2",
|
|
3729
|
+
"border-t-ch-focus-legacy",
|
|
3730
|
+
"border-t-ch-hover",
|
|
3731
|
+
"border-t-ch-hover-text3",
|
|
3732
|
+
"border-t-ch-hud",
|
|
3733
|
+
"border-t-ch-negative",
|
|
3734
|
+
"border-t-ch-press",
|
|
3735
|
+
"border-t-ch-press-text3",
|
|
3736
|
+
"border-t-ch-secondary",
|
|
3737
|
+
"border-t-ch-selected",
|
|
3710
3738
|
"border-opacity-0",
|
|
3711
3739
|
"border-opacity-10",
|
|
3712
3740
|
"border-opacity-100",
|
|
@@ -5078,8 +5106,8 @@ exports[`unstable_createTailwindConfigTokenV2 > list of classes 1`] = `
|
|
|
5078
5106
|
"text-heading-xxxl",
|
|
5079
5107
|
"text-heading-xxxs",
|
|
5080
5108
|
"text-paragraph",
|
|
5081
|
-
"font-bold",
|
|
5082
|
-
"font-regular",
|
|
5109
|
+
"font-ch-bold",
|
|
5110
|
+
"font-ch-regular",
|
|
5083
5111
|
"uppercase",
|
|
5084
5112
|
"lowercase",
|
|
5085
5113
|
"capitalize",
|
package/src/index.ts
CHANGED
|
@@ -143,9 +143,11 @@ export function createTailwindConfig({
|
|
|
143
143
|
},
|
|
144
144
|
...(unstableTokenV2
|
|
145
145
|
? {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
146
|
+
extend: {
|
|
147
|
+
borderWidth: borderWidthV2,
|
|
148
|
+
fontWeight: fontWeightV2,
|
|
149
|
+
fontSize: fontSizeV2,
|
|
150
|
+
},
|
|
149
151
|
}
|
|
150
152
|
: {}),
|
|
151
153
|
},
|
package/src/tokenV2.ts
CHANGED
|
@@ -2,6 +2,7 @@ import light from '@charcoal-ui/theme/unstable-tokens/css-variables.json' with {
|
|
|
2
2
|
import type { Config } from 'tailwindcss'
|
|
3
3
|
import {
|
|
4
4
|
flattenKey as flattenKeys,
|
|
5
|
+
flattenKeyWithoutDefault,
|
|
5
6
|
mapDefaultKey as mapDefaultKeys,
|
|
6
7
|
} from './util'
|
|
7
8
|
|
|
@@ -51,14 +52,16 @@ export function unstable_createTailwindConfigTokenV2(): Omit<
|
|
|
51
52
|
theme: {
|
|
52
53
|
// borderWidth.m -> border-m
|
|
53
54
|
// borderWidth.focus.1 -> border-focus-1
|
|
54
|
-
borderWidth:
|
|
55
|
+
borderWidth: flattenKeyWithoutDefault({
|
|
56
|
+
'width-ch': flattenKeys(light['border-width']), // unstable border width token
|
|
57
|
+
}),
|
|
55
58
|
borderRadius: light.radius,
|
|
56
|
-
borderColor: flattenKeys(colors.border),
|
|
59
|
+
borderColor: flattenKeyWithoutDefault({ ch: flattenKeys(colors.border) }),
|
|
57
60
|
|
|
58
61
|
colors,
|
|
59
62
|
|
|
60
63
|
fontSize,
|
|
61
|
-
fontWeight: light.text['font-weight'],
|
|
64
|
+
fontWeight: flattenKeys({ ch: light.text['font-weight'] }),
|
|
62
65
|
|
|
63
66
|
spacing,
|
|
64
67
|
gap: spacing,
|
package/src/util.ts
CHANGED
|
@@ -85,7 +85,7 @@ export const mapDefaultKey = <O extends object>(o: O) => {
|
|
|
85
85
|
export const flattenKey = <O extends object>(
|
|
86
86
|
o: O,
|
|
87
87
|
join?: (key: string) => boolean,
|
|
88
|
-
) => {
|
|
88
|
+
): Record<string, unknown> => {
|
|
89
89
|
return Object.fromEntries(
|
|
90
90
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
91
91
|
// @ts-ignore
|
|
@@ -97,3 +97,28 @@ export const flattenKey = <O extends object>(
|
|
|
97
97
|
}),
|
|
98
98
|
)
|
|
99
99
|
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* `DEFAULT` はkey名に結合しない
|
|
103
|
+
*/
|
|
104
|
+
export const flattenKeyWithoutDefault = <O extends object>(
|
|
105
|
+
o: O,
|
|
106
|
+
join?: (key: string) => boolean,
|
|
107
|
+
): Record<string, unknown> => {
|
|
108
|
+
return Object.fromEntries(
|
|
109
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
110
|
+
// @ts-ignore
|
|
111
|
+
Object.entries(o).flatMap(([key, v]) => {
|
|
112
|
+
if (typeof v === 'string') return [[key, v]]
|
|
113
|
+
return Object.entries(v as object).map(([kk, vv]) => {
|
|
114
|
+
const isDefaultKey = kk === 'DEFAULT' || kk === 'default'
|
|
115
|
+
const outputKey = isDefaultKey
|
|
116
|
+
? key
|
|
117
|
+
: (join?.(key) ?? true)
|
|
118
|
+
? [key, kk].join('-')
|
|
119
|
+
: kk
|
|
120
|
+
return [outputKey, vv]
|
|
121
|
+
})
|
|
122
|
+
}),
|
|
123
|
+
)
|
|
124
|
+
}
|