iryx-ui 0.20.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.
@@ -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.20.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);