frutjam 1.1.0-beta.0 → 1.3.0-beta.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "frutjam",
3
- "version": "1.1.0-beta.0",
3
+ "version": "1.3.0-beta.0",
4
4
  "description": "A utility-first CSS framework UI Library",
5
5
  "funding": "https://ko-fi.com/nezanuha",
6
6
  "main": "./dist/frutjam.css",
@@ -17,7 +17,7 @@
17
17
  ".": "./src/main.css",
18
18
  "./base/*": "./src/base/*",
19
19
  "./components/*": "./src/components/*",
20
- "./themes/*": "./src/themes/*",
20
+ "./themes/*": "./src/theme/*",
21
21
  "./utilities/*": "./src/utilities/*"
22
22
  },
23
23
  "scripts": {
@@ -45,14 +45,14 @@
45
45
  "css-loader": "^7.1.2",
46
46
  "html-webpack-plugin": "^5.6.3",
47
47
  "mini-css-extract-plugin": "^2.9.2",
48
- "postcss": "^8.5.3",
48
+ "postcss": "^8.5.4",
49
49
  "postcss-import": "^16.1.0",
50
50
  "postcss-loader": "^8.1.1",
51
- "prettier-plugin-tailwindcss": "^0.6.11",
51
+ "prettier-plugin-tailwindcss": "^0.6.12",
52
52
  "string-replace-loader": "^3.1.0",
53
53
  "style-loader": "^4.0.0",
54
54
  "webpack": "^5.99.9",
55
55
  "webpack-cli": "^6.0.1",
56
- "webpack-dev-server": "^5.2.1"
56
+ "webpack-dev-server": "^5.2.2"
57
57
  }
58
58
  }
@@ -1,11 +1,11 @@
1
1
  @import '../theme/jams/base.css';
