zenkit-css 1.2.3 → 1.3.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 (73) hide show
  1. package/dist/zenkit.css +6106 -0
  2. package/dist/zenkit.css.map +1 -1
  3. package/dist/zenkit.min.css +1 -1
  4. package/dist/zenkit.min.css.map +1 -1
  5. package/package.json +1 -1
  6. package/scss/components/_actionicon.scss +141 -0
  7. package/scss/components/_angleslider.scss +75 -0
  8. package/scss/components/_appbar.scss +96 -0
  9. package/scss/components/_appshell.scss +137 -0
  10. package/scss/components/_backdrop.scss +66 -0
  11. package/scss/components/_backgroundimage.scss +81 -0
  12. package/scss/components/_blockquote.scss +70 -0
  13. package/scss/components/_center.scss +33 -0
  14. package/scss/components/_chart.scss +100 -0
  15. package/scss/components/_checkboxcard.scss +105 -0
  16. package/scss/components/_checkboxgroup.scss +45 -0
  17. package/scss/components/_collapse.scss +76 -0
  18. package/scss/components/_colorinput.scss +103 -0
  19. package/scss/components/_colorswatch.scss +94 -0
  20. package/scss/components/_combobox.scss +157 -0
  21. package/scss/components/_contextmenu.scss +150 -0
  22. package/scss/components/_copybutton.scss +117 -0
  23. package/scss/components/_datagrid.scss +200 -0
  24. package/scss/components/_datalist.scss +104 -0
  25. package/scss/components/_datetimepicker.scss +123 -0
  26. package/scss/components/_dialog.scss +176 -0
  27. package/scss/components/_dropzone.scss +159 -0
  28. package/scss/components/_filebutton.scss +64 -0
  29. package/scss/components/_fileinput.scss +157 -0
  30. package/scss/components/_floatcomponent.scss +128 -0
  31. package/scss/components/_floatingindicator.scss +49 -0
  32. package/scss/components/_gauge.scss +143 -0
  33. package/scss/components/_group.scss +100 -0
  34. package/scss/components/_heading.scss +143 -0
  35. package/scss/components/_highlight.scss +60 -0
  36. package/scss/components/_indicator.scss +171 -0
  37. package/scss/components/_infinitescroll.scss +53 -0
  38. package/scss/components/_jsoninput.scss +124 -0
  39. package/scss/components/_label.scss +77 -0
  40. package/scss/components/_loadingoverlay.scss +80 -0
  41. package/scss/components/_mark.scss +72 -0
  42. package/scss/components/_monthpicker.scss +141 -0
  43. package/scss/components/_multiselect.scss +192 -0
  44. package/scss/components/_navlink.scss +127 -0
  45. package/scss/components/_overlay.scss +97 -0
  46. package/scss/components/_paper.scss +98 -0
  47. package/scss/components/_pill.scss +141 -0
  48. package/scss/components/_radiocard.scss +122 -0
  49. package/scss/components/_rangeslider.scss +146 -0
  50. package/scss/components/_richtexteditor.scss +222 -0
  51. package/scss/components/_ringprogress.scss +101 -0
  52. package/scss/components/_scrollshadow.scss +152 -0
  53. package/scss/components/_semicircleprogress.scss +116 -0
  54. package/scss/components/_separator.scss +126 -0
  55. package/scss/components/_simplegrid.scss +129 -0
  56. package/scss/components/_skipnavlink.scss +51 -0
  57. package/scss/components/_slider.scss +199 -0
  58. package/scss/components/_sortable.scss +115 -0
  59. package/scss/components/_sparkline.scss +124 -0
  60. package/scss/components/_splitbutton.scss +153 -0
  61. package/scss/components/_spoiler.scss +73 -0
  62. package/scss/components/_stepper.scss +153 -0
  63. package/scss/components/_tableofcontents.scss +107 -0
  64. package/scss/components/_tagsinput.scss +158 -0
  65. package/scss/components/_textcomponent.scss +183 -0
  66. package/scss/components/_themeicon.scss +121 -0
  67. package/scss/components/_togglegroup.scss +137 -0
  68. package/scss/components/_toolbar.scss +140 -0
  69. package/scss/components/_unstyledbutton.scss +43 -0
  70. package/scss/components/_user.scss +118 -0
  71. package/scss/components/_virtuallist.scss +118 -0
  72. package/scss/components/_yearpicker.scss +145 -0
  73. package/scss/zenkit.scss +75 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zenkit-css",
