@proyecto-viviana/ui 0.1.4 → 0.1.5
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/dist/index.js +935 -542
- package/dist/index.js.map +1 -1
- package/dist/index.ssr.js +1657 -0
- package/dist/index.ssr.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,1657 @@
|
|
|
1
|
+
// src/button/Button.tsx
|
|
2
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
3
|
+
import { mergeProps as _$mergeProps } from "solid-js/web";
|
|
4
|
+
import { splitProps, mergeProps as solidMergeProps } from "solid-js";
|
|
5
|
+
import { Button as HeadlessButton } from "@proyecto-viviana/solidaria-components";
|
|
6
|
+
function Button(props) {
|
|
7
|
+
const defaultProps = {
|
|
8
|
+
variant: "primary",
|
|
9
|
+
buttonStyle: "fill",
|
|
10
|
+
size: "md"
|
|
11
|
+
};
|
|
12
|
+
const merged = solidMergeProps(defaultProps, props);
|
|
13
|
+
const [local, headlessProps] = splitProps(merged, ["children", "variant", "buttonStyle", "size", "fullWidth", "staticColor", "class"]);
|
|
14
|
+
const getClassName = (renderProps) => {
|
|
15
|
+
const classList = ["vui-button", `vui-button--${local.buttonStyle}`, `vui-button--${local.variant}`, `vui-button--${local.size}`];
|
|
16
|
+
if (renderProps.isPressed) {
|
|
17
|
+
classList.push("is-pressed");
|
|
18
|
+
}
|
|
19
|
+
if (local.fullWidth) {
|
|
20
|
+
classList.push("vui-button--full-width");
|
|
21
|
+
}
|
|
22
|
+
if (local.class) {
|
|
23
|
+
classList.push(local.class);
|
|
24
|
+
}
|
|
25
|
+
return classList.join(" ");
|
|
26
|
+
};
|
|
27
|
+
return _$createComponent(HeadlessButton, _$mergeProps(headlessProps, {
|
|
28
|
+
"class": getClassName,
|
|
29
|
+
get ["data-variant"]() {
|
|
30
|
+
return local.variant;
|
|
31
|
+
},
|
|
32
|
+
get ["data-style"]() {
|
|
33
|
+
return local.buttonStyle;
|
|
34
|
+
},
|
|
35
|
+
get ["data-static-color"]() {
|
|
36
|
+
return local.staticColor || void 0;
|
|
37
|
+
},
|
|
38
|
+
get children() {
|
|
39
|
+
return local.children;
|
|
40
|
+
}
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// src/badge/index.tsx
|
|
45
|
+
import { createComponent as _$createComponent2 } from "solid-js/web";
|
|
46
|
+
import { ssr as _$ssr } from "solid-js/web";
|
|
47
|
+
import { escape as _$escape } from "solid-js/web";
|
|
48
|
+
import { Show } from "solid-js";
|
|
49
|
+
var _tmpl$ = ["<span>", "</span>"];
|
|
50
|
+
var _tmpl$2 = ['<div class="', '">', "</div>"];
|
|
51
|
+
var variantStyles = {
|
|
52
|
+
primary: "bg-primary-500 text-white",
|
|
53
|
+
secondary: "bg-bg-300 text-primary-300",
|
|
54
|
+
accent: "bg-accent-300 text-black",
|
|
55
|
+
success: "bg-success-400 text-white",
|
|
56
|
+
warning: "bg-warning-400 text-black",
|
|
57
|
+
danger: "bg-danger-400 text-white"
|
|
58
|
+
};
|
|
59
|
+
var sizeStyles = {
|
|
60
|
+
sm: "w-5 h-5 text-xs",
|
|
61
|
+
md: "w-7 h-7 text-xs",
|
|
62
|
+
lg: "w-9 h-9 text-sm"
|
|
63
|
+
};
|
|
64
|
+
function Badge(props) {
|
|
65
|
+
const variant = () => props.variant ?? "accent";
|
|
66
|
+
const size = () => props.size ?? "md";
|
|
67
|
+
return _$ssr(_tmpl$2, `flex items-center justify-center rounded-full border-b border-white font-semibold ${_$escape(variantStyles[variant()], true)} ${_$escape(sizeStyles[size()], true)} ${_$escape(props.class, true) ?? ""}`, _$escape(_$createComponent2(Show, {
|
|
68
|
+
get when() {
|
|
69
|
+
return props.count !== void 0;
|
|
70
|
+
},
|
|
71
|
+
get fallback() {
|
|
72
|
+
return props.children;
|
|
73
|
+
},
|
|
74
|
+
get children() {
|
|
75
|
+
return _$ssr(_tmpl$, _$escape(props.count));
|
|
76
|
+
}
|
|
77
|
+
})));
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// src/alert/index.tsx
|
|
81
|
+
import { createComponent as _$createComponent3 } from "solid-js/web";
|
|
82
|
+
import { ssr as _$ssr2 } from "solid-js/web";
|
|
83
|
+
import { escape as _$escape2 } from "solid-js/web";
|
|
84
|
+
import { Show as Show2 } from "solid-js";
|
|
85
|
+
var _tmpl$3 = ['<span class="font-semibold font-jost">', "</span>"];
|
|
86
|
+
var _tmpl$22 = '<span class="opacity-50">|</span>';
|
|
87
|
+
var _tmpl$32 = '<button class="hover:opacity-70 transition-opacity ml-2" aria-label="Dismiss">\u2715</button>';
|
|
88
|
+
var _tmpl$4 = ['<div class="', '" role="alert"><div class="flex items-center gap-3 flex-1">', '<div class="flex-1">', "</div>", "</div></div>"];
|
|
89
|
+
var variantStyles2 = {
|
|
90
|
+
info: "bg-primary-700 text-primary-200 border border-primary-500",
|
|
91
|
+
success: "bg-success-600 text-success-100 border border-success-400",
|
|
92
|
+
warning: "bg-warning-600 text-warning-100 border border-warning-400",
|
|
93
|
+
error: "bg-danger-600 text-danger-100 border border-danger-400"
|
|
94
|
+
};
|
|
95
|
+
function Alert(props) {
|
|
96
|
+
const variant = () => props.variant ?? "info";
|
|
97
|
+
return _$ssr2(_tmpl$4, `flex items-center min-h-[50px] font-normal rounded-lg px-4 py-2 ${_$escape2(variantStyles2[variant()], true)} ${_$escape2(props.class, true) ?? ""}`, _$escape2(_$createComponent3(Show2, {
|
|
98
|
+
get when() {
|
|
99
|
+
return props.title;
|
|
100
|
+
},
|
|
101
|
+
get children() {
|
|
102
|
+
return [_$ssr2(_tmpl$3, _$escape2(props.title)), _$ssr2(_tmpl$22)];
|
|
103
|
+
}
|
|
104
|
+
})), _$escape2(props.children), _$escape2(_$createComponent3(Show2, {
|
|
105
|
+
get when() {
|
|
106
|
+
return props.dismissible;
|
|
107
|
+
},
|
|
108
|
+
get children() {
|
|
109
|
+
return _$ssr2(_tmpl$32);
|
|
110
|
+
}
|
|
111
|
+
})));
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// src/avatar/index.tsx
|
|
115
|
+
import { createComponent as _$createComponent4 } from "solid-js/web";
|
|
116
|
+
import { ssr as _$ssr3 } from "solid-js/web";
|
|
117
|
+
import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
|
|
118
|
+
import { escape as _$escape3 } from "solid-js/web";
|
|
119
|
+
import { Show as Show3 } from "solid-js";
|
|
120
|
+
var _tmpl$5 = ["<img", ' class="w-full h-full object-cover">'];
|
|
121
|
+
var _tmpl$23 = ['<span class="', '"></span>'];
|
|
122
|
+
var _tmpl$33 = ['<div class="', '"><div class="', '">', "</div>", "</div>"];
|
|
123
|
+
var _tmpl$42 = ['<span class="', '">', "</span>"];
|
|
124
|
+
var _tmpl$52 = ['<div class="flex -space-x-2">', "</div>"];
|
|
125
|
+
var sizeStyles2 = {
|
|
126
|
+
xs: {
|
|
127
|
+
container: "w-6 h-6",
|
|
128
|
+
text: "text-xs",
|
|
129
|
+
indicator: "w-1.5 h-1.5"
|
|
130
|
+
},
|
|
131
|
+
sm: {
|
|
132
|
+
container: "w-8 h-8",
|
|
133
|
+
text: "text-sm",
|
|
134
|
+
indicator: "w-2 h-2"
|
|
135
|
+
},
|
|
136
|
+
md: {
|
|
137
|
+
container: "w-10 h-10",
|
|
138
|
+
text: "text-base",
|
|
139
|
+
indicator: "w-2.5 h-2.5"
|
|
140
|
+
},
|
|
141
|
+
lg: {
|
|
142
|
+
container: "w-14 h-14",
|
|
143
|
+
text: "text-lg",
|
|
144
|
+
indicator: "w-3 h-3"
|
|
145
|
+
},
|
|
146
|
+
xl: {
|
|
147
|
+
container: "w-20 h-20",
|
|
148
|
+
text: "text-xl",
|
|
149
|
+
indicator: "w-4 h-4"
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
function Avatar(props) {
|
|
153
|
+
const size = () => props.size ?? "md";
|
|
154
|
+
const styles = () => sizeStyles2[size()];
|
|
155
|
+
const initials = () => {
|
|
156
|
+
if (props.fallback) return props.fallback.slice(0, 2).toUpperCase();
|
|
157
|
+
if (props.alt) return props.alt.slice(0, 2).toUpperCase();
|
|
158
|
+
return "?";
|
|
159
|
+
};
|
|
160
|
+
return _$ssr3(_tmpl$33, `relative inline-block ${_$escape3(props.class, true) ?? ""}`, `${_$escape3(styles().container, true)} rounded-full overflow-hidden bg-bg-200 flex items-center justify-center ring-2 ring-accent/50`, _$escape3(_$createComponent4(Show3, {
|
|
161
|
+
get when() {
|
|
162
|
+
return props.src;
|
|
163
|
+
},
|
|
164
|
+
get fallback() {
|
|
165
|
+
return _$ssr3(_tmpl$42, `${_$escape3(styles().text, true)} font-medium text-primary-300`, _$escape3(initials()));
|
|
166
|
+
},
|
|
167
|
+
get children() {
|
|
168
|
+
return _$ssr3(_tmpl$5, _$ssrAttribute("src", _$escape3(props.src, true), false) + _$ssrAttribute("alt", _$escape3(props.alt, true) ?? "Avatar", false));
|
|
169
|
+
}
|
|
170
|
+
})), _$escape3(_$createComponent4(Show3, {
|
|
171
|
+
get when() {
|
|
172
|
+
return props.online !== void 0;
|
|
173
|
+
},
|
|
174
|
+
get children() {
|
|
175
|
+
return _$ssr3(_tmpl$23, `absolute bottom-0 right-0 ${_$escape3(styles().indicator, true)} rounded-full ring-2 ring-bg-400 ${props.online ? "bg-success-400" : "bg-bg-light"}`);
|
|
176
|
+
}
|
|
177
|
+
})));
|
|
178
|
+
}
|
|
179
|
+
function AvatarGroup(props) {
|
|
180
|
+
return _$ssr3(_tmpl$52, _$escape3(props.children));
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// src/switch/index.tsx
|
|
184
|
+
import { ssr as _$ssr5 } from "solid-js/web";
|
|
185
|
+
import { escape as _$escape5 } from "solid-js/web";
|
|
186
|
+
import { createSignal, createEffect } from "solid-js";
|
|
187
|
+
|
|
188
|
+
// src/switch/ToggleSwitch.tsx
|
|
189
|
+
import { ssr as _$ssr4 } from "solid-js/web";
|
|
190
|
+
import { ssrAttribute as _$ssrAttribute2 } from "solid-js/web";
|
|
191
|
+
import { escape as _$escape4 } from "solid-js/web";
|
|
192
|
+
import { createComponent as _$createComponent5 } from "solid-js/web";
|
|
193
|
+
import { mergeProps as _$mergeProps2 } from "solid-js/web";
|
|
194
|
+
import { splitProps as splitProps2, mergeProps as solidMergeProps2 } from "solid-js";
|
|
195
|
+
import { ToggleSwitch as HeadlessToggleSwitch } from "@proyecto-viviana/solidaria-components";
|
|
196
|
+
var _tmpl$6 = ["<span", "><span", "></span></span>"];
|
|
197
|
+
var _tmpl$24 = ['<span class="text-primary-200">', "</span>"];
|
|
198
|
+
var sizeStyles3 = {
|
|
199
|
+
sm: {
|
|
200
|
+
track: "h-5 w-9",
|
|
201
|
+
thumb: "h-4 w-4",
|
|
202
|
+
translate: "translate-x-4"
|
|
203
|
+
},
|
|
204
|
+
md: {
|
|
205
|
+
track: "h-6 w-11",
|
|
206
|
+
thumb: "h-5 w-5",
|
|
207
|
+
translate: "translate-x-5"
|
|
208
|
+
},
|
|
209
|
+
lg: {
|
|
210
|
+
track: "h-7 w-14",
|
|
211
|
+
thumb: "h-6 w-6",
|
|
212
|
+
translate: "translate-x-7"
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
function ToggleSwitch(props) {
|
|
216
|
+
const defaultProps = {
|
|
217
|
+
size: "md"
|
|
218
|
+
};
|
|
219
|
+
const merged = solidMergeProps2(defaultProps, props);
|
|
220
|
+
const [local, headlessProps] = splitProps2(merged, ["size", "class", "children"]);
|
|
221
|
+
const size = () => sizeStyles3[local.size];
|
|
222
|
+
const getClassName = (renderProps) => {
|
|
223
|
+
const base = "inline-flex items-center gap-2 cursor-pointer";
|
|
224
|
+
const disabledClass = renderProps.isDisabled ? "cursor-not-allowed opacity-50" : "";
|
|
225
|
+
const custom = local.class || "";
|
|
226
|
+
return [base, disabledClass, custom].filter(Boolean).join(" ");
|
|
227
|
+
};
|
|
228
|
+
return _$createComponent5(HeadlessToggleSwitch, _$mergeProps2(headlessProps, {
|
|
229
|
+
"class": getClassName,
|
|
230
|
+
children: (renderProps) => [_$ssr4(_tmpl$6, _$ssrAttribute2("class", _$escape4(["relative rounded-full transition-colors duration-200", "focus-within:ring-2 focus-within:ring-accent-300 focus-within:ring-offset-2 focus-within:ring-offset-bg-400", size().track, renderProps.isSelected ? "bg-accent" : "bg-bg-300", renderProps.isDisabled ? "cursor-not-allowed" : "cursor-pointer"].join(" "), true), false), _$ssrAttribute2("class", _$escape4(["absolute top-0.5 left-0.5 rounded-full bg-white shadow transition-transform duration-200", size().thumb, renderProps.isSelected ? size().translate : "translate-x-0"].join(" "), true), false)), local.children && _$ssr4(_tmpl$24, _$escape4(local.children))]
|
|
231
|
+
}));
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// src/switch/index.tsx
|
|
235
|
+
var _tmpl$7 = ['<div class="', '"><div class="', '"></div><div class="flex z-10 h-8 justify-around"><button type="button" class="', '"><span>', '</span></button><button type="button" class="', '"><span>', "</span></button></div></div>"];
|
|
236
|
+
function TabSwitch(props) {
|
|
237
|
+
const [leftSelected, setLeftSelected] = createSignal(props.value ? props.value === props.options[0]?.value : true);
|
|
238
|
+
createEffect(() => {
|
|
239
|
+
if (props.value !== void 0) {
|
|
240
|
+
setLeftSelected(props.value === props.options[0]?.value);
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
const toggle = () => {
|
|
244
|
+
const newLeftSelected = !leftSelected();
|
|
245
|
+
setLeftSelected(newLeftSelected);
|
|
246
|
+
const newValue = newLeftSelected ? props.options[0]?.value : props.options[1]?.value;
|
|
247
|
+
if (newValue) {
|
|
248
|
+
props.onChange?.(newValue);
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
const leftSelectedStyle = "left-0 w-[142px] border-l-2";
|
|
252
|
+
const rightSelectedStyle = "left-[142px] w-[108px] border-r-2";
|
|
253
|
+
const textSelected = "font-extrabold text-primary-300";
|
|
254
|
+
const textUnselected = "font-medium text-primary-600 tracking-wider";
|
|
255
|
+
return _$ssr5(_tmpl$7, `relative bg-bg-400 rounded-full w-[250px] cursor-pointer ${_$escape5(props.class, true) ?? ""}`, `${leftSelected() ? _$escape5(leftSelectedStyle, true) : _$escape5(rightSelectedStyle, true)} transition-all duration-500 ease-in-out z-0 absolute bg-primary-600 rounded-full h-8 border-accent-300`, `${leftSelected() ? _$escape5(textSelected, true) : _$escape5(textUnselected, true)} transition-all ease-in-out duration-500 z-10 text-lg flex justify-center items-center pointer-events-none`, _$escape5(props.options[0]?.label) ?? "TENDENCIAS", `${leftSelected() ? _$escape5(textUnselected, true) : _$escape5(textSelected, true)} transition-all ease-in-out duration-500 z-10 text-lg flex justify-center items-center pointer-events-none`, _$escape5(props.options[1]?.label) ?? "\xDALTIMOS");
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// src/checkbox/index.tsx
|
|
259
|
+
import { createComponent as _$createComponent6 } from "solid-js/web";
|
|
260
|
+
import { mergeProps as _$mergeProps3 } from "solid-js/web";
|
|
261
|
+
import { ssr as _$ssr6 } from "solid-js/web";
|
|
262
|
+
import { ssrAttribute as _$ssrAttribute3 } from "solid-js/web";
|
|
263
|
+
import { escape as _$escape6 } from "solid-js/web";
|
|
264
|
+
import { splitProps as splitProps3, mergeProps as solidMergeProps3, Show as Show4 } from "solid-js";
|
|
265
|
+
import { Checkbox as HeadlessCheckbox, CheckboxGroup as HeadlessCheckboxGroup } from "@proyecto-viviana/solidaria-components";
|
|
266
|
+
var _tmpl$8 = ["<svg", ' viewBox="0 0 12 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 5L4.5 8.5L11 1" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg>'];
|
|
267
|
+
var _tmpl$25 = ["<svg", ' viewBox="0 0 12 2" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1H11" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path></svg>'];
|
|
268
|
+
var _tmpl$34 = ["<span", ">", "</span>"];
|
|
269
|
+
var _tmpl$43 = ['<span class="text-sm font-medium text-primary-200">', "</span>"];
|
|
270
|
+
var _tmpl$53 = ['<div class="flex flex-col gap-2">', "</div>"];
|
|
271
|
+
var _tmpl$62 = ['<span class="text-sm text-primary-400">', "</span>"];
|
|
272
|
+
var _tmpl$72 = ['<span class="text-sm text-danger-400">', "</span>"];
|
|
273
|
+
var sizeStyles4 = {
|
|
274
|
+
sm: {
|
|
275
|
+
box: "h-4 w-4",
|
|
276
|
+
icon: "h-3 w-3",
|
|
277
|
+
label: "text-sm"
|
|
278
|
+
},
|
|
279
|
+
md: {
|
|
280
|
+
box: "h-5 w-5",
|
|
281
|
+
icon: "h-3.5 w-3.5",
|
|
282
|
+
label: "text-base"
|
|
283
|
+
},
|
|
284
|
+
lg: {
|
|
285
|
+
box: "h-6 w-6",
|
|
286
|
+
icon: "h-4 w-4",
|
|
287
|
+
label: "text-lg"
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
function CheckIcon(props) {
|
|
291
|
+
return _$ssr6(_tmpl$8, _$ssrAttribute3("class", _$escape6(props.class, true), false));
|
|
292
|
+
}
|
|
293
|
+
function IndeterminateIcon(props) {
|
|
294
|
+
return _$ssr6(_tmpl$25, _$ssrAttribute3("class", _$escape6(props.class, true), false));
|
|
295
|
+
}
|
|
296
|
+
function Checkbox(props) {
|
|
297
|
+
const defaultProps = {
|
|
298
|
+
size: "md"
|
|
299
|
+
};
|
|
300
|
+
const merged = solidMergeProps3(defaultProps, props);
|
|
301
|
+
const [local, headlessProps] = splitProps3(merged, ["size", "class", "children"]);
|
|
302
|
+
const size = () => sizeStyles4[local.size];
|
|
303
|
+
const getClassName = (renderProps) => {
|
|
304
|
+
const base = "inline-flex items-center gap-2 cursor-pointer";
|
|
305
|
+
const disabledClass = renderProps.isDisabled ? "cursor-not-allowed opacity-50" : "";
|
|
306
|
+
const custom = local.class || "";
|
|
307
|
+
return [base, disabledClass, custom].filter(Boolean).join(" ");
|
|
308
|
+
};
|
|
309
|
+
return _$createComponent6(HeadlessCheckbox, _$mergeProps3(headlessProps, {
|
|
310
|
+
"class": getClassName,
|
|
311
|
+
children: (renderProps) => {
|
|
312
|
+
const boxClasses = () => {
|
|
313
|
+
const base = "relative flex items-center justify-center rounded border-2 transition-all duration-200";
|
|
314
|
+
const sizeClass = size().box;
|
|
315
|
+
let colorClass;
|
|
316
|
+
if (renderProps.isDisabled) {
|
|
317
|
+
colorClass = "border-bg-300 bg-bg-200";
|
|
318
|
+
} else if (renderProps.isSelected || renderProps.isIndeterminate) {
|
|
319
|
+
colorClass = "border-accent bg-accent";
|
|
320
|
+
} else {
|
|
321
|
+
colorClass = "border-primary-600 bg-transparent hover:border-accent-300";
|
|
322
|
+
}
|
|
323
|
+
const focusClass = renderProps.isFocusVisible ? "ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400" : "";
|
|
324
|
+
const cursorClass = renderProps.isDisabled ? "cursor-not-allowed" : "cursor-pointer";
|
|
325
|
+
return [base, sizeClass, colorClass, focusClass, cursorClass].filter(Boolean).join(" ");
|
|
326
|
+
};
|
|
327
|
+
const iconClasses = () => {
|
|
328
|
+
const base = "text-white transition-opacity duration-200";
|
|
329
|
+
const sizeClass = size().icon;
|
|
330
|
+
const visibilityClass = renderProps.isSelected || renderProps.isIndeterminate ? "opacity-100" : "opacity-0";
|
|
331
|
+
return [base, sizeClass, visibilityClass].filter(Boolean).join(" ");
|
|
332
|
+
};
|
|
333
|
+
const labelClasses = () => {
|
|
334
|
+
const base = "text-primary-200";
|
|
335
|
+
const sizeClass = size().label;
|
|
336
|
+
const disabledClass = renderProps.isDisabled ? "opacity-50" : "";
|
|
337
|
+
return [base, sizeClass, disabledClass].filter(Boolean).join(" ");
|
|
338
|
+
};
|
|
339
|
+
return [_$ssr6(_tmpl$34, _$ssrAttribute3("class", _$escape6(boxClasses(), true), false), _$escape6(_$createComponent6(Show4, {
|
|
340
|
+
get when() {
|
|
341
|
+
return !renderProps.isIndeterminate;
|
|
342
|
+
},
|
|
343
|
+
get fallback() {
|
|
344
|
+
return _$createComponent6(IndeterminateIcon, {
|
|
345
|
+
get ["class"]() {
|
|
346
|
+
return iconClasses();
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
},
|
|
350
|
+
get children() {
|
|
351
|
+
return _$createComponent6(CheckIcon, {
|
|
352
|
+
get ["class"]() {
|
|
353
|
+
return iconClasses();
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
}))), _$createComponent6(Show4, {
|
|
358
|
+
get when() {
|
|
359
|
+
return local.children;
|
|
360
|
+
},
|
|
361
|
+
get children() {
|
|
362
|
+
return _$ssr6(_tmpl$34, _$ssrAttribute3("class", _$escape6(labelClasses(), true), false), _$escape6(local.children));
|
|
363
|
+
}
|
|
364
|
+
})];
|
|
365
|
+
}
|
|
366
|
+
}));
|
|
367
|
+
}
|
|
368
|
+
function CheckboxGroup(props) {
|
|
369
|
+
const [local, headlessProps] = splitProps3(props, ["class", "children", "label", "description", "errorMessage"]);
|
|
370
|
+
const getClassName = (renderProps) => {
|
|
371
|
+
const base = "flex flex-col gap-2";
|
|
372
|
+
const disabledClass = renderProps.isDisabled ? "opacity-50" : "";
|
|
373
|
+
const custom = local.class || "";
|
|
374
|
+
return [base, disabledClass, custom].filter(Boolean).join(" ");
|
|
375
|
+
};
|
|
376
|
+
const renderChildren = (renderProps) => [_$createComponent6(Show4, {
|
|
377
|
+
get when() {
|
|
378
|
+
return local.label;
|
|
379
|
+
},
|
|
380
|
+
get children() {
|
|
381
|
+
return _$ssr6(_tmpl$43, _$escape6(local.label));
|
|
382
|
+
}
|
|
383
|
+
}), _$ssr6(_tmpl$53, _$escape6(local.children)), _$createComponent6(Show4, {
|
|
384
|
+
get when() {
|
|
385
|
+
return local.description && !renderProps.isInvalid;
|
|
386
|
+
},
|
|
387
|
+
get children() {
|
|
388
|
+
return _$ssr6(_tmpl$62, _$escape6(local.description));
|
|
389
|
+
}
|
|
390
|
+
}), _$createComponent6(Show4, {
|
|
391
|
+
get when() {
|
|
392
|
+
return local.errorMessage && renderProps.isInvalid;
|
|
393
|
+
},
|
|
394
|
+
get children() {
|
|
395
|
+
return _$ssr6(_tmpl$72, _$escape6(local.errorMessage));
|
|
396
|
+
}
|
|
397
|
+
})];
|
|
398
|
+
return _$createComponent6(HeadlessCheckboxGroup, _$mergeProps3(headlessProps, {
|
|
399
|
+
"class": getClassName,
|
|
400
|
+
children: renderChildren
|
|
401
|
+
}));
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
// src/radio/index.tsx
|
|
405
|
+
import { ssrAttribute as _$ssrAttribute4 } from "solid-js/web";
|
|
406
|
+
import { mergeProps as _$mergeProps4 } from "solid-js/web";
|
|
407
|
+
import { createComponent as _$createComponent7 } from "solid-js/web";
|
|
408
|
+
import { ssr as _$ssr7 } from "solid-js/web";
|
|
409
|
+
import { escape as _$escape7 } from "solid-js/web";
|
|
410
|
+
import { Show as Show5, createContext, useContext, splitProps as splitProps4 } from "solid-js";
|
|
411
|
+
import { RadioGroup as HeadlessRadioGroup, Radio as HeadlessRadio } from "@proyecto-viviana/solidaria-components";
|
|
412
|
+
var _tmpl$9 = ['<span class="text-primary-200 font-medium mb-1">', "</span>"];
|
|
413
|
+
var _tmpl$26 = ['<span class="text-primary-400 text-sm">', "</span>"];
|
|
414
|
+
var _tmpl$35 = ['<span class="text-danger-400 text-sm">', "</span>"];
|
|
415
|
+
var _tmpl$44 = ["<span", "><span", "></span></span>"];
|
|
416
|
+
var _tmpl$54 = ["<span", ">", "</span>"];
|
|
417
|
+
var RadioSizeContext = createContext("md");
|
|
418
|
+
var sizeStyles5 = {
|
|
419
|
+
sm: {
|
|
420
|
+
circle: "h-4 w-4",
|
|
421
|
+
dot: "h-2 w-2",
|
|
422
|
+
label: "text-sm"
|
|
423
|
+
},
|
|
424
|
+
md: {
|
|
425
|
+
circle: "h-5 w-5",
|
|
426
|
+
dot: "h-2.5 w-2.5",
|
|
427
|
+
label: "text-base"
|
|
428
|
+
},
|
|
429
|
+
lg: {
|
|
430
|
+
circle: "h-6 w-6",
|
|
431
|
+
dot: "h-3 w-3",
|
|
432
|
+
label: "text-lg"
|
|
433
|
+
}
|
|
434
|
+
};
|
|
435
|
+
function RadioGroup(props) {
|
|
436
|
+
const [local, headlessProps] = splitProps4(props, ["size", "class", "label", "description", "errorMessage", "children"]);
|
|
437
|
+
const size = local.size ?? "md";
|
|
438
|
+
const customClass = local.class ?? "";
|
|
439
|
+
const getClassName = (renderProps) => {
|
|
440
|
+
const base = "flex gap-2";
|
|
441
|
+
const orientationClass = renderProps.orientation === "horizontal" ? "flex-row flex-wrap" : "flex-col";
|
|
442
|
+
const disabledClass = renderProps.isDisabled ? "opacity-50" : "";
|
|
443
|
+
return [base, orientationClass, disabledClass, customClass].filter(Boolean).join(" ");
|
|
444
|
+
};
|
|
445
|
+
const renderChildren = (renderProps) => [_$createComponent7(Show5, {
|
|
446
|
+
get when() {
|
|
447
|
+
return local.label;
|
|
448
|
+
},
|
|
449
|
+
get children() {
|
|
450
|
+
return _$ssr7(_tmpl$9, _$escape7(local.label));
|
|
451
|
+
}
|
|
452
|
+
}), typeof local.children === "function" ? local.children(renderProps) : local.children, _$createComponent7(Show5, {
|
|
453
|
+
get when() {
|
|
454
|
+
return local.description && !renderProps.isInvalid;
|
|
455
|
+
},
|
|
456
|
+
get children() {
|
|
457
|
+
return _$ssr7(_tmpl$26, _$escape7(local.description));
|
|
458
|
+
}
|
|
459
|
+
}), _$createComponent7(Show5, {
|
|
460
|
+
get when() {
|
|
461
|
+
return local.errorMessage && renderProps.isInvalid;
|
|
462
|
+
},
|
|
463
|
+
get children() {
|
|
464
|
+
return _$ssr7(_tmpl$35, _$escape7(local.errorMessage));
|
|
465
|
+
}
|
|
466
|
+
})];
|
|
467
|
+
return _$createComponent7(RadioSizeContext.Provider, {
|
|
468
|
+
value: size,
|
|
469
|
+
get children() {
|
|
470
|
+
return _$createComponent7(HeadlessRadioGroup, _$mergeProps4(headlessProps, {
|
|
471
|
+
"class": getClassName,
|
|
472
|
+
"data-size": size,
|
|
473
|
+
children: renderChildren
|
|
474
|
+
}));
|
|
475
|
+
}
|
|
476
|
+
});
|
|
477
|
+
}
|
|
478
|
+
function Radio(props) {
|
|
479
|
+
const sizeFromContext = useContext(RadioSizeContext);
|
|
480
|
+
const size = () => sizeStyles5[sizeFromContext];
|
|
481
|
+
const customClass = props.class ?? "";
|
|
482
|
+
const getClassName = (renderProps) => {
|
|
483
|
+
const base = "inline-flex items-center gap-2 cursor-pointer";
|
|
484
|
+
const disabledClass = renderProps.isDisabled ? "cursor-not-allowed opacity-50" : "";
|
|
485
|
+
return [base, disabledClass, customClass].filter(Boolean).join(" ");
|
|
486
|
+
};
|
|
487
|
+
const {
|
|
488
|
+
class: _,
|
|
489
|
+
children,
|
|
490
|
+
...headlessProps
|
|
491
|
+
} = props;
|
|
492
|
+
return _$createComponent7(HeadlessRadio, _$mergeProps4(headlessProps, {
|
|
493
|
+
"class": getClassName,
|
|
494
|
+
children: (renderProps) => {
|
|
495
|
+
const circleClasses = () => {
|
|
496
|
+
const base = "relative flex items-center justify-center rounded-full border-2 transition-all duration-200";
|
|
497
|
+
const sizeClass = size().circle;
|
|
498
|
+
let colorClass;
|
|
499
|
+
if (renderProps.isDisabled) {
|
|
500
|
+
colorClass = "border-bg-300 bg-bg-200";
|
|
501
|
+
} else if (renderProps.isSelected) {
|
|
502
|
+
colorClass = "border-accent bg-transparent";
|
|
503
|
+
} else {
|
|
504
|
+
colorClass = "border-primary-600 bg-transparent hover:border-accent-300";
|
|
505
|
+
}
|
|
506
|
+
const focusClass = renderProps.isFocusVisible ? "ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400" : "";
|
|
507
|
+
const cursorClass = renderProps.isDisabled ? "cursor-not-allowed" : "cursor-pointer";
|
|
508
|
+
return [base, sizeClass, colorClass, focusClass, cursorClass].filter(Boolean).join(" ");
|
|
509
|
+
};
|
|
510
|
+
const dotClasses = () => {
|
|
511
|
+
const base = "rounded-full bg-accent transition-all duration-200";
|
|
512
|
+
const sizeClass = size().dot;
|
|
513
|
+
const visibilityClass = renderProps.isSelected ? "scale-100 opacity-100" : "scale-0 opacity-0";
|
|
514
|
+
return [base, sizeClass, visibilityClass].filter(Boolean).join(" ");
|
|
515
|
+
};
|
|
516
|
+
const labelClasses = () => {
|
|
517
|
+
const base = "text-primary-200";
|
|
518
|
+
const sizeClass = size().label;
|
|
519
|
+
const disabledClass = renderProps.isDisabled ? "opacity-50" : "";
|
|
520
|
+
return [base, sizeClass, disabledClass].filter(Boolean).join(" ");
|
|
521
|
+
};
|
|
522
|
+
const resolvedChildren = typeof children === "function" ? children(renderProps) : children;
|
|
523
|
+
return [_$ssr7(_tmpl$44, _$ssrAttribute4("class", _$escape7(circleClasses(), true), false), _$ssrAttribute4("class", _$escape7(dotClasses(), true), false)), _$createComponent7(Show5, {
|
|
524
|
+
when: resolvedChildren,
|
|
525
|
+
get children() {
|
|
526
|
+
return _$ssr7(_tmpl$54, _$ssrAttribute4("class", _$escape7(labelClasses(), true), false), _$escape7(resolvedChildren));
|
|
527
|
+
}
|
|
528
|
+
})];
|
|
529
|
+
}
|
|
530
|
+
}));
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
// src/dialog/index.tsx
|
|
534
|
+
import { createComponent as _$createComponent8 } from "solid-js/web";
|
|
535
|
+
import { ssr as _$ssr9 } from "solid-js/web";
|
|
536
|
+
import { escape as _$escape9 } from "solid-js/web";
|
|
537
|
+
import { Show as Show6 } from "solid-js";
|
|
538
|
+
|
|
539
|
+
// src/custom/chip/index.tsx
|
|
540
|
+
import { ssr as _$ssr8 } from "solid-js/web";
|
|
541
|
+
import { escape as _$escape8 } from "solid-js/web";
|
|
542
|
+
var _tmpl$10 = ['<button class="', '">', "<span>", "</span></button>"];
|
|
543
|
+
var _tmpl$27 = ['<span class="mr-1.5">', "</span>"];
|
|
544
|
+
var variantStyles3 = {
|
|
545
|
+
primary: "bg-primary-700 text-primary-200 shadow-primary-chip",
|
|
546
|
+
secondary: "bg-primary-600 text-primary-100 hover:bg-primary-500",
|
|
547
|
+
accent: "bg-accent text-white",
|
|
548
|
+
outline: "bg-transparent border border-primary-500 text-primary-300"
|
|
549
|
+
};
|
|
550
|
+
function Chip(props) {
|
|
551
|
+
const variant = () => props.variant ?? "primary";
|
|
552
|
+
return _$ssr8(_tmpl$10, `flex justify-center items-center h-6 w-auto rounded-full px-4 py-1 font-medium text-sm tracking-wide transition-colors ${_$escape8(variantStyles3[variant()], true)} ${_$escape8(props.class, true) ?? ""}`, props.icon && _$ssr8(_tmpl$27, _$escape8(props.icon)), _$escape8(props.text));
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
// src/dialog/index.tsx
|
|
556
|
+
var _tmpl$11 = ['<span class="text-base font-normal text-primary-300">', "</span>"];
|
|
557
|
+
var _tmpl$28 = ['<div class="flex flex-1 flex-row items-end justify-center gap-5 py-5">', "", "</div>"];
|
|
558
|
+
var _tmpl$36 = ['<div class="relative bottom-4 right-4 w-full"><div class="flex flex-row justify-end gap-2 pr-4">', "</div></div>"];
|
|
559
|
+
var _tmpl$45 = ['<div class="', '"><span class="relative left-8 top-4 bg-gradient-to-b from-primary-100 to-primary-500 bg-clip-text text-4xl font-extrabold text-transparent">', '</span><div class="flex h-[50px] flex-col justify-end rounded-t-[26px] bg-primary-800"><div class="flex h-[40px] flex-col justify-end rounded-t-[30px] bg-primary-600"><div class="flex h-[20px] items-center justify-end rounded-t-[100px] bg-primary-700 pr-4">', '</div></div></div><div class="mt-1 flex min-h-[200px] flex-col rounded-b-[26px] rounded-t-lg border-b border-accent-500 bg-bg-300"><div class="flex flex-1 flex-col p-4"><div class="text-lg text-gray-100">', "</div>", "</div></div>", "</div>"];
|
|
560
|
+
function Dialog(props) {
|
|
561
|
+
return _$ssr9(_tmpl$45, `flex flex-col w-full max-w-[540px] ${_$escape9(props.class, true) ?? ""}`, _$escape9(props.title), _$escape9(_$createComponent8(Show6, {
|
|
562
|
+
get when() {
|
|
563
|
+
return props.subtitle;
|
|
564
|
+
},
|
|
565
|
+
get children() {
|
|
566
|
+
return _$ssr9(_tmpl$11, _$escape9(props.subtitle));
|
|
567
|
+
}
|
|
568
|
+
})), _$escape9(props.children), _$escape9(_$createComponent8(Show6, {
|
|
569
|
+
get when() {
|
|
570
|
+
return props.primaryAction || props.secondaryAction;
|
|
571
|
+
},
|
|
572
|
+
get children() {
|
|
573
|
+
return _$ssr9(_tmpl$28, _$escape9(_$createComponent8(Show6, {
|
|
574
|
+
get when() {
|
|
575
|
+
return props.secondaryAction;
|
|
576
|
+
},
|
|
577
|
+
get children() {
|
|
578
|
+
return _$createComponent8(Button, {
|
|
579
|
+
variant: "primary",
|
|
580
|
+
buttonStyle: "outline",
|
|
581
|
+
get onPress() {
|
|
582
|
+
return props.secondaryAction.onClick;
|
|
583
|
+
},
|
|
584
|
+
get children() {
|
|
585
|
+
return props.secondaryAction.label;
|
|
586
|
+
}
|
|
587
|
+
});
|
|
588
|
+
}
|
|
589
|
+
})), _$escape9(_$createComponent8(Show6, {
|
|
590
|
+
get when() {
|
|
591
|
+
return props.primaryAction;
|
|
592
|
+
},
|
|
593
|
+
get children() {
|
|
594
|
+
return _$createComponent8(Button, {
|
|
595
|
+
variant: "primary",
|
|
596
|
+
get onPress() {
|
|
597
|
+
return props.primaryAction.onClick;
|
|
598
|
+
},
|
|
599
|
+
get children() {
|
|
600
|
+
return props.primaryAction.label;
|
|
601
|
+
}
|
|
602
|
+
});
|
|
603
|
+
}
|
|
604
|
+
})));
|
|
605
|
+
}
|
|
606
|
+
})), _$escape9(_$createComponent8(Show6, {
|
|
607
|
+
get when() {
|
|
608
|
+
return props.tags && props.tags.length > 0;
|
|
609
|
+
},
|
|
610
|
+
get children() {
|
|
611
|
+
return _$ssr9(_tmpl$36, _$escape9(props.tags.map((tag) => _$createComponent8(Chip, {
|
|
612
|
+
variant: "primary",
|
|
613
|
+
text: tag
|
|
614
|
+
}))));
|
|
615
|
+
}
|
|
616
|
+
})));
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
// src/icon/index.tsx
|
|
620
|
+
import { ssr as _$ssr11 } from "solid-js/web";
|
|
621
|
+
import { createComponent as _$createComponent9 } from "solid-js/web";
|
|
622
|
+
import { escape as _$escape11 } from "solid-js/web";
|
|
623
|
+
|
|
624
|
+
// src/icon/icons/GitHubIcon.tsx
|
|
625
|
+
import { ssr as _$ssr10 } from "solid-js/web";
|
|
626
|
+
import { ssrAttribute as _$ssrAttribute5 } from "solid-js/web";
|
|
627
|
+
import { escape as _$escape10 } from "solid-js/web";
|
|
628
|
+
var _tmpl$12 = ['<svg viewBox="0 0 24 24"', ' aria-hidden="true"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path></svg>'];
|
|
629
|
+
function GitHubIcon(props) {
|
|
630
|
+
return _$ssr10(_tmpl$12, _$ssrAttribute5("width", _$escape10(props.size, true), false) + _$ssrAttribute5("height", _$escape10(props.size, true), false) + _$ssrAttribute5("fill", _$escape10(props.color, true), false));
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
// src/icon/index.tsx
|
|
634
|
+
var _tmpl$13 = ['<div class="', '">', '<div class="vui-icon__main">', "</div></div>"];
|
|
635
|
+
var _tmpl$29 = ['<div class="vui-icon__shadow">', "</div>"];
|
|
636
|
+
function Icon(props) {
|
|
637
|
+
const size = () => props.size ?? 24;
|
|
638
|
+
const color = () => props.color ?? "var(--color-primary-500)";
|
|
639
|
+
const IconComponent = props.icon;
|
|
640
|
+
return _$ssr11(_tmpl$13, `vui-icon ${props.withShadow ? "vui-icon--with-shadow" : ""} ${_$escape11(props.class, true) ?? ""}`, props.withShadow && _$ssr11(_tmpl$29, _$escape11(_$createComponent9(IconComponent, {
|
|
641
|
+
get size() {
|
|
642
|
+
return size();
|
|
643
|
+
},
|
|
644
|
+
color: "var(--color-accent)"
|
|
645
|
+
}))), _$escape11(_$createComponent9(IconComponent, {
|
|
646
|
+
get size() {
|
|
647
|
+
return size();
|
|
648
|
+
},
|
|
649
|
+
get color() {
|
|
650
|
+
return color();
|
|
651
|
+
}
|
|
652
|
+
})));
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
// src/tooltip/index.tsx
|
|
656
|
+
import { ssr as _$ssr12 } from "solid-js/web";
|
|
657
|
+
import { escape as _$escape12 } from "solid-js/web";
|
|
658
|
+
var _tmpl$14 = ['<div class="', '"><div class="vui-tooltip__trigger">', '</div><div class="', '"><span>', "</span></div></div>"];
|
|
659
|
+
function Tooltip(props) {
|
|
660
|
+
const position = () => props.position ?? "bottom";
|
|
661
|
+
return _$ssr12(_tmpl$14, `vui-tooltip ${_$escape12(props.class, true) ?? ""}`, _$escape12(props.children), `vui-tooltip__content vui-tooltip__content--${_$escape12(position(), true)}`, _$escape12(props.label));
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
// src/textfield/index.tsx
|
|
665
|
+
import { ssrElement as _$ssrElement } from "solid-js/web";
|
|
666
|
+
import { mergeProps as _$mergeProps5 } from "solid-js/web";
|
|
667
|
+
import { createComponent as _$createComponent10 } from "solid-js/web";
|
|
668
|
+
import { ssr as _$ssr13 } from "solid-js/web";
|
|
669
|
+
import { ssrAttribute as _$ssrAttribute6 } from "solid-js/web";
|
|
670
|
+
import { escape as _$escape13 } from "solid-js/web";
|
|
671
|
+
import { splitProps as splitProps5, mergeProps as solidMergeProps4, Show as Show7 } from "solid-js";
|
|
672
|
+
import { createTextField, createFocusRing } from "@proyecto-viviana/solidaria";
|
|
673
|
+
|
|
674
|
+
// ../solid-stately/dist/index.js
|
|
675
|
+
import { createSignal as createSignal2, createUniqueId, untrack } from "solid-js";
|
|
676
|
+
import { isServer } from "solid-js/web";
|
|
677
|
+
function access(value) {
|
|
678
|
+
return typeof value === "function" ? value() : value;
|
|
679
|
+
}
|
|
680
|
+
function createTextFieldState(props = {}) {
|
|
681
|
+
const getProps = () => access(props);
|
|
682
|
+
const initialProps = getProps();
|
|
683
|
+
const initialValue = initialProps.value ?? initialProps.defaultValue ?? "";
|
|
684
|
+
const [internalValue, setInternalValue] = createSignal2(initialValue);
|
|
685
|
+
const isControlled = () => getProps().value !== void 0;
|
|
686
|
+
const value = () => {
|
|
687
|
+
const p = getProps();
|
|
688
|
+
return isControlled() ? p.value ?? "" : internalValue();
|
|
689
|
+
};
|
|
690
|
+
function setValue(newValue) {
|
|
691
|
+
var _a;
|
|
692
|
+
const p = getProps();
|
|
693
|
+
if (!isControlled()) {
|
|
694
|
+
setInternalValue(newValue);
|
|
695
|
+
}
|
|
696
|
+
(_a = p.onChange) == null ? void 0 : _a.call(p, newValue);
|
|
697
|
+
}
|
|
698
|
+
return {
|
|
699
|
+
value,
|
|
700
|
+
setValue
|
|
701
|
+
};
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
// src/textfield/index.tsx
|
|
705
|
+
var _tmpl$15 = '<span class="text-danger-400 ml-0.5">*</span>';
|
|
706
|
+
var _tmpl$210 = ["<div", ">", "", "", "", "</div>"];
|
|
707
|
+
var sizeStyles6 = {
|
|
708
|
+
sm: {
|
|
709
|
+
input: "h-8 px-2 text-sm",
|
|
710
|
+
label: "text-sm",
|
|
711
|
+
description: "text-xs"
|
|
712
|
+
},
|
|
713
|
+
md: {
|
|
714
|
+
input: "h-10 px-3 text-base",
|
|
715
|
+
label: "text-sm",
|
|
716
|
+
description: "text-sm"
|
|
717
|
+
},
|
|
718
|
+
lg: {
|
|
719
|
+
input: "h-12 px-4 text-lg",
|
|
720
|
+
label: "text-base",
|
|
721
|
+
description: "text-sm"
|
|
722
|
+
}
|
|
723
|
+
};
|
|
724
|
+
function TextField(props) {
|
|
725
|
+
const defaultProps = {
|
|
726
|
+
size: "md",
|
|
727
|
+
variant: "outline"
|
|
728
|
+
};
|
|
729
|
+
const merged = solidMergeProps4(defaultProps, props);
|
|
730
|
+
const [local, ariaProps] = splitProps5(merged, ["size", "variant", "class", "label", "description", "errorMessage"]);
|
|
731
|
+
const size = () => sizeStyles6[local.size];
|
|
732
|
+
const state = createTextFieldState(() => ({
|
|
733
|
+
value: ariaProps.value,
|
|
734
|
+
defaultValue: ariaProps.defaultValue,
|
|
735
|
+
onChange: ariaProps.onChange
|
|
736
|
+
}));
|
|
737
|
+
const textFieldAria = createTextField(() => ({
|
|
738
|
+
...ariaProps,
|
|
739
|
+
value: state.value(),
|
|
740
|
+
onChange: state.setValue
|
|
741
|
+
}));
|
|
742
|
+
const {
|
|
743
|
+
isFocused,
|
|
744
|
+
isFocusVisible,
|
|
745
|
+
focusProps
|
|
746
|
+
} = createFocusRing();
|
|
747
|
+
const containerClasses = () => {
|
|
748
|
+
const base = "flex flex-col";
|
|
749
|
+
const disabledClass = ariaProps.isDisabled ? "opacity-60" : "";
|
|
750
|
+
const custom = local.class || "";
|
|
751
|
+
return [base, disabledClass, custom].filter(Boolean).join(" ");
|
|
752
|
+
};
|
|
753
|
+
const inputClasses = () => {
|
|
754
|
+
const base = "w-full rounded-md transition-all duration-200 outline-none";
|
|
755
|
+
const sizeClass = size().input;
|
|
756
|
+
let variantClass;
|
|
757
|
+
if (local.variant === "filled") {
|
|
758
|
+
variantClass = "bg-bg-200 border border-transparent";
|
|
759
|
+
} else {
|
|
760
|
+
variantClass = "bg-transparent border border-bg-400";
|
|
761
|
+
}
|
|
762
|
+
let stateClass;
|
|
763
|
+
if (ariaProps.isDisabled) {
|
|
764
|
+
stateClass = "bg-bg-200 text-primary-500 cursor-not-allowed";
|
|
765
|
+
} else if (textFieldAria.isInvalid) {
|
|
766
|
+
stateClass = "border-danger-500 focus:border-danger-400 focus:ring-2 focus:ring-danger-400/20";
|
|
767
|
+
} else {
|
|
768
|
+
stateClass = "text-primary-100 placeholder:text-primary-500 focus:border-accent focus:ring-2 focus:ring-accent/20";
|
|
769
|
+
}
|
|
770
|
+
const hoverClass = ariaProps.isDisabled ? "" : "hover:border-accent-300";
|
|
771
|
+
return [base, sizeClass, variantClass, stateClass, hoverClass].filter(Boolean).join(" ");
|
|
772
|
+
};
|
|
773
|
+
const labelClasses = () => {
|
|
774
|
+
const base = "block font-medium text-primary-200 mb-1";
|
|
775
|
+
const sizeClass = size().label;
|
|
776
|
+
return [base, sizeClass].filter(Boolean).join(" ");
|
|
777
|
+
};
|
|
778
|
+
const descriptionClasses = () => {
|
|
779
|
+
const base = "mt-1 text-primary-400";
|
|
780
|
+
const sizeClass = size().description;
|
|
781
|
+
return [base, sizeClass].filter(Boolean).join(" ");
|
|
782
|
+
};
|
|
783
|
+
const errorClasses = () => {
|
|
784
|
+
const base = "mt-1 text-danger-400";
|
|
785
|
+
const sizeClass = size().description;
|
|
786
|
+
return [base, sizeClass].filter(Boolean).join(" ");
|
|
787
|
+
};
|
|
788
|
+
const cleanLabelProps = () => {
|
|
789
|
+
const {
|
|
790
|
+
ref: _ref,
|
|
791
|
+
...rest
|
|
792
|
+
} = textFieldAria.labelProps;
|
|
793
|
+
return rest;
|
|
794
|
+
};
|
|
795
|
+
const cleanInputProps = () => {
|
|
796
|
+
const {
|
|
797
|
+
ref: _ref1,
|
|
798
|
+
...rest
|
|
799
|
+
} = textFieldAria.inputProps;
|
|
800
|
+
const {
|
|
801
|
+
ref: _ref2,
|
|
802
|
+
...focusRest
|
|
803
|
+
} = focusProps;
|
|
804
|
+
return {
|
|
805
|
+
...rest,
|
|
806
|
+
...focusRest
|
|
807
|
+
};
|
|
808
|
+
};
|
|
809
|
+
const cleanDescriptionProps = () => {
|
|
810
|
+
const {
|
|
811
|
+
ref: _ref,
|
|
812
|
+
...rest
|
|
813
|
+
} = textFieldAria.descriptionProps;
|
|
814
|
+
return rest;
|
|
815
|
+
};
|
|
816
|
+
const cleanErrorMessageProps = () => {
|
|
817
|
+
const {
|
|
818
|
+
ref: _ref,
|
|
819
|
+
...rest
|
|
820
|
+
} = textFieldAria.errorMessageProps;
|
|
821
|
+
return rest;
|
|
822
|
+
};
|
|
823
|
+
return _$ssr13(_tmpl$210, _$ssrAttribute6("class", _$escape13(containerClasses(), true), false) + _$ssrAttribute6("data-disabled", _$escape13(ariaProps.isDisabled, true) || _$escape13(void 0, true), false) + _$ssrAttribute6("data-invalid", _$escape13(textFieldAria.isInvalid, true) || _$escape13(void 0, true), false) + _$ssrAttribute6("data-readonly", _$escape13(ariaProps.isReadOnly, true) || _$escape13(void 0, true), false) + _$ssrAttribute6("data-required", _$escape13(ariaProps.isRequired, true) || _$escape13(void 0, true), false) + _$ssrAttribute6("data-focused", _$escape13(isFocused(), true) || _$escape13(void 0, true), false) + _$ssrAttribute6("data-focus-visible", _$escape13(isFocusVisible(), true) || _$escape13(void 0, true), false), _$escape13(_$createComponent10(Show7, {
|
|
824
|
+
get when() {
|
|
825
|
+
return local.label;
|
|
826
|
+
},
|
|
827
|
+
get children() {
|
|
828
|
+
return _$ssrElement("label", _$mergeProps5(cleanLabelProps, {
|
|
829
|
+
get ["class"]() {
|
|
830
|
+
return labelClasses();
|
|
831
|
+
}
|
|
832
|
+
}), [_$escape13(local.label), _$escape13(_$createComponent10(Show7, {
|
|
833
|
+
get when() {
|
|
834
|
+
return ariaProps.isRequired;
|
|
835
|
+
},
|
|
836
|
+
get children() {
|
|
837
|
+
return _$ssr13(_tmpl$15);
|
|
838
|
+
}
|
|
839
|
+
}))], false);
|
|
840
|
+
}
|
|
841
|
+
})), _$ssrElement("input", _$mergeProps5(cleanInputProps, {
|
|
842
|
+
get ["class"]() {
|
|
843
|
+
return inputClasses();
|
|
844
|
+
}
|
|
845
|
+
}), void 0, false), _$escape13(_$createComponent10(Show7, {
|
|
846
|
+
get when() {
|
|
847
|
+
return local.description && !textFieldAria.isInvalid;
|
|
848
|
+
},
|
|
849
|
+
get children() {
|
|
850
|
+
return _$ssrElement("p", _$mergeProps5(cleanDescriptionProps, {
|
|
851
|
+
get ["class"]() {
|
|
852
|
+
return descriptionClasses();
|
|
853
|
+
}
|
|
854
|
+
}), _$escape13(local.description), false);
|
|
855
|
+
}
|
|
856
|
+
})), _$escape13(_$createComponent10(Show7, {
|
|
857
|
+
get when() {
|
|
858
|
+
return local.errorMessage && textFieldAria.isInvalid;
|
|
859
|
+
},
|
|
860
|
+
get children() {
|
|
861
|
+
return _$ssrElement("p", _$mergeProps5(cleanErrorMessageProps, {
|
|
862
|
+
get ["class"]() {
|
|
863
|
+
return errorClasses();
|
|
864
|
+
}
|
|
865
|
+
}), _$escape13(local.errorMessage), false);
|
|
866
|
+
}
|
|
867
|
+
})));
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
// src/link/index.tsx
|
|
871
|
+
import { createComponent as _$createComponent11 } from "solid-js/web";
|
|
872
|
+
import { mergeProps as _$mergeProps6 } from "solid-js/web";
|
|
873
|
+
import { splitProps as splitProps6 } from "solid-js";
|
|
874
|
+
import { Link as HeadlessLink } from "@proyecto-viviana/solidaria-components";
|
|
875
|
+
var variantStyles4 = {
|
|
876
|
+
primary: "text-accent hover:text-accent-300",
|
|
877
|
+
secondary: "text-primary-300 hover:text-primary-200",
|
|
878
|
+
subtle: "text-primary-400 hover:text-primary-300"
|
|
879
|
+
};
|
|
880
|
+
function Link(props) {
|
|
881
|
+
const [local, headlessProps] = splitProps6(props, ["variant", "isStandalone", "isQuiet", "class", "children"]);
|
|
882
|
+
const variant = local.variant ?? "primary";
|
|
883
|
+
const customClass = local.class ?? "";
|
|
884
|
+
const getClassName = (renderProps) => {
|
|
885
|
+
const base = "transition-colors duration-200 cursor-pointer rounded-sm outline-none";
|
|
886
|
+
const variantClass = variantStyles4[variant];
|
|
887
|
+
let underlineClass;
|
|
888
|
+
if (local.isStandalone && local.isQuiet) {
|
|
889
|
+
underlineClass = renderProps.isHovered || renderProps.isFocusVisible ? "underline" : "no-underline";
|
|
890
|
+
} else {
|
|
891
|
+
underlineClass = "underline";
|
|
892
|
+
}
|
|
893
|
+
const weightClass = local.isStandalone ? "font-medium" : "";
|
|
894
|
+
const focusClass = renderProps.isFocusVisible ? "ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400" : "";
|
|
895
|
+
const disabledClass = renderProps.isDisabled ? "opacity-50 cursor-not-allowed" : "";
|
|
896
|
+
const pressedClass = renderProps.isPressed ? "opacity-80" : "";
|
|
897
|
+
return [base, variantClass, underlineClass, weightClass, focusClass, disabledClass, pressedClass, customClass].filter(Boolean).join(" ");
|
|
898
|
+
};
|
|
899
|
+
return _$createComponent11(HeadlessLink, _$mergeProps6(headlessProps, {
|
|
900
|
+
"class": getClassName,
|
|
901
|
+
get children() {
|
|
902
|
+
return local.children;
|
|
903
|
+
}
|
|
904
|
+
}));
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
// src/progress-bar/index.tsx
|
|
908
|
+
import { ssrElement as _$ssrElement2 } from "solid-js/web";
|
|
909
|
+
import { mergeProps as _$mergeProps7 } from "solid-js/web";
|
|
910
|
+
import { ssrStyleProperty as _$ssrStyleProperty } from "solid-js/web";
|
|
911
|
+
import { createComponent as _$createComponent12 } from "solid-js/web";
|
|
912
|
+
import { ssr as _$ssr14 } from "solid-js/web";
|
|
913
|
+
import { escape as _$escape14 } from "solid-js/web";
|
|
914
|
+
import { splitProps as splitProps7, Show as Show8, createMemo } from "solid-js";
|
|
915
|
+
import { createProgressBar } from "@proyecto-viviana/solidaria";
|
|
916
|
+
var _tmpl$16 = ['<span class="text-primary-200 font-medium">', "</span>"];
|
|
917
|
+
var _tmpl$211 = ['<span class="text-primary-300">', "</span>"];
|
|
918
|
+
var _tmpl$37 = ['<div class="', '">', "", "</div>"];
|
|
919
|
+
var _tmpl$46 = ['<div class="', '"><div class="', '" style="', '"></div></div>'];
|
|
920
|
+
var sizeStyles7 = {
|
|
921
|
+
sm: {
|
|
922
|
+
track: "h-1",
|
|
923
|
+
text: "text-xs"
|
|
924
|
+
},
|
|
925
|
+
md: {
|
|
926
|
+
track: "h-2",
|
|
927
|
+
text: "text-sm"
|
|
928
|
+
},
|
|
929
|
+
lg: {
|
|
930
|
+
track: "h-3",
|
|
931
|
+
text: "text-base"
|
|
932
|
+
}
|
|
933
|
+
};
|
|
934
|
+
var variantStyles5 = {
|
|
935
|
+
primary: "bg-primary-500",
|
|
936
|
+
accent: "bg-accent",
|
|
937
|
+
success: "bg-green-500",
|
|
938
|
+
warning: "bg-yellow-500",
|
|
939
|
+
danger: "bg-red-500"
|
|
940
|
+
};
|
|
941
|
+
function clamp(value, min, max) {
|
|
942
|
+
return Math.min(Math.max(value, min), max);
|
|
943
|
+
}
|
|
944
|
+
function ProgressBar(props) {
|
|
945
|
+
const [local, ariaProps] = splitProps7(props, ["size", "variant", "label", "showValueLabel", "class"]);
|
|
946
|
+
const size = () => local.size ?? "md";
|
|
947
|
+
const variant = () => local.variant ?? "primary";
|
|
948
|
+
const isIndeterminate = () => ariaProps.isIndeterminate ?? false;
|
|
949
|
+
const showValueLabel = () => local.showValueLabel ?? !isIndeterminate();
|
|
950
|
+
const progressAria = createProgressBar({
|
|
951
|
+
get value() {
|
|
952
|
+
return ariaProps.value;
|
|
953
|
+
},
|
|
954
|
+
get minValue() {
|
|
955
|
+
return ariaProps.minValue;
|
|
956
|
+
},
|
|
957
|
+
get maxValue() {
|
|
958
|
+
return ariaProps.maxValue;
|
|
959
|
+
},
|
|
960
|
+
get valueLabel() {
|
|
961
|
+
return ariaProps.valueLabel;
|
|
962
|
+
},
|
|
963
|
+
get isIndeterminate() {
|
|
964
|
+
return ariaProps.isIndeterminate;
|
|
965
|
+
},
|
|
966
|
+
get label() {
|
|
967
|
+
return local.label;
|
|
968
|
+
},
|
|
969
|
+
get "aria-label"() {
|
|
970
|
+
return ariaProps["aria-label"];
|
|
971
|
+
}
|
|
972
|
+
});
|
|
973
|
+
const percentage = createMemo(() => {
|
|
974
|
+
if (isIndeterminate()) {
|
|
975
|
+
return void 0;
|
|
976
|
+
}
|
|
977
|
+
const value = ariaProps.value ?? 0;
|
|
978
|
+
const minValue = ariaProps.minValue ?? 0;
|
|
979
|
+
const maxValue = ariaProps.maxValue ?? 100;
|
|
980
|
+
const clampedValue = clamp(value, minValue, maxValue);
|
|
981
|
+
return (clampedValue - minValue) / (maxValue - minValue) * 100;
|
|
982
|
+
});
|
|
983
|
+
const valueText = () => progressAria.progressBarProps["aria-valuetext"];
|
|
984
|
+
const sizeConfig = () => sizeStyles7[size()];
|
|
985
|
+
return _$ssrElement2("div", _$mergeProps7(() => progressAria.progressBarProps, {
|
|
986
|
+
get ["class"]() {
|
|
987
|
+
return `w-full ${local.class ?? ""}`;
|
|
988
|
+
}
|
|
989
|
+
}), [_$escape14(_$createComponent12(Show8, {
|
|
990
|
+
get when() {
|
|
991
|
+
return local.label || showValueLabel();
|
|
992
|
+
},
|
|
993
|
+
get children() {
|
|
994
|
+
return _$ssr14(_tmpl$37, `flex justify-between items-center mb-1 ${_$escape14(sizeConfig().text, true)}`, _$escape14(_$createComponent12(Show8, {
|
|
995
|
+
get when() {
|
|
996
|
+
return local.label;
|
|
997
|
+
},
|
|
998
|
+
get children() {
|
|
999
|
+
return _$ssr14(_tmpl$16, _$escape14(local.label));
|
|
1000
|
+
}
|
|
1001
|
+
})), _$escape14(_$createComponent12(Show8, {
|
|
1002
|
+
get when() {
|
|
1003
|
+
return showValueLabel() && !isIndeterminate();
|
|
1004
|
+
},
|
|
1005
|
+
get children() {
|
|
1006
|
+
return _$ssr14(_tmpl$211, _$escape14(valueText()));
|
|
1007
|
+
}
|
|
1008
|
+
})));
|
|
1009
|
+
}
|
|
1010
|
+
})), _$ssr14(_tmpl$46, `w-full ${_$escape14(sizeConfig().track, true)} bg-bg-300 rounded-full overflow-hidden`, `h-full rounded-full transition-all duration-300 ${_$escape14(variantStyles5[variant()], true)} ${isIndeterminate() ? "animate-progress-indeterminate" : ""}`, _$ssrStyleProperty("width:", isIndeterminate() ? "30%" : `${_$escape14(percentage(), true)}%`))], false);
|
|
1011
|
+
}
|
|
1012
|
+
|
|
1013
|
+
// src/separator/index.tsx
|
|
1014
|
+
import { createComponent as _$createComponent13 } from "solid-js/web";
|
|
1015
|
+
import { ssrElement as _$ssrElement3 } from "solid-js/web";
|
|
1016
|
+
import { mergeProps as _$mergeProps8 } from "solid-js/web";
|
|
1017
|
+
import { splitProps as splitProps8, createMemo as createMemo2, Show as Show9 } from "solid-js";
|
|
1018
|
+
import { createSeparator } from "@proyecto-viviana/solidaria";
|
|
1019
|
+
var variantStyles6 = {
|
|
1020
|
+
default: "bg-bg-100",
|
|
1021
|
+
subtle: "bg-bg-200",
|
|
1022
|
+
strong: "bg-primary-600"
|
|
1023
|
+
};
|
|
1024
|
+
var horizontalSizeStyles = {
|
|
1025
|
+
sm: "h-px",
|
|
1026
|
+
md: "h-0.5",
|
|
1027
|
+
lg: "h-1"
|
|
1028
|
+
};
|
|
1029
|
+
var verticalSizeStyles = {
|
|
1030
|
+
sm: "w-px",
|
|
1031
|
+
md: "w-0.5",
|
|
1032
|
+
lg: "w-1"
|
|
1033
|
+
};
|
|
1034
|
+
function Separator(props) {
|
|
1035
|
+
const [local, ariaProps] = splitProps8(props, ["orientation", "variant", "size", "class"]);
|
|
1036
|
+
const orientation = () => local.orientation ?? "horizontal";
|
|
1037
|
+
const variant = () => local.variant ?? "default";
|
|
1038
|
+
const size = () => local.size ?? "md";
|
|
1039
|
+
const elementType = createMemo2(() => {
|
|
1040
|
+
if (orientation() === "vertical") {
|
|
1041
|
+
return "div";
|
|
1042
|
+
}
|
|
1043
|
+
return "hr";
|
|
1044
|
+
});
|
|
1045
|
+
const separatorAria = createSeparator({
|
|
1046
|
+
get orientation() {
|
|
1047
|
+
return orientation();
|
|
1048
|
+
},
|
|
1049
|
+
get elementType() {
|
|
1050
|
+
return elementType();
|
|
1051
|
+
},
|
|
1052
|
+
get "aria-label"() {
|
|
1053
|
+
return ariaProps["aria-label"];
|
|
1054
|
+
}
|
|
1055
|
+
});
|
|
1056
|
+
const className = createMemo2(() => {
|
|
1057
|
+
const isVertical = orientation() === "vertical";
|
|
1058
|
+
const sizeStyles8 = isVertical ? verticalSizeStyles : horizontalSizeStyles;
|
|
1059
|
+
const base = [
|
|
1060
|
+
variantStyles6[variant()],
|
|
1061
|
+
sizeStyles8[size()],
|
|
1062
|
+
isVertical ? "h-full self-stretch" : "w-full",
|
|
1063
|
+
"border-0",
|
|
1064
|
+
// Reset hr default border
|
|
1065
|
+
local.class ?? ""
|
|
1066
|
+
];
|
|
1067
|
+
return base.filter(Boolean).join(" ");
|
|
1068
|
+
});
|
|
1069
|
+
const getAriaProps = () => {
|
|
1070
|
+
const {
|
|
1071
|
+
ref: _,
|
|
1072
|
+
...props2
|
|
1073
|
+
} = separatorAria.separatorProps;
|
|
1074
|
+
return props2;
|
|
1075
|
+
};
|
|
1076
|
+
return _$createComponent13(Show9, {
|
|
1077
|
+
get when() {
|
|
1078
|
+
return orientation() === "vertical";
|
|
1079
|
+
},
|
|
1080
|
+
get fallback() {
|
|
1081
|
+
return _$ssrElement3("hr", _$mergeProps8(getAriaProps, {
|
|
1082
|
+
get ["class"]() {
|
|
1083
|
+
return className();
|
|
1084
|
+
}
|
|
1085
|
+
}), void 0, false);
|
|
1086
|
+
},
|
|
1087
|
+
get children() {
|
|
1088
|
+
return _$ssrElement3("div", _$mergeProps8(getAriaProps, {
|
|
1089
|
+
get ["class"]() {
|
|
1090
|
+
return className();
|
|
1091
|
+
}
|
|
1092
|
+
}), void 0, false);
|
|
1093
|
+
}
|
|
1094
|
+
});
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
// src/custom/nav-header/index.tsx
|
|
1098
|
+
import { createComponent as _$createComponent14 } from "solid-js/web";
|
|
1099
|
+
import { ssr as _$ssr15 } from "solid-js/web";
|
|
1100
|
+
import { ssrAttribute as _$ssrAttribute7 } from "solid-js/web";
|
|
1101
|
+
import { escape as _$escape15 } from "solid-js/web";
|
|
1102
|
+
import { Show as Show10 } from "solid-js";
|
|
1103
|
+
var _tmpl$17 = ["<img", ' class="h-[42px] w-auto">'];
|
|
1104
|
+
var _tmpl$212 = ['<button class="md:hidden flex items-center justify-center">', "</button>"];
|
|
1105
|
+
var _tmpl$38 = ['<nav class="', '"><div class="pl-1 md:pl-8 flex items-center">', '</div><div class="flex-1 flex justify-end items-center pr-1 md:pr-8">', "", "</div></nav>"];
|
|
1106
|
+
var _tmpl$47 = ['<span class="text-[34px] font-light text-primary-700 flex items-center">', "</span>"];
|
|
1107
|
+
function NavHeader(props) {
|
|
1108
|
+
return _$ssr15(_tmpl$38, `flex items-center bg-bg-400 h-[70px] border-b-4 border-accent-500 ${_$escape15(props.class, true) ?? ""}`, _$escape15(_$createComponent14(Show10, {
|
|
1109
|
+
get when() {
|
|
1110
|
+
return props.logo;
|
|
1111
|
+
},
|
|
1112
|
+
get fallback() {
|
|
1113
|
+
return _$createComponent14(Show10, {
|
|
1114
|
+
get when() {
|
|
1115
|
+
return props.logoText;
|
|
1116
|
+
},
|
|
1117
|
+
get children() {
|
|
1118
|
+
return _$ssr15(_tmpl$47, _$escape15(props.logoText));
|
|
1119
|
+
}
|
|
1120
|
+
});
|
|
1121
|
+
},
|
|
1122
|
+
get children() {
|
|
1123
|
+
return _$ssr15(_tmpl$17, _$ssrAttribute7("src", _$escape15(props.logo, true), false) + _$ssrAttribute7("alt", _$escape15(props.logoAlt, true) ?? "Logo", false));
|
|
1124
|
+
}
|
|
1125
|
+
})), _$escape15(props.children), _$escape15(_$createComponent14(Show10, {
|
|
1126
|
+
get when() {
|
|
1127
|
+
return props.menuIcon;
|
|
1128
|
+
},
|
|
1129
|
+
get children() {
|
|
1130
|
+
return _$ssr15(_tmpl$212, _$escape15(props.menuIcon));
|
|
1131
|
+
}
|
|
1132
|
+
})));
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
// src/custom/lateral-nav/index.tsx
|
|
1136
|
+
import { createComponent as _$createComponent15 } from "solid-js/web";
|
|
1137
|
+
import { ssrAttribute as _$ssrAttribute8 } from "solid-js/web";
|
|
1138
|
+
import { ssr as _$ssr16 } from "solid-js/web";
|
|
1139
|
+
import { escape as _$escape16 } from "solid-js/web";
|
|
1140
|
+
import { Show as Show11, For } from "solid-js";
|
|
1141
|
+
var _tmpl$18 = ['<li class="', '"><span class="text-lg font-bold text-primary-200">', "</span>", "</li>"];
|
|
1142
|
+
var _tmpl$213 = ["<a", ' class="', '">', "</a>"];
|
|
1143
|
+
var _tmpl$39 = ["<div", ">", '<div class="flex h-full"><div class="h-5 w-1 bg-accent-300"></div><ul class="flex h-full flex-1 flex-col gap-1 pl-4">', "", "</ul></div></div>"];
|
|
1144
|
+
var _tmpl$48 = ["<li>", "</li>"];
|
|
1145
|
+
var _tmpl$55 = ['<div class="', '">', "</div>"];
|
|
1146
|
+
function NavItem(props) {
|
|
1147
|
+
return _$ssr16(_tmpl$18, `flex items-center ${_$escape16(props.class, true) ?? ""}`, _$escape16(props.title), _$escape16(props.children));
|
|
1148
|
+
}
|
|
1149
|
+
function NavLink(props) {
|
|
1150
|
+
const activeStyles = "font-medium text-primary-300 underline underline-offset-4";
|
|
1151
|
+
const inactiveStyles = "font-normal text-gray-200 underline-offset-4 hover:text-gray-100 hover:underline";
|
|
1152
|
+
return _$ssr16(_tmpl$213, _$ssrAttribute8("href", _$escape16(props.href, true), false), `${props.active ? _$escape16(activeStyles, true) : _$escape16(inactiveStyles, true)} ${_$escape16(props.class, true) ?? ""}`, _$escape16(props.children));
|
|
1153
|
+
}
|
|
1154
|
+
function NavSection(props) {
|
|
1155
|
+
return _$ssr16(_tmpl$39, _$ssrAttribute8("class", _$escape16(props.class, true) ?? "", false), _$escape16(_$createComponent15(NavItem, {
|
|
1156
|
+
get title() {
|
|
1157
|
+
return props.title;
|
|
1158
|
+
}
|
|
1159
|
+
})), _$escape16(_$createComponent15(Show11, {
|
|
1160
|
+
get when() {
|
|
1161
|
+
return props.links;
|
|
1162
|
+
},
|
|
1163
|
+
get children() {
|
|
1164
|
+
return _$createComponent15(For, {
|
|
1165
|
+
get each() {
|
|
1166
|
+
return props.links;
|
|
1167
|
+
},
|
|
1168
|
+
children: (link) => _$ssr16(_tmpl$48, _$escape16(_$createComponent15(NavLink, {
|
|
1169
|
+
get href() {
|
|
1170
|
+
return link.href;
|
|
1171
|
+
},
|
|
1172
|
+
get active() {
|
|
1173
|
+
return link.active;
|
|
1174
|
+
},
|
|
1175
|
+
get children() {
|
|
1176
|
+
return link.label;
|
|
1177
|
+
}
|
|
1178
|
+
})))
|
|
1179
|
+
});
|
|
1180
|
+
}
|
|
1181
|
+
})), _$escape16(props.children));
|
|
1182
|
+
}
|
|
1183
|
+
function LateralNav(props) {
|
|
1184
|
+
const bgColor = () => props.transparent ? "" : "bg-bg-200";
|
|
1185
|
+
return _$ssr16(_tmpl$55, `hidden w-[300px] md:block ${_$escape16(bgColor(), true)} m-0 border-r border-primary-600 p-3 ${_$escape16(props.class, true) ?? ""}`, _$escape16(props.children));
|
|
1186
|
+
}
|
|
1187
|
+
|
|
1188
|
+
// src/custom/timeline-item/index.tsx
|
|
1189
|
+
import { createComponent as _$createComponent16 } from "solid-js/web";
|
|
1190
|
+
import { ssr as _$ssr17 } from "solid-js/web";
|
|
1191
|
+
import { escape as _$escape17 } from "solid-js/web";
|
|
1192
|
+
import { Show as Show12 } from "solid-js";
|
|
1193
|
+
var _tmpl$19 = ['<span class="font-semibold text-accent-200">', "</span>"];
|
|
1194
|
+
var _tmpl$214 = ['<div class="', '"><div class="flex items-center justify-around gap-3">', "", "", '</div><div class="flex items-center justify-center gap-3 text-center"><span class="font-light text-primary-300">', "</span></div></div>"];
|
|
1195
|
+
var eventMessages = {
|
|
1196
|
+
follow: (left, right) => [_$ssr17(_tmpl$19, _$escape17(left)), " ha empezado a seguir a ", _$ssr17(_tmpl$19, _$escape17(right))],
|
|
1197
|
+
like: (left, right) => [_$ssr17(_tmpl$19, _$escape17(left)), " le ha dado like a ", _$ssr17(_tmpl$19, _$escape17(right))],
|
|
1198
|
+
comment: (left, right) => [_$ssr17(_tmpl$19, _$escape17(left)), " ha comentado en ", _$ssr17(_tmpl$19, _$escape17(right))],
|
|
1199
|
+
event: (left, right) => [_$ssr17(_tmpl$19, _$escape17(left)), " asistir\xE1 al evento de ", _$ssr17(_tmpl$19, _$escape17(right))],
|
|
1200
|
+
custom: () => null
|
|
1201
|
+
};
|
|
1202
|
+
function TimelineItem(props) {
|
|
1203
|
+
const type = () => props.type ?? "follow";
|
|
1204
|
+
const leftName = () => props.leftUser?.name ?? "";
|
|
1205
|
+
const rightName = () => props.rightUser?.name ?? "";
|
|
1206
|
+
return _$ssr17(_tmpl$214, `inline-flex w-auto flex-col gap-5 rounded-2xl border border-primary-700 bg-bg-200 p-5 hover:bg-bg-300 transition-colors ${_$escape17(props.class, true) ?? ""}`, _$escape17(_$createComponent16(Show12, {
|
|
1207
|
+
get when() {
|
|
1208
|
+
return props.leftUser;
|
|
1209
|
+
},
|
|
1210
|
+
get children() {
|
|
1211
|
+
return _$createComponent16(Avatar, {
|
|
1212
|
+
get src() {
|
|
1213
|
+
return props.leftUser.avatar;
|
|
1214
|
+
},
|
|
1215
|
+
get alt() {
|
|
1216
|
+
return props.leftUser.name;
|
|
1217
|
+
}
|
|
1218
|
+
});
|
|
1219
|
+
}
|
|
1220
|
+
})), _$escape17(_$createComponent16(Show12, {
|
|
1221
|
+
get when() {
|
|
1222
|
+
return props.icon;
|
|
1223
|
+
},
|
|
1224
|
+
get children() {
|
|
1225
|
+
return props.icon;
|
|
1226
|
+
}
|
|
1227
|
+
})), _$escape17(_$createComponent16(Show12, {
|
|
1228
|
+
get when() {
|
|
1229
|
+
return props.rightUser;
|
|
1230
|
+
},
|
|
1231
|
+
get children() {
|
|
1232
|
+
return _$createComponent16(Avatar, {
|
|
1233
|
+
get src() {
|
|
1234
|
+
return props.rightUser.avatar;
|
|
1235
|
+
},
|
|
1236
|
+
get alt() {
|
|
1237
|
+
return props.rightUser.name;
|
|
1238
|
+
}
|
|
1239
|
+
});
|
|
1240
|
+
}
|
|
1241
|
+
})), _$escape17(_$createComponent16(Show12, {
|
|
1242
|
+
get when() {
|
|
1243
|
+
return props.message;
|
|
1244
|
+
},
|
|
1245
|
+
get fallback() {
|
|
1246
|
+
return eventMessages[type()](leftName(), rightName());
|
|
1247
|
+
},
|
|
1248
|
+
get children() {
|
|
1249
|
+
return props.message;
|
|
1250
|
+
}
|
|
1251
|
+
})));
|
|
1252
|
+
}
|
|
1253
|
+
|
|
1254
|
+
// src/custom/conversation/index.tsx
|
|
1255
|
+
import { ssr as _$ssr18 } from "solid-js/web";
|
|
1256
|
+
import { createComponent as _$createComponent17 } from "solid-js/web";
|
|
1257
|
+
import { escape as _$escape18 } from "solid-js/web";
|
|
1258
|
+
import { Show as Show13, For as For2 } from "solid-js";
|
|
1259
|
+
var _tmpl$20 = ['<span class="text-xs text-primary-500">', "</span>"];
|
|
1260
|
+
var _tmpl$215 = ['<p class="text-sm text-primary-400 truncate">', "</p>"];
|
|
1261
|
+
var _tmpl$310 = ['<span class="flex h-5 w-5 items-center justify-center rounded-full bg-accent text-xs font-bold text-white">', "</span>"];
|
|
1262
|
+
var _tmpl$49 = ['<button class="', '">', '<div class="flex-1 min-w-0"><div class="flex items-center justify-between"><span class="font-semibold text-primary-100 truncate">', "</span>", "</div>", "</div>", "</button>"];
|
|
1263
|
+
var _tmpl$56 = ['<span class="', '">', "</span>"];
|
|
1264
|
+
var _tmpl$63 = ['<div class="', '"><div class="', '"><p>', "</p>", "</div></div>"];
|
|
1265
|
+
var _tmpl$73 = ['<div class="', '">', "</div>"];
|
|
1266
|
+
function ConversationPreview(props) {
|
|
1267
|
+
return _$ssr18(_tmpl$49, `flex w-full items-center gap-3 rounded-xl p-3 hover:bg-bg-300 transition-colors text-left ${_$escape18(props.class, true) ?? ""}`, _$escape18(_$createComponent17(Avatar, {
|
|
1268
|
+
get src() {
|
|
1269
|
+
return props.user.avatar;
|
|
1270
|
+
},
|
|
1271
|
+
get alt() {
|
|
1272
|
+
return props.user.name;
|
|
1273
|
+
},
|
|
1274
|
+
get online() {
|
|
1275
|
+
return props.user.online;
|
|
1276
|
+
},
|
|
1277
|
+
size: "md"
|
|
1278
|
+
})), _$escape18(props.user.name), _$escape18(_$createComponent17(Show13, {
|
|
1279
|
+
get when() {
|
|
1280
|
+
return props.timestamp;
|
|
1281
|
+
},
|
|
1282
|
+
get children() {
|
|
1283
|
+
return _$ssr18(_tmpl$20, _$escape18(props.timestamp));
|
|
1284
|
+
}
|
|
1285
|
+
})), _$escape18(_$createComponent17(Show13, {
|
|
1286
|
+
get when() {
|
|
1287
|
+
return props.lastMessage;
|
|
1288
|
+
},
|
|
1289
|
+
get children() {
|
|
1290
|
+
return _$ssr18(_tmpl$215, _$escape18(props.lastMessage));
|
|
1291
|
+
}
|
|
1292
|
+
})), _$escape18(_$createComponent17(Show13, {
|
|
1293
|
+
get when() {
|
|
1294
|
+
return props.unreadCount && props.unreadCount > 0;
|
|
1295
|
+
},
|
|
1296
|
+
get children() {
|
|
1297
|
+
return _$ssr18(_tmpl$310, _$escape18(props.unreadCount));
|
|
1298
|
+
}
|
|
1299
|
+
})));
|
|
1300
|
+
}
|
|
1301
|
+
function ConversationBubble(props) {
|
|
1302
|
+
const isUser = () => props.sender === "user";
|
|
1303
|
+
return _$ssr18(_tmpl$63, `flex ${isUser() ? "justify-end" : "justify-start"} ${_$escape18(props.class, true) ?? ""}`, `max-w-[70%] rounded-2xl px-4 py-2 ${isUser() ? "bg-accent text-white rounded-br-sm" : "bg-bg-300 text-primary-100 rounded-bl-sm"}`, _$escape18(props.content), _$escape18(_$createComponent17(Show13, {
|
|
1304
|
+
get when() {
|
|
1305
|
+
return props.timestamp;
|
|
1306
|
+
},
|
|
1307
|
+
get children() {
|
|
1308
|
+
return _$ssr18(_tmpl$56, `text-xs ${isUser() ? "text-white/70" : "text-primary-500"}`, _$escape18(props.timestamp));
|
|
1309
|
+
}
|
|
1310
|
+
})));
|
|
1311
|
+
}
|
|
1312
|
+
function Conversation(props) {
|
|
1313
|
+
return _$ssr18(_tmpl$73, `flex flex-col gap-2 p-4 ${_$escape18(props.class, true) ?? ""}`, _$escape18(_$createComponent17(For2, {
|
|
1314
|
+
get each() {
|
|
1315
|
+
return props.messages;
|
|
1316
|
+
},
|
|
1317
|
+
children: (message) => _$createComponent17(ConversationBubble, {
|
|
1318
|
+
get content() {
|
|
1319
|
+
return message.content;
|
|
1320
|
+
},
|
|
1321
|
+
get sender() {
|
|
1322
|
+
return message.sender;
|
|
1323
|
+
},
|
|
1324
|
+
get timestamp() {
|
|
1325
|
+
return message.timestamp;
|
|
1326
|
+
}
|
|
1327
|
+
})
|
|
1328
|
+
})));
|
|
1329
|
+
}
|
|
1330
|
+
|
|
1331
|
+
// src/custom/profile-card/index.tsx
|
|
1332
|
+
import { ssr as _$ssr19 } from "solid-js/web";
|
|
1333
|
+
import { createComponent as _$createComponent18 } from "solid-js/web";
|
|
1334
|
+
import { escape as _$escape19 } from "solid-js/web";
|
|
1335
|
+
import { Show as Show14 } from "solid-js";
|
|
1336
|
+
var _tmpl$21 = ['<p class="text-primary-300 text-sm mt-1 line-clamp-2">', "</p>"];
|
|
1337
|
+
var _tmpl$216 = ['<span class="text-primary-300"><span class="font-semibold text-primary-100">', "</span> seguidores</span>"];
|
|
1338
|
+
var _tmpl$311 = ['<span class="text-primary-300"><span class="font-semibold text-primary-100">', "</span> siguiendo</span>"];
|
|
1339
|
+
var _tmpl$410 = ['<div class="mt-4 flex gap-2">', "</div>"];
|
|
1340
|
+
var _tmpl$57 = ['<div class="', '"><div class="flex items-start gap-4">', '<div class="flex-1 min-w-0"><h3 class="font-semibold text-primary-100 text-lg truncate">', "</h3>", '<div class="flex gap-4 mt-2 text-sm">', "", "</div></div></div>", "</div>"];
|
|
1341
|
+
function ProfileCard(props) {
|
|
1342
|
+
const formatNumber = (num) => {
|
|
1343
|
+
if (num >= 1e6) return `${(num / 1e6).toFixed(1)}M`;
|
|
1344
|
+
if (num >= 1e3) return `${(num / 1e3).toFixed(1)}K`;
|
|
1345
|
+
return num.toString();
|
|
1346
|
+
};
|
|
1347
|
+
return _$ssr19(_tmpl$57, `bg-bg-200 rounded-xl p-4 ${_$escape19(props.class, true) ?? ""}`, _$escape19(_$createComponent18(Avatar, {
|
|
1348
|
+
get src() {
|
|
1349
|
+
return props.avatar;
|
|
1350
|
+
},
|
|
1351
|
+
get alt() {
|
|
1352
|
+
return props.username;
|
|
1353
|
+
},
|
|
1354
|
+
size: "lg"
|
|
1355
|
+
})), _$escape19(props.username), _$escape19(_$createComponent18(Show14, {
|
|
1356
|
+
get when() {
|
|
1357
|
+
return props.bio;
|
|
1358
|
+
},
|
|
1359
|
+
get children() {
|
|
1360
|
+
return _$ssr19(_tmpl$21, _$escape19(props.bio));
|
|
1361
|
+
}
|
|
1362
|
+
})), _$escape19(_$createComponent18(Show14, {
|
|
1363
|
+
get when() {
|
|
1364
|
+
return props.followers !== void 0;
|
|
1365
|
+
},
|
|
1366
|
+
get children() {
|
|
1367
|
+
return _$ssr19(_tmpl$216, _$escape19(formatNumber(props.followers)));
|
|
1368
|
+
}
|
|
1369
|
+
})), _$escape19(_$createComponent18(Show14, {
|
|
1370
|
+
get when() {
|
|
1371
|
+
return props.following !== void 0;
|
|
1372
|
+
},
|
|
1373
|
+
get children() {
|
|
1374
|
+
return _$ssr19(_tmpl$311, _$escape19(formatNumber(props.following)));
|
|
1375
|
+
}
|
|
1376
|
+
})), _$escape19(_$createComponent18(Show14, {
|
|
1377
|
+
get when() {
|
|
1378
|
+
return props.actions;
|
|
1379
|
+
},
|
|
1380
|
+
get children() {
|
|
1381
|
+
return _$ssr19(_tmpl$410, _$escape19(props.actions));
|
|
1382
|
+
}
|
|
1383
|
+
})));
|
|
1384
|
+
}
|
|
1385
|
+
|
|
1386
|
+
// src/custom/event-card/index.tsx
|
|
1387
|
+
import { createComponent as _$createComponent19 } from "solid-js/web";
|
|
1388
|
+
import { ssr as _$ssr20 } from "solid-js/web";
|
|
1389
|
+
import { ssrAttribute as _$ssrAttribute9 } from "solid-js/web";
|
|
1390
|
+
import { escape as _$escape20 } from "solid-js/web";
|
|
1391
|
+
import { Show as Show15, For as For3 } from "solid-js";
|
|
1392
|
+
var _tmpl$30 = ['<div class="absolute -top-2 -right-2 z-10 flex flex-col gap-1"><img', ' alt class="w-8 h-8 object-contain"><img', ' alt class="w-6 h-6 object-contain ml-2"><img', ' alt class="w-5 h-5 object-contain"></div>'];
|
|
1393
|
+
var _tmpl$217 = ['<div class="relative h-32 w-full"><img', ' class="w-full h-full object-cover"><div class="absolute inset-0 bg-gradient-to-t from-bg-200 via-transparent to-transparent"></div></div>'];
|
|
1394
|
+
var _tmpl$312 = ['<div class="flex items-center gap-1.5"><span class="text-accent">@</span><span>', "</span></div>"];
|
|
1395
|
+
var _tmpl$411 = ['<div class="flex items-center gap-1.5"><span class="text-accent">\u23F1</span><span>', "</span></div>"];
|
|
1396
|
+
var _tmpl$58 = ['<div class="flex items-center gap-4 mt-3 text-sm text-primary-300">', "", "</div>"];
|
|
1397
|
+
var _tmpl$64 = ['<span class="ml-2 text-sm text-primary-300">+', " m\xE1s</span>"];
|
|
1398
|
+
var _tmpl$74 = ['<div class="flex items-center mt-3"><div class="flex -space-x-2">', "</div>", "</div>"];
|
|
1399
|
+
var _tmpl$82 = ['<div class="mt-4 flex gap-2">', "</div>"];
|
|
1400
|
+
var _tmpl$92 = ['<div class="', '">', "", '<div class="p-4 pt-2"><h3 class="font-bold text-xl leading-tight bg-gradient-to-r from-accent to-accent-300 bg-clip-text text-transparent">', "</h3>", "", "", "</div></div>"];
|
|
1401
|
+
var _tmpl$0 = ['<div class="w-12 h-12 rounded-lg overflow-hidden flex-shrink-0"><img', ' class="w-full h-full object-cover"></div>'];
|
|
1402
|
+
var _tmpl$1 = ['<p class="text-sm text-primary-300 truncate">', "</p>"];
|
|
1403
|
+
var _tmpl$102 = ['<button class="', '">', '<div class="flex-1 min-w-0"><h4 class="font-medium text-primary-100 truncate">', "</h4>", "</div></button>"];
|
|
1404
|
+
function EventCard(props) {
|
|
1405
|
+
const displayedAttendees = () => props.attendees?.slice(0, 3) ?? [];
|
|
1406
|
+
const remainingCount = () => {
|
|
1407
|
+
const total = props.attendeeCount ?? props.attendees?.length ?? 0;
|
|
1408
|
+
const displayed = displayedAttendees().length;
|
|
1409
|
+
return total - displayed;
|
|
1410
|
+
};
|
|
1411
|
+
return _$ssr20(_tmpl$92, `relative bg-bg-200 rounded-3xl overflow-hidden ${_$escape20(props.class, true) ?? ""}`, _$escape20(_$createComponent19(Show15, {
|
|
1412
|
+
get when() {
|
|
1413
|
+
return props.decorationImage;
|
|
1414
|
+
},
|
|
1415
|
+
get children() {
|
|
1416
|
+
return _$ssr20(_tmpl$30, _$ssrAttribute9("src", _$escape20(props.decorationImage, true), false), _$ssrAttribute9("src", _$escape20(props.decorationImage, true), false), _$ssrAttribute9("src", _$escape20(props.decorationImage, true), false));
|
|
1417
|
+
}
|
|
1418
|
+
})), _$escape20(_$createComponent19(Show15, {
|
|
1419
|
+
get when() {
|
|
1420
|
+
return props.image;
|
|
1421
|
+
},
|
|
1422
|
+
get children() {
|
|
1423
|
+
return _$ssr20(_tmpl$217, _$ssrAttribute9("src", _$escape20(props.image, true), false) + _$ssrAttribute9("alt", _$escape20(props.title, true), false));
|
|
1424
|
+
}
|
|
1425
|
+
})), _$escape20(props.title), _$escape20(_$createComponent19(Show15, {
|
|
1426
|
+
get when() {
|
|
1427
|
+
return props.date || props.author;
|
|
1428
|
+
},
|
|
1429
|
+
get children() {
|
|
1430
|
+
return _$ssr20(_tmpl$58, _$escape20(_$createComponent19(Show15, {
|
|
1431
|
+
get when() {
|
|
1432
|
+
return props.author;
|
|
1433
|
+
},
|
|
1434
|
+
get children() {
|
|
1435
|
+
return _$ssr20(_tmpl$312, _$escape20(props.author));
|
|
1436
|
+
}
|
|
1437
|
+
})), _$escape20(_$createComponent19(Show15, {
|
|
1438
|
+
get when() {
|
|
1439
|
+
return props.date;
|
|
1440
|
+
},
|
|
1441
|
+
get children() {
|
|
1442
|
+
return _$ssr20(_tmpl$411, _$escape20(props.date));
|
|
1443
|
+
}
|
|
1444
|
+
})));
|
|
1445
|
+
}
|
|
1446
|
+
})), _$escape20(_$createComponent19(Show15, {
|
|
1447
|
+
get when() {
|
|
1448
|
+
return displayedAttendees().length > 0;
|
|
1449
|
+
},
|
|
1450
|
+
get children() {
|
|
1451
|
+
return _$ssr20(_tmpl$74, _$escape20(_$createComponent19(For3, {
|
|
1452
|
+
get each() {
|
|
1453
|
+
return displayedAttendees();
|
|
1454
|
+
},
|
|
1455
|
+
children: (attendee) => _$createComponent19(Avatar, {
|
|
1456
|
+
get src() {
|
|
1457
|
+
return attendee.avatar;
|
|
1458
|
+
},
|
|
1459
|
+
get alt() {
|
|
1460
|
+
return attendee.name;
|
|
1461
|
+
},
|
|
1462
|
+
size: "sm"
|
|
1463
|
+
})
|
|
1464
|
+
})), _$escape20(_$createComponent19(Show15, {
|
|
1465
|
+
get when() {
|
|
1466
|
+
return remainingCount() > 0;
|
|
1467
|
+
},
|
|
1468
|
+
get children() {
|
|
1469
|
+
return _$ssr20(_tmpl$64, _$escape20(remainingCount()));
|
|
1470
|
+
}
|
|
1471
|
+
})));
|
|
1472
|
+
}
|
|
1473
|
+
})), _$escape20(_$createComponent19(Show15, {
|
|
1474
|
+
get when() {
|
|
1475
|
+
return props.actions;
|
|
1476
|
+
},
|
|
1477
|
+
get children() {
|
|
1478
|
+
return _$ssr20(_tmpl$82, _$escape20(props.actions));
|
|
1479
|
+
}
|
|
1480
|
+
})));
|
|
1481
|
+
}
|
|
1482
|
+
function EventListItem(props) {
|
|
1483
|
+
return _$ssr20(_tmpl$102, `flex items-center gap-3 w-full p-2 rounded-lg hover:bg-bg-300 transition-colors text-left ${_$escape20(props.class, true) ?? ""}`, _$escape20(_$createComponent19(Show15, {
|
|
1484
|
+
get when() {
|
|
1485
|
+
return props.image;
|
|
1486
|
+
},
|
|
1487
|
+
get children() {
|
|
1488
|
+
return _$ssr20(_tmpl$0, _$ssrAttribute9("src", _$escape20(props.image, true), false) + _$ssrAttribute9("alt", _$escape20(props.title, true), false));
|
|
1489
|
+
}
|
|
1490
|
+
})), _$escape20(props.title), _$escape20(_$createComponent19(Show15, {
|
|
1491
|
+
get when() {
|
|
1492
|
+
return props.subtitle;
|
|
1493
|
+
},
|
|
1494
|
+
get children() {
|
|
1495
|
+
return _$ssr20(_tmpl$1, _$escape20(props.subtitle));
|
|
1496
|
+
}
|
|
1497
|
+
})));
|
|
1498
|
+
}
|
|
1499
|
+
|
|
1500
|
+
// src/custom/calendar-card/index.tsx
|
|
1501
|
+
import { createComponent as _$createComponent20 } from "solid-js/web";
|
|
1502
|
+
import { ssr as _$ssr21 } from "solid-js/web";
|
|
1503
|
+
import { ssrAttribute as _$ssrAttribute10 } from "solid-js/web";
|
|
1504
|
+
import { escape as _$escape21 } from "solid-js/web";
|
|
1505
|
+
import { Show as Show16, For as For4 } from "solid-js";
|
|
1506
|
+
var _tmpl$31 = ['<div class="relative h-[80px] w-[80px] flex-shrink-0 overflow-hidden rounded-xl border-2 border-accent-200"><img', ' class="h-full w-full object-cover"></div>'];
|
|
1507
|
+
var _tmpl$218 = ['<div class="absolute bottom-[-20px] h-[30px] w-full"><div class="flex h-full w-full flex-1 justify-end gap-1">', "</div></div>"];
|
|
1508
|
+
var _tmpl$313 = ['<span class="font-semibold text-accent-200">', " m\xE1s</span>"];
|
|
1509
|
+
var _tmpl$412 = ['<div class="flex flex-1"><span class="text-base font-normal text-primary-500">seguida por ', "", "</span></div>"];
|
|
1510
|
+
var _tmpl$59 = ['<div class="', '">', '<div class="relative h-full flex-1 flex-col pl-3">', '<div class="flex h-full flex-col items-end justify-center pb-3 pr-5 pt-2"><div class="flex flex-1"><span class="text-lg font-semibold text-white drop-shadow-sm">', "</span></div>", "</div></div></div>"];
|
|
1511
|
+
var _tmpl$65 = ['<span class="font-semibold text-accent-200">', "</span>"];
|
|
1512
|
+
function CalendarCard(props) {
|
|
1513
|
+
const displayedFollowers = () => props.followers?.slice(0, 2) ?? [];
|
|
1514
|
+
const remainingCount = () => {
|
|
1515
|
+
const total = props.followerCount ?? props.followers?.length ?? 0;
|
|
1516
|
+
const displayed = displayedFollowers().length;
|
|
1517
|
+
return total - displayed;
|
|
1518
|
+
};
|
|
1519
|
+
return _$ssr21(_tmpl$59, `flex h-[100px] w-full max-w-[500px] items-center rounded-xl border border-primary-600 border-b-accent-500 bg-bg-300 p-2 ${_$escape21(props.class, true) ?? ""}`, _$escape21(_$createComponent20(Show16, {
|
|
1520
|
+
get when() {
|
|
1521
|
+
return props.image;
|
|
1522
|
+
},
|
|
1523
|
+
get children() {
|
|
1524
|
+
return _$ssr21(_tmpl$31, _$ssrAttribute10("src", _$escape21(props.image, true), false) + _$ssrAttribute10("alt", _$escape21(props.title, true), false));
|
|
1525
|
+
}
|
|
1526
|
+
})), _$escape21(_$createComponent20(Show16, {
|
|
1527
|
+
get when() {
|
|
1528
|
+
return props.tags && props.tags.length > 0;
|
|
1529
|
+
},
|
|
1530
|
+
get children() {
|
|
1531
|
+
return _$ssr21(_tmpl$218, _$escape21(_$createComponent20(For4, {
|
|
1532
|
+
get each() {
|
|
1533
|
+
return props.tags;
|
|
1534
|
+
},
|
|
1535
|
+
children: (tag) => _$createComponent20(Chip, {
|
|
1536
|
+
text: tag,
|
|
1537
|
+
variant: "primary"
|
|
1538
|
+
})
|
|
1539
|
+
})));
|
|
1540
|
+
}
|
|
1541
|
+
})), _$escape21(props.title), _$escape21(_$createComponent20(Show16, {
|
|
1542
|
+
get when() {
|
|
1543
|
+
return displayedFollowers().length > 0;
|
|
1544
|
+
},
|
|
1545
|
+
get children() {
|
|
1546
|
+
return _$ssr21(_tmpl$412, _$escape21(_$createComponent20(For4, {
|
|
1547
|
+
get each() {
|
|
1548
|
+
return displayedFollowers();
|
|
1549
|
+
},
|
|
1550
|
+
children: (follower, index) => [_$ssr21(_tmpl$65, _$escape21(follower.name)), index() < displayedFollowers().length - 1 && ", "]
|
|
1551
|
+
})), _$escape21(_$createComponent20(Show16, {
|
|
1552
|
+
get when() {
|
|
1553
|
+
return remainingCount() > 0;
|
|
1554
|
+
},
|
|
1555
|
+
get children() {
|
|
1556
|
+
return [" ", "y ", _$ssr21(_tmpl$313, _$escape21(remainingCount()))];
|
|
1557
|
+
}
|
|
1558
|
+
})));
|
|
1559
|
+
}
|
|
1560
|
+
})));
|
|
1561
|
+
}
|
|
1562
|
+
|
|
1563
|
+
// src/custom/logo/index.tsx
|
|
1564
|
+
import { ssr as _$ssr22 } from "solid-js/web";
|
|
1565
|
+
import { ssrAttribute as _$ssrAttribute11 } from "solid-js/web";
|
|
1566
|
+
import { escape as _$escape22 } from "solid-js/web";
|
|
1567
|
+
var _tmpl$40 = ['<span class="', '"><span class="vui-logo__first">', '</span><span class="vui-logo__second"', ">", "</span></span>"];
|
|
1568
|
+
function Logo(props) {
|
|
1569
|
+
const sizeClass = () => {
|
|
1570
|
+
switch (props.size) {
|
|
1571
|
+
case "sm":
|
|
1572
|
+
return "vui-logo--sm";
|
|
1573
|
+
case "lg":
|
|
1574
|
+
return "vui-logo--lg";
|
|
1575
|
+
case "xl":
|
|
1576
|
+
return "vui-logo--xl";
|
|
1577
|
+
case "md":
|
|
1578
|
+
default:
|
|
1579
|
+
return "vui-logo--md";
|
|
1580
|
+
}
|
|
1581
|
+
};
|
|
1582
|
+
const firstWord = () => props.firstWord ?? "Proyecto";
|
|
1583
|
+
const secondWord = () => props.secondWord ?? "Viviana";
|
|
1584
|
+
return _$ssr22(_tmpl$40, `vui-logo ${_$escape22(sizeClass(), true)} ${_$escape22(props.class, true) ?? ""}`, _$escape22(firstWord()), _$ssrAttribute11("data-text", _$escape22(secondWord(), true), false), _$escape22(secondWord()));
|
|
1585
|
+
}
|
|
1586
|
+
|
|
1587
|
+
// src/custom/project-card/index.tsx
|
|
1588
|
+
import { ssrAttribute as _$ssrAttribute12 } from "solid-js/web";
|
|
1589
|
+
import { ssr as _$ssr23 } from "solid-js/web";
|
|
1590
|
+
import { escape as _$escape23 } from "solid-js/web";
|
|
1591
|
+
var _tmpl$41 = ['<div class="vui-project-card__tooltip"><span>', "</span></div>"];
|
|
1592
|
+
var _tmpl$219 = ['<img class="vui-project-card__image"', ">"];
|
|
1593
|
+
var _tmpl$314 = ["<a", ' target="_blank" rel="noopener noreferrer"', ">", "</a>"];
|
|
1594
|
+
var _tmpl$413 = ["<div", ">", "</div>"];
|
|
1595
|
+
function ProjectCard(props) {
|
|
1596
|
+
const size = () => props.size ?? "sm";
|
|
1597
|
+
const inactive = () => props.inactive ?? false;
|
|
1598
|
+
const cardContent = () => [_$ssr23(_tmpl$41, _$escape23(props.name)), _$ssr23(_tmpl$219, _$ssrAttribute12("src", _$escape23(props.imageSrc, true), false) + _$ssrAttribute12("alt", _$escape23(props.imageAlt, true) ?? _$escape23(props.name, true), false))];
|
|
1599
|
+
const cardClasses = () => `vui-project-card vui-project-card--${size()} ${inactive() ? "vui-project-card--inactive" : ""} ${props.class ?? ""}`;
|
|
1600
|
+
if (props.href) {
|
|
1601
|
+
return _$ssr23(_tmpl$314, _$ssrAttribute12("href", _$escape23(props.href, true), false), _$ssrAttribute12("class", _$escape23(cardClasses(), true), false), _$escape23(cardContent()));
|
|
1602
|
+
}
|
|
1603
|
+
return _$ssr23(_tmpl$413, _$ssrAttribute12("class", _$escape23(cardClasses(), true), false), _$escape23(cardContent()));
|
|
1604
|
+
}
|
|
1605
|
+
|
|
1606
|
+
// src/custom/page-layout/index.tsx
|
|
1607
|
+
import { ssrElement as _$ssrElement4 } from "solid-js/web";
|
|
1608
|
+
import { mergeProps as _$mergeProps9 } from "solid-js/web";
|
|
1609
|
+
import { escape as _$escape24 } from "solid-js/web";
|
|
1610
|
+
import { splitProps as splitProps9 } from "solid-js";
|
|
1611
|
+
function PageLayout(props) {
|
|
1612
|
+
const [local, rest] = splitProps9(props, ["children", "class"]);
|
|
1613
|
+
return _$ssrElement4("div", _$mergeProps9({
|
|
1614
|
+
get ["class"]() {
|
|
1615
|
+
return `vui-page ${local.class ?? ""}`;
|
|
1616
|
+
}
|
|
1617
|
+
}, rest), _$escape24(local.children), false);
|
|
1618
|
+
}
|
|
1619
|
+
export {
|
|
1620
|
+
Alert,
|
|
1621
|
+
Avatar,
|
|
1622
|
+
AvatarGroup,
|
|
1623
|
+
Badge,
|
|
1624
|
+
Button,
|
|
1625
|
+
CalendarCard,
|
|
1626
|
+
Checkbox,
|
|
1627
|
+
CheckboxGroup,
|
|
1628
|
+
Chip,
|
|
1629
|
+
Conversation,
|
|
1630
|
+
ConversationBubble,
|
|
1631
|
+
ConversationPreview,
|
|
1632
|
+
Dialog,
|
|
1633
|
+
EventCard,
|
|
1634
|
+
EventListItem,
|
|
1635
|
+
GitHubIcon,
|
|
1636
|
+
Icon,
|
|
1637
|
+
LateralNav,
|
|
1638
|
+
Link,
|
|
1639
|
+
Logo,
|
|
1640
|
+
NavHeader,
|
|
1641
|
+
NavItem,
|
|
1642
|
+
NavLink,
|
|
1643
|
+
NavSection,
|
|
1644
|
+
PageLayout,
|
|
1645
|
+
ProfileCard,
|
|
1646
|
+
ProgressBar,
|
|
1647
|
+
ProjectCard,
|
|
1648
|
+
Radio,
|
|
1649
|
+
RadioGroup,
|
|
1650
|
+
Separator,
|
|
1651
|
+
TabSwitch,
|
|
1652
|
+
TextField,
|
|
1653
|
+
TimelineItem,
|
|
1654
|
+
ToggleSwitch,
|
|
1655
|
+
Tooltip
|
|
1656
|
+
};
|
|
1657
|
+
//# sourceMappingURL=index.ssr.js.map
|