frutjam 1.3.0-beta.0 → 1.5.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.3.0-beta.0",
3
+ "version": "1.5.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",
@@ -31,7 +31,7 @@
31
31
  content: none;
32
32
  }
33
33
  &>p{
34
- @apply para;
34
+ @apply para-sm;
35
35
  }
36
36
  &>summary{
37
37
  display: flex;
@@ -37,33 +37,47 @@
37
37
  --badge-text-size: 1.25rem;
38
38
  }
39
39
 
40
+ @utility badge-square {
41
+ &:where(.badge-square, .badge-circle){
42
+ padding-inline: var(--badge-inline);
43
+ padding-block: var(--badge-inline);
44
+ width: var(--badge-block);
45
+ height: var(--badge-block);
46
+ }
47
+ }
48
+
40
49
  @utility badge-rounded {
41
50
  --badge-radius: calc(infinity * 1px);
42
51
  }
43
52
 
53
+ @utility badge-circle {
54
+ @apply badge-square badge-rounded;
55
+ }
56
+
44
57
  @utility badge-dashed {
45
- background-color: transparent;
46
- outline: 1px dashed light-dark(var(--badge-500), var(--badge-700));
47
- color: light-dark(var(--badge-700), var(--badge-500));
58
+ --badge-bg-color: transparent;
59
+ --badge-text-color: light-dark(var(--badge-700), var(--badge-500));
60
+ --badge-outline-width: 1px;
61
+ --badge-outline-style: dashed;
62
+ --badge-outline-color: light-dark(var(--badge-500), var(--badge-700));
48
63
  }
49
64
 
50
65
  @utility badge-outline {
51
- background-color: transparent;
52
- outline: 1px solid light-dark(var(--badge-500), var(--badge-800));
53
- color: light-dark(var(--badge-800), var(--badge-200));
66
+ --badge-bg-color: transparent;
67
+ --badge-text-color: light-dark(var(--badge-700), var(--badge-500));
68
+ --badge-outline-width: 1px;
69
+ --badge-outline-style: solid;
70
+ --badge-outline-color: light-dark(var(--badge-500), var(--badge-700));
54
71
  }
55
72
 
56
73
  @utility badge-soft {
57
- background-color: light-dark(
58
- var(--badge-100),
59
- color-mix(in oklab, var(--badge-900) 10%, transparent)
60
- );
61
- color: light-dark(var(--badge-800), var(--badge-400));
74
+ --badge-bg-color: light-dark(var(--badge-100), color-mix(in oklab, var(--badge-900) 30%, transparent));
75
+ --badge-text-color: light-dark(var(--badge-800), var(--btn-400));
62
76
  }
63
77
 
64
78
  @utility badge-ghost {
65
- background-color: transparent;
66
- color: light-dark(var(--badge-600), var(--badge-300));
79
+ --badge-bg-color: transparent;
80
+ --badge-text-color: light-dark(var(--badge-600), var(--badge-300));
67
81
  }
68
82
 
