zenkit-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.
Files changed (96) hide show
  1. package/README.md +182 -0
  2. package/dist/zenkit.css +33721 -0
  3. package/dist/zenkit.css.map +1 -0
  4. package/dist/zenkit.min.css +1 -0
  5. package/dist/zenkit.min.css.map +1 -0
  6. package/package.json +41 -0
  7. package/scss/abstracts/_functions.scss +174 -0
  8. package/scss/abstracts/_mixins.scss +272 -0
  9. package/scss/abstracts/_variables.scss +216 -0
  10. package/scss/base/_reset.scss +130 -0
  11. package/scss/base/_root.scss +194 -0
  12. package/scss/base/_typography.scss +271 -0
  13. package/scss/components/_accordion.scss +200 -0
  14. package/scss/components/_affix.scss +278 -0
  15. package/scss/components/_alerts.scss +175 -0
  16. package/scss/components/_anchor.scss +438 -0
  17. package/scss/components/_autocomplete.scss +530 -0
  18. package/scss/components/_avatar.scss +256 -0
  19. package/scss/components/_backtop.scss +329 -0
  20. package/scss/components/_badges.scss +266 -0
  21. package/scss/components/_breadcrumb.scss +102 -0
  22. package/scss/components/_buttons.scss +340 -0
  23. package/scss/components/_calendar.scss +787 -0
  24. package/scss/components/_cards.scss +265 -0
  25. package/scss/components/_carousel.scss +306 -0
  26. package/scss/components/_cascader.scss +510 -0
  27. package/scss/components/_close-button.scss +106 -0
  28. package/scss/components/_colorpicker.scss +593 -0
  29. package/scss/components/_datepicker.scss +625 -0
  30. package/scss/components/_descriptions.scss +453 -0
  31. package/scss/components/_divider.scss +253 -0
  32. package/scss/components/_drawer.scss +485 -0
  33. package/scss/components/_dropdown.scss +323 -0
  34. package/scss/components/_empty.scss +321 -0
  35. package/scss/components/_floatbutton.scss +400 -0
  36. package/scss/components/_forms.scss +753 -0
  37. package/scss/components/_image.scss +497 -0
  38. package/scss/components/_inputnumber.scss +475 -0
  39. package/scss/components/_layout.scss +538 -0
  40. package/scss/components/_list-group.scss +227 -0
  41. package/scss/components/_list.scss +528 -0
  42. package/scss/components/_mentions.scss +479 -0
  43. package/scss/components/_menu.scss +510 -0
  44. package/scss/components/_message.scss +412 -0
  45. package/scss/components/_modal.scss +304 -0
  46. package/scss/components/_navbar.scss +329 -0
  47. package/scss/components/_notification.scss +499 -0
  48. package/scss/components/_offcanvas.scss +274 -0
  49. package/scss/components/_pagination.scss +176 -0
  50. package/scss/components/_placeholder.scss +237 -0
  51. package/scss/components/_popconfirm.scss +393 -0
  52. package/scss/components/_popover.scss +298 -0
  53. package/scss/components/_progress.scss +225 -0
  54. package/scss/components/_rating.scss +314 -0
  55. package/scss/components/_result.scss +383 -0
  56. package/scss/components/_segmented.scss +441 -0
  57. package/scss/components/_select.scss +412 -0
  58. package/scss/components/_spinners.scss +229 -0
  59. package/scss/components/_statistic.scss +336 -0
  60. package/scss/components/_steps.scss +343 -0
  61. package/scss/components/_tabs.scss +239 -0
  62. package/scss/components/_tag.scss +317 -0
  63. package/scss/components/_timeline.scss +341 -0
  64. package/scss/components/_timepicker.scss +468 -0
  65. package/scss/components/_toast.scss +279 -0
  66. package/scss/components/_tooltip.scss +305 -0
  67. package/scss/components/_tour.scss +488 -0
  68. package/scss/components/_transfer.scss +556 -0
  69. package/scss/components/_tree.scss +518 -0
  70. package/scss/components/_treeselect.scss +531 -0
  71. package/scss/components/_upload.scss +510 -0
  72. package/scss/components/_watermark.scss +314 -0
  73. package/scss/content/_figures.scss +38 -0
  74. package/scss/content/_images.scss +138 -0
  75. package/scss/content/_tables.scss +232 -0
  76. package/scss/layout/_container.scss +71 -0
  77. package/scss/layout/_grid.scss +258 -0
  78. package/scss/utilities/_animations.scss +494 -0
  79. package/scss/utilities/_borders.scss +246 -0
  80. package/scss/utilities/_colors.scss +194 -0
  81. package/scss/utilities/_display.scss +263 -0
  82. package/scss/utilities/_filters.scss +328 -0
  83. package/scss/utilities/_flex.scss +178 -0
  84. package/scss/utilities/_float.scss +70 -0
  85. package/scss/utilities/_grid-utils.scss +151 -0
  86. package/scss/utilities/_helpers.scss +479 -0
  87. package/scss/utilities/_interactions.scss +249 -0
  88. package/scss/utilities/_overflow.scss +204 -0
  89. package/scss/utilities/_position.scss +245 -0
  90. package/scss/utilities/_shadows.scss +67 -0
  91. package/scss/utilities/_sizing.scss +217 -0
  92. package/scss/utilities/_spacing.scss +207 -0
  93. package/scss/utilities/_text.scss +237 -0
  94. package/scss/utilities/_transforms.scss +368 -0
  95. package/scss/utilities/_visibility.scss +251 -0
  96. package/scss/zenkit.scss +121 -0
