@charcoal-ui/tailwind-config 5.0.0-beta.5 → 5.0.0-beta.6

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.
@@ -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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"}
@@ -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
@@ -28,8 +28,8 @@ let __charcoal_ui_theme = require("@charcoal-ui/theme");
28
28
  __charcoal_ui_theme = __toESM(__charcoal_ui_theme);
29
29
  let __charcoal_ui_utils = require("@charcoal-ui/utils");
30
30
  __charcoal_ui_utils = __toESM(__charcoal_ui_utils);
31
- let tailwindcss_plugin = require("tailwindcss/plugin");
32
- tailwindcss_plugin = __toESM(tailwindcss_plugin);
31
+ let tailwindcss_plugin_js = require("tailwindcss/plugin.js");
32
+ tailwindcss_plugin_js = __toESM(tailwindcss_plugin_js);
33
33
  let __charcoal_ui_theme_unstable_tokens_css_variables_json = require("@charcoal-ui/theme/unstable-tokens/css-variables.json");
34
34
  __charcoal_ui_theme_unstable_tokens_css_variables_json = __toESM(__charcoal_ui_theme_unstable_tokens_css_variables_json);
35
35
  let __charcoal_ui_icon_files_v2_datauri = require("@charcoal-ui/icon-files/v2-datauri");
