frutjam 1.2.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.2.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",
@@ -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,10 +1,11 @@
1
1
  @import '../theme/jams/base.css';
2
+ @import '../utilities/para.css';
2
3
 
3
4
  @utility accordion {
4
5
  display: grid;
5
- background: light-dark(
6
- var(--core-50),
7
- var(--core-950)
6
+ background-color: light-dark(
7
+ var(--core-0),
8
+ var(--core-1000)
8
9
  );
9
10
  border: 1px solid light-dark(
10
11
  var(--core-200),
@@ -29,6 +30,9 @@
29
30
  &>summary::marker{
30
31
  content: none;
31
32
  }
33
+ &>p{
34
+ @apply para;
35
+ }
32
36
  &>summary{
33
37
  display: flex;
34
38
  gap: 1rem;
@@ -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,150 +210,56 @@
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));
258
+ --btn-bg-color: transparent;
259
+ --btn-text-color: light-dark(var(--btn-700), var(--btn-400));
173
260
  }
174
261
  }
175
262
 
176
- @utility btn {
177
- @apply btn-md;
178
-
179
- text-shadow: 0px 1px 1px color-mix(in oklab, var(--btn-900) 10%, transparent);
180
- line-height: 1.5;
181
- width: var(--btn-width);
182
- max-width: var(--btn-max-width);
183
- transition: translate 0.2s ease-out, visibility 0.2s allow-discrete, background-color 0.2s ease-out, opacity 0.1s ease-out;
184
- position: relative;
185
- display: var(--btn-display, inline-flex);
186
- gap: 0.375rem;
187
- flex-shrink: 0;
188
- align-items: center;
189
- justify-content: center;
190
- align-self: flex-start;
191
- flex-wrap: nowrap;
192
- vertical-align: middle;
193
- font-weight: 500;
194
- text-align: center;
195
- border-radius: var(--btn-radius, var(--radius-btn));
196
- overflow: hidden;
197
- cursor: pointer;
198
- box-sizing: border-box;
199
-
200
- padding-inline: var(--btn-inline);
201
- padding-block: var(--btn-block);
202
- font-size: var(--btn-text-size);
203
-
204
- &:where(.btn-square){
205
- padding-inline: var(--btn-block);
206
- padding-block: var(--btn-block);
207
- }
208
-
209
- /* for default btn */
210
- &:not(
211
- .btn-primary,
212
- .btn-secondary,
213
- .btn-accent,
214
- .btn-info,
215
- .btn-success,
216
- .btn-warning,
217
- .btn-error
218
- ) {
219
- background-color: light-dark(var(--btn-200), var(--btn-800));
220
- color: light-dark(var(--btn-900), var(--btn-50));
221
- }
222
-
223
- /* for all btn exclude default btn */
224
- &:is(
225
- .btn-primary,
226
- .btn-secondary,
227
- .btn-accent,
228
- .btn-info,
229
- .btn-success,
230
- .btn-warning,
231
- .btn-error
232
- ) {
233
- background-color: light-dark(var(--btn-700), var(--btn-700));
234
- color: var(--btn-50);
235
- }
236
-
237
- &:is(:disabled, [disabled], .btn-disabled) {
238
- opacity: 20%;
239
- cursor: not-allowed;
240
- pointer-events: none;
241
- }
242
-
243
- &:is(input[type="checkbox"], input[type="radio"]) {
244
- appearance: none;
245
-
246
- &::after {
247
- content: attr(aria-label);
248
- }
249
-
250
- &:checked {
251
- isolation: isolate;
252
- }
253
- }
254
-
255
- @media (hover: hover) {
256
- &:is(:hover) {
257
- @apply btn-active;
258
- }
259
- }
260
-
261
- --btn-50: var(--default-50);
262
- --btn-100: var(--default-100);
263
- --btn-200: var(--default-200);
264
- --btn-300: var(--default-300);
265
- --btn-400: var(--default-400);
266
- --btn-500: var(--default-500);
267
- --btn-600: var(--default-600);
268
- --btn-700: var(--default-700);
269
- --btn-800: var(--default-800);
270
- --btn-900: var(--default-900);
271
- --btn-950: var(--default-950);
272
- }
273
-
274
263
  @utility btn-primary {
275
264
  --btn-50: var(--primary-50);
276
265
  --btn-100: var(--primary-100);
@@ -283,6 +272,9 @@
283
272
  --btn-800: var(--primary-800);
284
273
  --btn-900: var(--primary-900);
285
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);
286
278
  }
287
279
 
288
280
  @utility btn-secondary {
@@ -297,6 +289,9 @@
297
289
  --btn-800: var(--secondary-800);
298
290
  --btn-900: var(--secondary-900);
299
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);
300
295
  }
301
296
 
302
297
  @utility btn-accent {
@@ -311,6 +306,9 @@
311
306
  --btn-800: var(--accent-800);
312
307
  --btn-900: var(--accent-900);
313
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);
314
312
  }
315
313
 
316
314
  @utility btn-info {
@@ -325,6 +323,9 @@
325
323
  --btn-800: var(--info-800);
326
324
  --btn-900: var(--info-900);
327
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);
328
329
  }
329
330
 
330
331
  @utility btn-success {
@@ -339,6 +340,9 @@
339
340
  --btn-800: var(--success-800);
340
341
  --btn-900: var(--success-900);
341
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);
342
346
  }
343
347
 
344
348
  @utility btn-warning {
@@ -353,6 +357,9 @@
353
357
  --btn-800: var(--warning-800);
354
358
  --btn-900: var(--warning-900);
355
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);
356
363
  }
