@udixio/tailwind 2.4.9 → 2.4.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,23 @@
1
+ ## 2.4.11 (2026-01-26)
2
+
3
+ ### 🩹 Fixes
4
+
5
+ - **tailwind:** improve `fontFamily` support with improved processing for CSS compatibility ([5538980](https://github.com/Udixio/UI/commit/5538980))
6
+
7
+ ### ❤️ Thank You
8
+
9
+ - Joël VIGREUX
10
+
11
+ ## 2.4.10 (2026-01-26)
12
+
13
+ ### 🩹 Fixes
14
+
15
+ - **tailwind:** handle array font-family values in `baseTextStyle` ([2014572](https://github.com/Udixio/UI/commit/2014572))
16
+
17
+ ### ❤️ Thank You
18
+
19
+ - Joël VIGREUX
20
+
1
21
  ## 2.4.9 (2026-01-18)
2
22
 
3
23
  ### 🩹 Fixes
package/dist/browser.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const tailwind_plugin = require("./tailwind.plugin-CweksRYP.cjs");
3
+ const tailwind_plugin = require("./tailwind.plugin-DCCnMjHz.cjs");
4
4
  exports.TailwindImplPluginBrowser = tailwind_plugin.TailwindImplPluginBrowser;
5
5
  exports.TailwindPlugin = tailwind_plugin.TailwindPlugin;
6
6
  exports.animation = tailwind_plugin.animation;
package/dist/browser.js CHANGED
@@ -1,5 +1,5 @@
1
- import { m as main } from "./tailwind.plugin-Cy4ccIsB.js";
2
- import { T, b, a, f, s } from "./tailwind.plugin-Cy4ccIsB.js";
1
+ import { m as main } from "./tailwind.plugin-DONDY0v2.js";
2
+ import { T, b, a, f, s } from "./tailwind.plugin-DONDY0v2.js";
3
3
  export {
4
4
  T as TailwindImplPluginBrowser,
5
5
  b as TailwindPlugin,
package/dist/main.d.ts CHANGED
@@ -5,6 +5,7 @@ export type ConfigCss = {
5
5
  colorKeys: string[];
6
6
  fontStyles: string[];
7
7
  responsiveBreakPoints: string[];
8
+ fontFamily: string[];
8
9
  };
9
10
  export declare const main: import('node_modules/tailwindcss/dist/types-CJYAW1ql.mjs').c<ConfigJs>;
10
11
  //# sourceMappingURL=main.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAS,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG/D,MAAM,MAAM,QAAQ,GAAG,iBAAiB,GAAG,YAAY,CAAC;AACxD,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,IAAI,wEAwCf,CAAC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAS,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG/D,MAAM,MAAM,QAAQ,GAAG,iBAAiB,GAAG,YAAY,CAAC;AACxD,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,IAAI,wEAoDf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tailwind.plugin.d.ts","sourceRoot":"","sources":["../../src/node/tailwind.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EACL,yBAAyB,EACzB,qBAAqB,IAAI,4BAA4B,EACtD,MAAM,4BAA4B,CAAC;AAIpC,MAAM,MAAM,qBAAqB,GAAG,4BAA4B,CAAC;AAEjE,qBAAa,cAAe,SAAQ,cAAc,CAChD,kBAAkB,EAClB,qBAAqB,CACtB;IACQ,YAAY,wBAAgB;IAC5B,IAAI,SAAc;IACzB,WAAW,4BAAsB;CAClC;AAED,cAAM,kBAAmB,SAAQ,yBAAyB;IACxD,OAAO,CAAC,QAAQ;IAQD,MAAM;CAmFtB"}
1
+ {"version":3,"file":"tailwind.plugin.d.ts","sourceRoot":"","sources":["../../src/node/tailwind.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EACL,yBAAyB,EACzB,qBAAqB,IAAI,4BAA4B,EACtD,MAAM,4BAA4B,CAAC;AAIpC,MAAM,MAAM,qBAAqB,GAAG,4BAA4B,CAAC;AAEjE,qBAAa,cAAe,SAAQ,cAAc,CAChD,kBAAkB,EAClB,qBAAqB,CACtB;IACQ,YAAY,wBAAgB;IAC5B,IAAI,SAAc;IACzB,WAAW,4BAAsB;CAClC;AAED,cAAM,kBAAmB,SAAQ,yBAAyB;IACxD,OAAO,CAAC,QAAQ;IAQD,MAAM;CAuFtB"}
package/dist/node.cjs CHANGED
@@ -24,7 +24,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
24
  ));
25
25
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
26
26
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
27
- const tailwind_plugin = require("./tailwind.plugin-CweksRYP.cjs");
27
+ const tailwind_plugin = require("./tailwind.plugin-DCCnMjHz.cjs");
28
28
  const theme = require("@udixio/theme");
29
29
  const fs = require("fs");
30
30
  const console = require("node:console");
@@ -100,18 +100,20 @@ class TailwindImplPlugin extends tailwind_plugin.TailwindImplPluginBrowser {
100
100
  ).join(", "),
101
101
  responsiveBreakPoints: Object.entries(
102
102
  this.options.responsiveBreakPoints ?? {}
103
- ).map(([key, value]) => `${key} ${value}`).join(", ")
103
+ ).map(([key, value]) => `${key} ${value}`).join(", "),
104
+ fontFamily: Object.entries(fontFamily).map(([key, values]) => `${key} ${values.join("|")}`).join(", ")
104
105
  };
105
106
  this.outputCss += `@plugin "@udixio/tailwind" {
106
107
  colorKeys: ${configCss.colorKeys};
107
108
  fontStyles: ${configCss.fontStyles};
108
109
  responsiveBreakPoints: ${configCss.responsiveBreakPoints};
110
+ fontFamily: ${configCss.fontFamily};
109
111
  }`;
110
112
  this.loadColor({ isDynamic: false });
111
113
  this.outputCss += `
112
114
  @theme {
113
115
  ${Object.entries(fontFamily).map(
114
- ([key, values]) => `--font-${key}: ${values.map((value) => `"${value}"`).join(", ")};`
116
+ ([key, values]) => `--font-${key}: ${values.map((value) => value.trim().startsWith("var(") ? value : `"${value}"`).join(", ")};`
115
117
  ).join("\n ")}
116
118
  }`;
117
119
  await createOrUpdateFile2(udixioCssPath, this.outputCss);
package/dist/node.js CHANGED
@@ -1,8 +1,8 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { T as TailwindImplPluginBrowser, m as main } from "./tailwind.plugin-Cy4ccIsB.js";
5
- import { a, f, s } from "./tailwind.plugin-Cy4ccIsB.js";
4
+ import { T as TailwindImplPluginBrowser, m as main } from "./tailwind.plugin-DONDY0v2.js";
5
+ import { a, f, s } from "./tailwind.plugin-DONDY0v2.js";
6
6
  import { PluginAbstract, FontPlugin } from "@udixio/theme";
7
7
  import * as fs from "fs";
8
8
  import * as console from "node:console";
@@ -60,18 +60,20 @@ class TailwindImplPlugin extends TailwindImplPluginBrowser {
60
60
  ).join(", "),
61
61
  responsiveBreakPoints: Object.entries(
62
62
  this.options.responsiveBreakPoints ?? {}
63
- ).map(([key, value]) => `${key} ${value}`).join(", ")
63
+ ).map(([key, value]) => `${key} ${value}`).join(", "),
64
+ fontFamily: Object.entries(fontFamily).map(([key, values]) => `${key} ${values.join("|")}`).join(", ")
64
65
  };
