@bookklik/senangstart-css 0.2.7 → 0.2.8
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 +6656 -329
- package/dist/senangstart-css.min.js +1205 -120
- package/docs/public/assets/senangstart-css.min.js +1205 -120
- package/package.json +1 -1
- package/public/senangstart.css +1196 -0
- package/src/cdn/senangstart-engine.js +10 -352
- package/src/compiler/generators/css.js +12 -198
- package/src/compiler/tokenizer.js +0 -1
- package/src/core/tokenizer-core.js +3 -58
- package/src/definitions/layout.js +4 -0
- package/src/utils/common.js +27 -0
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
// Core module imports (bundled by esbuild)
|
|
14
14
|
import { BREAKPOINTS, STATES } from '../core/constants.js';
|
|
15
15
|
import { tokenize } from '../core/tokenizer-core.js';
|
|
16
|
+
import { generatePreflight } from '../compiler/generators/preflight.js';
|
|
17
|
+
import { sanitizeValue } from '../utils/common.js';
|
|
18
|
+
import { buildAllMaps } from '../definitions/index.js';
|
|
16
19
|
|
|
17
20
|
(function() {
|
|
18
21
|
'use strict';
|
|
@@ -497,271 +500,14 @@ import { tokenize } from '../core/tokenizer-core.js';
|
|
|
497
500
|
// PREFLIGHT GENERATOR
|
|
498
501
|
// ============================================
|
|
499
502
|
|
|
500
|
-
|
|
501
|
-
return `/* SenangStart Preflight - Opinionated Base Styles */
|
|
502
|
-
*,
|
|
503
|
-
::before,
|
|
504
|
-
::after {
|
|
505
|
-
box-sizing: border-box;
|
|
506
|
-
border-width: 0;
|
|
507
|
-
border-style: solid;
|
|
508
|
-
border-color: currentColor;
|
|
509
|
-
}
|
|
510
|
-
|
|
511
|
-
html, :host {
|
|
512
|
-
line-height: 1.5;
|
|
513
|
-
-webkit-text-size-adjust: 100%;
|
|
514
|
-
-moz-tab-size: 4;
|
|
515
|
-
tab-size: 4;
|
|
516
|
-
font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
517
|
-
font-feature-settings: normal;
|
|
518
|
-
font-variation-settings: normal;
|
|
519
|
-
-webkit-tap-highlight-color: transparent;
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
body {
|
|
523
|
-
margin: 0;
|
|
524
|
-
line-height: inherit;
|
|
525
|
-
}
|
|
526
|
-
|
|
527
|
-
hr {
|
|
528
|
-
height: 0;
|
|
529
|
-
color: inherit;
|
|
530
|
-
border-top-width: 1px;
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
h1, h2, h3, h4, h5, h6 {
|
|
534
|
-
font-size: inherit;
|
|
535
|
-
font-weight: inherit;
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
a {
|
|
539
|
-
color: inherit;
|
|
540
|
-
text-decoration: inherit;
|
|
541
|
-
}
|
|
542
|
-
|
|
543
|
-
b, strong {
|
|
544
|
-
font-weight: bolder;
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
code, kbd, samp, pre {
|
|
548
|
-
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
549
|
-
font-size: 1em;
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
small {
|
|
553
|
-
font-size: 80%;
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
sub, sup {
|
|
557
|
-
font-size: 75%;
|
|
558
|
-
line-height: 0;
|
|
559
|
-
position: relative;
|
|
560
|
-
vertical-align: baseline;
|
|
561
|
-
}
|
|
562
|
-
|
|
563
|
-
sub { bottom: -0.25em; }
|
|
564
|
-
sup { top: -0.5em; }
|
|
565
|
-
|
|
566
|
-
table {
|
|
567
|
-
text-indent: 0;
|
|
568
|
-
border-color: inherit;
|
|
569
|
-
border-collapse: collapse;
|
|
570
|
-
}
|
|
571
|
-
|
|
572
|
-
button, input, optgroup, select, textarea {
|
|
573
|
-
font-family: inherit;
|
|
574
|
-
font-size: 100%;
|
|
575
|
-
font-weight: inherit;
|
|
576
|
-
line-height: inherit;
|
|
577
|
-
color: inherit;
|
|
578
|
-
margin: 0;
|
|
579
|
-
padding: 0;
|
|
580
|
-
}
|
|
581
|
-
|
|
582
|
-
button, select {
|
|
583
|
-
text-transform: none;
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
button,
|
|
587
|
-
input:where([type='button']),
|
|
588
|
-
input:where([type='reset']),
|
|
589
|
-
input:where([type='submit']) {
|
|
590
|
-
-webkit-appearance: button;
|
|
591
|
-
background-color: transparent;
|
|
592
|
-
background-image: none;
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
progress {
|
|
596
|
-
vertical-align: baseline;
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
[type='search'] {
|
|
600
|
-
-webkit-appearance: textfield;
|
|
601
|
-
outline-offset: -2px;
|
|
602
|
-
}
|
|
603
|
-
|
|
604
|
-
summary {
|
|
605
|
-
display: list-item;
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
blockquote, dl, dd, h1, h2, h3, h4, h5, h6, hr, figure, p, pre {
|
|
609
|
-
margin: 0;
|
|
610
|
-
}
|
|
611
|
-
|
|
612
|
-
fieldset { margin: 0; padding: 0; }
|
|
613
|
-
legend { padding: 0; }
|
|
614
|
-
|
|
615
|
-
ol, ul, menu {
|
|
616
|
-
list-style: none;
|
|
617
|
-
margin: 0;
|
|
618
|
-
padding: 0;
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
dialog { padding: 0; }
|
|
622
|
-
|
|
623
|
-
textarea { resize: vertical; }
|
|
624
|
-
|
|
625
|
-
input::placeholder, textarea::placeholder {
|
|
626
|
-
opacity: 1;
|
|
627
|
-
color: #9ca3af;
|
|
628
|
-
}
|
|
629
|
-
|
|
630
|
-
button, [role="button"] {
|
|
631
|
-
cursor: pointer;
|
|
632
|
-
}
|
|
633
|
-
|
|
634
|
-
:disabled {
|
|
635
|
-
cursor: default;
|
|
636
|
-
}
|
|
637
|
-
|
|
638
|
-
img, svg, video, canvas, audio, iframe, embed, object {
|
|
639
|
-
display: block;
|
|
640
|
-
vertical-align: middle;
|
|
641
|
-
}
|
|
642
|
-
|
|
643
|
-
img, video {
|
|
644
|
-
max-width: 100%;
|
|
645
|
-
height: auto;
|
|
646
|
-
}
|
|
647
|
-
|
|
648
|
-
[hidden] {
|
|
649
|
-
display: none;
|
|
650
|
-
}
|
|
651
|
-
|
|
652
|
-
/* Keyframe Animations */
|
|
653
|
-
@keyframes spin {
|
|
654
|
-
to { transform: rotate(360deg); }
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
@keyframes ping {
|
|
658
|
-
75%, 100% {
|
|
659
|
-
transform: scale(2);
|
|
660
|
-
opacity: 0;
|
|
661
|
-
}
|
|
662
|
-
}
|
|
663
|
-
|
|
664
|
-
@keyframes pulse {
|
|
665
|
-
50% { opacity: .5; }
|
|
666
|
-
}
|
|
667
|
-
|
|
668
|
-
@keyframes bounce {
|
|
669
|
-
0%, 100% {
|
|
670
|
-
transform: translateY(-25%);
|
|
671
|
-
animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
|
|
672
|
-
}
|
|
673
|
-
50% {
|
|
674
|
-
transform: none;
|
|
675
|
-
animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
|
|
676
|
-
}
|
|
677
|
-
}
|
|
678
|
-
|
|
679
|
-
`;
|
|
680
|
-
}
|
|
503
|
+
// Preflight generator imported from compiler/generators/preflight.js
|
|
681
504
|
|
|
682
505
|
// ============================================
|
|
683
506
|
// LAYOUT KEYWORDS
|
|
684
507
|
// ============================================
|
|
685
508
|
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
'flex': 'display: flex;',
|
|
689
|
-
'grid': 'display: grid;',
|
|
690
|
-
'inline-flex': 'display: inline-flex;',
|
|
691
|
-
'inline-grid': 'display: inline-grid;',
|
|
692
|
-
'block': 'display: block;',
|
|
693
|
-
'inline': 'display: inline-block;',
|
|
694
|
-
'hidden': 'display: none;',
|
|
695
|
-
|
|
696
|
-
// Flex Direction
|
|
697
|
-
'row': 'flex-direction: row;',
|
|
698
|
-
'col': 'flex-direction: column;',
|
|
699
|
-
'row-reverse': 'flex-direction: row-reverse;',
|
|
700
|
-
'col-reverse': 'flex-direction: column-reverse;',
|
|
701
|
-
|
|
702
|
-
// Flex Wrap
|
|
703
|
-
'wrap': 'flex-wrap: wrap;',
|
|
704
|
-
'nowrap': 'flex-wrap: nowrap;',
|
|
705
|
-
'wrap-reverse': 'flex-wrap: wrap-reverse;',
|
|
706
|
-
|
|
707
|
-
// Flex Item
|
|
708
|
-
'grow': 'flex-grow: 1;',
|
|
709
|
-
'grow-0': 'flex-grow: 0;',
|
|
710
|
-
'shrink': 'flex-shrink: 1;',
|
|
711
|
-
'shrink-0': 'flex-shrink: 0;',
|
|
712
|
-
|
|
713
|
-
// Grid Auto Flow
|
|
714
|
-
'grid-flow-row': 'grid-auto-flow: row;',
|
|
715
|
-
'grid-flow-col': 'grid-auto-flow: column;',
|
|
716
|
-
'grid-flow-dense': 'grid-auto-flow: dense;',
|
|
717
|
-
'grid-flow-row-dense': 'grid-auto-flow: row dense;',
|
|
718
|
-
'grid-flow-col-dense': 'grid-auto-flow: column dense;',
|
|
719
|
-
|
|
720
|
-
// Shorthand Alignment (backwards compat - simple keywords)
|
|
721
|
-
'center': 'justify-content: center; align-items: center;',
|
|
722
|
-
'start': 'justify-content: flex-start; align-items: flex-start;',
|
|
723
|
-
'end': 'justify-content: flex-end; align-items: flex-end;',
|
|
724
|
-
'between': 'justify-content: space-between;',
|
|
725
|
-
'around': 'justify-content: space-around;',
|
|
726
|
-
'evenly': 'justify-content: space-evenly;',
|
|
727
|
-
|
|
728
|
-
// Position
|
|
729
|
-
'absolute': 'position: absolute;',
|
|
730
|
-
'relative': 'position: relative;',
|
|
731
|
-
'fixed': 'position: fixed;',
|
|
732
|
-
'sticky': 'position: sticky;',
|
|
733
|
-
'static': 'position: static;',
|
|
734
|
-
|
|
735
|
-
// Visibility
|
|
736
|
-
'visible': 'visibility: visible;',
|
|
737
|
-
'invisible': 'visibility: hidden;',
|
|
738
|
-
|
|
739
|
-
// Isolation
|
|
740
|
-
'isolate': 'isolation: isolate;',
|
|
741
|
-
'isolate-auto': 'isolation: auto;',
|
|
742
|
-
|
|
743
|
-
// Box Sizing
|
|
744
|
-
'box-border': 'box-sizing: border-box;',
|
|
745
|
-
'box-content': 'box-sizing: content-box;',
|
|
746
|
-
|
|
747
|
-
// Float
|
|
748
|
-
'float-left': 'float: left;',
|
|
749
|
-
'float-right': 'float: right;',
|
|
750
|
-
'float-none': 'float: none;',
|
|
751
|
-
|
|
752
|
-
// Clear
|
|
753
|
-
'clear-left': 'clear: left;',
|
|
754
|
-
'clear-right': 'clear: right;',
|
|
755
|
-
'clear-both': 'clear: both;',
|
|
756
|
-
'clear-none': 'clear: none;',
|
|
757
|
-
|
|
758
|
-
// Container
|
|
759
|
-
'container': 'width: 100%; margin-left: auto; margin-right: auto;',
|
|
760
|
-
|
|
761
|
-
// Table Border Collapse
|
|
762
|
-
'border-collapse': 'border-collapse: collapse;',
|
|
763
|
-
'border-separate': 'border-collapse: separate;'
|
|
764
|
-
};
|
|
509
|
+
// Initialize maps from definitions - Single Source of Truth
|
|
510
|
+
const { layoutMap: layoutKeywords, typographyKeywords } = buildAllMaps();
|
|
765
511
|
|
|
766
512
|
// ============================================
|
|
767
513
|
// RULE GENERATORS
|
|
@@ -1185,98 +931,10 @@ img, video {
|
|
|
1185
931
|
const { property, value, isArbitrary } = token;
|
|
1186
932
|
|
|
1187
933
|
// Static typography keywords
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
// Font Stretch
|
|
1194
|
-
'font-stretch-condensed': 'font-stretch: condensed;',
|
|
1195
|
-
'font-stretch-expanded': 'font-stretch: expanded;',
|
|
1196
|
-
'font-stretch-normal': 'font-stretch: normal;',
|
|
1197
|
-
|
|
1198
|
-
// Font Smoothing
|
|
1199
|
-
'antialiased': '-webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;',
|
|
1200
|
-
'subpixel-antialiased': '-webkit-font-smoothing: auto; -moz-osx-font-smoothing: auto;',
|
|
1201
|
-
|
|
1202
|
-
// Font Variant Numeric
|
|
1203
|
-
'normal-nums': 'font-variant-numeric: normal;',
|
|
1204
|
-
'ordinal': 'font-variant-numeric: ordinal;',
|
|
1205
|
-
'slashed-zero': 'font-variant-numeric: slashed-zero;',
|
|
1206
|
-
'lining-nums': 'font-variant-numeric: lining-nums;',
|
|
1207
|
-
'oldstyle-nums': 'font-variant-numeric: oldstyle-nums;',
|
|
1208
|
-
'proportional-nums': 'font-variant-numeric: proportional-nums;',
|
|
1209
|
-
'tabular-nums': 'font-variant-numeric: tabular-nums;',
|
|
1210
|
-
|
|
1211
|
-
// Text Transform
|
|
1212
|
-
'uppercase': 'text-transform: uppercase;',
|
|
1213
|
-
'lowercase': 'text-transform: lowercase;',
|
|
1214
|
-
'capitalize': 'text-transform: capitalize;',
|
|
1215
|
-
'normal-case': 'text-transform: none;',
|
|
1216
|
-
|
|
1217
|
-
// Text Decoration Line
|
|
1218
|
-
'underline': 'text-decoration-line: underline;',
|
|
1219
|
-
'overline': 'text-decoration-line: overline;',
|
|
1220
|
-
'line-through': 'text-decoration-line: line-through;',
|
|
1221
|
-
'no-underline': 'text-decoration-line: none;',
|
|
1222
|
-
|
|
1223
|
-
// Text Decoration Style
|
|
1224
|
-
'decoration-solid': 'text-decoration-style: solid;',
|
|
1225
|
-
'decoration-double': 'text-decoration-style: double;',
|
|
1226
|
-
'decoration-dotted': 'text-decoration-style: dotted;',
|
|
1227
|
-
'decoration-dashed': 'text-decoration-style: dashed;',
|
|
1228
|
-
'decoration-wavy': 'text-decoration-style: wavy;',
|
|
1229
|
-
|
|
1230
|
-
// Text Overflow
|
|
1231
|
-
'truncate': 'overflow: hidden; text-overflow: ellipsis; white-space: nowrap;',
|
|
1232
|
-
'text-ellipsis': 'text-overflow: ellipsis;',
|
|
1233
|
-
'text-clip': 'text-overflow: clip;',
|
|
1234
|
-
|
|
1235
|
-
// Text Wrap
|
|
1236
|
-
'text-wrap': 'text-wrap: wrap;',
|
|
1237
|
-
'text-nowrap': 'text-wrap: nowrap;',
|
|
1238
|
-
'text-balance': 'text-wrap: balance;',
|
|
1239
|
-
'text-pretty': 'text-wrap: pretty;',
|
|
1240
|
-
|
|
1241
|
-
// Whitespace
|
|
1242
|
-
'whitespace-normal': 'white-space: normal;',
|
|
1243
|
-
'whitespace-nowrap': 'white-space: nowrap;',
|
|
1244
|
-
'whitespace-pre': 'white-space: pre;',
|
|
1245
|
-
'whitespace-pre-line': 'white-space: pre-line;',
|
|
1246
|
-
'whitespace-pre-wrap': 'white-space: pre-wrap;',
|
|
1247
|
-
'whitespace-break-spaces': 'white-space: break-spaces;',
|
|
1248
|
-
|
|
1249
|
-
// Word Break
|
|
1250
|
-
'break-normal': 'overflow-wrap: normal; word-break: normal;',
|
|
1251
|
-
'break-words': 'overflow-wrap: break-word;',
|
|
1252
|
-
'break-all': 'word-break: break-all;',
|
|
1253
|
-
'break-keep': 'word-break: keep-all;',
|
|
1254
|
-
|
|
1255
|
-
// Hyphens
|
|
1256
|
-
'hyphens-none': 'hyphens: none;',
|
|
1257
|
-
'hyphens-manual': 'hyphens: manual;',
|
|
1258
|
-
'hyphens-auto': 'hyphens: auto;',
|
|
1259
|
-
|
|
1260
|
-
// Vertical Align
|
|
1261
|
-
'align-baseline': 'vertical-align: baseline;',
|
|
1262
|
-
'align-top': 'vertical-align: top;',
|
|
1263
|
-
'align-middle': 'vertical-align: middle;',
|
|
1264
|
-
'align-bottom': 'vertical-align: bottom;',
|
|
1265
|
-
'align-text-top': 'vertical-align: text-top;',
|
|
1266
|
-
'align-text-bottom': 'vertical-align: text-bottom;',
|
|
1267
|
-
'align-sub': 'vertical-align: sub;',
|
|
1268
|
-
'align-super': 'vertical-align: super;',
|
|
1269
|
-
|
|
1270
|
-
// List Style Type
|
|
1271
|
-
'list-none': 'list-style-type: none;',
|
|
1272
|
-
'list-disc': 'list-style-type: disc;',
|
|
1273
|
-
'list-decimal': 'list-style-type: decimal;',
|
|
1274
|
-
'list-square': 'list-style-type: square;',
|
|
1275
|
-
|
|
1276
|
-
// List Style Position
|
|
1277
|
-
'list-inside': 'list-style-position: inside;',
|
|
1278
|
-
'list-outside': 'list-style-position: outside;'
|
|
1279
|
-
};
|
|
934
|
+
// Static typography keywords check (using imported map)
|
|
935
|
+
if (typographyKeywords[property]) {
|
|
936
|
+
return typographyKeywords[property];
|
|
937
|
+
}
|
|
1280
938
|
|
|
1281
939
|
// Check static keywords first
|
|
1282
940
|
if (typographyKeywords[property]) {
|
|
@@ -4,22 +4,15 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { generatePreflight } from './preflight.js';
|
|
7
|
+
import { sanitizeValue } from '../../utils/common.js';
|
|
8
|
+
import { buildAllMaps } from '../../definitions/index.js';
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
*/
|
|
10
|
+
// Initialize maps from definitions - Single Source of Truth
|
|
11
|
+
const { layoutMap, typographyKeywords } = buildAllMaps();
|
|
12
|
+
|
|
13
|
+
// Helper to sanitize arbitrary values using common utility
|
|
13
14
|
function sanitizeArbitraryValue(value) {
|
|
14
|
-
|
|
15
|
-
return '';
|
|
16
|
-
}
|
|
17
|
-
// Remove potentially dangerous characters that could break CSS syntax
|
|
18
|
-
const dangerousChars = /[;}{]/g;
|
|
19
|
-
if (dangerousChars.test(value)) {
|
|
20
|
-
return value.replace(dangerousChars, '_');
|
|
21
|
-
}
|
|
22
|
-
return value;
|
|
15
|
+
return sanitizeValue(value);
|
|
23
16
|
}
|
|
24
17
|
|
|
25
18
|
/**
|
|
@@ -88,8 +81,9 @@ export function generateCSSVariables(config) {
|
|
|
88
81
|
'60': '15rem', '64': '16rem', '72': '18rem', '80': '20rem', '96': '24rem'
|
|
89
82
|
};
|
|
90
83
|
for (const [key, value] of Object.entries(twSpacing)) {
|
|
91
|
-
css += ` --tw-${key}: ${value};\n`;
|
|
84
|
+
css += ` --tw-${key.replace(/\./g, '\\\\.')}: ${value};\n`;
|
|
92
85
|
}
|
|
86
|
+
|
|
93
87
|
|
|
94
88
|
// Tailwind Border Radius Scale
|
|
95
89
|
const twRadius = {
|
|
@@ -161,95 +155,8 @@ export function generateCSSVariables(config) {
|
|
|
161
155
|
function generateLayoutRule(token, config) {
|
|
162
156
|
const { property, value, isArbitrary } = token;
|
|
163
157
|
|
|
164
|
-
const layoutMap = {
|
|
165
|
-
// Display
|
|
166
|
-
'flex': 'display: flex;',
|
|
167
|
-
'grid': 'display: grid;',
|
|
168
|
-
'inline-flex': 'display: inline-flex;',
|
|
169
|
-
'inline-grid': 'display: inline-grid;',
|
|
170
|
-
'block': 'display: block;',
|
|
171
|
-
'inline': 'display: inline-block;',
|
|
172
|
-
'hidden': 'display: none;',
|
|
173
|
-
|
|
174
|
-
// Flex Direction
|
|
175
|
-
'row': 'flex-direction: row;',
|
|
176
|
-
'col': 'flex-direction: column;',
|
|
177
|
-
'row-reverse': 'flex-direction: row-reverse;',
|
|
178
|
-
'col-reverse': 'flex-direction: column-reverse;',
|
|
179
|
-
|
|
180
|
-
// Flex Wrap
|
|
181
|
-
'wrap': 'flex-wrap: wrap;',
|
|
182
|
-
'nowrap': 'flex-wrap: nowrap;',
|
|
183
|
-
'wrap-reverse': 'flex-wrap: wrap-reverse;',
|
|
184
|
-
|
|
185
|
-
// Flex Item
|
|
186
|
-
'grow': 'flex-grow: 1;',
|
|
187
|
-
'grow-0': 'flex-grow: 0;',
|
|
188
|
-
'shrink': 'flex-shrink: 1;',
|
|
189
|
-
'shrink-0': 'flex-shrink: 0;',
|
|
190
|
-
|
|
191
|
-
// Grid Auto Flow
|
|
192
|
-
'grid-flow-row': 'grid-auto-flow: row;',
|
|
193
|
-
'grid-flow-col': 'grid-auto-flow: column;',
|
|
194
|
-
'grid-flow-dense': 'grid-auto-flow: dense;',
|
|
195
|
-
'grid-flow-row-dense': 'grid-auto-flow: row dense;',
|
|
196
|
-
'grid-flow-col-dense': 'grid-auto-flow: column dense;',
|
|
197
|
-
|
|
198
|
-
// Shorthand Alignment (backwards compat - simple keywords)
|
|
199
|
-
'center': 'justify-content: center; align-items: center;',
|
|
200
|
-
'start': 'justify-content: flex-start; align-items: flex-start;',
|
|
201
|
-
'end': 'justify-content: flex-end; align-items: flex-end;',
|
|
202
|
-
'between': 'justify-content: space-between;',
|
|
203
|
-
'around': 'justify-content: space-around;',
|
|
204
|
-
'evenly': 'justify-content: space-evenly;',
|
|
205
|
-
|
|
206
|
-
// Position
|
|
207
|
-
'absolute': 'position: absolute;',
|
|
208
|
-
'relative': 'position: relative;',
|
|
209
|
-
'fixed': 'position: fixed;',
|
|
210
|
-
'sticky': 'position: sticky;',
|
|
211
|
-
'static': 'position: static;',
|
|
212
|
-
|
|
213
|
-
// Visibility
|
|
214
|
-
'visible': 'visibility: visible;',
|
|
215
|
-
'invisible': 'visibility: hidden;',
|
|
216
|
-
|
|
217
|
-
// Isolation
|
|
218
|
-
'isolate': 'isolation: isolate;',
|
|
219
|
-
'isolate-auto': 'isolation: auto;',
|
|
220
|
-
|
|
221
|
-
// Box Sizing
|
|
222
|
-
'box-border': 'box-sizing: border-box;',
|
|
223
|
-
'box-content': 'box-sizing: content-box;',
|
|
224
|
-
|
|
225
|
-
// Float
|
|
226
|
-
'float-left': 'float: left;',
|
|
227
|
-
'float-right': 'float: right;',
|
|
228
|
-
'float-none': 'float: none;',
|
|
229
|
-
|
|
230
|
-
// Clear
|
|
231
|
-
'clear-left': 'clear: left;',
|
|
232
|
-
'clear-right': 'clear: right;',
|
|
233
|
-
'clear-both': 'clear: both;',
|
|
234
|
-
'clear-none': 'clear: none;',
|
|
235
|
-
|
|
236
|
-
// Table - Border Collapse
|
|
237
|
-
'border-collapse': 'border-collapse: collapse;',
|
|
238
|
-
'border-separate': 'border-collapse: separate;',
|
|
239
|
-
|
|
240
|
-
// Table - Table Layout
|
|
241
|
-
'table-auto': 'table-layout: auto;',
|
|
242
|
-
'table-fixed': 'table-layout: fixed;',
|
|
243
|
-
|
|
244
|
-
// Table - Caption Side
|
|
245
|
-
'caption-top': 'caption-side: top;',
|
|
246
|
-
'caption-bottom': 'caption-side: bottom;',
|
|
247
|
-
|
|
248
|
-
// Container
|
|
249
|
-
'container': 'width: 100%; margin-left: auto; margin-right: auto;'
|
|
250
|
-
};
|
|
251
|
-
|
|
252
158
|
// Check for simple layout keywords first (property === value means it's a keyword like 'flex', 'grid', etc.)
|
|
159
|
+
// layoutMap is now imported from definitions
|
|
253
160
|
if (property === value && layoutMap[property]) {
|
|
254
161
|
return layoutMap[property];
|
|
255
162
|
}
|
|
@@ -598,7 +505,7 @@ function generateSpaceRule(token, config) {
|
|
|
598
505
|
let baseValue;
|
|
599
506
|
if (cleanValue.startsWith('tw-')) {
|
|
600
507
|
const twValue = cleanValue.slice(3); // Remove 'tw-' prefix
|
|
601
|
-
baseValue = `var(--tw-${twValue})`;
|
|
508
|
+
baseValue = `var(--tw-${twValue.replace(/\./g, '\\\\.')})`;
|
|
602
509
|
} else {
|
|
603
510
|
baseValue = `var(--s-${cleanValue})`;
|
|
604
511
|
}
|
|
@@ -667,100 +574,7 @@ function generateVisualRule(token, config) {
|
|
|
667
574
|
const { property, value, isArbitrary } = token;
|
|
668
575
|
|
|
669
576
|
// Static typography keywords
|
|
670
|
-
|
|
671
|
-
// Font Style
|
|
672
|
-
'italic': 'font-style: italic;',
|
|
673
|
-
'not-italic': 'font-style: normal;',
|
|
674
|
-
|
|
675
|
-
// Font Stretch
|
|
676
|
-
'font-stretch-condensed': 'font-stretch: condensed;',
|
|
677
|
-
'font-stretch-expanded': 'font-stretch: expanded;',
|
|
678
|
-
'font-stretch-normal': 'font-stretch: normal;',
|
|
679
|
-
|
|
680
|
-
// Font Smoothing
|
|
681
|
-
'antialiased': '-webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;',
|
|
682
|
-
'subpixel-antialiased': '-webkit-font-smoothing: auto; -moz-osx-font-smoothing: auto;',
|
|
683
|
-
|
|
684
|
-
// Font Variant Numeric
|
|
685
|
-
'normal-nums': 'font-variant-numeric: normal;',
|
|
686
|
-
'ordinal': 'font-variant-numeric: ordinal;',
|
|
687
|
-
'slashed-zero': 'font-variant-numeric: slashed-zero;',
|
|
688
|
-
'lining-nums': 'font-variant-numeric: lining-nums;',
|
|
689
|
-
'oldstyle-nums': 'font-variant-numeric: oldstyle-nums;',
|
|
690
|
-
'proportional-nums': 'font-variant-numeric: proportional-nums;',
|
|
691
|
-
'tabular-nums': 'font-variant-numeric: tabular-nums;',
|
|
692
|
-
|
|
693
|
-
// Text Transform
|
|
694
|
-
'uppercase': 'text-transform: uppercase;',
|
|
695
|
-
'lowercase': 'text-transform: lowercase;',
|
|
696
|
-
'capitalize': 'text-transform: capitalize;',
|
|
697
|
-
'normal-case': 'text-transform: none;',
|
|
698
|
-
|
|
699
|
-
// Text Decoration Line
|
|
700
|
-
'underline': 'text-decoration-line: underline;',
|
|
701
|
-
'overline': 'text-decoration-line: overline;',
|
|
702
|
-
'line-through': 'text-decoration-line: line-through;',
|
|
703
|
-
'no-underline': 'text-decoration-line: none;',
|
|
704
|
-
|
|
705
|
-
// Text Decoration Style
|
|
706
|
-
'decoration-solid': 'text-decoration-style: solid;',
|
|
707
|
-
'decoration-double': 'text-decoration-style: double;',
|
|
708
|
-
'decoration-dotted': 'text-decoration-style: dotted;',
|
|
709
|
-
'decoration-dashed': 'text-decoration-style: dashed;',
|
|
710
|
-
'decoration-wavy': 'text-decoration-style: wavy;',
|
|
711
|
-
|
|
712
|
-
// Text Overflow
|
|
713
|
-
'truncate': 'overflow: hidden; text-overflow: ellipsis; white-space: nowrap;',
|
|
714
|
-
'text-ellipsis': 'text-overflow: ellipsis;',
|
|
715
|
-
'text-clip': 'text-overflow: clip;',
|
|
716
|
-
|
|
717
|
-
// Text Wrap
|
|
718
|
-
'text-wrap': 'text-wrap: wrap;',
|
|
719
|
-
'text-nowrap': 'text-wrap: nowrap;',
|
|
720
|
-
'text-balance': 'text-wrap: balance;',
|
|
721
|
-
'text-pretty': 'text-wrap: pretty;',
|
|
722
|
-
|
|
723
|
-
// Whitespace
|
|
724
|
-
'whitespace-normal': 'white-space: normal;',
|
|
725
|
-
'whitespace-nowrap': 'white-space: nowrap;',
|
|
726
|
-
'whitespace-pre': 'white-space: pre;',
|
|
727
|
-
'whitespace-pre-line': 'white-space: pre-line;',
|
|
728
|
-
'whitespace-pre-wrap': 'white-space: pre-wrap;',
|
|
729
|
-
'whitespace-break-spaces': 'white-space: break-spaces;',
|
|
730
|
-
|
|
731
|
-
// Word Break
|
|
732
|
-
'break-normal': 'overflow-wrap: normal; word-break: normal;',
|
|
733
|
-
'break-words': 'overflow-wrap: break-word;',
|
|
734
|
-
'break-all': 'word-break: break-all;',
|
|
735
|
-
'break-keep': 'word-break: keep-all;',
|
|
736
|
-
|
|
737
|
-
// Hyphens
|
|
738
|
-
'hyphens-none': 'hyphens: none;',
|
|
739
|
-
'hyphens-manual': 'hyphens: manual;',
|
|
740
|
-
'hyphens-auto': 'hyphens: auto;',
|
|
741
|
-
|
|
742
|
-
// Vertical Align
|
|
743
|
-
'align-baseline': 'vertical-align: baseline;',
|
|
744
|
-
'align-top': 'vertical-align: top;',
|
|
745
|
-
'align-middle': 'vertical-align: middle;',
|
|
746
|
-
'align-bottom': 'vertical-align: bottom;',
|
|
747
|
-
'align-text-top': 'vertical-align: text-top;',
|
|
748
|
-
'align-text-bottom': 'vertical-align: text-bottom;',
|
|
749
|
-
'align-sub': 'vertical-align: sub;',
|
|
750
|
-
'align-super': 'vertical-align: super;',
|
|
751
|
-
|
|
752
|
-
// List Style Type
|
|
753
|
-
'list-none': 'list-style-type: none;',
|
|
754
|
-
'list-disc': 'list-style-type: disc;',
|
|
755
|
-
'list-decimal': 'list-style-type: decimal;',
|
|
756
|
-
'list-square': 'list-style-type: square;',
|
|
757
|
-
|
|
758
|
-
// List Style Position
|
|
759
|
-
'list-inside': 'list-style-position: inside;',
|
|
760
|
-
'list-outside': 'list-style-position: outside;'
|
|
761
|
-
};
|
|
762
|
-
|
|
763
|
-
// Check static keywords first
|
|
577
|
+
// Check static keywords first (imported from definitions)
|
|
764
578
|
if (typographyKeywords[property]) {
|
|
765
579
|
return typographyKeywords[property];
|
|
766
580
|
}
|