easemotion-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.
@@ -0,0 +1,277 @@
1
+ /* ============================================================
2
+ EaseMotion CSS — utilities.css
3
+ Human-readable layout and spacing utility classes
4
+ ============================================================ */
5
+
6
+ /* ────────────────────────────────────────────────────────────
7
+ DISPLAY
8
+ ──────────────────────────────────────────────────────────── */
9
+
10
+ .ease-block { display: block; }
11
+ .ease-inline { display: inline; }
12
+ .ease-inline-block { display: inline-block; }
13
+ .ease-hidden { display: none; }
14
+
15
+ /* ────────────────────────────────────────────────────────────
16
+ FLEXBOX
17
+ ──────────────────────────────────────────────────────────── */
18
+
19
+ .ease-flex { display: flex; }
20
+ .ease-inline-flex { display: inline-flex; }
21
+
22
+ /* Center everything: the most-used utility */
23
+ .ease-center {
24
+ display: flex;
25
+ align-items: center;
26
+ justify-content: center;
27
+ }
28
+
29
+ .ease-flex-col { flex-direction: column; }
30
+ .ease-flex-row { flex-direction: row; }
31
+ .ease-flex-wrap { flex-wrap: wrap; }
32
+ .ease-flex-nowrap { flex-wrap: nowrap; }
33
+
34
+ .ease-items-start { align-items: flex-start; }
35
+ .ease-items-center { align-items: center; }
36
+ .ease-items-end { align-items: flex-end; }
37
+ .ease-items-stretch { align-items: stretch; }
38
+
39
+ .ease-justify-start { justify-content: flex-start; }
40
+ .ease-justify-center { justify-content: center; }
41
+ .ease-justify-end { justify-content: flex-end; }
42
+ .ease-justify-between { justify-content: space-between; }
43
+ .ease-justify-around { justify-content: space-around; }
44
+ .ease-justify-evenly { justify-content: space-evenly; }
45
+
46
+ .ease-flex-1 { flex: 1 1 0%; }
47
+ .ease-flex-auto { flex: 1 1 auto; }
48
+ .ease-flex-none { flex: none; }
49
+
50
+ .ease-grow { flex-grow: 1; }
51
+ .ease-shrink { flex-shrink: 1; }
52
+
53
+ /* ────────────────────────────────────────────────────────────
54
+ GRID
55
+ ──────────────────────────────────────────────────────────── */
56
+
57
+ .ease-grid { display: grid; }
58
+ .ease-inline-grid { display: inline-grid; }
59
+
60
+ .ease-grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
61
+ .ease-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
62
+ .ease-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
63
+ .ease-grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
64
+
65
+ /* Auto-fit responsive columns */
66
+ .ease-grid-auto {
67
+ grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
68
+ }
69
+
70
+ .ease-col-span-2 { grid-column: span 2 / span 2; }
71
+ .ease-col-span-3 { grid-column: span 3 / span 3; }
72
+ .ease-col-full { grid-column: 1 / -1; }
73
+
74
+ /* ────────────────────────────────────────────────────────────
75
+ GAP
76
+ ──────────────────────────────────────────────────────────── */
77
+
78
+ .ease-gap-1 { gap: var(--ease-space-1); }
79
+ .ease-gap-2 { gap: var(--ease-space-2); }
80
+ .ease-gap-3 { gap: var(--ease-space-3); }
81
+ .ease-gap { gap: var(--ease-space-4); } /* default alias */
82
+ .ease-gap-4 { gap: var(--ease-space-4); }
83
+ .ease-gap-6 { gap: var(--ease-space-6); }
84
+ .ease-gap-8 { gap: var(--ease-space-8); }
85
+ .ease-gap-10 { gap: var(--ease-space-10); }
86
+
87
+ /* ────────────────────────────────────────────────────────────
88
+ PADDING
89
+ ──────────────────────────────────────────────────────────── */
90
+
91
+ .ease-padding { padding: var(--ease-space-4); } /* default alias */
92
+ .ease-padding-1 { padding: var(--ease-space-1); }
93
+ .ease-padding-2 { padding: var(--ease-space-2); }
94
+ .ease-padding-3 { padding: var(--ease-space-3); }
95
+ .ease-padding-4 { padding: var(--ease-space-4); }
96
+ .ease-padding-6 { padding: var(--ease-space-6); }
97
+ .ease-padding-8 { padding: var(--ease-space-8); }
98
+ .ease-padding-10 { padding: var(--ease-space-10); }
99
+ .ease-padding-12 { padding: var(--ease-space-12); }
100
+
101
+ .ease-pt-4 { padding-top: var(--ease-space-4); }
102
+ .ease-pr-4 { padding-right: var(--ease-space-4); }
103
+ .ease-pb-4 { padding-bottom: var(--ease-space-4); }
104
+ .ease-pl-4 { padding-left: var(--ease-space-4); }
105
+
106
+ .ease-px-4 { padding-left: var(--ease-space-4); padding-right: var(--ease-space-4); }
107
+ .ease-py-4 { padding-top: var(--ease-space-4); padding-bottom: var(--ease-space-4); }
108
+ .ease-px-8 { padding-left: var(--ease-space-8); padding-right: var(--ease-space-8); }
109
+ .ease-py-8 { padding-top: var(--ease-space-8); padding-bottom: var(--ease-space-8); }
110
+
111
+ /* ────────────────────────────────────────────────────────────
112
+ MARGIN
113
+ ──────────────────────────────────────────────────────────── */
114
+
115
+ .ease-margin { margin: var(--ease-space-4); } /* default alias */
116
+ .ease-margin-1 { margin: var(--ease-space-1); }
117
+ .ease-margin-2 { margin: var(--ease-space-2); }
118
+ .ease-margin-3 { margin: var(--ease-space-3); }
119
+ .ease-margin-4 { margin: var(--ease-space-4); }
120
+ .ease-margin-6 { margin: var(--ease-space-6); }
121
+ .ease-margin-8 { margin: var(--ease-space-8); }
122
+ .ease-margin-auto { margin: auto; }
123
+
124
+ .ease-mx-auto { margin-left: auto; margin-right: auto; }
125
+ .ease-my-4 { margin-top: var(--ease-space-4); margin-bottom: var(--ease-space-4); }
126
+ .ease-my-8 { margin-top: var(--ease-space-8); margin-bottom: var(--ease-space-8); }
127
+
128
+ .ease-mt-4 { margin-top: var(--ease-space-4); }
129
+ .ease-mr-4 { margin-right: var(--ease-space-4); }
130
+ .ease-mb-4 { margin-bottom: var(--ease-space-4); }
131
+ .ease-ml-4 { margin-left: var(--ease-space-4); }
132
+
133
+ /* ────────────────────────────────────────────────────────────
134
+ WIDTH & HEIGHT
135
+ ──────────────────────────────────────────────────────────── */
136
+
137
+ .ease-w-full { width: 100%; }
138
+ .ease-w-screen { width: 100vw; }
139
+ .ease-w-auto { width: auto; }
140
+ .ease-h-full { height: 100%; }
141
+ .ease-h-screen { height: 100vh; }
142
+ .ease-h-auto { height: auto; }
143
+
144
+ /* Max-width container */
145
+ .ease-container {
146
+ width: 100%;
147
+ max-width: 1200px;
148
+ margin-left: auto;
149
+ margin-right: auto;
150
+ padding-left: var(--ease-space-6);
151
+ padding-right: var(--ease-space-6);
152
+ }
153
+
154
+ /* ────────────────────────────────────────────────────────────
155
+ POSITIONING
156
+ ──────────────────────────────────────────────────────────── */
157
+
158
+ .ease-relative { position: relative; }
159
+ .ease-absolute { position: absolute; }
160
+ .ease-fixed { position: fixed; }
161
+ .ease-sticky { position: sticky; top: 0; }
162
+
163
+ /* ────────────────────────────────────────────────────────────
164
+ OVERFLOW
165
+ ──────────────────────────────────────────────────────────── */
166
+
167
+ .ease-overflow-hidden { overflow: hidden; }
168
+ .ease-overflow-auto { overflow: auto; }
169
+ .ease-overflow-scroll { overflow: scroll; }
170
+ .ease-overflow-x-auto { overflow-x: auto; }
171
+ .ease-overflow-y-auto { overflow-y: auto; }
172
+
173
+ /* ────────────────────────────────────────────────────────────
174
+ TEXT
175
+ ──────────────────────────────────────────────────────────── */
176
+
177
+ .ease-text-xs { font-size: var(--ease-text-xs); }
178
+ .ease-text-sm { font-size: var(--ease-text-sm); }
179
+ .ease-text-base { font-size: var(--ease-text-base); }
180
+ .ease-text-lg { font-size: var(--ease-text-lg); }
181
+ .ease-text-xl { font-size: var(--ease-text-xl); }
182
+ .ease-text-2xl { font-size: var(--ease-text-2xl); }
183
+ .ease-text-3xl { font-size: var(--ease-text-3xl); }
184
+ .ease-text-4xl { font-size: var(--ease-text-4xl); }
185
+
186
+ .ease-text-left { text-align: left; }
187
+ .ease-text-center { text-align: center; }
188
+ .ease-text-right { text-align: right; }
189
+
190
+ .ease-font-light { font-weight: 300; }
191
+ .ease-font-regular { font-weight: 400; }
192
+ .ease-font-medium { font-weight: 500; }
193
+ .ease-font-semibold { font-weight: 600; }
194
+ .ease-font-bold { font-weight: 700; }
195
+
196
+ .ease-uppercase { text-transform: uppercase; }
197
+ .ease-lowercase { text-transform: lowercase; }
198
+ .ease-capitalize { text-transform: capitalize; }
199
+
200
+ .ease-truncate {
201
+ overflow: hidden;
202
+ text-overflow: ellipsis;
203
+ white-space: nowrap;
204
+ }
205
+
206
+ /* ────────────────────────────────────────────────────────────
207
+ COLORS (text + background)
208
+ ──────────────────────────────────────────────────────────── */
209
+
210
+ .ease-text-primary { color: var(--ease-color-primary); }
211
+ .ease-text-success { color: var(--ease-color-success); }
212
+ .ease-text-danger { color: var(--ease-color-danger); }
213
+ .ease-text-warning { color: var(--ease-color-warning); }
214
+ .ease-text-muted { color: var(--ease-color-muted); }
215
+ .ease-text-white { color: #ffffff; }
216
+
217
+ .ease-bg-primary { background-color: var(--ease-color-primary); }
218
+ .ease-bg-success { background-color: var(--ease-color-success); }
219
+ .ease-bg-danger { background-color: var(--ease-color-danger); }
220
+ .ease-bg-warning { background-color: var(--ease-color-warning); }
221
+ .ease-bg-white { background-color: #ffffff; }
222
+ .ease-bg-surface { background-color: var(--ease-color-surface); }
223
+ .ease-bg-neutral { background-color: var(--ease-color-neutral-100); }
224
+
225
+ /* ────────────────────────────────────────────────────────────
226
+ BORDER & RADIUS
227
+ ──────────────────────────────────────────────────────────── */
228
+
229
+ .ease-border { border: 1px solid var(--ease-color-neutral-200); }
230
+ .ease-border-2 { border: 2px solid var(--ease-color-neutral-200); }
231
+ .ease-border-primary { border-color: var(--ease-color-primary); }
232
+
233
+ .ease-rounded-sm { border-radius: var(--ease-radius-sm); }
234
+ .ease-rounded { border-radius: var(--ease-radius-md); }
235
+ .ease-rounded-lg { border-radius: var(--ease-radius-lg); }
236
+ .ease-rounded-xl { border-radius: var(--ease-radius-xl); }
237
+ .ease-rounded-full { border-radius: var(--ease-radius-full); }
238
+
239
+ /* ────────────────────────────────────────────────────────────
240
+ SHADOW
241
+ ──────────────────────────────────────────────────────────── */
242
+
243
+ .ease-shadow-sm { box-shadow: var(--ease-shadow-sm); }
244
+ .ease-shadow { box-shadow: var(--ease-shadow-md); }
245
+ .ease-shadow-lg { box-shadow: var(--ease-shadow-lg); }
246
+ .ease-shadow-xl { box-shadow: var(--ease-shadow-xl); }
247
+ .ease-shadow-none { box-shadow: none; }
248
+
249
+ /* ────────────────────────────────────────────────────────────
250
+ OPACITY
251
+ ──────────────────────────────────────────────────────────── */
252
+
253
+ .ease-opacity-0 { opacity: 0; }
254
+ .ease-opacity-25 { opacity: 0.25; }
255
+ .ease-opacity-50 { opacity: 0.50; }
256
+ .ease-opacity-75 { opacity: 0.75; }
257
+ .ease-opacity-100 { opacity: 1; }
258
+
259
+ /* ────────────────────────────────────────────────────────────
260
+ CURSOR
261
+ ──────────────────────────────────────────────────────────── */
262
+
263
+ .ease-cursor-pointer { cursor: pointer; }
264
+ .ease-cursor-default { cursor: default; }
265
+ .ease-cursor-not-allowed { cursor: not-allowed; }
266
+
267
+ /* ────────────────────────────────────────────────────────────
268
+ RESPONSIVE HELPERS
269
+ ──────────────────────────────────────────────────────────── */
270
+
271
+ @media (max-width: 768px) {
272
+ .ease-sm-hidden { display: none; }
273
+ .ease-sm-full { width: 100%; }
274
+ .ease-sm-flex-col { flex-direction: column; }
275
+ .ease-sm-grid-cols-1 { grid-template-columns: 1fr; }
276
+ .ease-sm-text-center { text-align: center; }
277
+ }
@@ -0,0 +1,106 @@
1
+ /* ============================================================
2
+ EaseMotion CSS — variables.css
3
+ Design Tokens: the single source of truth for all values
4
+ ============================================================ */
5
+
6
+ :root {
7
+
8
+ /* ── Transition Speeds ─────────────────────────────────── */
9
+ --ease-speed-fast: 150ms;
10
+ --ease-speed-medium: 300ms;
11
+ --ease-speed-slow: 600ms;
12
+
13
+ --ease-ease: cubic-bezier(0.4, 0, 0.2, 1); /* smooth ease-in-out */
14
+ --ease-ease-out: cubic-bezier(0, 0, 0.2, 1);
15
+ --ease-ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
16
+
17
+ /* ── Color Palette ─────────────────────────────────────── */
18
+ --ease-color-primary: #6c63ff;
19
+ --ease-color-primary-light: #a09af8;
20
+ --ease-color-primary-dark: #4b44cc;
21
+
22
+ --ease-color-success: #22c55e;
23
+ --ease-color-success-light: #86efac;
24
+ --ease-color-success-dark: #15803d;
25
+
26
+ --ease-color-danger: #ef4444;
27
+ --ease-color-danger-light: #fca5a5;
28
+ --ease-color-danger-dark: #b91c1c;
29
+
30
+ --ease-color-warning: #f59e0b;
31
+ --ease-color-warning-light: #fcd34d;
32
+ --ease-color-warning-dark: #b45309;
33
+
34
+ --ease-color-neutral-50: #f8fafc;
35
+ --ease-color-neutral-100: #f1f5f9;
36
+ --ease-color-neutral-200: #e2e8f0;
37
+ --ease-color-neutral-300: #cbd5e1;
38
+ --ease-color-neutral-400: #94a3b8;
39
+ --ease-color-neutral-500: #64748b;
40
+ --ease-color-neutral-600: #475569;
41
+ --ease-color-neutral-700: #334155;
42
+ --ease-color-neutral-800: #1e293b;
43
+ --ease-color-neutral-900: #0f172a;
44
+
45
+ --ease-color-bg: var(--ease-color-neutral-50);
46
+ --ease-color-surface: #ffffff;
47
+ --ease-color-text: var(--ease-color-neutral-800);
48
+ --ease-color-muted: var(--ease-color-neutral-500);
49
+
50
+ /* ── Spacing Scale ─────────────────────────────────────── */
51
+ --ease-space-1: 0.25rem; /* 4px */
52
+ --ease-space-2: 0.5rem; /* 8px */
53
+ --ease-space-3: 0.75rem; /* 12px */
54
+ --ease-space-4: 1rem; /* 16px */
55
+ --ease-space-5: 1.25rem; /* 20px */
56
+ --ease-space-6: 1.5rem; /* 24px */
57
+ --ease-space-8: 2rem; /* 32px */
58
+ --ease-space-10: 2.5rem; /* 40px */
59
+ --ease-space-12: 3rem; /* 48px */
60
+ --ease-space-16: 4rem; /* 64px */
61
+
62
+ /* ── Border Radius ─────────────────────────────────────── */
63
+ --ease-radius-sm: 0.25rem;
64
+ --ease-radius-md: 0.5rem;
65
+ --ease-radius-lg: 1rem;
66
+ --ease-radius-xl: 1.5rem;
67
+ --ease-radius-full: 9999px;
68
+
69
+ /* ── Shadows ───────────────────────────────────────────── */
70
+ --ease-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08),
71
+ 0 1px 2px rgba(0, 0, 0, 0.05);
72
+ --ease-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.10),
73
+ 0 2px 4px -1px rgba(0, 0, 0, 0.06);
74
+ --ease-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.10),
75
+ 0 4px 6px -2px rgba(0, 0, 0, 0.05);
76
+ --ease-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.10),
77
+ 0 10px 10px -5px rgba(0, 0, 0, 0.04);
78
+
79
+ --ease-glow-primary: 0 0 16px rgba(108, 99, 255, 0.45);
80
+ --ease-glow-success: 0 0 16px rgba(34, 197, 94, 0.45);
81
+ --ease-glow-danger: 0 0 16px rgba(239, 68, 68, 0.45);
82
+
83
+ /* ── Typography ────────────────────────────────────────── */
84
+ --ease-font-sans: 'Inter', system-ui, -apple-system, sans-serif;
85
+ --ease-font-mono: 'JetBrains Mono', 'Fira Code', monospace;
86
+
87
+ --ease-text-xs: 0.75rem;
88
+ --ease-text-sm: 0.875rem;
89
+ --ease-text-base: 1rem;
90
+ --ease-text-lg: 1.125rem;
91
+ --ease-text-xl: 1.25rem;
92
+ --ease-text-2xl: 1.5rem;
93
+ --ease-text-3xl: 1.875rem;
94
+ --ease-text-4xl: 2.25rem;
95
+
96
+ --ease-leading-tight: 1.25;
97
+ --ease-leading-normal: 1.6;
98
+ --ease-leading-loose: 1.9;
99
+
100
+ /* ── Z-Index Scale ─────────────────────────────────────── */
101
+ --ease-z-base: 0;
102
+ --ease-z-raised: 10;
103
+ --ease-z-overlay: 100;
104
+ --ease-z-modal: 1000;
105
+ --ease-z-toast: 9999;
106
+ }
package/easemotion.css ADDED
@@ -0,0 +1,23 @@
1
+ /* ============================================================
2
+ EaseMotion CSS — easemotion.css
3
+ Single entry point. Import this one file to use the entire
4
+ framework. Order matters: variables must load first.
5
+ ============================================================
6
+
7
+ Usage:
8
+ <link rel="stylesheet" href="easemotion.css" />
9
+
10
+ Or in CSS:
11
+ @import "easemotion.css";
12
+
13
+ ============================================================ */
14
+
15
+ /* ── Core (required, load in this order) ─────────────────── */
16
+ @import "./core/variables.css";
17
+ @import "./core/base.css";
18
+ @import "./core/animations.css";
19
+ @import "./core/utilities.css";
20
+
21
+ /* ── Components (tree-shakeable in future versions) ──────── */
22
+ @import "./components/buttons.css";
23
+ @import "./components/cards.css";
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "easemotion-css",
3
+ "version": "1.0.0",
4
+ "description": "Human-readable, animation-first CSS framework. Zero dependencies. Link one file and start building.",
5
+ "main": "easemotion.css",
6
+ "style": "easemotion.css",
7
+ "files": [
8
+ "easemotion.css",
9
+ "core/",
10
+ "components/",
11
+ "README.md",
12
+ "LICENSE",
13
+ "CHANGELOG.md"
14
+ ],
15
+ "scripts": {
16
+ "test": "echo \"No tests yet\" && exit 0"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/SAPTARSHI-coder/EaseMotion-css.git"
21
+ },
22
+ "keywords": [
23
+ "css",
24
+ "animation",
25
+ "framework",
26
+ "easemotion",
27
+ "ui",
28
+ "hover",
29
+ "transitions",
30
+ "utilities",
31
+ "no-build",
32
+ "readable"
33
+ ],
34
+ "author": "Saptarshi Sadhu <https://github.com/SAPTARSHI-coder>",
35
+ "license": "MIT",
36
+ "bugs": {
37
+ "url": "https://github.com/SAPTARSHI-coder/EaseMotion-css/issues"
38
+ },
39
+ "homepage": "https://github.com/SAPTARSHI-coder/EaseMotion-css#readme"
40
+ }