3
- "version": "1.2.3",
3
+ "version": "1.3.0",
4
4
  "description": "A minimal, modern CSS framework for peaceful development",
5
5
  "main": "dist/zenkit.css",
6
6
  "scripts": {
@@ -0,0 +1,141 @@
1
+ // ========================================
2
+ // ActionIcon Component (Mantine-style)
3
+ // ========================================
4
+
5
+ .action-icon {
6
+ --zk-action-icon-size: 28px;
7
+ --zk-action-icon-color: var(--zk-text-secondary);
8
+ --zk-action-icon-bg: transparent;
9
+ --zk-action-icon-hover-bg: var(--zk-bg-secondary);
10
+ --zk-action-icon-radius: var(--zk-radius-sm);
11
+
12
+ display: inline-flex;
13
+ align-items: center;
14
+ justify-content: center;
15
+ width: var(--zk-action-icon-size);
16
+ height: var(--zk-action-icon-size);
17
+ min-width: var(--zk-action-icon-size);
18
+ padding: 0;
19
+ background: var(--zk-action-icon-bg);
20
+ color: var(--zk-action-icon-color);
21
+ border: none;
22
+ border-radius: var(--zk-action-icon-radius);
23
+ cursor: pointer;
24
+ transition: background-color 0.15s ease, color 0.15s ease;
25
+
26
+ &:hover:not(:disabled) {
27
+ background: var(--zk-action-icon-hover-bg);
28
+ color: var(--zk-text-primary);
29
+ }
30
+
31
+ &:active:not(:disabled) {
32
+ transform: scale(0.95);
33
+ }
34
+
35
+ &:disabled {
36
+ opacity: 0.5;
37
+ cursor: not-allowed;
38
+ }
39
+
40
+ // Sizes
41
+ &-xs {
42
+ --zk-action-icon-size: 18px;
43
+ }
44
+
45
+ &-sm {
46
+ --zk-action-icon-size: 22px;
47
+ }
48
+
49
+ &-md {
50
+ --zk-action-icon-size: 28px;
51
+ }
52
+
53
+ &-lg {
54
+ --zk-action-icon-size: 34px;
55
+ }
56
+
57
+ &-xl {
58
+ --zk-action-icon-size: 44px;
59
+ }
60
+
61
+ // Variants
62
+ &-filled {
63
+ --zk-action-icon-bg: var(--zk-primary);
64
+ --zk-action-icon-color: #fff;
65
+ --zk-action-icon-hover-bg: var(--zk-primary-dark);
66
+
67
+ &:hover:not(:disabled) {
68
+ color: #fff;
69
+ }
70
+ }
71
+
72
+ &-light {
73
+ --zk-action-icon-bg: rgba(var(--zk-primary-rgb), 0.1);
74
+ --zk-action-icon-color: var(--zk-primary);
75
+ --zk-action-icon-hover-bg: rgba(var(--zk-primary-rgb), 0.2);
76
+
77
+ &:hover:not(:disabled) {
78
+ color: var(--zk-primary);
79
+ }
80
+ }
81
+
82
+ &-outline {
83
+ --zk-action-icon-bg: transparent;
84
+ --zk-action-icon-color: var(--zk-primary);
85
+ border: 1px solid var(--zk-primary);
86
+
87
+ &:hover:not(:disabled) {
88
+ --zk-action-icon-bg: rgba(var(--zk-primary-rgb), 0.1);
89
+ color: var(--zk-primary);
90
+ }
91
+ }
92
+
93
+ &-subtle {
94
+ --zk-action-icon-bg: transparent;
95
+ --zk-action-icon-hover-bg: var(--zk-bg-secondary);
96
+ }
97
+
98
+ &-transparent {
99
+ --zk-action-icon-bg: transparent;
100
+ --zk-action-icon-hover-bg: transparent;
101
+
102
+ &:hover:not(:disabled) {
103
+ color: var(--zk-primary);
104
+ }
105
+ }
106
+
107
+ // Colors
108
+ &-primary {
109
+ --zk-action-icon-color: var(--zk-primary);
110
+ }
111
+
112
+ &-success {
113
+ --zk-action-icon-color: var(--zk-success);
114
+ }
115
+
116
+ &-warning {
117
+ --zk-action-icon-color: var(--zk-warning);
118
+ }
119
+
120
+ &-danger {
121
+ --zk-action-icon-color: var(--zk-danger);
122
+ }
123
+
124
+ // Loading
125
+ &-loading {
126
+ pointer-events: none;
127
+
128
+ .action-icon-loader {
129
+ animation: spin 1s linear infinite;
130
+ }
131
+ }
132
+ }
133
+
134
+ @keyframes spin {
135
+ from {
136
+ transform: rotate(0deg);
137
+ }
138
+ to {
139
+ transform: rotate(360deg);
140
+ }
141
+ }
@@ -0,0 +1,75 @@
1
+ // ========================================
2
+ // AngleSlider Component
3
+ // ========================================
4
+
5
+ .angle-slider {
6
+ --zk-angle-slider-size: 120px;
7
+ --zk-angle-slider-track-color: var(--zk-border-color);
8
+ --zk-angle-slider-thumb-color: var(--zk-primary);
9
+ --zk-angle-slider-thumb-size: 16px;
10
+
11
+ position: relative;
12
+ width: var(--zk-angle-slider-size);
13
+ height: var(--zk-angle-slider-size);
14
+ border-radius: 50%;
15
+ border: 2px solid var(--zk-angle-slider-track-color);
16
+ background: var(--zk-bg-secondary);
17
+ cursor: pointer;
18
+ touch-action: none;
19
+
20
+ &-thumb {
21
+ position: absolute;
22
+ width: var(--zk-angle-slider-thumb-size);
23
+ height: var(--zk-angle-slider-thumb-size);
24
+ background: var(--zk-angle-slider-thumb-color);
25
+ border-radius: 50%;
26
+ transform: translate(-50%, -50%);
27
+ box-shadow: var(--zk-shadow-sm);
28
+ transition: transform 0.1s ease;
29
+
30
+ &:hover {
31
+ transform: translate(-50%, -50%) scale(1.2);
32
+ }
33
+ }
34
+
35
+ &-center {
36
+ position: absolute;
37
+ top: 50%;
38
+ left: 50%;
39
+ transform: translate(-50%, -50%);
40
+ font-size: 0.875rem;
41
+ font-weight: 500;
42
+ color: var(--zk-text-primary);
43
+ }
44
+
45
+ &-marks {
46
+ position: absolute;
47
+ inset: 0;
48
+ pointer-events: none;
49
+ }
50
+
51
+ &-mark {
52
+ position: absolute;
53
+ width: 2px;
54
+ height: 8px;
55
+ background: var(--zk-angle-slider-track-color);
56
+ }
57
+
58
+ // Sizes
59
+ &-sm {
60
+ --zk-angle-slider-size: 80px;
61
+ --zk-angle-slider-thumb-size: 12px;
62
+ }
63
+
64
+ &-lg {
65
+ --zk-angle-slider-size: 160px;
66
+ --zk-angle-slider-thumb-size: 20px;
67
+ }
68
+
69
+ // Disabled state
70
+ &-disabled {
71
+ opacity: 0.5;
72
+ cursor: not-allowed;
73
+ pointer-events: none;
74
+ }
75
+ }
@@ -0,0 +1,96 @@
1
+ // ========================================
2
+ // AppBar Component
3
+ // ========================================
4
+
5
+ .appbar {
6
+ --zk-appbar-height: 64px;
7
+ --zk-appbar-bg: var(--zk-bg-primary);
8
+ --zk-appbar-border-color: var(--zk-border-color);
9
+ --zk-appbar-shadow: var(--zk-shadow-sm);
10
+
11
+ display: flex;
12
+ align-items: center;
13
+ height: var(--zk-appbar-height);
14
+ padding: 0 1rem;
15
+ background: var(--zk-appbar-bg);
16
+ border-bottom: 1px solid var(--zk-appbar-border-color);
17
+ box-shadow: var(--zk-appbar-shadow);
18
+ position: relative;
19
+ z-index: 1000;
20
+
21
+ &-fixed {
22
+ position: fixed;
23
+ top: 0;
24
+ left: 0;
25
+ right: 0;
26
+ }
27
+
28
+ &-sticky {
29
+ position: sticky;
30
+ top: 0;
31
+ }
32
+
33
+ &-start,
34
+ &-center,
35
+ &-end {
36
+ display: flex;
37
+ align-items: center;
38
+ gap: 0.5rem;
39
+ }
40
+
41
+ &-start {
42
+ flex: 0 0 auto;
43
+ }
44
+
45
+ &-center {
46
+ flex: 1 1 auto;
47
+ justify-content: center;
48
+ }
49
+
50
+ &-end {
51
+ flex: 0 0 auto;
52
+ margin-left: auto;
53
+ }
54
+
55
+ &-title {
56
+ font-size: 1.25rem;
57
+ font-weight: 600;
58
+ color: var(--zk-text-primary);
59
+ margin: 0;
60
+ }
61
+
62
+ // Variants
63
+ &-primary {
64
+ --zk-appbar-bg: var(--zk-primary);
65
+ color: #fff;
66
+
67
+ .appbar-title {
68
+ color: #fff;
69
+ }
70
+ }
71
+
72
+ &-transparent {
73
+ --zk-appbar-bg: transparent;
74
+ --zk-appbar-shadow: none;
75
+ border-bottom: none;
76
+ }
77
+
78
+ &-dense {
79
+ --zk-appbar-height: 48px;
80
+ }
81
+
82
+ // Prominent (taller)
83
+ &-prominent {
84
+ --zk-appbar-height: 128px;
85
+ flex-direction: column;
86
+ justify-content: flex-end;
87
+ padding-bottom: 1rem;
88
+ }
89
+ }
90
+
91
+ // Dark mode
92
+ [data-theme="dark"] {
93
+ .appbar {
94
+ --zk-appbar-bg: var(--zk-bg-secondary);
95
+ }
96
+ }
@@ -0,0 +1,137 @@
1
+ // ========================================
2
+ // AppShell Component
3
+ // ========================================
4
+
5
+ .appshell {
6
+ --zk-appshell-header-height: 60px;
7
+ --zk-appshell-footer-height: 60px;
8
+ --zk-appshell-navbar-width: 250px;
9
+ --zk-appshell-aside-width: 250px;
10
+
11
+ display: flex;
12
+ flex-direction: column;
13
+ min-height: 100vh;
14
+ background: var(--zk-bg-primary);
15
+
16
+ &-header {
17
+ position: fixed;
18
+ top: 0;
19
+ left: 0;
20
+ right: 0;
21
+ height: var(--zk-appshell-header-height);
22
+ background: var(--zk-bg-primary);
23
+ border-bottom: 1px solid var(--zk-border-color);
24
+ z-index: 1000;
25
+ display: flex;
26
+ align-items: center;
27
+ padding: 0 1rem;
28
+ }
29
+
30
+ &-navbar {
31
+ position: fixed;
32
+ top: var(--zk-appshell-header-height);
33
+ left: 0;
34
+ bottom: 0;
35
+ width: var(--zk-appshell-navbar-width);
36
+ background: var(--zk-bg-primary);
37
+ border-right: 1px solid var(--zk-border-color);
38
+ z-index: 900;
39
+ overflow-y: auto;
40
+ transition: transform 0.3s ease, width 0.3s ease;
41
+
42
+ &-collapsed {
43
+ width: 60px;
44
+ }
45
+
46
+ &-hidden {
47
+ transform: translateX(-100%);
48
+ }
49
+ }
50
+
51
+ &-aside {
52
+ position: fixed;
53
+ top: var(--zk-appshell-header-height);
54
+ right: 0;
55
+ bottom: 0;
56
+ width: var(--zk-appshell-aside-width);
57
+ background: var(--zk-bg-primary);
58
+ border-left: 1px solid var(--zk-border-color);
59
+ z-index: 900;
60
+ overflow-y: auto;
61
+ transition: transform 0.3s ease;
62
+
63
+ &-hidden {
64
+ transform: translateX(100%);
65
+ }
66
+ }
67
+
68
+ &-main {
69
+ flex: 1;
70
+ margin-top: var(--zk-appshell-header-height);
71
+ margin-left: var(--zk-appshell-navbar-width);
72
+ margin-right: 0;
73
+ padding: 1rem;
74
+ transition: margin 0.3s ease;
75
+
76
+ &.with-aside {
77
+ margin-right: var(--zk-appshell-aside-width);
78
+ }
79
+ }
80
+
81
+ &-footer {
82
+ position: fixed;
83
+ bottom: 0;
84
+ left: var(--zk-appshell-navbar-width);
85
+ right: 0;
86
+ height: var(--zk-appshell-footer-height);
87
+ background: var(--zk-bg-primary);
88
+ border-top: 1px solid var(--zk-border-color);
89
+ z-index: 1000;
90
+ display: flex;
91
+ align-items: center;
92
+ padding: 0 1rem;
93
+ }
94
+
95
+ // Without header
96
+ &-no-header {
97
+ .appshell-navbar,
98
+ .appshell-aside {
99
+ top: 0;
100
+ }
101
+
102
+ .appshell-main {
103
+ margin-top: 0;
104
+ }
105
+ }
106
+
107
+ // Without navbar
108
+ &-no-navbar {
109
+ .appshell-main {
110
+ margin-left: 0;
111
+ }
112
+
113
+ .appshell-footer {
114
+ left: 0;
115
+ }
116
+ }
117
+
118
+ // Responsive
119
+ @media (max-width: 768px) {
120
+ &-navbar {
121
+ transform: translateX(-100%);
122
+
123
+ &-open {
124
+ transform: translateX(0);
125
+ }
126
+ }
127
+
128
+ &-main {
129
+ margin-left: 0;
130
+ margin-right: 0;
131
+ }
132
+
133
+ &-footer {
134
+ left: 0;
135
+ }
136
+ }
137
+ }
@@ -0,0 +1,66 @@
1
+ // ========================================
2
+ // Backdrop Component
3
+ // ========================================
4
+
5
+ .backdrop {
6
+ --zk-backdrop-bg: rgba(0, 0, 0, 0.5);
7
+ --zk-backdrop-blur: 0;
8
+ --zk-backdrop-z-index: 1040;
9
+
10
+ position: fixed;
11
+ inset: 0;
12
+ background: var(--zk-backdrop-bg);
13
+ backdrop-filter: blur(var(--zk-backdrop-blur));
14
+ z-index: var(--zk-backdrop-z-index);
15
+ display: flex;
16
+ align-items: center;
17
+ justify-content: center;
18
+
19
+ // Animation
20
+ opacity: 0;
21
+ visibility: hidden;
22
+ transition: opacity 0.2s ease, visibility 0.2s ease;
23
+
24
+ &-visible {
25
+ opacity: 1;
26
+ visibility: visible;
27
+ }
28
+
29
+ // Variants
30
+ &-blur {
31
+ --zk-backdrop-blur: 4px;
32
+ }
33
+
34
+ &-blur-sm {
35
+ --zk-backdrop-blur: 2px;
36
+ }
37
+
38
+ &-blur-lg {
39
+ --zk-backdrop-blur: 8px;
40
+ }
41
+
42
+ &-transparent {
43
+ --zk-backdrop-bg: transparent;
44
+ }
45
+
46
+ &-light {
47
+ --zk-backdrop-bg: rgba(255, 255, 255, 0.7);
48
+ }
49
+
50
+ &-dark {
51
+ --zk-backdrop-bg: rgba(0, 0, 0, 0.8);
52
+ }
53
+
54
+ // Invisible (only captures clicks)
55
+ &-invisible {
56
+ --zk-backdrop-bg: transparent;
57
+ --zk-backdrop-blur: 0;
58
+ }
59
+
60
+ // Center content
61
+ &-center {
62
+ display: flex;
63
+ align-items: center;
64
+ justify-content: center;
65
+ }
66
+ }
@@ -0,0 +1,81 @@
1
+ // ========================================
2
+ // BackgroundImage Component (Mantine-style)
3
+ // ========================================
4
+
5
+ .background-image {
6
+ position: relative;
7
+ background-size: cover;
8
+ background-position: center;
9
+ background-repeat: no-repeat;
10
+
11
+ // Radius variants
12
+ &-radius-xs {
13
+ border-radius: var(--zk-radius-xs);
14
+ }
15
+ &-radius-sm {
16
+ border-radius: var(--zk-radius-sm);
17
+ }
18
+ &-radius-md {
19
+ border-radius: var(--zk-radius-md);
20
+ }
21
+ &-radius-lg {
22
+ border-radius: var(--zk-radius-lg);
23
+ }
24
+ &-radius-xl {
25
+ border-radius: var(--zk-radius-xl);
26
+ }
27
+
28
+ // Content container
29
+ &-content {
30
+ position: relative;
31
+ z-index: 1;
32
+ }
33
+
34
+ // Overlay
35
+ &-overlay {
36
+ position: absolute;
37
+ inset: 0;
38
+ background: rgba(0, 0, 0, 0.4);
39
+ border-radius: inherit;
40
+ }
41
+
42
+ &-overlay-light {
43
+ background: rgba(255, 255, 255, 0.4);
44
+ }
45
+
46
+ &-overlay-gradient {
47
+ background: linear-gradient(
48
+ 180deg,
49
+ transparent 0%,
50
+ rgba(0, 0, 0, 0.6) 100%
51
+ );
52
+ }
53
+
54
+ // Aspect ratios
55
+ &-ratio-16-9 {
56
+ aspect-ratio: 16 / 9;
57
+ }
58
+
59
+ &-ratio-4-3 {
60
+ aspect-ratio: 4 / 3;
61
+ }
62
+
63
+ &-ratio-1-1 {
64
+ aspect-ratio: 1 / 1;
65
+ }
66
+
67
+ &-ratio-21-9 {
68
+ aspect-ratio: 21 / 9;
69
+ }
70
+
71
+ // Fill container
72
+ &-fill {
73
+ width: 100%;
74
+ height: 100%;
75
+ }
76
+
77
+ // Fixed background (parallax effect)
78
+ &-fixed {
79
+ background-attachment: fixed;
80
+ }
81
+ }
@@ -0,0 +1,70 @@
1
+ // ========================================
2
+ // Blockquote Component
3
+ // ========================================
4
+
5
+ .blockquote {
6
+ --zk-blockquote-border-color: var(--zk-primary);
7
+ --zk-blockquote-bg: var(--zk-bg-secondary);
8
+ --zk-blockquote-text-color: var(--zk-text-primary);
9
+ --zk-blockquote-cite-color: var(--zk-text-muted);
10
+
11
+ margin: 1rem 0;
12
+ padding: 1rem 1.5rem;
13
+ border-left: 4px solid var(--zk-blockquote-border-color);
14
+ background: var(--zk-blockquote-bg);
15
+ border-radius: 0 var(--zk-radius-md) var(--zk-radius-md) 0;
16
+ color: var(--zk-blockquote-text-color);
17
+ font-style: italic;
18
+
19
+ &-content {
20
+ margin: 0;
21
+ font-size: 1.125rem;
22
+ line-height: 1.6;
23
+ }
24
+
25
+ &-cite {
26
+ display: block;
27
+ margin-top: 0.75rem;
28
+ font-size: 0.875rem;
29
+ font-style: normal;
30
+ color: var(--zk-blockquote-cite-color);
31
+
32
+ &::before {
33
+ content: "— ";
34
+ }
35
+ }
36
+
37
+ &-icon {
38
+ font-size: 2rem;
39
+ color: var(--zk-blockquote-border-color);
40
+ opacity: 0.3;
41
+ margin-bottom: 0.5rem;
42
+ }
43
+
44
+ // Color variants
45
+ &-primary {
46
+ --zk-blockquote-border-color: var(--zk-primary);
47
+ }
48
+
49
+ &-success {
50
+ --zk-blockquote-border-color: var(--zk-success);
51
+ }
52
+
53
+ &-warning {
54
+ --zk-blockquote-border-color: var(--zk-warning);
55
+ }
56
+
57
+ &-danger {
58
+ --zk-blockquote-border-color: var(--zk-danger);
59
+ }
60
+
61
+ &-info {
62
+ --zk-blockquote-border-color: var(--zk-info);
63
+ }
64
+
65
+ // Without background
66
+ &-plain {
67
+ --zk-blockquote-bg: transparent;
68
+ padding-left: 1rem;
69
+ }
70
+ }
@@ -0,0 +1,33 @@
1
+ // ========================================
2
+ // Center Component
3
+ // ========================================
4
+
5
+ .center {
6
+ display: flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+
10
+ &-inline {
11
+ display: inline-flex;
12
+ }
13
+ }
14
+
15
+ // Absolute Center (Chakra style)
16
+ .absolute-center {
17
+ position: absolute;
18
+ top: 50%;
19
+ left: 50%;
20
+ transform: translate(-50%, -50%);
21
+
22
+ &-x {
23
+ position: absolute;
24
+ left: 50%;
25
+ transform: translateX(-50%);
26
+ }
27
+
28
+ &-y {
29
+ position: absolute;
30
+ top: 50%;
31
+ transform: translateY(-50%);
32
+ }
33
+ }