69
83
  @utility badge {
@@ -71,6 +85,7 @@
71
85
  gap: 0.5rem;
72
86
  border-radius: var(--badge-radius, var(--radius-badge));
73
87
  display: inline-flex;
88
+ line-height: 1.25rem;
74
89
  align-items: center;
75
90
  justify-content: center;
76
91
  vertical-align: middle;
@@ -81,40 +96,12 @@
81
96
  padding-block: var(--badge-block);
82
97
  font-size: var(--badge-text-size);
83
98
 
84
- &:where(.badge-square){
85
- padding-inline: var(--badge-inline);
86
- padding-block: var(--badge-inline);
87
- width: var(--badge-block);
88
- height: var(--badge-block);
89
- }
90
-
91
- /* for default badge */
92
- &:not(
93
- .badge-primary,
94
- .badge-secondary,
95
- .badge-accent,
96
- .badge-info,
97
- .badge-success,
98
- .badge-warning,
99
- .badge-error
100
- ) {
101
- background-color: light-dark(var(--badge-200), var(--badge-800));
102
- color: light-dark(var(--badge-900), var(--badge-50));
103
- }
104
-
105
- /* for all badge exclude default badge */
106
- &:is(
107
- .badge-primary,
108
- .badge-secondary,
109
- .badge-accent,
110
- .badge-info,
111
- .badge-success,
112
- .badge-warning,
113
- .badge-error
114
- ) {
115
- background-color: light-dark(var(--badge-700), var(--badge-700));
116
- color: var(--badge-50);
117
- }
99
+ background-color: var(--badge-bg-color);
100
+ color: var(--badge-text-color);
101
+
102
+ outline-width: var(--badge-outline-width);
103
+ outline-style: var(--badge-outline-style);
104
+ outline-color: var(--badge-outline-color);
118
105
 
119
106
  --badge-50: var(--default-50);
120
107
  --badge-100: var(--default-100);
@@ -127,6 +114,9 @@
127
114
  --badge-800: var(--default-800);
128
115
  --badge-900: var(--default-900);
129
116
  --badge-950: var(--default-950);
117
+
118
+ --badge-bg-color: light-dark(var(--badge-200), var(--badge-800));
119
+ --badge-text-color: light-dark(var(--badge-900), var(--badge-50));
130
120
  }
131
121
 
132
122
  @utility badge-primary {
@@ -141,6 +131,9 @@
141
131
  --badge-800: var(--primary-800);
142
132
  --badge-900: var(--primary-900);
143
133
  --badge-950: var(--primary-950);
134
+
135
+ --badge-bg-color: light-dark(var(--badge-700), var(--badge-700));
136
+ --badge-text-color: var(--badge-50);
144
137
  }
145
138
 
146
139
  @utility badge-secondary {
@@ -155,6 +148,9 @@
155
148
  --badge-800: var(--secondary-800);
156
149
  --badge-900: var(--secondary-900);
157
150
  --badge-950: var(--secondary-950);
151
+
152
+ --badge-bg-color: light-dark(var(--badge-700), var(--badge-700));
153
+ --badge-text-color: var(--badge-50);
158
154
  }
159
155
 
160
156
  @utility badge-accent {
@@ -169,6 +165,9 @@
169
165
  --badge-800: var(--accent-800);
170
166
  --badge-900: var(--accent-900);
171
167
  --badge-950: var(--accent-950);
168
+
169
+ --badge-bg-color: light-dark(var(--badge-700), var(--badge-700));
170
+ --badge-text-color: var(--badge-50);
172
171
  }
173
172
 
174
173
  @utility badge-info {
@@ -183,6 +182,9 @@
183
182
  --badge-800: var(--info-800);
184
183
  --badge-900: var(--info-900);
185
184
  --badge-950: var(--info-950);
185
+
186
+ --badge-bg-color: light-dark(var(--badge-700), var(--badge-700));
187
+ --badge-text-color: var(--badge-50);
186
188
  }
187
189
 
188
190
  @utility badge-success {
@@ -197,6 +199,9 @@
197
199
  --badge-800: var(--success-800);
198
200
  --badge-900: var(--success-900);
199
201
  --badge-950: var(--success-950);
202
+
203
+ --badge-bg-color: light-dark(var(--badge-700), var(--badge-700));
204
+ --badge-text-color: var(--badge-50);
200
205
  }
201
206
 
202
207
  @utility badge-warning {
@@ -211,6 +216,9 @@
211
216
  --badge-800: var(--warning-800);
212
217
  --badge-900: var(--warning-900);
213
218
  --badge-950: var(--warning-950);
219
+
220
+ --badge-bg-color: light-dark(var(--badge-700), var(--badge-700));
221
+ --badge-text-color: var(--badge-50);
214
222
  }
215
223
 
