qualia-framework-v2 2.4.0 → 2.6.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.
@@ -0,0 +1,137 @@
1
+ # Design System — {Project Name}
2
+
3
+ > Generated during project setup. This is the source of truth for all frontend work.
4
+ > Builder agents read this before writing any component. Update it as design evolves.
5
+
6
+ ## Brand
7
+
8
+ - **Tone:** {dark-bold | clean-minimal | colorful-playful | corporate-professional}
9
+ - **Personality:** {1-2 sentences describing the feel — e.g., "Confident and technical, like a Bloomberg terminal meets a luxury brand"}
10
+ - **Industry:** {e.g., fintech, healthcare, SaaS, e-commerce}
11
+
12
+ ## Color System
13
+
14
+ ```css
15
+ :root {
16
+ /* Primary — brand identity */
17
+ --color-primary: {value};
18
+ --color-primary-hover: {value};
19
+ --color-primary-subtle: {value}; /* backgrounds, badges */
20
+
21
+ /* Accent — CTAs, highlights */
22
+ --color-accent: {value};
23
+ --color-accent-hover: {value};
24
+
25
+ /* Neutral — text, borders, backgrounds */
26
+ --color-bg: {value};
27
+ --color-bg-subtle: {value}; /* cards, raised surfaces */
28
+ --color-bg-muted: {value}; /* disabled, secondary surfaces */
29
+ --color-text: {value};
30
+ --color-text-muted: {value}; /* secondary text */
31
+ --color-text-subtle: {value}; /* placeholders, hints */
32
+ --color-border: {value};
33
+ --color-border-subtle: {value};
34
+
35
+ /* Semantic */
36
+ --color-success: {value};
37
+ --color-warning: {value};
38
+ --color-error: {value};
39
+ --color-info: {value};
40
+ }
41
+
42
+ /* Dark mode overrides */
43
+ [data-theme="dark"] {
44
+ --color-bg: {value};
45
+ --color-bg-subtle: {value};
46
+ --color-text: {value};
47
+ /* ... override all tokens ... */
48
+ }
49
+ ```
50
+
51
+ ## Typography
52
+
53
+ ```css
54
+ :root {
55
+ /* Font families */
56
+ --font-display: '{Display Font}', {fallback}; /* Hero text, page titles */
57
+ --font-heading: '{Heading Font}', {fallback}; /* Section headings */
58
+ --font-body: '{Body Font}', {fallback}; /* Paragraphs, UI text */
59
+ --font-mono: '{Mono Font}', monospace; /* Code, data */
60
+
61
+ /* Scale */
62
+ --text-xs: clamp(0.75rem, 0.7rem + 0.25vw, 0.8rem);
63
+ --text-sm: clamp(0.875rem, 0.8rem + 0.4vw, 0.9rem);
64
+ --text-base: clamp(1rem, 0.5rem + 1.5vw, 1.125rem);
65
+ --text-lg: clamp(1.125rem, 0.75rem + 1.2vw, 1.25rem);
66
+ --text-xl: clamp(1.25rem, 0.75rem + 1.5vw, 1.5rem);
67
+ --text-2xl: clamp(1.5rem, 0.75rem + 2.25vw, 2rem);
68
+ --text-3xl: clamp(1.875rem, 1rem + 2.5vw, 2.5rem);
69
+ --text-4xl: clamp(2.25rem, 1rem + 3vw, 3rem);
70
+ --text-5xl: clamp(3rem, 1rem + 4vw, 4rem);
71
+ }
72
+ ```
73
+
74
+ **Google Fonts import:** `{URL}`
75
+
76
+ ## Spacing Scale
77
+
78
+ Based on 8px grid: `4 / 8 / 12 / 16 / 24 / 32 / 48 / 64 / 96 / 128`
79
+
80
+ - **Within components:** 8–16px
81
+ - **Between related elements:** 16–24px
82
+ - **Between sections:** 48–96px
83
+ - **Page padding:** `clamp(1rem, 5vw, 4rem)` horizontal
84
+
85
+ ## Motion
86
+
87
+ - **Approach:** {minimal | subtle | expressive}
88
+ - **Page load:** staggered fade-up, 60ms delay between elements
89
+ - **Hover/focus:** 150ms ease-out
90
+ - **Expand/collapse:** 250ms ease-in-out
91
+ - **Page transitions:** 400ms ease-out
92
+ - **Reduced motion:** all non-essential animations disabled
93
+
94
+ ## Component Patterns
95
+
96
+ ### Buttons
97
+ - **Primary:** solid {accent} background, white text, rounded-{radius}
98
+ - **Secondary:** bordered, transparent background
99
+ - **Ghost:** text-only, hover background
100
+ - **Destructive:** red variant for dangerous actions
101
+ - **Sizes:** sm (32px), md (40px), lg (48px)
102
+
103
+ ### Inputs
104
+ - Border: 1px solid var(--color-border)
105
+ - Focus: 2px ring var(--color-primary)
106
+ - Error: red border + error text below with `aria-describedby`
107
+ - Height: 40px (md), 48px (lg)
108
+
109
+ ### Cards/Surfaces
110
+ - Background: var(--color-bg-subtle)
111
+ - Border: 1px solid var(--color-border-subtle) or shadow
112
+ - Border-radius: {value}
113
+ - No identical card grids — vary layout and emphasis
114
+
115
+ ## Responsive Approach
116
+
117
+ - **Strategy:** mobile-first
118
+ - **Primary breakpoints:** 768px (tablet), 1024px (desktop)
119
+ - **Navigation:** hamburger on mobile, expanded on desktop
120
+ - **Layout:** single column mobile → multi-column desktop
121
+ - **Touch targets:** 44px minimum on mobile
122
+
123
+ ## Visual Effects
124
+
125
+ - {e.g., "Noise texture overlay at 3% opacity on hero sections"}
126
+ - {e.g., "Glass-morphism on floating elements: backdrop-blur-xl bg-white/80"}
127
+ - {e.g., "Gradient mesh on hero: radial-gradient from primary to transparent"}
128
+ - {e.g., "Decorative geometric shapes as background accents"}
129
+
130
+ ## Anti-Patterns (Don't Do This)
131
+
132
+ - No Inter, Roboto, Arial, system-ui fonts
133
+ - No blue-purple gradients
134
+ - No identical card grids
135
+ - No generic stock-photo heroes
136
+ - No hardcoded max-width containers (use fluid layouts)
137
+ - No gray-on-gray low-contrast text
@@ -95,19 +95,31 @@ fi
95
95
  echo ""
