@keycloakify/angular-email 0.0.8 → 1.0.1

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 (27) hide show
  1. package/README.md +55 -12
  2. package/bin/build.mjs +1 -1
  3. package/fesm2022/keycloakify-angular-email-tailwindcss-preset-email-css-processor.mjs +82 -0
  4. package/fesm2022/keycloakify-angular-email-tailwindcss-preset-email-css-processor.mjs.map +1 -0
  5. package/fesm2022/keycloakify-angular-email.mjs +44 -31
  6. package/fesm2022/keycloakify-angular-email.mjs.map +1 -1
  7. package/index.d.ts +1 -3
  8. package/node/index.cjs +1 -1
  9. package/node/index.d.ts +1 -0
  10. package/node/index.js +1 -1
  11. package/package.json +44 -7
  12. package/tailwindcss-preset-email/clients.css +44 -0
  13. package/tailwindcss-preset-email/css-processor/css-processor.ts +90 -0
  14. package/tailwindcss-preset-email/css-processor/index.d.ts +3 -0
  15. package/tailwindcss-preset-email/css-processor/index.ts +1 -0
  16. package/tailwindcss-preset-email/css-processor/ng-package.json +6 -0
  17. package/tailwindcss-preset-email/index.css +25 -0
  18. package/tailwindcss-preset-email/mso.css +433 -0
  19. package/tailwindcss-preset-email/theme/borders.css +15 -0
  20. package/tailwindcss-preset-email/theme/colors.css +249 -0
  21. package/tailwindcss-preset-email/theme/filters.css +13 -0
  22. package/tailwindcss-preset-email/theme/shadows.css +23 -0
  23. package/tailwindcss-preset-email/theme/spacing.css +21 -0
  24. package/tailwindcss-preset-email/theme/text.css +28 -0
  25. package/fesm2022/keycloakify-angular-email-tailwindcss-preset-email.mjs +0 -1229
  26. package/fesm2022/keycloakify-angular-email-tailwindcss-preset-email.mjs.map +0 -1
  27. package/tailwindcss-preset-email/index.d.ts +0 -191
