@medcore-ua/concrete-css 1.0.0 → 1.2.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.
Files changed (39) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +11 -11
  3. package/dist/concrete.css +10219 -0
  4. package/dist/concrete.css.map +1 -0
  5. package/dist/concrete.js +89 -0
  6. package/dist/concrete.min.css +5 -0
  7. package/dist/concrete.min.css.map +1 -0
  8. package/package.json +8 -8
  9. package/scss/abstracts/_mixins.scss +48 -11
  10. package/scss/abstracts/_tokens.scss +14 -2
  11. package/scss/components/_accordion.scss +92 -0
  12. package/scss/components/_article.scss +57 -0
  13. package/scss/components/_aside.scss +33 -0
  14. package/scss/components/_badge.scss +52 -0
  15. package/scss/components/_buttons.scss +54 -0
  16. package/scss/components/_card.scss +54 -0
  17. package/scss/components/_category.scss +22 -0
  18. package/scss/components/_feature.scss +26 -0
  19. package/scss/components/_footer.scss +35 -0
  20. package/scss/components/_forms.scss +45 -0
  21. package/scss/components/_grid.scss +48 -0
  22. package/scss/components/_header.scss +78 -0
  23. package/scss/components/_hero.scss +134 -0
  24. package/scss/components/_index.scss +29 -0
  25. package/scss/components/_info-block.scss +42 -0
  26. package/scss/components/_layout.scss +73 -0
  27. package/scss/components/_list.scss +58 -0
  28. package/scss/components/_map.scss +20 -0
  29. package/scss/components/_nav.scss +131 -0
  30. package/scss/components/_page.scss +39 -0
  31. package/scss/components/_panel.scss +53 -0
  32. package/scss/components/_pill.scss +38 -0
  33. package/scss/components/_profile-card.scss +55 -0
  34. package/scss/components/_schedule.scss +28 -0
  35. package/scss/components/_table.scss +50 -0
  36. package/scss/components/_utilities.scss +62 -0
  37. package/scss/main.scss +3 -5
  38. package/scss/utilities/_api.scss +20 -1
  39. package/scss/utilities/_core.scss +21 -5
