@neatui/css 5.1.10 → 5.2.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neatui/css",
3
- "version": "5.1.10",
3
+ "version": "5.2.0",
4
4
  "description": "NeatUI constrained atomic design system — SCSS source for production themes, plus preview CSS with default light/dark",
5
5
  "main": "./neatui.scss",
6
6
  "sass": "./neatui.scss",
@@ -38,6 +38,7 @@
38
38
  "index.scss",
39
39
  "index.js",
40
40
  "GUIDE.md",
41
+ "CHANGELOG.md",
41
42
  "MIGRATION-4.0.md",
42
43
  "MIGRATION-4.1.md",
43
44
  "README.md"
@@ -40,6 +40,7 @@ function buildGrammarSpec(tokens) {
40
40
  expandResponsive: Boolean(def.expandResponsivePrefixes),
41
41
  values: collectManagedValues(tokens, def),
42
42
  intent: def.intent || '',
43
+ ...(def.responsivePrefixes ? { responsivePrefixes: def.responsivePrefixes } : {}),
43
44
  };
44
45
  }
45
46
 
@@ -89,14 +90,15 @@ function createValidatorFromSpec(spec) {
89
90
  expandResponsive: Boolean(def.expandResponsive),
90
91
  values: new Set(def.values || []),
91
92
  intent: def.intent || '',
93
+ responsivePrefixes: new Set(def.responsivePrefixes || spec.responsivePrefixes || ['mob', 'pad']),
92
94
  };
93
95
  }
94
96
 
