@charcoal-ui/tailwind-config 1.0.1-alpha.0 → 1.0.1-alpha.3

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.
Files changed (69) hide show
  1. package/README.md +10 -0
  2. package/dist/_lib/compat.d.ts +14 -0
  3. package/dist/_lib/compat.d.ts.map +1 -0
  4. package/dist/docs/borderRadius/BorderRadius.d.ts +3 -0
  5. package/dist/docs/borderRadius/BorderRadius.d.ts.map +1 -0
  6. package/dist/docs/borderRadius/index.d.ts +3 -0
  7. package/dist/docs/borderRadius/index.d.ts.map +1 -0
  8. package/dist/docs/colors/Colors.d.ts +3 -0
  9. package/dist/docs/colors/Colors.d.ts.map +1 -0
  10. package/dist/docs/colors/TextBgColor.story.d.ts +27 -0
  11. package/dist/docs/colors/TextBgColor.story.d.ts.map +1 -0
  12. package/dist/docs/colors/TextColors.d.ts +3 -0
  13. package/dist/docs/colors/TextColors.d.ts.map +1 -0
  14. package/dist/docs/colors/index.d.ts +4 -0
  15. package/dist/docs/colors/index.d.ts.map +1 -0
  16. package/dist/docs/gradient/Gradients.d.ts +3 -0
  17. package/dist/docs/gradient/Gradients.d.ts.map +1 -0
  18. package/dist/docs/gradient/index.d.ts +10 -0
  19. package/dist/docs/gradient/index.d.ts.map +1 -0
  20. package/dist/docs/gradient/utils.d.ts +2 -0
  21. package/dist/docs/gradient/utils.d.ts.map +1 -0
  22. package/dist/docs/index.d.ts +9 -0
  23. package/dist/docs/index.d.ts.map +1 -0
  24. package/dist/docs/screens/Screens.d.ts +3 -0
  25. package/dist/docs/screens/Screens.d.ts.map +1 -0
  26. package/dist/docs/screens/index.d.ts +3 -0
  27. package/dist/docs/screens/index.d.ts.map +1 -0
  28. package/dist/docs/spacing/Spacing.d.ts +3 -0
  29. package/dist/docs/spacing/Spacing.d.ts.map +1 -0
  30. package/dist/docs/spacing/index.d.ts +3 -0
  31. package/dist/docs/spacing/index.d.ts.map +1 -0
  32. package/dist/docs/typography/HalfLeading.d.ts +3 -0
  33. package/dist/docs/typography/HalfLeading.d.ts.map +1 -0
  34. package/dist/docs/typography/Sizes.d.ts +3 -0
  35. package/dist/docs/typography/Sizes.d.ts.map +1 -0
  36. package/dist/docs/typography/index.d.ts +9 -0
  37. package/dist/docs/typography/index.d.ts.map +1 -0
  38. package/dist/index.cjs.map +1 -1
  39. package/dist/index.modern.js.map +1 -1
  40. package/dist/index.module.js.map +1 -1
  41. package/dist/util.d.ts +32 -0
  42. package/dist/util.d.ts.map +1 -1
  43. package/package.json +4 -3
  44. package/src/__snapshots__/index.test.ts.snap +320 -0
  45. package/src/_lib/compat.ts +12 -0
  46. package/src/docs/borderRadius/BorderRadius.tsx +27 -0
  47. package/src/docs/borderRadius/index.story.mdx +10 -0
  48. package/src/docs/borderRadius/index.ts +5 -0
  49. package/src/docs/colors/Colors.tsx +85 -0
  50. package/src/docs/colors/TextBgColor.story.tsx +41 -0
  51. package/src/docs/colors/TextColors.tsx +22 -0
  52. package/src/docs/colors/index.story.mdx +27 -0
  53. package/src/docs/colors/index.ts +6 -0
  54. package/src/docs/gradient/Gradients.tsx +67 -0
  55. package/src/docs/gradient/index.story.mdx +12 -0
  56. package/src/docs/gradient/index.ts +26 -0
  57. package/src/docs/gradient/utils.ts +37 -0
  58. package/src/docs/index.ts +34 -0
  59. package/src/docs/screens/Screens.tsx +21 -0
  60. package/src/docs/screens/index.story.mdx +10 -0
  61. package/src/docs/screens/index.ts +5 -0
  62. package/src/docs/spacing/Spacing.tsx +17 -0
  63. package/src/docs/spacing/index.story.mdx +10 -0
  64. package/src/docs/spacing/index.ts +5 -0
  65. package/src/docs/typography/HalfLeading.tsx +28 -0
  66. package/src/docs/typography/Sizes.tsx +22 -0
  67. package/src/docs/typography/index.story.mdx +26 -0
  68. package/src/docs/typography/index.ts +26 -0
  69. package/src/util.ts +32 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.module.js","sources":["../src/foundation.ts","../src/util.ts","../src/colors/utils.ts","../src/colors/toTailwindConfig.ts","../src/colors/plugin.ts","../src/gradient/plugin.ts","../src/typography/plugin.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 { TailwindConfig } from 'tailwindcss/tailwind-config'\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(\n version: TailwindVersion\n): Partial<TailwindConfig> {\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 mapKeys<V, K extends string>(\n object: Record<string, V>,\n callback: (key: string) => K\n) {\n return Object.fromEntries(\n Object.entries(object).map(([key, value]) => [callback(key), value])\n ) as Record<K, V>\n}\n\nexport function mapObject<\n SourceKey extends string,\n SourceValue,\n DestKey extends string,\n DestValue\n>(\n source: Record<SourceKey, SourceValue>,\n callback: (\n key: SourceKey,\n value: SourceValue\n ) => [DestKey, DestValue] | null | undefined\n) {\n return Object.fromEntries(\n Object.entries(source).flatMap(([key, value]) => {\n const entry = callback(key as SourceKey, value as SourceValue)\n if (entry) {\n return [entry]\n } else {\n return []\n }\n })\n ) as Record<DestKey, DestValue>\n}\n\nexport function flatMapObject<\n SourceKey extends string,\n SourceValue,\n DestKey extends string,\n DestValue\n>(\n source: Record<SourceKey, SourceValue>,\n callback: (key: SourceKey, value: SourceValue) => [DestKey, DestValue][]\n) {\n return Object.fromEntries(\n Object.entries(source).flatMap(([key, value]) => {\n return callback(key as SourceKey, value as SourceValue)\n })\n ) as Record<DestKey, DestValue>\n}\n\nexport function filterObject<Source, Dest extends Source>(\n source: Record<string, Source>,\n fn: (value: Source) => value is Dest\n) {\n return mapObject(source, (key, value) => {\n if (fn(value) === true) {\n return [key, value]\n } else {\n return null\n }\n }) as Record<string, Dest>\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","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 } from '@charcoal-ui/utils'\nimport { TailwindConfig } from 'tailwindcss/tailwind-config'\nimport { MergedEffect } from '../foundation'\n\nimport { TailwindVersion } from '../types'\nimport { filterObject, getDefaultKeyName, mapObject } from '../util'\nimport { AnyColorTheme, COLOR_PREFIX, isSingleColor } from './utils'\n\nexport function colorsToTailwindConfig(\n version: TailwindVersion,\n colors: AnyColorTheme,\n effects: MergedEffect\n): TailwindConfig['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 { Material } from '@charcoal-ui/foundation'\nimport { CharcoalTheme as Theme } from '@charcoal-ui/theme'\nimport { applyEffect } from '@charcoal-ui/utils'\nimport plugin, { TailwindPlugin } from 'tailwindcss/plugin'\nimport { mergeEffect } from '../foundation'\nimport { CSSVariableName, CSSVariables, Definition, ThemeMap } from '../types'\nimport { filterObject, flatMapObject, mapObject } from '../util'\nimport { COLOR_PREFIX, isSingleColor } from './utils'\n\n/**\n * `:root` 以外のケースで各 CSS Variable がどういう値を取るかを定義する\n */\nexport default function cssVariableColorPlugin({\n ':root': _defaultTheme,\n ...themes\n}: ThemeMap): TailwindPlugin {\n const definitions = defineCssVariables(themes)\n\n return plugin(({ addBase }) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n addBase(definitions)\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, flatMapObject, mapKeys, mapObject } from '../util'\nimport { GradientMaterial } from '@charcoal-ui/foundation'\nimport { ThemeColorGradient } from '@charcoal-ui/theme'\nimport {\n applyEffectToGradient,\n gradient,\n GradientDirection,\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n addBase({\n [selectorOrMediaQuery]: {\n ':root': css,\n },\n })\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n addBase({\n [selectorOrMediaQuery]: css,\n })\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n addUtilities(classRules, {\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-gradienr(to top, ...)' }\n [createUtilityName(name, className), toLinearGradient(colors)],\n\n // こういう感じのやつ\n // { 'hoge1--hover': 'linear-gradienr(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 } from '@charcoal-ui/utils'\nimport { px } from '@charcoal-ui/utils'\nimport { mapObject } from '../util'\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-call\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 variants: ['responsive'],\n }\n )\n})\n\nexport default typographyPlugin\n","import { GRID_COUNT, mergeEffect } from './foundation'\n\nimport { TailwindConfig } from 'tailwindcss/tailwind-config'\nimport { TailwindVersion, ThemeMap } from './types'\n\nimport {\n assertAllThemeHaveSameKeys,\n getDefaultKeyName,\n getVariantOption,\n mapObject,\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 { 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'\n\ninterface Options {\n version?: TailwindVersion\n theme?: ThemeMap\n}\n\nexport function createTailwindConfig({\n theme = { ':root': light },\n version = 'v3',\n}: Options): TailwindConfig {\n assertAllThemeHaveSameKeys(theme)\n\n const defaultTheme = theme[':root']\n const effects = mergeEffect(defaultTheme)\n const DEFAULT = getDefaultKeyName(version)\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 },\n borderColor: {\n ...colorsToTailwindConfig(\n version,\n mapObject(defaultTheme.border, (k, v) => [k, v.color]),\n effects\n ),\n },\n spacing: mapObject(SPACING, (name, pixel) => [name, px(pixel)]),\n width: {\n full: '100%',\n screen: '100vw',\n auto: 'auto',\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 },\n gap: {\n fixed: px(GUTTER_UNIT),\n },\n borderRadius: mapObject(BORDER_RADIUS, (name, value) => [\n name,\n px(value),\n ]),\n transitionDuration: {\n [DEFAULT]: '0.2s',\n },\n },\n\n ...getVariantOption(version),\n\n corePlugins: {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error 配列にしろと言ってくるが、たぶん @types が間違っている\n lineHeight: false,\n },\n plugins: [\n typographyPlugin,\n cssVariableColorPlugin(theme),\n\n ...Object.entries(theme).map(([selectorOrMediaQuery, theme]) =>\n cssVariableGradientPlugin(\n theme.gradientColor,\n mergeEffect(theme),\n selectorOrMediaQuery\n )\n ),\n ],\n }\n}\n\nexport const config: TailwindConfig = createTailwindConfig({})\n"],"names":["mergeEffect","elementEffect","effect","outline","type","opacity","getDefaultKeyName","version","setEquals","a","b","size","Array","from","every","value","has","mapObject","source","callback","Object","fromEntries","entries","flatMap","entry","flatMapObject","filterObject","fn","key","isSingleColor","color","colorsToTailwindConfig","colors","effects","targetColors","DEFAULT","colorsForAllEffects","name","varName","effectName","applyEffect","cssVariableColorPlugin","_defaultTheme","definitions","selectorOrMediaQuery","theme","css","map","toCssVariables","startsWith","plugin","addBase","DIRECTIONS","createUtilityName","gradientName","direction","suffix","replace","toLowerCase","filter","Boolean","join","leadingCancel","display","width","height","content","typographyStyle","style","margin","halfLeading","px","fontSize","lineHeight","marginTop","marginBottom","typographyPlugin","addUtilities","TYPOGRAPHY_SIZE","variants","createTailwindConfig","light","themeMap","defaultTheme","expectedColorKeys","Set","keys","expectedEffectKeys","colorKeys","effectKeys","Error","JSON","stringify","assertAllThemeHaveSameKeys","screens","screen1","screen2","breakpoint","screen3","screen4","screen5","black","white","transparent","current","borderColor","border","k","v","spacing","SPACING","pixel","full","screen","auto","length","_","i","reduce","styles","COLUMN_UNIT","GUTTER_UNIT","GRID_COUNT","gap","fixed","borderRadius","BORDER_RADIUS","transitionDuration","getVariantOption","corePlugins","plugins","gradients","utilities","directions","className","toLinearGradient","gradient","backgroundImage","applyEffectToGradient","getUtilities","classRules","cssVariableGradientPlugin","gradientColor","config"],"mappings":"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"}
1
+ {"version":3,"file":"index.module.js","sources":["../src/foundation.ts","../src/util.ts","../src/colors/utils.ts","../src/colors/toTailwindConfig.ts","../src/colors/plugin.ts","../src/gradient/plugin.ts","../src/typography/plugin.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 { TailwindConfig } from 'tailwindcss/tailwind-config'\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(\n version: TailwindVersion\n): Partial<TailwindConfig> {\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\n/**\n * @example\n * ```js\n * mapKeys({ a: 'aa', b: 'bb' }, (key) => key.toUpperCase()) // => { A: \"aa\", B: \"bb\" }\n * ````\n */\nexport function mapKeys<V, K extends string>(\n object: Record<string, V>,\n callback: (key: string) => K\n) {\n return Object.fromEntries(\n Object.entries(object).map(([key, value]) => [callback(key), value])\n ) as Record<K, V>\n}\n\n/**\n * @example\n * ```js\n * mapObject({ a: 'aa', b: 'bb', c: 'cc' }, (key, value) =>\n * key === 'b' ? undefined : [key + '1', value.toUpperCase()]\n * ) // => { a1: \"AA\", c1: \"CC\" }\n * ```\n */\nexport function mapObject<\n SourceKey extends string,\n SourceValue,\n DestKey extends string,\n DestValue\n>(\n source: Record<SourceKey, SourceValue>,\n callback: (\n key: SourceKey,\n value: SourceValue\n ) => [DestKey, DestValue] | null | undefined\n) {\n return Object.fromEntries(\n Object.entries(source).flatMap(([key, value]) => {\n const entry = callback(key as SourceKey, value as SourceValue)\n if (entry) {\n return [entry]\n } else {\n return []\n }\n })\n ) as Record<DestKey, DestValue>\n}\n\n/**\n * @example\n * ```js\n * flatMapObject({ a: 'aa', b: 'bb' }, (key, value) => [\n * [key + '1', value + '1'],\n * [key + '2', value + '2'],\n * ]) // => { a1: \"aa1\", a2: \"aa2\", b1: \"bb1\", b2: \"bb2\" }\n * ```\n */\nexport function flatMapObject<\n SourceKey extends string,\n SourceValue,\n DestKey extends string,\n DestValue\n>(\n source: Record<SourceKey, SourceValue>,\n callback: (key: SourceKey, value: SourceValue) => [DestKey, DestValue][]\n) {\n return Object.fromEntries(\n Object.entries(source).flatMap(([key, value]) => {\n return callback(key as SourceKey, value as SourceValue)\n })\n ) as Record<DestKey, DestValue>\n}\n\n/**\n * @example\n * ```ts\n * filterObject(\n * { a: 'aa', b: 'bb', c: 'cc' },\n * (value): value is string => value !== 'bb'\n * ) // => { a: \"aa\", c: \"cc\" }\n * ```\n */\nexport function filterObject<Source, Dest extends Source>(\n source: Record<string, Source>,\n fn: (value: Source) => value is Dest\n) {\n return mapObject(source, (key, value) => {\n if (fn(value) === true) {\n return [key, value]\n } else {\n return null\n }\n }) as Record<string, Dest>\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","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 } from '@charcoal-ui/utils'\nimport { TailwindConfig } from 'tailwindcss/tailwind-config'\nimport { MergedEffect } from '../foundation'\n\nimport { TailwindVersion } from '../types'\nimport { filterObject, getDefaultKeyName, mapObject } from '../util'\nimport { AnyColorTheme, COLOR_PREFIX, isSingleColor } from './utils'\n\nexport function colorsToTailwindConfig(\n version: TailwindVersion,\n colors: AnyColorTheme,\n effects: MergedEffect\n): TailwindConfig['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 { Material } from '@charcoal-ui/foundation'\nimport { CharcoalTheme as Theme } from '@charcoal-ui/theme'\nimport { applyEffect } from '@charcoal-ui/utils'\nimport plugin, { TailwindPlugin } from 'tailwindcss/plugin'\nimport { mergeEffect } from '../foundation'\nimport { CSSVariableName, CSSVariables, Definition, ThemeMap } from '../types'\nimport { filterObject, flatMapObject, mapObject } from '../util'\nimport { COLOR_PREFIX, isSingleColor } from './utils'\n\n/**\n * `:root` 以外のケースで各 CSS Variable がどういう値を取るかを定義する\n */\nexport default function cssVariableColorPlugin({\n ':root': _defaultTheme,\n ...themes\n}: ThemeMap): TailwindPlugin {\n const definitions = defineCssVariables(themes)\n\n return plugin(({ addBase }) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n addBase(definitions)\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, flatMapObject, mapKeys, mapObject } from '../util'\nimport { GradientMaterial } from '@charcoal-ui/foundation'\nimport { ThemeColorGradient } from '@charcoal-ui/theme'\nimport {\n applyEffectToGradient,\n gradient,\n GradientDirection,\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n addBase({\n [selectorOrMediaQuery]: {\n ':root': css,\n },\n })\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n addBase({\n [selectorOrMediaQuery]: css,\n })\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n addUtilities(classRules, {\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-gradienr(to top, ...)' }\n [createUtilityName(name, className), toLinearGradient(colors)],\n\n // こういう感じのやつ\n // { 'hoge1--hover': 'linear-gradienr(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 } from '@charcoal-ui/utils'\nimport { px } from '@charcoal-ui/utils'\nimport { mapObject } from '../util'\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-call\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 variants: ['responsive'],\n }\n )\n})\n\nexport default typographyPlugin\n","import { GRID_COUNT, mergeEffect } from './foundation'\n\nimport { TailwindConfig } from 'tailwindcss/tailwind-config'\nimport { TailwindVersion, ThemeMap } from './types'\n\nimport {\n assertAllThemeHaveSameKeys,\n getDefaultKeyName,\n getVariantOption,\n mapObject,\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 { 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'\n\ninterface Options {\n version?: TailwindVersion\n theme?: ThemeMap\n}\n\nexport function createTailwindConfig({\n theme = { ':root': light },\n version = 'v3',\n}: Options): TailwindConfig {\n assertAllThemeHaveSameKeys(theme)\n\n const defaultTheme = theme[':root']\n const effects = mergeEffect(defaultTheme)\n const DEFAULT = getDefaultKeyName(version)\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 },\n borderColor: {\n ...colorsToTailwindConfig(\n version,\n mapObject(defaultTheme.border, (k, v) => [k, v.color]),\n effects\n ),\n },\n spacing: mapObject(SPACING, (name, pixel) => [name, px(pixel)]),\n width: {\n full: '100%',\n screen: '100vw',\n auto: 'auto',\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 },\n gap: {\n fixed: px(GUTTER_UNIT),\n },\n borderRadius: mapObject(BORDER_RADIUS, (name, value) => [\n name,\n px(value),\n ]),\n transitionDuration: {\n [DEFAULT]: '0.2s',\n },\n },\n\n ...getVariantOption(version),\n\n corePlugins: {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error 配列にしろと言ってくるが、たぶん @types が間違っている\n lineHeight: false,\n },\n plugins: [\n typographyPlugin,\n cssVariableColorPlugin(theme),\n\n ...Object.entries(theme).map(([selectorOrMediaQuery, theme]) =>\n cssVariableGradientPlugin(\n theme.gradientColor,\n mergeEffect(theme),\n selectorOrMediaQuery\n )\n ),\n ],\n }\n}\n\nexport const config: TailwindConfig = createTailwindConfig({})\n"],"names":["mergeEffect","elementEffect","effect","outline","type","opacity","getDefaultKeyName","version","setEquals","a","b","size","Array","from","every","value","has","mapObject","source","callback","Object","fromEntries","entries","flatMap","entry","flatMapObject","filterObject","fn","key","isSingleColor","color","colorsToTailwindConfig","colors","effects","targetColors","DEFAULT","colorsForAllEffects","name","varName","effectName","applyEffect","cssVariableColorPlugin","_defaultTheme","definitions","selectorOrMediaQuery","theme","css","map","toCssVariables","startsWith","plugin","addBase","DIRECTIONS","createUtilityName","gradientName","direction","suffix","replace","toLowerCase","filter","Boolean","join","leadingCancel","display","width","height","content","typographyStyle","style","margin","halfLeading","px","fontSize","lineHeight","marginTop","marginBottom","typographyPlugin","addUtilities","TYPOGRAPHY_SIZE","variants","createTailwindConfig","light","themeMap","defaultTheme","expectedColorKeys","Set","keys","expectedEffectKeys","colorKeys","effectKeys","Error","JSON","stringify","assertAllThemeHaveSameKeys","screens","screen1","screen2","breakpoint","screen3","screen4","screen5","black","white","transparent","current","borderColor","border","k","v","spacing","SPACING","pixel","full","screen","auto","length","_","i","reduce","styles","COLUMN_UNIT","GUTTER_UNIT","GRID_COUNT","gap","fixed","borderRadius","BORDER_RADIUS","transitionDuration","getVariantOption","corePlugins","plugins","gradients","utilities","directions","className","toLinearGradient","gradient","backgroundImage","applyEffectToGradient","getUtilities","classRules","cssVariableGradientPlugin","gradientColor","config"],"mappings":"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"}
package/dist/util.d.ts CHANGED
@@ -8,9 +8,41 @@ import { TailwindVersion, ThemeMap } from './types';
8
8
  export declare function getDefaultKeyName(version: TailwindVersion): "DEFAULT" | "default";
9
9
  export declare function getVariantOption(version: TailwindVersion): Partial<TailwindConfig>;
10
10
  export declare function assertAllThemeHaveSameKeys(themeMap: ThemeMap): void;
11
+ /**
12
+ * @example
13
+ * ```js
14
+ * mapKeys({ a: 'aa', b: 'bb' }, (key) => key.toUpperCase()) // => { A: "aa", B: "bb" }
15
+ * ````
16
+ */
11
17
  export declare function mapKeys<V, K extends string>(object: Record<string, V>, callback: (key: string) => K): Record<K, V>;
18
+ /**
19
+ * @example
20
+ * ```js
21
+ * mapObject({ a: 'aa', b: 'bb', c: 'cc' }, (key, value) =>
22
+ * key === 'b' ? undefined : [key + '1', value.toUpperCase()]
23
+ * ) // => { a1: "AA", c1: "CC" }
24
+ * ```
25
+ */
12
26
  export declare function mapObject<SourceKey extends string, SourceValue, DestKey extends string, DestValue>(source: Record<SourceKey, SourceValue>, callback: (key: SourceKey, value: SourceValue) => [DestKey, DestValue] | null | undefined): Record<DestKey, DestValue>;
27
+ /**
28
+ * @example
29
+ * ```js
30
+ * flatMapObject({ a: 'aa', b: 'bb' }, (key, value) => [
31
+ * [key + '1', value + '1'],
32
+ * [key + '2', value + '2'],
33
+ * ]) // => { a1: "aa1", a2: "aa2", b1: "bb1", b2: "bb2" }
34
+ * ```
35
+ */
13
36
  export declare function flatMapObject<SourceKey extends string, SourceValue, DestKey extends string, DestValue>(source: Record<SourceKey, SourceValue>, callback: (key: SourceKey, value: SourceValue) => [DestKey, DestValue][]): Record<DestKey, DestValue>;
37
+ /**
38
+ * @example
39
+ * ```ts
40
+ * filterObject(
41
+ * { a: 'aa', b: 'bb', c: 'cc' },
42
+ * (value): value is string => value !== 'bb'
43
+ * ) // => { a: "aa", c: "cc" }
44
+ * ```
45
+ */
14
46
  export declare function filterObject<Source, Dest extends Source>(source: Record<string, Source>, fn: (value: Source) => value is Dest): Record<string, Dest>;
15
47
  export declare function camelToKebab(value: string): string;
16
48
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEnD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,yBAWzD;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAczB;AAMD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAuBnE;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EACzB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,gBAK7B;AAED,wBAAgB,SAAS,CACvB,SAAS,SAAS,MAAM,EACxB,WAAW,EACX,OAAO,SAAS,MAAM,EACtB,SAAS,EAET,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,EACtC,QAAQ,EAAE,CACR,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,WAAW,KACf,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS,8BAY7C;AAED,wBAAgB,aAAa,CAC3B,SAAS,SAAS,MAAM,EACxB,WAAW,EACX,OAAO,SAAS,MAAM,EACtB,SAAS,EAET,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,EACtC,QAAQ,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,8BAOzE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,IAAI,SAAS,MAAM,EACtD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,IAAI,IAAI,wBASrC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,UAIzC"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEnD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,yBAWzD;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAczB;AAMD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAuBnE;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EACzB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,gBAK7B;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACvB,SAAS,SAAS,MAAM,EACxB,WAAW,EACX,OAAO,SAAS,MAAM,EACtB,SAAS,EAET,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,EACtC,QAAQ,EAAE,CACR,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,WAAW,KACf,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS,8BAY7C;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,SAAS,SAAS,MAAM,EACxB,WAAW,EACX,OAAO,SAAS,MAAM,EACtB,SAAS,EAET,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,EACtC,QAAQ,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,8BAOzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,IAAI,SAAS,MAAM,EACtD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,IAAI,IAAI,wBASrC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,UAIzC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@charcoal-ui/tailwind-config",
3
- "version": "1.0.1-alpha.0",
3
+ "version": "1.0.1-alpha.3",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "source": "./src/index.ts",
@@ -21,13 +21,14 @@
21
21
  "microbundle": "^0.14.2",
22
22
  "postcss": "^8.4.5",
23
23
  "postcss-selector-parser": "^6.0.9",
24
+ "react": "^18.0.0",
24
25
  "rimraf": "^3.0.2",
25
26
  "tailwindcss": "^3.0.5",
26
27
  "typescript": "^4.5.5"
27
28
  },
