@justin_evo/evo-ui 1.0.1

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 (110) hide show
  1. package/dist/Alert/Alert.d.ts +11 -0
  2. package/dist/AutoComplete/AutoComplete.d.ts +95 -0
  3. package/dist/Badge/Badge.d.ts +23 -0
  4. package/dist/Breadcrumb/Breadcrumb.d.ts +16 -0
  5. package/dist/Button/Button.d.ts +54 -0
  6. package/dist/Card/Card.d.ts +60 -0
  7. package/dist/Checkbox/Checkbox.d.ts +16 -0
  8. package/dist/CommandPalette/CommandPalette.d.ts +17 -0
  9. package/dist/Container/Container.d.ts +10 -0
  10. package/dist/Divider/Divider.d.ts +7 -0
  11. package/dist/Form/Form.d.ts +61 -0
  12. package/dist/Grid/Grid.d.ts +23 -0
  13. package/dist/ImageCropper/ImageCropper.d.ts +111 -0
  14. package/dist/Input/Input.d.ts +12 -0
  15. package/dist/Modal/Modal.d.ts +26 -0
  16. package/dist/Nav/Nav.d.ts +63 -0
  17. package/dist/Notification/Notification.d.ts +186 -0
  18. package/dist/Pagination/Pagination.d.ts +10 -0
  19. package/dist/Radio/Radio.d.ts +20 -0
  20. package/dist/RichTextArea/RichTextArea.d.ts +70 -0
  21. package/dist/Select/Select.d.ts +44 -0
  22. package/dist/Skeleton/Skeleton.d.ts +23 -0
  23. package/dist/Stack/Stack.d.ts +16 -0
  24. package/dist/Table/Table.d.ts +77 -0
  25. package/dist/Tabs/Tabs.d.ts +28 -0
  26. package/dist/Theme/ThemeProvider.d.ts +96 -0
  27. package/dist/Theme/ThemeToggle.d.ts +22 -0
  28. package/dist/Toggle/Toggle.d.ts +11 -0
  29. package/dist/Tooltip/Tooltip.d.ts +10 -0
  30. package/dist/TopNav/TopNav.d.ts +76 -0
  31. package/dist/TreeSelect/TreeSelect.d.ts +50 -0
  32. package/dist/declarations.d.ts +6 -0
  33. package/dist/evo-ui.css +1 -0
  34. package/dist/index.cjs.js +1 -0
  35. package/dist/index.d.ts +31 -0
  36. package/dist/index.es.js +5688 -0
  37. package/package.json +52 -0
  38. package/src/Alert/Alert.tsx +49 -0
  39. package/src/AutoComplete/AutoComplete.tsx +810 -0
  40. package/src/Badge/Badge.tsx +53 -0
  41. package/src/Breadcrumb/Breadcrumb.tsx +53 -0
  42. package/src/Button/Button.tsx +125 -0
  43. package/src/Card/Card.tsx +257 -0
  44. package/src/Checkbox/Checkbox.tsx +59 -0
  45. package/src/CommandPalette/CommandPalette.tsx +185 -0
  46. package/src/Container/Container.tsx +31 -0
  47. package/src/Divider/Divider.tsx +31 -0
  48. package/src/Form/Form.tsx +185 -0
  49. package/src/Grid/Grid.tsx +66 -0
  50. package/src/ImageCropper/ImageCropper.tsx +911 -0
  51. package/src/Input/Input.tsx +74 -0
  52. package/src/Modal/Modal.tsx +77 -0
  53. package/src/Nav/Nav.tsx +626 -0
  54. package/src/Notification/Notification.tsx +1503 -0
  55. package/src/Pagination/Pagination.tsx +76 -0
  56. package/src/Radio/Radio.tsx +69 -0
  57. package/src/RichTextArea/RichTextArea.tsx +869 -0
  58. package/src/Select/Select.tsx +515 -0
  59. package/src/Skeleton/Skeleton.tsx +70 -0
  60. package/src/Stack/Stack.tsx +52 -0
  61. package/src/Table/Table.tsx +335 -0
  62. package/src/Tabs/Tabs.tsx +90 -0
  63. package/src/Theme/ThemeProvider.tsx +253 -0
  64. package/src/Theme/ThemeToggle.tsx +79 -0
  65. package/src/Toggle/Toggle.tsx +48 -0
  66. package/src/Tooltip/Tooltip.tsx +38 -0
  67. package/src/TopNav/TopNav.tsx +994 -0
  68. package/src/TreeSelect/TreeSelect.tsx +825 -0
  69. package/src/css/alert.module.scss +93 -0
  70. package/src/css/autocomplete.module.scss +416 -0
  71. package/src/css/badge.module.scss +82 -0
  72. package/src/css/base/_color.scss +159 -0
  73. package/src/css/base/_theme.scss +237 -0
  74. package/src/css/base/_variables.scss +161 -0
  75. package/src/css/breadcrumb.module.scss +50 -0
  76. package/src/css/button.module.scss +385 -0
  77. package/src/css/card.module.scss +217 -0
  78. package/src/css/checkbox.module.scss +120 -0
  79. package/src/css/commandpalette.module.scss +211 -0
  80. package/src/css/container.module.scss +18 -0
  81. package/src/css/divider.module.scss +41 -0
  82. package/src/css/form.module.scss +245 -0
  83. package/src/css/imagecropper.module.scss +397 -0
  84. package/src/css/input.module.scss +89 -0
  85. package/src/css/modal.module.scss +105 -0
  86. package/src/css/nav.module.scss +339 -0
  87. package/src/css/notification.module.scss +691 -0
  88. package/src/css/pagination.module.scss +63 -0
  89. package/src/css/radio.module.scss +89 -0
  90. package/src/css/richtextarea.module.scss +307 -0
  91. package/src/css/select.module.scss +525 -0
  92. package/src/css/skeleton.module.scss +30 -0
  93. package/src/css/table.module.scss +386 -0
  94. package/src/css/tabs.module.scss +63 -0
  95. package/src/css/theme-toggle.module.scss +83 -0
  96. package/src/css/toggle.module.scss +54 -0
  97. package/src/css/tooltip.module.scss +97 -0
  98. package/src/css/topnav.module.scss +396 -0
  99. package/src/css/treeselect.module.scss +558 -0
  100. package/src/css/utilities/_borders.scss +111 -0
  101. package/src/css/utilities/_colors.scss +66 -0
  102. package/src/css/utilities/_effects.scss +216 -0
  103. package/src/css/utilities/_layout.scss +181 -0
  104. package/src/css/utilities/_position.scss +75 -0
  105. package/src/css/utilities/_sizing.scss +138 -0
  106. package/src/css/utilities/_spacing.scss +99 -0
  107. package/src/css/utilities/_typography.scss +121 -0
  108. package/src/css/utilities/index.scss +24 -0
  109. package/src/declarations.d.ts +6 -0
  110. package/src/index.ts +60 -0