@@ -0,0 +1,55 @@
1
+ // =============================================================================
2
+ // PROFILE CARD
3
+ // =============================================================================
4
+
5
+ @use 'sass:map';
6
+ @use '../abstracts/variables' as *;
7
+ @use '../abstracts/tokens' as *;
8
+
9
+ .#{$prefix}profile-card {
10
+ border: map.get($border-widths, '2') solid $color-black;
11
+ background: $color-white;
12
+ padding: 0.8rem;
13
+ display: grid;
14
+ grid-template-columns: 72px minmax(0, 1fr);
15
+ gap: 0.7rem;
16
+ }
17
+
18
+ .#{$prefix}profile-card__avatar {
19
+ border: map.get($border-widths, '4') solid $color-black;
20
+ background: $color-gray-300;
21
+ aspect-ratio: 1;
22
+ display: flex;
23
+ align-items: center;
24
+ justify-content: center;
25
+ font-size: 0.7rem;
26
+ text-transform: uppercase;
27
+ height: 72px;
28
+ flex-shrink: 0;
29
+ overflow: hidden;
30
+ }
31
+
32
+ .#{$prefix}profile-card__avatar img {
33
+ width: 100%;
34
+ height: 100%;
35
+ object-fit: cover;
36
+ }
37
+
38
+ .#{$prefix}profile-card__name {
39
+ text-transform: uppercase;
40
+ font-weight: 900;
41
+ font-size: 0.85rem;
42
+ margin-bottom: 0.1rem;
43
+ }
44
+
45
+ .#{$prefix}profile-card__role {
46
+ font-size: 0.75rem;
47
+ margin: 0 0 0.4rem;
48
+ font-weight: 700;
49
+ }
50
+
51
+ .#{$prefix}profile-card__meta {
52
+ font-size: 0.75rem;
53
+ line-height: 1.4;
54
+ margin-bottom: 0.5rem;
55
+ }
@@ -0,0 +1,28 @@
1
+ // =============================================================================
2
+ // SCHEDULE
3
+ // =============================================================================
4
+
5
+ @use 'sass:map';
6
+ @use '../abstracts/variables' as *;
7
+ @use '../abstracts/tokens' as *;
8
+
9
+ .#{$prefix}schedule {
10
+ list-style: none;
11
+ padding: 0;
12
+ margin: 0.2rem 0 0;
13
+ font-size: 0.8rem;
14
+ }
15
+
16
+ .#{$prefix}schedule__day {
17
+ font-weight: 700;
18
+ }
19
+
20
+ .#{$prefix}schedule__hours {
21
+ float: right;
22
+ font-size: 0.8rem;
23
+
24
+ @media (max-width: 360px) {
25
+ float: none;
26
+ display: block;
27
+ }
28
+ }
@@ -0,0 +1,50 @@
1
+ // =============================================================================
2
+ // TABLE
3
+ // =============================================================================
4
+
5
+ @use 'sass:map';
6
+ @use '../abstracts/variables' as *;
7
+ @use '../abstracts/tokens' as *;
8
+
9
+ .#{$prefix}table-wrapper {
10
+ width: 100%;
11
+ overflow-x: auto;
12
+ margin-bottom: 0.5rem;
13
+ border: map.get($border-widths, '1') solid $color-black;
14
+ }
15
+
16
+ .#{$prefix}data-table {
17
+ width: 100%;
18
+ border-collapse: collapse;
19
+ font-size: 0.8rem;
20
+ }
21
+
22
+ .#{$prefix}data-table th,
23
+ .#{$prefix}data-table td {
24
+ border: map.get($border-widths, '1') solid $color-black;
25
+ padding: 0.35rem 0.4rem;
26
+ text-align: left;
27
+ vertical-align: top;
28
+ }
29
+
30
+ .#{$prefix}data-table th {
31
+ text-transform: uppercase;
32
+ font-size: 0.7rem;
33
+ background: transparent;
34
+ }
35
+
36
+ .#{$prefix}data-table td a {
37
+ font-weight: 700;
38
+ text-decoration: underline;
39
+ text-underline-offset: 3px;
40
+ }
41
+
42
+ .#{$prefix}table-category {
43
+ font-size: 0.75rem;
44
+ text-transform: uppercase;
45
+ font-weight: 700;
46
+ letter-spacing: 0.08em;
47
+ border-bottom: map.get($border-widths, '2') solid $color-black;
48
+ padding: 0.4rem 0.7rem;
49
+ background: $color-gray-200;
50
+ }
@@ -0,0 +1,62 @@
1
+ // =============================================================================
2
+ // UTILITY COMPONENTS
3
+ // =============================================================================
4
+
5
+ @use 'sass:map';
6
+ @use '../abstracts/variables' as *;
7
+ @use '../abstracts/tokens' as *;
8
+
9
+ // Display utilities
10
+ .#{$prefix}open {
11
+ display: block !important;
12
+ }
13
+
14
+ // Background utilities
15
+ .#{$prefix}bg-alt {
16
+ background: $color-white;
17
+ }
18
+
19
+ .#{$prefix}bg-base {
20
+ background: $color-gray-100;
21
+ }
22
+
23
+ // Text utilities
24
+ .#{$prefix}text-center {
25
+ text-align: center;
26
+ }
27
+
28
+ .#{$prefix}text-right {
29
+ text-align: right;
30
+ }
31
+
32
+ // Width utilities
33
+ .#{$prefix}w-full {
34
+ width: 100%;
35
+ }
36
+
37
+ .#{$prefix}max-w-full {
38
+ max-width: 100%;
39
+ }
40
+
41
+ // Responsive grid helpers
42
+ @media (min-width: 720px) {
43
+ .#{$prefix}grid-2-1 {
44
+ grid-template-columns: 2fr 1fr;
45
+ }
46
+
47
+ .#{$prefix}grid-3-2 {
48
+ grid-template-columns: 3fr 2fr;
49
+ }
50
+ }
51
+
52
+ @media (min-width: 850px) {
53
+ .#{$prefix}grid-2-3 {
54
+ grid-template-columns: 2fr 3fr;
55
+ }
56
+ }
57
+
58
+ @media (min-width: 992px) {
59
+ .#{$prefix}grid-3-1 {
60
+ grid-template-columns: 3fr 1fr;
61
+ }
62
+ }
package/scss/main.scss CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * Concrete CSS Framework v1.0.0
2
+ * Concrete CSS Framework v1.0.1
3
3
  * Copyright 2026
