spectrum-er 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,163 @@
1
+ // Reusable section styles
2
+ // =======================
3
+
4
+ // Mixins for reusable styles
5
+ @mixin section-title {
6
+ font-size: 1.8rem;
7
+ font-weight: 300;
8
+ margin-bottom: 0.5rem;
9
+ color: var(--text-color);
10
+ }
11
+
12
+ @mixin section-description {
13
+ font-size: 0.95rem;
14
+ color: var(--text-secondary);
15
+ margin-bottom: 1.5rem;
16
+ }
17
+
18
+ // Unified Section Styles
19
+ .section-header {
20
+ text-align: center;
21
+ margin-bottom: 2rem;
22
+
23
+ .section-title {
24
+ @include section-title;
25
+ }
26
+
27
+ .section-description {
28
+ @include section-description;
29
+ }
30
+ }
31
+
32
+ .section-footer {
33
+ text-align: center;
34
+ margin-top: 2rem;
35
+ }
36
+
37
+ .section-button {
38
+ display: inline-flex;
39
+ align-items: center;
40
+ gap: 0.5rem;
41
+ padding: 0.75rem 1.5rem;
42
+ font-size: 0.9rem;
43
+ font-weight: 400;
44
+ text-decoration: none;
45
+ color: var(--primary-color);
46
+ border: 1px solid var(--primary-color);
47
+ border-radius: var(--radius-md);
48
+ transition: all var(--transition-fast);
49
+
50
+ &:hover {
51
+ background-color: var(--primary-color);
52
+ color: white;
53
+ transform: translateY(-1px);
54
+ }
55
+
56
+ .btn-icon {
57
+ font-size: 0.8rem;
58
+ }
59
+ }
60
+
61
+ // Page header styles (reusable across all pages)
62
+ .page-header {
63
+ text-align: center;
64
+ margin-bottom: 2rem;
65
+
66
+ .page-title {
67
+ @include section-title;
68
+ }
69
+
70
+ .page-subtitle,
71
+ .page-description {
72
+ @include section-description;
73
+ }
74
+ }
75
+
76
+ // Content sections
77
+ .content-section {
78
+ margin-bottom: 3rem;
79
+
80
+ &:last-child {
81
+ margin-bottom: 0;
82
+ }
83
+ }
84
+
85
+ // Grid layouts
86
+ .section-grid {
87
+ display: grid;
88
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
89
+ gap: 2rem;
90
+ margin-bottom: 2rem;
91
+
92
+ @media (max-width: 767px) {
93
+ grid-template-columns: 1fr;
94
+ gap: 1.5rem;
95
+ }
96
+ }
97
+
98
+ .section-list {
99
+ display: flex;
100
+ flex-direction: column;
101
+ gap: 1.5rem;
102
+ margin-bottom: 2rem;
103
+ }
104
+
105
+ // Section spacing utilities
106
+ .section-spacing-sm {
107
+ margin-bottom: 1.5rem;
108
+ }
109
+
110
+ .section-spacing-md {
111
+ margin-bottom: 2rem;
112
+ }
113
+
114
+ .section-spacing-lg {
115
+ margin-bottom: 3rem;
116
+ }
117
+
118
+ .section-spacing-xl {
119
+ margin-bottom: 4rem;
120
+ }
121
+
122
+ // Section background variants
123
+ .section-bg-light {
124
+ background-color: var(--bg-secondary);
125
+ padding: 2rem;
126
+ border-radius: var(--radius-lg);
127
+ margin: 2rem 0;
128
+ }
129
+
130
+ .section-bg-primary {
131
+ background-color: var(--primary-color);
132
+ color: white;
133
+ padding: 2rem;
134
+ border-radius: var(--radius-lg);
135
+ margin: 2rem 0;
136
+
137
+ .section-title,
138
+ .page-title {
139
+ color: white;
140
+ }
141
+
142
+ .section-description,
143
+ .page-description {
144
+ color: rgba(255, 255, 255, 0.9);
145
+ }
146
+ }
147
+
148
+ // Section borders
149
+ .section-border-top {
150
+ border-top: 1px solid var(--border-color);
151
+ padding-top: 2rem;
152
+ }
153
+
154
+ .section-border-bottom {
155
+ border-bottom: 1px solid var(--border-color);
156
+ padding-bottom: 2rem;
157
+ }
158
+
159
+ .section-border-both {
160
+ border-top: 1px solid var(--border-color);
161
+ border-bottom: 1px solid var(--border-color);
162
+ padding: 2rem 0;
163
+ }
@@ -0,0 +1,301 @@
1
+ // Utility classes
2
+ // ===============
3
+
4
+ // Text utilities
5
+ .text-center { text-align: center; }
6
+ .text-left { text-align: left; }
7
+ .text-right { text-align: right; }
8
+
9
+ .text-xs { font-size: 0.75rem; }
10
+ .text-sm { font-size: 0.875rem; }
11
+ .text-base { font-size: 1rem; }
12
+ .text-lg { font-size: 1.125rem; }
13
+ .text-xl { font-size: 1.25rem; }
14
+ .text-2xl { font-size: 1.5rem; }
15
+ .text-3xl { font-size: 1.875rem; }
16
+ .text-4xl { font-size: 2.25rem; }
17
+
18
+ .font-light { font-weight: 300; }
19
+ .font-normal { font-weight: 400; }
20
+ .font-medium { font-weight: 500; }
21
+ .font-semibold { font-weight: 600; }
22
+ .font-bold { font-weight: 700; }
23
+
24
+ .leading-tight { line-height: 1.25; }
25
+ .leading-normal { line-height: 1.5; }
26
+ .leading-relaxed { line-height: 1.625; }
27
+ .leading-loose { line-height: 2; }
28
+
29
+ // Display utilities
30
+ .block { display: block; }
31
+ .inline-block { display: inline-block; }
32
+ .inline { display: inline; }
33
+ .flex { display: flex; }
34
+ .inline-flex { display: inline-flex; }
35
+ .grid { display: grid; }
36
+ .hidden { display: none; }
37
+
38
+ // Flexbox utilities
39
+ .flex-row { flex-direction: row; }
40
+ .flex-col { flex-direction: column; }
41
+ .flex-wrap { flex-wrap: wrap; }
42
+ .flex-nowrap { flex-wrap: nowrap; }
43
+
44
+ .justify-start { justify-content: flex-start; }
45
+ .justify-center { justify-content: center; }
46
+ .justify-end { justify-content: flex-end; }
47
+ .justify-between { justify-content: space-between; }
48
+ .justify-around { justify-content: space-around; }
49
+
50
+ .items-start { align-items: flex-start; }
51
+ .items-center { align-items: center; }
52
+ .items-end { align-items: flex-end; }
53
+ .items-stretch { align-items: stretch; }
54
+
55
+ .flex-1 { flex: 1; }
56
+ .flex-auto { flex: auto; }
57
+ .flex-none { flex: none; }
58
+
59
+ // Grid utilities
60
+ .grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
61
+ .grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
62
+ .grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
63
+ .grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
64
+
65
+ .gap-1 { gap: 0.25rem; }
66
+ .gap-2 { gap: 0.5rem; }
67
+ .gap-3 { gap: 0.75rem; }
68
+ .gap-4 { gap: 1rem; }
69
+ .gap-6 { gap: 1.5rem; }
70
+ .gap-8 { gap: 2rem; }
71
+
72
+ // Position utilities
73
+ .static { position: static; }
74
+ .relative { position: relative; }
75
+ .absolute { position: absolute; }
76
+ .fixed { position: fixed; }
77
+ .sticky { position: sticky; }
78
+
79
+ // Width utilities
80
+ .w-auto { width: auto; }
81
+ .w-full { width: 100%; }
82
+ .w-screen { width: 100vw; }
83
+ .w-max { width: max-content; }
84
+ .w-min { width: min-content; }
85
+
86
+ .max-w-xs { max-width: 20rem; }
87
+ .max-w-sm { max-width: 24rem; }
88
+ .max-w-md { max-width: 28rem; }
89
+ .max-w-lg { max-width: 32rem; }
90
+ .max-w-xl { max-width: 36rem; }
91
+ .max-w-2xl { max-width: 42rem; }
92
+ .max-w-3xl { max-width: 48rem; }
93
+ .max-w-4xl { max-width: 56rem; }
94
+ .max-w-5xl { max-width: 64rem; }
95
+ .max-w-6xl { max-width: 72rem; }
96
+ .max-w-full { max-width: 100%; }
97
+
98
+ // Height utilities
99
+ .h-auto { height: auto; }
100
+ .h-full { height: 100%; }
101
+ .h-screen { height: 100vh; }
102
+ .h-max { height: max-content; }
103
+ .h-min { height: min-content; }
104
+
105
+ // Margin utilities
106
+ .m-0 { margin: 0; }
107
+ .m-1 { margin: 0.25rem; }
108
+ .m-2 { margin: 0.5rem; }
109
+ .m-3 { margin: 0.75rem; }
110
+ .m-4 { margin: 1rem; }
111
+ .m-6 { margin: 1.5rem; }
112
+ .m-8 { margin: 2rem; }
113
+ .m-auto { margin: auto; }
114
+
115
+ .mx-auto { margin-left: auto; margin-right: auto; }
116
+ .my-auto { margin-top: auto; margin-bottom: auto; }
117
+
118
+ .mt-0 { margin-top: 0; }
119
+ .mt-1 { margin-top: 0.25rem; }
120
+ .mt-2 { margin-top: 0.5rem; }
121
+ .mt-3 { margin-top: 0.75rem; }
122
+ .mt-4 { margin-top: 1rem; }
123
+ .mt-6 { margin-top: 1.5rem; }
124
+ .mt-8 { margin-top: 2rem; }
125
+
126
+ .mb-0 { margin-bottom: 0; }
127
+ .mb-1 { margin-bottom: 0.25rem; }
128
+ .mb-2 { margin-bottom: 0.5rem; }
129
+ .mb-3 { margin-bottom: 0.75rem; }
130
+ .mb-4 { margin-bottom: 1rem; }
131
+ .mb-6 { margin-bottom: 1.5rem; }
132
+ .mb-8 { margin-bottom: 2rem; }
133
+
134
+ .ml-0 { margin-left: 0; }
135
+ .ml-1 { margin-left: 0.25rem; }
136
+ .ml-2 { margin-left: 0.5rem; }
137
+ .ml-3 { margin-left: 0.75rem; }
138
+ .ml-4 { margin-left: 1rem; }
139
+ .ml-6 { margin-left: 1.5rem; }
140
+ .ml-8 { margin-left: 2rem; }
141
+
142
+ .mr-0 { margin-right: 0; }
143
+ .mr-1 { margin-right: 0.25rem; }
144
+ .mr-2 { margin-right: 0.5rem; }
145
+ .mr-3 { margin-right: 0.75rem; }
146
+ .mr-4 { margin-right: 1rem; }
147
+ .mr-6 { margin-right: 1.5rem; }
148
+ .mr-8 { margin-right: 2rem; }
149
+
150
+ // Padding utilities
151
+ .p-0 { padding: 0; }
152
+ .p-1 { padding: 0.25rem; }
153
+ .p-2 { padding: 0.5rem; }
154
+ .p-3 { padding: 0.75rem; }
155
+ .p-4 { padding: 1rem; }
156
+ .p-6 { padding: 1.5rem; }
157
+ .p-8 { padding: 2rem; }
158
+
159
+ .px-0 { padding-left: 0; padding-right: 0; }
160
+ .px-1 { padding-left: 0.25rem; padding-right: 0.25rem; }
161
+ .px-2 { padding-left: 0.5rem; padding-right: 0.5rem; }
162
+ .px-3 { padding-left: 0.75rem; padding-right: 0.75rem; }
163
+ .px-4 { padding-left: 1rem; padding-right: 1rem; }
164
+ .px-6 { padding-left: 1.5rem; padding-right: 1.5rem; }
165
+ .px-8 { padding-left: 2rem; padding-right: 2rem; }
166
+
167
+ .py-0 { padding-top: 0; padding-bottom: 0; }
168
+ .py-1 { padding-top: 0.25rem; padding-bottom: 0.25rem; }
169
+ .py-2 { padding-top: 0.5rem; padding-bottom: 0.5rem; }
170
+ .py-3 { padding-top: 0.75rem; padding-bottom: 0.75rem; }
171
+ .py-4 { padding-top: 1rem; padding-bottom: 1rem; }
172
+ .py-6 { padding-top: 1.5rem; padding-bottom: 1.5rem; }
173
+ .py-8 { padding-top: 2rem; padding-bottom: 2rem; }
174
+
175
+ // Border utilities
176
+ .border { border: 1px solid var(--border-color); }
177
+ .border-0 { border: 0; }
178
+ .border-t { border-top: 1px solid var(--border-color); }
179
+ .border-b { border-bottom: 1px solid var(--border-color); }
180
+ .border-l { border-left: 1px solid var(--border-color); }
181
+ .border-r { border-right: 1px solid var(--border-color); }
182
+
183
+ .border-primary { border-color: var(--primary-color); }
184
+ .border-secondary { border-color: var(--secondary-color); }
185
+ .border-accent { border-color: var(--accent-color); }
186
+
187
+ // Border radius utilities
188
+ .rounded-none { border-radius: 0; }
189
+ .rounded-sm { border-radius: var(--radius-sm); }
190
+ .rounded { border-radius: var(--radius-md); }
191
+ .rounded-md { border-radius: var(--radius-md); }
192
+ .rounded-lg { border-radius: var(--radius-lg); }
193
+ .rounded-xl { border-radius: var(--radius-xl); }
194
+ .rounded-full { border-radius: var(--radius-full); }
195
+
196
+ // Shadow utilities
197
+ .shadow-none { box-shadow: none; }
198
+ .shadow-sm { box-shadow: 0 1px 3px var(--shadow-light); }
199
+ .shadow { box-shadow: 0 4px 6px var(--shadow-light); }
200
+ .shadow-md { box-shadow: 0 4px 6px var(--shadow-light); }
201
+ .shadow-lg { box-shadow: 0 10px 15px var(--shadow-medium); }
202
+ .shadow-xl { box-shadow: 0 20px 25px var(--shadow-dark); }
203
+
204
+ // Opacity utilities
205
+ .opacity-0 { opacity: 0; }
206
+ .opacity-25 { opacity: 0.25; }
207
+ .opacity-50 { opacity: 0.5; }
208
+ .opacity-75 { opacity: 0.75; }
209
+ .opacity-100 { opacity: 1; }
210
+
211
+ // Transition utilities
212
+ .transition-none { transition: none; }
213
+ .transition-all { transition: all var(--transition-normal); }
214
+ .transition-colors { transition: color var(--transition-normal), background-color var(--transition-normal), border-color var(--transition-normal); }
215
+ .transition-opacity { transition: opacity var(--transition-normal); }
216
+ .transition-transform { transition: transform var(--transition-normal); }
217
+
218
+ // Transform utilities
219
+ .transform { transform: translateZ(0); }
220
+ .scale-0 { transform: scale(0); }
221
+ .scale-50 { transform: scale(0.5); }
222
+ .scale-75 { transform: scale(0.75); }
223
+ .scale-90 { transform: scale(0.9); }
224
+ .scale-95 { transform: scale(0.95); }
225
+ .scale-100 { transform: scale(1); }
226
+ .scale-105 { transform: scale(1.05); }
227
+ .scale-110 { transform: scale(1.1); }
228
+ .scale-125 { transform: scale(1.25); }
229
+ .scale-150 { transform: scale(1.5); }
230
+
231
+ // Hover utilities
232
+ .hover-scale:hover { transform: scale(1.05); }
233
+ .hover-shadow:hover { box-shadow: 0 4px 12px var(--shadow-medium); }
234
+ .hover-opacity:hover { opacity: 0.8; }
235
+
236
+ // Focus utilities
237
+ .focus-outline:focus { outline: 2px solid var(--primary-color); outline-offset: 2px; }
238
+ .focus-ring:focus { box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.25); }
239
+
240
+ // Screen reader utilities
241
+ .sr-only {
242
+ position: absolute;
243
+ width: 1px;
244
+ height: 1px;
245
+ padding: 0;
246
+ margin: -1px;
247
+ overflow: hidden;
248
+ clip: rect(0, 0, 0, 0);
249
+ white-space: nowrap;
250
+ border: 0;
251
+ }
252
+
253
+ // Responsive utilities
254
+ @media (max-width: 767px) {
255
+ .sm\:hidden { display: none; }
256
+ .sm\:block { display: block; }
257
+ .sm\:flex { display: flex; }
258
+ .sm\:grid { display: grid; }
259
+
260
+ .sm\:text-xs { font-size: 0.75rem; }
261
+ .sm\:text-sm { font-size: 0.875rem; }
262
+ .sm\:text-base { font-size: 1rem; }
263
+ .sm\:text-lg { font-size: 1.125rem; }
264
+
265
+ .sm\:p-2 { padding: 0.5rem; }
266
+ .sm\:p-4 { padding: 1rem; }
267
+ .sm\:m-2 { margin: 0.5rem; }
268
+ .sm\:m-4 { margin: 1rem; }
269
+ }
270
+
271
+ @media (min-width: 768px) {
272
+ .md\:hidden { display: none; }
273
+ .md\:block { display: block; }
274
+ .md\:flex { display: flex; }
275
+ .md\:grid { display: grid; }
276
+
277
+ .md\:text-lg { font-size: 1.125rem; }
278
+ .md\:text-xl { font-size: 1.25rem; }
279
+ .md\:text-2xl { font-size: 1.5rem; }
280
+
281
+ .md\:p-4 { padding: 1rem; }
282
+ .md\:p-6 { padding: 1.5rem; }
283
+ .md\:m-4 { margin: 1rem; }
284
+ .md\:m-6 { margin: 1.5rem; }
285
+ }
286
+
287
+ @media (min-width: 1024px) {
288
+ .lg\:hidden { display: none; }
289
+ .lg\:block { display: block; }
290
+ .lg\:flex { display: flex; }
291
+ .lg\:grid { display: grid; }
292
+
293
+ .lg\:text-xl { font-size: 1.25rem; }
294
+ .lg\:text-2xl { font-size: 1.5rem; }
295
+ .lg\:text-3xl { font-size: 1.875rem; }
296
+
297
+ .lg\:p-6 { padding: 1.5rem; }
298
+ .lg\:p-8 { padding: 2rem; }
299
+ .lg\:m-6 { margin: 1.5rem; }
300
+ .lg\:m-8 { margin: 2rem; }
301
+ }
@@ -0,0 +1,21 @@
1
+ ---
2
+ # Only the main Sass file needs front matter (the dashes are enough)
3
+ ---
4
+
5
+ @use "color-variables";
6
+ @use "base";
7
+ @use "components";
8
+ @use "layouts";
9
+ @use "sections";
10
+ @use "utilities";
11
+
12
+ // Main stylesheet - imports all modular styles
13
+ // ============================================
14
+
15
+ // All styles are now organized in modular files:
16
+ // - _color-variables.scss: CSS custom properties and color system
17
+ // - _base.scss: Base styles and typography
18
+ // - _components.scss: Reusable component styles
19
+ // - _layouts.scss: Page-specific layout styles
20
+ // - _sections.scss: Reusable section styles and mixins
21
+ // - _utilities.scss: Utility classes for rapid development
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file