@medcore-ua/concrete-css 1.0.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,249 @@
1
+ // =============================================================================
2
+ // DESIGN TOKENS
3
+ // The single source of truth for all framework values
4
+ // =============================================================================
5
+
6
+ @use 'sass:map';
7
+ @use 'functions' as *;
8
+
9
+ // =============================================================================
10
+ // PRIMITIVE TOKENS (The Palette)
11
+ // Raw values that describe WHAT they are, not WHERE they're used
12
+ // =============================================================================
13
+
14
+ // Spacing unit (4px = 0.25rem)
15
+ $spacing-unit: 0.25rem !default;
16
+
17
+ // Color palette
18
+ $color-white: #ffffff !default;
19
+ $color-black: #000000 !default;
20
+
21
+ // Grays (0-900 scale)
22
+ $color-gray-50: #fafafa !default;
23
+ $color-gray-100: #f5f5f5 !default;
24
+ $color-gray-200: #e5e5e5 !default;
25
+ $color-gray-300: #d4d4d4 !default;
26
+ $color-gray-400: #a3a3a3 !default;
27
+ $color-gray-500: #737373 !default;
28
+ $color-gray-600: #525252 !default;
29
+ $color-gray-700: #404040 !default;
30
+ $color-gray-800: #262626 !default;
31
+ $color-gray-900: #171717 !default;
32
+
33
+ // Primary color scale (customizable)
34
+ $color-primary-50: #f0f9ff !default;
35
+ $color-primary-100: #e0f2fe !default;
36
+ $color-primary-500: #0ea5e9 !default;
37
+ $color-primary-600: #0284c7 !default;
38
+ $color-primary-900: #0c4a6e !default;
39
+
40
+ // Semantic colors
41
+ $color-success: #0a7f2e !default;
42
+ $color-warning: #f59e0b !default;
43
+ $color-error: #b00020 !default;
44
+ $color-info: #0ea5e9 !default;
45
+
46
+ // Typography
47
+ $font-family-mono: 'Roboto Mono', 'Courier New', monospace !default;
48
+ $font-family-sans: system-ui, -apple-system, sans-serif !default;
49
+ $font-family-serif: 'Georgia', serif !default;
50
+
51
+ // =============================================================================
52
+ // SPACING SCALE
53
+ // Based on 4px/0.25rem unit
54
+ // =============================================================================
55
+
56
+ $spacing: (
57
+ '0': 0,
58
+ '1': $spacing-unit, // 4px
59
+ '2': $spacing-unit * 2, // 8px
60
+ '3': $spacing-unit * 3, // 12px
61
+ '4': $spacing-unit * 4, // 16px
62
+ '5': $spacing-unit * 5, // 20px
63
+ '6': $spacing-unit * 6, // 24px
64
+ '8': $spacing-unit * 8, // 32px
65
+ '10': $spacing-unit * 10, // 40px
66
+ '12': $spacing-unit * 12, // 48px
67
+ '16': $spacing-unit * 16, // 64px
68
+ '20': $spacing-unit * 20, // 80px
69
+ '24': $spacing-unit * 24, // 96px
70
+ '32': $spacing-unit * 32, // 128px
71
+ 'auto': auto
72
+ ) !default;
73
+
74
+ // =============================================================================
75
+ // BREAKPOINTS
76
+ // Mobile-first responsive system
77
+ // =============================================================================
78
+
79
+ $breakpoints: (
80
+ 'sm': 640px, // Small devices
81
+ 'md': 768px, // Medium devices
82
+ 'lg': 1024px, // Large devices
83
+ 'xl': 1280px, // Extra large
84
+ '2xl': 1536px // 2X Extra large
85
+ ) !default;
86
+
87
+ // =============================================================================
88
+ // COLORS MAP
89
+ // All available colors for utility generation
90
+ // =============================================================================
91
+
92
+ $colors: (
93
+ // Special values
94
+ 'inherit': inherit,
95
+ 'current': currentColor,
96
+ 'transparent': transparent,
97
+
98
+ // Base colors
99
+ 'white': $color-white,
100
+ 'black': $color-black,
101
+
102
+ // Gray scale
103
+ 'gray-50': $color-gray-50,
104
+ 'gray-100': $color-gray-100,
105
+ 'gray-200': $color-gray-200,
106
+ 'gray-300': $color-gray-300,
107
+ 'gray-400': $color-gray-400,
108
+ 'gray-500': $color-gray-500,
109
+ 'gray-600': $color-gray-600,
110
+ 'gray-700': $color-gray-700,
111
+ 'gray-800': $color-gray-800,
112
+ 'gray-900': $color-gray-900,
113
+
114
+ // Primary colors
115
+ 'primary-50': $color-primary-50,
116
+ 'primary-100': $color-primary-100,
117
+ 'primary-500': $color-primary-500,
118
+ 'primary-600': $color-primary-600,
119
+ 'primary-900': $color-primary-900,
120
+
121
+ // Semantic colors
122
+ 'success': $color-success,
123
+ 'warning': $color-warning,
124
+ 'error': $color-error,
125
+ 'info': $color-info
126
+ ) !default;
127
+
128
+ // =============================================================================
129
+ // BORDER WIDTHS
130
+ // =============================================================================
131
+
132
+ $border-widths: (
133
+ '0': 0,
134
+ '1': 1px,
135
+ '2': 2px,
136
+ '4': 4px,
137
+ '8': 8px
138
+ ) !default;
139
+
140
+ // =============================================================================
141
+ // BORDER RADIUS
142
+ // =============================================================================
143
+
144
+ $border-radius: (
145
+ 'none': 0,
146
+ 'sm': 0.125rem, // 2px
147
+ 'base': 0.25rem, // 4px
148
+ 'md': 0.375rem, // 6px
149
+ 'lg': 0.5rem, // 8px
150
+ 'xl': 0.75rem, // 12px
151
+ '2xl': 1rem, // 16px
152
+ 'full': 9999px
153
+ ) !default;
154
+
155
+ // =============================================================================
156
+ // OPACITY
157
+ // =============================================================================
158
+
159
+ $opacity: (
160
+ '0': 0,
161
+ '25': 0.25,
162
+ '50': 0.5,
163
+ '75': 0.75,
164
+ '100': 1
165
+ ) !default;
166
+
167
+ // =============================================================================
168
+ // FONT SIZES
169
+ // =============================================================================
170
+
171
+ $font-sizes: (
172
+ 'xs': 0.75rem, // 12px
173
+ 'sm': 0.875rem, // 14px
174
+ 'base': 1rem, // 16px
175
+ 'lg': 1.125rem, // 18px
176
+ 'xl': 1.25rem, // 20px
177
+ '2xl': 1.5rem, // 24px
178
+ '3xl': 1.875rem, // 30px
179
+ '4xl': 2.25rem, // 36px
180
+ '5xl': 3rem, // 48px
181
+ '6xl': 3.75rem // 60px
182
+ ) !default;
183
+
184
+ // =============================================================================
185
+ // FONT WEIGHTS
186
+ // =============================================================================
187
+
188
+ $font-weights: (
189
+ 'normal': 400,
190
+ 'medium': 500,
191
+ 'bold': 700,
192
+ 'black': 900
193
+ ) !default;
194
+
195
+ // =============================================================================
196
+ // LINE HEIGHTS
197
+ // =============================================================================
198
+
199
+ $line-heights: (
200
+ 'none': 1,
201
+ 'tight': 1.25,
202
+ 'snug': 1.375,
203
+ 'normal': 1.5,
204
+ 'relaxed': 1.625,
205
+ 'loose': 2
206
+ ) !default;
207
+
208
+ // =============================================================================
209
+ // LETTER SPACING
210
+ // =============================================================================
211
+
212
+ $letter-spacing: (
213
+ 'tighter': -0.05em,
214
+ 'tight': -0.025em,
215
+ 'normal': 0,
216
+ 'wide': 0.025em,
217
+ 'wider': 0.05em,
218
+ 'widest': 0.1em
219
+ ) !default;
220
+
221
+ // =============================================================================
222
+ // SHADOWS (Brutalist = minimal)
223
+ // =============================================================================
224
+
225
+ $shadows: (
226
+ 'none': none,
227
+ 'sm': 2px 2px 0 rgba(0, 0, 0, 1),
228
+ 'base': 4px 4px 0 rgba(0, 0, 0, 1),
229
+ 'lg': 6px 6px 0 rgba(0, 0, 0, 1)
230
+ ) !default;
231
+
232
+ // =============================================================================
233
+ // MAX WIDTHS (Container sizes)
234
+ // =============================================================================
235
+
236
+ $max-widths: (
237
+ 'xs': 20rem, // 320px
238
+ 'sm': 24rem, // 384px
239
+ 'md': 28rem, // 448px
240
+ 'lg': 32rem, // 512px
241
+ 'xl': 36rem, // 576px
242
+ '2xl': 42rem, // 672px
243
+ '3xl': 48rem, // 768px
244
+ '4xl': 56rem, // 896px
245
+ '5xl': 64rem, // 1024px
246
+ '6xl': 72rem, // 1152px
247
+ 'full': 100%,
248
+ 'screen': 100vw
249
+ ) !default;
@@ -0,0 +1,53 @@
1
+ // =============================================================================
2
+ // GLOBAL CONFIGURATION VARIABLES
3
+ // Control framework behavior and features
4
+ // =============================================================================
5
+
6
+ // Framework prefix (empty by default, but can be set to namespace classes)
7
+ $prefix: '' !default;
8
+
9
+ // Enable/disable features
10
+ $enable-responsive: true !default;
11
+ $enable-hover-states: true !default;
12
+ $enable-focus-states: true !default;
13
+ $enable-negative-margins: true !default;
14
+ $enable-important: false !default;
15
+
16
+ // Responsive breakpoint names (must match keys in $breakpoints map)
17
+ $breakpoint-names: ('sm', 'md', 'lg', 'xl', '2xl') !default;
18
+
19
+ // State modifiers to generate
20
+ $state-modifiers: (
21
+ 'hover',
22
+ 'focus',
23
+ 'active',
24
+ 'disabled'
25
+ ) !default;
26
+
27
+ // Direction maps for spacing utilities
28
+ $directions: (
29
+ '': '', // all sides
30
+ 't': '-top', // top
31
+ 'r': '-right', // right
32
+ 'b': '-bottom', // bottom
33
+ 'l': '-left', // left
34
+ 'x': '-inline', // horizontal (left + right)
35
+ 'y': '-block' // vertical (top + bottom)
36
+ ) !default;
37
+
38
+ // CSS custom properties mode (experimental)
39
+ $use-css-variables: false !default;
40
+
41
+ // Z-index management
42
+ $z-index-levels: (
43
+ 'behind': -1,
44
+ 'base': 0,
45
+ 'dropdown': 1000,
46
+ 'sticky': 1020,
47
+ 'fixed': 1030,
48
+ 'modal-backdrop': 1040,
49
+ 'modal': 1050,
50
+ 'popover': 1060,
51
+ 'tooltip': 1070,
52
+ 'notification': 1080
53
+ ) !default;
@@ -0,0 +1,100 @@
1
+ // =============================================================================
2
+ // CSS RESET
3
+ // Modern, minimal reset for consistent cross-browser rendering
4
+ // =============================================================================
5
+
6
+ // Box sizing
7
+ *,
8
+ *::before,
9
+ *::after {
10
+ box-sizing: border-box;
11
+ }
12
+
13
+ // Remove default margins and padding
14
+ * {
15
+ margin: 0;
16
+ padding: 0;
17
+ }
18
+
19
+ // Root element
20
+ html {
21
+ -webkit-text-size-adjust: 100%;
22
+ -moz-tab-size: 4;
23
+ tab-size: 4;
24
+ line-height: 1.5;
25
+ scroll-behavior: smooth;
26
+ }
27
+
28
+ // Body
29
+ body {
30
+ min-height: 100vh;
31
+ line-height: inherit;
32
+ -webkit-font-smoothing: antialiased;
33
+ -moz-osx-font-smoothing: grayscale;
34
+ }
35
+
36
+ // Media elements
37
+ img,
38
+ picture,
39
+ video,
40
+ canvas,
41
+ svg {
42
+ display: block;
43
+ max-width: 100%;
44
+ height: auto;
45
+ }
46
+
47
+ // Form elements
48
+ input,
49
+ button,
50
+ textarea,
51
+ select {
52
+ font: inherit;
53
+ color: inherit;
54
+ }
55
+
56
+ // Remove button styling
57
+ button {
58
+ background: none;
59
+ border: none;
60
+ cursor: pointer;
61
+ }
62
+
63
+ // Typography
64
+ p,
65
+ h1,
66
+ h2,
67
+ h3,
68
+ h4,
69
+ h5,
70
+ h6 {
71
+ overflow-wrap: break-word;
72
+ }
73
+
74
+ // Lists
75
+ ol,
76
+ ul {
77
+ list-style: none;
78
+ }
79
+
80
+ // Tables
81
+ table {
82
+ border-collapse: collapse;
83
+ border-spacing: 0;
84
+ }
85
+
86
+ // Links
87
+ a {
88
+ color: inherit;
89
+ text-decoration: inherit;
90
+ }
91
+
92
+ // Accessibility
93
+ [disabled] {
94
+ cursor: not-allowed;
95
+ }
96
+
97
+ // Hidden
98
+ [hidden] {
99
+ display: none !important;
100
+ }
@@ -0,0 +1,71 @@
1
+ // =============================================================================
2
+ // TYPOGRAPHY
3
+ // Base typographic styles (minimal, can be overridden with utilities)
4
+ // =============================================================================
5
+
6
+ @use '../abstracts/tokens' as *;
7
+
8
+ body {
9
+ font-family: $font-family-mono;
10
+ font-size: 1rem;
11
+ line-height: 1.5;
12
+ color: $color-black;
13
+ }
14
+
15
+ // Headings (minimal styling, use utilities for full control)
16
+ h1, h2, h3, h4, h5, h6 {
17
+ font-weight: 700;
18
+ line-height: 1.2;
19
+ }
20
+
21
+ // Code elements
22
+ code,
23
+ kbd,
24
+ samp,
25
+ pre {
26
+ font-family: $font-family-mono;
27
+ font-size: 0.875em;
28
+ }
29
+
30
+ pre {
31
+ overflow-x: auto;
32
+ }
33
+
34
+ // Inline code
35
+ code {
36
+ padding: 0.125rem 0.25rem;
37
+ border: 1px solid currentColor;
38
+ }
39
+
40
+ // Strong and emphasis
41
+ strong,
42
+ b {
43
+ font-weight: 700;
44
+ }
45
+
46
+ em,
47
+ i {
48
+ font-style: italic;
49
+ }
50
+
51
+ // Small text
52
+ small {
53
+ font-size: 0.875em;
54
+ }
55
+
56
+ // Subscript and superscript
57
+ sub,
58
+ sup {
59
+ font-size: 0.75em;
60
+ line-height: 0;
61
+ position: relative;
62
+ vertical-align: baseline;
63
+ }
64
+
65
+ sub {
66
+ bottom: -0.25em;
67
+ }
68
+
69
+ sup {
70
+ top: -0.5em;
71
+ }
package/scss/main.scss ADDED
@@ -0,0 +1,39 @@
1
+ /*!
2
+ * Concrete CSS Framework v1.0.0
3
+ * Copyright 2026
4
+ * Licensed under MIT
5
+ */
6
+
7
+ // =============================================================================
8
+ // CONFIGURATION LAYER
9
+ // Import all configuration, tokens, and variables first
10
+ // =============================================================================
11
+
12
+ @use 'abstracts/functions' as *;
13
+ @use 'abstracts/variables' as *;
14
+ @use 'abstracts/tokens' as *;
15
+ @use 'abstracts/mixins' as *;
16
+
17
+ // =============================================================================
18
+ // BASE LAYER
19
+ // Reset and foundational styles
20
+ // =============================================================================
21
+
22
+ @use 'base/reset';
23
+ @use 'base/typography';
24
+
25
+ // =============================================================================
26
+ // UTILITIES LAYER
27
+ // The core utility class generator
28
+ // =============================================================================
29
+
30
+ @use 'utilities/core';
31
+
32
+ // =============================================================================
33
+ // COMPONENTS (OPTIONAL)
34
+ // Uncomment to include optional pre-built components
35
+ // =============================================================================
36
+
37
+ // @use 'components/buttons';
38
+ // @use 'components/forms';
39
+ // @use 'components/cards';