@charcoal-ui/tailwind-config 2.4.0 → 2.6.0

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 (55) hide show
  1. package/dist/_lib/TailwindBuild.d.ts +17 -17
  2. package/dist/_lib/compat.d.ts +13 -13
  3. package/dist/_lib/compat.d.ts.map +1 -1
  4. package/dist/colors/plugin.d.ts +7 -7
  5. package/dist/colors/plugin.test.d.ts +1 -1
  6. package/dist/colors/toTailwindConfig.d.ts +5 -5
  7. package/dist/colors/toTailwindConfig.test.d.ts +1 -1
  8. package/dist/colors/utils.d.ts +6 -6
  9. package/dist/colors/utils.d.ts.map +1 -1
  10. package/dist/docs/borderRadius/BorderRadius.d.ts +2 -2
  11. package/dist/docs/borderRadius/index.d.ts +2 -2
  12. package/dist/docs/colors/Colors.d.ts +2 -2
  13. package/dist/docs/colors/Colors.d.ts.map +1 -1
  14. package/dist/docs/colors/TextBgColor.story.d.ts +26 -26
  15. package/dist/docs/colors/TextBgColor.story.d.ts.map +1 -1
  16. package/dist/docs/colors/TextColors.d.ts +2 -2
  17. package/dist/docs/colors/index.d.ts +3 -3
  18. package/dist/docs/gradient/Gradients.d.ts +2 -2
  19. package/dist/docs/gradient/index.d.ts +9 -9
  20. package/dist/docs/gradient/index.d.ts.map +1 -1
  21. package/dist/docs/gradient/utils.d.ts +1 -1
  22. package/dist/docs/index.d.ts +8 -8
  23. package/dist/docs/index.d.ts.map +1 -1
  24. package/dist/docs/screens/Screens.d.ts +2 -2
  25. package/dist/docs/screens/index.d.ts +2 -2
  26. package/dist/docs/spacing/Spacing.d.ts +2 -2
  27. package/dist/docs/spacing/index.d.ts +2 -2
  28. package/dist/docs/typography/HalfLeading.d.ts +2 -2
  29. package/dist/docs/typography/Sizes.d.ts +2 -2
  30. package/dist/docs/typography/index.d.ts +8 -8
  31. package/dist/docs/typography/index.d.ts.map +1 -1
  32. package/dist/foundation.d.ts +5 -5
  33. package/dist/foundation.d.ts.map +1 -1
  34. package/dist/gradient/plugin.d.ts +18 -18
  35. package/dist/gradient/plugin.d.ts.map +1 -1
  36. package/dist/gradient/plugin.test.d.ts +1 -1
  37. package/dist/index.cjs.js +377 -0
  38. package/dist/index.cjs.js.map +1 -0
  39. package/dist/index.d.ts +9 -9
  40. package/dist/index.esm.js +359 -0
  41. package/dist/index.esm.js.map +1 -0
  42. package/dist/index.test.d.ts +1 -1
  43. package/dist/types.d.ts +29 -29
  44. package/dist/types.d.ts.map +1 -1
  45. package/dist/typography/plugin.d.ts +2 -2
  46. package/dist/util.d.ts +11 -11
  47. package/package.json +16 -16
  48. package/src/docs/colors/Colors.tsx +1 -0
  49. package/src/docs/gradient/index.ts +1 -1
  50. package/dist/index.cjs +0 -488
  51. package/dist/index.cjs.map +0 -1
  52. package/dist/index.modern.js +0 -444
  53. package/dist/index.modern.js.map +0 -1
  54. package/dist/index.module.js +0 -483
  55. package/dist/index.module.js.map +0 -1
