@xploreu/components 0.1.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.
@@ -0,0 +1,293 @@
1
+ import 'react';
2
+ import { Slot } from '@radix-ui/react-slot';
3
+ import { cva } from 'class-variance-authority';
4
+ import { Loader2 } from 'lucide-react';
5
+ import { cn } from '@xploreu/lib/cn';
6
+ import { jsxs, jsx } from 'react/jsx-runtime';
7
+
8
+ var buttonVariants = cva(
9
+ cn(
10
+ "group relative inline-flex h-max w-fit cursor-pointer items-center justify-center whitespace-nowrap outline-brand transition duration-100 ease-linear before:absolute focus-visible:outline-2 focus-visible:outline-offset-2 rounded-xp-buttons [&_svg]:shrink-0",
11
+ // Disabled styles
12
+ "disabled:cursor-not-allowed"
13
+ ),
14
+ {
15
+ variants: {
16
+ color: {
17
+ default: "focus-visible:outline-focus-ring",
18
+ destructive: "focus-visible:outline-focus-ring-error",
19
+ "gradient-ai": "focus-visible:outline-focus-ring",
20
+ "linear-green": "focus-visible:outline-focus-ring-success",
21
+ "linear-overlay": "focus-visible:outline-focus-ring",
22
+ "linear-destructive": "focus-visible:outline-focus-ring-error"
23
+ },
24
+ variant: {
25
+ primary: "shadow-xp-xs-skeumorphic before:rounded-lg before:absolute before:inset-0 before:border-2 before:border-white/12 before:mask-b-from-0% after:absolute after:inset-0 after:rounded-xp-buttons hover:after:bg-alpha-gray-20 after:bg-transparent after:transition-colors disabled:text-fg-disabled disabled:bg-none disabled:bg-[#F5F5F5] disabled:hover:after:bg-transparent disabled:shadow-xp-xs disabled:before:border-border-disabled disabled:before:mask-none disabled:before:border",
26
+ secondary: "shadow-xp-xs-skeumorphic border disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:border-border-disabled disabled:shadow-xp-xs disabled:hover:text-fg-disabled disabled:hover:[&_svg]:text-fg-disabled-subtle",
27
+ "secondary-accent": "disabled:border-border-disabled disabled:bg-bg-disabled disabled:text-fg-disabled",
28
+ tertiary: "disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-bg-disabled",
29
+ "tertiary-accent": "disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle",
30
+ link: "underline decoration-transparent hover:decoration-inherit transition-colors disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:hover:no-underline"
31
+ },
32
+ icon: {
33
+ true: void 0,
34
+ false: void 0
35
+ },
36
+ size: {
37
+ sm: "text-label-semibold-3 px-xp-lg gap-xp-sm h-9 data-[icon]:size-9 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5",
38
+ md: "text-label-semibold-3 px-3.5 gap-xp-sm h-10 data-[icon]:size-10 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5",
39
+ lg: "text-label-semibold-2 px-xp-xl gap-xp-md h-11 data-[icon]:size-11 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5",
40
+ xl: "text-label-semibold-2 px-4.5 gap-xp-md h-12 data-[icon]:size-12 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5"
41
+ }
42
+ },
43
+ compoundVariants: [
44
+ // Default Color Variants
45
+ {
46
+ variant: "primary",
47
+ color: "default",
48
+ className: "bg-gradient-buttons-gradient-blue text-text-primary-on-brand"
49
+ },
50
+ {
51
+ variant: "secondary",
52
+ color: "default",
53
+ className: "bg-bg-primary text-text-secondary [&_svg]:text-text-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover [&_svg]:hover:text-text-quaternary-hover"
54
+ },
55
+ {
56
+ variant: "secondary-accent",
57
+ color: "default",
58
+ className: "border border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary"
59
+ },
60
+ {
61
+ variant: "tertiary",
62
+ color: "default",
63
+ className: "text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover [&_svg]:hover:text-fg-quaternary-hover"
64
+ },
65
+ {
66
+ variant: "tertiary-accent",
67
+ color: "default",
68
+ className: "bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover"
69
+ },
70
+ {
71
+ variant: "link",
72
+ color: "default",
73
+ className: "text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover [&_svg]:hover:text-fg-brand-secondary-hover"
74
+ },
75
+ // Destructive Color Variants
76
+ {
77
+ variant: "primary",
78
+ color: "destructive",
79
+ className: "bg-bg-error-solid text-text-primary-on-brand"
80
+ },
81
+ {
82
+ variant: "secondary",
83
+ color: "destructive",
84
+ className: "bg-bg-primary text-text-error-primary [&_svg]:text-fg-error-secondary border-border-error-subtle hover:bg-bg-error-primary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary"
85
+ },
86
+ {
87
+ // Not existing in design system yet
88
+ variant: "secondary-accent",
89
+ color: "destructive",
90
+ className: "border border-border-error text-fg-error-primary hover:bg-bg-error-primary"
91
+ },
92
+ {
93
+ variant: "tertiary",
94
+ color: "destructive",
95
+ className: "text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary"
96
+ },
97
+ {
98
+ // Not existing in design system yet
99
+ variant: "tertiary-accent",
100
+ color: "destructive",
101
+ className: "bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover"
102
+ },
103
+ {
104
+ variant: "link",
105
+ color: "destructive",
106
+ className: "text-text-error-secondary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary"
107
+ },
108
+ // Gradient AI
109
+ {
110
+ variant: "primary",
111
+ color: "gradient-ai",
112
+ className: "bg-gradient-buttons-button-ai text-text-primary-on-brand"
113
+ },
114
+ {
115
+ variant: "secondary",
116
+ color: "gradient-ai",
117
+ className: "relative shadow-transparent border-transparent hover:bg-bg-primary bg-[linear-gradient(90deg,var(--color-bg-primary),var(--color-bg-primary)),var(--gradient-buttons-button-ai)] [background-clip:padding-box,border-box] [background-origin:padding-box,border-box] [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled"
118
+ },
119
+ {
120
+ // Not existing in design system yet
121
+ variant: "secondary-accent",
122
+ color: "gradient-ai",
123
+ className: "border border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary"
124
+ },
125
+ {
126
+ variant: "tertiary",
127
+ color: "gradient-ai",
128
+ className: "relative [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled"
129
+ },
130
+ {
131
+ // Not existing in design system yet
132
+ variant: "tertiary-accent",
133
+ color: "gradient-ai",
134
+ className: "bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover"
135
+ },
136
+ {
137
+ // Not existing in design system yet
138
+ variant: "link",
139
+ color: "gradient-ai",
140
+ className: "text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover [&_svg]:hover:text-fg-brand-secondary-hover"
141
+ },
142
+ // Linear Green Color Variants
143
+ {
144
+ variant: "primary",
145
+ color: "linear-green",
146
+ className: "bg-gradient-buttons-gradient-green text-text-primary-on-brand"
147
+ },
148
+ {
149
+ variant: "secondary",
150
+ color: "linear-green",
151
+ className: "bg-bg-primary text-text-secondary [&_svg]:text-green-500 border-border-primary hover:text-text-secondary-hover [&_svg]:hover:text-green-900"
152
+ },
153
+ {
154
+ // Not existing in design system yet
155
+ variant: "secondary-accent",
156
+ color: "linear-green",
157
+ className: "border border-border-primary text-fg-primary hover:bg-bg-primary"
158
+ },
159
+ {
160
+ variant: "tertiary",
161
+ color: "linear-green",
162
+ className: "text-text-success-primary [&_svg]:text-green-500 hover:bg-bg-success-primary [&_svg]:hover:text-green-900"
163
+ },
164
+ {
165
+ // Not existing in design system yet
166
+ variant: "tertiary-accent",
167
+ color: "linear-green",
168
+ className: "bg-bg-success-primary text-text-success-tertiary [&_svg]:text-fg-success-secondary hover:bg-bg-success-secondary hover:text-text-success-tertiary hover:[&_svg]:text-fg-success-secondary-hover"
169
+ },
170
+ {
171
+ // Not existing in design system yet
172
+ variant: "link",
173
+ color: "linear-green",
174
+ className: "text-text-success-secondary [&_svg]:text-fg-success-secondary hover:text-text-success-primary-hover [&_svg]:hover:text-fg-success-primary"
175
+ },
176
+ // Linear Overlay Color Variants
177
+ {
178
+ variant: "primary",
179
+ color: "linear-overlay",
180
+ className: "relative bg-bg-brand-solid text-text-primary-on-brand [&_svg]:text-button-primary-icon hover:[&_svg]:text-button-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border"
181
+ },
182
+ {
183
+ variant: "secondary",
184
+ color: "linear-overlay",
185
+ className: "bg-bg-brand-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover [&_svg]:hover:text-text-quaternary-hover"
186
+ },
187
+ {
188
+ variant: "secondary-accent",
189
+ color: "linear-overlay",
190
+ className: "border border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary"
191
+ },
192
+ {
193
+ variant: "tertiary",
194
+ color: "linear-overlay",
195
+ className: "text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover [&_svg]:hover:text-fg-quaternary-hover"
196
+ },
197
+ {
198
+ variant: "tertiary-accent",
199
+ color: "linear-overlay",
200
+ className: "bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover"
201
+ },
202
+ {
203
+ variant: "link",
204
+ color: "linear-overlay",
205
+ className: "text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover [&_svg]:hover:text-fg-brand-secondary-hover"
206
+ },
207
+ // Linear Destructive Color Variants
208
+ {
209
+ variant: "primary",
210
+ color: "linear-destructive",
211
+ className: "relative bg-bg-error-solid text-text-primary-on-brand [&_svg]:text-button-destructive-primary-icon hover:[&_svg]:text-button-destructive-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border"
212
+ },
213
+ {
214
+ variant: "secondary",
215
+ color: "linear-destructive",
216
+ className: "bg-bg-error-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover [&_svg]:hover:text-text-quaternary-hover"
217
+ },
218
+ {
219
+ // Not existing in design system yet
220
+ variant: "secondary-accent",
221
+ color: "linear-destructive",
222
+ className: "border border-border-error text-fg-error-primary hover:bg-bg-error-primary"
223
+ },
224
+ {
225
+ variant: "tertiary",
226
+ color: "linear-destructive",
227
+ className: "text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-tertiary-hover [&_svg]:hover:text-fg-error-secondary"
228
+ },
229
+ {
230
+ // Not existing in design system yet
231
+ variant: "tertiary-accent",
232
+ color: "linear-destructive",
233
+ className: "bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover"
234
+ },
235
+ {
236
+ variant: "link",
237
+ color: "linear-destructive",
238
+ className: "text-text-error-primary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary"
239
+ }
240
+ ],
241
+ defaultVariants: {
242
+ variant: "primary",
243
+ color: "default",
244
+ size: "sm"
245
+ }
246
+ }
247
+ );
248
+ function Button({
249
+ className,
250
+ color,
251
+ variant,
252
+ size,
253
+ asChild = false,
254
+ loading = false,
255
+ children,
256
+ disabled,
257
+ icon,
258
+ ...props
259
+ }) {
260
+ const Comp = asChild ? Slot : "button";
261
+ if (loading) {
262
+ return /* @__PURE__ */ jsxs(
263
+ Comp,
264
+ {
265
+ className: cn(buttonVariants({ color, variant, size, className })),
266
+ "data-icon": icon ? "" : void 0,
267
+ "data-slot": "button",
268
+ disabled: true,
269
+ ...props,
270
+ children: [
271
+ /* @__PURE__ */ jsx(Loader2, { className: "size-4 animate-spin" }),
272
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Loading..." })
273
+ ]
274
+ }
275
+ );
276
+ }
277
+ return /* @__PURE__ */ jsx(
278
+ Comp,
279
+ {
280
+ className: cn(buttonVariants({ color, variant, size, className })),
281
+ "data-icon": icon ? "" : void 0,
282
+ "data-slot": "button",
283
+ "data-variant": variant,
284
+ disabled,
285
+ ...props,
286
+ children
287
+ }
288
+ );
289
+ }
290
+
291
+ export { Button, buttonVariants };
292
+ //# sourceMappingURL=chunk-NLAZFIHF.js.map
293
+ //# sourceMappingURL=chunk-NLAZFIHF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/button.tsx"],"names":[],"mappings":";;;;;;;AAQA,IAAM,cAAA,GAAiB,GAAA;AAAA,EACrB,EAAA;AAAA,IACE,kQAAA;AAAA;AAAA,IAEA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,kCAAA;AAAA,QACT,WAAA,EAAa,wCAAA;AAAA,QACb,aAAA,EAAe,kCAAA;AAAA,QACf,cAAA,EAAgB,0CAAA;AAAA,QAChB,gBAAA,EAAkB,kCAAA;AAAA,QAClB,oBAAA,EAAsB;AAAA,OACxB;AAAA,MACA,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,2dAAA;AAAA,QACT,SAAA,EAAW,iQAAA;AAAA,QACX,kBAAA,EAAoB,mFAAA;AAAA,QACpB,QAAA,EAAU,qFAAA;AAAA,QACV,iBAAA,EAAmB,4FAAA;AAAA,QACnB,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,IAAA,EAAM,MAAA;AAAA,QACN,KAAA,EAAO;AAAA,OACT;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,iIAAA;AAAA,QACJ,EAAA,EAAI,iIAAA;AAAA,QACJ,EAAA,EAAI,wIAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,gBAAA,EAAkB;AAAA;AAAA,MAEhB;AAAA,QACE,OAAA,EAAS,SAAA;AAAA,QACT,KAAA,EAAO,SAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,WAAA;AAAA,QACT,KAAA,EAAO,SAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,kBAAA;AAAA,QACT,KAAA,EAAO,SAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,UAAA;AAAA,QACT,KAAA,EAAO,SAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,iBAAA;AAAA,QACT,KAAA,EAAO,SAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,MAAA;AAAA,QACT,KAAA,EAAO,SAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA;AAAA,MAGA;AAAA,QACE,OAAA,EAAS,SAAA;AAAA,QACT,KAAA,EAAO,aAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,WAAA;AAAA,QACT,KAAA,EAAO,aAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA;AAAA,QAEE,OAAA,EAAS,kBAAA;AAAA,QACT,KAAA,EAAO,aAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,UAAA;AAAA,QACT,KAAA,EAAO,aAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA;AAAA,QAEE,OAAA,EAAS,iBAAA;AAAA,QACT,KAAA,EAAO,aAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,MAAA;AAAA,QACT,KAAA,EAAO,aAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA;AAAA,MAGA;AAAA,QACE,OAAA,EAAS,SAAA;AAAA,QACT,KAAA,EAAO,aAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,WAAA;AAAA,QACT,KAAA,EAAO,aAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA;AAAA,QAEE,OAAA,EAAS,kBAAA;AAAA,QACT,KAAA,EAAO,aAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,UAAA;AAAA,QACT,KAAA,EAAO,aAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA;AAAA,QAEE,OAAA,EAAS,iBAAA;AAAA,QACT,KAAA,EAAO,aAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA;AAAA,QAEE,OAAA,EAAS,MAAA;AAAA,QACT,KAAA,EAAO,aAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA;AAAA,MAGA;AAAA,QACE,OAAA,EAAS,SAAA;AAAA,QACT,KAAA,EAAO,cAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,WAAA;AAAA,QACT,KAAA,EAAO,cAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA;AAAA,QAEE,OAAA,EAAS,kBAAA;AAAA,QACT,KAAA,EAAO,cAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,UAAA;AAAA,QACT,KAAA,EAAO,cAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA;AAAA,QAEE,OAAA,EAAS,iBAAA;AAAA,QACT,KAAA,EAAO,cAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA;AAAA,QAEE,OAAA,EAAS,MAAA;AAAA,QACT,KAAA,EAAO,cAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA;AAAA,MAGA;AAAA,QACE,OAAA,EAAS,SAAA;AAAA,QACT,KAAA,EAAO,gBAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,WAAA;AAAA,QACT,KAAA,EAAO,gBAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,kBAAA;AAAA,QACT,KAAA,EAAO,gBAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,UAAA;AAAA,QACT,KAAA,EAAO,gBAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,iBAAA;AAAA,QACT,KAAA,EAAO,gBAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,MAAA;AAAA,QACT,KAAA,EAAO,gBAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA;AAAA,MAGA;AAAA,QACE,OAAA,EAAS,SAAA;AAAA,QACT,KAAA,EAAO,oBAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,WAAA;AAAA,QACT,KAAA,EAAO,oBAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA;AAAA,QAEE,OAAA,EAAS,kBAAA;AAAA,QACT,KAAA,EAAO,oBAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,UAAA;AAAA,QACT,KAAA,EAAO,oBAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA;AAAA,QAEE,OAAA,EAAS,iBAAA;AAAA,QACT,KAAA,EAAO,oBAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,MAAA;AAAA,QACT,KAAA,EAAO,oBAAA;AAAA,QACP,SAAA,EAAW;AAAA;AACb,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM;AAAA;AACR;AAEJ;AAEA,SAAS,MAAA,CAAO;AAAA,EACd,SAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,OAAA,GAAU,KAAA;AAAA,EACV,QAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAG;AACL,CAAA,EAIK;AACH,EAAA,MAAM,IAAA,GAAO,UAAU,IAAA,GAAO,QAAA;AAE9B,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACE,IAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,OAAO,OAAA,EAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,QACjE,WAAA,EAAW,OAAO,EAAA,GAAK,MAAA;AAAA,QACvB,WAAA,EAAU,QAAA;AAAA,QACV,QAAA,EAAQ,IAAA;AAAA,QACP,GAAG,KAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,WAAU,qBAAA,EAAsB,CAAA;AAAA,0BACzC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,QAAA,EAAA,YAAA,EAAU;AAAA;AAAA;AAAA,KACtC;AAAA,EAEJ;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,OAAO,OAAA,EAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,MACjE,WAAA,EAAW,OAAO,EAAA,GAAK,MAAA;AAAA,MACvB,WAAA,EAAU,QAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,QAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ","file":"chunk-NLAZFIHF.js","sourcesContent":["import * as React from \"react\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Loader2 } from \"lucide-react\"\n\nimport { cn } from \"@xploreu/lib/cn\"\n\nconst buttonVariants = cva(\n cn(\n \"group relative inline-flex h-max w-fit cursor-pointer items-center justify-center whitespace-nowrap outline-brand transition duration-100 ease-linear before:absolute focus-visible:outline-2 focus-visible:outline-offset-2 rounded-xp-buttons [&_svg]:shrink-0\",\n // Disabled styles\n \"disabled:cursor-not-allowed\",\n ),\n {\n variants: {\n color: {\n default: \"focus-visible:outline-focus-ring\",\n destructive: \"focus-visible:outline-focus-ring-error\",\n \"gradient-ai\": \"focus-visible:outline-focus-ring\",\n \"linear-green\": \"focus-visible:outline-focus-ring-success\",\n \"linear-overlay\": \"focus-visible:outline-focus-ring\",\n \"linear-destructive\": \"focus-visible:outline-focus-ring-error\",\n },\n variant: {\n primary: \"shadow-xp-xs-skeumorphic before:rounded-lg before:absolute before:inset-0 before:border-2 before:border-white/12 before:mask-b-from-0% after:absolute after:inset-0 after:rounded-xp-buttons hover:after:bg-alpha-gray-20 after:bg-transparent after:transition-colors disabled:text-fg-disabled disabled:bg-none disabled:bg-[#F5F5F5] disabled:hover:after:bg-transparent disabled:shadow-xp-xs disabled:before:border-border-disabled disabled:before:mask-none disabled:before:border\",\n secondary: \"shadow-xp-xs-skeumorphic border disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:border-border-disabled disabled:shadow-xp-xs disabled:hover:text-fg-disabled disabled:hover:[&_svg]:text-fg-disabled-subtle\",\n \"secondary-accent\": \"disabled:border-border-disabled disabled:bg-bg-disabled disabled:text-fg-disabled\",\n tertiary: \"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-bg-disabled\",\n \"tertiary-accent\": \"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle\",\n link: \"underline decoration-transparent hover:decoration-inherit transition-colors disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:hover:no-underline\",\n },\n icon: {\n true: undefined,\n false: undefined\n },\n size: {\n sm: \"text-label-semibold-3 px-xp-lg gap-xp-sm h-9 data-[icon]:size-9 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5\",\n md: \"text-label-semibold-3 px-3.5 gap-xp-sm h-10 data-[icon]:size-10 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5\",\n lg: \"text-label-semibold-2 px-xp-xl gap-xp-md h-11 data-[icon]:size-11 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5\",\n xl: \"text-label-semibold-2 px-4.5 gap-xp-md h-12 data-[icon]:size-12 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5\",\n }\n },\n compoundVariants: [\n // Default Color Variants\n {\n variant: \"primary\",\n color: \"default\",\n className: \"bg-gradient-buttons-gradient-blue text-text-primary-on-brand\"\n },\n {\n variant: \"secondary\",\n color: \"default\",\n className: \"bg-bg-primary text-text-secondary [&_svg]:text-text-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover [&_svg]:hover:text-text-quaternary-hover\"\n },\n {\n variant: \"secondary-accent\",\n color: \"default\",\n className: \"border border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary\"\n },\n {\n variant: \"tertiary\",\n color: \"default\",\n className: \"text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover [&_svg]:hover:text-fg-quaternary-hover\"\n },\n {\n variant: \"tertiary-accent\",\n color: \"default\",\n className: \"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover\"\n },\n {\n variant: \"link\",\n color: \"default\",\n className: \"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover [&_svg]:hover:text-fg-brand-secondary-hover\"\n },\n\n // Destructive Color Variants\n {\n variant: \"primary\",\n color: \"destructive\",\n className: \"bg-bg-error-solid text-text-primary-on-brand\"\n },\n {\n variant: \"secondary\",\n color: \"destructive\",\n className: \"bg-bg-primary text-text-error-primary [&_svg]:text-fg-error-secondary border-border-error-subtle hover:bg-bg-error-primary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary\"\n },\n {\n // Not existing in design system yet\n variant: \"secondary-accent\",\n color: \"destructive\",\n className: \"border border-border-error text-fg-error-primary hover:bg-bg-error-primary\"\n },\n {\n variant: \"tertiary\",\n color: \"destructive\",\n className: \"text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary\"\n },\n {\n // Not existing in design system yet\n variant: \"tertiary-accent\",\n color: \"destructive\",\n className: \"bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover\"\n },\n {\n variant: \"link\",\n color: \"destructive\",\n className: \"text-text-error-secondary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary\"\n },\n\n // Gradient AI\n {\n variant: \"primary\",\n color: \"gradient-ai\",\n className: \"bg-gradient-buttons-button-ai text-text-primary-on-brand\"\n },\n {\n variant: \"secondary\",\n color: \"gradient-ai\",\n className: \"relative shadow-transparent border-transparent hover:bg-bg-primary bg-[linear-gradient(90deg,var(--color-bg-primary),var(--color-bg-primary)),var(--gradient-buttons-button-ai)] [background-clip:padding-box,border-box] [background-origin:padding-box,border-box] [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled\"\n },\n {\n // Not existing in design system yet\n variant: \"secondary-accent\",\n color: \"gradient-ai\",\n className: \"border border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary\"\n },\n {\n variant: \"tertiary\",\n color: \"gradient-ai\",\n className: \"relative [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled\"\n },\n {\n // Not existing in design system yet\n variant: \"tertiary-accent\",\n color: \"gradient-ai\",\n className: \"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover\"\n },\n {\n // Not existing in design system yet\n variant: \"link\",\n color: \"gradient-ai\",\n className: \"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover [&_svg]:hover:text-fg-brand-secondary-hover\"\n },\n\n // Linear Green Color Variants\n {\n variant: \"primary\",\n color: \"linear-green\",\n className: \"bg-gradient-buttons-gradient-green text-text-primary-on-brand\"\n },\n {\n variant: \"secondary\",\n color: \"linear-green\",\n className: \"bg-bg-primary text-text-secondary [&_svg]:text-green-500 border-border-primary hover:text-text-secondary-hover [&_svg]:hover:text-green-900\"\n },\n {\n // Not existing in design system yet\n variant: \"secondary-accent\",\n color: \"linear-green\",\n className: \"border border-border-primary text-fg-primary hover:bg-bg-primary\"\n },\n {\n variant: \"tertiary\",\n color: \"linear-green\",\n className: \"text-text-success-primary [&_svg]:text-green-500 hover:bg-bg-success-primary [&_svg]:hover:text-green-900\"\n },\n {\n // Not existing in design system yet\n variant: \"tertiary-accent\",\n color: \"linear-green\",\n className: \"bg-bg-success-primary text-text-success-tertiary [&_svg]:text-fg-success-secondary hover:bg-bg-success-secondary hover:text-text-success-tertiary hover:[&_svg]:text-fg-success-secondary-hover\"\n },\n {\n // Not existing in design system yet\n variant: \"link\",\n color: \"linear-green\",\n className: \"text-text-success-secondary [&_svg]:text-fg-success-secondary hover:text-text-success-primary-hover [&_svg]:hover:text-fg-success-primary\"\n },\n\n // Linear Overlay Color Variants\n {\n variant: \"primary\",\n color: \"linear-overlay\",\n className: \"relative bg-bg-brand-solid text-text-primary-on-brand [&_svg]:text-button-primary-icon hover:[&_svg]:text-button-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border\"\n },\n {\n variant: \"secondary\",\n color: \"linear-overlay\",\n className: \"bg-bg-brand-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover [&_svg]:hover:text-text-quaternary-hover\"\n },\n {\n variant: \"secondary-accent\",\n color: \"linear-overlay\",\n className: \"border border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary\"\n },\n {\n variant: \"tertiary\",\n color: \"linear-overlay\",\n className: \"text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover [&_svg]:hover:text-fg-quaternary-hover\"\n },\n {\n variant: \"tertiary-accent\",\n color: \"linear-overlay\",\n className: \"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover\"\n },\n {\n variant: \"link\",\n color: \"linear-overlay\",\n className: \"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover [&_svg]:hover:text-fg-brand-secondary-hover\"\n },\n\n // Linear Destructive Color Variants\n {\n variant: \"primary\",\n color: \"linear-destructive\",\n className: \"relative bg-bg-error-solid text-text-primary-on-brand [&_svg]:text-button-destructive-primary-icon hover:[&_svg]:text-button-destructive-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border\"\n },\n {\n variant: \"secondary\",\n color: \"linear-destructive\",\n className: \"bg-bg-error-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover [&_svg]:hover:text-text-quaternary-hover\"\n },\n {\n // Not existing in design system yet\n variant: \"secondary-accent\",\n color: \"linear-destructive\",\n className: \"border border-border-error text-fg-error-primary hover:bg-bg-error-primary\"\n },\n {\n variant: \"tertiary\",\n color: \"linear-destructive\",\n className: \"text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-tertiary-hover [&_svg]:hover:text-fg-error-secondary\"\n },\n {\n // Not existing in design system yet\n variant: \"tertiary-accent\",\n color: \"linear-destructive\",\n className: \"bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover\"\n },\n {\n variant: \"link\",\n color: \"linear-destructive\",\n className: \"text-text-error-primary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary\"\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n color: \"default\",\n size: \"sm\",\n },\n }\n)\n\nfunction Button({\n className,\n color,\n variant,\n size,\n asChild = false,\n loading = false,\n children,\n disabled,\n icon,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n loading?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n if (loading) {\n return (\n <Comp\n className={cn(buttonVariants({ color, variant, size, className }))}\n data-icon={icon ? \"\" : undefined}\n data-slot=\"button\"\n disabled\n {...props}\n >\n <Loader2 className=\"size-4 animate-spin\" />\n <span className=\"sr-only\">Loading...</span>\n </Comp>\n )\n }\n\n return (\n <Comp\n className={cn(buttonVariants({ color, variant, size, className }))}\n data-icon={icon ? \"\" : undefined}\n data-slot=\"button\"\n data-variant={variant}\n disabled={disabled}\n {...props}\n >\n {children}\n </Comp>\n )\n}\n\nexport { Button, buttonVariants }\n"]}
@@ -0,0 +1,17 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as class_variance_authority_types from 'class-variance-authority/types';
3
+ import * as React from 'react';
4
+ import { VariantProps } from 'class-variance-authority';
5
+
6
+ declare const buttonVariants: (props?: ({
7
+ color?: "default" | "destructive" | "gradient-ai" | "linear-green" | "linear-overlay" | "linear-destructive" | null | undefined;
8
+ variant?: "primary" | "secondary" | "secondary-accent" | "tertiary" | "tertiary-accent" | "link" | null | undefined;
9
+ icon?: boolean | null | undefined;
10
+ size?: "sm" | "md" | "lg" | "xl" | null | undefined;
11
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
12
+ declare function Button({ className, color, variant, size, asChild, loading, children, disabled, icon, ...props }: React.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & {
13
+ asChild?: boolean;
14
+ loading?: boolean;
15
+ }): react_jsx_runtime.JSX.Element;
16
+
17
+ export { Button, buttonVariants };
@@ -0,0 +1,3 @@
1
+ export { Button, buttonVariants } from '../chunk-NLAZFIHF.js';
2
+ //# sourceMappingURL=button.js.map
3
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"button.js"}
@@ -0,0 +1,5 @@
1
+ export { Button, buttonVariants } from './button.js';
2
+ import 'react/jsx-runtime';
3
+ import 'class-variance-authority/types';
4
+ import 'react';
5
+ import 'class-variance-authority';
@@ -0,0 +1,3 @@
1
+ export { Button, buttonVariants } from '../chunk-NLAZFIHF.js';
2
+ //# sourceMappingURL=index.js.map
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@xploreu/components",
3
+ "version": "0.1.0",
4
+ "description": "Shared UI components for XploreU apps",
5
+ "license": "MIT",
6
+ "author": {
7
+ "name": "Talent Insider"
8
+ },
9
+ "publishConfig": {
10
+ "access": "public"
11
+ },
12
+ "type": "module",
13
+ "sideEffects": false,
14
+ "exports": {
15
+ "./ui": {
16
+ "import": {
17
+ "types": "./dist/ui/index.d.ts",
18
+ "default": "./dist/ui/index.js"
19
+ }
20
+ },
21
+ "./ui/*": {
22
+ "import": {
23
+ "types": "./dist/ui/*.d.ts",
24
+ "default": "./dist/ui/*.js"
25
+ }
26
+ }
27
+ },
28
+ "files": [
29
+ "dist"
30
+ ],
31
+ "peerDependencies": {
32
+ "react": ">=18",
33
+ "react-dom": ">=18"
34
+ },
35
+ "dependencies": {
36
+ "@radix-ui/react-slot": "^1.2.4",
37
+ "class-variance-authority": "^0.7.1",
38
+ "lucide-react": "^0.477.0",
39
+ "@xploreu/lib": "0.1.0"
40
+ },
41
+ "devDependencies": {
42
+ "@types/react": "^19.2.2",
43
+ "@types/react-dom": "^19.2.2",
44
+ "react": "^19.2.4",
45
+ "react-dom": "^19.2.4",
46
+ "tsup": "^8.4.0",
47
+ "typescript": "^5"
48
+ },
49
+ "scripts": {
50
+ "build": "tsup",
51
+ "dev": "tsup --watch",
52
+ "clean": "rm -rf dist"
53
+ }
54
+ }