@bookklik/senangstart-css 0.2.0 → 0.2.4
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/senangstart-css.js +102 -7
- package/dist/senangstart-css.min.js +26 -24
- package/dist/senangstart-tw.js +389 -0
- package/dist/senangstart-tw.min.js +2 -0
- package/docs/.vitepress/config.js +13 -4
- package/docs/SYNTAX-REFERENCE.md +1590 -1555
- package/docs/index.md +6 -0
- package/docs/ms/index.md +6 -0
- package/docs/ms/reference/visual/accent-color.md +6 -6
- package/docs/ms/reference/visual/animation-builtin.md +6 -6
- package/docs/ms/reference/visual/animation-delay.md +4 -2
- package/docs/ms/reference/visual/animation-direction.md +6 -6
- package/docs/ms/reference/visual/animation-duration.md +4 -4
- package/docs/ms/reference/visual/animation-fill.md +33 -9
- package/docs/ms/reference/visual/animation-iteration.md +5 -5
- package/docs/ms/reference/visual/animation-play.md +4 -4
- package/docs/ms/reference/visual/appearance.md +4 -4
- package/docs/ms/reference/visual/blend-modes.md +6 -6
- package/docs/ms/reference/visual/border-radius.md +8 -8
- package/docs/ms/reference/visual/box-shadow.md +6 -6
- package/docs/ms/reference/visual/caret-color.md +2 -2
- package/docs/ms/reference/visual/cursor.md +6 -6
- package/docs/ms/reference/visual/filter-blur.md +7 -7
- package/docs/ms/reference/visual/font-family.md +8 -8
- package/docs/ms/reference/visual/font-smoothing.md +4 -4
- package/docs/ms/reference/visual/font-style.md +4 -4
- package/docs/ms/reference/visual/font-variant-numeric.md +6 -4
- package/docs/ms/reference/visual/font-weight.md +6 -6
- package/docs/ms/reference/visual/gradient-from.md +57 -0
- package/docs/ms/reference/visual/gradient-to.md +57 -0
- package/docs/ms/reference/visual/gradient-via.md +54 -0
- package/docs/ms/reference/visual/hyphens.md +6 -6
- package/docs/ms/reference/visual/letter-spacing.md +8 -8
- package/docs/ms/reference/visual/line-clamp.md +9 -9
- package/docs/ms/reference/visual/line-height.md +8 -8
- package/docs/ms/reference/visual/list-style.md +7 -7
- package/docs/ms/reference/visual/mask.md +6 -2
- package/docs/ms/reference/visual/opacity.md +8 -8
- package/docs/ms/reference/visual/pointer-events.md +4 -4
- package/docs/ms/reference/visual/state-prefixes.md +5 -3
- package/docs/ms/reference/visual/text-decoration.md +6 -4
- package/docs/ms/reference/visual/text-indent.md +8 -4
- package/docs/ms/reference/visual/text-overflow.md +6 -4
- package/docs/ms/reference/visual/text-shadow.md +8 -2
- package/docs/ms/reference/visual/text-size.md +31 -13
- package/docs/ms/reference/visual/text-transform.md +6 -6
- package/docs/ms/reference/visual/text-wrap.md +8 -8
- package/docs/ms/reference/visual/transform-backface.md +29 -9
- package/docs/ms/reference/visual/transform-origin.md +4 -4
- package/docs/ms/reference/visual/transform-perspective-origin.md +41 -7
- package/docs/ms/reference/visual/transform-perspective.md +41 -7
- package/docs/ms/reference/visual/transform-rotate-3d.md +93 -0
- package/docs/ms/reference/visual/transform-rotate.md +6 -6
- package/docs/ms/reference/visual/transform-scale.md +7 -7
- package/docs/ms/reference/visual/transform-skew.md +6 -6
- package/docs/ms/reference/visual/transform-style.md +31 -11
- package/docs/ms/reference/visual/transform-translate-z.md +90 -0
- package/docs/ms/reference/visual/transform-translate.md +40 -14
- package/docs/ms/reference/visual/transition-delay.md +4 -2
- package/docs/ms/reference/visual/transition-duration.md +4 -4
- package/docs/ms/reference/visual/transition-timing.md +6 -6
- package/docs/ms/reference/visual/typography-keywords.md +8 -8
- package/docs/ms/reference/visual/user-select.md +4 -4
- package/docs/ms/reference/visual/vertical-align.md +10 -8
- package/docs/ms/reference/visual/whitespace.md +8 -8
- package/docs/ms/reference/visual/word-break.md +8 -8
- package/docs/public/assets/senangstart-css.min.js +209 -1545
- package/docs/public/assets/ss-logo.svg +83 -0
- package/docs/reference/visual/accent-color.md +6 -6
- package/docs/reference/visual/animation-builtin.md +6 -6
- package/docs/reference/visual/animation-delay.md +4 -2
- package/docs/reference/visual/animation-direction.md +6 -6
- package/docs/reference/visual/animation-duration.md +4 -4
- package/docs/reference/visual/animation-fill.md +33 -9
- package/docs/reference/visual/animation-iteration.md +5 -5
- package/docs/reference/visual/animation-play.md +4 -4
- package/docs/reference/visual/appearance.md +4 -4
- package/docs/reference/visual/blend-modes.md +6 -6
- package/docs/reference/visual/border-radius.md +8 -8
- package/docs/reference/visual/box-shadow.md +6 -6
- package/docs/reference/visual/caret-color.md +2 -2
- package/docs/reference/visual/cursor.md +6 -6
- package/docs/reference/visual/filter-blur.md +7 -7
- package/docs/reference/visual/font-family.md +8 -8
- package/docs/reference/visual/font-smoothing.md +4 -4
- package/docs/reference/visual/font-style.md +4 -4
- package/docs/reference/visual/font-variant-numeric.md +6 -4
- package/docs/reference/visual/font-weight.md +6 -6
- package/docs/reference/visual/gradient-from.md +57 -0
- package/docs/reference/visual/gradient-to.md +57 -0
- package/docs/reference/visual/gradient-via.md +54 -0
- package/docs/reference/visual/hyphens.md +6 -6
- package/docs/reference/visual/letter-spacing.md +8 -8
- package/docs/reference/visual/line-clamp.md +9 -9
- package/docs/reference/visual/line-height.md +8 -8
- package/docs/reference/visual/list-style.md +7 -7
- package/docs/reference/visual/mask.md +6 -2
- package/docs/reference/visual/opacity.md +8 -8
- package/docs/reference/visual/pointer-events.md +4 -4
- package/docs/reference/visual/state-prefixes.md +5 -3
- package/docs/reference/visual/text-decoration.md +6 -4
- package/docs/reference/visual/text-indent.md +8 -4
- package/docs/reference/visual/text-overflow.md +6 -4
- package/docs/reference/visual/text-shadow.md +8 -2
- package/docs/reference/visual/text-size.md +31 -13
- package/docs/reference/visual/text-transform.md +6 -6
- package/docs/reference/visual/text-wrap.md +8 -8
- package/docs/reference/visual/transform-backface.md +29 -9
- package/docs/reference/visual/transform-origin.md +4 -4
- package/docs/reference/visual/transform-perspective-origin.md +41 -7
- package/docs/reference/visual/transform-perspective.md +41 -7
- package/docs/reference/visual/transform-rotate-3d.md +93 -0
- package/docs/reference/visual/transform-rotate.md +6 -6
- package/docs/reference/visual/transform-scale.md +7 -7
- package/docs/reference/visual/transform-skew.md +6 -6
- package/docs/reference/visual/transform-style.md +31 -11
- package/docs/reference/visual/transform-translate-z.md +90 -0
- package/docs/reference/visual/transform-translate.md +40 -14
- package/docs/reference/visual/transition-delay.md +4 -2
- package/docs/reference/visual/transition-duration.md +4 -4
- package/docs/reference/visual/transition-timing.md +6 -6
- package/docs/reference/visual/typography-keywords.md +8 -8
- package/docs/reference/visual/user-select.md +4 -4
- package/docs/reference/visual/vertical-align.md +10 -8
- package/docs/reference/visual/whitespace.md +8 -8
- package/docs/reference/visual/word-break.md +8 -8
- package/docs/syntax-reference.json +2009 -1972
- package/package.json +2 -2
- package/playground/index.html +37 -38
- package/playground/sample_code.txt +23 -0
- package/playground/tw-convertor.html +103 -589
- package/scripts/build-dist.js +43 -1
- package/scripts/convert-tailwind.js +24 -0
- package/scripts/generate-docs.js +9 -7
- package/src/cdn/jit.js +70 -7
- package/src/cdn/tw-conversion-engine.js +497 -0
- package/src/compiler/generators/css.js +24 -2
- package/src/config/defaults.js +31 -7
- package/src/definitions/layout-positioning.js +6 -6
- package/src/definitions/visual-backgrounds.js +113 -15
- package/src/definitions/visual-borders.js +1 -1
- package/src/definitions/visual-filters.js +16 -16
- package/src/definitions/visual-svg.js +5 -5
- package/src/definitions/visual-transform3d.js +202 -36
- package/src/definitions/visual-transforms.js +42 -25
- package/src/definitions/visual-transitions.js +40 -26
- package/src/definitions/visual-typography.js +53 -44
- package/src/definitions/visual.js +73 -58
- package/tests/unit/convert-tailwind.test.js +8 -0
package/scripts/build-dist.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import * as esbuild from 'esbuild';
|
|
9
|
-
import { mkdirSync, statSync } from 'fs';
|
|
9
|
+
import { mkdirSync, statSync, copyFileSync } from 'fs';
|
|
10
10
|
import { dirname, join } from 'path';
|
|
11
11
|
import { fileURLToPath } from 'url';
|
|
12
12
|
|
|
@@ -49,6 +49,48 @@ await esbuild.build({
|
|
|
49
49
|
const minSize = statSync(join(distDir, 'senangstart-css.min.js')).size;
|
|
50
50
|
console.log(`✓ Created senangstart-css.min.js (${(minSize / 1024).toFixed(1)} KB)`);
|
|
51
51
|
|
|
52
|
+
// Build Tailwind converter - unminified
|
|
53
|
+
await esbuild.build({
|
|
54
|
+
entryPoints: [join(root, 'src', 'cdn', 'tw-conversion-engine.js')],
|
|
55
|
+
bundle: true,
|
|
56
|
+
format: 'iife',
|
|
57
|
+
outfile: join(distDir, 'senangstart-tw.js'),
|
|
58
|
+
minify: false,
|
|
59
|
+
banner: {
|
|
60
|
+
js: '/* SenangStart CSS - Tailwind Converter v0.2.0 | MIT License */'
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
const twUnminSize = statSync(join(distDir, 'senangstart-tw.js')).size;
|
|
65
|
+
console.log(`✓ Created senangstart-tw.js (${(twUnminSize / 1024).toFixed(1)} KB)`);
|
|
66
|
+
|
|
67
|
+
// Build Tailwind converter - minified
|
|
68
|
+
await esbuild.build({
|
|
69
|
+
entryPoints: [join(root, 'src', 'cdn', 'tw-conversion-engine.js')],
|
|
70
|
+
bundle: true,
|
|
71
|
+
format: 'iife',
|
|
72
|
+
outfile: join(distDir, 'senangstart-tw.min.js'),
|
|
73
|
+
minify: true,
|
|
74
|
+
banner: {
|
|
75
|
+
js: '/* SenangStart TW v0.2.0 | MIT */'
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
const twMinSize = statSync(join(distDir, 'senangstart-tw.min.js')).size;
|
|
80
|
+
console.log(`✓ Created senangstart-tw.min.js (${(twMinSize / 1024).toFixed(1)} KB)`);
|
|
81
|
+
|
|
82
|
+
// Copy to docs/public/assets for VitePress
|
|
83
|
+
const docsAssetsDir = join(root, 'docs', 'public', 'assets');
|
|
84
|
+
mkdirSync(docsAssetsDir, { recursive: true });
|
|
85
|
+
copyFileSync(
|
|
86
|
+
join(distDir, 'senangstart-css.min.js'),
|
|
87
|
+
join(docsAssetsDir, 'senangstart-css.min.js')
|
|
88
|
+
);
|
|
89
|
+
console.log(`✓ Copied to docs/public/assets/senangstart-css.min.js`);
|
|
90
|
+
|
|
52
91
|
console.log('\n📦 Dist build complete!');
|
|
53
92
|
console.log(' dist/senangstart-css.js');
|
|
54
93
|
console.log(' dist/senangstart-css.min.js');
|
|
94
|
+
console.log(' dist/senangstart-tw.js');
|
|
95
|
+
console.log(' dist/senangstart-tw.min.js');
|
|
96
|
+
|
|
@@ -583,6 +583,30 @@ function convertClass(twClass, options = {}) {
|
|
|
583
583
|
return { category: 'visual', value: prefix + "opacity:" + opacityMatch[1] };
|
|
584
584
|
}
|
|
585
585
|
|
|
586
|
+
// Gradient direction (bg-gradient-to-*)
|
|
587
|
+
const bgGradientMatch = baseClass.match(/^bg-gradient-to-(t|tr|r|br|b|bl|l|tl)$/);
|
|
588
|
+
if (bgGradientMatch) {
|
|
589
|
+
return { category: 'visual', value: prefix + "bg-image:gradient-to-" + bgGradientMatch[1] };
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
// Gradient from-* (starting color)
|
|
593
|
+
const fromMatch = baseClass.match(/^from-(.+)$/);
|
|
594
|
+
if (fromMatch) {
|
|
595
|
+
return { category: 'visual', value: prefix + "from:" + fromMatch[1] };
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
// Gradient via-* (middle color)
|
|
599
|
+
const viaMatch = baseClass.match(/^via-(.+)$/);
|
|
600
|
+
if (viaMatch) {
|
|
601
|
+
return { category: 'visual', value: prefix + "via:" + viaMatch[1] };
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
// Gradient to-* (ending color) - Note: must come after bg-gradient-to-*
|
|
605
|
+
const toMatch = baseClass.match(/^to-(.+)$/);
|
|
606
|
+
if (toMatch) {
|
|
607
|
+
return { category: 'visual', value: prefix + "to:" + toMatch[1] };
|
|
608
|
+
}
|
|
609
|
+
|
|
586
610
|
return null;
|
|
587
611
|
}
|
|
588
612
|
|
package/scripts/generate-docs.js
CHANGED
|
@@ -362,15 +362,17 @@ function compareDocs(options = {}) {
|
|
|
362
362
|
*/
|
|
363
363
|
function extractValuesFromTable(markdown) {
|
|
364
364
|
const values = [];
|
|
365
|
-
const
|
|
366
|
-
const matches = markdown.match(tableRegex) || [];
|
|
365
|
+
const lines = markdown.split('\n');
|
|
367
366
|
|
|
368
|
-
for (
|
|
369
|
-
|
|
370
|
-
|
|
367
|
+
for (let line of lines) {
|
|
368
|
+
line = line.trim();
|
|
369
|
+
// Skip non-table lines, header rows, and separator rows
|
|
370
|
+
if (!line.startsWith('|')) continue;
|
|
371
|
+
if (line.includes('Value') || line.includes('Nilai') || line.includes('Property') || line.includes('Properti')) continue;
|
|
372
|
+
if (line.includes('---')) continue;
|
|
371
373
|
|
|
372
|
-
// Extract first cell (value name)
|
|
373
|
-
const cellMatch =
|
|
374
|
+
// Extract first cell (value name) - look for backtick-quoted value
|
|
375
|
+
const cellMatch = line.match(/\|\s*`([^`]+)`/);
|
|
374
376
|
if (cellMatch) {
|
|
375
377
|
values.push(cellMatch[1]);
|
|
376
378
|
}
|
package/src/cdn/jit.js
CHANGED
|
@@ -25,6 +25,9 @@ import { tokenize, parseToken } from '../core/tokenizer-core.js';
|
|
|
25
25
|
theme: {
|
|
26
26
|
spacing: {
|
|
27
27
|
'none': '0px',
|
|
28
|
+
'thin': '1px',
|
|
29
|
+
'regular': '2px',
|
|
30
|
+
'thick': '3px',
|
|
28
31
|
'tiny': '4px',
|
|
29
32
|
'small': '8px',
|
|
30
33
|
'medium': '16px',
|
|
@@ -47,12 +50,34 @@ import { tokenize, parseToken } from '../core/tokenizer-core.js';
|
|
|
47
50
|
'giant': '0 25px 50px rgba(0,0,0,0.25)'
|
|
48
51
|
},
|
|
49
52
|
fontSize: {
|
|
50
|
-
'
|
|
51
|
-
'small':
|
|
52
|
-
'
|
|
53
|
-
'
|
|
54
|
-
'
|
|
55
|
-
'
|
|
53
|
+
'mini': '0.75rem', // 12px
|
|
54
|
+
'small': '0.875rem', // 14px
|
|
55
|
+
'base': '1rem', // 16px
|
|
56
|
+
'large': '1.125rem', // 18px
|
|
57
|
+
'big': '1.25rem', // 20px
|
|
58
|
+
'huge': '1.5rem', // 24px
|
|
59
|
+
'grand': '1.875rem', // 30px
|
|
60
|
+
'giant': '2.25rem', // 36px
|
|
61
|
+
'mount': '3rem', // 48px
|
|
62
|
+
'mega': '3.75rem', // 60px
|
|
63
|
+
'giga': '4.5rem', // 72px
|
|
64
|
+
'tera': '6rem', // 96px
|
|
65
|
+
'hero': '8rem' // 128px
|
|
66
|
+
},
|
|
67
|
+
fontSizeLineHeight: {
|
|
68
|
+
'mini': '1rem', // 16px
|
|
69
|
+
'small': '1.25rem', // 20px
|
|
70
|
+
'base': '1.5rem', // 24px
|
|
71
|
+
'large': '1.75rem', // 28px
|
|
72
|
+
'big': '1.75rem', // 28px
|
|
73
|
+
'huge': '2rem', // 32px
|
|
74
|
+
'grand': '2.25rem', // 36px
|
|
75
|
+
'giant': '2.5rem', // 40px
|
|
76
|
+
'mount': '1', // unitless 1
|
|
77
|
+
'mega': '1', // unitless 1
|
|
78
|
+
'giga': '1', // unitless 1
|
|
79
|
+
'tera': '1', // unitless 1
|
|
80
|
+
'hero': '1' // unitless 1
|
|
56
81
|
},
|
|
57
82
|
fontWeight: {
|
|
58
83
|
'normal': '400',
|
|
@@ -311,6 +336,13 @@ import { tokenize, parseToken } from '../core/tokenizer-core.js';
|
|
|
311
336
|
css += ` --font-${key}: ${value};\n`;
|
|
312
337
|
}
|
|
313
338
|
|
|
339
|
+
// Font size line-height (paired with font sizes)
|
|
340
|
+
if (theme.fontSizeLineHeight) {
|
|
341
|
+
for (const [key, value] of Object.entries(theme.fontSizeLineHeight)) {
|
|
342
|
+
css += ` --font-lh-${key}: ${value};\n`;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
|
|
314
346
|
// Font weight
|
|
315
347
|
for (const [key, value] of Object.entries(theme.fontWeight)) {
|
|
316
348
|
css += ` --fw-${key}: ${value};\n`;
|
|
@@ -383,6 +415,16 @@ import { tokenize, parseToken } from '../core/tokenizer-core.js';
|
|
|
383
415
|
css += ` --tw-text-${key}: ${value};\n`;
|
|
384
416
|
}
|
|
385
417
|
|
|
418
|
+
// Tailwind Line Height Scale (paired with font sizes)
|
|
419
|
+
const twLeading = {
|
|
420
|
+
'xs': '1rem', 'sm': '1.25rem', 'base': '1.5rem', 'lg': '1.75rem', 'xl': '1.75rem',
|
|
421
|
+
'2xl': '2rem', '3xl': '2.25rem', '4xl': '2.5rem', '5xl': '1',
|
|
422
|
+
'6xl': '1', '7xl': '1', '8xl': '1', '9xl': '1'
|
|
423
|
+
};
|
|
424
|
+
for (const [key, value] of Object.entries(twLeading)) {
|
|
425
|
+
css += ` --tw-leading-${key}: ${value};\n`;
|
|
426
|
+
}
|
|
427
|
+
|
|
386
428
|
// Tailwind Font Weight Scale
|
|
387
429
|
const twFontWeight = {
|
|
388
430
|
'thin': '100',
|
|
@@ -1174,15 +1216,20 @@ img, video {
|
|
|
1174
1216
|
},
|
|
1175
1217
|
'text-size': () => {
|
|
1176
1218
|
let cssValue;
|
|
1219
|
+
let lineHeightValue;
|
|
1177
1220
|
if (isArbitrary) {
|
|
1178
1221
|
cssValue = value;
|
|
1222
|
+
// No line-height for arbitrary values
|
|
1223
|
+
return `font-size: ${cssValue};`;
|
|
1179
1224
|
} else if (value.startsWith('tw-')) {
|
|
1180
1225
|
const twValue = value.slice(3);
|
|
1181
1226
|
cssValue = `var(--tw-text-${twValue})`;
|
|
1227
|
+
lineHeightValue = `var(--tw-leading-${twValue})`;
|
|
1182
1228
|
} else {
|
|
1183
1229
|
cssValue = `var(--font-${value})`;
|
|
1230
|
+
lineHeightValue = `var(--font-lh-${value})`;
|
|
1184
1231
|
}
|
|
1185
|
-
return `font-size: ${cssValue};`;
|
|
1232
|
+
return `font-size: ${cssValue}; line-height: ${lineHeightValue};`;
|
|
1186
1233
|
},
|
|
1187
1234
|
'font': () => {
|
|
1188
1235
|
// Check for font-family presets
|
|
@@ -1614,6 +1661,22 @@ img, video {
|
|
|
1614
1661
|
return `background-image: ${cssValue};`;
|
|
1615
1662
|
},
|
|
1616
1663
|
|
|
1664
|
+
// ============================================
|
|
1665
|
+
// GRADIENT COLOR STOPS
|
|
1666
|
+
// ============================================
|
|
1667
|
+
'from': () => {
|
|
1668
|
+
const color = isArbitrary ? value : `var(--c-${value})`;
|
|
1669
|
+
return `--tw-gradient-from: ${color}; --tw-gradient-to: transparent; --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);`;
|
|
1670
|
+
},
|
|
1671
|
+
'via': () => {
|
|
1672
|
+
const color = isArbitrary ? value : `var(--c-${value})`;
|
|
1673
|
+
return `--tw-gradient-via: ${color}; --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-via), var(--tw-gradient-to);`;
|
|
1674
|
+
},
|
|
1675
|
+
'to': () => {
|
|
1676
|
+
const color = isArbitrary ? value : `var(--c-${value})`;
|
|
1677
|
+
return `--tw-gradient-to: ${color};`;
|
|
1678
|
+
},
|
|
1679
|
+
|
|
1617
1680
|
// ============================================
|
|
1618
1681
|
// BACKDROP FILTER UTILITIES
|
|
1619
1682
|
// ============================================
|