frutjam 0.8.0-beta.1 → 0.8.0-beta.2

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": "0.8.0-beta.1",
3
+ "version": "0.8.0-beta.2",
4
4
  "description": "A utility-first CSS framework UI Library",
5
5
  "main": "./dist/frutjam.css",
6
6
  "browser": "dist/frutjam.css",
@@ -70,159 +70,197 @@
70
70
  @apply w-full;
71
71
  }
72
72
 
73
- @utility btn-core {
74
- @apply btn-md text-shadow-xs/5 relative inline-flex self-start shrink-0 flex-nowrap items-center
75
- justify-center gap-1.5 text-center align-middle font-medium overflow-hidden
76
- text-xs transition duration-350 ease-in-out leading-normal cursor-pointer box-border;
77
-
78
- border-radius: var(--radius-btn);
79
-
73
+ @utility btn-link-active {
74
+ background: transparent;
75
+ color: light-dark(
76
+ var(--btn-800),
77
+ var(--btn-500)
78
+ );
79
+ text-decoration: underline;
80
+ text-underline-offset: 4px;
81
+ cursor: pointer;
82
+ }
83
+
84
+ @utility btn-ghost-active {
80
85
  /* for default btn */
81
86
  &:is(.btn) {
82
87
  background-color: light-dark(
83
88
  var(--btn-200),
84
- var(--btn-800)
89
+ var(--btn-900)
85
90
  );
86
91
  color: light-dark(
87
- var(--btn-900),
88
- var(--btn-50)
92
+ var(--btn-950),
93
+ var(--btn-100)
89
94
  );
90
95
  }
91
96
 
92
97
  /* for all btn exclude default btn */
93
98
  &:not(.btn) {
94
99
  background-color: light-dark(
95
- var(--btn-600),
96
- var(--btn-800)
100
+ var(--btn-700),
101
+ var(--btn-900)
102
+ );
103
+ color: light-dark(
104
+ var(--btn-50),
105
+ var(--btn-100)
97
106
  );
98
- color: var(--btn-50);
99
107
  }
108
+ }
100
109
 
101
- &:is(:disabled, [disabled], .btn-disabled) {
102
- @apply opacity-20 cursor-not-allowed;
110
+ @utility btn-active {
111
+ &:is(.btn-link) {
112
+ @apply btn-link-active
103
113
  }
104
-
105
- &:is(input[type="checkbox"], input[type="radio"]) {
106
- @apply appearance-none;
107
-
108
- &::after {
109
- content: attr(aria-label);
110
- }
111
-
112
- &:checked {
113
- @apply isolate;
114
- }
114
+ &:is(.btn-ghost) {
115
+ @apply btn-ghost-active;
115
116
  }
117
+ &:not(.btn-link, .btn-ghost) {
118
+ outline-style: none;
116
119
 
117
- &:is(.btn-active, :hover) {
118
- &:is(.btn-link) {
119
- @apply bg-transparent underline underline-offset-4 cursor-pointer;
120
-
120
+ /* for default btn */
121
+ &:is(.btn) {
122
+ background-color: light-dark(
123
+ var(--btn-300),
124
+ var(--btn-900)
125
+ );
121
126
  color: light-dark(
122
- var(--btn-800),
123
- var(--btn-500)
127
+ var(--btn-950),
128
+ var(--btn-100)
124
129
  );
125
130
  }
126
- &:not(.btn-link) {
127
- @apply outline-none;
128
-
129
- /* for default btn */
130
- &:is(.btn) {
131
- background-color: light-dark(
132
- var(--btn-300),
133
- var(--btn-900)
134
- );
135
-
136
- color: light-dark(
137
- var(--btn-950),
138
- var(--btn-100)
139
- );
140
- }
141
-
142
- /* for all btn exclude default btn */
143
- &:not(.btn) {
144
- background-color: light-dark(
145
- var(--btn-700),
146
- var(--btn-900)
147
- );
148
-
149
- color: light-dark(
150
- var(--btn-50),
151
- var(--btn-100)
152
- );
153
- }
154
-
155
- &:not(:disabled, [disabled], .btn-disabled) {
156
- &::before {
157
- @apply content-[''] absolute size-full;
158
- }
159
- }
160
- }
161
- }
162
131
 
163
- &:where(.btn-dashed) {
164
- &:not(.btn-active) {
165
- @apply bg-transparent;
166
- outline: 1px dashed light-dark(
167
- var(--btn-500),
168
- var(--btn-700)
132
+ /* for all btn exclude default btn */
133
+ &:not(.btn) {
134
+ background-color: light-dark(
135
+ var(--btn-700),
136
+ var(--btn-900)
169
137
  );
170
138
  color: light-dark(
171
- var(--btn-700),
172
- var(--btn-500)
139
+ var(--btn-50),
140
+ var(--btn-100)
173
141
  );
174
142
  }
175
143
  }
144
+ }
176
145
 
177
- &:where(.btn-outline) {
178
- &:not(.btn-active) {
179
- @apply bg-transparent;
180
- outline: 1px solid light-dark(
181
- var(--btn-500),
182
- var(--btn-800)
183
- );
184
- color: light-dark(
185
- var(--btn-800),
186
- var(--btn-200)
187
- );
188
- }
146
+ @utility btn-dashed {
147
+ &:not(.btn-active) {
148
+ background: transparent;
149
+ outline: 1px dashed light-dark(
150
+ var(--btn-500),
151
+ var(--btn-700)
152
+ );
153
+ color: light-dark(
154
+ var(--btn-700),
155
+ var(--btn-500)
156
+ );
189
157
  }
158
+ }
190
159
 
191
- &:where(.btn-soft) {
192
- &:not(.btn-active) {
160
+ @utility btn-outline {
161
+ &:not(.btn-active) {
162
+ background: transparent;
163
+ outline: 1px solid light-dark(
164
+ var(--btn-500),
165
+ var(--btn-800)
166
+ );
167
+ color: light-dark(
168
+ var(--btn-800),
169
+ var(--btn-200)
170
+ );
171
+ }
172
+ }
193
173
 
194
- background-color: light-dark(
195
- var(--btn-100),
196
- color-mix(in oklab,var(--btn-900)10%,transparent)
197
- );
174
+ @utility btn-soft {
175
+ &:not(.btn-active) {
176
+ background-color: light-dark(
177
+ var(--btn-100),
178
+ color-mix(in oklab,var(--btn-900)10%,transparent)
179
+ );
180
+ color: light-dark(
181
+ var(--btn-800),
182
+ var(--btn-400)
183
+ );
184
+ }
185
+ }
198
186
 
199
- color: light-dark(
200
- var(--btn-800),
201
- var(--btn-400)
202
- );
203
- }
187
+ @utility btn-ghost {
188
+ &:not(.btn-active) {
189
+ background: transparent;
190
+ color: light-dark(
191
+ var(--btn-600),
192
+ var(--btn-300)
193
+ );
204
194
  }
195
+ }
205
196
 
206
- &:where(.btn-ghost) {
207
- &:not(.btn-active) {
208
- @apply bg-transparent;
197
+ @utility btn-link {
198
+ &:not(.btn-active) {
199
+ background: transparent;
200
+ color: light-dark(
201
+ var(--btn-700),
202
+ var(--btn-500)
203
+ );
204
+ }
205
+ }
209
206
 
210
- color: light-dark(
211
- var(--btn-600),
212
- var(--btn-300)
213
- );
214
- }
207
+ @utility btn-core {
208
+ @apply btn-md text-shadow-xs/5 gap-1.5 text-xs transition duration-350 ease-in-out leading-normal;
209
+
210
+ position: relative;
211
+ display: inline-flex;
212
+ flex-shrink: 0;
213
+ align-items: center;
214
+ justify-content: center;
215
+ align-self: flex-start;
216
+ flex-wrap: nowrap;
217
+ vertical-align: middle;
218
+ font-weight: 500;
219
+ text-align: center;
220
+ border-radius: var(--radius-btn);
221
+ overflow: hidden;
222
+ cursor: pointer;
223
+ box-sizing: border-box;
224
+
225
+ /* for default btn */
226
+ &:is(.btn) {
227
+ background-color: light-dark(
228
+ var(--btn-200),
229
+ var(--btn-800)
230
+ );
231
+ color: light-dark(
232
+ var(--btn-900),
233
+ var(--btn-50)
234
+ );
215
235
  }
216
236
 
217
- &:where(.btn-link) {
218
- &:not(.btn-active) {
219
- @apply bg-transparent;
237
+ /* for all btn exclude default btn */
238
+ &:not(.btn) {
239
+ background-color: light-dark(
240
+ var(--btn-600),
241
+ var(--btn-800)
242
+ );
243
+ color: var(--btn-50);
244
+ }
220
245
 
221
- color: light-dark(
222
- var(--btn-700),
223
- var(--btn-500)
224
- );
246
+ &:is(:disabled, [disabled], .btn-disabled) {
247
+ @apply opacity-20 cursor-not-allowed pointer-events-none;
248
+ }
249
+
250
+ &:is(input[type="checkbox"], input[type="radio"]) {
251
+ @apply appearance-none;
252
+
253
+ &::after {
254
+ content: attr(aria-label);
225
255
  }
256
+
257
+ &:checked {
258
+ @apply isolate;
259
+ }
260
+ }
261
+
262
+ &:is(:hover) {
263
+ @apply btn-active;
226
264
  }
227
265
  }
228
266
 
@@ -7,14 +7,10 @@
7
7
  &:not(modal:not([open]):not(.modal-open)),
8
8
  &::backdrop {
9
9
  @apply opacity-100 starting:invisible starting:opacity-0;
10
- background-image: light-dark(
11
- color-mix(in oklab,var(--core-100)15%,transparent),
12
- color-mix(in oklab,var(--core-800)50%,transparent)
13
- );
10
+ background: light-dark(#00000026, #000000ba);
14
11
  }
15
12
  &[open], &.modal-open {
16
13
  @apply pointer-events-auto visible opacity-100 starting:invisible starting:opacity-0;
17
-
18
14
  .modal-body {
19
15
  translate: 0 0;
20
16
  scale: 1;
@@ -24,18 +20,14 @@
24
20
  }
25
21
 
26
22
  @utility modal-backdrop {
27
- @apply col-start-1 row-start-1 grid self-stretch justify-self-stretch text-transparent -z-1;
28
- background: light-dark(
29
- color-mix(in oklab,var(--core-300)50%,transparent),
30
- color-mix(in oklab,var(--core-900)80%,transparent)
31
- );
23
+ @apply col-start-1 row-start-1 grid self-stretch justify-self-stretch text-transparent -z-1 bg-transparent;
32
24
  button {
33
25
  @apply cursor-pointer;
34
26
  }
35
27
  }
36
28
 
37
29
  @utility modal-body {
38
- @apply rounded-[var(--radius-modal)] shadow-sm forced-colors:outline col-start-1 row-start-1 max-h-screen w-11/12 max-w-[32rem] p-6 transition-all duration-150 scale-95 opacity-0 overflow-y-auto overscroll-contain;
30
+ @apply rounded-[var(--radius-modal)] shadow-sm forced-colors:outline col-start-1 row-start-1 max-h-screen w-11/12 max-w-[32rem] p-6 scale-95 opacity-0 overflow-y-auto overscroll-contain;
39
31
  --tw-shadow-color: light-dark(
40
32
  color-mix(in oklab,var(--core-300)50%,transparent),
41
33
  color-mix(in oklab,var(--core-900)60%,transparent)
@@ -52,6 +44,7 @@
52
44
  var(--core-300),
53
45
  var(--core-900)
54
46
  );
47
+ transition: translate 0.3s ease-out, visibility 0.3s allow-discrete, background-color 0.3s ease-out, opacity 0.1s ease-out;
55
48
  }
56
49
 
57
50