@@ -1,483 +0,0 @@
1
- import { TYPOGRAPHY_SIZE, SPACING, COLUMN_UNIT, GUTTER_UNIT, BORDER_RADIUS } from '@charcoal-ui/foundation';
2
- import { light } from '@charcoal-ui/theme';
3
- import { filterObject, mapObject, applyEffect, flatMapObject, mapKeys, applyEffectToGradient, gradient, halfLeading, px } from '@charcoal-ui/utils';
4
- import plugin from 'tailwindcss/plugin';
5
-
6
- function _wrapRegExp() {
7
- _wrapRegExp = function (re, groups) {
8
- return new BabelRegExp(re, void 0, groups);
9
- };
10
-
11
- var _super = RegExp.prototype,
12
- _groups = new WeakMap();
13
-
14
- function BabelRegExp(re, flags, groups) {
15
- var _this = new RegExp(re, flags);
16
-
17
- return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);
18
- }
19
-
20
- function buildGroups(result, re) {
21
- var g = _groups.get(re);
22
-
23
- return Object.keys(g).reduce(function (groups, name) {
24
- return groups[name] = result[g[name]], groups;
25
- }, Object.create(null));
26
- }
27
-
28
- return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {
29
- var result = _super.exec.call(this, str);
30
-
31
- return result && (result.groups = buildGroups(result, this)), result;
32
- }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {
33
- if ("string" == typeof substitution) {
34
- var groups = _groups.get(this);
35
-
36
- return _super[Symbol.replace].call(this, str, substitution.replace(/\$<([^>]+)>/g, function (_, name) {
37
- return "$" + groups[name];
38
- }));
39
- }
40
-
41
- if ("function" == typeof substitution) {
42
- var _this = this;
43
-
44
- return _super[Symbol.replace].call(this, str, function () {
45
- var args = arguments;
46
- return "object" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);
47
- });
48
- }
49
-
50
- return _super[Symbol.replace].call(this, str, substitution);
51
- }, _wrapRegExp.apply(this, arguments);
52
- }
53
-
54
- function _extends() {
55
- _extends = Object.assign ? Object.assign.bind() : function (target) {
56
- for (var i = 1; i < arguments.length; i++) {
57
- var source = arguments[i];
58
-
59
- for (var key in source) {
60
- if (Object.prototype.hasOwnProperty.call(source, key)) {
61
- target[key] = source[key];
62
- }
63
- }
64
- }
65
-
66
- return target;
67
- };
68
- return _extends.apply(this, arguments);
69
- }
70
-
71
- function _inherits(subClass, superClass) {
72
- if (typeof superClass !== "function" && superClass !== null) {
73
- throw new TypeError("Super expression must either be null or a function");
74
- }
75
-
76
- subClass.prototype = Object.create(superClass && superClass.prototype, {
77
- constructor: {
78
- value: subClass,
79
- writable: true,
80
- configurable: true
81
- }
82
- });
83
- Object.defineProperty(subClass, "prototype", {
84
- writable: false
85
- });
86
- if (superClass) _setPrototypeOf(subClass, superClass);
87
- }
88
-
89
- function _setPrototypeOf(o, p) {
90
- _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
91
- o.__proto__ = p;
92
- return o;
93
- };
94
- return _setPrototypeOf(o, p);
95
- }
96
-
97
- function _objectWithoutPropertiesLoose(source, excluded) {
98
- if (source == null) return {};
99
- var target = {};
100
- var sourceKeys = Object.keys(source);
101
- var key, i;
102
-
103
- for (i = 0; i < sourceKeys.length; i++) {
104
- key = sourceKeys[i];
105
- if (excluded.indexOf(key) >= 0) continue;
106
- target[key] = source[key];
107
- }
108
-
109
- return target;
110
- }
111
-
112
- var GRID_COUNT = 12;
113
- function mergeEffect(_ref) {
114
- var elementEffect = _ref.elementEffect,
115
- effect = _ref.effect;
116
- return _extends({}, elementEffect, effect, {
117
- outline: {
118
- type: 'opacity',
119
- opacity: 0.32
120
- }
121
- });
122
- }
123
-
124
- /**
125
- * the key "default" or "DEFAULT" has special meaning and dropped from class name
126
- *
127
- * @see https://tailwindcss.com/docs/upgrading-to-v2#update-default-theme-keys-to-default
128
- */
129
- function getDefaultKeyName(version) {
130
- switch (version) {
131
- case 'v3':
132
- case 'v2':
133
- {
134
- return 'DEFAULT';
135
- }
136
-
137
- case 'v1':
138
- {
139
- return 'default';
140
- }
141
- }
142
- }
143
- function getVariantOption(version) {
144
- switch (version) {
145
- case 'v3':
146
- {
147
- // v3 以上では variants は variantOrders に改名された
148
- // そしてこれは上書きをしたいモチベがない
149
- // https://v2.tailwindcss.com/docs/configuration#variant-order
150
- return {};
151
- }
152
-
153
- case 'v2':
154
- case 'v1':
155
- {
156
- return {
157
- variants: {}
158
- };
159
- }
160
- }
161
- }
162
-
163
- function setEquals(a, b) {
164
- return a.size === b.size && Array.from(a).every(function (value) {
165
- return b.has(value);
166
- });
167
- }
168
-
169
- function assertAllThemeHaveSameKeys(themeMap) {
170
- var defaultTheme = themeMap[':root'];
171
- var expectedColorKeys = new Set(Object.keys(defaultTheme.color));
172
- var expectedEffectKeys = new Set(Object.keys(defaultTheme.effect));
173
-
174
- for (var _i = 0, _Object$entries = Object.entries(themeMap); _i < _Object$entries.length; _i++) {
175
- var _Object$entries$_i = _Object$entries[_i],
176
- name = _Object$entries$_i[0],
177
- theme = _Object$entries$_i[1];
178
- var colorKeys = new Set(Object.keys(theme.color));
179
- var effectKeys = new Set(Object.keys(theme.effect));
180
-
181
- if (!setEquals(colorKeys, expectedColorKeys)) {
182
- 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)));
183
- }
184
-
185
- if (!setEquals(effectKeys, expectedEffectKeys)) {
186
- 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)));
187
- }
188
- }
189
- }
190
- function camelToKebab(value) {
191
- return value.replace( /*#__PURE__*/_wrapRegExp(/([0-9a-z]|(?=[A-Z]))([A-Z])/g, {
192
- small: 1,
193
- capital: 2
194
- }), '$1-$2').toLowerCase();
195
- }
196
-
197
- var COLOR_PREFIX = '--tailwind-color-';
198
- function isSingleColor(color) {
199
- return typeof color === 'string';
200
- }
201
-
202
- function colorsToTailwindConfig(version, colors, effects) {
203
- var targetColors = filterObject(colors, isSingleColor);
204
- var DEFAULT = getDefaultKeyName(version);
205
- /**
206
- * こういう感じのを吐き出す
207
- *
208
- * ```js
209
- * {
210
- * DEFAULT: 'var(--tailwind-color-hoge1, #fff)',
211
- * hover: 'var(--tailwind-color-hoge1--hover, #eee)',
212
- * press: 'var(--tailwind-color-hoge1--press, #ddd)',
213
- * disabled: 'var(--tailwind-color-hoge1--disabled, #eee)',
214
- * }
215
- * ```
216
- */
217
-
218
- function colorsForAllEffects(name, color) {
219
- var _extends2;
220
-
221
- var varName = "" + COLOR_PREFIX + name;
222
- return _extends((_extends2 = {}, _extends2[DEFAULT] = "var(" + varName + ", " + color + ")", _extends2), mapObject(effects, function (effectName, effect) {
223
- return [effectName, "var(" + varName + "--" + effectName + ", " + applyEffect(color, effect) + ")"];
224
- }));
225
- }
226
-
227
- return mapObject(targetColors, function (name, color) {
228
- return [name, colorsForAllEffects(name, color)];
229
- });
230
- }
231
-
232
- var _excluded = [":root"];
233
- /**
234
- * `:root` 以外のケースで各 CSS Variable がどういう値を取るかを定義する
235
- */
236
-
237
- function cssVariableColorPlugin$1(_ref) {
238
- var themes = _objectWithoutPropertiesLoose(_ref, _excluded);
239
-
240
- var definitions = defineCssVariables(themes);
241
- return plugin(function (_ref2) {
242
- var addBase = _ref2.addBase;
243
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call
244
- addBase(definitions);
245
- });
246
- }
247
- function defineCssVariables(themes) {
248
- return mapObject(themes, function (selectorOrMediaQuery, theme) {
249
- var css = toCssVariables(theme);
250
-
251
- if (selectorOrMediaQuery.startsWith('@media')) {
252
- return [selectorOrMediaQuery, {
253
- ':root': css
254
- }];
255
- } else {
256
- return [selectorOrMediaQuery, css];
257
- }
258
- });
259
- }
260
-
261
- function toCssVariables(theme) {
262
- var colors = filterObject(theme.color, isSingleColor);
263
- var effects = Object.entries(mergeEffect(theme));
264
- return flatMapObject(colors, function (name, color) {
265
- var varName = "" + COLOR_PREFIX + name;
266
- return [[varName, color]].concat(effects.map(function (_ref3) {
267
- var type = _ref3[0],
268
- effect = _ref3[1];
269
- return [varName + "--" + type, applyEffect(color, effect)];
270
- }));
271
- });
272
- }
273
-
274
- var VAR_PREFIX = '--tailwind-gradient-';
275
- function cssVariableColorPlugin(gradients, effects, selectorOrMediaQuery) {
276
- var utilities = getUtilities(gradients, effects);
277
- var classRules = mapObject(utilities, function (name) {
278
- return [".bg-" + name, {
279
- backgroundImage: "var(" + VAR_PREFIX + name + ")"
280
- }];
281
- });
282
- return plugin(function (_ref) {
283
- var addBase = _ref.addBase,
284
- addUtilities = _ref.addUtilities;
285
- var css = mapKeys(utilities, function (name) {
286
- return "" + VAR_PREFIX + name;
287
- });
288
-
289
- if (selectorOrMediaQuery.startsWith('@media')) {
290
- var _addBase;
291
-
292
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call
293
- addBase((_addBase = {}, _addBase[selectorOrMediaQuery] = {
294
- ':root': css
295
- }, _addBase));
296
- } else {
297
- var _addBase2;
298
-
299
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call
300
- addBase((_addBase2 = {}, _addBase2[selectorOrMediaQuery] = css, _addBase2));
301
- } // eslint-disable-next-line @typescript-eslint/no-unsafe-call
302
-
303
-
304
- addUtilities(classRules, {
305
- variants: ['responsive']
306
- });
307
- });
308
- }
309
- var DIRECTIONS = {
310
- 'to top': 'top',
311
- 'to bottom': 'bottom',
312
- 'to left': 'left',
313
- 'to right': 'right'
314
- };
315
- function getUtilities(gradients, effect) {
316
- var effects = Object.entries(effect);
317
- var directions = Object.entries(DIRECTIONS);
318
- return flatMapObject(gradients, function (name, colors) {
319
- return directions.flatMap(function (_ref2) {
320
- var direction = _ref2[0],
321
- className = _ref2[1];
322
-
323
- var toLinearGradient = function toLinearGradient(colors) {
324
- var style = gradient(direction)(colors);
325
-
326
- if (!('backgroundImage' in style)) {
327
- throw new Error("Could not generate linear-gradient() from " + name + " " + direction + " " + className);
328
- } // 本当は backgroundColor も同時に生成されるんだけど、使うにはそれ用の CSS 変数も一緒に作らないといけない
329
- // とりあえず background-image だけで動くのでこっちだけを利用する
330
-
331
-
332
- return style.backgroundImage;
333
- };
334
-
335
- return [// こういう感じのやつ
336
- // { 'hoge1': 'linear-gradienr(to top, ...)' }
337
- [createUtilityName(name, className), toLinearGradient(colors)]].concat(effects.map(function (_ref3) {
338
- var effectName = _ref3[0],
339
- effect = _ref3[1];
340
- return [createUtilityName(name, className, effectName), toLinearGradient(applyEffectToGradient(effect)(colors))];
341
- }));
342
- });
343
- });
344
- }
345
-
346
- function createUtilityName(gradientName, direction, suffix) {
347
- if (suffix === void 0) {
348
- suffix = '';
349
- }
350
-
351
- return [camelToKebab(gradientName), direction, suffix].filter(Boolean).join('-');
352
- }
353
-
354
- var leadingCancel = {
355
- display: 'block',
356
- width: 0,
357
- height: 0,
358
- content: '""'
359
- };
360
-
361
- var typographyStyle = function typographyStyle(style) {
362
- var margin = -halfLeading(style);
363
- return {
364
- 'font-size': px(style.fontSize),
365
- 'line-height': px(style.lineHeight),
366
-
367
- /**
368
- * cancel leading
369
- *
370
- * @see https://yuyakinoshita.com/blog/2020/01/20/line-height-crop/
371
- */
372
- '&::before': _extends({}, leadingCancel, {
373
- marginTop: px(margin)
374
- }),
375
- '&::after': _extends({}, leadingCancel, {
376
- marginBottom: px(margin)
377
- })
378
- };
379
- };
380
-
381
- var typographyPlugin = plugin(function (_ref) {
382
- var addUtilities = _ref.addUtilities;
383
- var typographyClasses = mapObject(TYPOGRAPHY_SIZE, function (fontSize, style) {
384
- return [".typography-" + fontSize, typographyStyle(style)];
385
- }); // eslint-disable-next-line @typescript-eslint/no-unsafe-call
386
-
387
- addUtilities(_extends({}, typographyClasses, {
388
- '.preserve-half-leading': {
389
- '&::before': {
390
- content: 'none'
391
- },
392
- '&::after': {
393
- content: 'none'
394
- }
395
- }
396
- }), {
397
- variants: ['responsive']
398
- });
399
- });
400
-
401
- function createTailwindConfig(_ref) {
402
- var _transitionDuration;
403
-
404
- var _ref$theme = _ref.theme,
405
- theme = _ref$theme === void 0 ? {
406
- ':root': light
407
- } : _ref$theme,
408
- _ref$version = _ref.version,
409
- version = _ref$version === void 0 ? 'v3' : _ref$version;
410
- assertAllThemeHaveSameKeys(theme);
411
- var defaultTheme = theme[':root'];
412
- var effects = mergeEffect(defaultTheme);
413
- var DEFAULT = getDefaultKeyName(version);
414
- return _extends({
415
- theme: {
416
- screens: {
417
- screen1: px(0),
418
- screen2: px(defaultTheme.breakpoint.screen1),
419
- screen3: px(defaultTheme.breakpoint.screen2),
420
- screen4: px(defaultTheme.breakpoint.screen3),
421
- screen5: px(defaultTheme.breakpoint.screen4)
422
- },
423
- colors: _extends({
424
- // @deprecated
425
- black: '#000',
426
- // @deprecated
427
- white: '#fff',
428
- transparent: 'transparent',
429
- current: 'currentColor'
430
- }, colorsToTailwindConfig(version, defaultTheme.color, effects)),
431
- borderColor: _extends({}, colorsToTailwindConfig(version, mapObject(defaultTheme.border, function (k, v) {
432
- return [k, v.color];
433
- }), effects)),
434
- spacing: mapObject(SPACING, function (name, pixel) {
435
- return [name, px(pixel)];
436
- }),
437
- width: _extends({
438
- full: '100%',
439
- screen: '100vw',
440
- auto: 'auto',
441
- fit: 'fit-content'
442
- }, Array.from({
443
- length: GRID_COUNT
444
- }, function (_, i) {
445
- return i + 1;
446
- }).reduce(function (styles, i) {
447
- var _extends2;
448
-
449
- return _extends({}, styles, (_extends2 = {}, _extends2["col-span-" + i] = px(COLUMN_UNIT * i + GUTTER_UNIT * (i - 1)), _extends2));
450
- }, {}), Array.from({
451
- length: GRID_COUNT - 1
452
- }, function (_, i) {
453
- return i + 1;
454
- }).reduce(function (styles, i) {
455
- var _extends3;
456
-
457
- return _extends({}, styles, (_extends3 = {}, _extends3[i + "/" + GRID_COUNT] = i / GRID_COUNT * 100 + "%", _extends3));
458
- }, {})),
459
- gap: {
460
- fixed: px(GUTTER_UNIT)
461
- },
462
- borderRadius: mapObject(BORDER_RADIUS, function (name, value) {
463
- return [name, px(value)];
464
- }),
465
- transitionDuration: (_transitionDuration = {}, _transitionDuration[DEFAULT] = '0.2s', _transitionDuration)
466
- }
467
- }, getVariantOption(version), {
468
- corePlugins: {
469
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
470
- // @ts-expect-error 配列にしろと言ってくるが、たぶん @types が間違っている
471
- lineHeight: false
472
- },
473
- plugins: [typographyPlugin, cssVariableColorPlugin$1(theme)].concat(Object.entries(theme).map(function (_ref2) {
474
- var selectorOrMediaQuery = _ref2[0],
475
- theme = _ref2[1];
476
- return cssVariableColorPlugin(theme.gradientColor, mergeEffect(theme), selectorOrMediaQuery);
477
- }))
478
- });
479
- }
480
- var config = createTailwindConfig({});
481
-
482
- export { config, createTailwindConfig };
483
- //# sourceMappingURL=index.module.js.map
@@ -1 +0,0 @@
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 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, filterObject, mapObject } from '@charcoal-ui/utils'\nimport { TailwindConfig } from 'tailwindcss/tailwind-config'\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): 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 {\n applyEffect,\n filterObject,\n flatMapObject,\n mapObject,\n} from '@charcoal-ui/utils'\nimport plugin, { TailwindPlugin } from 'tailwindcss/plugin'\nimport { mergeEffect } from '../foundation'\nimport { CSSVariableName, CSSVariables, Definition, ThemeMap } from '../types'\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 } 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 // 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, mapObject } from '@charcoal-ui/utils'\nimport { 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 // 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} 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'\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 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 },\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":["GRID_COUNT","mergeEffect","elementEffect","effect","outline","type","opacity","getDefaultKeyName","version","getVariantOption","variants","setEquals","a","b","size","Array","from","every","value","has","assertAllThemeHaveSameKeys","themeMap","defaultTheme","expectedColorKeys","Set","Object","keys","color","expectedEffectKeys","entries","name","theme","colorKeys","effectKeys","Error","JSON","stringify","camelToKebab","replace","toLowerCase","COLOR_PREFIX","isSingleColor","colorsToTailwindConfig","colors","effects","targetColors","filterObject","DEFAULT","colorsForAllEffects","varName","mapObject","effectName","applyEffect","cssVariableColorPlugin","_defaultTheme","themes","definitions","defineCssVariables","plugin","addBase","selectorOrMediaQuery","css","toCssVariables","startsWith","flatMapObject","map","VAR_PREFIX","gradients","utilities","getUtilities","classRules","backgroundImage","addUtilities","mapKeys","DIRECTIONS","directions","flatMap","direction","className","toLinearGradient","style","gradient","createUtilityName","applyEffectToGradient","gradientName","suffix","filter","Boolean","join","leadingCancel","display","width","height","content","typographyStyle","margin","halfLeading","px","fontSize","lineHeight","marginTop","marginBottom","typographyPlugin","typographyClasses","TYPOGRAPHY_SIZE","createTailwindConfig","light","screens","screen1","screen2","breakpoint","screen3","screen4","screen5","black","white","transparent","current","borderColor","border","k","v","spacing","SPACING","pixel","full","screen","auto","fit","length","_","i","reduce","styles","COLUMN_UNIT","GUTTER_UNIT","gap","fixed","borderRadius","BORDER_RADIUS","transitionDuration","corePlugins","plugins","cssVariableGradientPlugin","gradientColor","config"],"mappings":"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"}