iryx-ui 0.21.0 → 0.22.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.
@@ -1,50 +1,69 @@
1
1
  export declare const progressTheme: import("tailwind-variants").TVReturnType<{
2
+ shape: {
3
+ linear: {};
4
+ circle: {
5
+ root: string;
6
+ };
7
+ };
2
8
  variant: {
3
9
  primary: {
4
10
  indicator: string;
5
11
  segment: string;
6
12
  legendSwatch: string;
13
+ ringIndicator: string;
7
14
  };
8
15
  success: {
9
16
  indicator: string;
10
17
  segment: string;
11
18
  legendSwatch: string;
19
+ ringIndicator: string;
12
20
  };
13
21
  warning: {
14
22
  indicator: string;
15
23
  segment: string;
16
24
  legendSwatch: string;
25
+ ringIndicator: string;
17
26
  };
18
27
  danger: {
19
28
  indicator: string;
20
29
  segment: string;
21
30
  legendSwatch: string;
31
+ ringIndicator: string;
22
32
  };
23
33
  info: {
24
34
  indicator: string;
25
35
  segment: string;
26
36
  legendSwatch: string;
37
+ ringIndicator: string;
27
38
  };
28
39
  neutral: {
29
40
  indicator: string;
30
41
  segment: string;
31
42
  legendSwatch: string;
43
+ ringIndicator: string;
32
44
  };
33
45
  };
34
46
  size: {
35
47
  sm: {
36
48
  track: string;
49
+ ring: string;
50
+ ringValue: string;
37
51
  };
38
52
  md: {
39
53
  track: string;
54
+ ring: string;
55
+ ringValue: string;
40
56
  };
41
57
  lg: {
42
58
  track: string;
59
+ ring: string;
60
+ ringValue: string;
43
61
  };
44
62
  };
45
63
  indeterminate: {
46
64
  true: {
47
65
  indicator: string;
66
+ ring: string;
48
67
  };
49
68
  };
50
69
  }, {
@@ -59,53 +78,78 @@ export declare const progressTheme: import("tailwind-variants").TVReturnType<{
59
78
  legendItem: string;
60
79
  legendSwatch: string;
61
80
  legendValue: string;
81
+ ring: string;
82
+ ringTrack: string;
83
+ ringIndicator: string;
84
+ ringContent: string;
85
+ ringValue: string;
86
+ ringLabel: string;
62
87
  }, undefined, {
88
+ shape: {
89
+ linear: {};
90
+ circle: {
91
+ root: string;
92
+ };
93
+ };
63
94
  variant: {
64
95
  primary: {
65
96
  indicator: string;
66
97
  segment: string;
67
98
  legendSwatch: string;
99
+ ringIndicator: string;
68
100
  };
69
101
  success: {
70
102
  indicator: string;
71
103
  segment: string;
72
104
  legendSwatch: string;
105
+ ringIndicator: string;
73
106
  };
74
107
  warning: {
75
108
  indicator: string;
76
109
  segment: string;
77
110
  legendSwatch: string;
111
+ ringIndicator: string;
78
112
  };
79
113
  danger: {
80
114
  indicator: string;
81
115
  segment: string;
82
116
  legendSwatch: string;
117
+ ringIndicator: string;
83
118
  };
84
119
  info: {
85
120
  indicator: string;
86
121
  segment: string;
87
122
  legendSwatch: string;
123
+ ringIndicator: string;
88
124
  };
89
125
  neutral: {
90
126
  indicator: string;
91
127
  segment: string;
92
128
  legendSwatch: string;
129
+ ringIndicator: string;
93
130
  };
94
131
  };
95
132
  size: {
96
133
  sm: {
97
134
  track: string;
135
+ ring: string;
136
+ ringValue: string;
98
137
  };
99
138
  md: {
100
139
  track: string;
140
+ ring: string;
141
+ ringValue: string;
101
142
  };
102
143
  lg: {
103
144
  track: string;
145
+ ring: string;
146
+ ringValue: string;
104
147
  };
105
148
  };
106
149
  indeterminate: {
107
150
  true: {
108
151
  indicator: string;
152
+ ring: string;
109
153
  };
110
154
  };
111
155
  }, {
@@ -120,53 +164,78 @@ export declare const progressTheme: import("tailwind-variants").TVReturnType<{
120
164
  legendItem: string;
121
165
  legendSwatch: string;
122
166
  legendValue: string;
167
+ ring: string;
168
+ ringTrack: string;
169
+ ringIndicator: string;
170
+ ringContent: string;
171
+ ringValue: string;
172
+ ringLabel: string;
123
173
  }, import("tailwind-variants").TVReturnTypeLike<{
174
+ shape: {
175
+ linear: {};
176
+ circle: {
177
+ root: string;
178
+ };
179
+ };
124
180
  variant: {
125
181
  primary: {
126
182
  indicator: string;
127
183
  segment: string;
128
184
  legendSwatch: string;
185
+ ringIndicator: string;
129
186
  };
130
187
  success: {
131
188
  indicator: string;
132
189
  segment: string;
133
190
  legendSwatch: string;
191
+ ringIndicator: string;
134
192
  };
135
193
  warning: {
136
194
  indicator: string;
137
195
  segment: string;
138
196
  legendSwatch: string;
197
+ ringIndicator: string;
139
198
  };
140
199
  danger: {
141
200
  indicator: string;
142
201
  segment: string;
143
202
  legendSwatch: string;
203
+ ringIndicator: string;
144
204
  };
145
205
  info: {
146
206
  indicator: string;
147
207
  segment: string;
148
208
  legendSwatch: string;
209
+ ringIndicator: string;
149
210
  };
150
211
  neutral: {
151
212
  indicator: string;
152
213
  segment: string;
153
214
  legendSwatch: string;
215
+ ringIndicator: string;
154
216
  };
155
217
  };
156
218
  size: {
157
219
  sm: {
158
220
  track: string;
221
+ ring: string;
222
+ ringValue: string;
159
223
  };
160
224
  md: {
161
225
  track: string;
226
+ ring: string;
227
+ ringValue: string;
162
228
  };
163
229
  lg: {
164
230
  track: string;
231
+ ring: string;
232
+ ringValue: string;
165
233
  };
166
234
  };
167
235
  indeterminate: {
168
236
  true: {
169
237
  indicator: string;
238
+ ring: string;
170
239
  };
171
240
  };
172
241
  }, {
@@ -181,5 +250,11 @@ export declare const progressTheme: import("tailwind-variants").TVReturnType<{
181
250
  legendItem: string;
182
251
  legendSwatch: string;
183
252
  legendValue: string;
253
+ ring: string;
254
+ ringTrack: string;
255
+ ringIndicator: string;
256
+ ringContent: string;
257
+ ringValue: string;
258
+ ringLabel: string;
184
259
  }>>;
185
260
  export type ProgressSlots = keyof ReturnType<typeof progressTheme>;
@@ -12,49 +12,81 @@ var t = e({
12
12
  legend: "flex flex-wrap items-center gap-x-4 gap-y-1",
13
13
  legendItem: "flex items-center gap-1.5 text-xs text-muted-foreground",
14
14
  legendSwatch: "size-2 shrink-0 rounded-full",
15
- legendValue: "text-foreground tabular-nums"
15
+ legendValue: "text-foreground tabular-nums",
16
+ ring: "",
17
+ ringTrack: "fill-none stroke-muted",
18
+ ringIndicator: "fill-none transition-[stroke-dasharray] duration-300 ease-out",
19
+ ringContent: "absolute inset-0 flex flex-col items-center justify-center gap-0.5 text-center",
20
+ ringValue: "font-semibold text-foreground tabular-nums",
21
+ ringLabel: "text-xs text-muted-foreground"
16
22
  },
17
23
  variants: {
24
+ shape: {
25
+ linear: {},
26
+ circle: { root: "relative w-auto items-center" }
27
+ },
18
28
  variant: {
19
29
  primary: {
20
30
  indicator: "bg-linear-to-b from-primary-from to-primary-to",
21
31
  segment: "bg-linear-to-b from-primary-from to-primary-to",
22
- legendSwatch: "bg-primary"
32
+ legendSwatch: "bg-primary",
33
+ ringIndicator: "stroke-primary"
23
34
  },
24
35
  success: {
25
36
  indicator: "bg-success",
26
37
  segment: "bg-success",
27
- legendSwatch: "bg-success"
38
+ legendSwatch: "bg-success",
39
+ ringIndicator: "stroke-success"
28
40
  },
29
41
  warning: {
30
42
  indicator: "bg-warning",
31
43
  segment: "bg-warning",
32
- legendSwatch: "bg-warning"
44
+ legendSwatch: "bg-warning",
45
+ ringIndicator: "stroke-warning"
33
46
  },
34
47
  danger: {
35
48
  indicator: "bg-danger",
36
49
  segment: "bg-danger",
37
- legendSwatch: "bg-danger"
50
+ legendSwatch: "bg-danger",
51
+ ringIndicator: "stroke-danger"
38
52
  },
39
53
  info: {
40
54
  indicator: "bg-info",
41
55
  segment: "bg-info",
42
- legendSwatch: "bg-info"
56
+ legendSwatch: "bg-info",
57
+ ringIndicator: "stroke-info"
43
58
  },
44
59
  neutral: {
45
60
  indicator: "bg-muted-foreground",
46
61
  segment: "bg-muted-foreground",
47
- legendSwatch: "bg-muted-foreground"
62
+ legendSwatch: "bg-muted-foreground",
63
+ ringIndicator: "stroke-muted-foreground"
48
64
  }
49
65
  },
50
66
  size: {
51
- sm: { track: "h-1" },
52
- md: { track: "h-2" },
53
- lg: { track: "h-3" }
67
+ sm: {
68
+ track: "h-1",
69
+ ring: "size-16",
70
+ ringValue: "text-xs"
71
+ },
72
+ md: {
73
+ track: "h-2",
74
+ ring: "size-24",
75
+ ringValue: "text-sm"
76
+ },
77
+ lg: {
78
+ track: "h-3",
79
+ ring: "size-32",
80
+ ringValue: "text-base"
81
+ }
54
82
  },
55
- indeterminate: { true: { indicator: "iryx-progress-indeterminate w-1/3 animate-progress-indeterminate" } }
83
+ indeterminate: { true: {
84
+ indicator: "iryx-progress-indeterminate w-1/3 animate-progress-indeterminate",
85
+ ring: "motion-safe:animate-spin"
86
+ } }
56
87
  },
57
88
  defaultVariants: {
89
+ shape: "linear",
58
90
  variant: "primary",
59
91
  size: "md"
60
92
  }
@@ -1,18 +1,23 @@
1
1
  export declare const radioGroupTheme: import("tailwind-variants").TVReturnType<{
2
- size: {
3
- sm: {
2
+ variant: {
3
+ radio: {
4
4
  item: string;
5
- indicator: string;
6
5
  };
7
- md: {
6
+ card: {
8
7
  item: string;
9
- indicator: string;
8
+ mark: string;
10
9
  };
11
- lg: {
10
+ tile: {
12
11
  item: string;
13
- indicator: string;
12
+ content: string;
13
+ label: string;
14
14
  };
15
15
  };
16
+ size: {
17
+ sm: {};
18
+ md: {};
19
+ lg: {};
20
+ };
16
21
  orientation: {
17
22
  vertical: {
18
23
  root: string;
@@ -22,33 +27,38 @@ export declare const radioGroupTheme: import("tailwind-variants").TVReturnType<{
22
27
  };
23
28
  };
24
29
  invalid: {
25
- true: {
26
- item: string;
27
- };
30
+ true: {};
28
31
  };
29
32
  }, {
30
33
  root: string;
31
34
  wrapper: string;
32
35
  item: string;
36
+ mark: string;
33
37
  indicator: string;
38
+ icon: string;
34
39
  content: string;
35
40
  label: string;
36
41
  description: string;
37
42
  }, undefined, {
38
- size: {
39
- sm: {
43
+ variant: {
44
+ radio: {
40
45
  item: string;
41
- indicator: string;
42
46
  };
43
- md: {
47
+ card: {
44
48
  item: string;
45
- indicator: string;
49
+ mark: string;
46
50
  };
47
- lg: {
51
+ tile: {
48
52
  item: string;
49
- indicator: string;
53
+ content: string;
54
+ label: string;
50
55
  };
51
56
  };
57
+ size: {
58
+ sm: {};
59
+ md: {};
60
+ lg: {};
61
+ };
52
62
  orientation: {
53
63
  vertical: {
54
64
  root: string;
@@ -58,33 +68,38 @@ export declare const radioGroupTheme: import("tailwind-variants").TVReturnType<{
58
68
  };
59
69
  };
60
70
  invalid: {
61
- true: {
62
- item: string;
63
- };
71
+ true: {};
64
72
  };
65
73
  }, {
66
74
  root: string;
67
75
  wrapper: string;
68
76
  item: string;
77
+ mark: string;
69
78
  indicator: string;
79
+ icon: string;
70
80
  content: string;
71
81
  label: string;
72
82
  description: string;
73
83
  }, import("tailwind-variants").TVReturnTypeLike<{
74
- size: {
75
- sm: {
84
+ variant: {
85
+ radio: {
76
86
  item: string;
77
- indicator: string;
78
87
  };
79
- md: {
88
+ card: {
80
89
  item: string;
81
- indicator: string;
90
+ mark: string;
82
91
  };
83
- lg: {
92
+ tile: {
84
93
  item: string;
85
- indicator: string;
94
+ content: string;
95
+ label: string;
86
96
  };
87
97
  };
98
+ size: {
99
+ sm: {};
100
+ md: {};
101
+ lg: {};
102
+ };
88
103
  orientation: {
89
104
  vertical: {
90
105
  root: string;
@@ -94,15 +109,15 @@ export declare const radioGroupTheme: import("tailwind-variants").TVReturnType<{
94
109
  };
95
110
  };
96
111
  invalid: {
97
- true: {
98
- item: string;
99
- };
112
+ true: {};
100
113
  };
101
114
  }, {
102
115
  root: string;
103
116
  wrapper: string;
104
117
  item: string;
118
+ mark: string;
105
119
  indicator: string;
120
+ icon: string;
106
121
  content: string;
107
122
  label: string;
108
123
  description: string;
@@ -4,34 +4,141 @@ var t = e({
4
4
  slots: {
5
5
  root: "",
6
6
  wrapper: "flex items-start gap-2.5",
7
- item: "aspect-square shrink-0 cursor-pointer rounded-full border border-border bg-background transition-[color,background-color,border-color,box-shadow] outline-none focus-visible:ring-2 focus-visible:ring-primary/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-primary",
7
+ item: "cursor-pointer transition-[color,background-color,border-color,box-shadow] outline-none focus-visible:ring-2 focus-visible:ring-primary/50 disabled:cursor-not-allowed disabled:opacity-50",
8
+ mark: "grid aspect-square shrink-0 place-items-center rounded-full border border-border bg-background transition-[border-color,box-shadow]",
8
9
  indicator: "flex size-full items-center justify-center after:block after:rounded-full after:bg-primary",
10
+ icon: "text-muted-foreground transition-colors",
9
11
  content: "grid gap-1",
10
12
  label: "text-sm leading-5 text-foreground select-none",
11
13
  description: "text-sm leading-snug text-muted-foreground"
12
14
  },
13
15
  variants: {
16
+ variant: {
17
+ radio: { item: "aspect-square shrink-0 rounded-full border border-border bg-background data-[state=checked]:border-primary" },
18
+ card: {
19
+ item: "flex w-full items-start gap-3 rounded-lg border border-border bg-background text-left hover:bg-accent/50 data-[state=checked]:border-primary data-[state=checked]:bg-primary/5",
20
+ mark: "mt-0.5"
21
+ },
22
+ tile: {
23
+ item: "flex w-full flex-col items-center gap-2 rounded-lg border border-border bg-background text-center hover:bg-accent/50 data-[state=checked]:border-primary data-[state=checked]:bg-primary/5 data-[state=checked]:[&_[data-slot=icon]]:text-primary",
24
+ content: "justify-items-center gap-0.5",
25
+ label: "font-medium"
26
+ }
27
+ },
14
28
  size: {
15
- sm: {
29
+ sm: {},
30
+ md: {},
31
+ lg: {}
32
+ },
33
+ orientation: {
34
+ vertical: { root: "grid gap-2" },
35
+ horizontal: { root: "flex flex-wrap items-start gap-x-6 gap-y-2" }
36
+ },
37
+ invalid: { true: {} }
38
+ },
39
+ compoundVariants: [
40
+ {
41
+ variant: "radio",
42
+ size: "sm",
43
+ class: {
16
44
  item: "mt-0.5 size-3.5",
17
45
  indicator: "after:size-1.5"
18
- },
19
- md: {
46
+ }
47
+ },
48
+ {
49
+ variant: "radio",
50
+ size: "md",
51
+ class: {
20
52
  item: "mt-0.5 size-4",
21
53
  indicator: "after:size-2"
22
- },
23
- lg: {
54
+ }
55
+ },
56
+ {
57
+ variant: "radio",
58
+ size: "lg",
59
+ class: {
24
60
  item: "size-5",
25
61
  indicator: "after:size-2.5"
26
62
  }
27
63
  },
28
- orientation: {
29
- vertical: { root: "grid gap-2" },
30
- horizontal: { root: "flex flex-wrap items-start gap-x-6 gap-y-2" }
64
+ {
65
+ variant: "radio",
66
+ invalid: !0,
67
+ class: { item: "border-red-500 focus-visible:ring-red-500/40" }
31
68
  },
32
- invalid: { true: { item: "border-red-500 focus-visible:ring-red-500/40" } }
33
- },
69
+ {
70
+ variant: "card",
71
+ size: "sm",
72
+ class: {
73
+ item: "p-3",
74
+ mark: "size-3.5",
75
+ indicator: "after:size-1.5"
76
+ }
77
+ },
78
+ {
79
+ variant: "card",
80
+ size: "md",
81
+ class: {
82
+ item: "p-4",
83
+ mark: "size-4",
84
+ indicator: "after:size-2"
85
+ }
86
+ },
87
+ {
88
+ variant: "card",
89
+ size: "lg",
90
+ class: {
91
+ item: "p-5",
92
+ mark: "size-5",
93
+ indicator: "after:size-2.5"
94
+ }
95
+ },
96
+ {
97
+ variant: "card",
98
+ class: { mark: "group-data-[state=checked]/item:border-primary" }
99
+ },
100
+ {
101
+ variant: "card",
102
+ invalid: !0,
103
+ class: { item: "border-red-500 focus-visible:ring-red-500/40" }
104
+ },
105
+ {
106
+ variant: "tile",
107
+ size: "sm",
108
+ class: {
109
+ item: "p-3",
110
+ icon: "size-5"
111
+ }
112
+ },
113
+ {
114
+ variant: "tile",
115
+ size: "md",
116
+ class: {
117
+ item: "p-4",
118
+ icon: "size-6"
119
+ }
120
+ },
121
+ {
122
+ variant: "tile",
123
+ size: "lg",
124
+ class: {
125
+ item: "p-5",
126
+ icon: "size-7"
127
+ }
128
+ },
129
+ {
130
+ variant: "tile",
131
+ invalid: !0,
132
+ class: { item: "border-red-500 focus-visible:ring-red-500/40" }
133
+ },
134
+ {
135
+ variant: "tile",
136
+ orientation: "horizontal",
137
+ class: { root: "grid auto-cols-fr grid-flow-col items-stretch gap-2" }
138
+ }
139
+ ],
34
140
  defaultVariants: {
141
+ variant: "radio",
35
142
  size: "md",
36
143
  orientation: "vertical"
37
144
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "iryx-ui",
3
3
  "type": "module",
4
- "version": "0.21.0",
4
+ "version": "0.22.0",
5
5
  "description": "A Vue 3 component library built on Reka UI and Tailwind CSS v4.",
6
6
  "author": "therok1",
7
7
  "license": "MIT",
package/theme.css CHANGED
@@ -30,6 +30,17 @@
30
30
  */
31
31
  --iryx-font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
32
32
 
33
+ /*
34
+ * Corner radius. One knob for the whole scale: this is `rounded-lg`, and
35
+ * every other step is derived from it, so an app squares itself off or
36
+ * rounds itself up in a line:
37
+ *
38
+ * :root { --iryx-radius: 0; }
39
+ *
40
+ * `rounded-full` is left alone — a pill is a shape, not a radius.
41
+ */
42
+ --iryx-radius: 0.5rem;
43
+
33
44
  /* Neutral surfaces — shadcn/ui "zinc" palette. */
34
45
  --iryx-background: oklch(1 0 0);
35
46
  --iryx-foreground: oklch(0.145 0 0);
@@ -158,6 +169,20 @@
158
169
 
159
170
  @theme inline {
160
171
  --font-sans: var(--iryx-font-sans);
172
+ /*
173
+ * Tailwind's own radius scale, rebuilt as multiples of the base. At the
174
+ * default `0.5rem` every step comes out at exactly the value Tailwind ships,
175
+ * so nothing moves until someone changes the knob — and `0` squares the app
176
+ * off completely, which offsets from the base cannot do.
177
+ */
178
+ --radius: calc(var(--iryx-radius) * 0.5);
179
+ --radius-xs: calc(var(--iryx-radius) * 0.25);
180
+ --radius-sm: calc(var(--iryx-radius) * 0.5);
181
+ --radius-md: calc(var(--iryx-radius) * 0.75);
182
+ --radius-lg: var(--iryx-radius);
183
+ --radius-xl: calc(var(--iryx-radius) * 1.5);
184
+ --radius-2xl: calc(var(--iryx-radius) * 2);
185
+ --radius-3xl: calc(var(--iryx-radius) * 3);
161
186
  --color-background: var(--iryx-background);
162
187
  --color-foreground: var(--iryx-foreground);
163
188
  --color-primary: var(--iryx-primary);