95
- function stripResponsivePrefix(token) {
97
+ function stripResponsivePrefix(token, allowedPrefixes = responsivePrefixes) {
96
98
  const match = /^([a-z]+):(.+)$/i.exec(token);
97
99
  if (!match) return { prefix: null, base: token };
98
100
  const [, prefix, base] = match;
99
- if (!responsivePrefixes.has(prefix)) {
101
+ if (!allowedPrefixes.has(prefix)) {
100
102
  return { prefix: null, base: token, unknownPrefix: prefix };
101
103
  }
102
104
  return { prefix, base };
@@ -157,7 +159,7 @@ function createValidatorFromSpec(spec) {
157
159
  };
158
160
  }
159
161
 
160
- const { prefix, base, unknownPrefix } = stripResponsivePrefix(token);
162
+ const { prefix, base, unknownPrefix } = stripResponsivePrefix(token, def.responsivePrefixes);
161
163
  if (unknownPrefix) {
162
164
  return {
163
165
  kind: 'attr',
@@ -257,7 +259,7 @@ function createValidatorFromSpec(spec) {
257
259
  function looksLikeNeatuiClass(token) {
258
260
  const base = String(token || '').replace(/^(?:mob|pad):/, '');
259
261
  if (!base) return false;
260
- if (/^(?:co|bg|fs|lh|r|o|z)-/.test(base)) return true;
262
+ if (/^(?:co|bg|fs|lh|r|o|z|gap)-/.test(base)) return true;
261
263
  if (/^-?(?:n|nx|ny|nt|nr|nb|nl|m|mx|my|mt|mr|mb|ml)-/.test(base)) return true;
262
264
  if (/^(?:w|min-w|max-w|h|min-h|max-h)-/.test(base)) return true;
263
265
  // Common utility drift that should fail loudly
@@ -442,6 +442,21 @@
442
442
  "fit.modes",
443
443
  "fit.anchors"
444
444
  ]
445
+ },
446
+ "ui-grid": {
447
+ "intent": "等宽列数、九宫格对齐及纵向拉伸;间距使用共用的 gap-* class。",
448
+ "managed": true,
449
+ "valueGroups": [
450
+ "grid.columns",
451
+ "grid.coordinates",
452
+ "grid.behaviors"
453
+ ],
454
+ "expandResponsivePrefixes": true,
455
+ "responsivePrefixes": [
456
+ "mob",
457
+ "pad",
458
+ "dpc"
459
+ ]
445
460
  }
446
461
  },
447
462
  "fit": {
@@ -568,6 +583,192 @@
568
583
  "pattern": "^(?:h|min-h|max-h)-({grade})(?:\\*[sml])?$",
569
584
  "intent": "高度等级。",
570
585
  "example": "h-mm"
586
+ },
587
+ {
588
+ "id": "gap",
589
+ "pattern": "^gap-(no|xs|ss|sm|sl|ms|mm|ml|ls|lm|ll|xl)$",
590
+ "intent": "Flex / Grid 共用行列间距。",
591
+ "example": "gap-mm"
592
+ }
593
+ ],
594
+ "grid": {
595
+ "columns": [
596
+ {
597
+ "value": "1",
598
+ "intent": "1 列等宽网格。",
599
+ "group": "columns"
600
+ },
601
+ {
602
+ "value": "2",
603
+ "intent": "2 列等宽网格。",
604
+ "group": "columns"
605
+ },
606
+ {
607
+ "value": "3",
608
+ "intent": "3 列等宽网格。",
609
+ "group": "columns"
610
+ },
611
+ {
612
+ "value": "4",
613
+ "intent": "4 列等宽网格。",
614
+ "group": "columns"
615
+ },
616
+ {
617
+ "value": "5",
618
+ "intent": "5 列等宽网格。",
619
+ "group": "columns"
620
+ },
621
+ {
622
+ "value": "6",
623
+ "intent": "6 列等宽网格。",
624
+ "group": "columns"
625
+ },
626
+ {
627
+ "value": "7",
628
+ "intent": "7 列等宽网格。",
629
+ "group": "columns"
630
+ },
631
+ {
632
+ "value": "8",
633
+ "intent": "8 列等宽网格。",
634
+ "group": "columns"
635
+ },
636
+ {
637
+ "value": "9",
638
+ "intent": "9 列等宽网格。",
639
+ "group": "columns"
640
+ },
641
+ {
642
+ "value": "10",
643
+ "intent": "10 列等宽网格。",
644
+ "group": "columns"
645
+ },
646
+ {
647
+ "value": "11",
648
+ "intent": "11 列等宽网格。",
649
+ "group": "columns"
650
+ },
651
+ {
652
+ "value": "12",
653
+ "intent": "12 列等宽网格。",
654
+ "group": "columns"
655
+ }
656
+ ],
657
+ "coordinates": [
658
+ {
659
+ "value": "lt",
660
+ "intent": "网格子项在单元格内靠左、顶部对齐;整组行顶部对齐。",
661
+ "group": "alignment"
662
+ },
663
+ {
664
+ "value": "lm",
665
+ "intent": "网格子项在单元格内靠左、垂直居中;整组行垂直居中。",
666
+ "group": "alignment"
667
+ },
668
+ {
669
+ "value": "lb",
670
+ "intent": "网格子项在单元格内靠左、底部对齐;整组行底部对齐。",
671
+ "group": "alignment"
672
+ },
673
+ {
674
+ "value": "ct",
675
+ "intent": "网格子项在单元格内水平居中、顶部对齐;整组行顶部对齐。",
676
+ "group": "alignment"
677
+ },
678
+ {
679
+ "value": "cm",
680
+ "intent": "网格子项在单元格内水平居中、垂直居中;整组行垂直居中。",
681
+ "group": "alignment"
682
+ },
683
+ {
684
+ "value": "cb",
685
+ "intent": "网格子项在单元格内水平居中、底部对齐;整组行底部对齐。",
686
+ "group": "alignment"
687
+ },
688
+ {
689
+ "value": "rt",
690
+ "intent": "网格子项在单元格内靠右、顶部对齐;整组行顶部对齐。",
691
+ "group": "alignment"
692
+ },
693
+ {
694
+ "value": "rm",
695
+ "intent": "网格子项在单元格内靠右、垂直居中;整组行垂直居中。",
696
+ "group": "alignment"
697
+ },
698
+ {
699
+ "value": "rb",
700
+ "intent": "网格子项在单元格内靠右、底部对齐;整组行底部对齐。",
701
+ "group": "alignment"
702
+ }
703
+ ],
704
+ "behaviors": [
705
+ {
706
+ "value": "block",
707
+ "intent": "网格项纵向拉伸。",
708
+ "group": "behavior"
709
+ }
710
+ ]
711
+ },
712
+ "gap": [
713
+ {
714
+ "value": "no",
715
+ "cssValue": "0",
716
+ "intent": "Flex / Grid 共用 0 行列间距。"
717
+ },
718
+ {
719
+ "value": "xs",
720
+ "cssValue": "1px",
721
+ "intent": "Flex / Grid 共用 1px 行列间距。"
722
+ },
723
+ {
724
+ "value": "ss",
725
+ "cssValue": ".25em",
726
+ "intent": "Flex / Grid 共用 .25em 行列间距。"
727
+ },
728
+ {
729
+ "value": "sm",
730
+ "cssValue": ".5em",
731
+ "intent": "Flex / Grid 共用 .5em 行列间距。"
732
+ },
733
+ {
734
+ "value": "sl",
735
+ "cssValue": ".75em",
736
+ "intent": "Flex / Grid 共用 .75em 行列间距。"
737
+ },
738
+ {
739
+ "value": "ms",
740
+ "cssValue": "1em",
741
+ "intent": "Flex / Grid 共用 1em 行列间距。"
742
+ },
743
+ {
744
+ "value": "mm",
745
+ "cssValue": "1.5em",
746
+ "intent": "Flex / Grid 共用 1.5em 行列间距。"
747
+ },
748
+ {
749
+ "value": "ml",
750
+ "cssValue": "2em",
751
+ "intent": "Flex / Grid 共用 2em 行列间距。"
752
+ },
753
+ {
754
+ "value": "ls",
755
+ "cssValue": "2.5em",
756
+ "intent": "Flex / Grid 共用 2.5em 行列间距。"
757
+ },
758
+ {
759
+ "value": "lm",
760
+ "cssValue": "3em",
761
+ "intent": "Flex / Grid 共用 3em 行列间距。"
762
+ },
763
+ {
764
+ "value": "ll",
765
+ "cssValue": "4em",
766
+ "intent": "Flex / Grid 共用 4em 行列间距。"
767
+ },
768
+ {
769
+ "value": "xl",
770
+ "cssValue": "5em",
771
+ "intent": "Flex / Grid 共用 5em 行列间距。"
571
772
  }
572
773
  ]
573
774
  }