65
66
  this.outputCss += `@plugin "@udixio/tailwind" {
66
67
  colorKeys: ${configCss.colorKeys};
67
68
  fontStyles: ${configCss.fontStyles};
68
69
  responsiveBreakPoints: ${configCss.responsiveBreakPoints};
70
+ fontFamily: ${configCss.fontFamily};
69
71
  }`;
70
72
  this.loadColor({ isDynamic: false });
71
73
  this.outputCss += `
72
74
  @theme {
73
75
  ${Object.entries(fontFamily).map(
74
- ([key, values]) => `--font-${key}: ${values.map((value) => `"${value}"`).join(", ")};`
76
+ ([key, values]) => `--font-${key}: ${values.map((value) => value.trim().startsWith("var(") ? value : `"${value}"`).join(", ")};`
75
77
  ).join("\n ")}
76
78
  }`;
77
79
  await createOrUpdateFile2(udixioCssPath, this.outputCss);
@@ -2,6 +2,10 @@ import { FontRole, FontSize, FontStyle } from '@udixio/theme';
2
2
  export interface FontPluginOptions {
3
3
  fontStyles: Record<FontRole, Record<FontSize, FontStyle>>;
4
4
  responsiveBreakPoints: Record<string, number>;
5
+ fontFamily: {
6
+ expressive: string[];
7
+ neutral: string[];
8
+ };
5
9
  }