216
224
  @utility badge-error {
@@ -225,4 +233,7 @@
225
233
  --badge-800: var(--error-800);
226
234
  --badge-900: var(--error-900);
227
235
  --badge-950: var(--error-950);
236
+
237
+ --badge-bg-color: light-dark(var(--badge-700), var(--badge-700));
238
+ --badge-text-color: var(--badge-50);
228
239
  }
@@ -3,8 +3,6 @@
3
3
 
4
4
  @utility btn {
5
5
  @apply btn-md;
6
-
7
- text-shadow: 0px 1px 1px color-mix(in oklab, var(--btn-900) 10%, transparent);
8
6
  line-height: 1.5;
9
7
  width: var(--btn-width);
10
8
  max-width: var(--btn-max-width);
@@ -29,11 +27,6 @@
29
27
  padding-block: var(--btn-block);
30
28
  font-size: var(--btn-text-size);
31
29
 
32
- &:where(.btn-square){
33
- padding-inline: var(--btn-block);
34
- padding-block: var(--btn-block);
35
- }
36
-
37
30
  background-color: var(--btn-bg-color);
38
31
  color: var(--btn-text-color);
39
32
 
@@ -90,7 +83,6 @@
90
83
  --btn-text-color: light-dark(var(--btn-900), var(--btn-50));
91
84
  }
92
85
 
93
-
94
86
  @utility btn-xs {
95
87
  --btn-inline: 0.875rem;
96
88
  --btn-block: 0.375rem;
@@ -127,15 +119,21 @@
127
119
  --btn-text-size: 1.375rem;
128
120
  }
129
121
 
130
- /*btn-circle deprecated: Remove this in stable release*/
131
- @utility btn-circle {
132
- --btn-radius: calc(infinity * 1px);
122
+ @utility btn-square{
123
+ &:where(.btn-square, .btn-circle){
124
+ padding-inline: var(--btn-block);
125
+ padding-block: var(--btn-block);
126
+ }
133
127
  }
134
128
 
135
129
  @utility btn-rounded {
136
130
  --btn-radius: calc(infinity * 1px);
137
131
  }
138
132
 
133
+ @utility btn-circle {
134
+ @apply btn-square btn-rounded;
135
+ }
136
+
139
137
  @utility btn-wide {
140
138
  --btn-max-width: var(--container-xs);
141
139
  --btn-width: 100%;
@@ -3,14 +3,14 @@
3
3
  @utility card-outline {
4
4
  border: 1px solid light-dark(
5
5
  var(--core-200),
6
- var(--core-950)
6
+ var(--core-900)
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-950)
13
+ var(--core-900)
14
14
  );
15
15
  }
16
16
 
@@ -49,11 +49,11 @@
49
49
  gap: 0.5rem;
50
50
  flex: auto;
51
51
  flex-direction: column;
52
- padding: 1.5rem;
52
+ padding: var(--card-body-padding, 1.5rem);
53
53
 
54
54
  :where(p){
55
55
  flex-grow: 1;
56
- font-size: 1rem;
56
+ font-size: var(--card-body-font-size, 1rem);
57
57
  }
58
58
  }
59
59
 
@@ -62,5 +62,61 @@
62
62
  align-items: center;
63
63
  gap: 0.5rem;
64
64
  font-weight: 600;
