frutjam 0.14.0-beta.0 → 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.
Files changed (38) hide show
  1. package/README.md +7 -4
  2. package/dist/frutjam.local.css +2 -0
  3. package/dist/frutjam.min.css +5 -0
  4. package/dist/frutjam.min.css.map +1 -0
  5. package/dist/frutjam.min.js +3 -0
  6. package/dist/frutjam.min.js.LICENSE.txt +1 -0
  7. package/dist/frutjam.min.js.map +1 -0
  8. package/dist/frutjam.safelist.local.css +1 -0
  9. package/package.json +56 -24
  10. package/src/base/preflight.css +0 -7
  11. package/src/components/accordion.css +0 -44
  12. package/src/components/button.css +0 -334
  13. package/src/components/card.css +0 -54
  14. package/src/components/checkbox.css +0 -265
  15. package/src/components/container.css +0 -52
  16. package/src/components/divider.css +0 -230
  17. package/src/components/drawer.css +0 -98
  18. package/src/components/dropdown.css +0 -122
  19. package/src/components/header.css +0 -22
  20. package/src/components/input.css +0 -276
  21. package/src/components/modal.css +0 -68
  22. package/src/components/nav.css +0 -35
  23. package/src/components/popover.css +0 -99
  24. package/src/components/sidebar.css +0 -9
  25. package/src/components/typography.css +0 -6
  26. package/src/main.css +0 -19
  27. package/src/main.js +0 -1
  28. package/src/theme/animation/slide.css +0 -6
  29. package/src/theme/animation/wiggle.css +0 -14
  30. package/src/theme/jams/base.css +0 -123
  31. package/src/theme/jams/darkberry.css +0 -133
  32. package/src/theme/jams/pinkberry.css +0 -0
  33. package/src/theme/jams/snowberry.css +0 -138
  34. package/src/theme/placement.css +0 -8
  35. package/src/theme/typography.css +0 -8
  36. package/src/utilities/headings.css +0 -22
  37. package/src/utilities/para.css +0 -22
  38. package/src/utilities/surface.css +0 -64