@@ -206,7 +206,7 @@ function withPrefixes(...parts) {
206
206
  function cssVariableColorPlugin(themeMap, cssVariablesV1) {
207
207
  const { ":root": _defaultTheme,...otherThemes } = themeMap;
208
208
  const definitions = defineCssVariables(otherThemes);
209
- return (0, tailwindcss_plugin.default)(({ addBase }) => {
209
+ return (0, tailwindcss_plugin_js.default)(({ addBase }) => {
210
210
  addBase(definitions);
211
211
  if (cssVariablesV1) addBase(defineCssVariablesV1(themeMap));
212
212
  });
@@ -233,7 +233,7 @@ const VAR_PREFIX = "--tailwind-gradient-";
233
233
  function cssVariableColorPlugin$1(gradients, effects, selectorOrMediaQuery) {
234
234
  const utilities = getUtilities(gradients, effects);
235
235
  const classRules = (0, __charcoal_ui_utils.mapObject)(utilities, (name) => [`.bg-${name}`, { backgroundImage: `var(${VAR_PREFIX}${name})` }]);
236
- return (0, tailwindcss_plugin.default)(({ addBase, addUtilities }) => {
236
+ return (0, tailwindcss_plugin_js.default)(({ addBase, addUtilities }) => {
237
237
  const css = (0, __charcoal_ui_utils.mapKeys)(utilities, (name) => `${VAR_PREFIX}${name}`);
238
238
  if (selectorOrMediaQuery.startsWith("@media")) addBase({ [selectorOrMediaQuery]: { ":root": css } });
239
239
  else addBase({ [selectorOrMediaQuery]: css });
@@ -289,7 +289,7 @@ const typographyStyle = (style) => {
289
289
  }
290
290
  };
291
291
  };
292
- const typographyPlugin = (0, tailwindcss_plugin.default)(({ addUtilities }) => {
292
+ const typographyPlugin = (0, tailwindcss_plugin_js.default)(({ addUtilities }) => {
293
293
  addUtilities({
294
294
  ...(0, __charcoal_ui_utils.mapObject)(__charcoal_ui_foundation.TYPOGRAPHY_SIZE, (fontSize, style) => [`.typography-${fontSize}`, typographyStyle(style)]),
295
295
  ".preserve-half-leading": {
@@ -363,10 +363,10 @@ const createIconUtilities = ({ v2 = false }) => {
363
363
  }
364
364
  return newUtilities;
365
365
  };
366
- const charcoalIconsV2 = (0, tailwindcss_plugin.default)(({ addUtilities }) => {
366
+ const charcoalIconsV2 = (0, tailwindcss_plugin_js.default)(({ addUtilities }) => {
367
367
  addUtilities(createIconUtilities({ v2: true }));
368
368
  });
369
- const charcoalIconsV1 = (0, tailwindcss_plugin.default)(({ addUtilities }) => {
369
+ const charcoalIconsV1 = (0, tailwindcss_plugin_js.default)(({ addUtilities }) => {
370
370
  addUtilities(createIconUtilities({ v2: false }));
371
371
  });
372
372
 
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","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'\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'\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'\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'\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'\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',\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 = ({ v2 = false }: { v2?: boolean }) => {\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 = plugin(({ addUtilities }) => {\n addUtilities(createIconUtilities({ v2: true }))\n})\n\nexport const charcoalIconsV1 = plugin(({ addUtilities }) => {\n addUtilities(createIconUtilities({ v2: false }))\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","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',\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 = ({ v2 = false }: { v2?: boolean }) => {\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 = plugin(({ addUtilities }) => {\n addUtilities(createIconUtilities({ v2: true }))\n})\n\nexport const charcoalIconsV1 = plugin(({ addUtilities }) => {\n addUtilities(createIconUtilities({ v2: false }))\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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"}
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  import { BORDER_RADIUS, COLUMN_UNIT, GUTTER_UNIT, SPACING, TYPOGRAPHY_SIZE } from "@charcoal-ui/foundation";
2
2
  import { light } from "@charcoal-ui/theme";
3
3
  import { applyEffect, applyEffectToGradient, customPropertyToken, filterObject, flatMapObject, gradient, halfLeading, mapKeys, mapObject, px } from "@charcoal-ui/utils";
4
- import plugin from "tailwindcss/plugin";
5
- import light$1 from "@charcoal-ui/theme/unstable-tokens/css-variables.json";
4
+ import plugin from "tailwindcss/plugin.js";
5
+ import light$1 from "@charcoal-ui/theme/unstable-tokens/css-variables.json" with { type: "json" };
6
6
  import iconsV2 from "@charcoal-ui/icon-files/v2-datauri";
7
7
  import iconsV1 from "@charcoal-ui/icon-files/v1-datauri";
8
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["varName: keyof CSSVariables","cssVariableColorPlugin","colors","effect","light","flattenKeys","mapDefaultKeys","newUtilities: { [key: string]: CSSRuleObject }","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'\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'\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'\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'\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'\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',\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 = ({ v2 = false }: { v2?: boolean }) => {\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 = plugin(({ addUtilities }) => {\n addUtilities(createIconUtilities({ v2: true }))\n})\n\nexport const charcoalIconsV1 = plugin(({ addUtilities }) => {\n addUtilities(createIconUtilities({ v2: false }))\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.mjs","names":["varName: keyof CSSVariables","cssVariableColorPlugin","colors","effect","light","flattenKeys","mapDefaultKeys","newUtilities: { [key: string]: CSSRuleObject }","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',\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 = ({ v2 = false }: { v2?: boolean }) => {\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 = plugin(({ addUtilities }) => {\n addUtilities(createIconUtilities({ v2: true }))\n})\n\nexport const charcoalIconsV1 = plugin(({ addUtilities }) => {\n addUtilities(createIconUtilities({ v2: false }))\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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@charcoal-ui/tailwind-config",
3
- "version": "5.0.0-beta.5",
3
+ "version": "5.0.0-beta.6",
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.0.0-beta.5",
30
- "@charcoal-ui/utils": "5.0.0-beta.5",
31
- "@charcoal-ui/icon-files": "5.0.0-beta.5",
32
- "@charcoal-ui/theme": "5.0.0-beta.5"
29
+ "@charcoal-ui/foundation": "5.0.0-beta.6",
30
+ "@charcoal-ui/icon-files": "5.0.0-beta.6",
31
+ "@charcoal-ui/theme": "5.0.0-beta.6",
32
+ "@charcoal-ui/utils": "5.0.0-beta.6"
33
33
  },
34
34
  "peerDependencies": {
35
35
  "csstype": ">=3.0.0",
@@ -29,7 +29,7 @@ export class TailwindBuild {
29
29
  } else {
30
30
  return []
31
31
  }
32
- })
32
+ }),
33
33
  )
34
34
 
35
35
  // 1 個のクラスは複数のルールを持つ場合がある( ::before など )ので配列で突っ込む
@@ -6,7 +6,7 @@ import {
6
6
  flatMapObject,
7
7
  mapObject,
8
8
  } from '@charcoal-ui/utils'
9
- import plugin from 'tailwindcss/plugin'
9
+ import plugin from 'tailwindcss/plugin.js'
10
10
  import { mergeEffect } from '../foundation'
11
11
  import { CSSVariableName, CSSVariables, Definition, ThemeMap } from '../types'
12
12
  import { COLOR_PREFIX, isSingleColor } from './utils'
@@ -18,7 +18,7 @@ import { defineCssVariablesV1 } from './pluginTokenV1'
18
18
  */
19
19
  export default function cssVariableColorPlugin(
20
20
  themeMap: ThemeMap,
21
- cssVariablesV1: boolean
21
+ cssVariablesV1: boolean,
22
22
  ): ReturnType<typeof plugin> {
23
23
  // `:root` 以外のケースで各 CSS Variable がどういう値を取るかを定義する
24
24
  const { ':root': _defaultTheme, ...otherThemes } = themeMap
@@ -64,7 +64,7 @@ export const isPresent = <T>(value: T): value is NonNullable<T> => value != null
64
64
  */
65
65
  export function defineThemeVariables(
66
66
  colorParams: Partial<CharcoalAbstractTheme['color']>,
67
- effectParams?: Partial<CharcoalAbstractTheme['effect']>
67
+ effectParams?: Partial<CharcoalAbstractTheme['effect']>,
68
68
  ) {
69
69
  return function toCssObject(props: {
70
70
  theme: Pick<CharcoalAbstractTheme, 'effect'>
@@ -14,7 +14,7 @@ describe('colors/colorsToTailwindConfig', () => {
14
14
  { color: '#0000ff', ratio: 67 },
15
15
  ],
16
16
  },
17
- effects
17
+ effects,
18
18
  )
19
19
 
20
20
  it('generates colors for tailwind.config.js', () => {
@@ -11,7 +11,7 @@ import { AnyColorTheme, COLOR_PREFIX, isSingleColor } from './utils'
11
11
  export function colorsToTailwindConfig(
12
12
  version: TailwindVersion,
13
13
  colors: AnyColorTheme,
14
- effects: MergedEffect
14
+ effects: MergedEffect,
15
15
  ): NonNullable<Config['theme']>['colors'] {
16
16
  const targetColors = filterObject(colors, isSingleColor)
17
17
  const DEFAULT = getDefaultKeyName(version)
@@ -70,7 +70,7 @@ export const Colors: React.FC = () => {
70
70
  bgColorClass={`bg-${colorName}-${modifier}`}
71
71
  label={`-${modifier}`}
72
72
  />
73
- ) : null
73
+ ) : null,
74
74
  )}
75
75
  </>
76
76
  ) : (
@@ -49,14 +49,14 @@ export const Gradients: React.FC = () => {
49
49
  {Object.keys(effectTypes).map(
50
50
  (effectType) =>
51
51
  utilityClassNames.includes(
52
- `${gradientName}-${direction}-${effectType}`
52
+ `${gradientName}-${direction}-${effectType}`,
53
53
  ) && (
54
54
  <GradientBox
55
55
  gradientClassName={`${gradientName}-${direction}-${effectType}`}
56
56
  label={`-${effectType}`}
57
57
  key={effectType}
58
58
  />
59
- )
59
+ ),
60
60
  )}
61
61
  </div>
62
62
  ))}
@@ -14,7 +14,7 @@ export const getUniqueGradientNames = (utilityClasses: string[]): string[] => {
14
14
  * like `bottom`
15
15
  */
16
16
  const directionInClassName = directions.find((direction) =>
17
- classNameParts.includes(direction)
17
+ classNameParts.includes(direction),
18
18
  )
19
19
  if (!directionInClassName) return null
20
20
 
@@ -23,7 +23,7 @@ export const getUniqueGradientNames = (utilityClasses: string[]): string[] => {
23
23
  */
24
24
  const classNameWithoutModifiers = classNameParts.slice(
25
25
  0,
26
- classNameParts.indexOf(directionInClassName)
26
+ classNameParts.indexOf(directionInClassName),
27
27
  )
28
28
 
29
29
  /**
@@ -31,7 +31,7 @@ export const getUniqueGradientNames = (utilityClasses: string[]): string[] => {
31
31
  */
32
32
  return classNameWithoutModifiers.join('-')
33
33
  })
34
- .filter((value): value is string => typeof value === 'string')
35
- ).values()
34
+ .filter((value): value is string => typeof value === 'string'),
35
+ ).values(),
36
36
  )
37
37
  }
@@ -14,7 +14,7 @@ export const Screens: React.FC = () => {
14
14
  @media (<span className="text-text2">min-width: {value}</span>)
15
15
  </p>
16
16
  </div>
17
- )
17
+ ),
18
18
  )}
19
19
  </div>
20
20
  )
@@ -21,6 +21,6 @@ type SizeClassValue = Readonly<{
21
21
  }>
22
22
  export const sizeClasses: Record<string, SizeClassValue> = Object.fromEntries(
23
23
  Object.entries(utilityClasses).filter(
24
- ([className]) => className !== 'preserve-half-leading'
25
- )
24
+ ([className]) => className !== 'preserve-half-leading',
25
+ ),
26
26
  ) as Record<string, SizeClassValue>
@@ -14,7 +14,7 @@ describe('gradient/plugin/getUtilities', () => {
14
14
  type: 'opacity',
15
15
  opacity: 0.5,
16
16
  },
17
- }
17
+ },
18
18
  )
19
19
 
20
20
  it('generates mapping for utility name => linear-gradient', () => {
@@ -1,4 +1,4 @@
1
- import plugin from 'tailwindcss/plugin'
1
+ import plugin from 'tailwindcss/plugin.js'
2
2
  import { camelToKebab } from '../util'
3
3
  import { GradientMaterial } from '@charcoal-ui/foundation'
4
4
  import { ThemeColorGradient } from '@charcoal-ui/theme'
@@ -18,7 +18,7 @@ const VAR_PREFIX = '--tailwind-gradient-'
18
18
  export default function cssVariableColorPlugin(
19
19
  gradients: ThemeColorGradient,
20
20
  effects: MergedEffect,
21
- selectorOrMediaQuery: string
21
+ selectorOrMediaQuery: string,
22
22
  ) {
23
23
  const utilities = getUtilities(gradients, effects)
24
24
 
@@ -71,12 +71,12 @@ type LinearGradient = `linear-gradient(${string})`
71
71
 
72
72
  export function getUtilities(
73
73
  gradients: Record<string, GradientMaterial>,
74
- effect: MergedEffect
74
+ effect: MergedEffect,
75
75
  ): Utilities {
76
76
  const effects = Object.entries(effect)
77
77
  const directions = Object.entries(DIRECTIONS) as [
78
78
  GradientDirection,
79
- Values<typeof DIRECTIONS>
79
+ Values<typeof DIRECTIONS>,
80
80
  ][]
81
81
 
82
82
  return flatMapObject(gradients, (name, colors) =>
@@ -86,7 +86,7 @@ export function getUtilities(
86
86
 
87
87
  if (!('backgroundImage' in style)) {
88
88
  throw new Error(
89
- `Could not generate linear-gradient() from ${name} ${direction} ${className}`
89
+ `Could not generate linear-gradient() from ${name} ${direction} ${className}`,
90
90
  )
91
91
  }
92
92
 
@@ -107,14 +107,14 @@ export function getUtilities(
107
107
  toLinearGradient(applyEffectToGradient(effect)(colors)),
108
108
  ]),
109
109
  ]
110
- })
110
+ }),
111
111
  )
112
112
  }
113
113
 
114
114
  function createUtilityName(
115
115
  gradientName: string,
116
116
  direction: Values<typeof DIRECTIONS>,
117
- suffix = ''
117
+ suffix = '',
118
118
  ) {
119
119
  return [camelToKebab(gradientName), direction, suffix]
120
120
  .filter(Boolean)
package/src/icons.test.ts CHANGED
@@ -26,7 +26,7 @@ describe('createTailwindConfigIconsV2', async () => {
26
26
  @import 'tailwindcss/base';
27
27
  @import 'tailwindcss/utilities';
28
28
  @import 'tailwindcss/components';
29
- `
29
+ `,
30
30
  )
31
31
  test('config object', () => {
32
32
  expect(config).toMatchSnapshot()
@@ -48,7 +48,7 @@ describe('createTailwindConfigIconsV1', async () => {
48
48
  @import 'tailwindcss/base';
49
49
  @import 'tailwindcss/utilities';
50
50
  @import 'tailwindcss/components';
51
- `
51
+ `,
52
52
  )
53
53
  test('config object', () => {
54
54
  expect(config).toMatchSnapshot()
package/src/icons.ts CHANGED
@@ -1,4 +1,4 @@
1
- import plugin from 'tailwindcss/plugin'
1
+ import plugin from 'tailwindcss/plugin.js'
2
2
  import iconsV2 from '@charcoal-ui/icon-files/v2-datauri'
3
3
  import iconsV1 from '@charcoal-ui/icon-files/v1-datauri'
4
4
  import { CSSRuleObject } from 'tailwindcss/types/config'
package/src/index.test.ts CHANGED
@@ -25,7 +25,7 @@ describe('tailwind.config.js', () => {
25
25
  @import 'tailwindcss/base';
26
26
  @import 'tailwindcss/utilities';
27
27
  @import 'tailwindcss/components';
28
- `
28
+ `,
29
29
  )
30
30
  })
31
31
 
@@ -41,7 +41,7 @@ describe('tailwind.config.js', () => {
41
41
  const varName = '--tailwind-color-background1'
42
42
 
43
43
  expect(result.getStylesByClassName('bg-background1')).toContainEqual(
44
- expect.stringContaining(`background-color: var(${varName}, #ffffff);`)
44
+ expect.stringContaining(`background-color: var(${varName}, #ffffff);`),
45
45
  )
46
46
 
47
47
  expect(result.getCssVariable(varName)).toHaveLength(1)
@@ -59,7 +59,7 @@ describe('tailwind.config.js', () => {
59
59
  const varName = '--tailwind-gradient-surface5-left-hover'
60
60
 
61
61
  expect(
62
- result.getStylesByClassName('bg-surface5-left-hover')?.[0]
62
+ result.getStylesByClassName('bg-surface5-left-hover')?.[0],
63
63
  ).toContain(`background-image: var(${varName});`)
64
64
 
65
65
  expect(result.getCssVariable(varName)).toHaveLength(2)
package/src/index.ts CHANGED
@@ -87,14 +87,14 @@ export function createTailwindConfig({
87
87
  ...colorsToTailwindConfig(
88
88
  version,
89
89
  mapObject(defaultTheme.border, (k, v) => [k, v.color]),
90
- effects
90
+ effects,
91
91
  ),
92
92
  ...borderColorV2,
93
93
  },
94
94
  spacing: {
95
95
  ...mapObject(
96
96
  SPACING,
97
- (name, pixel) => [name, px(pixel)] as [string, string]
97
+ (name, pixel) => [name, px(pixel)] as [string, string],
98
98
  ),
99
99
  ...spacingV2,
100
100
  },
@@ -112,7 +112,7 @@ export function createTailwindConfig({
112
112
  ...styles,
113
113
  [`col-span-${i}`]: px(COLUMN_UNIT * i + GUTTER_UNIT * (i - 1)),
114
114
  }),
115
- {}
115
+ {},
116
116
  ),
117
117
 
118
118
  /**
@@ -123,7 +123,7 @@ export function createTailwindConfig({
123
123
  ...styles,
124
124
  [`${i}/${GRID_COUNT}`]: `${(i / GRID_COUNT) * 100}%`,
125
125
  }),
126
- {}
126
+ {},
127
127
  ),
128
128
  ...widthV2,
129
129
  },
@@ -134,7 +134,7 @@ export function createTailwindConfig({
134
134
  borderRadius: {
135
135
  ...mapObject(
136
136
  BORDER_RADIUS,
137
- (name, value) => [name, px(value)] as [string, string]
137
+ (name, value) => [name, px(value)] as [string, string],
138
138
  ),
139
139
  ...borderRadiusV2,
140
140
  },
@@ -163,8 +163,8 @@ export function createTailwindConfig({
163
163
  cssVariableGradientPlugin(
164
164
  theme.gradientColor,
165
165
  mergeEffect(theme),
166
- selectorOrMediaQuery
167
- )
166
+ selectorOrMediaQuery,
167
+ ),
168
168
  ),
169
169
  ...(iconsV2 ? [charcoalIconsV2] : []),
170
170
  ...(iconsV1 ? [charcoalIconsV1] : []),
@@ -10,7 +10,7 @@ describe('unstable_createTailwindConfigTokenV2', async () => {
10
10
  @import 'tailwindcss/base';
11
11
  @import 'tailwindcss/utilities';
12
12
  @import 'tailwindcss/components';
13
- `
13
+ `,
14
14
  )
15
15
  test('config object', () => {
16
16
  expect(config).toMatchSnapshot()
package/src/tokenV2.ts CHANGED
@@ -1,4 +1,4 @@
1
- import light from '@charcoal-ui/theme/unstable-tokens/css-variables.json'
1
+ import light from '@charcoal-ui/theme/unstable-tokens/css-variables.json' with { type: 'json' }
2
2
  import type { Config } from 'tailwindcss'
3
3
  import {
4
4
  flattenKey as flattenKeys,
@@ -36,7 +36,7 @@ export function unstable_createTailwindConfigTokenV2(): Omit<
36
36
  ],
37
37
  ]
38
38
  })
39
- })
39
+ }),
40
40
  ) as NonNullable<Config['theme']>['fontSize']
41
41
 
42
42
  // space.target.s -> p-target-s
@@ -1,4 +1,4 @@
1
- import plugin from 'tailwindcss/plugin'
1
+ import plugin from 'tailwindcss/plugin.js'
2
2
  import { TypographyDescriptor, TYPOGRAPHY_SIZE } from '@charcoal-ui/foundation'
3
3
  import { halfLeading, mapObject, px } from '@charcoal-ui/utils'
4
4
 
@@ -53,7 +53,7 @@ const typographyPlugin = plugin(({ addUtilities }) => {
53
53
  {
54
54
  // @ts-expect-error FIXME
55
55
  variants: ['responsive'],
56
- }
56
+ },
57
57
  )
58
58
  })
59
59
 
package/src/util.ts CHANGED
@@ -84,7 +84,7 @@ export const mapDefaultKey = <O extends object>(o: O) => {
84
84
 
85
85
  export const flattenKey = <O extends object>(
86
86
  o: O,
87
- join?: (key: string) => boolean
87
+ join?: (key: string) => boolean,
88
88
  ) => {
89
89
  return Object.fromEntries(
90
90
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -92,8 +92,8 @@ export const flattenKey = <O extends object>(
92
92
  Object.entries(o).flatMap(([key, v]) => {
93
93
  if (typeof v === 'string') return [[key, v]]
94
94
  return Object.entries(v as object).map(([kk, vv]) => {
95
- return [join?.(key) ?? true ? [key, kk].join('-') : kk, vv]
95
+ return [(join?.(key) ?? true) ? [key, kk].join('-') : kk, vv]
96
96
  })
97
- })
97
+ }),
98
98
  )
99
99
  }