96
96
  echo "pre-push:"
97
97
 
98
- if grep -q 'command -v python3' "$HOOKS_DIR/pre-push.sh"; then
99
- echo " ✓ checks for python3 availability"
98
+ if grep -q 'command -v node' "$HOOKS_DIR/pre-push.sh"; then
99
+ echo " ✓ checks for node availability"
100
100
  PASS=$((PASS + 1))
101
101
  else
102
- echo " ✗ missing python3 check"
102
+ echo " ✗ missing node check"
103
103
  FAIL=$((FAIL + 1))
104
104
  fi
105
105
 
106
- if grep -q 'qualia-push-err' "$HOOKS_DIR/pre-push.sh"; then
107
- echo " ✓ captures python3 errors"
106
+ if grep -q 'tracking sync failed' "$HOOKS_DIR/pre-push.sh"; then
107
+ echo " ✓ captures tracking sync errors"
108
108
  PASS=$((PASS + 1))
109
109
  else
110
- echo " ✗ missing python3 error capture"
110
+ echo " ✗ missing tracking sync error capture"
111
+ FAIL=$((FAIL + 1))
112
+ fi
113
+
114
+ # --- branch-guard reads from .qualia-config.json ---
115
+ echo ""
116
+ echo "branch-guard config source:"
117
+
118
+ if grep -q 'qualia-config.json' "$HOOKS_DIR/branch-guard.sh"; then
119
+ echo " ✓ reads role from .qualia-config.json"
120
+ PASS=$((PASS + 1))
121
+ else
122
+ echo " ✗ not reading from .qualia-config.json"
111
123
  FAIL=$((FAIL + 1))
112
124
  fi
113
125