357
364
 
358
365
  @utility btn-error {
@@ -367,4 +374,7 @@
367
374
  --btn-800: var(--error-800);
368
375
  --btn-900: var(--error-900);
369
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);
370
380
  }
@@ -22,7 +22,10 @@
22
22
  flex-direction: column;
23
23
  border-radius: var(--radius-card);
24
24
  overflow:hidden;
25
- background-color: transparent;
25
+ background-color: light-dark(
26
+ var(--core-0),
27
+ var(--core-1000)
28
+ );
26
29
 
27
30
  :where(figure:first-child) {
28
31
  overflow: hidden;
@@ -59,12 +59,12 @@
59
59
  appearance: none;
60
60
  vertical-align: middle;
61
61
 
62
- box-shadow: 0 0 0 0px var(--checkbox-100), 0 0 0 calc(1px + 0px) light-dark(var(--checkbox-300), var(--checkbox-500)), 0 0 var(--checkbox-100);
62
+ box-shadow: 0 0 0 0px var(--checkbox-100), 0 0 0 calc(1px + 0px) light-dark(var(--checkbox-300), var(--checkbox-800)), 0 0 var(--checkbox-100);
63
63
  /* border: 1.6px solid var(--checkbox-100); */
64
- outline: 1px solid light-dark(
64
+ /* outline: 1px solid light-dark(
65
65
  var(--checkbox-400),
66
66
  var(--checkbox-700)
67
- );
67
+ ); */
68
68
 
69
69
  background-color: light-dark(
70
70
  var(--checkbox-100),
@@ -134,8 +134,8 @@
134
134
 
135
135
  &:checked,
136
136
  &[aria-checked="true"] {
137
- box-shadow: 0 0 0 0px var(--checkbox-100), 0 0 0 calc(1px + 0px) var(--checkbox-400), 0 0 var(--checkbox-100);
138
- background-color: light-dark(var(--checkbox-200), var(--checkbox-600));
137
+ box-shadow: 0 0 0 0px var(--checkbox-100), 0 0 0 calc(1px + 0px) light-dark(var(--checkbox-500), var(--checkbox-700)), 0 0 var(--checkbox-100);
138
+ background-color: light-dark(var(--checkbox-300), var(--checkbox-600));
139
139
  transition: transform 300ms, background-color 100ms;
140
140
 
141
141
  &::before {
@@ -12,7 +12,10 @@
12
12
  max-width: none;
13
13
  max-height: none;
14
14
  place-items: start;
15
- background-color: transparent;
15
+ background-color: light-dark(
16
+ var(--core-0),
17
+ var(--core-1000)
18
+ );
16
19
  color: inherit;
17
20
  z-index: 999;
18
21
  overflow: hidden;
@@ -58,7 +58,7 @@
58
58
 
59
59
  /* experimental */
60
60
  &:where([popover]) {
61
- background: #0000;
61
+ background-color: #0000;
62
62
  }
63
63
  &[popover] {
64
64
  @apply fixed text-inherit;
@@ -93,9 +93,9 @@
93
93
  var(--core-900)
94
94
  );
95
95
  border-radius: var(--radius-dropdown);
96
- background: light-dark(
97
- var(--core-50),
98
- var(--core-950)
96
+ background-color: light-dark(
97
+ var(--core-0),
98
+ var(--core-1000)
99
99
  );
100
100
  color: light-dark(
101
101
  var(--core-800),
@@ -15,7 +15,10 @@
15
15
  justify-items: center;
16
16
  color: inherit;
17
17
  padding: 0.75rem;
18
- background-color: transparent;
18
+ background-color: light-dark(
19
+ var(--core-0),
20
+ var(--core-1000)
21
+ );
19
22
  inset: 0rem;
20
23
  margin: 0rem;
21
24
  pointer-events: none;
@@ -91,13 +94,9 @@
91
94
  overscroll-behavior: contain;
92
95
  border-radius: var(--radius-modal);
93
96
 
94
- /* --tw-shadow-color: light-dark(
95
- color-mix(in oklab,var(--core-300)50%,transparent),
96
- color-mix(in oklab,var(--core-900)60%,transparent)
97
- ); */
98
- background: light-dark(
99
- var(--core-50),
100
- var(--core-950)
97
+ background-color: light-dark(
98
+ var(--core-0),
99
+ var(--core-1000)
101
100
  );
102
101
  color: light-dark(
103
102
  var(--core-800),
@@ -1,4 +1,4 @@
1
- /* use for breadcrums and menu */
1
+ /* use for menu */
2
2
  @import "../theme/placement.css";
3
3
 
4
4
  @utility nav-x-* {
@@ -1,9 +1,12 @@
1
1
  @import "../theme/jams/base.css";
2
2
 
3
3
  @utility sidebar {
4
- position: sticky;
5
- overflow-y: auto;
4
+ display: flex;
5
+ flex-direction: column;
6
6
  gap: 1.25rem;
7
+ overflow-y: auto;
8
+ overflow-x:hidden;
9
+ position: sticky;
7
10
  max-height: 100dvh;
8
11
  padding: 1.5rem;
9
12
  border-inline-style: solid;
@@ -16,6 +19,4 @@
16
19
  var(--core-0),
17
20
  var(--core-1000)
18
21
  );
19
- display: flex;
20
- flex-direction: column;
21
22
  }
@@ -1,7 +1,7 @@
1
1
  @utility core-para {
2
2
  text-wrap: balance;
3
3
  color:light-dark(
4
- var(--core-900),
4
+ var(--core-700),
5
5
  var(--core-300)
6
6
  );
7
7
  }