@@ -0,0 +1,249 @@
1
+ // ========================================
2
+ // ZenKit - Interaction Utilities
3
+ // (Cursor, User Select, Pointer Events, Z-Index, Vertical Align, Object Fit, Aspect Ratio)
4
+ // ========================================
5
+
6
+ @use '../abstracts/variables' as *;
7
+
8
+ // ----------------------------------------
9
+ // Cursor
10
+ // ----------------------------------------
11
+ .cursor-auto { cursor: auto; }
12
+ .cursor-default { cursor: default; }
13
+ .cursor-pointer { cursor: pointer; }
14
+ .cursor-wait { cursor: wait; }
15
+ .cursor-text { cursor: text; }
16
+ .cursor-move { cursor: move; }
17
+ .cursor-grab { cursor: grab; }
18
+ .cursor-grabbing { cursor: grabbing; }
19
+ .cursor-help { cursor: help; }
20
+ .cursor-not-allowed { cursor: not-allowed; }
21
+ .cursor-none { cursor: none; }
22
+ .cursor-progress { cursor: progress; }
23
+ .cursor-cell { cursor: cell; }
24
+ .cursor-crosshair { cursor: crosshair; }
25
+ .cursor-zoom-in { cursor: zoom-in; }
26
+ .cursor-zoom-out { cursor: zoom-out; }
27
+ .cursor-col-resize { cursor: col-resize; }
28
+ .cursor-row-resize { cursor: row-resize; }
29
+ .cursor-n-resize { cursor: n-resize; }
30
+ .cursor-e-resize { cursor: e-resize; }
31
+ .cursor-s-resize { cursor: s-resize; }
32
+ .cursor-w-resize { cursor: w-resize; }
33
+ .cursor-ne-resize { cursor: ne-resize; }
34
+ .cursor-nw-resize { cursor: nw-resize; }
35
+ .cursor-se-resize { cursor: se-resize; }
36
+ .cursor-sw-resize { cursor: sw-resize; }
37
+ .cursor-ew-resize { cursor: ew-resize; }
38
+ .cursor-ns-resize { cursor: ns-resize; }
39
+
40
+ // ----------------------------------------
41
+ // User Select
42
+ // ----------------------------------------
43
+ .user-select-none { user-select: none; }
44
+ .user-select-text { user-select: text; }
45
+ .user-select-all { user-select: all; }
46
+ .user-select-auto { user-select: auto; }
47
+
48
+ // Short aliases
49
+ .select-none { user-select: none; }
50
+ .select-text { user-select: text; }
51
+ .select-all { user-select: all; }
52
+ .select-auto { user-select: auto; }
53
+
54
+ // ----------------------------------------
55
+ // Pointer Events
56
+ // ----------------------------------------
57
+ .pointer-events-none { pointer-events: none; }
58
+ .pointer-events-auto { pointer-events: auto; }
59
+
60
+ // Short aliases
61
+ .pe-none { pointer-events: none; }
62
+ .pe-auto { pointer-events: auto; }
63
+
64
+ // ----------------------------------------
65
+ // Touch Action
66
+ // ----------------------------------------
67
+ .touch-auto { touch-action: auto; }
68
+ .touch-none { touch-action: none; }
69
+ .touch-pan-x { touch-action: pan-x; }
70
+ .touch-pan-y { touch-action: pan-y; }
71
+ .touch-pan-left { touch-action: pan-left; }
72
+ .touch-pan-right { touch-action: pan-right; }
73
+ .touch-pan-up { touch-action: pan-up; }
74
+ .touch-pan-down { touch-action: pan-down; }
75
+ .touch-pinch-zoom { touch-action: pinch-zoom; }
76
+ .touch-manipulation { touch-action: manipulation; }
77
+
78
+ // ----------------------------------------
79
+ // Resize
80
+ // ----------------------------------------
81
+ .resize-none { resize: none; }
82
+ .resize { resize: both; }
83
+ .resize-x { resize: horizontal; }
84
+ .resize-y { resize: vertical; }
85
+
86
+ // ----------------------------------------
87
+ // Z-Index
88
+ // ----------------------------------------
89
+ .z-0 { z-index: 0; }
90
+ .z-10 { z-index: 10; }
91
+ .z-20 { z-index: 20; }
92
+ .z-30 { z-index: 30; }
93
+ .z-40 { z-index: 40; }
94
+ .z-50 { z-index: 50; }
95
+ .z-auto { z-index: auto; }
96
+
97
+ // Negative z-index
98
+ .-z-10 { z-index: -10; }
99
+ .-z-1 { z-index: -1; }
100
+
101
+ // Framework z-index values
102
+ .z-dropdown { z-index: $z-dropdown; }
103
+ .z-sticky { z-index: $z-sticky; }
104
+ .z-fixed { z-index: $z-fixed; }
105
+ .z-modal-backdrop { z-index: $z-modal-backdrop; }
106
+ .z-modal { z-index: $z-modal; }
107
+ .z-popover { z-index: $z-popover; }
108
+ .z-tooltip { z-index: $z-tooltip; }
109
+ .z-toast { z-index: $z-toast; }
110
+
111
+ // ----------------------------------------
112
+ // Vertical Align
113
+ // ----------------------------------------
114
+ .align-baseline { vertical-align: baseline; }
115
+ .align-top { vertical-align: top; }
116
+ .align-middle { vertical-align: middle; }
117
+ .align-bottom { vertical-align: bottom; }
118
+ .align-text-top { vertical-align: text-top; }
119
+ .align-text-bottom { vertical-align: text-bottom; }
120
+ .align-sub { vertical-align: sub; }
121
+ .align-super { vertical-align: super; }
122
+
123
+ // ----------------------------------------
124
+ // Object Fit
125
+ // ----------------------------------------
126
+ .object-contain { object-fit: contain; }
127
+ .object-cover { object-fit: cover; }
128
+ .object-fill { object-fit: fill; }
129
+ .object-none { object-fit: none; }
130
+ .object-scale-down { object-fit: scale-down; }
131
+
132
+ // ----------------------------------------
133
+ // Object Position
134
+ // ----------------------------------------
135
+ .object-bottom { object-position: bottom; }
136
+ .object-center { object-position: center; }
137
+ .object-left { object-position: left; }
138
+ .object-left-bottom { object-position: left bottom; }
139
+ .object-left-top { object-position: left top; }
140
+ .object-right { object-position: right; }
141
+ .object-right-bottom { object-position: right bottom; }
142
+ .object-right-top { object-position: right top; }
143
+ .object-top { object-position: top; }
144
+
145
+ // ----------------------------------------
146
+ // Aspect Ratio
147
+ // ----------------------------------------
148
+ .aspect-auto { aspect-ratio: auto; }
149
+ .aspect-square { aspect-ratio: 1 / 1; }
150
+ .aspect-video { aspect-ratio: 16 / 9; }
151
+ .aspect-4-3 { aspect-ratio: 4 / 3; }
152
+ .aspect-3-2 { aspect-ratio: 3 / 2; }
153
+ .aspect-2-1 { aspect-ratio: 2 / 1; }
154
+ .aspect-21-9 { aspect-ratio: 21 / 9; }
155
+ .aspect-1-1 { aspect-ratio: 1 / 1; }
156
+ .aspect-3-4 { aspect-ratio: 3 / 4; }
157
+ .aspect-2-3 { aspect-ratio: 2 / 3; }
158
+ .aspect-9-16 { aspect-ratio: 9 / 16; }
159
+
160
+ // ----------------------------------------
161
+ // Will Change (Performance Hint)
162
+ // ----------------------------------------
163
+ .will-change-auto { will-change: auto; }
164
+ .will-change-scroll { will-change: scroll-position; }
165
+ .will-change-contents { will-change: contents; }
166
+ .will-change-transform { will-change: transform; }
167
+ .will-change-opacity { will-change: opacity; }
168
+
169
+ // ----------------------------------------
170
+ // Contain
171
+ // ----------------------------------------
172
+ .contain-none { contain: none; }
173
+ .contain-content { contain: content; }
174
+ .contain-strict { contain: strict; }
175
+ .contain-size { contain: size; }
176
+ .contain-layout { contain: layout; }
177
+ .contain-paint { contain: paint; }
178
+ .contain-style { contain: style; }
179
+
180
+ // ----------------------------------------
181
+ // Appearance
182
+ // ----------------------------------------
183
+ .appearance-none { appearance: none; }
184
+ .appearance-auto { appearance: auto; }
185
+
186
+ // ----------------------------------------
187
+ // Caret Color
188
+ // ----------------------------------------
189
+ .caret-transparent { caret-color: transparent; }
190
+ .caret-current { caret-color: currentColor; }
191
+ .caret-primary { caret-color: var(--primary); }
192
+
193
+ // ----------------------------------------
194
+ // Accent Color
195
+ // ----------------------------------------
196
+ .accent-auto { accent-color: auto; }
197
+ .accent-primary { accent-color: var(--primary); }
198
+ .accent-success { accent-color: $success; }
199
+ .accent-danger { accent-color: $danger; }
200
+ .accent-warning { accent-color: $warning; }
201
+ .accent-info { accent-color: $info; }
202
+
203
+ // ----------------------------------------
204
+ // Responsive Interaction Utilities
205
+ // ----------------------------------------
206
+ @media (min-width: 576px) {
207
+ .sm\:cursor-pointer { cursor: pointer; }
208
+ .sm\:pointer-events-none { pointer-events: none; }
209
+ .sm\:pointer-events-auto { pointer-events: auto; }
210
+ .sm\:select-none { user-select: none; }
211
+ .sm\:object-cover { object-fit: cover; }
212
+ .sm\:aspect-video { aspect-ratio: 16 / 9; }
213
+ }
214
+
215
+ @media (min-width: 768px) {
216
+ .md\:cursor-pointer { cursor: pointer; }
217
+ .md\:pointer-events-none { pointer-events: none; }
218
+ .md\:pointer-events-auto { pointer-events: auto; }
219
+ .md\:select-none { user-select: none; }
220
+ .md\:object-cover { object-fit: cover; }
221
+ .md\:aspect-video { aspect-ratio: 16 / 9; }
222
+ }
223
+
224
+ @media (min-width: 1024px) {
225
+ .lg\:cursor-pointer { cursor: pointer; }
226
+ .lg\:pointer-events-none { pointer-events: none; }
227
+ .lg\:pointer-events-auto { pointer-events: auto; }
228
+ .lg\:select-none { user-select: none; }
229
+ .lg\:object-cover { object-fit: cover; }
230
+ .lg\:aspect-video { aspect-ratio: 16 / 9; }
231
+ }
232
+
233
+ @media (min-width: 1280px) {
234
+ .xl\:cursor-pointer { cursor: pointer; }
235
+ .xl\:pointer-events-none { pointer-events: none; }
236
+ .xl\:pointer-events-auto { pointer-events: auto; }
237
+ .xl\:select-none { user-select: none; }
238
+ .xl\:object-cover { object-fit: cover; }
239
+ .xl\:aspect-video { aspect-ratio: 16 / 9; }
240
+ }
241
+
242
+ @media (min-width: 1536px) {
243
+ .xxl\:cursor-pointer { cursor: pointer; }
244
+ .xxl\:pointer-events-none { pointer-events: none; }
245
+ .xxl\:pointer-events-auto { pointer-events: auto; }
246
+ .xxl\:select-none { user-select: none; }
247
+ .xxl\:object-cover { object-fit: cover; }
248
+ .xxl\:aspect-video { aspect-ratio: 16 / 9; }
249
+ }
@@ -0,0 +1,204 @@
1
+ // ========================================
2
+ // ZenKit - Overflow Utilities
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+
7
+ // ----------------------------------------
8
+ // Overflow
9
+ // ----------------------------------------
10
+ .overflow-auto { overflow: auto; }
11
+ .overflow-hidden { overflow: hidden; }
12
+ .overflow-visible { overflow: visible; }
13
+ .overflow-scroll { overflow: scroll; }
14
+ .overflow-clip { overflow: clip; }
15
+
16
+ // ----------------------------------------
17
+ // Overflow X
18
+ // ----------------------------------------
19
+ .overflow-x-auto { overflow-x: auto; }
20
+ .overflow-x-hidden { overflow-x: hidden; }
21
+ .overflow-x-visible { overflow-x: visible; }
22
+ .overflow-x-scroll { overflow-x: scroll; }
23
+ .overflow-x-clip { overflow-x: clip; }
24
+
25
+ // ----------------------------------------
26
+ // Overflow Y
27
+ // ----------------------------------------
28
+ .overflow-y-auto { overflow-y: auto; }
29
+ .overflow-y-hidden { overflow-y: hidden; }
30
+ .overflow-y-visible { overflow-y: visible; }
31
+ .overflow-y-scroll { overflow-y: scroll; }
32
+ .overflow-y-clip { overflow-y: clip; }
33
+
34
+ // ----------------------------------------
35
+ // Text Overflow
36
+ // ----------------------------------------
37
+ .text-truncate {
38
+ overflow: hidden;
39
+ text-overflow: ellipsis;
40
+ white-space: nowrap;
41
+ }
42
+
43
+ .text-ellipsis {
44
+ text-overflow: ellipsis;
45
+ }
46
+
47
+ .text-clip {
48
+ text-overflow: clip;
49
+ }
50
+
51
+ // ----------------------------------------
52
+ // Line Clamp (Multi-line Truncation)
53
+ // ----------------------------------------
54
+ .line-clamp-1 {
55
+ display: -webkit-box;
56
+ -webkit-line-clamp: 1;
57
+ -webkit-box-orient: vertical;
58
+ overflow: hidden;
59
+ }
60
+
61
+ .line-clamp-2 {
62
+ display: -webkit-box;
63
+ -webkit-line-clamp: 2;
64
+ -webkit-box-orient: vertical;
65
+ overflow: hidden;
66
+ }
67
+
68
+ .line-clamp-3 {
69
+ display: -webkit-box;
70
+ -webkit-line-clamp: 3;
71
+ -webkit-box-orient: vertical;
72
+ overflow: hidden;
73
+ }
74
+
75
+ .line-clamp-4 {
76
+ display: -webkit-box;
77
+ -webkit-line-clamp: 4;
78
+ -webkit-box-orient: vertical;
79
+ overflow: hidden;
80
+ }
81
+
82
+ .line-clamp-5 {
83
+ display: -webkit-box;
84
+ -webkit-line-clamp: 5;
85
+ -webkit-box-orient: vertical;
86
+ overflow: hidden;
87
+ }
88
+
89
+ .line-clamp-6 {
90
+ display: -webkit-box;
91
+ -webkit-line-clamp: 6;
92
+ -webkit-box-orient: vertical;
93
+ overflow: hidden;
94
+ }
95
+
96
+ .line-clamp-none {
97
+ display: block;
98
+ -webkit-line-clamp: unset;
99
+ -webkit-box-orient: unset;
100
+ overflow: visible;
101
+ }
102
+
103
+ // ----------------------------------------
104
+ // Overscroll Behavior
105
+ // ----------------------------------------
106
+ .overscroll-auto { overscroll-behavior: auto; }
107
+ .overscroll-contain { overscroll-behavior: contain; }
108
+ .overscroll-none { overscroll-behavior: none; }
109
+
110
+ .overscroll-x-auto { overscroll-behavior-x: auto; }
111
+ .overscroll-x-contain { overscroll-behavior-x: contain; }
112
+ .overscroll-x-none { overscroll-behavior-x: none; }
113
+
114
+ .overscroll-y-auto { overscroll-behavior-y: auto; }
115
+ .overscroll-y-contain { overscroll-behavior-y: contain; }
116
+ .overscroll-y-none { overscroll-behavior-y: none; }
117
+
118
+ // ----------------------------------------
119
+ // Scroll Behavior
120
+ // ----------------------------------------
121
+ .scroll-auto { scroll-behavior: auto; }
122
+ .scroll-smooth { scroll-behavior: smooth; }
123
+
124
+ // ----------------------------------------
125
+ // Scroll Snap
126
+ // ----------------------------------------
127
+ .snap-start { scroll-snap-align: start; }
128
+ .snap-end { scroll-snap-align: end; }
129
+ .snap-center { scroll-snap-align: center; }
130
+ .snap-align-none { scroll-snap-align: none; }
131
+
132
+ .snap-normal { scroll-snap-stop: normal; }
133
+ .snap-always { scroll-snap-stop: always; }
134
+
135
+ .snap-none { scroll-snap-type: none; }
136
+ .snap-x { scroll-snap-type: x var(--snap-strictness, mandatory); }
137
+ .snap-y { scroll-snap-type: y var(--snap-strictness, mandatory); }
138
+ .snap-both { scroll-snap-type: both var(--snap-strictness, mandatory); }
139
+
140
+ .snap-mandatory { --snap-strictness: mandatory; }
141
+ .snap-proximity { --snap-strictness: proximity; }
142
+
143
+ // ----------------------------------------
144
+ // Word Break
145
+ // ----------------------------------------
146
+ .break-normal {
147
+ overflow-wrap: normal;
148
+ word-break: normal;
149
+ }
150
+
151
+ .break-words {
152
+ overflow-wrap: break-word;
153
+ }
154
+
155
+ .break-all {
156
+ word-break: break-all;
157
+ }
158
+
159
+ .break-keep {
160
+ word-break: keep-all;
161
+ }
162
+
163
+ // ----------------------------------------
164
+ // Whitespace
165
+ // ----------------------------------------
166
+ .whitespace-normal { white-space: normal; }
167
+ .whitespace-nowrap { white-space: nowrap; }
168
+ .whitespace-pre { white-space: pre; }
169
+ .whitespace-pre-line { white-space: pre-line; }
170
+ .whitespace-pre-wrap { white-space: pre-wrap; }
171
+ .whitespace-break-spaces { white-space: break-spaces; }
172
+
173
+ // ----------------------------------------
174
+ // Responsive Overflow Utilities
175
+ // ----------------------------------------
176
+ @media (min-width: 576px) {
177
+ .sm\:overflow-auto { overflow: auto; }
178
+ .sm\:overflow-hidden { overflow: hidden; }
179
+ .sm\:text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
180
+ }
181
+
182
+ @media (min-width: 768px) {
183
+ .md\:overflow-auto { overflow: auto; }
184
+ .md\:overflow-hidden { overflow: hidden; }
185
+ .md\:text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
186
+ }
187
+
188
+ @media (min-width: 1024px) {
189
+ .lg\:overflow-auto { overflow: auto; }
190
+ .lg\:overflow-hidden { overflow: hidden; }
191
+ .lg\:text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
192
+ }
193
+
194
+ @media (min-width: 1280px) {
195
+ .xl\:overflow-auto { overflow: auto; }
196
+ .xl\:overflow-hidden { overflow: hidden; }
197
+ .xl\:text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
198
+ }
199
+
200
+ @media (min-width: 1536px) {
201
+ .xxl\:overflow-auto { overflow: auto; }
202
+ .xxl\:overflow-hidden { overflow: hidden; }
203
+ .xxl\:text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
204
+ }
@@ -0,0 +1,245 @@
1
+ // ========================================
2
+ // ZenKit - Position Utilities
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+
7
+ // ----------------------------------------
8
+ // Position
9
+ // ----------------------------------------
10
+ .position-static { position: static; }
11
+ .position-relative { position: relative; }
12
+ .position-absolute { position: absolute; }
13
+ .position-fixed { position: fixed; }
14
+ .position-sticky { position: sticky; }
15
+
16
+ // Short aliases
17
+ .static { position: static; }
18
+ .relative { position: relative; }
19
+ .absolute { position: absolute; }
20
+ .fixed { position: fixed; }
21
+ .sticky { position: sticky; }
22
+
23
+ // ----------------------------------------
24
+ // Inset (Top, Right, Bottom, Left)
25
+ // ----------------------------------------
26
+ .inset-0 { inset: 0; }
27
+ .inset-auto { inset: auto; }
28
+
29
+ .top-0 { top: 0; }
30
+ .top-50 { top: 50%; }
31
+ .top-100 { top: 100%; }
32
+ .top-auto { top: auto; }
33
+
34
+ .end-0 { right: 0; }
35
+ .end-50 { right: 50%; }
36
+ .end-100 { right: 100%; }
37
+ .end-auto { right: auto; }
38
+
39
+ .bottom-0 { bottom: 0; }
40
+ .bottom-50 { bottom: 50%; }
41
+ .bottom-100 { bottom: 100%; }
42
+ .bottom-auto { bottom: auto; }
43
+
44
+ .start-0 { left: 0; }
45
+ .start-50 { left: 50%; }
46
+ .start-100 { left: 100%; }
47
+ .start-auto { left: auto; }
48
+
49
+ // Right/Left alternatives
50
+ .right-0 { right: 0; }
51
+ .right-50 { right: 50%; }
52
+ .right-100 { right: 100%; }
53
+ .right-auto { right: auto; }
54
+
55
+ .left-0 { left: 0; }
56
+ .left-50 { left: 50%; }
57
+ .left-100 { left: 100%; }
58
+ .left-auto { left: auto; }
59
+
60
+ // ----------------------------------------
61
+ // Translate for Centering
62
+ // ----------------------------------------
63
+ .translate-middle {
64
+ transform: translate(-50%, -50%);
65
+ }
66
+
67
+ .translate-middle-x {
68
+ transform: translateX(-50%);
69
+ }
70
+
71
+ .translate-middle-y {
72
+ transform: translateY(-50%);
73
+ }
74
+
75
+ // ----------------------------------------
76
+ // Common Position Combinations
77
+ // ----------------------------------------
78
+ // Top Left
79
+ .top-left {
80
+ position: absolute;
81
+ top: 0;
82
+ left: 0;
83
+ }
84
+
85
+ // Top Right
86
+ .top-right {
87
+ position: absolute;
88
+ top: 0;
89
+ right: 0;
90
+ }
91
+
92
+ // Bottom Left
93
+ .bottom-left {
94
+ position: absolute;
95
+ bottom: 0;
96
+ left: 0;
97
+ }
98
+
99
+ // Bottom Right
100
+ .bottom-right {
101
+ position: absolute;
102
+ bottom: 0;
103
+ right: 0;
104
+ }
105
+
106
+ // Centered
107
+ .centered {
108
+ position: absolute;
109
+ top: 50%;
110
+ left: 50%;
111
+ transform: translate(-50%, -50%);
112
+ }
113
+
114
+ // ----------------------------------------
115
+ // Fixed Positions
116
+ // ----------------------------------------
117
+ .fixed-top {
118
+ position: fixed;
119
+ top: 0;
120
+ right: 0;
121
+ left: 0;
122
+ z-index: $z-fixed;
123
+ }
124
+
125
+ .fixed-bottom {
126
+ position: fixed;
127
+ bottom: 0;
128
+ right: 0;
129
+ left: 0;
130
+ z-index: $z-fixed;
131
+ }
132
+
133
+ // ----------------------------------------
134
+ // Sticky Positions
135
+ // ----------------------------------------
136
+ .sticky-top {
137
+ position: sticky;
138
+ top: 0;
139
+ z-index: $z-sticky;
140
+ }
141
+
142
+ .sticky-bottom {
143
+ position: sticky;
144
+ bottom: 0;
145
+ z-index: $z-sticky;
146
+ }
147
+
148
+ // ----------------------------------------
149
+ // Inset Values (spacing scale)
150
+ // ----------------------------------------
151
+ @each $key, $value in $spacers {
152
+ @if $key != 'auto' {
153
+ .top-#{$key} { top: $value; }
154
+ .end-#{$key} { right: $value; }
155
+ .bottom-#{$key} { bottom: $value; }
156
+ .start-#{$key} { left: $value; }
157
+ .inset-#{$key} { inset: $value; }
158
+ .inset-x-#{$key} { left: $value; right: $value; }
159
+ .inset-y-#{$key} { top: $value; bottom: $value; }
160
+ }
161
+ }
162
+
163
+ // Negative values
164
+ .-top-1 { top: -0.25rem; }
165
+ .-top-2 { top: -0.5rem; }
166
+ .-top-3 { top: -0.75rem; }
167
+ .-top-4 { top: -1rem; }
168
+
169
+ .-end-1 { right: -0.25rem; }
170
+ .-end-2 { right: -0.5rem; }
171
+ .-end-3 { right: -0.75rem; }
172
+ .-end-4 { right: -1rem; }
173
+
174
+ .-bottom-1 { bottom: -0.25rem; }
175
+ .-bottom-2 { bottom: -0.5rem; }
176
+ .-bottom-3 { bottom: -0.75rem; }
177
+ .-bottom-4 { bottom: -1rem; }
178
+
179
+ .-start-1 { left: -0.25rem; }
180
+ .-start-2 { left: -0.5rem; }
181
+ .-start-3 { left: -0.75rem; }
182
+ .-start-4 { left: -1rem; }
183
+
184
+ // ----------------------------------------
185
+ // Responsive Position Utilities
186
+ // ----------------------------------------
187
+ @media (min-width: 576px) {
188
+ .sm\:position-static { position: static; }
189
+ .sm\:position-relative { position: relative; }
190
+ .sm\:position-absolute { position: absolute; }
191
+ .sm\:position-fixed { position: fixed; }
192
+ .sm\:position-sticky { position: sticky; }
193
+ .sm\:top-0 { top: 0; }
194
+ .sm\:end-0 { right: 0; }
195
+ .sm\:bottom-0 { bottom: 0; }
196
+ .sm\:start-0 { left: 0; }
197
+ }
198
+
199
+ @media (min-width: 768px) {
200
+ .md\:position-static { position: static; }
201
+ .md\:position-relative { position: relative; }
202
+ .md\:position-absolute { position: absolute; }
203
+ .md\:position-fixed { position: fixed; }
204
+ .md\:position-sticky { position: sticky; }
205
+ .md\:top-0 { top: 0; }
206
+ .md\:end-0 { right: 0; }
207
+ .md\:bottom-0 { bottom: 0; }
208
+ .md\:start-0 { left: 0; }
209
+ }
210
+
211
+ @media (min-width: 1024px) {
212
+ .lg\:position-static { position: static; }
213
+ .lg\:position-relative { position: relative; }
214
+ .lg\:position-absolute { position: absolute; }
215
+ .lg\:position-fixed { position: fixed; }
216
+ .lg\:position-sticky { position: sticky; }
217
+ .lg\:top-0 { top: 0; }
218
+ .lg\:end-0 { right: 0; }
219
+ .lg\:bottom-0 { bottom: 0; }
220
+ .lg\:start-0 { left: 0; }
221
+ }
222
+
223
+ @media (min-width: 1280px) {
224
+ .xl\:position-static { position: static; }
225
+ .xl\:position-relative { position: relative; }
226
+ .xl\:position-absolute { position: absolute; }
227
+ .xl\:position-fixed { position: fixed; }
228
+ .xl\:position-sticky { position: sticky; }
229
+ .xl\:top-0 { top: 0; }
230
+ .xl\:end-0 { right: 0; }
231
+ .xl\:bottom-0 { bottom: 0; }
232
+ .xl\:start-0 { left: 0; }
233
+ }
234
+
235
+ @media (min-width: 1536px) {
236
+ .xxl\:position-static { position: static; }
237
+ .xxl\:position-relative { position: relative; }
238
+ .xxl\:position-absolute { position: absolute; }
239
+ .xxl\:position-fixed { position: fixed; }
240
+ .xxl\:position-sticky { position: sticky; }
241
+ .xxl\:top-0 { top: 0; }
242
+ .xxl\:end-0 { right: 0; }
243
+ .xxl\:bottom-0 { bottom: 0; }
244
+ .xxl\:start-0 { left: 0; }
245
+ }