@visulima/rollup-plugin-css 1.0.0-alpha.5 → 1.0.0-alpha.7

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,28 @@
1
+ ## @visulima/rollup-plugin-css [1.0.0-alpha.7](https://github.com/visulima/packem/compare/@visulima/rollup-plugin-css@1.0.0-alpha.6...@visulima/rollup-plugin-css@1.0.0-alpha.7) (2025-10-08)
2
+
3
+ ### Miscellaneous Chores
4
+
5
+ * update dependencies and versions across multiple packages ([3e5b4a2](https://github.com/visulima/packem/commit/3e5b4a229fc514828ab9e012a5d556163b30c2fc))
6
+ * update package.json dependencies for packem and rollup-plugin-css ([8ff92d6](https://github.com/visulima/packem/commit/8ff92d6a904882076bda9ac796b4fe8740fc4f57))
7
+ * update package.json scripts and dependencies ([8f2aa25](https://github.com/visulima/packem/commit/8f2aa25956f2570a65b53d9f936c8cf1d730a49f))
8
+
9
+
10
+ ### Dependencies
11
+
12
+ * **@visulima/packem-share:** upgraded to 1.0.0-alpha.13
13
+
14
+ ## @visulima/rollup-plugin-css [1.0.0-alpha.6](https://github.com/visulima/packem/compare/@visulima/rollup-plugin-css@1.0.0-alpha.5...@visulima/rollup-plugin-css@1.0.0-alpha.6) (2025-09-22)
15
+
16
+ ### Bug Fixes
17
+
18
+ * updated deps, added usage of pnpm catalog ([14987df](https://github.com/visulima/packem/commit/14987dff37121ca7aab6f9d0a07b24a1a2f5284a))
19
+
20
+
21
+ ### Dependencies
22
+
23
+ * **@visulima/packem-share:** upgraded to 1.0.0-alpha.12
24
+ * **@visulima/css-style-inject:** upgraded to 1.0.0-alpha.9
25
+
1
26
  ## @visulima/rollup-plugin-css [1.0.0-alpha.5](https://github.com/visulima/packem/compare/@visulima/rollup-plugin-css@1.0.0-alpha.4...@visulima/rollup-plugin-css@1.0.0-alpha.5) (2025-09-17)
2
27
 
3
28
  ### Bug Fixes
package/LICENSE.md CHANGED
@@ -59,11 +59,14 @@ Repository: https://github.com/broofa/mime
59
59
  <!-- TYPE_DEPENDENCIES -->
60
60
 
61
61
  # Licenses of bundled types
62
+
62
63
  The published @visulima/rollup-plugin-css artifact additionally contains code with the following licenses:
63
64
  MIT
64
65
 
65
66
  # Bundled types:
67
+
66
68
  ## @visulima/colorize
69
+
67
70
  License: MIT
68
71
  By: Daniel Bannert
69
72
  Repository: git+https://github.com/visulima/visulima.git
@@ -146,9 +149,10 @@ Repository: https://github.com/broofa/mime
146
149
 
147
150
  <!-- /DEPENDENCIES -->
148
151
 
149
- ---------------------------------------
152
+ ---
150
153
 
151
154
  ## @visulima/pail
155
+
152
156
  License: MIT
153
157
  By: Daniel Bannert
154
158
  Repository: git+https://github.com/visulima/visulima.git
@@ -210,15 +214,16 @@ Repository: https://github.com/broofa/mime
210
214
  > SOFTWARE.
211
215
 
212
216
  <!-- /DEPENDENCIES -->
213
- >
214
- >
215
- >
217
+
216
218
  > # Licenses of bundled types
219
+ >
217
220
  > The published @visulima/pail artifact additionally contains code with the following licenses:
218
221
  > (MIT OR CC0-1.0)
219
222
  >
220
223
  > # Bundled types:
224
+ >
221
225
  > ## type-fest
226
+ >
222
227
  > License: (MIT OR CC0-1.0)
223
228
  > By: Sindre Sorhus
224
229
  > Repository: sindresorhus/type-fest
@@ -263,91 +268,90 @@ Repository: https://github.com/broofa/mime
263
268
  > > Work and the meaning and intended legal effect of CC0 on those rights.
264
269
  > >
265
270
  > > 1. Copyright and Related Rights. A Work made available under CC0 may be
266
- > > protected by copyright and related or neighboring rights ("Copyright and
267
- > > Related Rights"). Copyright and Related Rights include, but are not
268
- > > limited to, the following:
271
+ > > protected by copyright and related or neighboring rights ("Copyright and
272
+ > > Related Rights"). Copyright and Related Rights include, but are not
273
+ > > limited to, the following:
269
274
  > >
270
- > > i. the right to reproduce, adapt, distribute, perform, display,
271
- > > communicate, and translate a Work;
272
- > > ii. moral rights retained by the original author(s) and/or performer(s);
275
+ > > i. the right to reproduce, adapt, distribute, perform, display,
276
+ > > communicate, and translate a Work;
277
+ > > ii. moral rights retained by the original author(s) and/or performer(s);
273
278
  > > iii. publicity and privacy rights pertaining to a person's image or
274
- > > likeness depicted in a Work;
275
- > > iv. rights protecting against unfair competition in regards to a Work,
276
- > > subject to the limitations in paragraph 4(a), below;
277
- > > v. rights protecting the extraction, dissemination, use and reuse of data
278
- > > in a Work;
279
- > > vi. database rights (such as those arising under Directive 96/9/EC of the
280
- > > European Parliament and of the Council of 11 March 1996 on the legal
281
- > > protection of databases, and under any national implementation
282
- > > thereof, including any amended or successor version of such
283
- > > directive); and
279
+ > > likeness depicted in a Work;
280
+ > > iv. rights protecting against unfair competition in regards to a Work,
281
+ > > subject to the limitations in paragraph 4(a), below;
282
+ > > v. rights protecting the extraction, dissemination, use and reuse of data
283
+ > > in a Work;
284
+ > > vi. database rights (such as those arising under Directive 96/9/EC of the
285
+ > > European Parliament and of the Council of 11 March 1996 on the legal
286
+ > > protection of databases, and under any national implementation
287
+ > > thereof, including any amended or successor version of such
288
+ > > directive); and
284
289
  > > vii. other similar, equivalent or corresponding rights throughout the
285
- > > world based on applicable law or treaty, and any national
286
- > > implementations thereof.
290
+ > > world based on applicable law or treaty, and any national
291
+ > > implementations thereof.
287
292
  > >
288
293
  > > 2. Waiver. To the greatest extent permitted by, but not in contravention
289
- > > of, applicable law, Affirmer hereby overtly, fully, permanently,
290
- > > irrevocably and unconditionally waives, abandons, and surrenders all of
291
- > > Affirmer's Copyright and Related Rights and associated claims and causes
292
- > > of action, whether now known or unknown (including existing as well as
293
- > > future claims and causes of action), in the Work (i) in all territories
294
- > > worldwide, (ii) for the maximum duration provided by applicable law or
295
- > > treaty (including future time extensions), (iii) in any current or future
296
- > > medium and for any number of copies, and (iv) for any purpose whatsoever,
297
- > > including without limitation commercial, advertising or promotional
298
- > > purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
299
- > > member of the public at large and to the detriment of Affirmer's heirs and
300
- > > successors, fully intending that such Waiver shall not be subject to
301
- > > revocation, rescission, cancellation, termination, or any other legal or
302
- > > equitable action to disrupt the quiet enjoyment of the Work by the public
303
- > > as contemplated by Affirmer's express Statement of Purpose.
304
- > >
294
+ > > of, applicable law, Affirmer hereby overtly, fully, permanently,
295
+ > > irrevocably and unconditionally waives, abandons, and surrenders all of
296
+ > > Affirmer's Copyright and Related Rights and associated claims and causes
297
+ > > of action, whether now known or unknown (including existing as well as
298
+ > > future claims and causes of action), in the Work (i) in all territories
299
+ > > worldwide, (ii) for the maximum duration provided by applicable law or
300
+ > > treaty (including future time extensions), (iii) in any current or future
301
+ > > medium and for any number of copies, and (iv) for any purpose whatsoever,
302
+ > > including without limitation commercial, advertising or promotional
303
+ > > purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
304
+ > > member of the public at large and to the detriment of Affirmer's heirs and
305
+ > > successors, fully intending that such Waiver shall not be subject to
306
+ > > revocation, rescission, cancellation, termination, or any other legal or
307
+ > > equitable action to disrupt the quiet enjoyment of the Work by the public
308
+ > > as contemplated by Affirmer's express Statement of Purpose.
305
309
  > > 3. Public License Fallback. Should any part of the Waiver for any reason
306
- > > be judged legally invalid or ineffective under applicable law, then the
307
- > > Waiver shall be preserved to the maximum extent permitted taking into
308
- > > account Affirmer's express Statement of Purpose. In addition, to the
309
- > > extent the Waiver is so judged Affirmer hereby grants to each affected
310
- > > person a royalty-free, non transferable, non sublicensable, non exclusive,
311
- > > irrevocable and unconditional license to exercise Affirmer's Copyright and
312
- > > Related Rights in the Work (i) in all territories worldwide, (ii) for the
313
- > > maximum duration provided by applicable law or treaty (including future
314
- > > time extensions), (iii) in any current or future medium and for any number
315
- > > of copies, and (iv) for any purpose whatsoever, including without
316
- > > limitation commercial, advertising or promotional purposes (the
317
- > > "License"). The License shall be deemed effective as of the date CC0 was
318
- > > applied by Affirmer to the Work. Should any part of the License for any
319
- > > reason be judged legally invalid or ineffective under applicable law, such
320
- > > partial invalidity or ineffectiveness shall not invalidate the remainder
321
- > > of the License, and in such case Affirmer hereby affirms that he or she
322
- > > will not (i) exercise any of his or her remaining Copyright and Related
323
- > > Rights in the Work or (ii) assert any associated claims and causes of
324
- > > action with respect to the Work, in either case contrary to Affirmer's
325
- > > express Statement of Purpose.
326
- > >
310
+ > > be judged legally invalid or ineffective under applicable law, then the
311
+ > > Waiver shall be preserved to the maximum extent permitted taking into
312
+ > > account Affirmer's express Statement of Purpose. In addition, to the
313
+ > > extent the Waiver is so judged Affirmer hereby grants to each affected
314
+ > > person a royalty-free, non transferable, non sublicensable, non exclusive,
315
+ > > irrevocable and unconditional license to exercise Affirmer's Copyright and
316
+ > > Related Rights in the Work (i) in all territories worldwide, (ii) for the
317
+ > > maximum duration provided by applicable law or treaty (including future
318
+ > > time extensions), (iii) in any current or future medium and for any number
319
+ > > of copies, and (iv) for any purpose whatsoever, including without
320
+ > > limitation commercial, advertising or promotional purposes (the
321
+ > > "License"). The License shall be deemed effective as of the date CC0 was
322
+ > > applied by Affirmer to the Work. Should any part of the License for any
323
+ > > reason be judged legally invalid or ineffective under applicable law, such
324
+ > > partial invalidity or ineffectiveness shall not invalidate the remainder
325
+ > > of the License, and in such case Affirmer hereby affirms that he or she
326
+ > > will not (i) exercise any of his or her remaining Copyright and Related
327
+ > > Rights in the Work or (ii) assert any associated claims and causes of
328
+ > > action with respect to the Work, in either case contrary to Affirmer's
329
+ > > express Statement of Purpose.
327
330
  > > 4. Limitations and Disclaimers.
328
331
  > >
329
- > > a. No trademark or patent rights held by Affirmer are waived, abandoned,
330
- > > surrendered, licensed or otherwise affected by this document.
331
- > > b. Affirmer offers the Work as-is and makes no representations or
332
- > > warranties of any kind concerning the Work, express, implied,
333
- > > statutory or otherwise, including without limitation warranties of
334
- > > title, merchantability, fitness for a particular purpose, non
335
- > > infringement, or the absence of latent or other defects, accuracy, or
336
- > > the present or absence of errors, whether or not discoverable, all to
337
- > > the greatest extent permissible under applicable law.
338
- > > c. Affirmer disclaims responsibility for clearing rights of other persons
339
- > > that may apply to the Work or any use thereof, including without
340
- > > limitation any person's Copyright and Related Rights in the Work.
341
- > > Further, Affirmer disclaims responsibility for obtaining any necessary
342
- > > consents, permissions or other rights required for any use of the
343
- > > Work.
344
- > > d. Affirmer understands and acknowledges that Creative Commons is not a
345
- > > party to this document and has no duty or obligation with respect to
346
- > > this CC0 or use of the Work.
347
-
348
- ---------------------------------------
332
+ > > a. No trademark or patent rights held by Affirmer are waived, abandoned,
333
+ > > surrendered, licensed or otherwise affected by this document.
334
+ > > b. Affirmer offers the Work as-is and makes no representations or
335
+ > > warranties of any kind concerning the Work, express, implied,
336
+ > > statutory or otherwise, including without limitation warranties of
337
+ > > title, merchantability, fitness for a particular purpose, non
338
+ > > infringement, or the absence of latent or other defects, accuracy, or
339
+ > > the present or absence of errors, whether or not discoverable, all to
340
+ > > the greatest extent permissible under applicable law.
341
+ > > c. Affirmer disclaims responsibility for clearing rights of other persons
342
+ > > that may apply to the Work or any use thereof, including without
343
+ > > limitation any person's Copyright and Related Rights in the Work.
344
+ > > Further, Affirmer disclaims responsibility for obtaining any necessary
345
+ > > consents, permissions or other rights required for any use of the
346
+ > > Work.
347
+ > > d. Affirmer understands and acknowledges that Creative Commons is not a
348
+ > > party to this document and has no duty or obligation with respect to
349
+ > > this CC0 or use of the Work.
350
+
351
+ ---
349
352
 
350
353
  ## safe-stable-stringify
354
+
351
355
  License: MIT
352
356
  By: Ruben Bridgewater
353
357
  Repository: git+https://github.com/BridgeAR/safe-stable-stringify.git
package/README.md CHANGED
@@ -92,21 +92,21 @@ The `@visulima/rollup-plugin-css` provides comprehensive CSS processing capabili
92
92
  import { rollupCssPlugin } from "@visulima/rollup-plugin-css";
93
93
 
94
94
  export default {
95
- plugins: [
96
- rollupCssPlugin({
97
- // Extract CSS to separate files
98
- mode: "extract",
95
+ plugins: [
96
+ rollupCssPlugin({
97
+ // Extract CSS to separate files
98
+ mode: "extract",
99
99
 
100
- // Enable CSS modules for .module.css files
101
- autoModules: /\.module\./,
100
+ // Enable CSS modules for .module.css files
101
+ autoModules: /\.module\./,
102
102
 
103
- // Enable source maps
104
- sourceMap: true,
103
+ // Enable source maps
104
+ sourceMap: true,
105
105
 
106
- // CSS minification
107
- minifier: "cssnano",
108
- })
109
- ]
106
+ // CSS minification
107
+ minifier: "cssnano",
108
+ }),
109
+ ],
110
110
  };
111
111
  ```
112
112
 
@@ -116,36 +116,33 @@ export default {
116
116
  import { rollupCssPlugin } from "@visulima/rollup-plugin-css";
117
117
 
118
118
  export default {
119
- plugins: [
120
- rollupCssPlugin({
121
- // File extensions to process
122
- extensions: [".css", ".scss", ".sass", ".less", ".styl"],
123
-
124
- // CSS Modules configuration
125
- autoModules: true,
126
- namedExports: true,
127
-
128
- // PostCSS configuration
129
- postcss: {
130
- plugins: [
131
- require("autoprefixer"),
132
- require("tailwindcss"),
133
- ],
134
- modules: {
135
- generateScopedName: "[name]__[local]___[hash:base64:5]",
136
- },
137
- },
138
-
139
- // Sass configuration
140
- sass: {
141
- includePaths: ["node_modules"],
142
- outputStyle: "compressed",
143
- },
144
-
145
- // Minification
146
- minifier: "lightningcss",
147
- })
148
- ]
119
+ plugins: [
120
+ rollupCssPlugin({
121
+ // File extensions to process
122
+ extensions: [".css", ".scss", ".sass", ".less", ".styl"],
123
+
124
+ // CSS Modules configuration
125
+ autoModules: true,
126
+ namedExports: true,
127
+
128
+ // PostCSS configuration
129
+ postcss: {
130
+ plugins: [require("autoprefixer"), require("tailwindcss")],
131
+ modules: {
132
+ generateScopedName: "[name]__[local]___[hash:base64:5]",
133
+ },
134
+ },
135
+
136
+ // Sass configuration
137
+ sass: {
138
+ includePaths: ["node_modules"],
139
+ outputStyle: "compressed",
140
+ },
141
+
142
+ // Minification
143
+ minifier: "lightningcss",
144
+ }),
145
+ ],
149
146
  };
150
147
  ```
151
148
 
@@ -157,23 +154,23 @@ export default {
157
154
  import { rollupCssPlugin } from "@visulima/rollup-plugin-css";
158
155
 
159
156
  export default {
160
- plugins: [
161
- rollupCssPlugin({
162
- // Inject CSS into JavaScript
163
- mode: "inject",
164
-
165
- // Enable CSS modules
166
- autoModules: true,
167
-
168
- // PostCSS with autoprefixer
169
- postcss: {
170
- plugins: [require("autoprefixer")],
171
- },
172
-
173
- // Minification
174
- minifier: "cssnano",
175
- })
176
- ]
157
+ plugins: [
158
+ rollupCssPlugin({
159
+ // Inject CSS into JavaScript
160
+ mode: "inject",
161
+
162
+ // Enable CSS modules
163
+ autoModules: true,
164
+
165
+ // PostCSS with autoprefixer
166
+ postcss: {
167
+ plugins: [require("autoprefixer")],
168
+ },
169
+
170
+ // Minification
171
+ minifier: "cssnano",
172
+ }),
173
+ ],
177
174
  };
178
175
  ```
179
176
 
@@ -183,20 +180,24 @@ You can customize the CSS injection by specifying a custom package and method:
183
180
 
184
181
  ```typescript
185
182
  rollupCssPlugin({
186
- mode: ["inject", {
187
- // Use your own CSS injection library
188
- package: "my-custom-injector",
189
- method: "injectCSS",
190
-
191
- // Other inject options...
192
- container: "body",
193
- prepend: true,
194
- }],
183
+ mode: [
184
+ "inject",
185
+ {
186
+ // Use your own CSS injection library
187
+ package: "my-custom-injector",
188
+ method: "injectCSS",
189
+
190
+ // Other inject options...
191
+ container: "body",
192
+ prepend: true,
193
+ },
194
+ ],
195
195
  autoModules: true,
196
- })
196
+ });
197
197
  ```
198
198
 
199
199
  This allows you to:
200
+
200
201
  - Use alternative CSS injection libraries
201
202
  - Implement custom injection logic
202
203
  - Override the default `@visulima/css-style-inject` behavior
@@ -207,29 +208,26 @@ This allows you to:
207
208
  import { rollupCssPlugin } from "@visulima/rollup-plugin-css";
208
209
 
209
210
  export default {
210
- plugins: [
211
- rollupCssPlugin({
212
- mode: "extract",
213
- autoModules: true,
214
- postcss: {
215
- plugins: [
216
- require("@tailwindcss/postcss"),
217
- require("autoprefixer"),
218
- ],
219
- },
220
- minifier: "cssnano",
221
- })
222
- ]
211
+ plugins: [
212
+ rollupCssPlugin({
213
+ mode: "extract",
214
+ autoModules: true,
215
+ postcss: {
216
+ plugins: [require("@tailwindcss/postcss"), require("autoprefixer")],
217
+ },
218
+ minifier: "cssnano",
219
+ }),
220
+ ],
223
221
  };
224
222
  ```
225
223
 
226
224
  ```javascript
227
225
  // postcss.config.js
228
226
  export default {
229
- plugins: {
230
- "@tailwindcss/postcss": {},
231
- },
232
- }
227
+ plugins: {
228
+ "@tailwindcss/postcss": {},
229
+ },
230
+ };
233
231
  ```
234
232
 
235
233
  ### Tailwind Oxide (Rust-based)
@@ -238,18 +236,18 @@ export default {
238
236
  import { rollupCssPlugin } from "@visulima/rollup-plugin-css";
239
237
 
240
238
  export default {
241
- plugins: [
242
- rollupCssPlugin({
243
- mode: "extract",
244
- autoModules: true,
245
- // Tailwind Oxide configuration
246
- tailwind: {
247
- oxide: true,
248
- config: "./tailwind.config.js",
249
- },
250
- minifier: "cssnano",
251
- })
252
- ]
239
+ plugins: [
240
+ rollupCssPlugin({
241
+ mode: "extract",
242
+ autoModules: true,
243
+ // Tailwind Oxide configuration
244
+ tailwind: {
245
+ oxide: true,
246
+ config: "./tailwind.config.js",
247
+ },
248
+ minifier: "cssnano",
249
+ }),
250
+ ],
253
251
  };
254
252
  ```
255
253
 
@@ -261,29 +259,32 @@ Embed CSS directly as strings in JavaScript modules. This reduces HTTP requests
261
259
  import { rollupCssPlugin } from "@visulima/rollup-plugin-css";
262
260
 
263
261
  export default {
264
- plugins: [
265
- rollupCssPlugin({
266
- mode: "inline",
267
- autoModules: true,
268
- namedExports: true,
269
- minifier: "cssnano",
270
- })
271
- ]
262
+ plugins: [
263
+ rollupCssPlugin({
264
+ mode: "inline",
265
+ autoModules: true,
266
+ namedExports: true,
267
+ minifier: "cssnano",
268
+ }),
269
+ ],
272
270
  };
273
271
  ```
274
272
 
275
273
  **Benefits:**
274
+
276
275
  - **Zero HTTP requests** - CSS is embedded directly in JavaScript
277
276
  - **No race conditions** - CSS is available immediately when JavaScript executes
278
277
  - **Smaller initial bundle** - No separate CSS file to load
279
278
  - **Better caching** - CSS is cached with JavaScript bundle
280
279
 
281
280
  **Trade-offs:**
281
+
282
282
  - **Increased bundle size** - CSS content is included in JavaScript
283
283
  - **No separate caching** - CSS can't be cached independently
284
284
  - **Larger JavaScript** - Affects JavaScript parsing and execution time
285
285
 
286
286
  **Use cases:**
287
+
287
288
  - Critical CSS that must be available immediately
288
289
  - Small CSS files where the overhead of a separate request isn't worth it
289
290
  - Applications where CSS is dynamically generated or modified at runtime
@@ -351,19 +352,15 @@ declare const test: "index_test_bcd2d774";
351
352
  declare const container: "index_container_bcd2d774";
352
353
 
353
354
  interface ModulesExports {
354
- 'test': string;
355
- 'container': string;
355
+ test: string;
356
+ container: string;
356
357
  }
357
358
 
358
359
  declare const modules_c21c94f2: ModulesExports;
359
360
 
360
361
  export default modules_c21c94f2;
361
362
 
362
- export {
363
- css,
364
- test,
365
- container
366
- };
363
+ export { css, test, container };
367
364
  ```
368
365
 
369
366
  ### Multiple CSS Preprocessors
@@ -464,10 +461,11 @@ rollupCssPlugin({
464
461
  mode: "extract", // Creates separate CSS files
465
462
  autoModules: true,
466
463
  minifier: "cssnano",
467
- })
464
+ });
468
465
  ```
469
466
 
470
467
  **Benefits:**
468
+
471
469
  - **Separate caching** - CSS can be cached independently from JavaScript
472
470
  - **Parallel loading** - CSS and JavaScript can load simultaneously
473
471
  - **Better performance** - Smaller JavaScript bundles, faster parsing
@@ -475,12 +473,14 @@ rollupCssPlugin({
475
473
  - **Selective loading** - Only load CSS for specific routes or components
476
474
 
477
475
  **Trade-offs:**
476
+
478
477
  - **Additional HTTP requests** - Separate CSS file must be fetched
479
478
  - **Potential FOUC** - Flash of unstyled content if CSS loads after HTML
480
479
  - **Build complexity** - Requires additional build step for CSS extraction
481
480
  - **Dependency management** - Need to ensure CSS is loaded before JavaScript execution
482
481
 
483
482
  **Use cases:**
483
+
484
484
  - Large CSS files where separate caching is beneficial
485
485
  - Applications with multiple CSS themes or variants
486
486
  - Production builds where performance optimization is critical
@@ -496,10 +496,11 @@ rollupCssPlugin({
496
496
  mode: "inject", // CSS embedded in JS
497
497
  autoModules: true,
498
498
  minifier: "cssnano",
499
- })
499
+ });
500
500
  ```
501
501
 
502
502
  **Benefits:**
503
+
503
504
  - **No separate HTTP requests** - CSS is bundled with JavaScript
504
505
  - **Guaranteed availability** - CSS is always available when JavaScript executes
505
506
  - **Simplified deployment** - Single JavaScript bundle to manage
@@ -507,12 +508,14 @@ rollupCssPlugin({
507
508
  - **Runtime control** - Full control over when and how CSS is applied
508
509
 
509
510
  **Trade-offs:**
511
+
510
512
  - **Larger JavaScript bundles** - CSS content increases JavaScript file size
511
513
  - **Slower initial parsing** - JavaScript engine must process CSS content
512
514
  - **No separate caching** - CSS can't be cached independently from JavaScript
513
515
  - **Memory usage** - CSS content remains in JavaScript memory
514
516
 
515
517
  **Use cases:**
518
+
516
519
  - Single-page applications (SPAs) where CSS is always needed
517
520
  - Applications requiring dynamic CSS injection
518
521
  - Development builds where simplicity is preferred
@@ -525,34 +528,38 @@ You can customize the injection behavior by passing an object to the `mode` opti
525
528
 
526
529
  ```typescript
527
530
  rollupCssPlugin({
528
- mode: ["inject", {
529
- // Custom package to import the injector from
530
- package: "my-custom-css-injector",
531
+ mode: [
532
+ "inject",
533
+ {
534
+ // Custom package to import the injector from
535
+ package: "my-custom-css-injector",
531
536
 
532
- // Custom method name to import
533
- method: "injectStyles",
537
+ // Custom method name to import
538
+ method: "injectStyles",
534
539
 
535
- // Container for style injection (default: "head")
536
- container: "body",
540
+ // Container for style injection (default: "head")
541
+ container: "body",
537
542
 
538
- // Insert styles at the beginning of container
539
- prepend: true,
543
+ // Insert styles at the beginning of container
544
+ prepend: true,
540
545
 
541
- // Use single style tag
542
- singleTag: true,
546
+ // Use single style tag
547
+ singleTag: true,
543
548
 
544
- // Custom attributes for style tag
545
- attributes: { "data-theme": "dark" },
549
+ // Custom attributes for style tag
550
+ attributes: { "data-theme": "dark" },
546
551
 
547
- // Make injector treeshakeable
548
- treeshakeable: true,
549
- }],
552
+ // Make injector treeshakeable
553
+ treeshakeable: true,
554
+ },
555
+ ],
550
556
  autoModules: true,
551
557
  minifier: "cssnano",
552
- })
558
+ });
553
559
  ```
554
560
 
555
561
  **Custom Package and Method:**
562
+
556
563
  - **`package`**: Override the default `@visulima/css-style-inject` package
557
564
  - **`method`**: Override the default `cssStyleInject` method name
558
565
  - **Use case**: When you want to use your own CSS injection library or have custom injection logic
@@ -567,10 +574,11 @@ rollupCssPlugin({
567
574
  autoModules: true,
568
575
  namedExports: true,
569
576
  minifier: "cssnano",
570
- })
577
+ });
571
578
  ```
572
579
 
573
580
  **When to use inline mode:**
581
+
574
582
  - Small CSS files where HTTP request overhead isn't worth it
575
583
  - Critical CSS that must be available immediately
576
584
  - Applications with dynamic CSS generation
@@ -585,10 +593,11 @@ rollupCssPlugin({
585
593
  mode: "emit", // CSS passed through build pipeline
586
594
  autoModules: true,
587
595
  minifier: "cssnano",
588
- })
596
+ });
589
597
  ```
590
598
 
591
599
  **Benefits:**
600
+
592
601
  - **Build pipeline integration** - CSS can be processed by other Rollup plugins
593
602
  - **Flexible output** - CSS can be transformed, bundled, or processed further
594
603
  - **Custom handling** - Full control over how CSS is processed and output
@@ -596,12 +605,14 @@ rollupCssPlugin({
596
605
  - **No assumptions** - Plugin doesn't make assumptions about CSS output
597
606
 
598
607
  **Trade-offs:**
608
+
599
609
  - **Manual handling required** - Need to configure other plugins to handle CSS
600
610
  - **Build complexity** - Requires understanding of Rollup plugin pipeline
601
611
  - **No automatic optimization** - CSS optimization must be handled separately
602
612
  - **Configuration overhead** - More setup required for complete CSS handling
603
613
 
604
614
  **Use cases:**
615
+
605
616
  - Custom CSS processing pipelines
606
617
  - Integration with other Rollup plugins
607
618
  - Applications requiring specific CSS output formats
@@ -610,14 +621,15 @@ rollupCssPlugin({
610
621
 
611
622
  ## Mode Comparison
612
623
 
613
- | Mode | Best For | Bundle Size | HTTP Requests | Caching | Complexity |
614
- |------|----------|-------------|---------------|---------|------------|
615
- | **Inject** | SPAs, dynamic injection | Larger JS | Single | Shared | Low |
616
- | **Extract** | Production, CDN | Smaller JS | Multiple | Separate | Medium |
617
- | **Inline** | Small files, critical CSS | Larger JS | Single | Shared | Low |
618
- | **Emit** | Custom pipelines | Variable | Variable | Custom | High |
624
+ | Mode | Best For | Bundle Size | HTTP Requests | Caching | Complexity |
625
+ | ----------- | ------------------------- | ----------- | ------------- | -------- | ---------- |
626
+ | **Inject** | SPAs, dynamic injection | Larger JS | Single | Shared | Low |
627
+ | **Extract** | Production, CDN | Smaller JS | Multiple | Separate | Medium |
628
+ | **Inline** | Small files, critical CSS | Larger JS | Single | Shared | Low |
629
+ | **Emit** | Custom pipelines | Variable | Variable | Custom | High |
619
630
 
620
631
  **Quick Decision Guide:**
632
+
621
633
  - **Choose Inject** when you need guaranteed CSS availability and don't mind larger JS bundles
622
634
  - **Choose Extract** when performance and caching are critical, especially for production
623
635
  - **Choose Inline** when you have small CSS files and want to eliminate HTTP requests
@@ -628,17 +640,20 @@ rollupCssPlugin({
628
640
  CSS Modules provide automatic class name scoping and TypeScript integration:
629
641
 
630
642
  ### Automatic TypeScript Declarations
643
+
631
644
  - **Generated .d.ts files** for full IntelliSense support
632
645
  - **Named exports** for individual class names
633
646
  - **Default export** with complete module interface
634
647
  - **Build-time type checking** prevents runtime errors
635
648
 
636
649
  ### Scoped Class Names
650
+
637
651
  - **Automatic hashing** prevents style conflicts
638
652
  - **Deterministic naming** for consistent builds
639
653
  - **Development-friendly** class names for debugging
640
654
 
641
655
  ### Integration Benefits
656
+
642
657
  - **Zero configuration** - works out of the box with `.module.css` files
643
658
  - **Watch mode support** - declarations update automatically
644
659
  - **Build pipeline integration** - seamless Rollup integration
@@ -646,18 +661,21 @@ CSS Modules provide automatic class name scoping and TypeScript integration:
646
661
  ## Key Features
647
662
 
648
663
  ### Tailwind Integration
664
+
649
665
  - **Tailwind CSS v4** - Latest version with PostCSS integration
650
666
  - **Tailwind Oxide** - Rust-based engine for ultra-fast processing
651
667
  - **JIT compilation** - Generate only the CSS you use
652
668
  - **Smart purging** - Automatic unused style removal
653
669
 
654
670
  ### Preprocessor Support
671
+
655
672
  - **PostCSS** - Modern CSS transformations with extensive plugin ecosystem
656
673
  - **Sass/SCSS** - Popular CSS extension language with variables and mixins
657
674
  - **Less** - Dynamic stylesheet language with variables and functions
658
675
  - **Stylus** - Expressive, dynamic CSS preprocessor
659
676
 
660
677
  ### Performance Optimization
678
+
661
679
  - **Multiple minifiers** - Choose between cssnano and LightningCSS
662
680
  - **Source maps** - Full debugging support in development
663
681
  - **Code splitting** - Efficient CSS bundling strategies
@@ -670,12 +688,12 @@ Leverage the extensive PostCSS ecosystem through configuration files:
670
688
  ```javascript
671
689
  // postcss.config.js
672
690
  export default {
673
- plugins: {
674
- "@tailwindcss/postcss": {},
675
- "autoprefixer": {},
676
- "postcss-nested": {},
677
- },
678
- }
691
+ plugins: {
692
+ "@tailwindcss/postcss": {},
693
+ autoprefixer: {},
694
+ "postcss-nested": {},
695
+ },
696
+ };
679
697
  ```
680
698
 
681
699
  The PostCSS loader automatically detects and uses your PostCSS configuration.
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Plugin } from 'rollup';
2
- import { S as StyleOptions } from './packem_shared/types-CA9pSumu.mjs';
3
- export { A as AutoModules, E as ExtractedData, I as InjectOptions, a as InternalStyleOptions, L as LightningCSSOptions, P as PostCSSConfigLoaderOptions, b as PostCSSOptions } from './packem_shared/types-CA9pSumu.mjs';
2
+ import { S as StyleOptions } from './packem_shared/types-D3VQL1eC.mjs';
3
+ export { A as AutoModules, E as ExtractedData, I as InjectOptions, a as InternalStyleOptions, L as LightningCSSOptions, P as PostCSSConfigLoaderOptions, b as PostCSSOptions } from './packem_shared/types-D3VQL1eC.mjs';
4
4
  import { Environment } from '@visulima/packem-share/types';
5
5
  import 'cssnano';
6
6
  import 'lightningcss';
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Plugin } from 'rollup';
2
- import { S as StyleOptions } from './packem_shared/types-CA9pSumu.js';
3
- export { A as AutoModules, E as ExtractedData, I as InjectOptions, a as InternalStyleOptions, L as LightningCSSOptions, P as PostCSSConfigLoaderOptions, b as PostCSSOptions } from './packem_shared/types-CA9pSumu.js';
2
+ import { S as StyleOptions } from './packem_shared/types-D3VQL1eC.js';
3
+ export { A as AutoModules, E as ExtractedData, I as InjectOptions, a as InternalStyleOptions, L as LightningCSSOptions, P as PostCSSConfigLoaderOptions, b as PostCSSOptions } from './packem_shared/types-D3VQL1eC.js';
4
4
  import { Environment } from '@visulima/packem-share/types';
5
5
  import 'cssnano';
6
6
  import 'lightningcss';
@@ -1,4 +1,4 @@
1
- import { c as Loader, d as LESSLoaderOptions } from '../../packem_shared/types-CA9pSumu.mjs';
1
+ import { c as Loader, d as LESSLoaderOptions } from '../../packem_shared/types-D3VQL1eC.mjs';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
@@ -1,4 +1,4 @@
1
- import { c as Loader, L as LightningCSSOptions } from '../packem_shared/types-CA9pSumu.mjs';
1
+ import { c as Loader, L as LightningCSSOptions } from '../packem_shared/types-D3VQL1eC.mjs';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
@@ -1,4 +1,4 @@
1
- import { c as Loader, L as LightningCSSOptions } from '../packem_shared/types-CA9pSumu.js';
1
+ import { c as Loader, L as LightningCSSOptions } from '../packem_shared/types-D3VQL1eC.js';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
@@ -1,4 +1,4 @@
1
- import { c as Loader, a as InternalStyleOptions } from '../../packem_shared/types-CA9pSumu.mjs';
1
+ import { c as Loader, a as InternalStyleOptions } from '../../packem_shared/types-D3VQL1eC.mjs';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
@@ -1,4 +1,4 @@
1
- import { c as Loader, a as InternalStyleOptions } from '../../packem_shared/types-CA9pSumu.js';
1
+ import { c as Loader, a as InternalStyleOptions } from '../../packem_shared/types-D3VQL1eC.js';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
@@ -1,5 +1,5 @@
1
- import { c as Loader, e as SassLoaderOptions } from '../../packem_shared/types-CA9pSumu.mjs';
2
- export { f as SassLoaderContext } from '../../packem_shared/types-CA9pSumu.mjs';
1
+ import { c as Loader, e as SassLoaderOptions } from '../../packem_shared/types-D3VQL1eC.mjs';
2
+ export { f as SassLoaderContext } from '../../packem_shared/types-D3VQL1eC.mjs';
3
3
  import 'cssnano';
4
4
  import 'lightningcss';
5
5
  import 'postcss';
@@ -1,4 +1,4 @@
1
- import { c as Loader } from '../packem_shared/types-CA9pSumu.mjs';
1
+ import { c as Loader } from '../packem_shared/types-D3VQL1eC.mjs';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
@@ -1,4 +1,4 @@
1
- import { c as Loader } from '../packem_shared/types-CA9pSumu.js';
1
+ import { c as Loader } from '../packem_shared/types-D3VQL1eC.js';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
@@ -1,4 +1,4 @@
1
- import { c as Loader, g as StylusLoaderOptions } from '../../packem_shared/types-CA9pSumu.mjs';
1
+ import { c as Loader, g as StylusLoaderOptions } from '../../packem_shared/types-D3VQL1eC.mjs';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
@@ -1,4 +1,4 @@
1
- import { c as Loader } from '../packem_shared/types-CA9pSumu.mjs';
1
+ import { c as Loader } from '../packem_shared/types-D3VQL1eC.mjs';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
@@ -1,4 +1,4 @@
1
- import { c as Loader } from '../packem_shared/types-CA9pSumu.js';
1
+ import { c as Loader } from '../packem_shared/types-D3VQL1eC.js';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
@@ -1,5 +1,5 @@
1
1
  import { Options } from 'cssnano';
2
- import { M as Minifier } from '../packem_shared/types-CA9pSumu.mjs';
2
+ import { M as Minifier } from '../packem_shared/types-D3VQL1eC.mjs';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
5
5
  import 'postcss-load-config';
@@ -1,5 +1,5 @@
1
1
  import { Options } from 'cssnano';
2
- import { M as Minifier } from '../packem_shared/types-CA9pSumu.js';
2
+ import { M as Minifier } from '../packem_shared/types-D3VQL1eC.js';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
5
5
  import 'postcss-load-config';
@@ -1,4 +1,4 @@
1
- import { M as Minifier, a as InternalStyleOptions } from '../packem_shared/types-CA9pSumu.mjs';
1
+ import { M as Minifier, a as InternalStyleOptions } from '../packem_shared/types-D3VQL1eC.mjs';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
@@ -1,4 +1,4 @@
1
- import { M as Minifier, a as InternalStyleOptions } from '../packem_shared/types-CA9pSumu.js';
1
+ import { M as Minifier, a as InternalStyleOptions } from '../packem_shared/types-D3VQL1eC.js';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
@@ -56,11 +56,11 @@ type SassLoaderContext = {
56
56
  resourcePath: string;
57
57
  rootContext: string;
58
58
  };
59
- type SassLoaderOptions = (Omit<StringOptions<"sync">, "charset" | "indentedSyntax"> | Omit<StringOptions$1<"sync">, "charset" | "indentedSyntax">) & {
59
+ type SassLoaderOptions = {
60
60
  additionalData: string | ((content: string | Buffer, loaderContext: SassLoaderContext) => Promise<string>) | ((content: string | Buffer, loaderContext: SassLoaderContext) => string);
61
61
  implementation?: "sass-embedded" | "sass";
62
62
  warnRuleAsWarning?: boolean;
63
- };
63
+ } & (Omit<StringOptions<"sync">, "charset" | "indentedSyntax"> | Omit<StringOptions$1<"sync">, "charset" | "indentedSyntax">);
64
64
 
65
65
  type StylusLoaderOptions = RenderOptions;
66
66
 
@@ -56,11 +56,11 @@ type SassLoaderContext = {
56
56
  resourcePath: string;
57
57
  rootContext: string;
58
58
  };
59
- type SassLoaderOptions = (Omit<StringOptions<"sync">, "charset" | "indentedSyntax"> | Omit<StringOptions$1<"sync">, "charset" | "indentedSyntax">) & {
59
+ type SassLoaderOptions = {
60
60
  additionalData: string | ((content: string | Buffer, loaderContext: SassLoaderContext) => Promise<string>) | ((content: string | Buffer, loaderContext: SassLoaderContext) => string);
61
61
  implementation?: "sass-embedded" | "sass";
62
62
  warnRuleAsWarning?: boolean;
63
- };
63
+ } & (Omit<StringOptions<"sync">, "charset" | "indentedSyntax"> | Omit<StringOptions$1<"sync">, "charset" | "indentedSyntax">);
64
64
 
65
65
  type StylusLoaderOptions = RenderOptions;
66
66
 
@@ -1,5 +1,5 @@
1
1
  import { SourceMapGenerator, RawSourceMap, SourceMapConsumer } from 'source-map-js';
2
- import { h as Extracted, b as PostCSSOptions, S as StyleOptions, a as InternalStyleOptions, i as LoaderContext } from '../packem_shared/types-CA9pSumu.mjs';
2
+ import { h as Extracted, b as PostCSSOptions, S as StyleOptions, a as InternalStyleOptions, i as LoaderContext } from '../packem_shared/types-D3VQL1eC.mjs';
3
3
  import { RollupLogger } from '@visulima/packem-share/utils';
4
4
  import { Result } from 'postcss-load-config';
5
5
  import { NapiResolveOptions } from 'oxc-resolver';
@@ -1,5 +1,5 @@
1
1
  import { SourceMapGenerator, RawSourceMap, SourceMapConsumer } from 'source-map-js';
2
- import { h as Extracted, b as PostCSSOptions, S as StyleOptions, a as InternalStyleOptions, i as LoaderContext } from '../packem_shared/types-CA9pSumu.js';
2
+ import { h as Extracted, b as PostCSSOptions, S as StyleOptions, a as InternalStyleOptions, i as LoaderContext } from '../packem_shared/types-D3VQL1eC.js';
3
3
  import { RollupLogger } from '@visulima/packem-share/utils';
4
4
  import { Result } from 'postcss-load-config';
5
5
  import { NapiResolveOptions } from 'oxc-resolver';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visulima/rollup-plugin-css",
3
- "version": "1.0.0-alpha.5",
3
+ "version": "1.0.0-alpha.7",
4
4
  "description": "CSS processing plugin for packem",
5
5
  "keywords": [
6
6
  "visulima",
@@ -24,7 +24,7 @@
24
24
  "repository": {
25
25
  "type": "git",
26
26
  "url": "git+https://github.com/visulima/packem.git",
27
- "directory": "packages/packem-css"
27
+ "directory": "packages/rollup-plugin-css"
28
28
  },
29
29
  "funding": [
30
30
  {
@@ -96,14 +96,14 @@
96
96
  "dist"
97
97
  ],
98
98
  "dependencies": {
99
- "@rollup/pluginutils": "^5.3.0",
100
- "@visulima/fs": "^3.1.7",
101
- "@visulima/package": "^3.5.10",
102
- "@visulima/packem-share": "1.0.0-alpha.11",
103
- "@visulima/path": "^1.4.0",
104
- "mlly": "^1.8.0",
105
- "oxc-resolver": "^11.8.0",
106
- "p-queue": "^8.1.1",
99
+ "@rollup/pluginutils": "5.3.0",
100
+ "@visulima/fs": "3.1.8",
101
+ "@visulima/package": "4.0.0",
102
+ "@visulima/packem-share": "1.0.0-alpha.13",
103
+ "@visulima/path": "1.4.0",
104
+ "mlly": "1.8.0",
105
+ "oxc-resolver": "11.8.2",
106
+ "p-queue": "^9.0.0",
107
107
  "source-map-js": "^1.2.1"
108
108
  },
109
109
  "peerDependencies": {
@@ -112,7 +112,7 @@
112
112
  "@csstools/postcss-slow-plugins": ">=2.0.0",
113
113
  "@tailwindcss/node": ">=4.1.12",
114
114
  "@tailwindcss/oxide": ">=4.1.12",
115
- "@visulima/css-style-inject": "1.0.0-alpha.8",
115
+ "@visulima/css-style-inject": "1.0.0-alpha.9",
116
116
  "cssnano": ">=7.0.0",
117
117
  "icss-utils": ">=5.1.0",
118
118
  "less": ">=4.0.0",
@@ -130,13 +130,10 @@
130
130
  "stylus": ">=0.60.0"
131
131
  },
132
132
  "peerDependenciesMeta": {
133
- "@csstools/css-parser-algorithms": {
133
+ "@ckeditor/typedoc-plugins": {
134
134
  "optional": true
135
135
  },
136
- "@csstools/css-tokenizer": {
137
- "optional": true
138
- },
139
- "@csstools/postcss-slow-plugins": {
136
+ "@swc/core": {
140
137
  "optional": true
141
138
  },
142
139
  "@tailwindcss/node": {
@@ -145,10 +142,10 @@
145
142
  "@tailwindcss/oxide": {
146
143
  "optional": true
147
144
  },
148
- "@visulima/css-style-inject": {
145
+ "cssnano": {
149
146
  "optional": true
150
147
  },
151
- "cssnano": {
148
+ "esbuild": {
152
149
  "optional": true
153
150
  },
154
151
  "icss-utils": {
@@ -160,6 +157,9 @@
160
157
  "lightningcss": {
161
158
  "optional": true
162
159
  },
160
+ "oxc-transform": {
161
+ "optional": true
162
+ },
163
163
  "postcss": {
164
164
  "optional": true
165
165
  },
@@ -189,6 +189,21 @@
189
189
  },
190
190
  "stylus": {
191
191
  "optional": true
192
+ },
193
+ "sucrase": {
194
+ "optional": true
195
+ },
196
+ "typedoc": {
197
+ "optional": true
198
+ },
199
+ "typedoc-plugin-markdown": {
200
+ "optional": true
201
+ },
202
+ "typedoc-plugin-rename-defaults": {
203
+ "optional": true
204
+ },
205
+ "typescript": {
206
+ "optional": true
192
207
  }
193
208
  },
194
209
  "engines": {