@@ -0,0 +1,44 @@
1
+ @variant airmail (.bloop_container &);
2
+
3
+ @variant apple-mail-10 (.Singleton &);
4
+ @variant apple-mail ([class^="apple-mail"] &);
5
+
6
+ @variant comcast (.mail-detail-content &);
7
+
8
+ @variant edison (#edo-container &);
9
+ @variant edison-ios (.edo &);
10
+ @variant edison-android (.edo-email-view &);
11
+
12
+ @variant freenet (body[marginwidth][marginheight] &);
13
+
14
+ @variant gmail (u + .body &);
15
+ @variant gmail-android (div > u + .body &);
16
+ @custom-variant gmail-ipad {
17
+ @media only screen and (min-device-width: 768px) and (max-device-width: 1366px) {
18
+ u + .body & {
19
+ @slot;
20
+ }
21
+ }
22
+ }
23
+
24
+ @variant ios-10 (@supports (-webkit-overflow-scrolling:touch) and (color:#ffff));
25
+ @variant ios-13 ([class^="apple-mail"] &);
26
+ @variant ios (@supports (-webkit-overflow-scrolling:touch) and (aspect-ratio: 1 / 1));
27
+
28
+ @variant notion (#mail-content-wrapper &);
29
+
30
+ @variant ox (&[class^="ox-"]);
31
+
32
+ @variant ogsc ([data-ogsc] &);
33
+ @variant ogsb ([data-ogsb] &);
34
+
35
+ @variant outlook-mac (#converted-body &);
36
+ @variant outlook-android (#converted-body &);
37
+
38
+ @variant spark (.c17637 &);
39
+
40
+ @variant superhuman (.ShadowHTML &);
41
+
42
+ @variant thunderbird (.moz-text-html &);
43
+
44
+ @variant yahoo (.\& &);
@@ -0,0 +1,90 @@
1
+ import tailwindcss from '@tailwindcss/postcss';
2
+ import postcss from 'postcss';
3
+ import calc from 'postcss-calc';
4
+ import properties from 'postcss-custom-properties';
5
+ import logical, { type DirectionFlow } from 'postcss-logical';
6
+ import preset from 'postcss-preset-env';
7
+
8
+ export const cssProcessor = async (style: string, html: string) => {
9
+ try {
10
+ const inlineSafelist = html
11
+ ? Array.from(
12
+ new Set(
13
+ (html.match(/class=["']([^"']+)["']/g) ?? [])
14
+ .flatMap((m) =>
15
+ m
16
+ .replace(/^class=["']|["']$/g, '')
17
+ .trim()
18
+ .split(/\s+/),
19
+ )
20
+ .filter(Boolean),
21
+ ),
22
+ )
23
+ .slice(0, 5000) // safety cap
24
+ .map((c) => c.replace(/\\/g, '\\\\').replace(/"/g, '\\"'))
25
+ .join(' ')
26
+ : '';
27
+ const styleWithSources = inlineSafelist.length > 0 ? `@source inline("${inlineSafelist}");\n${style}` : style;
28
+ const result = await postcss(
29
+ tailwindcss({ base: '' }),
30
+ properties({ preserve: false }),
31
+ calc({ preserve: false }),
32
+ {
33
+ postcssPlugin: 'inline-tw-vars-from-layer',
34
+ Once(root) {
35
+ const defaultVars = new Map<string, string>();
36
+
37
+ // 1. Find the default variables in @layer properties
38
+ root.walkAtRules('layer', (layerRule) => {
39
+ if (layerRule.params === 'properties') {
40
+ layerRule.walkDecls(/^--tw-/, (decl) => {
41
+ defaultVars.set(decl.prop, decl.value);
42
+ });
43
+ }
44
+ });
45
+
46
+ // 2. Walk all rules and replace var() usages
47
+ root.walkDecls((decl) => {
48
+ decl.value = decl.value.replace(/var\((--tw-[^,)]+)\)/g, (match, varName) => {
49
+ return defaultVars.has(varName) ? defaultVars.get(varName)! : match;
50
+ });
51
+ });
52
+ },
53
+ },
54
+ {
55
+ postcssPlugin: 'remove-unused-tw-vars',
56
+ Once(root) {
57
+ root.walkDecls(/^--tw-/, (decl) => {
58
+ decl.remove();
59
+ });
60
+ root.walkAtRules('property', (atRule) => {
61
+ if (atRule.params.startsWith('--tw-')) {
62
+ atRule.remove();
63
+ }
64
+ });
65
+ root.walkAtRules('layer', (atRule) => {
66
+ if (atRule.params === 'properties') {
67
+ atRule.remove();
68
+ }
69
+ });
70
+ },
71
+ },
72
+ logical({
73
+ blockDirection: 'top-to-bottom' as DirectionFlow,
74
+ inlineDirection: 'left-to-right' as DirectionFlow,
75
+ }),
76
+ preset({
77
+ stage: 4,
78
+ minimumVendorImplementations: 3,
79
+ logical: {
80
+ blockDirection: 'top-to-bottom' as DirectionFlow,
81
+ inlineDirection: 'left-to-right' as DirectionFlow,
82
+ },
83
+ }),
84
+ ).process(styleWithSources, { map: false, from: undefined });
85
+ return result.css;
86
+ } catch (error) {
87
+ console.error('CSS processing failed:', error);
88
+ throw new Error(`Failed to process CSS: ${error instanceof Error ? error.message : 'Unknown error'}`);
89
+ }
90
+ };
@@ -0,0 +1,3 @@
1
+ declare const cssProcessor: (style: string, html: string) => Promise<string>;
2
+
3
+ export { cssProcessor };
@@ -0,0 +1 @@
1
+ export * from './css-processor';
@@ -0,0 +1,6 @@
1
+ {
2
+ "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json",
3
+ "lib": {
4
+ "entryFile": "index.ts"
5
+ }
6
+ }
@@ -0,0 +1,25 @@
1
+ @import "tailwindcss/theme";
2
+ @import "./theme/colors.css";
3
+ @import "./theme/text.css";
4
+ @import "./theme/shadows.css";
5
+ @import "./theme/filters.css";
6
+ @import "./theme/spacing.css";
7
+ @import "./theme/borders.css";
8
+
9
+ @import "./mso.css";
10
+ @import "./clients.css";
11
+ @import "tailwindcss/utilities" important;
12
+
13
+ /* Resets */
14
+ @theme {
15
+ /* Unset some namespaces */
16
+ --breakpoint-*: initial;
17
+ --animate-*: initial;
18
+ }
19
+
20
+ /* Breakpoints */
21
+ @variant sm (@media (max-width: 600px));
22
+ @variant xs (@media (max-width: 430px));
23
+
24
+ /* Prefer pseudo over @media (hover: hover) */
25
+ @variant hover (&:hover);
@@ -0,0 +1,433 @@
1
+ /*
2
+ |-------------------------------------------------------------------------------
3
+ | Utilities with predefined values
4
+ |-------------------------------------------------------------------------------
5
+ |
6
+ | These utilities use predefined values, and some also support values from
7
+ | your config, like spacing or colors.
8
+ |
9
+ */
10
+
11
+ @utility mso-ansi-font-size-* {
12
+ mso-ansi-font-size: --spacing(--value(integer));
13
+ mso-ansi-font-size: --value(
14
+ "large", "larger", "medium", "small", "smaller", "x-large", "x-small", "xx-large", "xx-small"
15
+ );
16
+ }
17
+
18
+ @utility mso-bidi-font-size-* {
19
+ mso-bidi-font-size: --spacing(--value(integer));
20
+ mso-bidi-font-size: --value(
21
+ "large", "larger", "medium", "small", "smaller", "x-large", "x-small", "xx-large", "xx-small"
22
+ );
23
+ }
24
+
25
+ @utility mso-ansi-font-style-* {
26
+ mso-ansi-font-style: --value("normal", "italic", "oblique");
27
+ }
28
+
29
+ @utility mso-bidi-font-style-* {
30
+ mso-bidi-font-style: --value("normal", "italic", "oblique");
31
+ }
32
+
33
+ @utility mso-ansi-font-weight-* {
34
+ mso-ansi-font-weight: --value("lighter", "normal", "bold", "bolder");
35
+ }
36
+
37
+ @utility mso-bidi-font-weight-* {
38
+ mso-bidi-font-weight: --value("lighter", "normal", "bold", "bolder");
39
+ }
40
+
41
+ @utility mso-ascii-font-family-* {
42
+ mso-ascii-font-family: --value("auto", "serif", "sans-serif", "monospace", "cursive", "fantasy");
43
+ }
44
+
45
+ @utility mso-bidi-font-family-* {
46
+ mso-bidi-font-family: --value("auto", "serif", "sans-serif", "monospace", "cursive", "fantasy");
47
+ }
48
+
49
+ @utility mso-arabic-font-family-* {
50
+ mso-arabic-font-family: --value("auto", "serif", "sans-serif", "monospace", "cursive", "fantasy");
51
+ }
52
+
53
+ @utility mso-bidi-flag-* {
54
+ mso-bidi-flag: --value("on", "off");
55
+ }
56
+
57
+ @utility mso-highlight-* {
58
+ mso-highlight: --value("auto", "windowtext");
59
+ mso-highlight: --value(--color-*);
60
+ mso-highlight: --value([*]);
61
+ }
62
+
63
+ @utility mso-generic-font-family-* {
64
+ mso-generic-font-family: --value("auto", "decorative", "modern", "roman", "script", "swiss");
65
+ }
66
+
67
+ @utility mso-font-alt-* {
68
+ mso-font-alt: --value(--font-*);
69
+ mso-font-alt: --value([*]);
70
+ }
71
+
72
+ @utility mso-element-frame-width-* {
73
+ mso-element-frame-width: --value("auto");
74
+ mso-element-frame-width: --spacing(--value(integer));
75
+ mso-element-frame-width: --value([*]);
76
+ }
77
+
78
+ @utility mso-element-frame-height-* {
79
+ mso-element-frame-height: --value("auto");
80
+ mso-element-frame-height: --spacing(--value(integer));
81
+ mso-element-frame-height: --value([*]);
82
+ }
83
+
84
+ @utility mso-element-* {
85
+ mso-element: --value(
86
+ "comment", "comment-list", "dropcap-dropped", "dropcap-in-margin", "endnote", "endnote-continuation-notice",
87
+ "endnote-continuation-separator", "endnote-list", "endnote-separator", "field-begin", "field-end",
88
+ "field-separator", "footer", "footnote", "footnote-continuation-notice", "footnote-continuation-separator",
89
+ "footnote-list", "footnote-separator", "frame", "header", "none", "paragraph-mark-properties", "table-head"
90
+ );
91
+ mso-element: --value([*]);
92
+ }
93
+
94
+ @utility mso-element-wrap-* {
95
+ mso-element-wrap: --value("none", "auto", "around", "no-wrap-beside");
96
+ mso-element-wrap: --value([*]);
97
+ }
98
+
99
+ @utility mso-element-left-* {
100
+ mso-element-left: --value("center", "inside", "outside", "left", "right");
101
+ mso-element-left: --spacing(--value(integer));
102
+ mso-element-left: --value([*]);
103
+ }
104
+ @utility -mso-element-left-* {
105
+ mso-element-left: --spacing(--value(integer) * -1);
106
+ }
107
+
108
+ @utility mso-element-top-* {
109
+ mso-element-top: --value("bottom", "inside", "middle", "outside", "top");
110
+ mso-element-top: --spacing(--value(integer));
111
+ mso-element-top: --value([*]);
112
+ }
113
+ @utility -mso-element-top-* {
114
+ mso-element-top: --spacing(--value(integer) * -1);
115
+ }
116
+
117
+ @utility mso-hide-* {
118
+ mso-hide: --value("all", "none", "screen");
119
+ mso-hide: --value([*]);
120
+ }
121
+
122
+ @utility mso-color-alt-* {
123
+ mso-color-alt: --value("auto", "windowtext");
124
+ mso-color-alt: --value(--color-*);
125
+ mso-color-alt: --value([*]);
126
+ }
127
+
128
+ @utility mso-line-height-rule-* {
129
+ mso-line-height-rule: --value("exactly", "at-least");
130
+ }
131
+
132
+ @utility mso-line-height-alt-* {
133
+ mso-line-height-alt: --value("normal");
134
+ mso-line-height-alt: --spacing(--value(integer));
135
+ mso-line-height-alt: --value([*]);
136
+ }
137
+ @utility -mso-line-height-alt-* {
138
+ mso-line-height-alt: --spacing(--value(integer) * -1);
139
+ }
140
+
141
+ @utility text-underline-* {
142
+ text-underline: --value(
143
+ "auto", "dash", "dash-dot-dot-heavy", "dash-dot-heavy", "dashed-heavy", "dash-long", "dash-long-heavy", "dot-dash",
144
+ "dot-dot-dash", "dotted", "dotted-heavy", "double", "double-accounting", "none", "single", "single-accounting",
145
+ "thick", "wave", "wavy-double", "wavy-heavy", "windowtext", "word"
146
+ );
147
+ }
148
+ @utility text-underline-style-* {
149
+ text-underline-style: --value(
150
+ "auto", "dash", "dash-dot-dot-heavy", "dash-dot-heavy", "dashed-heavy", "dash-long", "dash-long-heavy", "dot-dash",
151
+ "dot-dot-dash", "dotted", "dotted-heavy", "double", "double-accounting", "none", "single", "single-accounting",
152
+ "thick", "wave", "wavy-double", "wavy-heavy", "windowtext", "word"
153
+ );
154
+ }
155
+
156
+ @utility text-underline-color-* {
157
+ text-underline-color: --value("auto", "windowtext");
158
+ text-underline-color: --value(--color-*);
159
+ text-underline-color: --value([*]);
160
+ }
161
+
162
+ @utility mso-special-format-bullet {
163
+ mso-special-format: bullet;
164
+ }
165
+
166
+ /*
167
+ |-------------------------------------------------------------------------------
168
+ | Spacing utilities
169
+ |-------------------------------------------------------------------------------
170
+ |
171
+ | These utilities are based on the spacing scale from your config. Some also
172
+ | support negative values.
173
+ |
174
+ */
175
+
176
+ @utility mso-text-raise-* {
177
+ mso-text-raise: --spacing(--value(integer));
178
+ mso-text-raise: --value([*]);
179
+ }
180
+ @utility -mso-text-raise-* {
181
+ mso-text-raise: --spacing(--value(integer) * -1);
182
+ }
183
+
184
+ /* mso-padding */
185
+ @utility mso-padding-alt-* {
186
+ mso-padding-alt: --spacing(--value(integer));
187
+ mso-padding-alt: --value([*]);
188
+ }
189
+ @utility mso-padding-top-alt-* {
190
+ mso-padding-top-alt: --spacing(--value(integer));
191
+ mso-padding-top-alt: --value([*]);
192
+ }
193
+ @utility mso-padding-right-alt-* {
194
+ mso-padding-right-alt: --spacing(--value(integer));
195
+ mso-padding-right-alt: --value([*]);
196
+ }
197
+ @utility mso-padding-bottom-alt-* {
198
+ mso-padding-bottom-alt: --spacing(--value(integer));
199
+ mso-padding-bottom-alt: --value([*]);
200
+ }
201
+ @utility mso-padding-left-alt-* {
202
+ mso-padding-left-alt: --spacing(--value(integer));
203
+ mso-padding-left-alt: --value([*]);
204
+ }
205
+
206
+ /* mso-margin */
207
+ @utility mso-margin-alt-* {
208
+ mso-margin-alt: --spacing(--value(integer));
209
+ mso-margin-alt: --value([*]);
210
+ }
211
+ @utility -mso-margin-alt-* {
212
+ mso-margin-alt: --spacing(--value(integer) * -1);
213
+ }
214
+ @utility mso-margin-top-alt-* {
215
+ mso-margin-top-alt: --spacing(--value(integer));
216
+ mso-margin-top-alt: --value([*]);
217
+ }
218
+ @utility -mso-margin-top-alt-* {
219
+ mso-margin-top-alt: --spacing(--value(integer) * -1);
220
+ }
221
+ @utility mso-margin-right-alt-* {
222
+ mso-margin-right-alt: --spacing(--value(integer));
223
+ mso-margin-right-alt: --value([*]);
224
+ }
225
+ @utility -mso-margin-right-alt-* {
226
+ mso-margin-right-alt: --spacing(--value(integer) * -1);
227
+ }
228
+ @utility mso-margin-bottom-alt-* {
229
+ mso-margin-bottom-alt: --spacing(--value(integer));
230
+ mso-margin-bottom-alt: --value([*]);
231
+ }
232
+ @utility -mso-margin-bottom-alt-* {
233
+ mso-margin-bottom-alt: --spacing(--value(integer) * -1);
234
+ }
235
+ @utility mso-margin-left-alt-* {
236
+ mso-margin-left-alt: --spacing(--value(integer));
237
+ mso-margin-left-alt: --value([*]);
238
+ }
239
+ @utility -mso-margin-left-alt-* {
240
+ mso-margin-left-alt: --spacing(--value(integer) * -1);
241
+ }
242
+
243
+ /* mso-para-margin */
244
+ @utility mso-para-margin-* {
245
+ mso-para-margin: --spacing(--value(integer));
246
+ mso-para-margin: --value([*]);
247
+ }
248
+ @utility -mso-para-margin-* {
249
+ mso-para-margin: --spacing(--value(integer) * -1);
250
+ }
251
+ @utility mso-para-margin-top-* {
252
+ mso-para-margin-top: --spacing(--value(integer));
253
+ mso-para-margin-top: --value([*]);
254
+ }
255
+ @utility -mso-para-margin-top-* {
256
+ mso-para-margin-top: --spacing(--value(integer) * -1);
257
+ }
258
+ @utility mso-para-margin-right-* {
259
+ mso-para-margin-right: --spacing(--value(integer));
260
+ mso-para-margin-right: --value([*]);
261
+ }
262
+ @utility -mso-para-margin-right-* {
263
+ mso-para-margin-right: --spacing(--value(integer) * -1);
264
+ }
265
+ @utility mso-para-margin-bottom-* {
266
+ mso-para-margin-bottom: --spacing(--value(integer));
267
+ mso-para-margin-bottom: --value([*]);
268
+ }
269
+ @utility -mso-para-margin-bottom-* {
270
+ mso-para-margin-bottom: --spacing(--value(integer) * -1);
271
+ }
272
+ @utility mso-para-margin-left-* {
273
+ mso-para-margin-left: --spacing(--value(integer));
274
+ mso-para-margin-left: --value([*]);
275
+ }
276
+ @utility -mso-para-margin-left-* {
277
+ mso-para-margin-left: --spacing(--value(integer) * -1);
278
+ }
279
+
280
+ /* mso-text-indent-alt */
281
+ @utility mso-text-indent-alt-* {
282
+ mso-text-indent-alt: --spacing(--value(integer));
283
+ mso-text-indent-alt: --value([*]);
284
+ }
285
+ @utility -mso-text-indent-alt-* {
286
+ mso-text-indent-alt: --spacing(--value(integer) * -1);
287
+ }
288
+
289
+ /* mso-table-{?}space */
290
+ @utility mso-table-tspace-* {
291
+ mso-table-tspace: --spacing(--value(integer));
292
+ mso-table-tspace: --value([*]);
293
+ }
294
+ @utility -mso-table-tspace-* {
295
+ mso-table-tspace: --spacing(--value(integer) * -1);
296
+ }
297
+ @utility mso-table-rspace-* {
298
+ mso-table-rspace: --spacing(--value(integer));
299
+ mso-table-rspace: --value([*]);
300
+ }
301
+ @utility -mso-table-rspace-* {
302
+ mso-table-rspace: --spacing(--value(integer) * -1);
303
+ }
304
+ @utility mso-table-bspace-* {
305
+ mso-table-bspace: --spacing(--value(integer));
306
+ mso-table-bspace: --value([*]);
307
+ }
308
+ @utility -mso-table-bspace-* {
309
+ mso-table-bspace: --spacing(--value(integer) * -1);
310
+ }
311
+ @utility mso-table-lspace-* {
312
+ mso-table-lspace: --spacing(--value(integer));
313
+ mso-table-lspace: --value([*]);
314
+ }
315
+ @utility -mso-table-lspace-* {
316
+ mso-table-lspace: --spacing(--value(integer) * -1);
317
+ }
318
+
319
+ /* mso-font-width */
320
+ @utility mso-font-width-* {
321
+ mso-font-width: --spacing(--value(integer));
322
+ mso-font-width: --value([*]);
323
+ }
324
+
325
+ /* mso-shading */
326
+ @utility mso-shading-* {
327
+ mso-shading: --value("auto", "windowtext", "transparent");
328
+ mso-shading: --value(--color-*);
329
+ mso-shading: --value([*]);
330
+ }
331
+
332
+ /* mso-shadow-color */
333
+ @utility mso-shadow-color-* {
334
+ mso-shadow-color: --value("auto", "windowtext");
335
+ mso-shadow-color: --value(--color-*);
336
+ mso-shadow-color: --value([*]);
337
+ }
338
+
339
+ /* mso-element-frame-vspace, mso-element-frame-hspace */
340
+ @utility mso-element-frame-vspace-* {
341
+ mso-element-frame-vspace: --spacing(--value(integer));
342
+ mso-element-frame-vspace: --value([*]);
343
+ }
344
+ @utility -mso-element-frame-vspace-* {
345
+ mso-element-frame-vspace: --spacing(--value(integer) * -1);
346
+ }
347
+ @utility mso-element-frame-hspace-* {
348
+ mso-element-frame-hspace: --spacing(--value(integer));
349
+ mso-element-frame-hspace: --value([*]);
350
+ }
351
+ @utility -mso-element-frame-hspace-* {
352
+ mso-element-frame-hspace: --spacing(--value(integer) * -1);
353
+ }
354
+
355
+ /* mso-border-* colors */
356
+ @utility mso-border-alt-* {
357
+ mso-border-alt: --value(--color-*);
358
+ mso-border-alt: --value([*]);
359
+ }
360
+ @utility mso-border-between-* {
361
+ mso-border-between: --value(--color-*);
362
+ mso-border-between: --value([*]);
363
+ }
364
+ @utility mso-border-bottom-alt-* {
365
+ mso-border-bottom-alt: --value(--color-*);
366
+ mso-border-bottom-alt: --value([*]);
367
+ }
368
+ @utility mso-border-left-alt-* {
369
+ mso-border-left-alt: --value(--color-*);
370
+ mso-border-left-alt: --value([*]);
371
+ }
372
+ @utility mso-border-right-alt-* {
373
+ mso-border-right-alt: --value(--color-*);
374
+ mso-border-right-alt: --value([*]);
375
+ }
376
+ @utility mso-border-top-alt-* {
377
+ mso-border-top-alt: --value(--color-*);
378
+ mso-border-top-alt: --value([*]);
379
+ }
380
+
381
+ /* mso-border widths */
382
+ @utility mso-border-between-width-* {
383
+ mso-border-between-width: --value("thin", "medium", "thick");
384
+ mso-border-between-width: --spacing(--value(integer));
385
+ mso-border-between-width: --value([*]);
386
+ }
387
+ @utility mso-border-width-alt-* {
388
+ mso-border-width-alt: --value("thin", "medium", "thick");
389
+ mso-border-width-alt: --spacing(--value(integer));
390
+ mso-border-width-alt: --value([*]);
391
+ }
392
+ @utility mso-border-bottom-width-alt-* {
393
+ mso-border-bottom-width-alt: --value("thin", "medium", "thick");
394
+ mso-border-bottom-width-alt: --spacing(--value(integer));
395
+ mso-border-bottom-width-alt: --value([*]);
396
+ }
397
+ @utility mso-border-left-width-alt-* {
398
+ mso-border-left-width-alt: --value("thin", "medium", "thick");
399
+ mso-border-left-width-alt: --spacing(--value(integer));
400
+ mso-border-left-width-alt: --value([*]);
401
+ }
402
+ @utility mso-border-right-width-alt-* {
403
+ mso-border-right-width-alt: --value("thin", "medium", "thick");
404
+ mso-border-right-width-alt: --spacing(--value(integer));
405
+ mso-border-right-width-alt: --value([*]);
406
+ }
407
+ @utility mso-border-top-width-alt-* {
408
+ mso-border-top-width-alt: --value("thin", "medium", "thick");
409
+ mso-border-top-width-alt: --spacing(--value(integer));
410
+ mso-border-top-width-alt: --value([*]);
411
+ }
412
+
413
+ /* mso-border-*-source */
414
+ @utility mso-border-bottom-source-* {
415
+ mso-border-bottom-source: --value("auto", "background", 'foreground');
416
+ }
417
+ @utility mso-border-left-source-* {
418
+ mso-border-left-source: --value("auto", "background", 'foreground');
419
+ }
420
+ @utility mso-border-right-source-* {
421
+ mso-border-right-source: --value("auto", "background", 'foreground');
422
+ }
423
+ @utility mso-border-top-source-* {
424
+ mso-border-top-source: --value("auto", "background", 'foreground');
425
+ }
426
+
427
+ @utility mso-border-shadow-* {
428
+ mso-border-shadow: --value("yes", "no");
429
+ }
430
+
431
+ @utility mso-border-effect-* {
432
+ mso-border-effect: --value("3d", "box");
433
+ }
@@ -0,0 +1,15 @@
1
+ @theme {
2
+ --radius-*: initial;
3
+
4
+ /* Border radius */
5
+ --radius-xs: 2px;
6
+ --radius-sm: 4px;
7
+ --radius: 4px;
8
+ --radius-md: 6px;
9
+ --radius-lg: 8px;
10
+ --radius-xl: 12px;
11
+ --radius-2xl: 16px;
12
+ --radius-3xl: 24px;
13
+ --radius-4xl: 32px;
14
+ --radius-full: 9999px;
15
+ }