28
29
  "dependencies": {
29
30
  "@charcoal-ui/foundation": "^1.0.1-alpha.0",
30
- "@charcoal-ui/theme": "^2.0.0-alpha.0",
31
+ "@charcoal-ui/theme": "^2.0.0-alpha.3",
31
32
  "@charcoal-ui/utils": "^1.0.1-alpha.0"
32
33
  },
33
34
  "peerDependencies": {
@@ -47,5 +48,5 @@
47
48
  "url": "https://github.com/pixiv/charcoal.git",
48
49
  "directory": "packages/tailwind-config"
49
50
  },
50
- "gitHead": "172c6cd4b52fb2c60caed41e3035296e237ec32f"
51
+ "gitHead": "f1fcafd39b0d4c2aa970cd4fdbbc3a12147c94a4"
51
52
  }
@@ -1750,6 +1750,26 @@ Array [
1750
1750
  "bg-assertive-hover",
1751
1751
  "bg-assertive-press",
1752
1752
  "bg-assertive-outline",
1753
+ "bg-warning",
1754
+ "bg-warning-disabled",
1755
+ "bg-warning-hover",
1756
+ "bg-warning-press",
1757
+ "bg-warning-outline",
1758
+ "bg-success",
1759
+ "bg-success-disabled",
1760
+ "bg-success-hover",
1761
+ "bg-success-press",
1762
+ "bg-success-outline",
1763
+ "bg-updatedItem",
1764
+ "bg-updatedItem-disabled",
1765
+ "bg-updatedItem-hover",
1766
+ "bg-updatedItem-press",
1767
+ "bg-updatedItem-outline",
1768
+ "bg-border",
1769
+ "bg-border-disabled",
1770
+ "bg-border-hover",
1771
+ "bg-border-press",
1772
+ "bg-border-outline",
1753
1773
  "bg-opacity-0",
1754
1774
  "bg-opacity-5",
1755
1775
  "bg-opacity-10",
@@ -1887,6 +1907,26 @@ Array [
1887
1907
  "from-assertive-hover",
1888
1908
  "from-assertive-press",
1889
1909
  "from-assertive-outline",
1910
+ "from-warning",
1911
+ "from-warning-disabled",
1912
+ "from-warning-hover",
1913
+ "from-warning-press",
1914
+ "from-warning-outline",
1915
+ "from-success",
1916
+ "from-success-disabled",
1917
+ "from-success-hover",
1918
+ "from-success-press",
1919
+ "from-success-outline",
1920
+ "from-updatedItem",
1921
+ "from-updatedItem-disabled",
1922
+ "from-updatedItem-hover",
1923
+ "from-updatedItem-press",
1924
+ "from-updatedItem-outline",
1925
+ "from-border",
1926
+ "from-border-disabled",
1927
+ "from-border-hover",
1928
+ "from-border-press",
1929
+ "from-border-outline",
1890
1930
  "via-black",
1891
1931
  "via-white",
1892
1932
  "via-transparent",
@@ -2000,6 +2040,26 @@ Array [
2000
2040
  "via-assertive-hover",
2001
2041
  "via-assertive-press",
2002
2042
  "via-assertive-outline",
2043
+ "via-warning",
2044
+ "via-warning-disabled",
2045
+ "via-warning-hover",
2046
+ "via-warning-press",
2047
+ "via-warning-outline",
2048
+ "via-success",
2049
+ "via-success-disabled",
2050
+ "via-success-hover",
2051
+ "via-success-press",
2052
+ "via-success-outline",
2053
+ "via-updatedItem",
2054
+ "via-updatedItem-disabled",
2055
+ "via-updatedItem-hover",
2056
+ "via-updatedItem-press",
2057
+ "via-updatedItem-outline",
2058
+ "via-border",
2059
+ "via-border-disabled",
2060
+ "via-border-hover",
2061
+ "via-border-press",
2062
+ "via-border-outline",
2003
2063
  "to-black",
2004
2064
  "to-white",
2005
2065
  "to-transparent",
@@ -2113,6 +2173,26 @@ Array [
2113
2173
  "to-assertive-hover",
2114
2174
  "to-assertive-press",
2115
2175
  "to-assertive-outline",
2176
+ "to-warning",
2177
+ "to-warning-disabled",
2178
+ "to-warning-hover",
2179
+ "to-warning-press",
2180
+ "to-warning-outline",
2181
+ "to-success",
2182
+ "to-success-disabled",
2183
+ "to-success-hover",
2184
+ "to-success-press",
2185
+ "to-success-outline",
2186
+ "to-updatedItem",
2187
+ "to-updatedItem-disabled",
2188
+ "to-updatedItem-hover",
2189
+ "to-updatedItem-press",
2190
+ "to-updatedItem-outline",
2191
+ "to-border",
2192
+ "to-border-disabled",
2193
+ "to-border-hover",
2194
+ "to-border-press",
2195
+ "to-border-outline",
2116
2196
  "decoration-slice",
2117
2197
  "decoration-clone",
2118
2198
  "box-decoration-slice",
@@ -2258,6 +2338,26 @@ Array [
2258
2338
  "fill-assertive-hover",
2259
2339
  "fill-assertive-press",
2260
2340
  "fill-assertive-outline",
2341
+ "fill-warning",
2342
+ "fill-warning-disabled",
2343
+ "fill-warning-hover",
2344
+ "fill-warning-press",
2345
+ "fill-warning-outline",
2346
+ "fill-success",
2347
+ "fill-success-disabled",
2348
+ "fill-success-hover",
2349
+ "fill-success-press",
2350
+ "fill-success-outline",
2351
+ "fill-updatedItem",
2352
+ "fill-updatedItem-disabled",
2353
+ "fill-updatedItem-hover",
2354
+ "fill-updatedItem-press",
2355
+ "fill-updatedItem-outline",
2356
+ "fill-border",
2357
+ "fill-border-disabled",
2358
+ "fill-border-hover",
2359
+ "fill-border-press",
2360
+ "fill-border-outline",
2261
2361
  "stroke-black",
2262
2362
  "stroke-white",
2263
2363
  "stroke-transparent",
@@ -2371,6 +2471,26 @@ Array [
2371
2471
  "stroke-assertive-hover",
2372
2472
  "stroke-assertive-press",
2373
2473
  "stroke-assertive-outline",
2474
+ "stroke-warning",
2475
+ "stroke-warning-disabled",
2476
+ "stroke-warning-hover",
2477
+ "stroke-warning-press",
2478
+ "stroke-warning-outline",
2479
+ "stroke-success",
2480
+ "stroke-success-disabled",
2481
+ "stroke-success-hover",
2482
+ "stroke-success-press",
2483
+ "stroke-success-outline",
2484
+ "stroke-updatedItem",
2485
+ "stroke-updatedItem-disabled",
2486
+ "stroke-updatedItem-hover",
2487
+ "stroke-updatedItem-press",
2488
+ "stroke-updatedItem-outline",
2489
+ "stroke-border",
2490
+ "stroke-border-disabled",
2491
+ "stroke-border-hover",
2492
+ "stroke-border-press",
2493
+ "stroke-border-outline",
2374
2494
  "stroke-0",
2375
2495
  "stroke-1",
2376
2496
  "stroke-2",
@@ -2664,6 +2784,26 @@ Array [
2664
2784
  "text-assertive-hover",
2665
2785
  "text-assertive-press",
2666
2786
  "text-assertive-outline",
2787
+ "text-warning",
2788
+ "text-warning-disabled",
2789
+ "text-warning-hover",
2790
+ "text-warning-press",
2791
+ "text-warning-outline",
2792
+ "text-success",
2793
+ "text-success-disabled",
2794
+ "text-success-hover",
2795
+ "text-success-press",
2796
+ "text-success-outline",
2797
+ "text-updatedItem",
2798
+ "text-updatedItem-disabled",
2799
+ "text-updatedItem-hover",
2800
+ "text-updatedItem-press",
2801
+ "text-updatedItem-outline",
2802
+ "text-border",
2803
+ "text-border-disabled",
2804
+ "text-border-hover",
2805
+ "text-border-press",
2806
+ "text-border-outline",
2667
2807
  "text-opacity-0",
2668
2808
  "text-opacity-5",
2669
2809
  "text-opacity-10",
@@ -2796,6 +2936,26 @@ Array [
2796
2936
  "decoration-assertive-hover",
2797
2937
  "decoration-assertive-press",
2798
2938
  "decoration-assertive-outline",
2939
+ "decoration-warning",
2940
+ "decoration-warning-disabled",
2941
+ "decoration-warning-hover",
2942
+ "decoration-warning-press",
2943
+ "decoration-warning-outline",
2944
+ "decoration-success",
2945
+ "decoration-success-disabled",
2946
+ "decoration-success-hover",
2947
+ "decoration-success-press",
2948
+ "decoration-success-outline",
2949
+ "decoration-updatedItem",
2950
+ "decoration-updatedItem-disabled",
2951
+ "decoration-updatedItem-hover",
2952
+ "decoration-updatedItem-press",
2953
+ "decoration-updatedItem-outline",
2954
+ "decoration-border",
2955
+ "decoration-border-disabled",
2956
+ "decoration-border-hover",
2957
+ "decoration-border-press",
2958
+ "decoration-border-outline",
2799
2959
  "decoration-solid",
2800
2960
  "decoration-double",
2801
2961
  "decoration-dotted",
@@ -2929,6 +3089,26 @@ Array [
2929
3089
  "placeholder-assertive-hover",
2930
3090
  "placeholder-assertive-press",
2931
3091
  "placeholder-assertive-outline",
3092
+ "placeholder-warning",
3093
+ "placeholder-warning-disabled",
3094
+ "placeholder-warning-hover",
3095
+ "placeholder-warning-press",
3096
+ "placeholder-warning-outline",
3097
+ "placeholder-success",
3098
+ "placeholder-success-disabled",
3099
+ "placeholder-success-hover",
3100
+ "placeholder-success-press",
3101
+ "placeholder-success-outline",
3102
+ "placeholder-updatedItem",
3103
+ "placeholder-updatedItem-disabled",
3104
+ "placeholder-updatedItem-hover",
3105
+ "placeholder-updatedItem-press",
3106
+ "placeholder-updatedItem-outline",
3107
+ "placeholder-border",
3108
+ "placeholder-border-disabled",
3109
+ "placeholder-border-hover",
3110
+ "placeholder-border-press",
3111
+ "placeholder-border-outline",
2932
3112
  "placeholder-opacity-0",
2933
3113
  "placeholder-opacity-5",
2934
3114
  "placeholder-opacity-10",
@@ -3057,6 +3237,26 @@ Array [
3057
3237
  "caret-assertive-hover",
3058
3238
  "caret-assertive-press",
3059
3239
  "caret-assertive-outline",
3240
+ "caret-warning",
3241
+ "caret-warning-disabled",
3242
+ "caret-warning-hover",
3243
+ "caret-warning-press",
3244
+ "caret-warning-outline",
3245
+ "caret-success",
3246
+ "caret-success-disabled",
3247
+ "caret-success-hover",
3248
+ "caret-success-press",
3249
+ "caret-success-outline",
3250
+ "caret-updatedItem",
3251
+ "caret-updatedItem-disabled",
3252
+ "caret-updatedItem-hover",
3253
+ "caret-updatedItem-press",
3254
+ "caret-updatedItem-outline",
3255
+ "caret-border",
3256
+ "caret-border-disabled",
3257
+ "caret-border-hover",
3258
+ "caret-border-press",
3259
+ "caret-border-outline",
3060
3260
  "accent-black",
3061
3261
  "accent-white",
3062
3262
  "accent-transparent",
@@ -3170,6 +3370,26 @@ Array [
3170
3370
  "accent-assertive-hover",
3171
3371
  "accent-assertive-press",
3172
3372
  "accent-assertive-outline",
3373
+ "accent-warning",
3374
+ "accent-warning-disabled",
3375
+ "accent-warning-hover",
3376
+ "accent-warning-press",
3377
+ "accent-warning-outline",
3378
+ "accent-success",
3379
+ "accent-success-disabled",
3380
+ "accent-success-hover",
3381
+ "accent-success-press",
3382
+ "accent-success-outline",
3383
+ "accent-updatedItem",
3384
+ "accent-updatedItem-disabled",
3385
+ "accent-updatedItem-hover",
3386
+ "accent-updatedItem-press",
3387
+ "accent-updatedItem-outline",
3388
+ "accent-border",
3389
+ "accent-border-disabled",
3390
+ "accent-border-hover",
3391
+ "accent-border-press",
3392
+ "accent-border-outline",
3173
3393
  "accent-auto",
3174
3394
  "opacity-0",
3175
3395
  "opacity-5",
@@ -3339,6 +3559,26 @@ Array [
3339
3559
  "shadow-assertive-hover",
3340
3560
  "shadow-assertive-press",
3341
3561
  "shadow-assertive-outline",
3562
+ "shadow-warning",
3563
+ "shadow-warning-disabled",
3564
+ "shadow-warning-hover",
3565
+ "shadow-warning-press",
3566
+ "shadow-warning-outline",
3567
+ "shadow-success",
3568
+ "shadow-success-disabled",
3569
+ "shadow-success-hover",
3570
+ "shadow-success-press",
3571
+ "shadow-success-outline",
3572
+ "shadow-updatedItem",
3573
+ "shadow-updatedItem-disabled",
3574
+ "shadow-updatedItem-hover",
3575
+ "shadow-updatedItem-press",
3576
+ "shadow-updatedItem-outline",
3577
+ "shadow-border",
3578
+ "shadow-border-disabled",
3579
+ "shadow-border-hover",
3580
+ "shadow-border-press",
3581
+ "shadow-border-outline",
3342
3582
  "outline-none",
3343
3583
  "outline",
3344
3584
  "outline-dashed",
@@ -3468,6 +3708,26 @@ Array [
3468
3708
  "outline-assertive-hover",
3469
3709
  "outline-assertive-press",
3470
3710
  "outline-assertive-outline",
3711
+ "outline-warning",
3712
+ "outline-warning-disabled",
3713
+ "outline-warning-hover",
3714
+ "outline-warning-press",
3715
+ "outline-warning-outline",
3716
+ "outline-success",
3717
+ "outline-success-disabled",
3718
+ "outline-success-hover",
3719
+ "outline-success-press",
3720
+ "outline-success-outline",
3721
+ "outline-updatedItem",
3722
+ "outline-updatedItem-disabled",
3723
+ "outline-updatedItem-hover",
3724
+ "outline-updatedItem-press",
3725
+ "outline-updatedItem-outline",
3726
+ "outline-border",
3727
+ "outline-border-disabled",
3728
+ "outline-border-hover",
3729
+ "outline-border-press",
3730
+ "outline-border-outline",
3471
3731
  "ring-0",
3472
3732
  "ring-1",
3473
3733
  "ring-2",
@@ -3588,6 +3848,26 @@ Array [
3588
3848
  "ring-assertive-hover",
3589
3849
  "ring-assertive-press",
3590
3850
  "ring-assertive-outline",
3851
+ "ring-warning",
3852
+ "ring-warning-disabled",
3853
+ "ring-warning-hover",
3854
+ "ring-warning-press",
3855
+ "ring-warning-outline",
3856
+ "ring-success",
3857
+ "ring-success-disabled",
3858
+ "ring-success-hover",
3859
+ "ring-success-press",
3860
+ "ring-success-outline",
3861
+ "ring-updatedItem",
3862
+ "ring-updatedItem-disabled",
3863
+ "ring-updatedItem-hover",
3864
+ "ring-updatedItem-press",
3865
+ "ring-updatedItem-outline",
3866
+ "ring-border",
3867
+ "ring-border-disabled",
3868
+ "ring-border-hover",
3869
+ "ring-border-press",
3870
+ "ring-border-outline",
3591
3871
  "ring-opacity-0",
3592
3872
  "ring-opacity-5",
3593
3873
  "ring-opacity-10",
@@ -3721,6 +4001,26 @@ Array [
3721
4001
  "ring-offset-assertive-hover",
3722
4002
  "ring-offset-assertive-press",
3723
4003
  "ring-offset-assertive-outline",
4004
+ "ring-offset-warning",
4005
+ "ring-offset-warning-disabled",
4006
+ "ring-offset-warning-hover",
4007
+ "ring-offset-warning-press",
4008
+ "ring-offset-warning-outline",
4009
+ "ring-offset-success",
4010
+ "ring-offset-success-disabled",
4011
+ "ring-offset-success-hover",
4012
+ "ring-offset-success-press",
4013
+ "ring-offset-success-outline",
4014
+ "ring-offset-updatedItem",
4015
+ "ring-offset-updatedItem-disabled",
4016
+ "ring-offset-updatedItem-hover",
4017
+ "ring-offset-updatedItem-press",
4018
+ "ring-offset-updatedItem-outline",
4019
+ "ring-offset-border",
4020
+ "ring-offset-border-disabled",
4021
+ "ring-offset-border-hover",
4022
+ "ring-offset-border-press",
4023
+ "ring-offset-border-outline",
3724
4024
  "blur-0",
3725
4025
  "blur-none",
3726
4026
  "blur-sm",
@@ -4033,6 +4333,26 @@ Array [
4033
4333
  "--tailwind-color-assertive--hover",
4034
4334
  "--tailwind-color-assertive--press",
4035
4335
  "--tailwind-color-assertive--outline",
4336
+ "--tailwind-color-warning",
4337
+ "--tailwind-color-warning--disabled",
4338
+ "--tailwind-color-warning--hover",
4339
+ "--tailwind-color-warning--press",
4340
+ "--tailwind-color-warning--outline",
4341
+ "--tailwind-color-success",
4342
+ "--tailwind-color-success--disabled",
4343
+ "--tailwind-color-success--hover",
4344
+ "--tailwind-color-success--press",
4345
+ "--tailwind-color-success--outline",
4346
+ "--tailwind-color-updatedItem",
4347
+ "--tailwind-color-updatedItem--disabled",
4348
+ "--tailwind-color-updatedItem--hover",
4349
+ "--tailwind-color-updatedItem--press",
4350
+ "--tailwind-color-updatedItem--outline",
4351
+ "--tailwind-color-border",
4352
+ "--tailwind-color-border--disabled",
4353
+ "--tailwind-color-border--hover",
4354
+ "--tailwind-color-border--press",
4355
+ "--tailwind-color-border--outline",
4036
4356
  "--tailwind-gradient-surface5-top",
4037
4357
  "--tailwind-gradient-surface5-top-disabled",
4038
4358
  "--tailwind-gradient-surface5-top-hover",
@@ -0,0 +1,12 @@
1
+ import React from 'react'
2
+
3
+ /**
4
+ * import { Story } from '@storybook/react/types-6-0'
5
+ *
6
+ * をするとstyled-componentsが壊れるので代替品を作った
7
+ *
8
+ * エラー:
9
+ * node_modules/@types/styled-components/ts3.7/index.d.ts
10
+ * `Type alias 'Interpolation' circularly references itself. ts(2456)`
11
+ */
12
+ export type Story<P> = React.ComponentType<P> & { args?: P }