2
- @utility accordion {
3
- @apply divide-y divide-core-200 dark:divide-core-900;
2
+ @import '../utilities/para.css';
4
3
 
4
+ @utility accordion {
5
5
  display: grid;
6
- background: light-dark(
7
- var(--core-50),
8
- var(--core-950)
6
+ background-color: light-dark(
7
+ var(--core-0),
8
+ var(--core-1000)
9
9
  );
10
10
  border: 1px solid light-dark(
11
11
  var(--core-200),
@@ -15,19 +15,36 @@
15
15
  cursor: pointer;
16
16
 
17
17
  &>details {
18
- @apply text-pretty;
18
+ &:not(:last-child) {
19
+ border-bottom: 1px solid light-dark(
20
+ var(--core-200),
21
+ var(--core-900)
22
+ );
23
+ }
24
+ text-wrap: pretty;
19
25
 
20
26
  &>*:not(summary){
21
- @apply px-4 pb-4;
27
+ padding-inline: 1rem;
28
+ padding-bottom: 1rem;
22
29
  }
23
30
  &>summary::marker{
24
- @apply content-none;
31
+ content: none;
32
+ }
33
+ &>p{
34
+ @apply para;
25
35
  }
26
36
  &>summary{
27
- @apply flex gap-4 items-center justify-between p-4 font-medium;
37
+ display: flex;
38
+ gap: 1rem;
39
+ align-items: center;
40
+ justify-content: space-between;
41
+ padding: 1rem;
42
+ font-weight: 500;
43
+
28
44
  &::after {
29
- @apply content-[url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyMCAyMCIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZT0icmdiYSg1Myw1Myw1MywxKSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij4KICA8cGF0aCBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Im0xOS41IDguMjUtNy41IDcuNS03LjUtNy41Ii8+Cjwvc3ZnPg==')];
30
- @apply inline-block text-inherit;
45
+ content: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyMCAyMCIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZT0icmdiYSg1Myw1Myw1MywxKSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij4KICA8cGF0aCBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Im0xOS41IDguMjUtNy41IDcuNS03LjUtNy41Ii8+Cjwvc3ZnPg==');
46
+ display: inline-block;
47
+ color: inherit;
31
48
  }
32
49
  }
33
50
  }
@@ -35,9 +52,11 @@
35
52
  &>details[open] {
36
53
 
37
54
  &>summary {
38
- @apply pb-4;
55
+ padding-bottom: 1rem;
39
56
  &::after {
40
- @apply rotate-180 origin-center transition-transform duration-300;
57
+ transform: rotate(180deg);
58
+ transform-origin: center;
59
+ transition: transform 300ms;
41
60
  }
42
61
  }
43
62
  }
@@ -67,8 +67,8 @@
67
67
  }
68
68
 
69
69
  @utility badge {
70
- @apply gap-2 badge-md;
71
-
70
+ @apply badge-md;
71
+ gap: 0.5rem;
72
72
  border-radius: var(--badge-radius, var(--radius-badge));
73
73
  display: inline-flex;
74
74
  align-items: center;
@@ -1,8 +1,7 @@
1
1
  @import "../theme/jams/base.css";
2
2
 
3
3
  @utility breadcrumb {
4
- @apply py-2;
5
-
4
+ padding-block: 0.5rem;
6
5
  max-width: 100%;
7
6
  overflow-x: auto;
8
7
 
@@ -25,17 +24,22 @@
25
24
  & > span {
26
25
  display: flex;
27
26
  align-items: center;
28
- @apply gap-2;
27
+ gap: 0.5rem;
29
28
 
30
29
  @media (hover: hover) {
31
30
  &:hover:not([aria-current="page"]):not(.breadcrumb-current) {
32
- @apply underline underline-offset-4;
31
+ text-decoration-line: underline;
32
+ text-underline-offset: 4px;
33
33
  cursor: pointer;
34
34
  }
35
35
  }
36
36
 
37
37
  &:focus {
38
- @apply outline-hidden;
38
+ outline-style: none;
39
+ @media (forced-colors: active) {
40
+ outline: 2px solid transparent;
41
+ outline-offset: 2px;
42
+ }
39
43
  }
40
44
 
41
45
  &:focus-visible {
@@ -47,15 +51,22 @@
47
51
  /* Only show default separator if NOT preceded by .breadcrumb-separator */
48
52
  & + .breadcrumb-item::before, & + li::before {
49
53
  content: "";
50
- @apply mr-3 ml-2 block h-1.5 w-1.5 opacity-40;
51
- rotate: 45deg;
54
+ margin-right: 0.75rem;
55
+ margin-left: 0.5rem;
56
+ height: 0.375rem;
57
+ width: 0.375rem;
58
+ opacity: 40%;
59
+ display: block;
60
+ transform: rotate(45deg);
61
+ transition: transform 300ms;
52
62
  border-top: 1px solid;
53
63
  border-right: 1px solid;
54
64
  background-color: #0000;
55
65
  }
56
66
 
57
67
  [dir="rtl"] & + .breadcrumb-item::before, [dir="rtl"] & + li::before {
58
- rotate: -135deg;
68
+ transform: rotate(-135deg);
69
+ transition: transform 300ms;
59
70
  }
60
71
 
61
72
  /* Remove default separator when preceded by custom .breadcrumb-separator */
@@ -68,7 +79,12 @@
68
79
  .breadcrumb-separator {
69
80
  display: flex;
70
81
  align-items: center;
71
- @apply mx-2 text-sm text-gray-500;
82
+ margin-inline: 0.5rem;
83
+ font-size: 0.875rem;
84
+ color: light-dark(
85
+ var(--core-200),
86
+ var(--core-900)
87
+ );
72
88
  }
73
89
  }
74
90
  }
@@ -1,6 +1,96 @@
1
1
  @import "../theme/jams/base.css";
2
2
  @import "../theme/animation/wiggle.css";
3
3
 
4
+ @utility btn {
5
+ @apply btn-md;
6
+
7
+ text-shadow: 0px 1px 1px color-mix(in oklab, var(--btn-900) 10%, transparent);
8
+ line-height: 1.5;
9
+ width: var(--btn-width);
10
+ max-width: var(--btn-max-width);
11
+ transition: translate 0.2s ease-out, visibility 0.2s allow-discrete, background-color 0.2s ease-out, opacity 0.1s ease-out, border-color 0.3s;
12
+ position: relative;
13
+ display: var(--btn-display, inline-flex);
14
+ gap: 0.375rem;
15
+ flex-shrink: 0;
16
+ align-items: center;
17
+ justify-content: center;
18
+ align-self: flex-start;
19
+ flex-wrap: nowrap;
20
+ vertical-align: middle;
21
+ font-weight: 500;
22
+ text-align: center;
23
+ border-radius: var(--btn-radius, var(--radius-btn));
24
+ overflow: hidden;
25
+ cursor: pointer;
26
+ box-sizing: border-box;
27
+
28
+ padding-inline: var(--btn-inline);
29
+ padding-block: var(--btn-block);
30
+ font-size: var(--btn-text-size);
31
+
32
+ &:where(.btn-square){
33
+ padding-inline: var(--btn-block);
34
+ padding-block: var(--btn-block);
35
+ }
36
+
37
+ background-color: var(--btn-bg-color);
38
+ color: var(--btn-text-color);
39
+
40
+ outline-color: var(--btn-outline-color);
41
+ outline-style: var(--btn-outline-style);
42
+ outline-width: var(--btn-outline-width);
43
+
44
+ text-decoration: var(--btn-text-decoration);
45
+ text-underline-offset: var(--btn-text-underline-offset);
46
+
47
+ &:is(:disabled, [disabled], .btn-disabled) {
48
+ opacity: 20%;
49
+ cursor: not-allowed;
50
+ pointer-events: none;
51
+ }
52
+
53
+ &:is(input[type="checkbox"], input[type="radio"]) {
54
+ appearance: none;
55
+
56
+ &::after {
57
+ content: attr(aria-label);
58
+ }
59
+
60
+ &:checked {
61
+ isolation: isolate;
62
+ }
63
+ }
64
+
65
+ &:focus-visible {
66
+ outline: 2px solid var(--btn-700, currentColor);
67
+ outline-offset: 2px;
68
+ isolation: isolate;
69
+ }
70
+
71
+ @media (hover: hover) {
72
+ &:is(:hover) {
73
+ @apply btn-active;
74
+ }
75
+ }
76
+
77
+ --btn-50: var(--default-50);
78
+ --btn-100: var(--default-100);
79
+ --btn-200: var(--default-200);
80
+ --btn-300: var(--default-300);
81
+ --btn-400: var(--default-400);
82
+ --btn-500: var(--default-500);
83
+ --btn-600: var(--default-600);
84
+ --btn-700: var(--default-700);
85
+ --btn-800: var(--default-800);
86
+ --btn-900: var(--default-900);
87
+ --btn-950: var(--default-950);
88
+
89
+ --btn-bg-color: light-dark(var(--btn-200), var(--btn-800));
90
+ --btn-text-color: light-dark(var(--btn-900), var(--btn-50));
91
+ }
92
+
93
+
4
94
  @utility btn-xs {
5
95
  --btn-inline: 0.875rem;
6
96
  --btn-block: 0.375rem;
@@ -37,7 +127,7 @@
37
127
  --btn-text-size: 1.375rem;
38
128
  }
39
129
 
40
- /*btn-circle deprecated*/
130
+ /*btn-circle deprecated: Remove this in stable release*/
41
131
  @utility btn-circle {
42
132
  --btn-radius: calc(infinity * 1px);
43
133
  }
@@ -56,53 +146,46 @@
56
146
  --btn-display: block;
57
147
  }
58
148
 
59
- @utility btn-link-active {
60
- background-color: transparent;
61
- color: light-dark(var(--btn-800), var(--btn-500));
62
- text-decoration: underline;
63
- text-underline-offset: 4px;
64
- }
65
-
66
- @utility btn-ghost-active {
67
- /* for default btn */
68
- &:not(
69
- .btn-primary,
70
- .btn-secondary,
71
- .btn-accent,
72
- .btn-info,
73
- .btn-success,
74
- .btn-warning,
75
- .btn-error
76
- ) {
77
- background-color: light-dark(var(--btn-200), var(--btn-900));
78
- color: light-dark(var(--btn-950), var(--btn-100));
79
- }
80
-
81
- /* for all btn exclude default btn */
82
- &:is(
83
- .btn-primary,
84
- .btn-secondary,
85
- .btn-accent,
86
- .btn-info,
87
- .btn-success,
88
- .btn-warning,
89
- .btn-error
90
- ) {
91
- background-color: light-dark(var(--btn-700), var(--btn-900));
92
- color: light-dark(var(--btn-50), var(--btn-100));
93
- }
94
- }
95
-
96
149
  @utility btn-active {
150
+
97
151
  &:is(.btn-link) {
98
- @apply btn-link-active;
152
+ --btn-bg-color: transparent;
153
+ --btn-text-color: light-dark(var(--btn-800), var(--btn-500));
154
+ --btn-text-decoration: underline;
155
+ --btn-text-underline-offset: 4px;
99
156
  }
157
+
100
158
  &:is(.btn-ghost) {
101
- @apply btn-ghost-active;
159
+ /* for default btn */
160
+ &:not(
161
+ .btn-primary,
162
+ .btn-secondary,
163
+ .btn-accent,
164
+ .btn-info,
165
+ .btn-success,
166
+ .btn-warning,
167
+ .btn-error
168
+ ) {
169
+ --btn-bg-color: light-dark(var(--btn-200), var(--btn-900));
170
+ --btn-text-color: light-dark(var(--btn-950), var(--btn-100));
171
+ }
172
+
173
+ /* for all btn exclude default btn */
174
+ &:is(
175
+ .btn-primary,
176
+ .btn-secondary,
177
+ .btn-accent,
178
+ .btn-info,
179
+ .btn-success,
180
+ .btn-warning,
181
+ .btn-error
182
+ ) {
183
+ --btn-bg-color: light-dark(var(--btn-700), var(--btn-900));
184
+ --btn-text-color: light-dark(var(--btn-50), var(--btn-100));
185
+ }
102
186
  }
187
+
103
188
  &:not(.btn-link, .btn-ghost) {
104
- outline-style: none;
105
-
106
189
  /* for default btn */
107
190
  &:not(
108
191
  .btn-primary,
@@ -113,8 +196,8 @@
113
196
  .btn-warning,
114
197
  .btn-error
115
198
  ) {
116
- background-color: light-dark(var(--btn-300), var(--btn-900));
117
- color: light-dark(var(--btn-950), var(--btn-100));
199
+ --btn-bg-color: light-dark(var(--btn-300), var(--btn-900));
200
+ --btn-text-color: light-dark(var(--btn-950), var(--btn-100));
118
201
  }
119
202
 
120
203
  /* for all btn exclude default btn */
@@ -127,142 +210,54 @@
127
210
  .btn-warning,
128
211
  .btn-error
129
212
  ) {
130
- background-color: light-dark(var(--btn-800), var(--btn-800));
131
- color: light-dark(var(--btn-50), var(--btn-100));
213
+ --btn-bg-color: light-dark(var(--btn-800), var(--btn-800));
214
+ --btn-text-color: light-dark(var(--btn-50), var(--btn-100));
132
215
  }
216
+
217
+ --btn-outline-style: none;
133
218
  }
134
219
  }
135
220
 
136
221
  @utility btn-dashed {
137
222
  &:not(.btn-active) {
138
- background-color: transparent;
139
- outline: 1px dashed light-dark(var(--btn-500), var(--btn-700));
140
- color: light-dark(var(--btn-700), var(--btn-500));
223
+ --btn-bg-color: transparent;
224
+ --btn-text-color: light-dark(var(--btn-700), var(--btn-500));
225
+ --btn-outline-color: light-dark(var(--btn-500), var(--btn-700));
226
+ --btn-outline-style: dashed;
227
+ --btn-outline-width: 1px;
141
228
  }
142
229
  }
143
230
 
144
231
  @utility btn-outline {
145
232
  &:not(.btn-active) {
146
- background-color: transparent;
147
- outline: 1px solid light-dark(var(--btn-500), var(--btn-800));
148
- color: light-dark(var(--btn-800), var(--btn-200));
233
+ --btn-bg-color: transparent;
234
+ --btn-text-color: light-dark(var(--btn-800), var(--btn-200));
235
+
236
+ --btn-outline-color: light-dark(var(--btn-500), var(--btn-800));
237
+ --btn-outline-style: solid;
238
+ --btn-outline-width: 1px;
149
239
  }
150
240
  }
151
241
 
152
242
  @utility btn-soft {
153
243
  &:not(.btn-active) {
154
- background-color: light-dark(
155
- var(--btn-100),
156
- color-mix(in oklab, var(--btn-900) 10%, transparent)
157
- );
158
- color: light-dark(var(--btn-800), var(--btn-400));
244
+ --btn-bg-color: light-dark(var(--btn-100), color-mix(in oklab, var(--btn-900) 30%, transparent));
245
+ --btn-text-color: light-dark(var(--btn-800), var(--btn-400));
159
246
  }
160
247
  }
161
248
 
162
249
  @utility btn-ghost {
163
250
  &:not(.btn-active) {
164
- background-color: transparent;
165
- color: light-dark(var(--btn-600), var(--btn-300));
251
+ --btn-bg-color: transparent;
252
+ --btn-text-color: light-dark(var(--btn-600), var(--btn-300));
166
253
  }
167
254
  }
168
255
 
169
256
  @utility btn-link {
170
257
  &:not(.btn-active) {
171
- background-color: transparent;
172
- color: light-dark(var(--btn-700), var(--btn-400));
173
- }
174
- }
175
-
176
- @utility btn {
177
- @apply btn-md text-shadow-xs/5 gap-1.5 leading-normal;
178
- width: var(--btn-width);
179
- max-width: var(--btn-max-width);
180
- transition: translate 0.2s ease-out, visibility 0.2s allow-discrete, background-color 0.2s ease-out, opacity 0.1s ease-out;
181
- position: relative;
182
- display: var(--btn-display, inline-flex);
183
- flex-shrink: 0;
184
- align-items: center;
185
- justify-content: center;
186
- align-self: flex-start;
187
- flex-wrap: nowrap;
188
- vertical-align: middle;
189
- font-weight: 500;
190
- text-align: center;
191
- border-radius: var(--btn-radius, var(--radius-btn));
192
- overflow: hidden;
193
- cursor: pointer;
194
- box-sizing: border-box;
195
-
196
- padding-inline: var(--btn-inline);
197
- padding-block: var(--btn-block);
198
- font-size: var(--btn-text-size);
199
-
200
- &:where(.btn-square){
201
- padding-inline: var(--btn-block);
202
- padding-block: var(--btn-block);
203
- }
204
-
205
- /* for default btn */
206
- &:not(
207
- .btn-primary,
208
- .btn-secondary,
209
- .btn-accent,
210
- .btn-info,
211
- .btn-success,
212
- .btn-warning,
213
- .btn-error
214
- ) {
215
- background-color: light-dark(var(--btn-200), var(--btn-800));
216
- color: light-dark(var(--btn-900), var(--btn-50));
217
- }
218
-
219
- /* for all btn exclude default btn */
220
- &:is(
221
- .btn-primary,
222
- .btn-secondary,
223
- .btn-accent,
224
- .btn-info,
225
- .btn-success,
226
- .btn-warning,
227
- .btn-error
228
- ) {
229
- background-color: light-dark(var(--btn-700), var(--btn-700));
230
- color: var(--btn-50);
231
- }
232
-
233
- &:is(:disabled, [disabled], .btn-disabled) {
234
- @apply opacity-20 cursor-not-allowed pointer-events-none;
235
- }
236
-
237
- &:is(input[type="checkbox"], input[type="radio"]) {
238
- @apply appearance-none;
239
-
240
- &::after {
241
- content: attr(aria-label);
242
- }
243
-
244
- &:checked {
245
- @apply isolate;
246
- }
258
+ --btn-bg-color: transparent;
259
+ --btn-text-color: light-dark(var(--btn-700), var(--btn-400));
247
260
  }
248
-
249
- @media (hover: hover) {
250
- &:is(:hover) {
251
- @apply btn-active;
252
- }
253
- }
254
-
255
- --btn-50: var(--default-50);
256
- --btn-100: var(--default-100);
257
- --btn-200: var(--default-200);
258
- --btn-300: var(--default-300);
259
- --btn-400: var(--default-400);
260
- --btn-500: var(--default-500);
261
- --btn-600: var(--default-600);
262
- --btn-700: var(--default-700);
263
- --btn-800: var(--default-800);
264
- --btn-900: var(--default-900);
265
- --btn-950: var(--default-950);
266
261
  }
267
262
 
268
263
  @utility btn-primary {
@@ -277,6 +272,9 @@
277
272
  --btn-800: var(--primary-800);
278
273
  --btn-900: var(--primary-900);
279
274
  --btn-950: var(--primary-950);
275
+
276
+ --btn-bg-color: light-dark(var(--btn-700), var(--btn-700));
277
+ --btn-text-color: var(--btn-50);
280
278
  }
281
279
 
282
280
  @utility btn-secondary {
@@ -291,6 +289,9 @@
291
289
  --btn-800: var(--secondary-800);
292
290
  --btn-900: var(--secondary-900);
293
291
  --btn-950: var(--secondary-950);
292
+
293
+ --btn-bg-color: light-dark(var(--btn-700), var(--btn-700));
294
+ --btn-text-color: var(--btn-50);
294
295
  }
295
296
 
296
297
  @utility btn-accent {
@@ -305,6 +306,9 @@
305
306
  --btn-800: var(--accent-800);
306
307
  --btn-900: var(--accent-900);
307
308
  --btn-950: var(--accent-950);
309
+
310
+ --btn-bg-color: light-dark(var(--btn-700), var(--btn-700));
311
+ --btn-text-color: var(--btn-50);
308
312
  }
309
313
 
310
314
  @utility btn-info {
@@ -319,6 +323,9 @@
319
323
  --btn-800: var(--info-800);
320
324
  --btn-900: var(--info-900);
321
325
  --btn-950: var(--info-950);
326
+
327
+ --btn-bg-color: light-dark(var(--btn-700), var(--btn-700));
328
+ --btn-text-color: var(--btn-50);
322
329
  }
323
330
 
324
331
  @utility btn-success {
@@ -333,6 +340,9 @@
333
340
  --btn-800: var(--success-800);
334
341
  --btn-900: var(--success-900);
335
342
  --btn-950: var(--success-950);
343
+
344
+ --btn-bg-color: light-dark(var(--btn-700), var(--btn-700));
345
+ --btn-text-color: var(--btn-50);
336
346
  }
337
347
 
338
348
  @utility btn-warning {
@@ -347,6 +357,9 @@
347
357
  --btn-800: var(--warning-800);
348
358
  --btn-900: var(--warning-900);
349
359
  --btn-950: var(--warning-950);
360
+
361
+ --btn-bg-color: light-dark(var(--btn-700), var(--btn-700));
362
+ --btn-text-color: var(--btn-50);
350
363
  }
351
364
 
352
365
  @utility btn-error {
@@ -361,4 +374,7 @@
361
374
  --btn-800: var(--error-800);
362
375
  --btn-900: var(--error-900);
363
376
  --btn-950: var(--error-950);
377
+
378
+ --btn-bg-color: light-dark(var(--btn-700), var(--btn-700));
379
+ --btn-text-color: var(--btn-50);
364
380
  }
@@ -3,26 +3,28 @@
3
3
  @utility card-outline {
4
4
  border: 1px solid light-dark(
5
5
  var(--core-200),
6
- var(--core-900)
6
+ var(--core-950)
7
7
  );
8
8
  }
9
9
 
10
10
  @utility card-dashed {
11
11
  border: 1px dashed light-dark(
12
12
  var(--core-200),
13
- var(--core-900)
13
+ var(--core-950)
14
14
  );
15
15
  }
16
16
 
17
17
  /* card size */
18
18
 
19
19
  @utility card {
20
- @apply relative flex flex-col;
20
+ position: relative;
21
+ display: flex;
22
+ flex-direction: column;
21
23
  border-radius: var(--radius-card);
22
24
  overflow:hidden;
23
- background: light-dark(
24
- var(--core-50),
25
- var(--core-900)
25
+ background-color: light-dark(
26
+ var(--core-0),
27
+ var(--core-1000)
26
28
  );
27
29
 
28
30
  :where(figure:first-child) {
@@ -43,14 +45,22 @@
43
45
  }
44
46
 
45
47
  @utility card-body {
46
- @apply flex flex-auto flex-col gap-2;
48
+ display: flex;
49
+ gap: 0.5rem;
50
+ flex: auto;
51
+ flex-direction: column;
47
52
  padding: 1.5rem;
48
53
 
49
54
  :where(p){
50
- @apply text-base grow;
55
+ flex-grow: 1;
56
+ font-size: 1rem;
51
57
  }
52
58
  }
53
59
 
54
60
  @utility card-title {
55
- @apply flex items-center gap-2 font-semibold text-lg;
61
+ display: flex;
62
+ align-items: center;
63
+ gap: 0.5rem;
64
+ font-weight: 600;
65
+ font-size: 1.125rem;
56
66
  }