@@ -1,334 +0,0 @@
1
- @import "../theme/jams/base.css";
2
- @import "../theme/animation/wiggle.css";
3
-
4
- @utility btn-size {
5
- @layer components {
6
- padding-inline: var(--btn-inline);
7
- padding-block: var(--btn-block);
8
- font-size: var(--btn-text-size);
9
- }
10
- }
11
-
12
- @utility btn-xs {
13
- --btn-inline: 0.875rem;
14
- --btn-block: 0.375rem;
15
- --btn-text-size: 0.75rem;
16
- @apply btn-size;
17
- }
18
-
19
- @utility btn-sm {
20
- --btn-inline: 1rem;
21
- --btn-block: 0.5rem;
22
- --btn-text-size: 0.875rem;
23
- @apply btn-size;
24
- }
25
-
26
- @utility btn-md {
27
- --btn-inline: 1.125rem;
28
- --btn-block: 0.625rem;
29
- --btn-text-size: 1rem;
30
- @apply btn-size;
31
- }
32
-
33
- @utility btn-lg {
34
- --btn-inline: 1.25rem;
35
- --btn-block: 0.75rem;
36
- --btn-text-size: 1rem;
37
- @apply btn-size;
38
- }
39
-
40
- @utility btn-xl {
41
- --btn-inline: 1.375rem;
42
- --btn-block: 0.875rem;
43
- --btn-text-size: 1rem;
44
- @apply btn-size;
45
- }
46
-
47
- @utility btn-2xl {
48
- --btn-inline: 1.5rem;
49
- --btn-block: 1rem;
50
- --btn-text-size: 1.125rem;
51
- @apply btn-size;
52
- }
53
-
54
- @utility btn-square {
55
- padding-inline: var(--btn-block);
56
- padding-block: var(--btn-block);
57
- }
58
-
59
- @utility btn-circle {
60
- @apply btn-md rounded-full;
61
- padding-inline: var(--btn-block);
62
- padding-block: var(--btn-block);
63
- }
64
-
65
- @utility btn-wide {
66
- @apply w-full max-w-xs;
67
- }
68
-
69
- @utility btn-block {
70
- @apply w-full block;
71
- }
72
-
73
- @utility btn-link-active {
74
- background: transparent;
75
- color: light-dark(var(--btn-800), var(--btn-500));
76
- text-decoration: underline;
77
- text-underline-offset: 4px;
78
- cursor: pointer;
79
- }
80
-
81
- @utility btn-ghost-active {
82
- /* for default btn */
83
- &:is(.btn) {
84
- background-color: light-dark(var(--btn-200), var(--btn-900));
85
- color: light-dark(var(--btn-950), var(--btn-100));
86
- }
87
-
88
- /* for all btn exclude default btn */
89
- &:not(.btn) {
90
- background-color: light-dark(var(--btn-700), var(--btn-900));
91
- color: light-dark(var(--btn-50), var(--btn-100));
92
- }
93
- }
94
-
95
- @utility btn-active {
96
- &:is(.btn-link) {
97
- @apply btn-link-active;
98
- }
99
- &:is(.btn-ghost) {
100
- @apply btn-ghost-active;
101
- }
102
- &:not(.btn-link, .btn-ghost) {
103
- outline-style: none;
104
-
105
- /* for default btn */
106
- &:is(.btn) {
107
- background-color: light-dark(var(--btn-300), var(--btn-900));
108
- color: light-dark(var(--btn-950), var(--btn-100));
109
- }
110
-
111
- /* for all btn exclude default btn */
112
- &:not(.btn) {
113
- background-color: light-dark(var(--btn-800), var(--btn-800));
114
- color: light-dark(var(--btn-50), var(--btn-100));
115
- }
116
- }
117
- }
118
-
119
- @utility btn-dashed {
120
- &:not(.btn-active) {
121
- background: transparent;
122
- outline: 1px dashed light-dark(var(--btn-500), var(--btn-700));
123
- color: light-dark(var(--btn-700), var(--btn-500));
124
- }
125
- }
126
-
127
- @utility btn-outline {
128
- &:not(.btn-active) {
129
- background: transparent;
130
- outline: 1px solid light-dark(var(--btn-500), var(--btn-800));
131
- color: light-dark(var(--btn-800), var(--btn-200));
132
- }
133
- }
134
-
135
- @utility btn-soft {
136
- &:not(.btn-active) {
137
- background-color: light-dark(
138
- var(--btn-100),
139
- color-mix(in oklab, var(--btn-900) 10%, transparent)
140
- );
141
- color: light-dark(var(--btn-800), var(--btn-400));
142
- }
143
- }
144
-
145
- @utility btn-ghost {
146
- &:not(.btn-active) {
147
- background: transparent;
148
- color: light-dark(var(--btn-600), var(--btn-300));
149
- }
150
- }
151
-
152
- @utility btn-link {
153
- &:not(.btn-active) {
154
- background: transparent;
155
- color: light-dark(var(--btn-700), var(--btn-400));
156
- }
157
- }
158
-
159
- @utility btn-core {
160
- @apply btn-md text-shadow-xs/5 gap-1.5 leading-normal;
161
- transition:
162
- translate 0.2s ease-out,
163
- visibility 0.2s allow-discrete,
164
- background-color 0.2s ease-out,
165
- opacity 0.1s ease-out;
166
- position: relative;
167
- display: inline-flex;
168
- flex-shrink: 0;
169
- align-items: center;
170
- justify-content: center;
171
- align-self: flex-start;
172
- flex-wrap: nowrap;
173
- vertical-align: middle;
174
- font-weight: 500;
175
- text-align: center;
176
- border-radius: var(--radius-btn);
177
- overflow: hidden;
178
- cursor: pointer;
179
- box-sizing: border-box;
180
-
181
- /* for default btn */
182
- &:is(.btn) {
183
- background-color: light-dark(var(--btn-200), var(--btn-800));
184
- color: light-dark(var(--btn-900), var(--btn-50));
185
- }
186
-
187
- /* for all btn exclude default btn */
188
- &:not(.btn) {
189
- background-color: light-dark(var(--btn-700), var(--btn-700));
190
- color: var(--btn-50);
191
- }
192
-
193
- &:is(:disabled, [disabled], .btn-disabled) {
194
- @apply opacity-20 cursor-not-allowed pointer-events-none;
195
- }
196
-
197
- &:is(input[type="checkbox"], input[type="radio"]) {
198
- @apply appearance-none;
199
-
200
- &::after {
201
- content: attr(aria-label);
202
- }
203
-
204
- &:checked {
205
- @apply isolate;
206
- }
207
- }
208
-
209
- @media (hover: hover) {
210
- &:is(:hover) {
211
- @apply btn-active;
212
- }
213
- }
214
- }
215
-
216
- @utility btn {
217
- --btn-50: var(--default-50);
218
- --btn-100: var(--default-100);
219
- --btn-200: var(--default-200);
220
- --btn-300: var(--default-300);
221
- --btn-400: var(--default-400);
222
- --btn-500: var(--default-500);
223
- --btn-600: var(--default-600);
224
- --btn-700: var(--default-700);
225
- --btn-800: var(--default-800);
226
- --btn-900: var(--default-900);
227
- --btn-950: var(--default-950);
228
- @apply btn-core;
229
- }
230
-
231
- @utility btn-primary {
232
- --btn-50: var(--primary-50);
233
- --btn-100: var(--primary-100);
234
- --btn-200: var(--primary-200);
235
- --btn-300: var(--primary-300);
236
- --btn-400: var(--primary-400);
237
- --btn-500: var(--primary-500);
238
- --btn-600: var(--primary-600);
239
- --btn-700: var(--primary-700);
240
- --btn-800: var(--primary-800);
241
- --btn-900: var(--primary-900);
242
- --btn-950: var(--primary-950);
243
- @apply btn-core;
244
- }
245
-
246
- @utility btn-secondary {
247
- --btn-50: var(--secondary-50);
248
- --btn-100: var(--secondary-100);
249
- --btn-200: var(--secondary-200);
250
- --btn-300: var(--secondary-300);
251
- --btn-400: var(--secondary-400);
252
- --btn-500: var(--secondary-500);
253
- --btn-600: var(--secondary-600);
254
- --btn-700: var(--secondary-700);
255
- --btn-800: var(--secondary-800);
256
- --btn-900: var(--secondary-900);
257
- --btn-950: var(--secondary-950);
258
- @apply btn-core;
259
- }
260
-
261
- @utility btn-accent {
262
- --btn-50: var(--accent-50);
263
- --btn-100: var(--accent-100);
264
- --btn-200: var(--accent-200);
265
- --btn-300: var(--accent-300);
266
- --btn-400: var(--accent-400);
267
- --btn-500: var(--accent-500);
268
- --btn-600: var(--accent-600);
269
- --btn-700: var(--accent-700);
270
- --btn-800: var(--accent-800);
271
- --btn-900: var(--accent-900);
272
- --btn-950: var(--accent-950);
273
- @apply btn-core;
274
- }
275
-
276
- @utility btn-info {
277
- --btn-50: var(--info-50);
278
- --btn-100: var(--info-100);
279
- --btn-200: var(--info-200);
280
- --btn-300: var(--info-300);
281
- --btn-400: var(--info-400);
282
- --btn-500: var(--info-500);
283
- --btn-600: var(--info-600);
284
- --btn-700: var(--info-700);
285
- --btn-800: var(--info-800);
286
- --btn-900: var(--info-900);
287
- --btn-950: var(--info-950);
288
- @apply btn-core;
289
- }
290
-
291
- @utility btn-success {
292
- --btn-50: var(--success-50);
293
- --btn-100: var(--success-100);
294
- --btn-200: var(--success-200);
295
- --btn-300: var(--success-300);
296
- --btn-400: var(--success-400);
297
- --btn-500: var(--success-500);
298
- --btn-600: var(--success-600);
299
- --btn-700: var(--success-700);
300
- --btn-800: var(--success-800);
301
- --btn-900: var(--success-900);
302
- --btn-950: var(--success-950);
303
- @apply btn-core;
304
- }
305
-
306
- @utility btn-warning {
307
- --btn-50: var(--warning-50);
308
- --btn-100: var(--warning-100);
309
- --btn-200: var(--warning-200);
310
- --btn-300: var(--warning-300);
311
- --btn-400: var(--warning-400);
312
- --btn-500: var(--warning-500);
313
- --btn-600: var(--warning-600);
314
- --btn-700: var(--warning-700);
315
- --btn-800: var(--warning-800);
316
- --btn-900: var(--warning-900);
317
- --btn-950: var(--warning-950);
318
- @apply btn-core;
319
- }
320
-
321
- @utility btn-error {
322
- --btn-50: var(--error-50);
323
- --btn-100: var(--error-100);
324
- --btn-200: var(--error-200);
325
- --btn-300: var(--error-300);
326
- --btn-400: var(--error-400);
327
- --btn-500: var(--error-500);
328
- --btn-600: var(--error-600);
329
- --btn-700: var(--error-700);
330
- --btn-800: var(--error-800);
331
- --btn-900: var(--error-900);
332
- --btn-950: var(--error-950);
333
- @apply btn-core;
334
- }
@@ -1,54 +0,0 @@
1
- @utility card-outline {
2
- border: 1px solid light-dark(
3
- var(--core-200),
4
- var(--core-900)
5
- );
6
- }
7
-
8
- @utility card-dashed {
9
- border: 1px dashed light-dark(
10
- var(--core-200),
11
- var(--core-900)
12
- );
13
- }
14
-
15
- /* card size */
16
-
17
- @utility card {
18
- @apply relative flex flex-col;
19
- border-radius: var(--radius-card);
20
- overflow:hidden;
21
- background: light-dark(
22
- var(--core-50),
23
- var(--core-900)
24
- );
25
-
26
- :where(figure:first-child) {
27
- overflow: hidden;
28
- border-start-start-radius: inherit;
29
- border-start-end-radius: inherit;
30
- border-end-start-radius: unset;
31
- border-end-end-radius: unset;
32
- }
33
-
34
- :where(figure:last-child) {
35
- overflow: hidden;
36
- border-start-start-radius: unset;
37
- border-start-end-radius: unset;
38
- border-end-start-radius: inherit;
39
- border-end-end-radius: inherit;
40
- }
41
- }
42
-
43
- @utility card-body {
44
- @apply flex flex-auto flex-col gap-2;
45
- padding: 1.5rem;
46
-
47
- :where(p){
48
- @apply text-base grow;
49
- }
50
- }
51
-
52
- @utility card-title {
53
- @apply flex items-center gap-2 font-semibold text-lg;
54
- }
@@ -1,265 +0,0 @@
1
- @import '../theme/jams/base.css';
2
-
3
- @utility checkbox-xs {
4
- @layer components {
5
- @apply p-0.75 size-3;
6
- }
7
- }
8
-
9
- @utility checkbox-sm {
10
- @layer components {
11
- @apply p-1 size-4;
12
- }
13
- }
14
-
15
- @utility checkbox-md {
16
- @layer components {
17
- @apply p-1.25 size-5;
18
- }
19
- }
20
-
21
- @utility checkbox-lg {
22
- @layer components {
23
- @apply p-1.5 size-6;
24
- }
25
- }
26
-
27
- @utility checkbox-xl {
28
- @layer components {
29
- @apply p-1.75 size-7;
30
- }
31
- }
32
-
33
- @utility checkbox-2xl {
34
- @layer components {
35
- @apply p-2 size-8;
36
- }
37
- }
38
-
39
- @utility checkbox-circle {
40
- @layer components {
41
- @apply rounded-full aspect-square;
42
- }
43
- }
44
-
45
- @utility checkbox-square {
46
- @layer components {
47
- @apply rounded-[var(--radius-checkbox)] aspect-square;
48
- }
49
- }
50
-
51
- @utility checkbox-core {
52
- @layer components {
53
- @apply relative shrink-0 cursor-pointer appearance-none align-middle shadow ring duration-350 checkbox-md;
54
-
55
- --tw-ring-color: light-dark(
56
- var(--checkbox-300),
57
- color-mix(in oklab,var(--checkbox-100)16%,transparent)
58
- );
59
-
60
- background-color: light-dark(
61
- var(--checkbox-100),
62
- color-mix(in oklab,var(--checkbox-600)15%,transparent)
63
- );
64
-
65
- color: light-dark(
66
- var(--checkbox-700),
67
- var(--checkbox-200)
68
- );
69
-
70
- border-radius: var(--radius-checkbox);
71
-
72
- &::before {
73
- @apply block size-full rotate-45 bg-current opacity-0 content-none transition-all;
74
- clip-path: polygon(20% 100%, 20% 80%, 50% 80%, 50% 0, 70% 0, 70% 100%);
75
- font-size: 1rem;
76
- line-height: 0.75;
77
- }
78
-
79
- &:focus-visible {
80
- outline: 2px solid var(--checkbox-700, currentColor);
81
- outline-offset: 2px;
82
- }
83
-
84
- &:checked,
85
- &[aria-checked="true"] {
86
- @apply shadow-2xl;
87
- background-color: light-dark(
88
- var(--checkbox-200),
89
- var(--checkbox-600)
90
- );
91
- &::before {
92
- clip-path: polygon(20% 100%, 20% 80%, 50% 80%, 50% 0, 70% 0, 70% 100%);
93
- @apply opacity-100 content-['✔︎'];
94
- @media (forced-colors: active) {
95
- @apply rotate-0 bg-transparent content-['✔︎'] [clip-path:none];
96
- }
97
- }
98
- }
99
-
100
- &:indeterminate {
101
- &:before {
102
- @apply rotate-0 opacity-100;
103
- translate: 0 -35%;
104
- clip-path: polygon(20% 100%, 20% 80%, 50% 80%, 50% 80%, 80% 80%, 80% 100%);
105
- }
106
- }
107
-
108
- &:disabled {
109
- @apply cursor-not-allowed opacity-20;
110
- }
111
- }
112
- }
113
-
114
- @utility checkbox {
115
- @layer components {
116
- @apply checkbox-core;
117
- }
118
- @layer theme {
119
- --checkbox-50: var(--default-50);
120
- --checkbox-100: var(--default-100);
121
- --checkbox-200: var(--default-200);
122
- --checkbox-300: var(--default-300);
123
- --checkbox-400: var(--default-400);
124
- --checkbox-500: var(--default-500);
125
- --checkbox-600: var(--default-600);
126
- --checkbox-700: var(--default-700);
127
- --checkbox-800: var(--default-800);
128
- --checkbox-900: var(--default-900);
129
- --checkbox-950: var(--default-950);
130
- }
131
- }
132
-
133
- @utility checkbox-primary {
134
- @layer components {
135
- @apply checkbox-core;
136
- }
137
- @layer theme {
138
- --checkbox-50: var(--primary-50);
139
- --checkbox-100: var(--primary-100);
140
- --checkbox-200: var(--primary-200);
141
- --checkbox-300: var(--primary-300);
142
- --checkbox-400: var(--primary-400);
143
- --checkbox-500: var(--primary-500);
144
- --checkbox-600: var(--primary-600);
145
- --checkbox-700: var(--primary-700);
146
- --checkbox-800: var(--primary-800);
147
- --checkbox-900: var(--primary-900);
148
- --checkbox-950: var(--primary-950);
149
- }
150
- }
151
-
152
- @utility checkbox-secondary {
153
- @layer components {
154
- @apply checkbox-core;
155
- }
156
- @layer theme {
157
- --checkbox-50: var(--secondary-50);
158
- --checkbox-100: var(--secondary-100);
159
- --checkbox-200: var(--secondary-200);
160
- --checkbox-300: var(--secondary-300);
161
- --checkbox-400: var(--secondary-400);
162
- --checkbox-500: var(--secondary-500);
163
- --checkbox-600: var(--secondary-600);
164
- --checkbox-700: var(--secondary-700);
165
- --checkbox-800: var(--secondary-800);
166
- --checkbox-900: var(--secondary-900);
167
- --checkbox-950: var(--secondary-950);
168
- }
169
- }
170
-
171
- @utility checkbox-accent {
172
- @layer components {
173
- @apply checkbox-core;
174
- }
175
- @layer theme {
176
- --checkbox-50: var(--accent-50);
177
- --checkbox-100: var(--accent-100);
178
- --checkbox-200: var(--accent-200);
179
- --checkbox-300: var(--accent-300);
180
- --checkbox-400: var(--accent-400);
181
- --checkbox-500: var(--accent-500);
182
- --checkbox-600: var(--accent-600);
183
- --checkbox-700: var(--accent-700);
184
- --checkbox-800: var(--accent-800);
185
- --checkbox-900: var(--accent-900);
186
- --checkbox-950: var(--accent-950);
187
- }
188
- }
189
-
190
-
191
- @utility checkbox-info {
192
- @layer components {
193
- @apply checkbox-core;
194
- }
195
- @layer theme {
196
- --checkbox-50: var(--info-50);
197
- --checkbox-100: var(--info-100);
198
- --checkbox-200: var(--info-200);
199
- --checkbox-300: var(--info-300);
200
- --checkbox-400: var(--info-400);
201
- --checkbox-500: var(--info-500);
202
- --checkbox-600: var(--info-600);
203
- --checkbox-700: var(--info-700);
204
- --checkbox-800: var(--info-800);
205
- --checkbox-900: var(--info-900);
206
- --checkbox-950: var(--info-950);
207
- }
208
- }
209
-
210
- @utility checkbox-success {
211
- @layer components {
212
- @apply checkbox-core;
213
- }
214
- @layer theme {
215
- --checkbox-50: var(--success-50);
216
- --checkbox-100: var(--success-100);
217
- --checkbox-200: var(--success-200);
218
- --checkbox-300: var(--success-300);
219
- --checkbox-400: var(--success-400);
220
- --checkbox-500: var(--success-500);
221
- --checkbox-600: var(--success-600);
222
- --checkbox-700: var(--success-700);
223
- --checkbox-800: var(--success-800);
224
- --checkbox-900: var(--success-900);
225
- --checkbox-950: var(--success-950);
226
- }
227
- }
228
-
229
- @utility checkbox-warning {
230
- @layer components {
231
- @apply checkbox-core;
232
- }
233
- @layer theme {
234
- --checkbox-50: var(--warning-50);
235
- --checkbox-100: var(--warning-100);
236
- --checkbox-200: var(--warning-200);
237
- --checkbox-300: var(--warning-300);
238
- --checkbox-400: var(--warning-400);
239
- --checkbox-500: var(--warning-500);
240
- --checkbox-600: var(--warning-600);
241
- --checkbox-700: var(--warning-700);
242
- --checkbox-800: var(--warning-800);
243
- --checkbox-900: var(--warning-900);
244
- --checkbox-950: var(--warning-950);
245
- }
246
- }
247
-
248
- @utility checkbox-error {
249
- @layer components {
250
- @apply checkbox-core;
251
- }
252
- @layer theme {
253
- --checkbox-50: var(--error-50);
254
- --checkbox-100: var(--error-100);
255
- --checkbox-200: var(--error-200);
256
- --checkbox-300: var(--error-300);
257
- --checkbox-400: var(--error-400);
258
- --checkbox-500: var(--error-500);
259
- --checkbox-600: var(--error-600);
260
- --checkbox-700: var(--error-700);
261
- --checkbox-800: var(--error-800);
262
- --checkbox-900: var(--error-900);
263
- --checkbox-950: var(--error-950);
264
- }
265
- }
@@ -1,52 +0,0 @@
1
- @utility container {
2
- margin-inline: auto;
3
- padding-inline: 1rem;
4
- @media (width >= 640px) { /* sm */
5
- padding-inline: 2rem;
6
- }
7
- @media (width >= 1024px) { /* lg */
8
- padding-inline: 4rem;
9
- }
10
- }
11
-
12
- @utility container-xs {
13
- max-width: 320px;
14
- margin-inline: auto;
15
- padding-inline: 1rem;
16
- }
17
- @utility container-sm {
18
- max-width: 640px;
19
- margin-inline: auto;
20
- padding-inline: 1rem;
21
- }
22
- @utility container-md {
23
- max-width: 768px;
24
- margin-inline: auto;
25
- padding-inline: 1rem;
26
- }
27
-
28
- @utility container-lg {
29
- max-width: 1024px;
30
- margin-inline: auto;
31
- padding-inline: 1rem;
32
- }
33
-
34
- @utility container-xl {
35
- max-width: 1280px;
36
- margin-inline: auto;
37
- padding-inline: 1rem;
38
- }
39
-
40
- @utility container-2xl {
41
- max-width: 1536px;
42
- margin-inline: auto;
43
- padding-inline: 1rem;
44
- }
45
-
46
- @utility container-full {
47
- width: 100vw;
48
- max-width: 100vw;
49
- margin-inline: auto;
50
- padding-inline: 1rem;
51
- box-sizing: border-box;
52
- }