65
- font-size: 1.125rem;
65
+ font-size: var(--card-title-font-size, 1.125rem);
66
+ }
67
+
68
+
69
+ @utility card-xs {
70
+ :is(.card-body) {
71
+ --card-body-padding: 0.5rem;
72
+ --card-body-font-size: 0.6875rem;
73
+ }
74
+
75
+ :is(.card-title) {
76
+ --card-title-font-size: 0.875rem;
77
+ }
78
+ }
79
+
80
+ @utility card-sm {
81
+ :is(.card-body) {
82
+ --card-body-padding: 1rem;
83
+ --card-body-font-size: 0.75rem;
84
+ }
85
+
86
+ :is(.card-title) {
87
+ --card-title-font-size: 1rem;
88
+ }
89
+ }
90
+
91
+ @utility card-md {
92
+ :is(.card-body) {
93
+ --card-body-padding: 1.5rem;
94
+ --card-body-font-size: 0.875rem;
95
+ }
96
+
97
+ :is(.card-title) {
98
+ --card-title-font-size: 1.125rem;
99
+ }
100
+ }
101
+
102
+ @utility card-lg {
103
+ :is(.card-body) {
104
+ --card-body-padding: 2rem;
105
+ --card-body-font-size: 1rem;
106
+ }
107
+
108
+ :is(.card-title) {
109
+ --card-title-font-size: 1.25rem;
110
+ }
111
+ }
112
+
113
+ @utility card-xl {
114
+ :is(.card-body) {
115
+ --card-body-padding: 2.5rem;
116
+ --card-body-font-size: 1.125rem;
117
+ }
118
+
119
+ :is(.card-title) {
120
+ --card-title-font-size: 1.375rem;
121
+ }
66
122
  }
@@ -41,6 +41,11 @@
41
41
  aspect-ratio: 1 / 1;
42
42
  }
43
43
 