@@ -0,0 +1,66 @@
1
+ @use '../base/color' as *;
2
+ @use '../base/variables' as *;
3
+
4
+ // ==========================================
5
+ // COLOR UTILITIES
6
+ // text-{color}-{shade} | bg-{color}-{shade} | border-{color}-{shade}
7
+ // ==========================================
8
+
9
+ $_palette: (
10
+ 'blue': (100: $evo-blue-100, 200: $evo-blue-200, 300: $evo-blue-300, 400: $evo-blue-400, 500: $evo-blue-500, 600: $evo-blue-600, 700: $evo-blue-700, 800: $evo-blue-800, 900: $evo-blue-900),
11
+ 'gray': (100: $evo-gray-100, 200: $evo-gray-200, 300: $evo-gray-300, 400: $evo-gray-400, 500: $evo-gray-500, 600: $evo-gray-600, 700: $evo-gray-700, 800: $evo-gray-800, 900: $evo-gray-900),
12
+ 'red': (100: $evo-red-100, 200: $evo-red-200, 300: $evo-red-300, 400: $evo-red-400, 500: $evo-red-500, 600: $evo-red-600, 700: $evo-red-700, 800: $evo-red-800, 900: $evo-red-900),
13
+ 'yellow': (100: $evo-yellow-100, 200: $evo-yellow-200, 300: $evo-yellow-300, 400: $evo-yellow-400, 500: $evo-yellow-500, 600: $evo-yellow-600, 700: $evo-yellow-700, 800: $evo-yellow-800, 900: $evo-yellow-900),
14
+ 'green': (100: $evo-green-100, 200: $evo-green-200, 300: $evo-green-300, 400: $evo-green-400, 500: $evo-green-500, 600: $evo-green-600, 700: $evo-green-700, 800: $evo-green-800, 900: $evo-green-900),
15
+ 'purple': (100: $evo-purple-100, 200: $evo-purple-200, 300: $evo-purple-300, 400: $evo-purple-400, 500: $evo-purple-500, 600: $evo-purple-600, 700: $evo-purple-700, 800: $evo-purple-800, 900: $evo-purple-900),
16
+ 'white': (100: $evo-white-100, 200: $evo-white-200, 300: $evo-white-300, 400: $evo-white-400, 500: $evo-white-500, 600: $evo-white-600, 700: $evo-white-700, 800: $evo-white-800, 900: $evo-white-900),
17
+ 'black': (100: $evo-black-100, 200: $evo-black-200, 300: $evo-black-300, 400: $evo-black-400, 500: $evo-black-500, 600: $evo-black-600, 700: $evo-black-700, 800: $evo-black-800, 900: $evo-black-900),
18
+ 'cyan': (100: $evo-cyan-100, 200: $evo-cyan-200, 300: $evo-cyan-300, 400: $evo-cyan-400, 500: $evo-cyan-500, 600: $evo-cyan-600, 700: $evo-cyan-700, 800: $evo-cyan-800, 900: $evo-cyan-900),
19
+ 'rose': (100: $evo-rose-100, 200: $evo-rose-200, 300: $evo-rose-300, 400: $evo-rose-400, 500: $evo-rose-500, 600: $evo-rose-600, 700: $evo-rose-700, 800: $evo-rose-800, 900: $evo-rose-900),
20
+ 'emerald': (100: $evo-emerald-100, 200: $evo-emerald-200, 300: $evo-emerald-300, 400: $evo-emerald-400, 500: $evo-emerald-500, 600: $evo-emerald-600, 700: $evo-emerald-700, 800: $evo-emerald-800, 900: $evo-emerald-900),
21
+ 'amber': (100: $evo-amber-100, 200: $evo-amber-200, 300: $evo-amber-300, 400: $evo-amber-400, 500: $evo-amber-500, 600: $evo-amber-600, 700: $evo-amber-700, 800: $evo-amber-800, 900: $evo-amber-900),
22
+ 'violet': (100: $evo-violet-100, 200: $evo-violet-200, 300: $evo-violet-300, 400: $evo-violet-400, 500: $evo-violet-500, 600: $evo-violet-600, 700: $evo-violet-700, 800: $evo-violet-800, 900: $evo-violet-900),
23
+ 'slate': (50: $evo-slate-50, 100: $evo-slate-100, 200: $evo-slate-200, 300: $evo-slate-300, 400: $evo-slate-400, 500: $evo-slate-500, 600: $evo-slate-600, 700: $evo-slate-700, 800: $evo-slate-800, 900: $evo-slate-900, 950: $evo-slate-950),
24
+ );
25
+
26
+ @each $name, $shades in $_palette {
27
+ @each $shade, $value in $shades {
28
+ .text-#{$name}-#{$shade} { color: $value; }
29
+ .bg-#{$name}-#{$shade} { background-color: $value; }
30
+ .border-#{$name}-#{$shade} { border-color: $value; }
31
+ }
32
+ }
33
+
34
+ // Semantic shortcuts
35
+ .text-primary { color: $evo-primary-color; }
36
+ .text-danger { color: $evo-danger-color; }
37
+ .text-warning { color: $evo-warning-color; }
38
+ .text-success { color: $evo-success-color; }
39
+ .text-info { color: $evo-info-color; }
40
+ .text-muted { color: $color-text-muted; }
41
+ .text-default { color: $color-text-primary; }
42
+
43
+ .bg-primary { background-color: $evo-primary-color; }
44
+ .bg-danger { background-color: $evo-danger-color; }
45
+ .bg-warning { background-color: $evo-warning-color; }
46
+ .bg-success { background-color: $evo-success-color; }
47
+ .bg-info { background-color: $evo-info-color; }
48
+ .bg-surface { background-color: $color-surface; }
49
+ .bg-page { background-color: $color-background; }
50
+
51
+ .border-primary { border-color: $evo-primary-color; }
52
+ .border-danger { border-color: $evo-danger-color; }
53
+ .border-success { border-color: $evo-success-color; }
54
+ .border-warning { border-color: $evo-warning-color; }
55
+ .border-default { border-color: $color-border; }
56
+
57
+ // Special values
58
+ .text-transparent { color: transparent; }
59
+ .text-inherit { color: inherit; }
60
+ .text-current { color: currentColor; }
61
+ .bg-transparent { background-color: transparent; }
62
+ .bg-inherit { background-color: inherit; }
63
+ .bg-white { background-color: #fff; }
64
+ .bg-black { background-color: #000; }
65
+ .text-white { color: #fff; }
66
+ .text-black { color: #000; }
@@ -0,0 +1,216 @@
1
+ @use '../base/variables' as *;
2
+
3
+ // ==========================================
4
+ // EFFECTS UTILITIES
5
+ // shadow | opacity | cursor | transition | transform | filter
6
+ // ==========================================
7
+
8
+ // Box shadow
9
+ .shadow-none { box-shadow: none; }
10
+ .shadow-sm { box-shadow: $shadow-sm; }
11
+ .shadow { box-shadow: $shadow-md; }
12
+ .shadow-md { box-shadow: $shadow-md; }
13
+ .shadow-lg { box-shadow: $shadow-lg; }
14
+ .shadow-xl { box-shadow: $shadow-xl; }
15
+ .shadow-2xl { box-shadow: $shadow-2xl; }
16
+ .shadow-inner { box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.05); }
17
+
18
+ // Opacity
19
+ .opacity-0 { opacity: 0; }
20
+ .opacity-5 { opacity: 0.05; }
21
+ .opacity-10 { opacity: 0.1; }
22
+ .opacity-15 { opacity: 0.15; }
23
+ .opacity-20 { opacity: 0.2; }
24
+ .opacity-25 { opacity: 0.25; }
25
+ .opacity-30 { opacity: 0.3; }
26
+ .opacity-40 { opacity: 0.4; }
27
+ .opacity-50 { opacity: 0.5; }
28
+ .opacity-60 { opacity: 0.6; }
29
+ .opacity-70 { opacity: 0.7; }
30
+ .opacity-75 { opacity: 0.75; }
31
+ .opacity-80 { opacity: 0.8; }
32
+ .opacity-90 { opacity: 0.9; }
33
+ .opacity-95 { opacity: 0.95; }
34
+ .opacity-100 { opacity: 1; }
35
+
36
+ // Cursor
37
+ .cursor-auto { cursor: auto; }
38
+ .cursor-default { cursor: default; }
39
+ .cursor-pointer { cursor: pointer; }
40
+ .cursor-wait { cursor: wait; }
41
+ .cursor-text { cursor: text; }
42
+ .cursor-move { cursor: move; }
43
+ .cursor-not-allowed { cursor: not-allowed; }
44
+ .cursor-none { cursor: none; }
45
+ .cursor-grab { cursor: grab; }
46
+ .cursor-grabbing { cursor: grabbing; }
47
+ .cursor-crosshair { cursor: crosshair; }
48
+ .cursor-zoom-in { cursor: zoom-in; }
49
+ .cursor-zoom-out { cursor: zoom-out; }
50
+ .cursor-help { cursor: help; }
51
+ .cursor-col-resize { cursor: col-resize; }
52
+ .cursor-row-resize { cursor: row-resize; }
53
+
54
+ // Pointer events
55
+ .pointer-events-none { pointer-events: none; }
56
+ .pointer-events-auto { pointer-events: auto; }
57
+
58
+ // User select
59
+ .select-none { user-select: none; }
60
+ .select-text { user-select: text; }
61
+ .select-all { user-select: all; }
62
+ .select-auto { user-select: auto; }
63
+
64
+ // Transition
65
+ .transition-none { transition: none; }
66
+ .transition { transition: color $transition-normal, background-color $transition-normal, border-color $transition-normal, text-decoration-color $transition-normal, fill $transition-normal, stroke $transition-normal, opacity $transition-normal, box-shadow $transition-normal, transform $transition-normal, filter $transition-normal; }
67
+ .transition-all { transition: all $transition-normal; }
68
+ .transition-colors { transition: color $transition-normal, background-color $transition-normal, border-color $transition-normal; }
69
+ .transition-opacity { transition: opacity $transition-normal; }
70
+ .transition-shadow { transition: box-shadow $transition-normal; }
71
+ .transition-transform { transition: transform $transition-normal; }
72
+
73
+ // Duration
74
+ .duration-75 { transition-duration: 75ms; }
75
+ .duration-100 { transition-duration: 100ms; }
76
+ .duration-150 { transition-duration: 150ms; }
77
+ .duration-200 { transition-duration: 200ms; }
78
+ .duration-300 { transition-duration: 300ms; }
79
+ .duration-500 { transition-duration: 500ms; }
80
+ .duration-700 { transition-duration: 700ms; }
81
+ .duration-1000 { transition-duration: 1000ms; }
82
+
83
+ // Easing
84
+ .ease-linear { transition-timing-function: linear; }
85
+ .ease-in { transition-timing-function: cubic-bezier(0.4, 0, 1, 1); }
86
+ .ease-out { transition-timing-function: cubic-bezier(0, 0, 0.2, 1); }
87
+ .ease-in-out { transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); }
88
+ .ease-spring { transition-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1); }
89
+
90
+ // Transform utilities
91
+ .transform-none { transform: none; }
92
+ .transform-gpu { transform: translateZ(0); }
93
+ .scale-0 { transform: scale(0); }
94
+ .scale-50 { transform: scale(0.5); }
95
+ .scale-75 { transform: scale(0.75); }
96
+ .scale-90 { transform: scale(0.9); }
97
+ .scale-95 { transform: scale(0.95); }
98
+ .scale-100 { transform: scale(1); }
99
+ .scale-105 { transform: scale(1.05); }
100
+ .scale-110 { transform: scale(1.1); }
101
+ .scale-125 { transform: scale(1.25); }
102
+ .scale-150 { transform: scale(1.5); }
103
+
104
+ .rotate-0 { transform: rotate(0deg); }
105
+ .rotate-1 { transform: rotate(1deg); }
106
+ .rotate-2 { transform: rotate(2deg); }
107
+ .rotate-3 { transform: rotate(3deg); }
108
+ .rotate-6 { transform: rotate(6deg); }
109
+ .rotate-12 { transform: rotate(12deg); }
110
+ .rotate-45 { transform: rotate(45deg); }
111
+ .rotate-90 { transform: rotate(90deg); }
112
+ .rotate-180 { transform: rotate(180deg); }
113
+ .-rotate-1 { transform: rotate(-1deg); }
114
+ .-rotate-2 { transform: rotate(-2deg); }
115
+ .-rotate-3 { transform: rotate(-3deg); }
116
+ .-rotate-6 { transform: rotate(-6deg); }
117
+ .-rotate-12 { transform: rotate(-12deg); }
118
+ .-rotate-45 { transform: rotate(-45deg); }
119
+ .-rotate-90 { transform: rotate(-90deg); }
120
+ .-rotate-180 { transform: rotate(-180deg); }
121
+
122
+ .translate-x-0 { transform: translateX(0); }
123
+ .translate-y-0 { transform: translateY(0); }
124
+ .-translate-x-1\/2 { transform: translateX(-50%); }
125
+ .-translate-y-1\/2 { transform: translateY(-50%); }
126
+ .translate-x-full { transform: translateX(100%); }
127
+ .translate-y-full { transform: translateY(100%); }
128
+ .-translate-x-full { transform: translateX(-100%); }
129
+ .-translate-y-full { transform: translateY(-100%); }
130
+
131
+ // Skew
132
+ .skew-x-0 { transform: skewX(0deg); }
133
+ .skew-x-1 { transform: skewX(1deg); }
134
+ .skew-x-2 { transform: skewX(2deg); }
135
+ .skew-x-3 { transform: skewX(3deg); }
136
+ .skew-x-6 { transform: skewX(6deg); }
137
+ .skew-x-12 { transform: skewX(12deg); }
138
+ .skew-y-0 { transform: skewY(0deg); }
139
+ .skew-y-1 { transform: skewY(1deg); }
140
+ .skew-y-2 { transform: skewY(2deg); }
141
+ .skew-y-3 { transform: skewY(3deg); }
142
+ .skew-y-6 { transform: skewY(6deg); }
143
+ .skew-y-12 { transform: skewY(12deg); }
144
+
145
+ // Transform origin
146
+ .origin-center { transform-origin: center; }
147
+ .origin-top { transform-origin: top; }
148
+ .origin-top-right { transform-origin: top right; }
149
+ .origin-right { transform-origin: right; }
150
+ .origin-bottom-right { transform-origin: bottom right; }
151
+ .origin-bottom { transform-origin: bottom; }
152
+ .origin-bottom-left { transform-origin: bottom left; }
153
+ .origin-left { transform-origin: left; }
154
+ .origin-top-left { transform-origin: top left; }
155
+
156
+ // Backdrop filter
157
+ .backdrop-blur-none { backdrop-filter: none; }
158
+ .backdrop-blur-sm { backdrop-filter: blur(4px); }
159
+ .backdrop-blur { backdrop-filter: blur(8px); }
160
+ .backdrop-blur-md { backdrop-filter: blur(12px); }
161
+ .backdrop-blur-lg { backdrop-filter: blur(16px); }
162
+ .backdrop-blur-xl { backdrop-filter: blur(24px); }
163
+ .backdrop-blur-2xl { backdrop-filter: blur(40px); }
164
+
165
+ // Filter
166
+ .blur-none { filter: none; }
167
+ .blur-sm { filter: blur(4px); }
168
+ .blur { filter: blur(8px); }
169
+ .blur-md { filter: blur(12px); }
170
+ .blur-lg { filter: blur(16px); }
171
+ .blur-xl { filter: blur(24px); }
172
+ .grayscale { filter: grayscale(100%); }
173
+ .grayscale-0 { filter: grayscale(0); }
174
+ .brightness-0 { filter: brightness(0); }
175
+ .brightness-50 { filter: brightness(0.5); }
176
+ .brightness-75 { filter: brightness(0.75); }
177
+ .brightness-90 { filter: brightness(0.9); }
178
+ .brightness-95 { filter: brightness(0.95); }
179
+ .brightness-100 { filter: brightness(1); }
180
+ .brightness-105 { filter: brightness(1.05); }
181
+ .brightness-110 { filter: brightness(1.1); }
182
+ .brightness-125 { filter: brightness(1.25); }
183
+ .brightness-150 { filter: brightness(1.5); }
184
+ .brightness-200 { filter: brightness(2); }
185
+ .invert { filter: invert(100%); }
186
+ .invert-0 { filter: invert(0); }
187
+
188
+ // Appearance
189
+ .appearance-none { appearance: none; }
190
+ .appearance-auto { appearance: auto; }
191
+
192
+ // Resize
193
+ .resize-none { resize: none; }
194
+ .resize-x { resize: horizontal; }
195
+ .resize-y { resize: vertical; }
196
+ .resize { resize: both; }
197
+
198
+ // Scroll behavior
199
+ .scroll-auto { scroll-behavior: auto; }
200
+ .scroll-smooth { scroll-behavior: smooth; }
201
+
202
+ // Will change
203
+ .will-change-auto { will-change: auto; }
204
+ .will-change-scroll { will-change: scroll-position; }
205
+ .will-change-contents { will-change: contents; }
206
+ .will-change-transform { will-change: transform; }
207
+
208
+ // Mix blend mode
209
+ .mix-blend-normal { mix-blend-mode: normal; }
210
+ .mix-blend-multiply { mix-blend-mode: multiply; }
211
+ .mix-blend-screen { mix-blend-mode: screen; }
212
+ .mix-blend-overlay { mix-blend-mode: overlay; }
213
+ .mix-blend-darken { mix-blend-mode: darken; }
214
+ .mix-blend-lighten { mix-blend-mode: lighten; }
215
+ .mix-blend-color-dodge { mix-blend-mode: color-dodge; }
216
+ .mix-blend-color-burn { mix-blend-mode: color-burn; }
@@ -0,0 +1,181 @@
1
+ // ==========================================
2
+ // LAYOUT UTILITIES
3
+ // display | flex | grid | overflow
4
+ // ==========================================
5
+
6
+ // Display
7
+ .block { display: block; }
8
+ .inline-block { display: inline-block; }
9
+ .inline { display: inline; }
10
+ .flex { display: flex; }
11
+ .inline-flex { display: inline-flex; }
12
+ .grid { display: grid; }
13
+ .inline-grid { display: inline-grid; }
14
+ .contents { display: contents; }
15
+ .table { display: table; }
16
+ .hidden { display: none; }
17
+
18
+ // Flex direction
19
+ .flex-row { flex-direction: row; }
20
+ .flex-row-reverse { flex-direction: row-reverse; }
21
+ .flex-col { flex-direction: column; }
22
+ .flex-col-reverse { flex-direction: column-reverse; }
23
+
24
+ // Flex wrap
25
+ .flex-wrap { flex-wrap: wrap; }
26
+ .flex-wrap-reverse { flex-wrap: wrap-reverse; }
27
+ .flex-nowrap { flex-wrap: nowrap; }
28
+
29
+ // Flex grow / shrink
30
+ .flex-1 { flex: 1 1 0%; }
31
+ .flex-auto { flex: 1 1 auto; }
32
+ .flex-initial { flex: 0 1 auto; }
33
+ .flex-none { flex: none; }
34
+ .grow { flex-grow: 1; }
35
+ .grow-0 { flex-grow: 0; }
36
+ .shrink { flex-shrink: 1; }
37
+ .shrink-0 { flex-shrink: 0; }
38
+
39
+ // Justify content
40
+ .justify-start { justify-content: flex-start; }
41
+ .justify-end { justify-content: flex-end; }
42
+ .justify-center { justify-content: center; }
43
+ .justify-between { justify-content: space-between; }
44
+ .justify-around { justify-content: space-around; }
45
+ .justify-evenly { justify-content: space-evenly; }
46
+ .justify-stretch { justify-content: stretch; }
47
+
48
+ // Justify items
49
+ .justify-items-start { justify-items: start; }
50
+ .justify-items-end { justify-items: end; }
51
+ .justify-items-center { justify-items: center; }
52
+ .justify-items-stretch { justify-items: stretch; }
53
+
54
+ // Justify self
55
+ .justify-self-auto { justify-self: auto; }
56
+ .justify-self-start { justify-self: start; }
57
+ .justify-self-end { justify-self: end; }
58
+ .justify-self-center { justify-self: center; }
59
+ .justify-self-stretch { justify-self: stretch; }
60
+
61
+ // Align items
62
+ .items-start { align-items: flex-start; }
63
+ .items-end { align-items: flex-end; }
64
+ .items-center { align-items: center; }
65
+ .items-stretch { align-items: stretch; }
66
+ .items-baseline { align-items: baseline; }
67
+
68
+ // Align content
69
+ .content-start { align-content: flex-start; }
70
+ .content-end { align-content: flex-end; }
71
+ .content-center { align-content: center; }
72
+ .content-between { align-content: space-between; }
73
+ .content-around { align-content: space-around; }
74
+ .content-evenly { align-content: space-evenly; }
75
+ .content-stretch { align-content: stretch; }
76
+
77
+ // Align self
78
+ .self-auto { align-self: auto; }
79
+ .self-start { align-self: flex-start; }
80
+ .self-end { align-self: flex-end; }
81
+ .self-center { align-self: center; }
82
+ .self-stretch { align-self: stretch; }
83
+ .self-baseline { align-self: baseline; }
84
+
85
+ // Grid template columns
86
+ @for $i from 1 through 12 {
87
+ .grid-cols-#{$i} { grid-template-columns: repeat(#{$i}, minmax(0, 1fr)); }
88
+ }
89
+ .grid-cols-none { grid-template-columns: none; }
90
+
91
+ // Grid template rows
92
+ @for $i from 1 through 6 {
93
+ .grid-rows-#{$i} { grid-template-rows: repeat(#{$i}, minmax(0, 1fr)); }
94
+ }
95
+ .grid-rows-none { grid-template-rows: none; }
96
+
97
+ // Column span
98
+ @for $i from 1 through 12 {
99
+ .col-span-#{$i} { grid-column: span #{$i} / span #{$i}; }
100
+ }
101
+ .col-span-full { grid-column: 1 / -1; }
102
+ .col-auto { grid-column: auto; }
103
+
104
+ // Row span
105
+ @for $i from 1 through 6 {
106
+ .row-span-#{$i} { grid-row: span #{$i} / span #{$i}; }
107
+ }
108
+ .row-span-full { grid-row: 1 / -1; }
109
+ .row-auto { grid-row: auto; }
110
+
111
+ // Place items / content / self
112
+ .place-items-start { place-items: start; }
113
+ .place-items-end { place-items: end; }
114
+ .place-items-center { place-items: center; }
115
+ .place-items-stretch { place-items: stretch; }
116
+ .place-content-start { place-content: start; }
117
+ .place-content-end { place-content: end; }
118
+ .place-content-center { place-content: center; }
119
+ .place-content-between { place-content: space-between; }
120
+ .place-self-auto { place-self: auto; }
121
+ .place-self-start { place-self: start; }
122
+ .place-self-end { place-self: end; }
123
+ .place-self-center { place-self: center; }
124
+ .place-self-stretch { place-self: stretch; }
125
+
126
+ // Overflow
127
+ .overflow-auto { overflow: auto; }
128
+ .overflow-hidden { overflow: hidden; }
129
+ .overflow-visible { overflow: visible; }
130
+ .overflow-scroll { overflow: scroll; }
131
+ .overflow-clip { overflow: clip; }
132
+ .overflow-x-auto { overflow-x: auto; }
133
+ .overflow-x-hidden { overflow-x: hidden; }
134
+ .overflow-x-visible { overflow-x: visible; }
135
+ .overflow-x-scroll { overflow-x: scroll; }
136
+ .overflow-y-auto { overflow-y: auto; }
137
+ .overflow-y-hidden { overflow-y: hidden; }
138
+ .overflow-y-visible { overflow-y: visible; }
139
+ .overflow-y-scroll { overflow-y: scroll; }
140
+
141
+ // Float
142
+ .float-start { float: inline-start; }
143
+ .float-end { float: inline-end; }
144
+ .float-right { float: right; }
145
+ .float-left { float: left; }
146
+ .float-none { float: none; }
147
+ .clearfix::after { content: ''; display: table; clear: both; }
148
+
149
+ // Box sizing
150
+ .box-border { box-sizing: border-box; }
151
+ .box-content { box-sizing: content-box; }
152
+
153
+ // Visibility
154
+ .visible { visibility: visible; }
155
+ .invisible { visibility: hidden; }
156
+ .collapse { visibility: collapse; }
157
+
158
+ // Aspect ratio
159
+ .aspect-auto { aspect-ratio: auto; }
160
+ .aspect-square { aspect-ratio: 1 / 1; }
161
+ .aspect-video { aspect-ratio: 16 / 9; }
162
+
163
+ // Object fit
164
+ .object-contain { object-fit: contain; }
165
+ .object-cover { object-fit: cover; }
166
+ .object-fill { object-fit: fill; }
167
+ .object-none { object-fit: none; }
168
+ .object-scale-down { object-fit: scale-down; }
169
+
170
+ // Object position
171
+ .object-center { object-position: center; }
172
+ .object-top { object-position: top; }
173
+ .object-bottom { object-position: bottom; }
174
+ .object-left { object-position: left; }
175
+ .object-right { object-position: right; }
176
+ .object-left-top { object-position: left top; }
177
+ .object-right-bottom { object-position: right bottom; }
178
+
179
+ // Isolation
180
+ .isolate { isolation: isolate; }
181
+ .isolation-auto { isolation: auto; }
@@ -0,0 +1,75 @@
1
+ // ==========================================
2
+ // POSITION UTILITIES
3
+ // position | inset | z-index
4
+ // ==========================================
5
+
6
+ // Position
7
+ .static { position: static; }
8
+ .relative { position: relative; }
9
+ .absolute { position: absolute; }
10
+ .fixed { position: fixed; }
11
+ .sticky { position: sticky; }
12
+
13
+ // Inset (top / right / bottom / left shorthand)
14
+ .inset-0 { inset: 0; }
15
+ .inset-auto { inset: auto; }
16
+ .inset-full { inset: 100%; }
17
+ .inset-px { inset: 1px; }
18
+
19
+ .inset-x-0 { left: 0; right: 0; }
20
+ .inset-x-auto { left: auto; right: auto; }
21
+ .inset-x-full { left: 100%; right: 100%; }
22
+ .inset-y-0 { top: 0; bottom: 0; }
23
+ .inset-y-auto { top: auto; bottom: auto; }
24
+ .inset-y-full { top: 100%; bottom: 100%; }
25
+
26
+ // Individual sides
27
+ $_inset-scale: (0: 0, 1: 0.25rem, 2: 0.5rem, 3: 0.75rem, 4: 1rem, 5: 1.25rem, 6: 1.5rem, 8: 2rem, 10: 2.5rem, 12: 3rem, 14: 3.5rem, 16: 4rem, 20: 5rem, 24: 6rem, 32: 8rem, 40: 10rem, 48: 12rem, 56: 14rem, 64: 16rem);
28
+
29
+ @each $key, $val in $_inset-scale {
30
+ .top-#{$key} { top: $val; }
31
+ .right-#{$key} { right: $val; }
32
+ .bottom-#{$key} { bottom: $val; }
33
+ .left-#{$key} { left: $val; }
34
+ }
35
+
36
+ .top-auto { top: auto; }
37
+ .right-auto { right: auto; }
38
+ .bottom-auto { bottom: auto; }
39
+ .left-auto { left: auto; }
40
+ .top-full { top: 100%; }
41
+ .right-full { right: 100%; }
42
+ .bottom-full { bottom: 100%; }
43
+ .left-full { left: 100%; }
44
+ .top-px { top: 1px; }
45
+ .right-px { right: 1px; }
46
+ .bottom-px { bottom: 1px; }
47
+ .left-px { left: 1px; }
48
+
49
+ // Negative inset
50
+ @each $key, $val in $_inset-scale {
51
+ @if $key != 0 {
52
+ .-top-#{$key} { top: -$val; }
53
+ .-right-#{$key} { right: -$val; }
54
+ .-bottom-#{$key} { bottom: -$val; }
55
+ .-left-#{$key} { left: -$val; }
56
+ }
57
+ }
58
+
59
+ // Z-index
60
+ .z-0 { z-index: 0; }
61
+ .z-10 { z-index: 10; }
62
+ .z-20 { z-index: 20; }
63
+ .z-30 { z-index: 30; }
64
+ .z-40 { z-index: 40; }
65
+ .z-50 { z-index: 50; }
66
+ .z-auto { z-index: auto; }
67
+
68
+ // Named z-index layers
69
+ .z-base { z-index: 0; }
70
+ .z-raised { z-index: 10; }
71
+ .z-overlay { z-index: 100; }
72
+ .z-modal { z-index: 200; }
73
+ .z-toast { z-index: 300; }
74
+ .z-tooltip { z-index: 400; }
75
+ .z-top { z-index: 9999; }
@@ -0,0 +1,138 @@
1
+ // ==========================================
2
+ // SIZING UTILITIES
3
+ // w-{n} | h-{n} | min-w | max-w | min-h | max-h
4
+ // ==========================================
5
+
6
+ $_size-scale: (
7
+ 0: 0,
8
+ 1: 0.25rem,
9
+ 2: 0.5rem,
10
+ 3: 0.75rem,
11
+ 4: 1rem,
12
+ 5: 1.25rem,
13
+ 6: 1.5rem,
14
+ 7: 1.75rem,
15
+ 8: 2rem,
16
+ 9: 2.25rem,
17
+ 10: 2.5rem,
18
+ 11: 2.75rem,
19
+ 12: 3rem,
20
+ 14: 3.5rem,
21
+ 16: 4rem,
22
+ 20: 5rem,
23
+ 24: 6rem,
24
+ 28: 7rem,
25
+ 32: 8rem,
26
+ 36: 9rem,
27
+ 40: 10rem,
28
+ 44: 11rem,
29
+ 48: 12rem,
30
+ 56: 14rem,
31
+ 64: 16rem,
32
+ 72: 18rem,
33
+ 80: 20rem,
34
+ 96: 24rem,
35
+ );
36
+
37
+ // Numeric size classes
38
+ @each $key, $val in $_size-scale {
39
+ .w-#{$key} { width: $val; }
40
+ .h-#{$key} { height: $val; }
41
+ }
42
+
43
+ // Fraction widths
44
+ .w-1\/2 { width: 50%; }
45
+ .w-1\/3 { width: 33.333333%; }
46
+ .w-2\/3 { width: 66.666667%; }
47
+ .w-1\/4 { width: 25%; }
48
+ .w-2\/4 { width: 50%; }
49
+ .w-3\/4 { width: 75%; }
50
+ .w-1\/5 { width: 20%; }
51
+ .w-2\/5 { width: 40%; }
52
+ .w-3\/5 { width: 60%; }
53
+ .w-4\/5 { width: 80%; }
54
+ .w-1\/6 { width: 16.666667%; }
55
+ .w-5\/6 { width: 83.333333%; }
56
+ .w-1\/12 { width: 8.333333%; }
57
+
58
+ // Special width values
59
+ .w-auto { width: auto; }
60
+ .w-full { width: 100%; }
61
+ .w-screen { width: 100vw; }
62
+ .w-svw { width: 100svw; }
63
+ .w-lvw { width: 100lvw; }
64
+ .w-dvw { width: 100dvw; }
65
+ .w-min { width: min-content; }
66
+ .w-max { width: max-content; }
67
+ .w-fit { width: fit-content; }
68
+ .w-px { width: 1px; }
69
+
70
+ // Special height values
71
+ .h-auto { height: auto; }
72
+ .h-full { height: 100%; }
73
+ .h-screen { height: 100vh; }
74
+ .h-svh { height: 100svh; }
75
+ .h-lvh { height: 100lvh; }
76
+ .h-dvh { height: 100dvh; }
77
+ .h-min { height: min-content; }
78
+ .h-max { height: max-content; }
79
+ .h-fit { height: fit-content; }
80
+ .h-px { height: 1px; }
81
+
82
+ // Size (width + height shorthand)
83
+ @each $key, $val in $_size-scale {
84
+ .size-#{$key} { width: $val; height: $val; }
85
+ }
86
+ .size-auto { width: auto; height: auto; }
87
+ .size-full { width: 100%; height: 100%; }
88
+ .size-fit { width: fit-content; height: fit-content; }
89
+
90
+ // Min width
91
+ .min-w-0 { min-width: 0; }
92
+ .min-w-px { min-width: 1px; }
93
+ .min-w-full { min-width: 100%; }
94
+ .min-w-screen { min-width: 100vw; }
95
+ .min-w-min { min-width: min-content; }
96
+ .min-w-max { min-width: max-content; }
97
+ .min-w-fit { min-width: fit-content; }
98
+
99
+ // Max width
100
+ .max-w-none { max-width: none; }
101
+ .max-w-xs { max-width: 20rem; }
102
+ .max-w-sm { max-width: 24rem; }
103
+ .max-w-md { max-width: 28rem; }
104
+ .max-w-lg { max-width: 32rem; }
105
+ .max-w-xl { max-width: 36rem; }
106
+ .max-w-2xl { max-width: 42rem; }
107
+ .max-w-3xl { max-width: 48rem; }
108
+ .max-w-4xl { max-width: 56rem; }
109
+ .max-w-5xl { max-width: 64rem; }
110
+ .max-w-6xl { max-width: 72rem; }
111
+ .max-w-7xl { max-width: 80rem; }
112
+ .max-w-full { max-width: 100%; }
113
+ .max-w-screen { max-width: 100vw; }
114
+ .max-w-min { max-width: min-content; }
115
+ .max-w-max { max-width: max-content; }
116
+ .max-w-fit { max-width: fit-content; }
117
+ .max-w-prose { max-width: 65ch; }
118
+
119
+ // Min height
120
+ .min-h-0 { min-height: 0; }
121
+ .min-h-px { min-height: 1px; }
122
+ .min-h-full { min-height: 100%; }
123
+ .min-h-screen { min-height: 100vh; }
124
+ .min-h-svh { min-height: 100svh; }
125
+ .min-h-dvh { min-height: 100dvh; }
126
+ .min-h-min { min-height: min-content; }
127
+ .min-h-max { min-height: max-content; }
128
+ .min-h-fit { min-height: fit-content; }
129
+
130
+ // Max height
131
+ .max-h-none { max-height: none; }
132
+ .max-h-full { max-height: 100%; }
133
+ .max-h-screen { max-height: 100vh; }
134
+ .max-h-svh { max-height: 100svh; }
135
+ .max-h-dvh { max-height: 100dvh; }
136
+ .max-h-min { max-height: min-content; }
137
+ .max-h-max { max-height: max-content; }
138
+ .max-h-fit { max-height: fit-content; }