@neuctra/ui-mcp 0.4.7 → 0.4.9
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/data/components.json +40 -40
- package/data/design-rules.json +41 -9
- package/data/layouts.json +53 -16
- package/data/theme.json +11 -8
- package/data/variants.json +1113 -0
- package/package.json +3 -1
- package/src/load-data.mjs +2 -1
- package/src/tools/neuctra-ui-page-builder/index.mjs +26 -2
- package/src/tools/neuctra-ui-page-builder/variants.mjs +102 -0
package/data/layouts.json
CHANGED
|
@@ -66,7 +66,8 @@
|
|
|
66
66
|
49,
|
|
67
67
|
50,
|
|
68
68
|
51,
|
|
69
|
-
59
|
|
69
|
+
59,
|
|
70
|
+
64
|
|
70
71
|
],
|
|
71
72
|
"seoRuleIds": [
|
|
72
73
|
"technical",
|
|
@@ -276,7 +277,8 @@
|
|
|
276
277
|
48,
|
|
277
278
|
49,
|
|
278
279
|
53,
|
|
279
|
-
59
|
|
280
|
+
59,
|
|
281
|
+
64
|
|
280
282
|
],
|
|
281
283
|
"seoRuleIds": [
|
|
282
284
|
"technical",
|
|
@@ -483,7 +485,9 @@
|
|
|
483
485
|
55,
|
|
484
486
|
57,
|
|
485
487
|
58,
|
|
486
|
-
59
|
|
488
|
+
59,
|
|
489
|
+
65,
|
|
490
|
+
66
|
|
487
491
|
],
|
|
488
492
|
"seoRuleIds": [
|
|
489
493
|
"technical",
|
|
@@ -604,6 +608,8 @@
|
|
|
604
608
|
2,
|
|
605
609
|
3,
|
|
606
610
|
13,
|
|
611
|
+
15,
|
|
612
|
+
16,
|
|
607
613
|
24,
|
|
608
614
|
35,
|
|
609
615
|
43,
|
|
@@ -615,7 +621,9 @@
|
|
|
615
621
|
55,
|
|
616
622
|
57,
|
|
617
623
|
58,
|
|
618
|
-
59
|
|
624
|
+
59,
|
|
625
|
+
65,
|
|
626
|
+
66
|
|
619
627
|
],
|
|
620
628
|
"seoRuleIds": [
|
|
621
629
|
"technical",
|
|
@@ -675,6 +683,8 @@
|
|
|
675
683
|
4,
|
|
676
684
|
5,
|
|
677
685
|
7,
|
|
686
|
+
15,
|
|
687
|
+
16,
|
|
678
688
|
22,
|
|
679
689
|
23,
|
|
680
690
|
24,
|
|
@@ -691,7 +701,9 @@
|
|
|
691
701
|
51,
|
|
692
702
|
55,
|
|
693
703
|
57,
|
|
694
|
-
59
|
|
704
|
+
59,
|
|
705
|
+
65,
|
|
706
|
+
66
|
|
695
707
|
],
|
|
696
708
|
"seoRuleIds": [
|
|
697
709
|
"technical",
|
|
@@ -748,6 +760,8 @@
|
|
|
748
760
|
2,
|
|
749
761
|
3,
|
|
750
762
|
7,
|
|
763
|
+
15,
|
|
764
|
+
16,
|
|
751
765
|
22,
|
|
752
766
|
23,
|
|
753
767
|
24,
|
|
@@ -759,7 +773,8 @@
|
|
|
759
773
|
47,
|
|
760
774
|
48,
|
|
761
775
|
49,
|
|
762
|
-
59
|
|
776
|
+
59,
|
|
777
|
+
66
|
|
763
778
|
],
|
|
764
779
|
"seoRuleIds": [
|
|
765
780
|
"technical",
|
|
@@ -825,7 +840,8 @@
|
|
|
825
840
|
55,
|
|
826
841
|
57,
|
|
827
842
|
58,
|
|
828
|
-
59
|
|
843
|
+
59,
|
|
844
|
+
66
|
|
829
845
|
],
|
|
830
846
|
"seoRuleIds": [
|
|
831
847
|
"technical",
|
|
@@ -880,6 +896,8 @@
|
|
|
880
896
|
2,
|
|
881
897
|
3,
|
|
882
898
|
13,
|
|
899
|
+
15,
|
|
900
|
+
16,
|
|
883
901
|
24,
|
|
884
902
|
35,
|
|
885
903
|
43,
|
|
@@ -891,7 +909,8 @@
|
|
|
891
909
|
55,
|
|
892
910
|
57,
|
|
893
911
|
58,
|
|
894
|
-
59
|
|
912
|
+
59,
|
|
913
|
+
66
|
|
895
914
|
],
|
|
896
915
|
"seoRuleIds": [
|
|
897
916
|
"technical",
|
|
@@ -945,6 +964,8 @@
|
|
|
945
964
|
2,
|
|
946
965
|
3,
|
|
947
966
|
13,
|
|
967
|
+
15,
|
|
968
|
+
16,
|
|
948
969
|
24,
|
|
949
970
|
35,
|
|
950
971
|
43,
|
|
@@ -956,7 +977,8 @@
|
|
|
956
977
|
55,
|
|
957
978
|
57,
|
|
958
979
|
58,
|
|
959
|
-
59
|
|
980
|
+
59,
|
|
981
|
+
66
|
|
960
982
|
],
|
|
961
983
|
"seoRuleIds": [
|
|
962
984
|
"technical",
|
|
@@ -1018,7 +1040,9 @@
|
|
|
1018
1040
|
55,
|
|
1019
1041
|
57,
|
|
1020
1042
|
58,
|
|
1021
|
-
59
|
|
1043
|
+
59,
|
|
1044
|
+
65,
|
|
1045
|
+
66
|
|
1022
1046
|
],
|
|
1023
1047
|
"seoRuleIds": [
|
|
1024
1048
|
"technical",
|
|
@@ -1087,7 +1111,8 @@
|
|
|
1087
1111
|
47,
|
|
1088
1112
|
48,
|
|
1089
1113
|
49,
|
|
1090
|
-
59
|
|
1114
|
+
59,
|
|
1115
|
+
66
|
|
1091
1116
|
],
|
|
1092
1117
|
"seoRuleIds": [
|
|
1093
1118
|
"technical",
|
|
@@ -1138,6 +1163,8 @@
|
|
|
1138
1163
|
2,
|
|
1139
1164
|
3,
|
|
1140
1165
|
13,
|
|
1166
|
+
15,
|
|
1167
|
+
16,
|
|
1141
1168
|
24,
|
|
1142
1169
|
35,
|
|
1143
1170
|
43,
|
|
@@ -1149,7 +1176,8 @@
|
|
|
1149
1176
|
55,
|
|
1150
1177
|
57,
|
|
1151
1178
|
58,
|
|
1152
|
-
59
|
|
1179
|
+
59,
|
|
1180
|
+
66
|
|
1153
1181
|
],
|
|
1154
1182
|
"seoRuleIds": [
|
|
1155
1183
|
"technical",
|
|
@@ -1549,6 +1577,7 @@
|
|
|
1549
1577
|
2,
|
|
1550
1578
|
3,
|
|
1551
1579
|
13,
|
|
1580
|
+
15,
|
|
1552
1581
|
24,
|
|
1553
1582
|
35,
|
|
1554
1583
|
43,
|
|
@@ -1696,6 +1725,7 @@
|
|
|
1696
1725
|
2,
|
|
1697
1726
|
3,
|
|
1698
1727
|
13,
|
|
1728
|
+
15,
|
|
1699
1729
|
24,
|
|
1700
1730
|
35,
|
|
1701
1731
|
43,
|
|
@@ -1767,6 +1797,7 @@
|
|
|
1767
1797
|
7,
|
|
1768
1798
|
13,
|
|
1769
1799
|
15,
|
|
1800
|
+
16,
|
|
1770
1801
|
22,
|
|
1771
1802
|
24,
|
|
1772
1803
|
25,
|
|
@@ -2189,7 +2220,8 @@
|
|
|
2189
2220
|
49,
|
|
2190
2221
|
53,
|
|
2191
2222
|
59,
|
|
2192
|
-
61
|
|
2223
|
+
61,
|
|
2224
|
+
64
|
|
2193
2225
|
],
|
|
2194
2226
|
"seoRuleIds": [
|
|
2195
2227
|
"technical",
|
|
@@ -2318,7 +2350,8 @@
|
|
|
2318
2350
|
55,
|
|
2319
2351
|
57,
|
|
2320
2352
|
58,
|
|
2321
|
-
59
|
|
2353
|
+
59,
|
|
2354
|
+
64
|
|
2322
2355
|
],
|
|
2323
2356
|
"seoRuleIds": [
|
|
2324
2357
|
"technical",
|
|
@@ -2551,7 +2584,8 @@
|
|
|
2551
2584
|
55,
|
|
2552
2585
|
57,
|
|
2553
2586
|
58,
|
|
2554
|
-
59
|
|
2587
|
+
59,
|
|
2588
|
+
64
|
|
2555
2589
|
],
|
|
2556
2590
|
"seoRuleIds": [
|
|
2557
2591
|
"technical",
|
|
@@ -2601,6 +2635,7 @@
|
|
|
2601
2635
|
2,
|
|
2602
2636
|
3,
|
|
2603
2637
|
13,
|
|
2638
|
+
15,
|
|
2604
2639
|
24,
|
|
2605
2640
|
35,
|
|
2606
2641
|
43,
|
|
@@ -2791,7 +2826,9 @@
|
|
|
2791
2826
|
55,
|
|
2792
2827
|
57,
|
|
2793
2828
|
58,
|
|
2794
|
-
59
|
|
2829
|
+
59,
|
|
2830
|
+
65,
|
|
2831
|
+
66
|
|
2795
2832
|
],
|
|
2796
2833
|
"seoRuleIds": [
|
|
2797
2834
|
"technical",
|
package/data/theme.json
CHANGED
|
@@ -14,25 +14,28 @@
|
|
|
14
14
|
],
|
|
15
15
|
"antiAiLookRules": [
|
|
16
16
|
"This section exists because AI-generated UI has recognizable tells. Read it before generating anything visual — the goal is UI indistinguishable from a deliberate human design pass, not a demo that screams 'built by an LLM'.",
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"No
|
|
17
|
+
"Brand effects are allowed, inside the theme, compulsory: gradients, glows, blur and animated backgrounds may be used to make a page feel branded, but every color in them must come from the theme tokens (var(--primary), var(--foreground), var(--background), var(--card), var(--border) and their /opacity variants, or color-mix() of them). Never introduce a color outside the theme for an effect: no from-purple-500 to-pink-500, no rainbow or multicolor gradients, no neon colors. Switching the theme must change every effect with it.",
|
|
18
|
+
"Gradients, restrained: use at most two theme colors per gradient (e.g. from-primary to-foreground, or primary fading to transparent). Allowed on: a few highlighted words in a heading (bg-clip-text), section and hero backgrounds, card edges, and thin divider lines. Not allowed on: buttons, body text, inputs, badges, or every heading on the page. At most one gradient heading per viewport.",
|
|
19
|
+
"No shadows on buttons and cards, compulsory: never add shadow-sm through shadow-2xl, drop-shadow, or any box-shadow to buttons, cards, panels, inputs, modals you build yourself, or any surface that holds content. Separate surfaces with border-border, a background change (bg-card vs bg-background) and spacing instead. Leave the built-in shadows of @neuctra/ui components (Modal, Drawer, Popover, Dropdown, Tooltip, Toast) exactly as they ship.",
|
|
20
|
+
"Glows are not shadows: a soft colored glow made from the primary token is allowed on small accents (a status dot, a step number, a progress bar, a timeline marker) and as a pointer-following light inside a card on hover. Keep it subtle (theme color at 10 to 30 percent opacity) and never use it on buttons, text or inputs.",
|
|
21
|
+
"Blur, in its place: backdrop-blur is allowed on sticky or fixed bars (navbar, tab bar, top bar) and on modal overlays, always with a mostly opaque token background (bg-background/75 or more). Large blurred blobs of the primary token (blur-[100px] or more, low opacity, pointer-events-none, aria-hidden) are allowed behind hero and section content. Never blur content the user reads, and never make a card see-through.",
|
|
20
22
|
"No blanket border-radius escalation — don't reach for rounded-2xl/rounded-3xl/rounded-full on every card, input, and button by default. Match the radius already used by the surrounding neuctra-ui components (rounded-md/rounded-lg/rounded-xl per component, see each component's own classes) instead of picking a bigger one because it 'looks more modern'.",
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
+
"Focus rings are for accessibility only: ring-* and focus-visible:ring-ring indicate keyboard focus. Never add a colored ring as a pointer-hover decoration on cards, buttons, or images. The only hover glow allowed is the soft pointer-following primary light inside a card described in the glow rule.",
|
|
24
|
+
"Animated backgrounds are allowed, compulsory conditions: they use only theme tokens, sit behind content (absolute, -z-10 or under a readable overlay, pointer-events-none, aria-hidden), stay low contrast so text keeps its contrast, run at most one per viewport, and stop when the user prefers reduced motion (MotionConfig reducedMotion=\"user\" or a prefers-reduced-motion check). Never animate content itself, and never use flashing or fast loops.",
|
|
25
|
+
"Motion on interactive elements stays small: a hover lift of 1 to 4px or a press scale of about 0.97 is allowed on buttons, links and clickable cards. No scale-105 zooms, bouncing, floating icons or wobble. Idle animation is only for decorative backgrounds and live-status dots.",
|
|
23
26
|
"No emoji used as icons or bullet markers in generated UI (✨, 🚀, 💡, ✅ as list bullets, feature markers, or button icons). Use lucide-react icons — the same icon set every neuctra-ui component already uses — passed via each component's icon props (iconBefore, iconAfter, icon, etc.).",
|
|
24
27
|
"No 'icon in a colored circle badge' repeated on every single feature/stat/card by default (a bg-primary/10 rounded-full p-3 wrapper around every icon). Use it sparingly, only where the component's own design already calls for it — repeating the same decorative wrapper on every card in a grid is a generic-template tell.",
|
|
25
28
|
"No arbitrary one-off spacing/sizing values (p-[13px], gap-[7px], w-[327px]) — use the Tailwind spacing scale (p-3, gap-2, w-80, etc.) so spacing stays consistent with the rest of the design system.",
|
|
26
29
|
"Prefer information density and restraint over generic centered-hero-with-huge-padding layouts. Not every section needs max-w-7xl mx-auto text-center py-24 — match the density and layout the consumer's existing UI already uses.",
|
|
27
30
|
"Make every layout fully responsive by default — mobile, tablet, and desktop (sm:/md:/lg:/xl: breakpoints), stacking to a single column and adjusting spacing/type-scale at small widths. Never ship a fixed-width or desktop-only layout and call it done.",
|
|
28
31
|
"No em dashes (—), compulsory: never use an em dash in generated copy or UI text (headings, body copy, button labels, placeholder text). It's a recognizable AI-writing tell. Use a period, comma, colon, or restructure the sentence instead.",
|
|
29
|
-
"No over-effects:
|
|
32
|
+
"No over-effects: one decorative effect per element at most (a gradient OR a glow OR a hover lift), and the effects on one screen must share one color (the primary token). If an effect makes text harder to read or competes with the primary action, remove it.",
|
|
30
33
|
"Don't layer a separate leading-* utility (leading-relaxed, leading-normal, leading-tight, ...) on top of a text-size class (text-sm, text-base, text-lg, text-xl, ...) — Tailwind's text-size utilities already ship a paired line-height, so adding leading-* alongside one is redundant and can fight the intended rhythm. Only reach for leading-* when no text-size class is already setting one, and even then never leading-none/leading-tight on paragraph-length text. Letter-spacing: use tracking-tight on headings text-3xl and larger; leave everything smaller at the default (tracking-normal); only use tracking-wide for short uppercase labels (badges, eyebrow text, nav labels), and never tracking-wide on paragraph-length text.",
|
|
31
34
|
"Responsive, compulsory: every page must pass the Breakpoint Checklist in the design guide (360, 768, 1024, 1280, 1536px) with no horizontal scroll and touch targets of at least 44px.",
|
|
32
35
|
"One focal point per viewport: a single dominant element (usually the primary CTA or one bg-primary block) that the eye lands on first. Never several competing bg-primary blocks on one screen.",
|
|
33
36
|
"Use the fixed type scale from the design guide (Type Scale section). Never more than 4 text sizes on one screen, and keep paragraphs to max-w-prose or max-w-2xl.",
|
|
34
|
-
"The bar is
|
|
35
|
-
"Decent, restrained design, compulsory: build UI that is decent and intentional, never over-designed. When unsure whether an effect (
|
|
37
|
+
"The bar is branded and restrained: a page may have a signature look (gradient headline words, a glow, an animated background in the brand color), but it must still read well with every effect removed. Hierarchy, spacing and typography carry the design; effects only add the brand.",
|
|
38
|
+
"Decent, restrained design, compulsory: build UI that is decent and intentional, never over-designed. When unsure whether an effect (gradient, glow, blur, animation) is warranted on something you're authoring yourself, leave it out; shadows on content surfaces and colors outside the theme are never warranted. A flat, token-colored, appropriately-radiused, unshadowed, responsive surface is the correct default for most neuctra-ui components. Brand effects are added on purpose, only where the effect rules above allow them."
|
|
36
39
|
],
|
|
37
40
|
"tokens": [
|
|
38
41
|
{ "token": "primary", "className": "bg-primary / text-primary / border-primary", "pairsWith": "primary-foreground", "light": "#00c214", "dark": "#00c214", "usage": "Brand color: primary buttons, active states, links, focus accents." },
|