frutjam 2.0.5 → 2.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base.css +1 -1
- package/dist/components/accordion.css +1 -1
- package/dist/components/alert.css +1 -1
- package/dist/components/avatar.css +1 -1
- package/dist/components/badge.css +1 -1
- package/dist/components/breadcrumb.css +1 -1
- package/dist/components/button.css +1 -1
- package/dist/components/card.css +1 -1
- package/dist/components/carousel.css +1 -1
- package/dist/components/chat.css +1 -1
- package/dist/components/checkbox.css +1 -1
- package/dist/components/collapsible.css +1 -1
- package/dist/components/combobox.css +1 -1
- package/dist/components/countdown.css +1 -1
- package/dist/components/diff.css +1 -1
- package/dist/components/divider.css +1 -1
- package/dist/components/drawer.css +1 -1
- package/dist/components/footer.css +1 -1
- package/dist/components/header.css +1 -1
- package/dist/components/hero.css +1 -1
- package/dist/components/indicator.css +1 -1
- package/dist/components/input.css +1 -1
- package/dist/components/join.css +1 -1
- package/dist/components/kbd.css +1 -1
- package/dist/components/link.css +1 -1
- package/dist/components/loading.css +1 -1
- package/dist/components/mask.css +1 -1
- package/dist/components/menu.css +1 -1
- package/dist/components/modal.css +1 -1
- package/dist/components/navbar.css +1 -1
- package/dist/components/popover.css +1 -1
- package/dist/components/progress.css +1 -1
- package/dist/components/radial-progress.css +1 -1
- package/dist/components/radio.css +1 -1
- package/dist/components/range.css +1 -1
- package/dist/components/rating.css +1 -1
- package/dist/components/select.css +1 -1
- package/dist/components/sidebar.css +1 -1
- package/dist/components/skeleton.css +1 -1
- package/dist/components/stat.css +1 -1
- package/dist/components/status.css +1 -1
- package/dist/components/steps.css +1 -1
- package/dist/components/surface.css +1 -1
- package/dist/components/swap.css +1 -1
- package/dist/components/table.css +1 -1
- package/dist/components/tabs.css +1 -1
- package/dist/components/tag.css +1 -1
- package/dist/components/textarea.css +1 -1
- package/dist/components/timeline.css +1 -1
- package/dist/components/toast.css +1 -1
- package/dist/components/toggle.css +1 -1
- package/dist/components/tooltip.css +1 -1
- package/dist/frutjam.min.css +2 -2
- package/dist/plugin.js +17 -3
- package/dist/themes/darkberry.css +1 -1
- package/dist/themes/snowberry.css +1 -1
- package/dist/utilities/headings.css +1 -1
- package/dist/utilities/para.css +1 -1
- package/dist/utilities/typography.css +1 -1
- package/dist/utilities/wrapper.css +1 -1
- package/index.js +22 -5
- package/package.json +3 -1
package/dist/plugin.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! frutjam v2.0.
|
|
1
|
+
/*! frutjam v2.0.6 (c) 2026 Nezanuha | MIT License | https://frutjam.com */
|
|
2
2
|
|
|
3
3
|
// Tailwind v4 plugin.withOptions implementation
|
|
4
4
|
const plugin = {
|
|
@@ -24,6 +24,11 @@ const COMPONENTS = {"accordion":{".accordion":{"--radius-accordion":"calc(var(--
|
|
|
24
24
|
|
|
25
25
|
const UTILITIES = {"headings":{".heading-2xl":{"--heading-size":"1.5rem ","color":"var(--color-on-base)","font-weight":"bold","text-wrap-style":"balance","font-size":"var(--heading-size)","line-height":1.15},".heading-3xl":{"--heading-size":"1.875rem ","color":"var(--color-on-base)","font-weight":"bold","text-wrap-style":"balance","font-size":"var(--heading-size)","line-height":1.15},".heading-4xl":{"--heading-size":"2.25rem ","color":"var(--color-on-base)","font-weight":"bold","text-wrap-style":"balance","font-size":"var(--heading-size)","line-height":1.15},".heading-5xl":{"--heading-size":"3rem ","color":"var(--color-on-base)","font-weight":"bold","text-wrap-style":"balance","font-size":"var(--heading-size)","line-height":1.15},".heading-6xl":{"--heading-size":"3.75rem ","color":"var(--color-on-base)","font-weight":"bold","text-wrap-style":"balance","font-size":"var(--heading-size)","line-height":1.15},".heading-7xl":{"--heading-size":"4.5rem ","color":"var(--color-on-base)","font-weight":"bold","text-wrap-style":"balance","font-size":"var(--heading-size)","line-height":1.15},".heading-8xl":{"--heading-size":"6rem ","color":"var(--color-on-base)","font-weight":"bold","text-wrap-style":"balance","font-size":"var(--heading-size)","line-height":1.15},".heading-9xl":{"--heading-size":"8rem ","color":"var(--color-on-base)","font-weight":"bold","text-wrap-style":"balance","font-size":"var(--heading-size)","line-height":1.15},".heading-lg":{"--heading-size":"1.125rem ","color":"var(--color-on-base)","font-weight":"bold","text-wrap-style":"balance","font-size":"var(--heading-size)","line-height":1.15},".heading-md":{"color":"var(--color-on-base)","font-weight":"bold","text-wrap-style":"balance","font-size":"var(--heading-size)","line-height":1.15,"--heading-size":"1rem "},".heading-sm":{"--heading-size":"0.875rem ","color":"var(--color-on-base)","font-weight":"bold","text-wrap-style":"balance","font-size":"var(--heading-size)","line-height":1.15},".heading-xl":{"--heading-size":"1.25rem ","color":"var(--color-on-base)","font-weight":"bold","text-wrap-style":"balance","font-size":"var(--heading-size)","line-height":1.15},".heading-xs":{"--heading-size":"0.75rem ","color":"var(--color-on-base)","font-weight":"bold","text-wrap-style":"balance","font-size":"var(--heading-size)","line-height":1.15},".heading":{"--heading-size":"1rem ","color":"var(--color-on-base)","font-weight":"bold","text-wrap-style":"balance","font-size":"var(--heading-size)","line-height":1.15}},"para":{".para-2xl":{"text-wrap-style":"pretty","font-size":"var(--text-2xl)","line-height":1.6},".para-3xl":{"text-wrap-style":"pretty","font-size":"var(--text-3xl)","line-height":1.6},".para-4xl":{"text-wrap-style":"pretty","font-size":"var(--text-4xl)","line-height":1.6},".para-5xl":{"text-wrap-style":"pretty","font-size":"var(--text-5xl)","line-height":1.6},".para-6xl":{"text-wrap-style":"pretty","font-size":"var(--text-6xl)","line-height":1.6},".para-7xl":{"text-wrap-style":"pretty","font-size":"var(--text-7xl)","line-height":1.6},".para-8xl":{"text-wrap-style":"pretty","font-size":"var(--text-8xl)","line-height":1.6},".para-9xl":{"text-wrap-style":"pretty","font-size":"var(--text-9xl)","line-height":1.6},".para-lg":{"text-wrap-style":"pretty","font-size":"var(--text-lg)","line-height":1.6},".para-md":{"text-wrap-style":"pretty","line-height":1.6,"font-size":"var(--text-base)"},".para-sm":{"text-wrap-style":"pretty","font-size":"var(--text-sm)","line-height":1.6},".para-xl":{"text-wrap-style":"pretty","font-size":"var(--text-xl)","line-height":1.6},".para-xs":{"text-wrap-style":"pretty","font-size":"var(--text-xs)","line-height":1.6},".para":{"text-wrap-style":"pretty","font-size":"var(--text-base)","line-height":1.6}},"typography":{".prose-frutjam":{"--tw-prose-body":"var(--color-body)","--tw-prose-headings":"var(--color-on-base)","--tw-prose-lead":"var(--color-on-neutral)","--tw-prose-bold":"var(--color-on-base)","--tw-prose-links":"var(--color-primary)","--tw-prose-counters":"var(--color-neutral)","--tw-prose-bullets":"var(--color-neutral)","--tw-prose-hr":"var(--color-base-soft)","--tw-prose-quotes":"var(--color-on-base)","--tw-prose-quote-borders":"var(--color-primary)","--tw-prose-code":"var(--color-on-base)","--tw-prose-pre-code":"var(--color-on-base)","--tw-prose-pre-bg":"var(--color-base-soft)","--tw-prose-th-borders":"var(--color-base-soft)","--tw-prose-td-borders":"var(--color-base-soft)","--tw-prose-captions":"var(--color-on-neutral)","--tw-prose-kbd":"var(--color-body)","--tw-prose-invert-body":"var(--color-on-neutral)","--tw-prose-invert-headings":"var(--color-on-base)","--tw-prose-invert-links":"var(--color-primary)"}},"wrapper":{".wrapper-full":{"width":"100%","max-width":"100%","box-sizing":"border-box","margin-inline":"auto","padding-inline":"1rem","@media (width >= 40rem)":{"padding-inline":"2rem"},"@media (width >= 64rem)":{"padding-inline":"4rem"}},".wrapper-2xl":{"box-sizing":"border-box","max-width":"1536px","margin-inline":"auto","padding-inline":"1rem","@media (width >= 40rem)":{"padding-inline":"2rem"},"@media (width >= 64rem)":{"padding-inline":"4rem"}},".wrapper-lg":{"box-sizing":"border-box","max-width":"1024px","margin-inline":"auto","padding-inline":"1rem","@media (width >= 40rem)":{"padding-inline":"2rem"},"@media (width >= 64rem)":{"padding-inline":"4rem"}},".wrapper-md":{"box-sizing":"border-box","max-width":"768px","margin-inline":"auto","padding-inline":"1rem","@media (width >= 40rem)":{"padding-inline":"2rem"},"@media (width >= 64rem)":{"padding-inline":"4rem"}},".wrapper-sm":{"box-sizing":"border-box","max-width":"640px","margin-inline":"auto","padding-inline":"1rem","@media (width >= 40rem)":{"padding-inline":"2rem"},"@media (width >= 64rem)":{"padding-inline":"4rem"}},".wrapper-xl":{"box-sizing":"border-box","max-width":"1280px","margin-inline":"auto","padding-inline":"1rem","@media (width >= 40rem)":{"padding-inline":"2rem"},"@media (width >= 64rem)":{"padding-inline":"4rem"}},".wrapper-xs":{"box-sizing":"border-box","max-width":"320px","margin-inline":"auto","padding-inline":"1rem","@media (width >= 40rem)":{"padding-inline":"2rem"},"@media (width >= 64rem)":{"padding-inline":"4rem"}},".wrapper":{"box-sizing":"border-box","margin-inline":"auto","padding-inline":"1rem","@media (width >= 40rem)":{"padding-inline":"2rem"},"@media (width >= 64rem)":{"padding-inline":"4rem"}}}}
|
|
26
26
|
|
|
27
|
+
// Text-color semantic overrides — registered without prefix so they override Tailwind's
|
|
28
|
+
// theme-generated text-{color} utilities (which use --color-{color}-500 flat value).
|
|
29
|
+
// These use light-dark() for automatic light/dark mode contrast without dark: variants.
|
|
30
|
+
const TEXT_COLOR_OVERRIDES = {".text-base":{"color":"light-dark(var(--color-base-700), var(--color-base-300))"},".text-neutral":{"color":"light-dark(var(--color-neutral-700), var(--color-neutral-300))"},".text-primary":{"color":"light-dark(var(--color-primary-700), var(--color-primary-300))"},".text-secondary":{"color":"light-dark(var(--color-secondary-700), var(--color-secondary-300))"},".text-accent":{"color":"light-dark(var(--color-accent-700), var(--color-accent-300))"},".text-info":{"color":"light-dark(var(--color-info-700), var(--color-info-300))"},".text-success":{"color":"light-dark(var(--color-success-700), var(--color-success-300))"},".text-warning":{"color":"light-dark(var(--color-warning-700), var(--color-warning-300))"},".text-error":{"color":"light-dark(var(--color-error-700), var(--color-error-300))"}}
|
|
31
|
+
|
|
27
32
|
// Color name → CSS variable mapping (mirrors @theme inline in frutjam/theme)
|
|
28
33
|
const THEME_CONFIG = {"base":"var(--color-base-500)","on-base":"var(--color-on-base)","base-soft":"var(--color-base-soft)","on-base-soft":"var(--color-on-base-soft)","base-active":"var(--color-base-active)","base-50":"var(--color-base-50)","base-100":"var(--color-base-100)","base-200":"var(--color-base-200)","base-300":"var(--color-base-300)","base-400":"var(--color-base-400)","base-500":"var(--color-base-500)","base-600":"var(--color-base-600)","base-700":"var(--color-base-700)","base-800":"var(--color-base-800)","base-900":"var(--color-base-900)","base-950":"var(--color-base-950)","neutral":"var(--color-neutral-500)","on-neutral":"var(--color-on-neutral)","neutral-soft":"var(--color-neutral-soft)","on-neutral-soft":"var(--color-on-neutral-soft)","neutral-active":"var(--color-neutral-active)","neutral-50":"var(--color-neutral-50)","neutral-100":"var(--color-neutral-100)","neutral-200":"var(--color-neutral-200)","neutral-300":"var(--color-neutral-300)","neutral-400":"var(--color-neutral-400)","neutral-500":"var(--color-neutral-500)","neutral-600":"var(--color-neutral-600)","neutral-700":"var(--color-neutral-700)","neutral-800":"var(--color-neutral-800)","neutral-900":"var(--color-neutral-900)","neutral-950":"var(--color-neutral-950)","primary":"var(--color-primary-500)","on-primary":"var(--color-on-primary)","primary-soft":"var(--color-primary-soft)","on-primary-soft":"var(--color-on-primary-soft)","primary-active":"var(--color-primary-active)","primary-50":"var(--color-primary-50)","primary-100":"var(--color-primary-100)","primary-200":"var(--color-primary-200)","primary-300":"var(--color-primary-300)","primary-400":"var(--color-primary-400)","primary-500":"var(--color-primary-500)","primary-600":"var(--color-primary-600)","primary-700":"var(--color-primary-700)","primary-800":"var(--color-primary-800)","primary-900":"var(--color-primary-900)","primary-950":"var(--color-primary-950)","secondary":"var(--color-secondary-500)","on-secondary":"var(--color-on-secondary)","secondary-soft":"var(--color-secondary-soft)","on-secondary-soft":"var(--color-on-secondary-soft)","secondary-active":"var(--color-secondary-active)","secondary-50":"var(--color-secondary-50)","secondary-100":"var(--color-secondary-100)","secondary-200":"var(--color-secondary-200)","secondary-300":"var(--color-secondary-300)","secondary-400":"var(--color-secondary-400)","secondary-500":"var(--color-secondary-500)","secondary-600":"var(--color-secondary-600)","secondary-700":"var(--color-secondary-700)","secondary-800":"var(--color-secondary-800)","secondary-900":"var(--color-secondary-900)","secondary-950":"var(--color-secondary-950)","accent":"var(--color-accent-500)","on-accent":"var(--color-on-accent)","accent-soft":"var(--color-accent-soft)","on-accent-soft":"var(--color-on-accent-soft)","accent-active":"var(--color-accent-active)","accent-50":"var(--color-accent-50)","accent-100":"var(--color-accent-100)","accent-200":"var(--color-accent-200)","accent-300":"var(--color-accent-300)","accent-400":"var(--color-accent-400)","accent-500":"var(--color-accent-500)","accent-600":"var(--color-accent-600)","accent-700":"var(--color-accent-700)","accent-800":"var(--color-accent-800)","accent-900":"var(--color-accent-900)","accent-950":"var(--color-accent-950)","info":"var(--color-info-500)","on-info":"var(--color-on-info)","info-soft":"var(--color-info-soft)","on-info-soft":"var(--color-on-info-soft)","info-active":"var(--color-info-active)","info-50":"var(--color-info-50)","info-100":"var(--color-info-100)","info-200":"var(--color-info-200)","info-300":"var(--color-info-300)","info-400":"var(--color-info-400)","info-500":"var(--color-info-500)","info-600":"var(--color-info-600)","info-700":"var(--color-info-700)","info-800":"var(--color-info-800)","info-900":"var(--color-info-900)","info-950":"var(--color-info-950)","success":"var(--color-success-500)","on-success":"var(--color-on-success)","success-soft":"var(--color-success-soft)","on-success-soft":"var(--color-on-success-soft)","success-active":"var(--color-success-active)","success-50":"var(--color-success-50)","success-100":"var(--color-success-100)","success-200":"var(--color-success-200)","success-300":"var(--color-success-300)","success-400":"var(--color-success-400)","success-500":"var(--color-success-500)","success-600":"var(--color-success-600)","success-700":"var(--color-success-700)","success-800":"var(--color-success-800)","success-900":"var(--color-success-900)","success-950":"var(--color-success-950)","warning":"var(--color-warning-500)","on-warning":"var(--color-on-warning)","warning-soft":"var(--color-warning-soft)","on-warning-soft":"var(--color-on-warning-soft)","warning-active":"var(--color-warning-active)","warning-50":"var(--color-warning-50)","warning-100":"var(--color-warning-100)","warning-200":"var(--color-warning-200)","warning-300":"var(--color-warning-300)","warning-400":"var(--color-warning-400)","warning-500":"var(--color-warning-500)","warning-600":"var(--color-warning-600)","warning-700":"var(--color-warning-700)","warning-800":"var(--color-warning-800)","warning-900":"var(--color-warning-900)","warning-950":"var(--color-warning-950)","error":"var(--color-error-500)","on-error":"var(--color-on-error)","error-soft":"var(--color-error-soft)","on-error-soft":"var(--color-on-error-soft)","error-active":"var(--color-error-active)","error-50":"var(--color-error-50)","error-100":"var(--color-error-100)","error-200":"var(--color-error-200)","error-300":"var(--color-error-300)","error-400":"var(--color-error-400)","error-500":"var(--color-error-500)","error-600":"var(--color-error-600)","error-700":"var(--color-error-700)","error-800":"var(--color-error-800)","error-900":"var(--color-error-900)","error-950":"var(--color-error-950)"}
|
|
29
34
|
|
|
@@ -127,7 +132,7 @@ function remapRoot(obj, rootSelector) {
|
|
|
127
132
|
}
|
|
128
133
|
|
|
129
134
|
export default plugin.withOptions(
|
|
130
|
-
(options = {}) => ({ addBase, addUtilities }) => {
|
|
135
|
+
(options = {}) => ({ addBase, addUtilities, matchUtilities, theme }) => {
|
|
131
136
|
const {
|
|
132
137
|
prefix = "",
|
|
133
138
|
reset = true,
|
|
@@ -150,7 +155,7 @@ export default plugin.withOptions(
|
|
|
150
155
|
if (logs) {
|
|
151
156
|
const d = "\x1b[2m", r = "\x1b[0m"
|
|
152
157
|
const badge = "\x1b[46m\x1b[30m frutjam \x1b[0m"
|
|
153
|
-
console.log("\n" + badge + " " + d + "v2.0.
|
|
158
|
+
console.log("\n" + badge + " " + d + "v2.0.6" + r + "\n")
|
|
154
159
|
}
|
|
155
160
|
|
|
156
161
|
// Base
|
|
@@ -182,6 +187,15 @@ export default plugin.withOptions(
|
|
|
182
187
|
if (Object.keys(utils).length) addUtilities(sortUtils(utils))
|
|
183
188
|
}
|
|
184
189
|
}
|
|
190
|
+
|
|
191
|
+
// Text-color semantic overrides — use matchUtilities to override theme-generated text-{color}.
|
|
192
|
+
// addUtilities() cannot override theme utilities; matchUtilities() with explicit values can.
|
|
193
|
+
if (Object.keys(TEXT_COLOR_OVERRIDES).length) {
|
|
194
|
+
const values = Object.fromEntries(
|
|
195
|
+
Object.entries(TEXT_COLOR_OVERRIDES).map(([cls, style]) => [cls.slice('.text-'.length), style.color])
|
|
196
|
+
)
|
|
197
|
+
matchUtilities({ text: (value) => ({ color: value }) }, { values })
|
|
198
|
+
}
|
|
185
199
|
},
|
|
186
200
|
() => ({
|
|
187
201
|
theme: {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! frutjam v2.0.
|
|
1
|
+
/*! frutjam v2.0.6 (c) 2026 Nezanuha | Released under the MIT License | https://frutjam.com */
|
|
2
2
|
@layer theme{:is([data-theme=darkberry],[data-theme=dark]){--scheme-color:dark;--border-radius:0.25rem;--color-base:oklch(10.889% 0.00301 17.398);--color-on-base:oklch(98% 0.01 270);--color-neutral:oklch(85% 0 0);--color-on-neutral:oklch(20% 0 0);--color-primary:oklch(66.385% 0.18368 285.592);--color-on-primary:oklch(10% 0.01 270);--color-secondary:oklch(65% 0.18 220);--color-on-secondary:oklch(10% 0.01 220);--color-accent:oklch(75% 0.18 50);--color-on-accent:oklch(10% 0.01 50);--color-info:oklch(91.67% .077 205.04);--color-on-info:oklch(10% 0.01 250);--color-success:oklch(65% 0.18 140);--color-on-success:oklch(10% 0.01 140);--color-warning:oklch(75% 0.20 85);--color-on-warning:oklch(10% 0.01 85);--color-error:oklch(60% 0.22 30);--color-on-error:oklch(10% 0.01 30)}}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! frutjam v2.0.
|
|
1
|
+
/*! frutjam v2.0.6 (c) 2026 Nezanuha | Released under the MIT License | https://frutjam.com */
|
|
2
2
|
@layer theme{:is([data-theme=snowberry],[data-theme=light]),:root:not([data-theme]){--scheme-color:light;--border-radius:0.25rem;--color-base:oklch(1 0 0);--color-on-base:oklch(0.22 0 0);--color-neutral:oklch(0.15 0 0);--color-on-neutral:oklch(1 0 0);--color-primary:oklch(51.1% 0.262 276.966);--color-on-primary:oklch(96.2% 0.018 272.314);--color-secondary:oklch(0.591 0.293 322.896);--color-on-secondary:oklch(1 0 0);--color-accent:oklch(0.541 0.281 293.009);--color-on-accent:oklch(1 0 0);--color-info:oklch(0.685 0.169 237.323);--color-on-info:oklch(0.15 0 0);--color-success:oklch(0.792 0.209 151.711);--color-on-success:oklch(0.15 0 0);--color-warning:oklch(0.852 0.199 91.936);--color-on-warning:oklch(0.15 0 0);--color-error:oklch(0.577 0.245 27.325);--color-on-error:oklch(1 0 0)}}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! frutjam v2.0.
|
|
1
|
+
/*! frutjam v2.0.6 (c) 2026 Nezanuha | Released under the MIT License | https://frutjam.com */
|
|
2
2
|
/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */.heading-2xl{--heading-size:1rem;--heading-size:1.5rem}.heading-2xl,.heading-3xl{color:var(--color-on-base);font-weight:700;text-wrap-style:balance;font-size:var(--heading-size);line-height:1.15}.heading-3xl{--heading-size:1rem;--heading-size:1.875rem}.heading-4xl{--heading-size:1rem;--heading-size:2.25rem}.heading-4xl,.heading-5xl{color:var(--color-on-base);font-weight:700;text-wrap-style:balance;font-size:var(--heading-size);line-height:1.15}.heading-5xl{--heading-size:1rem;--heading-size:3rem}.heading-6xl{--heading-size:1rem;--heading-size:3.75rem}.heading-6xl,.heading-7xl{color:var(--color-on-base);font-weight:700;text-wrap-style:balance;font-size:var(--heading-size);line-height:1.15}.heading-7xl{--heading-size:1rem;--heading-size:4.5rem}.heading-8xl{--heading-size:1rem;--heading-size:6rem}.heading-8xl,.heading-9xl{color:var(--color-on-base);font-weight:700;text-wrap-style:balance;font-size:var(--heading-size);line-height:1.15}.heading-9xl{--heading-size:1rem;--heading-size:8rem}.heading-lg{--heading-size:1rem;--heading-size:1.125rem}.heading-lg,.heading-md{color:var(--color-on-base);font-weight:700;text-wrap-style:balance;font-size:var(--heading-size);line-height:1.15}.heading-md{--heading-size:1rem}.heading-sm{--heading-size:1rem;--heading-size:0.875rem}.heading-sm,.heading-xl{color:var(--color-on-base);font-weight:700;text-wrap-style:balance;font-size:var(--heading-size);line-height:1.15}.heading-xl{--heading-size:1rem;--heading-size:1.25rem}.heading-xs{--heading-size:1rem;--heading-size:0.75rem}.heading,.heading-xs{color:var(--color-on-base);font-weight:700;text-wrap-style:balance;font-size:var(--heading-size);line-height:1.15}.heading{--heading-size:1rem}
|
package/dist/utilities/para.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! frutjam v2.0.
|
|
1
|
+
/*! frutjam v2.0.6 (c) 2026 Nezanuha | Released under the MIT License | https://frutjam.com */
|
|
2
2
|
/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */.para-2xl{font-size:var(--text-base);font-size:var(--text-2xl)}.para-2xl,.para-3xl{text-wrap-style:pretty;line-height:1.6}.para-3xl{font-size:var(--text-base);font-size:var(--text-3xl)}.para-4xl{font-size:var(--text-base);font-size:var(--text-4xl)}.para-4xl,.para-5xl{text-wrap-style:pretty;line-height:1.6}.para-5xl{font-size:var(--text-base);font-size:var(--text-5xl)}.para-6xl{font-size:var(--text-base);font-size:var(--text-6xl)}.para-6xl,.para-7xl{text-wrap-style:pretty;line-height:1.6}.para-7xl{font-size:var(--text-base);font-size:var(--text-7xl)}.para-8xl{font-size:var(--text-base);font-size:var(--text-8xl)}.para-8xl,.para-9xl{text-wrap-style:pretty;line-height:1.6}.para-9xl{font-size:var(--text-base);font-size:var(--text-9xl)}.para-lg{font-size:var(--text-base);font-size:var(--text-lg)}.para-lg,.para-md{text-wrap-style:pretty;line-height:1.6}.para-md{font-size:var(--text-base)}.para-sm{font-size:var(--text-base);font-size:var(--text-sm)}.para-sm,.para-xl{text-wrap-style:pretty;line-height:1.6}.para-xl{font-size:var(--text-base);font-size:var(--text-xl)}.para-xs{font-size:var(--text-base);font-size:var(--text-xs)}.para,.para-xs{text-wrap-style:pretty;line-height:1.6}.para{font-size:var(--text-base)}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! frutjam v2.0.
|
|
1
|
+
/*! frutjam v2.0.6 (c) 2026 Nezanuha | Released under the MIT License | https://frutjam.com */
|
|
2
2
|
.prose-frutjam{--tw-prose-body:var(--color-body);--tw-prose-headings:var(--color-on-base);--tw-prose-lead:var(--color-on-neutral);--tw-prose-bold:var(--color-on-base);--tw-prose-links:var(--color-primary);--tw-prose-counters:var(--color-neutral);--tw-prose-bullets:var(--color-neutral);--tw-prose-hr:var(--color-base-soft);--tw-prose-quotes:var(--color-on-base);--tw-prose-quote-borders:var(--color-primary);--tw-prose-code:var(--color-on-base);--tw-prose-pre-code:var(--color-on-base);--tw-prose-pre-bg:var(--color-base-soft);--tw-prose-th-borders:var(--color-base-soft);--tw-prose-td-borders:var(--color-base-soft);--tw-prose-captions:var(--color-on-neutral);--tw-prose-kbd:var(--color-body);--tw-prose-invert-body:var(--color-on-neutral);--tw-prose-invert-headings:var(--color-on-base);--tw-prose-invert-links:var(--color-primary)}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! frutjam v2.0.
|
|
1
|
+
/*! frutjam v2.0.6 (c) 2026 Nezanuha | Released under the MIT License | https://frutjam.com */
|
|
2
2
|
/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */.wrapper-full{width:100%;max-width:100%;box-sizing:border-box;margin-inline:auto;padding-inline:1rem;@media (width >= 40rem){padding-inline:2rem}@media (width >= 64rem){padding-inline:4rem}}.wrapper-2xl{box-sizing:border-box;max-width:1536px;margin-inline:auto;padding-inline:1rem;@media (width >= 40rem){padding-inline:2rem}@media (width >= 64rem){padding-inline:4rem}}.wrapper-lg{box-sizing:border-box;max-width:1024px;margin-inline:auto;padding-inline:1rem;@media (width >= 40rem){padding-inline:2rem}@media (width >= 64rem){padding-inline:4rem}}.wrapper-md{box-sizing:border-box;max-width:768px;margin-inline:auto;padding-inline:1rem;@media (width >= 40rem){padding-inline:2rem}@media (width >= 64rem){padding-inline:4rem}}.wrapper-sm{box-sizing:border-box;max-width:640px;margin-inline:auto;padding-inline:1rem;@media (width >= 40rem){padding-inline:2rem}@media (width >= 64rem){padding-inline:4rem}}.wrapper-xl{box-sizing:border-box;max-width:1280px;margin-inline:auto;padding-inline:1rem;@media (width >= 40rem){padding-inline:2rem}@media (width >= 64rem){padding-inline:4rem}}.wrapper-xs{box-sizing:border-box;max-width:320px;margin-inline:auto;padding-inline:1rem;@media (width >= 40rem){padding-inline:2rem}@media (width >= 64rem){padding-inline:4rem}}.wrapper{box-sizing:border-box;margin-inline:auto;padding-inline:1rem;@media (width >= 40rem){padding-inline:2rem}@media (width >= 64rem){padding-inline:4rem}}
|
package/index.js
CHANGED
|
@@ -193,13 +193,19 @@ function buildCSS(prefix, themes, reset, rootSelector, include, exclude) {
|
|
|
193
193
|
|
|
194
194
|
const combined = baseCss + "\n" + modulesCss
|
|
195
195
|
const utilMap = buildUtilityMap(combined)
|
|
196
|
-
|
|
196
|
+
|
|
197
|
+
// Base CSS (theme variables, token definitions, text-color overrides) must NOT be prefixed —
|
|
198
|
+
// the @utility text-* declarations target the same class names as Tailwind's theme-generated
|
|
199
|
+
// utilities and must stay unprefixed (e.g. text-primary, not fj-text-primary).
|
|
200
|
+
let resolvedBase = resolveCopy(baseCss, utilMap)
|
|
201
|
+
let resolvedModules = resolveCopy(modulesCss, utilMap)
|
|
197
202
|
|
|
198
203
|
if (rootSelector !== ":root") {
|
|
199
|
-
|
|
204
|
+
resolvedBase = resolvedBase.replace(/:root\b/g, rootSelector)
|
|
205
|
+
resolvedModules = resolvedModules.replace(/:root\b/g, rootSelector)
|
|
200
206
|
}
|
|
201
207
|
|
|
202
|
-
css = applyPrefix(
|
|
208
|
+
let css = resolvedBase + "\n" + applyPrefix(resolvedModules, prefix)
|
|
203
209
|
|
|
204
210
|
const customThemes = buildCustomThemes(themes)
|
|
205
211
|
if (customThemes) css += "\n\n" + customThemes
|
|
@@ -212,7 +218,17 @@ function buildCSS(prefix, themes, reset, rootSelector, include, exclude) {
|
|
|
212
218
|
css = ast.toString()
|
|
213
219
|
}
|
|
214
220
|
|
|
215
|
-
|
|
221
|
+
// Extract @utility text-* rules from base CSS and convert to plain CSS for late injection.
|
|
222
|
+
// In the PostCSS path, Tailwind's theme-generated text-{color} utilities take precedence over
|
|
223
|
+
// same-named @utility definitions. Injecting them as plain CSS at the end of @layer utilities
|
|
224
|
+
// via OnceExit ensures they appear after the theme-generated rules and therefore win.
|
|
225
|
+
const baseUtilMap = buildUtilityMap(resolvedBase)
|
|
226
|
+
const textColorOverrides = [...baseUtilMap.entries()]
|
|
227
|
+
.filter(([name]) => name.startsWith('text-'))
|
|
228
|
+
.map(([name, body]) => `.${name} {${body}}`)
|
|
229
|
+
.join('\n')
|
|
230
|
+
|
|
231
|
+
return { css, utilMap, textColorOverrides }
|
|
216
232
|
}
|
|
217
233
|
|
|
218
234
|
function buildLateCSS(prefix, include, exclude, utilMap = new Map()) {
|
|
@@ -284,9 +300,10 @@ export default function frutjam(options = {}) {
|
|
|
284
300
|
const include = parseList(merged.include)
|
|
285
301
|
const exclude = parseList(merged.exclude)
|
|
286
302
|
|
|
287
|
-
const { css, utilMap } = buildCSS(prefix, themes, reset, rootSelector, include, exclude)
|
|
303
|
+
const { css, utilMap, textColorOverrides } = buildCSS(prefix, themes, reset, rootSelector, include, exclude)
|
|
288
304
|
root.append(postcss.parse(css).nodes)
|
|
289
305
|
_lateCss = buildLateCSS(prefix, include, exclude, utilMap)
|
|
306
|
+
if (textColorOverrides) _lateCss += '\n' + textColorOverrides
|
|
290
307
|
if (logs) {
|
|
291
308
|
const d = "\x1b[2m", r = "\x1b[0m"
|
|
292
309
|
const badge = "\x1b[46m\x1b[30m frutjam \x1b[0m"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "frutjam",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.6",
|
|
4
4
|
"description": "A utility-first CSS UI Library for Tailwind CSS",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -23,6 +23,8 @@
|
|
|
23
23
|
"packages/"
|
|
24
24
|
],
|
|
25
25
|
"style": "./dist/frutjam.min.css",
|
|
26
|
+
"unpkg": "./dist/frutjam.min.css",
|
|
27
|
+
"jsdelivr": "./dist/frutjam.min.css",
|
|
26
28
|
"scripts": {
|
|
27
29
|
"clean": "rimraf ./dist",
|
|
28
30
|
"build:cdn": "node scripts/build-cdn.mjs",
|