4
- * Licensed under MIT
4
+ * Licensed under CSSM-ULv2
5
5
  */
6
6
 
7
7
  // =============================================================================
@@ -34,6 +34,4 @@
34
34
  // Uncomment to include optional pre-built components
35
35
  // =============================================================================
36
36
 
37
- // @use 'components/buttons';
38
- // @use 'components/forms';
39
- // @use 'components/cards';
37
+ @use 'components';
@@ -130,7 +130,13 @@ $utilities: (
130
130
  '4': repeat(4, minmax(0, 1fr)),
131
131
  '6': repeat(6, minmax(0, 1fr)),
132
132
  '12': repeat(12, minmax(0, 1fr)),
133
- 'none': none
133
+ 'none': none,
134
+ '2-1': 2fr 1fr,
135
+ '3-2': 3fr 2fr,
136
+ '3-1': 3fr 1fr,
137
+ '4-1': 4fr 1fr,
138
+ 'main': minmax(0, 2fr) minmax(260px, 1fr),
139
+ 'main-lg': minmax(0, 4fr) minmax(320px, 2fr)
134
140
  ),
135
141
  'responsive': true,
136
142
  'states': false
@@ -313,6 +319,19 @@ $utilities: (
313
319
  'states': true
314
320
  ),
315
321
 
322
+ 'text-decoration-style': (
323
+ 'prefix': 'underline',
324
+ 'values': (
325
+ 'solid': solid,
326
+ 'double': double,
327
+ 'dotted': dotted,
328
+ 'dashed': dashed,
329
+ 'wavy': wavy
330
+ ),
331
+ 'responsive': false,
332
+ 'states': true
333
+ ),
334
+
316
335
  // ==========================================================================
317
336
  // EFFECTS
318
337
  // ==========================================================================
@@ -3,6 +3,8 @@
3
3
  // The main loop that generates all utility classes
4
4
  // =============================================================================
5
5
 
6
+ @use 'sass:map';
7
+ @use 'sass:string';
6
8
  @use '../abstracts/functions' as *;
7
9
  @use '../abstracts/variables' as *;
8
10
  @use '../abstracts/tokens' as *;
@@ -42,14 +44,21 @@
42
44
  @include responsive-utilities($breakpoint, $utilities);
43
45
 
44
46
  // Responsive spacing
45
- $bp-value: map-get($breakpoints, $breakpoint);
47
+ $bp-value: map.get($breakpoints, $breakpoint);
46
48
  @media (min-width: $bp-value) {
47
49
  // Responsive margin
48
50
  @each $dir-key, $dir-value in $directions {
49
51
  @each $size-key, $size-value in $spacing {
50
- $class-name: if($dir-key == '', 'm-#{$size-key}', 'm#{$dir-key}-#{$size-key}');
52
+ $class-name: 'm#{$dir-key}-#{$size-key}';
53
+ @if $dir-key == '' {
54
+ $class-name: 'm-#{$size-key}';
55
+ }
56
+ $bp-escaped: $breakpoint;
57
+ @if string.slice($breakpoint, 1, 1) == '2' {
58
+ $bp-escaped: '\\32 ';
59
+ }
51
60
 
52
- .#{$breakpoint}\:#{$class-name} {
61
+ .#{$bp-escaped}\:#{$class-name} {
53
62
  @if $dir-key == '' {
54
63
  margin: $size-value;
55
64
  } @else if $dir-key == 'x' {
@@ -68,9 +77,16 @@
68
77
  // Responsive padding
69
78
  @each $dir-key, $dir-value in $directions {
70
79
  @each $size-key, $size-value in $spacing {
71
- $class-name: if($dir-key == '', 'p-#{$size-key}', 'p#{$dir-key}-#{$size-key}');
80
+ $class-name: 'p#{$dir-key}-#{$size-key}';
81
+ @if $dir-key == '' {
82
+ $class-name: 'p-#{$size-key}';
83
+ }
84
+ $bp-escaped: $breakpoint;
85
+ @if string.slice($breakpoint, 1, 1) == '2' {
86
+ $bp-escaped: '\\32 ';
87
+ }
72
88
 
73
- .#{$breakpoint}\:#{$class-name} {
89
+ .#{$bp-escaped}\:#{$class-name} {
74
90
  @if $dir-key == '' {
75
91
  padding: $size-value;
76
92
  } @else if $dir-key == 'x' {