@zapatran/paper-ember-theme 0.1.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,330 @@
1
+ /* =====================================================================
2
+ BUTTONS
3
+ ===================================================================== */
4
+
5
+ .btn {
6
+ display: inline-flex;
7
+ cursor: pointer;
8
+ align-items: center;
9
+ justify-content: center;
10
+ gap: 0.5rem;
11
+ border-radius: var(--radius-md);
12
+ border: 1px solid transparent;
13
+ font-family: var(--font-family-sans);
14
+ font-weight: 600;
15
+ white-space: nowrap;
16
+ transition:
17
+ transform 150ms ease-out,
18
+ box-shadow 150ms ease-out,
19
+ background-color 150ms ease-out,
20
+ color 150ms ease-out,
21
+ border-color 150ms ease-out;
22
+ outline: none;
23
+ user-select: none;
24
+
25
+ &:focus-visible {
26
+ box-shadow:
27
+ 0 0 0 2px var(--color-paper-50),
28
+ 0 0 0 4px var(--color-ember-300);
29
+ }
30
+ &:active {
31
+ transform: translateY(1px);
32
+ }
33
+ &:disabled {
34
+ cursor: not-allowed;
35
+ opacity: 1;
36
+ }
37
+
38
+ &:where(.dark, .dark *) {
39
+ &:focus-visible {
40
+ box-shadow:
41
+ 0 0 0 2px var(--color-paper-950),
42
+ 0 0 0 4px var(--color-ember-300);
43
+ }
44
+ }
45
+ }
46
+
47
+ .btn__icon {
48
+ height: 1rem;
49
+ width: 1rem;
50
+ flex-shrink: 0;
51
+ }
52
+
53
+ .btn__label {
54
+ display: inline-block;
55
+ }
56
+
57
+ .btn__kbd {
58
+ margin-left: 0.25rem;
59
+ border-radius: 2px;
60
+ border: 1px solid color-mix(in srgb, currentColor 40%, transparent);
61
+ padding-left: 0.375rem;
62
+ padding-right: 0.375rem;
63
+ padding-top: 0.125rem;
64
+ padding-bottom: 0.125rem;
65
+ font-family: var(--font-family-mono);
66
+ font-size: 11px;
67
+ line-height: 1;
68
+ opacity: 0.8;
69
+ }
70
+
71
+ .btn__spinner {
72
+ height: 1rem;
73
+ width: 1rem;
74
+ flex-shrink: 0;
75
+ animation: spin 1s linear infinite;
76
+ }
77
+
78
+ /* --- Variant modifiers --- */
79
+
80
+ .btn--primary {
81
+ background-color: var(--color-ember-500);
82
+ color: white;
83
+
84
+ &:hover {
85
+ background-color: var(--color-ember-600);
86
+ }
87
+ &:active {
88
+ background-color: var(--color-ember-700);
89
+ }
90
+ &:disabled {
91
+ background-color: var(--color-paper-200);
92
+ color: var(--color-paper-500);
93
+ }
94
+
95
+ &:where(.dark, .dark *) {
96
+ background-color: var(--color-ember-500);
97
+ color: var(--color-paper-950);
98
+ &:hover {
99
+ background-color: var(--color-ember-400);
100
+ }
101
+ &:active {
102
+ background-color: var(--color-ember-300);
103
+ }
104
+ &:disabled {
105
+ background-color: var(--color-paper-800);
106
+ color: var(--color-paper-500);
107
+ }
108
+ }
109
+ }
110
+
111
+ .btn--secondary {
112
+ background-color: var(--color-paper-100);
113
+ color: var(--color-paper-900);
114
+ border-color: var(--color-paper-300);
115
+
116
+ &:hover {
117
+ background-color: var(--color-paper-200);
118
+ }
119
+ &:active {
120
+ background-color: var(--color-paper-300);
121
+ }
122
+ &:disabled {
123
+ background-color: var(--color-paper-100);
124
+ color: var(--color-paper-500);
125
+ border-color: var(--color-paper-200);
126
+ }
127
+
128
+ &:where(.dark, .dark *) {
129
+ background-color: var(--color-paper-800);
130
+ color: var(--color-paper-100);
131
+ border-color: var(--color-paper-700);
132
+ &:hover {
133
+ background-color: var(--color-paper-700);
134
+ }
135
+ &:active {
136
+ background-color: var(--color-paper-600);
137
+ }
138
+ &:disabled {
139
+ background-color: var(--color-paper-900);
140
+ color: var(--color-paper-500);
141
+ border-color: var(--color-paper-800);
142
+ }
143
+ }
144
+ }
145
+
146
+ .btn--ghost {
147
+ background-color: transparent;
148
+ color: var(--color-paper-800);
149
+
150
+ &:hover {
151
+ background-color: var(--color-paper-100);
152
+ }
153
+ &:active {
154
+ background-color: var(--color-paper-200);
155
+ }
156
+ &:disabled {
157
+ color: var(--color-paper-400);
158
+ }
159
+ &:disabled:hover {
160
+ background-color: transparent;
161
+ }
162
+
163
+ &:where(.dark, .dark *) {
164
+ color: var(--color-paper-200);
165
+ &:hover {
166
+ background-color: var(--color-paper-800);
167
+ }
168
+ &:active {
169
+ background-color: var(--color-paper-700);
170
+ }
171
+ &:disabled {
172
+ color: var(--color-paper-600);
173
+ }
174
+ &:disabled:hover {
175
+ background-color: transparent;
176
+ }
177
+ }
178
+ }
179
+
180
+ .btn--danger {
181
+ background-color: var(--color-rose-500);
182
+ color: white;
183
+
184
+ &:hover {
185
+ background-color: var(--color-rose-600);
186
+ }
187
+ &:active {
188
+ background-color: var(--color-rose-700);
189
+ }
190
+ &:disabled {
191
+ background-color: var(--color-paper-200);
192
+ color: var(--color-paper-500);
193
+ }
194
+
195
+ &:where(.dark, .dark *) {
196
+ background-color: var(--color-rose-500);
197
+ color: var(--color-paper-950);
198
+ &:hover {
199
+ background-color: var(--color-rose-400);
200
+ }
201
+ &:active {
202
+ background-color: var(--color-rose-300);
203
+ }
204
+ &:disabled {
205
+ background-color: var(--color-paper-800);
206
+ color: var(--color-paper-500);
207
+ }
208
+ }
209
+ }
210
+
211
+ .btn--info {
212
+ background-color: var(--color-ink-500);
213
+ color: white;
214
+
215
+ &:hover {
216
+ background-color: var(--color-ink-600);
217
+ }
218
+ &:active {
219
+ background-color: var(--color-ink-700);
220
+ }
221
+ &:disabled {
222
+ background-color: var(--color-paper-200);
223
+ color: var(--color-paper-500);
224
+ }
225
+
226
+ &:where(.dark, .dark *) {
227
+ background-color: var(--color-ink-400);
228
+ color: var(--color-paper-950);
229
+ &:hover {
230
+ background-color: var(--color-ink-300);
231
+ }
232
+ &:active {
233
+ background-color: var(--color-ink-200);
234
+ }
235
+ &:disabled {
236
+ background-color: var(--color-paper-800);
237
+ color: var(--color-paper-500);
238
+ }
239
+ }
240
+ }
241
+
242
+ /* --- Size modifiers --- */
243
+
244
+ .btn--sm {
245
+ height: 2rem;
246
+ gap: 0.375rem;
247
+ border-radius: var(--radius-sm);
248
+ padding-left: 0.625rem;
249
+ padding-right: 0.625rem;
250
+ font-size: 12px;
251
+
252
+ & .btn__icon,
253
+ & .btn__spinner {
254
+ height: 0.875rem;
255
+ width: 0.875rem;
256
+ }
257
+ }
258
+
259
+ .btn--md {
260
+ height: 2.5rem;
261
+ border-radius: var(--radius-md);
262
+ padding-left: 1rem;
263
+ padding-right: 1rem;
264
+ font-size: 14px;
265
+ }
266
+
267
+ .btn--lg {
268
+ height: 2.75rem;
269
+ border-radius: var(--radius-md);
270
+ padding-left: 1.25rem;
271
+ padding-right: 1.25rem;
272
+ font-size: 16px;
273
+
274
+ & .btn__icon,
275
+ & .btn__spinner {
276
+ height: 18px;
277
+ width: 18px;
278
+ }
279
+ }
280
+
281
+ .btn--xl {
282
+ height: 3.5rem;
283
+ border-radius: var(--radius-lg);
284
+ padding-left: 1.5rem;
285
+ padding-right: 1.5rem;
286
+ font-size: 17px;
287
+
288
+ & .btn__icon,
289
+ & .btn__spinner {
290
+ height: 1.25rem;
291
+ width: 1.25rem;
292
+ }
293
+ }
294
+
295
+ /* --- Shape modifiers --- */
296
+
297
+ .btn--icon {
298
+ aspect-ratio: 1 / 1;
299
+ gap: 0;
300
+ padding-left: 0;
301
+ padding-right: 0;
302
+
303
+ &.btn--sm {
304
+ width: 2rem;
305
+ }
306
+ &.btn--md {
307
+ width: 2.5rem;
308
+ }
309
+ &.btn--lg {
310
+ width: 2.75rem;
311
+ }
312
+ &.btn--xl {
313
+ width: 3.5rem;
314
+ }
315
+ }
316
+
317
+ .btn--block {
318
+ width: 100%;
319
+ }
320
+
321
+ /* --- State modifiers --- */
322
+
323
+ .btn--loading {
324
+ pointer-events: none;
325
+ cursor: wait;
326
+
327
+ & .btn__label {
328
+ opacity: 0.7;
329
+ }
330
+ }
package/src/cards.css ADDED
@@ -0,0 +1,132 @@
1
+ /* =====================================================================
2
+ CARDS
3
+ ===================================================================== */
4
+
5
+ .card {
6
+ background-color: var(--color-paper-50);
7
+ border: 1px solid var(--color-paper-200);
8
+ box-shadow: var(--shadow-paper-2);
9
+ position: relative;
10
+ border-radius: var(--radius-xl);
11
+ padding: 1.25rem;
12
+
13
+ &::before {
14
+ content: '';
15
+ position: absolute;
16
+ top: 0;
17
+ right: 0;
18
+ width: 28px;
19
+ height: 28px;
20
+ background: linear-gradient(225deg, rgba(56, 44, 34, 0.1) 0 50%, transparent 50%);
21
+ border-bottom-left-radius: 6px;
22
+ }
23
+
24
+ &:where(.dark, .dark *) {
25
+ background-color: var(--color-paper-900);
26
+ border-color: var(--color-paper-800);
27
+
28
+ &::before {
29
+ background: linear-gradient(225deg, rgba(244, 237, 224, 0.06) 0 50%, transparent 50%);
30
+ }
31
+ }
32
+ }
33
+
34
+ .card__header {
35
+ color: var(--color-paper-600);
36
+ font-family: var(--font-family-mono);
37
+ font-size: 11px;
38
+ letter-spacing: 0.1em;
39
+ text-transform: uppercase;
40
+
41
+ &:where(.dark, .dark *) {
42
+ color: var(--color-paper-400);
43
+ }
44
+ }
45
+
46
+ .card__title {
47
+ color: var(--color-paper-950);
48
+ font-size: 15px;
49
+ line-height: 1.25;
50
+ font-weight: 600;
51
+
52
+ &:where(.dark, .dark *) {
53
+ color: var(--color-paper-50);
54
+ }
55
+ }
56
+
57
+ .card__meta {
58
+ color: var(--color-paper-600);
59
+ font-size: 12px;
60
+
61
+ &:where(.dark, .dark *) {
62
+ color: var(--color-paper-400);
63
+ }
64
+ }
65
+
66
+ .card__kpi {
67
+ color: var(--color-paper-950);
68
+ margin-top: 0.5rem;
69
+ font-size: 34px;
70
+ line-height: 1;
71
+ font-weight: 700;
72
+ letter-spacing: -0.05em;
73
+
74
+ &:where(.dark, .dark *) {
75
+ color: var(--color-paper-50);
76
+ }
77
+ }
78
+
79
+ .card__trend {
80
+ margin-top: 0.5rem;
81
+ display: inline-flex;
82
+ align-items: center;
83
+ gap: 0.25rem;
84
+ font-size: 12px;
85
+ font-weight: 600;
86
+ }
87
+
88
+ .card__trend--up {
89
+ color: var(--color-leaf-700);
90
+
91
+ &:where(.dark, .dark *) {
92
+ color: var(--color-leaf-300);
93
+ }
94
+ }
95
+
96
+ .card__trend--down {
97
+ color: var(--color-rose-700);
98
+
99
+ &:where(.dark, .dark *) {
100
+ color: var(--color-rose-300);
101
+ }
102
+ }
103
+
104
+ .card__chart {
105
+ color: var(--color-ember-500);
106
+ margin-top: 0.75rem;
107
+ width: 100%;
108
+ height: 32px;
109
+
110
+ &:where(.dark, .dark *) {
111
+ color: var(--color-ember-400);
112
+ }
113
+ }
114
+
115
+ .card__avatar {
116
+ background-color: var(--color-ember-200);
117
+ color: var(--color-ember-800);
118
+ display: inline-flex;
119
+ height: 2rem;
120
+ width: 2rem;
121
+ flex-shrink: 0;
122
+ align-items: center;
123
+ justify-content: center;
124
+ border-radius: 9999px;
125
+ font-size: 13px;
126
+ font-weight: 700;
127
+
128
+ &:where(.dark, .dark *) {
129
+ background-color: var(--color-ember-800);
130
+ color: var(--color-ember-200);
131
+ }
132
+ }
@@ -0,0 +1,9 @@
1
+ /* =====================================================================
2
+ Paper & Ember — components (native Tailwind v4 @utility, no @apply)
3
+ ===================================================================== */
4
+
5
+ @keyframes spin {
6
+ to {
7
+ transform: rotate(360deg);
8
+ }
9
+ }