6
10
  export declare const font: import('node_modules/tailwindcss/dist/types-CJYAW1ql.mjs').c<FontPluginOptions>;
7
11
  //# sourceMappingURL=font.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"font.d.ts","sourceRoot":"","sources":["../../src/plugins-tailwind/font.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG9D,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAC1D,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/C;AAED,eAAO,MAAM,IAAI,iFAoDf,CAAC"}
1
+ {"version":3,"file":"font.d.ts","sourceRoot":"","sources":["../../src/plugins-tailwind/font.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG9D,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAC1D,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,UAAU,EAAE;QACV,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH;AAED,eAAO,MAAM,IAAI,iFA6Df,CAAC"}
@@ -454,16 +454,20 @@ const font = plugin.withOptions((options) => {
454
454
  addUtilities,
455
455
  theme: theme2
456
456
  }) => {
457
- const { fontStyles, responsiveBreakPoints } = options;
457
+ const { fontStyles, responsiveBreakPoints, fontFamily } = options;
458
458
  const pixelUnit = "rem";
459
459
  const newUtilities = {};
460
- const baseTextStyle = (sizeValue) => ({
461
- fontSize: sizeValue.fontSize + pixelUnit,
462
- fontWeight: sizeValue.fontWeight,
463
- lineHeight: sizeValue.lineHeight + pixelUnit,
464
- letterSpacing: sizeValue.letterSpacing ? sizeValue.letterSpacing + pixelUnit : null,
465
- fontFamily: theme2("fontFamily." + sizeValue.fontFamily)
466
- });
460
+ const baseTextStyle = (sizeValue) => {
461
+ const fontFamilyArray = fontFamily[sizeValue.fontFamily];
462
+ const processedFontFamily = fontFamilyArray.map((font2) => font2.trim().startsWith("var(") ? font2 : `"${font2}"`).join(", ");
463
+ return {
464
+ fontSize: sizeValue.fontSize + pixelUnit,
465
+ fontWeight: sizeValue.fontWeight,
466
+ lineHeight: sizeValue.lineHeight + pixelUnit,
467
+ letterSpacing: sizeValue.letterSpacing ? sizeValue.letterSpacing + pixelUnit : null,
468
+ fontFamily: processedFontFamily
469
+ };
470
+ };
467
471
  const responsiveTextStyle = (sizeValue, breakPointName, breakPointRatio) => ({
468
472
  [`@media (min-width: ${theme2("screens." + breakPointName, {})})`]: {
469
473
  fontSize: sizeValue.fontSize * breakPointRatio + pixelUnit,
@@ -631,10 +635,20 @@ const main = plugin.withOptions((args) => {
631
635
  const [key, value] = line.split(" ");
632
636
  responsiveBreakPoints[key] = value;
633
637
  });
638
+ let fontFamilyCss = configCss.fontFamily;
639
+ if (!Array.isArray(fontFamilyCss)) {
640
+ fontFamilyCss = [fontFamilyCss];
641
+ }
642
+ const fontFamily = {};
643
+ fontFamilyCss.forEach((line) => {
644
+ const [key, ...values] = line.split(" ");
645
+ fontFamily[key] = values.join(" ").split("|");
646
+ });
634
647
  const options = {
635
648
  colorKeys: configCss.colorKeys,
636
649
  fontStyles,
637
- responsiveBreakPoints
650
+ responsiveBreakPoints,
651
+ fontFamily
638
652
  };
639
653
  return (api) => {
640
654
  font(options).handler(api);
@@ -453,16 +453,20 @@ const font = plugin.withOptions((options) => {
453
453
  addUtilities,
454
454
  theme
455
455
  }) => {
456
- const { fontStyles, responsiveBreakPoints } = options;
456
+ const { fontStyles, responsiveBreakPoints, fontFamily } = options;
457
457
  const pixelUnit = "rem";
458
458
  const newUtilities = {};
459
- const baseTextStyle = (sizeValue) => ({
460
- fontSize: sizeValue.fontSize + pixelUnit,
461
- fontWeight: sizeValue.fontWeight,
462
- lineHeight: sizeValue.lineHeight + pixelUnit,
463
- letterSpacing: sizeValue.letterSpacing ? sizeValue.letterSpacing + pixelUnit : null,
464
- fontFamily: theme("fontFamily." + sizeValue.fontFamily)
465
- });
459
+ const baseTextStyle = (sizeValue) => {
460
+ const fontFamilyArray = fontFamily[sizeValue.fontFamily];
461
+ const processedFontFamily = fontFamilyArray.map((font2) => font2.trim().startsWith("var(") ? font2 : `"${font2}"`).join(", ");
462
+ return {
463
+ fontSize: sizeValue.fontSize + pixelUnit,
464
+ fontWeight: sizeValue.fontWeight,
465
+ lineHeight: sizeValue.lineHeight + pixelUnit,
466
+ letterSpacing: sizeValue.letterSpacing ? sizeValue.letterSpacing + pixelUnit : null,
467
+ fontFamily: processedFontFamily
468
+ };
469
+ };
466
470
  const responsiveTextStyle = (sizeValue, breakPointName, breakPointRatio) => ({
467
471
  [`@media (min-width: ${theme("screens." + breakPointName, {})})`]: {
468
472
  fontSize: sizeValue.fontSize * breakPointRatio + pixelUnit,
@@ -630,10 +634,20 @@ const main = plugin.withOptions((args) => {
630
634
  const [key, value] = line.split(" ");
631
635
  responsiveBreakPoints[key] = value;
632
636
  });
637
+ let fontFamilyCss = configCss.fontFamily;
638
+ if (!Array.isArray(fontFamilyCss)) {
639
+ fontFamilyCss = [fontFamilyCss];
640
+ }
641
+ const fontFamily = {};
642
+ fontFamilyCss.forEach((line) => {
643
+ const [key, ...values] = line.split(" ");
644
+ fontFamily[key] = values.join(" ").split("|");
645
+ });
633
646
  const options = {
634
647
  colorKeys: configCss.colorKeys,
635
648
  fontStyles,
636
- responsiveBreakPoints
649
+ responsiveBreakPoints,
650
+ fontFamily
637
651
  };
638
652
  return (api) => {
639
653
  font(options).handler(api);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@udixio/tailwind",
3
- "version": "2.4.9",
3
+ "version": "2.4.11",
4
4
  "type": "module",
5
5
  "main": "./dist/node.js",
6
6
  "module": "./dist/node.js",
package/src/main.ts CHANGED
@@ -9,6 +9,7 @@ export type ConfigCss = {
9
9
  colorKeys: string[];
10
10
  fontStyles: string[];
11
11
  responsiveBreakPoints: string[];
12
+ fontFamily: string[];
12
13
  };
13
14
 
14
15
  export const main = plugin.withOptions<ConfigJs>((args) => {
@@ -39,10 +40,22 @@ export const main = plugin.withOptions<ConfigJs>((args) => {
39
40
  responsiveBreakPoints[key] = value;
40
41
  });
41
42
 
43
+ let fontFamilyCss = configCss.fontFamily;
44
+ if (!Array.isArray(fontFamilyCss)) {
45
+ fontFamilyCss = [fontFamilyCss];
46
+ }
47
+
48
+ const fontFamily: any = {};
49
+ fontFamilyCss.forEach((line) => {
50
+ const [key, ...values] = line.split(' ');
51
+ fontFamily[key] = values.join(' ').split('|');
52
+ });
53
+
42
54
  const options: ConfigJs = {
43
55
  colorKeys: configCss.colorKeys,
44
56
  fontStyles: fontStyles,
45
57
  responsiveBreakPoints,
58
+ fontFamily,
46
59
  };
47
60
 
48
61
  return (api: PluginAPI) => {
@@ -90,12 +90,16 @@ class TailwindImplPlugin extends TailwindImplPluginBrowser {
90
90
  )
91
91
  .map(([key, value]) => `${key} ${value}`)
92
92
  .join(', ') as any,
93
+ fontFamily: Object.entries(fontFamily)
94
+ .map(([key, values]) => `${key} ${values.join('|')}`)
95
+ .join(', ') as any,
93
96
  };
94
97
 
95
98
  this.outputCss += `@plugin "@udixio/tailwind" {
96
99
  colorKeys: ${configCss.colorKeys};
97
100
  fontStyles: ${configCss.fontStyles};
98
101
  responsiveBreakPoints: ${configCss.responsiveBreakPoints};
102
+ fontFamily: ${configCss.fontFamily};
99
103
  }`;
100
104
  this.loadColor({ isDynamic: false });
101
105
  this.outputCss += `
@@ -103,7 +107,7 @@ class TailwindImplPlugin extends TailwindImplPluginBrowser {
103
107
  ${Object.entries(fontFamily)
104
108
  .map(
105
109
  ([key, values]) =>
106
- `--font-${key}: ${values.map((value) => `"${value}"`).join(', ')};`,
110
+ `--font-${key}: ${values.map((value) => value.trim().startsWith('var(') ? value : `"${value}"`).join(', ')};`,
107
111
  )
108
112
  .join('\n ')}
109
113
  }`;
@@ -4,6 +4,10 @@ import plugin, { PluginAPI } from 'tailwindcss/plugin';
4
4
  export interface FontPluginOptions {
5
5
  fontStyles: Record<FontRole, Record<FontSize, FontStyle>>;
6
6
  responsiveBreakPoints: Record<string, number>;
7
+ fontFamily: {
8
+ expressive: string[];
9
+ neutral: string[];
10
+ };
7
11
  }
8
12
 
9
13
  export const font = plugin.withOptions((options: FontPluginOptions) => {
@@ -11,20 +15,29 @@ export const font = plugin.withOptions((options: FontPluginOptions) => {
11
15
  addUtilities,
12
16
  theme,
13
17
  }: Pick<PluginAPI, 'addUtilities' | 'theme'>) => {
14
- const { fontStyles, responsiveBreakPoints } = options;
18
+ const { fontStyles, responsiveBreakPoints, fontFamily } = options;
15
19
 
16
20
  const pixelUnit = 'rem';
17
21
  const newUtilities: Record<string, any> = {};
18
22
 
19
- const baseTextStyle = (sizeValue: FontStyle) => ({
20
- fontSize: sizeValue.fontSize + pixelUnit,
21
- fontWeight: sizeValue.fontWeight as unknown as any,
22
- lineHeight: sizeValue.lineHeight + pixelUnit,
23
- letterSpacing: sizeValue.letterSpacing
24
- ? sizeValue.letterSpacing + pixelUnit
25
- : null,
26
- fontFamily: theme('fontFamily.' + sizeValue.fontFamily),
27
- });
23
+ const baseTextStyle = (sizeValue: FontStyle) => {
24
+ const fontFamilyArray = fontFamily[sizeValue.fontFamily as keyof typeof fontFamily];
25
+
26
+ // Process font family: keep var() without quotes, add quotes to others
27
+ const processedFontFamily = fontFamilyArray
28
+ .map((font) => (font.trim().startsWith('var(') ? font : `"${font}"`))
29
+ .join(', ');
30
+
31
+ return {
32
+ fontSize: sizeValue.fontSize + pixelUnit,
33
+ fontWeight: sizeValue.fontWeight as unknown as any,
34
+ lineHeight: sizeValue.lineHeight + pixelUnit,
35
+ letterSpacing: sizeValue.letterSpacing
36
+ ? sizeValue.letterSpacing + pixelUnit
37
+ : null,
38
+ fontFamily: processedFontFamily,
39
+ };
40
+ };
28
41
 
29
42
  const responsiveTextStyle = (
30
43
  sizeValue: FontStyle,