@mastorscdn/core 1.0.1 → 1.0.3

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.
@@ -34,8 +34,8 @@ html {
34
34
  body {
35
35
  margin: 0;
36
36
  min-height: 100vh;
37
- background-color: var(--mastors-bg-body, #ffffff);
38
- color: var(--mastors-text-primary, #111827);
37
+ background-color: var(--#{cfg.$mastors-prefix}-bg-body, #ffffff);
38
+ color: var(--#{cfg.$mastors-prefix}-text-primary, #111827);
39
39
  line-height: inherit;
40
40
  -webkit-font-smoothing: antialiased;
41
41
  -moz-osx-font-smoothing: grayscale;
@@ -107,13 +107,13 @@ button,
107
107
  input::-moz-placeholder,
108
108
  textarea::-moz-placeholder {
109
109
  opacity: 1;
110
- color: var(--mastors-text-muted, #6b7280);
110
+ color: var(--#{cfg.$mastors-prefix}-text-muted, #6b7280);
111
111
  }
112
112
 
113
113
  input::placeholder,
114
114
  textarea::placeholder {
115
115
  opacity: 1;
116
- color: var(--mastors-text-muted, #6b7280);
116
+ color: var(--#{cfg.$mastors-prefix}-text-muted, #6b7280);
117
117
  }
118
118
 
119
119
  textarea { resize: vertical; }
@@ -149,7 +149,7 @@ hr {
149
149
  height: 0;
150
150
  color: inherit;
151
151
  border-top-width: 1px;
152
- border-color: var(--mastors-border-default, #e5e7eb);
152
+ border-color: var(--#{cfg.$mastors-prefix}-border-default, #e5e7eb);
153
153
  margin: 0;
154
154
  }
155
155
 
@@ -173,6 +173,6 @@ svg {
173
173
 
174
174
  // --- Selection ---
175
175
  ::selection {
176
- background-color: var(--mastors-color-primary, #2563eb);
176
+ background-color: var(--#{cfg.$mastors-prefix}-color-primary, #2563eb);
177
177
  color: #ffffff;
178
178
  }
@@ -1,29 +1,225 @@
1
1
  // =============================================================================
2
2
  // Mastors-Core | Config: Settings
3
- // Global feature flags and configuration switches
4
- // =============================================================================
5
-
6
- // --- Feature Flags ---
7
- $enable-dark-theme: true !default;
8
- $enable-light-theme: true !default;
9
- $enable-css-variables: true !default;
10
- $enable-utilities: true !default;
11
- $enable-reset: true !default;
12
- $enable-base: true !default;
13
- $enable-accessibility: true !default;
14
- $enable-reduced-motion: true !default;
15
- $enable-focus-visible: true !default;
16
- $enable-smooth-scroll: true !default;
17
- $enable-print-styles: false !default;
18
-
19
- // --- Prefix ---
3
+ // Global feature flags, configuration switches, and brand token overrides.
4
+ //
5
+ // All variables are marked !default so a consumer can override any of them
6
+ // via @use '@mastorscdn/core' with ( $variable: value ).
7
+ //
8
+ // mc.config.js / mc.config.ts equivalent:
9
+ // Copy the relevant @use block into your bundler's preprocessorOptions.
10
+ // Full reference: https://mastorscdn.kehem.com/config
11
+ // =============================================================================
12
+
13
+
14
+ // =============================================================================
15
+ // 1. FEATURE FLAGS
16
+ // Toggle entire subsystems on or off. Disabling a flag completely removes
17
+ // that subsystem's CSS output from the compiled bundle.
18
+ // =============================================================================
19
+
20
+ // --- Theme subsystems ---
21
+ $enable-dark-theme: true !default; // [data-theme="dark"] overrides
22
+ $enable-light-theme: true !default; // [data-theme="light"] overrides
23
+ $enable-custom-themes: false !default; // Custom theme registry support
24
+
25
+ // --- CSS output ---
26
+ $enable-css-variables: true !default; // Emit all tokens as CSS custom properties
27
+ $enable-utilities: true !default; // Utility class generators
28
+ $enable-reset: true !default; // Modern CSS reset
29
+ $enable-base: true !default; // Base element defaults
30
+ $enable-accessibility: true !default; // A11y helpers (skip link, sr-only, etc.)
31
+ $enable-print-styles: false !default; // @media print stylesheet
32
+
33
+ // --- Motion & interaction ---
34
+ $enable-reduced-motion: true !default; // prefers-reduced-motion: reduce overrides
35
+ $enable-smooth-scroll: true !default; // html { scroll-behavior: smooth }
36
+ $enable-focus-visible: true !default; // :focus-visible ring system
37
+ $enable-hover-effects: true !default; // hover/active transform utilities
38
+ $enable-transitions: true !default; // Transition utilities
39
+ $enable-animations: true !default; // Keyframe animation helpers (pulse, spin, etc.)
40
+
41
+ // --- Component helpers ---
42
+ $enable-container: true !default; // .mastors-container & .mastors-container-fluid
43
+ $enable-skeleton: true !default; // .mastors-skeleton shimmer
44
+ $enable-glassmorphism: false !default; // Include glassmorphism utility classes
45
+ $enable-neumorphism: false !default; // Include neumorphism utility classes
46
+
47
+ // --- Extended color palette ---
48
+ $enable-extended-palette: true !default; // rose, pink, teal, emerald, indigo… scales
49
+ $enable-chart-colors: true !default; // chart-1…chart-10 data-vis palette
50
+ $enable-dark-surfaces: true !default; // surface-dark-* tokens
51
+ $enable-scrim-colors: true !default; // scrim-light / scrim-dark / scrim-heavy
52
+
53
+ // --- Utility granularity ---
54
+ $enable-negative-spacing: false !default; // Negative margin utilities (-m-4, etc.)
55
+ $enable-arbitrary-values: false !default; // Reserved for future arbitrary-value support
56
+ $enable-important: true !default; // Add !important to utility classes
57
+
58
+
59
+ // =============================================================================
60
+ // 2. BRAND TOKEN OVERRIDES
61
+ // Override the default brand colors without touching token files.
62
+ // These cascade into $mastors-colors and all CSS variable output automatically.
63
+ //
64
+ // Example (Tailwind-style config equivalent):
65
+ // @use '@mastorscdn/core' with (
66
+ // $brand-primary: #0f4c75,
67
+ // $brand-secondary: #1b4332,
68
+ // );
69
+ // =============================================================================
70
+
71
+ // --- Primary brand color (maps to 'primary' token) ---
72
+ $brand-primary: null !default; // e.g. #0f4c75 — overrides color('primary')
73
+ $brand-primary-light: null !default; // e.g. #3a7ca5 — overrides color('primary-light')
74
+ $brand-primary-dark: null !default; // e.g. #093a5c — overrides color('primary-dark')
75
+
76
+ // --- Secondary brand color ---
77
+ $brand-secondary: null !default; // e.g. #1b4332
78
+ $brand-secondary-light: null !default;
79
+ $brand-secondary-dark: null !default;
80
+
81
+ // --- Accent color ---
82
+ $brand-accent: null !default; // e.g. #f97316
83
+ $brand-accent-light: null !default;
84
+ $brand-accent-dark: null !default;
85
+
86
+ // --- Status color overrides ---
87
+ $brand-success: null !default; // Override success green
88
+ $brand-warning: null !default; // Override warning amber
89
+ $brand-danger: null !default; // Override danger red
90
+ $brand-info: null !default; // Override info cyan
91
+
92
+ // --- Surface / background overrides ---
93
+ $brand-surface: null !default; // e.g. #fafafa
94
+ $brand-surface-raised: null !default;
95
+ $brand-bg-body: null !default; // e.g. #ffffff or #0a0a0a for dark-first
96
+
97
+
98
+ // =============================================================================
99
+ // 3. TYPOGRAPHY
100
+ // Global font-family, size, line-height, and weight configuration.
101
+ // =============================================================================
102
+
103
+ $font-family-sans: (-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif) !default;
104
+ $font-family-serif: (Georgia, Cambria, 'Times New Roman', Times, serif) !default;
105
+ $font-family-mono: ('JetBrains Mono', 'Fira Code', 'Cascadia Code', Consolas, 'Courier New', monospace) !default;
106
+ $font-family-base: $font-family-sans !default;
107
+ $font-family-heading: $font-family-sans !default;
108
+
109
+ $font-size-base: 1rem !default; // 16px
110
+ $font-size-sm: 0.875rem !default; // 14px
111
+ $font-size-lg: 1.125rem !default; // 18px
112
+
113
+ $line-height-base: 1.6 !default;
114
+ $line-height-tight: 1.25 !default;
115
+ $line-height-loose: 2.0 !default;
116
+ $line-height-heading: 1.2 !default;
117
+
118
+ $font-weight-light: 300 !default;
119
+ $font-weight-normal: 400 !default;
120
+ $font-weight-medium: 500 !default;
121
+ $font-weight-semibold: 600 !default;
122
+ $font-weight-bold: 700 !default;
123
+ $font-weight-black: 900 !default;
124
+
125
+ $letter-spacing-tight: -0.025em !default;
126
+ $letter-spacing-normal: 0 !default;
127
+ $letter-spacing-wide: 0.025em !default;
128
+ $letter-spacing-wider: 0.05em !default;
129
+ $letter-spacing-widest: 0.1em !default;
130
+
131
+
132
+ // =============================================================================
133
+ // 4. SPACING & LAYOUT
134
+ // Base unit used by spacing scale generators. Change $spacing-unit to
135
+ // rebase the entire spacing system (default 1rem = 16px).
136
+ // =============================================================================
137
+
138
+ $spacing-unit: 1rem !default; // Base spacing unit
139
+ $spacing-scale-max: 96 !default; // Largest step in spacing scale (96 = 24rem)
140
+
141
+ $container-padding-x: 1rem !default; // Horizontal padding for .mastors-container
142
+ $container-center: true !default; // Auto-center containers with margin: auto
143
+
144
+
145
+ // =============================================================================
146
+ // 5. BORDER & RADIUS DEFAULTS
147
+ // =============================================================================
148
+
149
+ $border-width-default: 1px !default; // Default border width
150
+ $border-style-default: solid !default; // Default border style
151
+ $border-color-default: null !default; // null = use semantic('border-default')
152
+
153
+ $border-radius-default: null !default; // null = use radius('md') = 8px
154
+
155
+
156
+ // =============================================================================
157
+ // 6. SHADOW DEFAULTS
158
+ // =============================================================================
159
+
160
+ $shadow-default: null !default; // null = use shadow('md')
161
+ $shadow-color-default: rgba(0,0,0,0.10) !default;
162
+
163
+
164
+ // =============================================================================
165
+ // 7. FOCUS RING
166
+ // Customise the global :focus-visible ring appearance.
167
+ // =============================================================================
168
+
169
+ $focus-ring-color: null !default; // null = brand-primary / color('primary')
170
+ $focus-ring-width: 3px !default;
171
+ $focus-ring-offset: 2px !default;
172
+ $focus-ring-style: solid !default;
173
+
174
+
175
+ // =============================================================================
176
+ // 8. Z-INDEX OVERRIDES
177
+ // Override individual layers in the z-index stack.
178
+ // =============================================================================
179
+
180
+ $z-dropdown: null !default; // null = token default (100)
181
+ $z-sticky: null !default; // null = token default (200)
182
+ $z-fixed: null !default; // null = token default (300)
183
+ $z-modal: null !default; // null = token default (500)
184
+ $z-tooltip: null !default; // null = token default (700)
185
+ $z-toast: null !default; // null = token default (800)
186
+
187
+
188
+ // =============================================================================
189
+ // 9. BREAKPOINT OVERRIDES
190
+ // Override individual breakpoint values.
191
+ // null = use token default from tokens/_breakpoints.scss
192
+ // =============================================================================
193
+
194
+ $bp-sm: null !default; // default 576px
195
+ $bp-md: null !default; // default 768px
196
+ $bp-lg: null !default; // default 992px
197
+ $bp-xl: null !default; // default 1200px
198
+ $bp-2xl: null !default; // default 1400px
199
+ $bp-3xl: null !default; // default 1600px
200
+
201
+
202
+ // =============================================================================
203
+ // 10. MOTION OVERRIDES
204
+ // =============================================================================
205
+
206
+ $duration-normal: null !default; // null = token default (200ms)
207
+ $easing-default: null !default; // null = token default (ease-in-out)
208
+ $transition-default: null !default; // null = token default (colors)
209
+
210
+
211
+ // =============================================================================
212
+ // 11. GLOBAL IDENTIFIERS
213
+ // =============================================================================
214
+
215
+ // CSS custom property prefix: --{prefix}-color-primary etc.
20
216
  $mastors-prefix: 'mastors' !default;
21
217
 
22
- // --- Root Element ---
23
- $mastors-root-selector: ':root' !default;
218
+ // Root selector where CSS variables are emitted
219
+ $mastors-root-selector: ':root' !default;
24
220
 
25
- // --- Theme Attribute ---
221
+ // HTML attribute used for theme switching
26
222
  $mastors-theme-attr: 'data-theme' !default;
27
223
 
28
- // --- Debug Mode ---
29
- $mastors-debug: false !default;
224
+ // Debug mode: adds data-mastors-debug attributes and outlines
225
+ $mastors-debug: false !default;
@@ -3,6 +3,8 @@
3
3
  // Reusable state classes for hover, focus, active, disabled
4
4
  // =============================================================================
5
5
 
6
+ @use '../config/settings' as cfg;
7
+
6
8
  // --- Interactive base ---
7
9
  .mastors-interactive {
8
10
  cursor: pointer;
@@ -65,7 +67,7 @@
65
67
  100% { background-position: -200% 0; }
66
68
  }
67
69
 
68
- [data-theme='dark'] & {
70
+ [#{cfg.$mastors-theme-attr}='dark'] & {
69
71
  background: linear-gradient(90deg, #374151 25%, #4b5563 50%, #374151 75%);
70
72
  background-size: 200% 100%;
71
73
  }
@@ -75,3 +75,10 @@
75
75
  @include generate-all-vars;
76
76
  }
77
77
  }
78
+
79
+ // --- Auto-emit when this module is @forwarded from _index.scss ---
80
+ // When a consumer does `@use '@mastorscdn/core' with (...)`, this top-level
81
+ // block ensures CSS variables are written without needing a separate @include.
82
+ @if cfg.$enable-css-variables {
83
+ @include generate-all-vars;
84
+ }
@@ -5,37 +5,37 @@
5
5
  @use '../config/settings' as cfg;
6
6
 
7
7
  @mixin dark-theme {
8
- --mastors-text-primary: #f9fafb;
9
- --mastors-text-secondary: #e5e7eb;
10
- --mastors-text-muted: #9ca3af;
11
- --mastors-text-disabled: #6b7280;
12
- --mastors-text-inverse: #111827;
13
-
14
- --mastors-bg-body: #0f172a;
15
- --mastors-bg-subtle: #1e293b;
16
- --mastors-bg-muted: #334155;
17
- --mastors-bg-inverse: #f9fafb;
18
-
19
- --mastors-border-default: #334155;
20
- --mastors-border-strong: #475569;
21
- --mastors-border-focus: #60a5fa;
22
-
23
- --mastors-surface: #1e293b;
24
- --mastors-surface-raised: #334155;
25
- --mastors-surface-overlay: rgba(15, 23, 42, 0.95);
26
-
27
- --mastors-shadow-ambient: 0 1px 3px rgba(0, 0, 0, 0.50);
28
-
29
- --mastors-color-primary: #60a5fa;
30
- --mastors-color-secondary: #a78bfa;
31
- --mastors-color-accent: #38bdf8;
32
- --mastors-color-success: #4ade80;
33
- --mastors-color-warning: #fbbf24;
34
- --mastors-color-danger: #f87171;
35
- --mastors-color-info: #22d3ee;
36
-
37
- --mastors-scrollbar-thumb: rgba(255, 255, 255, 0.2);
38
- --mastors-scrollbar-track: transparent;
8
+ --#{cfg.$mastors-prefix}-text-primary: #f9fafb;
9
+ --#{cfg.$mastors-prefix}-text-secondary: #e5e7eb;
10
+ --#{cfg.$mastors-prefix}-text-muted: #9ca3af;
11
+ --#{cfg.$mastors-prefix}-text-disabled: #6b7280;
12
+ --#{cfg.$mastors-prefix}-text-inverse: #111827;
13
+
14
+ --#{cfg.$mastors-prefix}-bg-body: #0f172a;
15
+ --#{cfg.$mastors-prefix}-bg-subtle: #1e293b;
16
+ --#{cfg.$mastors-prefix}-bg-muted: #334155;
17
+ --#{cfg.$mastors-prefix}-bg-inverse: #f9fafb;
18
+
19
+ --#{cfg.$mastors-prefix}-border-default: #334155;
20
+ --#{cfg.$mastors-prefix}-border-strong: #475569;
21
+ --#{cfg.$mastors-prefix}-border-focus: #60a5fa;
22
+
23
+ --#{cfg.$mastors-prefix}-surface: #1e293b;
24
+ --#{cfg.$mastors-prefix}-surface-raised: #334155;
25
+ --#{cfg.$mastors-prefix}-surface-overlay: rgba(15, 23, 42, 0.95);
26
+
27
+ --#{cfg.$mastors-prefix}-shadow-ambient: 0 1px 3px rgba(0, 0, 0, 0.50);
28
+
29
+ --#{cfg.$mastors-prefix}-color-primary: #60a5fa;
30
+ --#{cfg.$mastors-prefix}-color-secondary: #a78bfa;
31
+ --#{cfg.$mastors-prefix}-color-accent: #38bdf8;
32
+ --#{cfg.$mastors-prefix}-color-success: #4ade80;
33
+ --#{cfg.$mastors-prefix}-color-warning: #fbbf24;
34
+ --#{cfg.$mastors-prefix}-color-danger: #f87171;
35
+ --#{cfg.$mastors-prefix}-color-info: #22d3ee;
36
+
37
+ --#{cfg.$mastors-prefix}-scrollbar-thumb: rgba(255, 255, 255, 0.2);
38
+ --#{cfg.$mastors-prefix}-scrollbar-track: transparent;
39
39
  }
40
40
 
41
41
  // Attribute-based dark mode
@@ -5,37 +5,37 @@
5
5
  @use '../config/settings' as cfg;
6
6
 
7
7
  @mixin light-theme {
8
- --mastors-text-primary: #111827;
9
- --mastors-text-secondary: #374151;
10
- --mastors-text-muted: #6b7280;
11
- --mastors-text-disabled: #9ca3af;
12
- --mastors-text-inverse: #ffffff;
13
-
14
- --mastors-bg-body: #ffffff;
15
- --mastors-bg-subtle: #f9fafb;
16
- --mastors-bg-muted: #f3f4f6;
17
- --mastors-bg-inverse: #111827;
18
-
19
- --mastors-border-default: #e5e7eb;
20
- --mastors-border-strong: #d1d5db;
21
- --mastors-border-focus: #2563eb;
22
-
23
- --mastors-surface: #ffffff;
24
- --mastors-surface-raised: #f9fafb;
25
- --mastors-surface-overlay: rgba(255, 255, 255, 0.95);
26
-
27
- --mastors-shadow-ambient: 0 1px 3px rgba(0, 0, 0, 0.10);
28
-
29
- --mastors-color-primary: #2563eb;
30
- --mastors-color-secondary: #7c3aed;
31
- --mastors-color-accent: #0ea5e9;
32
- --mastors-color-success: #16a34a;
33
- --mastors-color-warning: #d97706;
34
- --mastors-color-danger: #dc2626;
35
- --mastors-color-info: #0891b2;
36
-
37
- --mastors-scrollbar-thumb: rgba(0, 0, 0, 0.2);
38
- --mastors-scrollbar-track: transparent;
8
+ --#{cfg.$mastors-prefix}-text-primary: #111827;
9
+ --#{cfg.$mastors-prefix}-text-secondary: #374151;
10
+ --#{cfg.$mastors-prefix}-text-muted: #6b7280;
11
+ --#{cfg.$mastors-prefix}-text-disabled: #9ca3af;
12
+ --#{cfg.$mastors-prefix}-text-inverse: #ffffff;
13
+
14
+ --#{cfg.$mastors-prefix}-bg-body: #ffffff;
15
+ --#{cfg.$mastors-prefix}-bg-subtle: #f9fafb;
16
+ --#{cfg.$mastors-prefix}-bg-muted: #f3f4f6;
17
+ --#{cfg.$mastors-prefix}-bg-inverse: #111827;
18
+
19
+ --#{cfg.$mastors-prefix}-border-default: #e5e7eb;
20
+ --#{cfg.$mastors-prefix}-border-strong: #d1d5db;
21
+ --#{cfg.$mastors-prefix}-border-focus: #2563eb;
22
+
23
+ --#{cfg.$mastors-prefix}-surface: #ffffff;
24
+ --#{cfg.$mastors-prefix}-surface-raised: #f9fafb;
25
+ --#{cfg.$mastors-prefix}-surface-overlay: rgba(255, 255, 255, 0.95);
26
+
27
+ --#{cfg.$mastors-prefix}-shadow-ambient: 0 1px 3px rgba(0, 0, 0, 0.10);
28
+
29
+ --#{cfg.$mastors-prefix}-color-primary: #2563eb;
30
+ --#{cfg.$mastors-prefix}-color-secondary: #7c3aed;
31
+ --#{cfg.$mastors-prefix}-color-accent: #0ea5e9;
32
+ --#{cfg.$mastors-prefix}-color-success: #16a34a;
33
+ --#{cfg.$mastors-prefix}-color-warning: #d97706;
34
+ --#{cfg.$mastors-prefix}-color-danger: #dc2626;
35
+ --#{cfg.$mastors-prefix}-color-info: #0891b2;
36
+
37
+ --#{cfg.$mastors-prefix}-scrollbar-thumb: rgba(0, 0, 0, 0.2);
38
+ --#{cfg.$mastors-prefix}-scrollbar-track: transparent;
39
39
  }
40
40
 
41
41
  // Apply to :root