44
+ @utility checkbox-rounded {
45
+ border-radius: calc(infinity * 1px);
46
+ aspect-ratio: 1 / 1;
47
+ }
48
+
44
49
  @utility checkbox-square {
45
50
  border-radius: var(--radius-checkbox);
46
51
  aspect-ratio: 1 / 1;
@@ -0,0 +1,159 @@
1
+ @import "../theme/jams/base.css";
2
+
3
+ @utility link {
4
+ cursor: pointer;
5
+ text-decoration: underline;
6
+ text-underline-offset: 4px;
7
+ color: var(--link-700);
8
+ font-size: var(--link-text-size, 1rem);
9
+
10
+ &:focus {
11
+ outline-style: none;
12
+ @media (forced-colors: active) {
13
+ outline: 2px solid transparent;
14
+ outline-offset: 2px;
15
+ }
16
+ }
17
+
18
+ &:focus-visible {
19
+ outline: 2px solid currentColor;
20
+ outline-offset: 2px;
21
+ }
22
+
23
+ @media (hover: hover) {
24
+ &:hover {
25
+ color: light-dark(var(--link-800), var(--link-500));
26
+ }
27
+ }
28
+ }
29
+
30
+ @utility link-hover {
31
+ text-decoration-line: none;
32
+ &:hover {
33
+ @media (hover: hover) {
34
+ text-decoration-line: underline;
35
+ }
36
+ }
37
+ }
38
+
39
+ @utility link-primary {
40
+ --link-50: var(--primary-50);
41
+ --link-100: var(--primary-100);
42
+ --link-200: var(--primary-200);
43
+ --link-300: var(--primary-300);
44
+ --link-400: var(--primary-400);
45
+ --link-500: var(--primary-500);
46
+ --link-600: var(--primary-600);
47
+ --link-700: var(--primary-700);
48
+ --link-800: var(--primary-800);
49
+ --link-900: var(--primary-900);
50
+ --link-950: var(--primary-950);
51
+ }
52
+
53
+ @utility link-secondary {
54
+ --link-50: var(--secondary-50);
55
+ --link-100: var(--secondary-100);
56
+ --link-200: var(--secondary-200);
57
+ --link-300: var(--secondary-300);
58
+ --link-400: var(--secondary-400);
59
+ --link-500: var(--secondary-500);
60
+ --link-600: var(--secondary-600);
61
+ --link-700: var(--secondary-700);
62
+ --link-800: var(--secondary-800);
63
+ --link-900: var(--secondary-900);
64
+ --link-950: var(--secondary-950);
65
+ }
66
+
67
+ @utility link-accent {
68
+ --link-50: var(--accent-50);
69
+ --link-100: var(--accent-100);
70
+ --link-200: var(--accent-200);
71
+ --link-300: var(--accent-300);
72
+ --link-400: var(--accent-400);
73
+ --link-500: var(--accent-500);
74
+ --link-600: var(--accent-600);
75
+ --link-700: var(--accent-700);
76
+ --link-800: var(--accent-800);
77
+ --link-900: var(--accent-900);
78
+ --link-950: var(--accent-950);
79
+ }
80
+
81
+ @utility link-info {
82
+ --link-50: var(--info-50);
83
+ --link-100: var(--info-100);
84
+ --link-200: var(--info-200);
85
+ --link-300: var(--info-300);
86
+ --link-400: var(--info-400);
87
+ --link-500: var(--info-500);
88
+ --link-600: var(--info-600);
89
+ --link-700: var(--info-700);
90
+ --link-800: var(--info-800);
91
+ --link-900: var(--info-900);
92
+ --link-950: var(--info-950);
93
+ }
94
+
95
+ @utility link-success {
96
+ --link-50: var(--success-50);
97
+ --link-100: var(--success-100);
98
+ --link-200: var(--success-200);
99
+ --link-300: var(--success-300);
100
+ --link-400: var(--success-400);
101
+ --link-500: var(--success-500);
102
+ --link-600: var(--success-600);
103
+ --link-700: var(--success-700);
104
+ --link-800: var(--success-800);
105
+ --link-900: var(--success-900);
106
+ --link-950: var(--success-950);
107
+ }
108
+
109
+ @utility link-warning {
110
+ --link-50: var(--warning-50);
111
+ --link-100: var(--warning-100);
112
+ --link-200: var(--warning-200);
113
+ --link-300: var(--warning-300);
114
+ --link-400: var(--warning-400);
115
+ --link-500: var(--warning-500);
116
+ --link-600: var(--warning-600);
117
+ --link-700: var(--warning-700);
118
+ --link-800: var(--warning-800);
119
+ --link-900: var(--warning-900);
120
+ --link-950: var(--warning-950);
121
+ }
122
+
123
+ @utility link-error {
124
+ --link-50: var(--error-50);
125
+ --link-100: var(--error-100);
126
+ --link-200: var(--error-200);
127
+ --link-300: var(--error-300);
128
+ --link-400: var(--error-400);
129
+ --link-500: var(--error-500);
130
+ --link-600: var(--error-600);
131
+ --link-700: var(--error-700);
132
+ --link-800: var(--error-800);
133
+ --link-900: var(--error-900);
134
+ --link-950: var(--error-950);
135
+ }
136
+
137
+ @utility link-xs {
138
+ --link-text-size: 0.75rem;
139
+ }
140
+
141
+ @utility link-sm {
142
+ --link-text-size: 0.875rem;
143
+ }
144
+
145
+ @utility link-md {
146
+ --link-text-size: 1rem;
147
+ }
148
+
149
+ @utility link-lg {
150
+ --link-text-size: 1.125rem;
151
+ }
152
+
153
+ @utility link-xl {
154
+ --link-text-size: 1.25rem;
155
+ }
156
+
157
+ @utility link-2xl {
158
+ --link-text-size: 1.375rem;
159
+ }
package/src/main.css CHANGED
@@ -7,6 +7,7 @@
7
7
  @import "./components/drawer.css";
8
8
  @import "./components/checkbox.css";
9
9
  @import "./components/accordion.css";
10
+ @import "./components/link.css";
10
11
  /* @import "./components/popover.css"; */
11
12
  /* @import "./components/dropdown.css"; */
12
13
  @import "./components/divider.css";
@@ -1,6 +1,6 @@
1
1
  @theme {
2
2
  --slide-up: 0 100%;
3
3
  --slide-down: 0 -100%;
4
- --slide-left: 100% 0;
5
- --slide-right: -100% 0;
4
+ --slide-start: -100% 0;
5
+ --slide-end: 100% 0;
6
6
  }
@@ -1,5 +1,5 @@
1
1
  @utility core-para {
2
- text-wrap: balance;
2
+ text-wrap-style: pretty;
3
3
  color:light-dark(
4
4
  var(--core-700),
5
5
  var(--core-300)