sigpro-ui 1.0.6
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/Readme.md +146 -0
- package/dist/sigpro-ui.cjs +1677 -0
- package/dist/sigpro-ui.esm.js +1621 -0
- package/dist/sigpro-ui.umd.js +1680 -0
- package/dist/sigpro-ui.umd.min.js +1 -0
- package/index.js +40 -0
- package/package.json +52 -0
- package/src/components/Accordion.js +24 -0
- package/src/components/Alert.js +50 -0
- package/src/components/Autocomplete.js +95 -0
- package/src/components/Badge.js +6 -0
- package/src/components/Button.js +39 -0
- package/src/components/Checkbox.js +21 -0
- package/src/components/Colorpicker.js +81 -0
- package/src/components/Datepicker.js +252 -0
- package/src/components/Drawer.js +18 -0
- package/src/components/Dropdown.js +37 -0
- package/src/components/Fab.js +51 -0
- package/src/components/Fieldset.js +19 -0
- package/src/components/Fileinput.js +113 -0
- package/src/components/Indicator.js +9 -0
- package/src/components/Input.js +77 -0
- package/src/components/List.js +18 -0
- package/src/components/Loading.js +13 -0
- package/src/components/Menu.js +25 -0
- package/src/components/Modal.js +31 -0
- package/src/components/Navbar.js +6 -0
- package/src/components/Radio.js +25 -0
- package/src/components/Range.js +24 -0
- package/src/components/Rating.js +34 -0
- package/src/components/Select.js +36 -0
- package/src/components/Stack.js +6 -0
- package/src/components/Stat.js +11 -0
- package/src/components/Swap.js +13 -0
- package/src/components/Table.js +60 -0
- package/src/components/Tabs.js +46 -0
- package/src/components/Timeline.js +52 -0
- package/src/components/Toast.js +63 -0
- package/src/components/Tooltip.js +6 -0
- package/src/components/index.js +110 -0
- package/src/core/i18n.js +26 -0
- package/src/core/icons.js +17 -0
- package/src/core/utils.js +5 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { $html } from "sigpro";
|
|
2
|
+
import { val, joinClass } from "../core/utils.js";
|
|
3
|
+
|
|
4
|
+
/** RADIO */
|
|
5
|
+
export const Radio = (props) => {
|
|
6
|
+
const { label, tooltip, value, ...rest } = props;
|
|
7
|
+
|
|
8
|
+
const radioEl = $html("input", {
|
|
9
|
+
...rest,
|
|
10
|
+
type: "radio",
|
|
11
|
+
class: joinClass("radio", props.class),
|
|
12
|
+
checked: () => val(value) === props.value,
|
|
13
|
+
disabled: () => val(props.disabled),
|
|
14
|
+
onclick: () => typeof value === "function" && value(props.value),
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
if (!label && !tooltip) return radioEl;
|
|
18
|
+
|
|
19
|
+
const layout = $html("label", { class: "label cursor-pointer justify-start gap-3" }, [
|
|
20
|
+
radioEl,
|
|
21
|
+
label ? $html("span", { class: "label-text" }, label) : null,
|
|
22
|
+
]);
|
|
23
|
+
|
|
24
|
+
return tooltip ? $html("div", { class: "tooltip", "data-tip": tooltip }, layout) : layout;
|
|
25
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { $html } from "sigpro";
|
|
2
|
+
import { val, joinClass } from "../core/utils.js";
|
|
3
|
+
|
|
4
|
+
/** RANGE */
|
|
5
|
+
export const Range = (props) => {
|
|
6
|
+
const { label, tooltip, value, ...rest } = props;
|
|
7
|
+
|
|
8
|
+
const rangeEl = $html("input", {
|
|
9
|
+
...rest,
|
|
10
|
+
type: "range",
|
|
11
|
+
class: joinClass("range", props.class),
|
|
12
|
+
value: value,
|
|
13
|
+
disabled: () => val(props.disabled)
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
if (!label && !tooltip) return rangeEl;
|
|
17
|
+
|
|
18
|
+
const layout = $html("div", { class: "flex flex-col gap-2" }, [
|
|
19
|
+
label ? $html("span", { class: "label-text" }, label) : null,
|
|
20
|
+
rangeEl
|
|
21
|
+
]);
|
|
22
|
+
|
|
23
|
+
return tooltip ? $html("div", { class: "tooltip", "data-tip": tooltip }, layout) : layout;
|
|
24
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { $html } from "sigpro";
|
|
2
|
+
import { val } from "../core/utils.js";
|
|
3
|
+
|
|
4
|
+
/** RATING */
|
|
5
|
+
export const Rating = (props) => {
|
|
6
|
+
const { value, count = 5, mask = "mask-star", readonly = false, ...rest } = props;
|
|
7
|
+
|
|
8
|
+
// Generamos un ID único para el grupo de radio buttons
|
|
9
|
+
const ratingGroup = `rating-${Math.random().toString(36).slice(2, 7)}`;
|
|
10
|
+
|
|
11
|
+
return $html(
|
|
12
|
+
"div",
|
|
13
|
+
{
|
|
14
|
+
...rest,
|
|
15
|
+
class: () => `rating ${val(readonly) ? "pointer-events-none" : ""} ${props.class || ""}`,
|
|
16
|
+
},
|
|
17
|
+
Array.from({ length: val(count) }, (_, i) => {
|
|
18
|
+
const starValue = i + 1;
|
|
19
|
+
|
|
20
|
+
return $html("input", {
|
|
21
|
+
type: "radio",
|
|
22
|
+
name: ratingGroup,
|
|
23
|
+
class: `mask ${mask}`,
|
|
24
|
+
"aria-label": `${starValue} star`,
|
|
25
|
+
checked: () => Math.round(val(value)) === starValue,
|
|
26
|
+
onchange: () => {
|
|
27
|
+
if (!val(readonly) && typeof value === "function") {
|
|
28
|
+
value(starValue);
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
})
|
|
33
|
+
);
|
|
34
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { $html, $for } from "sigpro";
|
|
2
|
+
import { val, joinClass } from "../core/utils.js";
|
|
3
|
+
|
|
4
|
+
/** SELECT */
|
|
5
|
+
export const Select = (props) => {
|
|
6
|
+
const { label, options, value, ...rest } = props;
|
|
7
|
+
|
|
8
|
+
const selectEl = $html(
|
|
9
|
+
"select",
|
|
10
|
+
{
|
|
11
|
+
...rest,
|
|
12
|
+
class: joinClass("select select-bordered w-full", props.class),
|
|
13
|
+
value: value
|
|
14
|
+
},
|
|
15
|
+
$for(
|
|
16
|
+
() => val(options) || [],
|
|
17
|
+
(opt) =>
|
|
18
|
+
$html(
|
|
19
|
+
"option",
|
|
20
|
+
{
|
|
21
|
+
value: opt.value,
|
|
22
|
+
$selected: () => String(val(value)) === String(opt.value),
|
|
23
|
+
},
|
|
24
|
+
opt.label,
|
|
25
|
+
),
|
|
26
|
+
(opt) => opt.value,
|
|
27
|
+
),
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
if (!label) return selectEl;
|
|
31
|
+
|
|
32
|
+
return $html("label", { class: "fieldset-label flex flex-col gap-1" }, [
|
|
33
|
+
$html("span", {}, label),
|
|
34
|
+
selectEl
|
|
35
|
+
]);
|
|
36
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { $html } from "sigpro";
|
|
2
|
+
import { val, joinClass } from "../core/utils.js";
|
|
3
|
+
|
|
4
|
+
/** STAT */
|
|
5
|
+
export const Stat = (props) =>
|
|
6
|
+
$html("div", { ...props, class: joinClass("stat", props.class) }, [
|
|
7
|
+
props.icon && $html("div", { class: "stat-figure text-secondary" }, props.icon),
|
|
8
|
+
props.label && $html("div", { class: "stat-title" }, props.label),
|
|
9
|
+
$html("div", { class: "stat-value" }, () => val(props.value) ?? props.value),
|
|
10
|
+
props.desc && $html("div", { class: "stat-desc" }, props.desc),
|
|
11
|
+
]);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { $html } from "sigpro";
|
|
2
|
+
import { joinClass } from "../core/utils.js";
|
|
3
|
+
|
|
4
|
+
/** SWAP */
|
|
5
|
+
export const Swap = (props) =>
|
|
6
|
+
$html("label", { class: joinClass("swap", props.class) }, [
|
|
7
|
+
$html("input", {
|
|
8
|
+
type: "checkbox",
|
|
9
|
+
checked: props.value
|
|
10
|
+
}),
|
|
11
|
+
$html("div", { class: "swap-on" }, props.on),
|
|
12
|
+
$html("div", { class: "swap-off" }, props.off),
|
|
13
|
+
]);
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { $html, $for, $if } from "sigpro";
|
|
2
|
+
import { val, joinClass } from "../core/utils.js";
|
|
3
|
+
import { tt } from "../core/i18n.js";
|
|
4
|
+
|
|
5
|
+
/** TABLE */
|
|
6
|
+
export const Table = (props) => {
|
|
7
|
+
const {
|
|
8
|
+
items = [],
|
|
9
|
+
columns = [],
|
|
10
|
+
keyFn,
|
|
11
|
+
zebra = false,
|
|
12
|
+
pinRows = false,
|
|
13
|
+
empty = tt("nodata")(),
|
|
14
|
+
...rest
|
|
15
|
+
} = props;
|
|
16
|
+
|
|
17
|
+
const tableClass = () => joinClass(
|
|
18
|
+
"table",
|
|
19
|
+
`${val(zebra) ? "table-zebra" : ""} ${val(pinRows) ? "table-pin-rows" : ""} ${props.class || ""}`
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
return $html("div", { class: "overflow-x-auto w-full bg-base-100 rounded-box border border-base-300" }, [
|
|
23
|
+
$html("table", { ...rest, class: tableClass }, [
|
|
24
|
+
$html("thead", {}, [
|
|
25
|
+
$html("tr", {},
|
|
26
|
+
columns.map(col => $html("th", { class: col.class || "" }, col.label))
|
|
27
|
+
)
|
|
28
|
+
]),
|
|
29
|
+
$html("tbody", {}, [
|
|
30
|
+
$for(items, (item, index) => {
|
|
31
|
+
return $html("tr", { class: "hover" },
|
|
32
|
+
columns.map(col => {
|
|
33
|
+
const cellContent = () => {
|
|
34
|
+
if (col.render) return col.render(item, index);
|
|
35
|
+
const value = item[col.key];
|
|
36
|
+
return val(value);
|
|
37
|
+
};
|
|
38
|
+
return $html("td", { class: col.class || "" }, [cellContent]);
|
|
39
|
+
})
|
|
40
|
+
);
|
|
41
|
+
}, keyFn || ((item, idx) => item.id || idx)),
|
|
42
|
+
|
|
43
|
+
$if(() => val(items).length === 0, () =>
|
|
44
|
+
$html("tr", {}, [
|
|
45
|
+
$html("td", { colspan: columns.length, class: "text-center p-10 opacity-50" }, [
|
|
46
|
+
val(empty)
|
|
47
|
+
])
|
|
48
|
+
])
|
|
49
|
+
)
|
|
50
|
+
]),
|
|
51
|
+
$if(() => columns.some(c => c.footer), () =>
|
|
52
|
+
$html("tfoot", {}, [
|
|
53
|
+
$html("tr", {},
|
|
54
|
+
columns.map(col => $html("th", {}, col.footer || ""))
|
|
55
|
+
)
|
|
56
|
+
])
|
|
57
|
+
)
|
|
58
|
+
])
|
|
59
|
+
]);
|
|
60
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { $html, $for } from "sigpro";
|
|
2
|
+
import { val, joinClass } from "../core/utils.js";
|
|
3
|
+
|
|
4
|
+
/** TABS */
|
|
5
|
+
export const Tabs = (props) => {
|
|
6
|
+
const { items, ...rest } = props;
|
|
7
|
+
const itemsSignal = typeof items === "function" ? items : () => items || [];
|
|
8
|
+
|
|
9
|
+
return $html("div", { ...rest, class: "flex flex-col gap-4 w-full" }, [
|
|
10
|
+
$html(
|
|
11
|
+
"div",
|
|
12
|
+
{
|
|
13
|
+
role: "tablist",
|
|
14
|
+
class: joinClass("tabs tabs-box", props.class),
|
|
15
|
+
},
|
|
16
|
+
$for(
|
|
17
|
+
itemsSignal,
|
|
18
|
+
(it) =>
|
|
19
|
+
$html(
|
|
20
|
+
"a",
|
|
21
|
+
{
|
|
22
|
+
role: "tab",
|
|
23
|
+
class: () => joinClass(
|
|
24
|
+
"tab",
|
|
25
|
+
val(it.active) && "tab-active",
|
|
26
|
+
val(it.disabled) && "tab-disabled",
|
|
27
|
+
it.tip && "tooltip"
|
|
28
|
+
),
|
|
29
|
+
"data-tip": it.tip,
|
|
30
|
+
onclick: (e) => !val(it.disabled) && it.onclick?.(e),
|
|
31
|
+
},
|
|
32
|
+
it.label,
|
|
33
|
+
),
|
|
34
|
+
(t) => t.label,
|
|
35
|
+
),
|
|
36
|
+
),
|
|
37
|
+
() => {
|
|
38
|
+
const active = itemsSignal().find((it) => val(it.active));
|
|
39
|
+
if (!active) return null;
|
|
40
|
+
const content = val(active.content);
|
|
41
|
+
return $html("div", { class: "p-4" }, [
|
|
42
|
+
typeof content === "function" ? content() : content
|
|
43
|
+
]);
|
|
44
|
+
},
|
|
45
|
+
]);
|
|
46
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { $html, $for } from "sigpro";
|
|
2
|
+
import { val } from "../core/utils.js";
|
|
3
|
+
import { iconInfo, iconSuccess, iconWarning, iconError } from "../core/icons.js";
|
|
4
|
+
|
|
5
|
+
/** TIMELINE */
|
|
6
|
+
export const Timeline = (props) => {
|
|
7
|
+
const { items = [], vertical = true, compact = false, ...rest } = props;
|
|
8
|
+
|
|
9
|
+
const icons = {
|
|
10
|
+
info: iconInfo,
|
|
11
|
+
success: iconSuccess,
|
|
12
|
+
warning: iconWarning,
|
|
13
|
+
error: iconError,
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
return $html(
|
|
17
|
+
"ul",
|
|
18
|
+
{
|
|
19
|
+
...rest,
|
|
20
|
+
class: () =>
|
|
21
|
+
`timeline ${val(vertical) ? "timeline-vertical" : "timeline-horizontal"} ${
|
|
22
|
+
val(compact) ? "timeline-compact" : ""
|
|
23
|
+
} ${props.class || ""}`,
|
|
24
|
+
},
|
|
25
|
+
[
|
|
26
|
+
$for(
|
|
27
|
+
items,
|
|
28
|
+
(item, i) => {
|
|
29
|
+
const isFirst = i === 0;
|
|
30
|
+
const isLast = i === val(items).length - 1;
|
|
31
|
+
const itemType = item.type || "success";
|
|
32
|
+
const renderSlot = (content) => (typeof content === "function" ? content() : content);
|
|
33
|
+
|
|
34
|
+
return $html("li", { class: "flex-1" }, [
|
|
35
|
+
!isFirst ? $html("hr", { class: item.completed ? "bg-primary" : "" }) : null,
|
|
36
|
+
$html("div", { class: "timeline-start" }, [renderSlot(item.title)]),
|
|
37
|
+
$html("div", { class: "timeline-middle" }, [
|
|
38
|
+
$html("img", {
|
|
39
|
+
src: icons[itemType] || item.icon || icons.success,
|
|
40
|
+
class: "w-4 h-4 object-contain mx-1",
|
|
41
|
+
alt: itemType,
|
|
42
|
+
}),
|
|
43
|
+
]),
|
|
44
|
+
$html("div", { class: "timeline-end timeline-box shadow-sm" }, [renderSlot(item.detail)]),
|
|
45
|
+
!isLast ? $html("hr", { class: item.completed ? "bg-primary" : "" }) : null,
|
|
46
|
+
]);
|
|
47
|
+
},
|
|
48
|
+
(item, i) => item.id || i,
|
|
49
|
+
),
|
|
50
|
+
],
|
|
51
|
+
);
|
|
52
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { $html, $mount } from "sigpro";
|
|
2
|
+
import { Button } from "./Button.js";
|
|
3
|
+
|
|
4
|
+
/** TOAST (Imperative Function) */
|
|
5
|
+
export const Toast = (message, type = "alert-success", duration = 3500) => {
|
|
6
|
+
let container = document.getElementById("sigpro-toast-container");
|
|
7
|
+
|
|
8
|
+
// Crear el contenedor global si no existe
|
|
9
|
+
if (!container) {
|
|
10
|
+
container = $html("div", {
|
|
11
|
+
id: "sigpro-toast-container",
|
|
12
|
+
class: "fixed top-0 right-0 z-[9999] p-4 flex flex-col gap-2 pointer-events-none",
|
|
13
|
+
});
|
|
14
|
+
document.body.appendChild(container);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const toastHost = $html("div", { style: "display: contents" });
|
|
18
|
+
container.appendChild(toastHost);
|
|
19
|
+
|
|
20
|
+
let timeoutId;
|
|
21
|
+
|
|
22
|
+
const close = () => {
|
|
23
|
+
clearTimeout(timeoutId);
|
|
24
|
+
const el = toastHost.firstElementChild;
|
|
25
|
+
if (el && !el.classList.contains("opacity-0")) {
|
|
26
|
+
el.classList.add("translate-x-full", "opacity-0");
|
|
27
|
+
setTimeout(() => {
|
|
28
|
+
instance.destroy();
|
|
29
|
+
toastHost.remove();
|
|
30
|
+
// Limpiar el contenedor si ya no hay más toasts
|
|
31
|
+
if (!container.hasChildNodes()) container.remove();
|
|
32
|
+
}, 300);
|
|
33
|
+
} else {
|
|
34
|
+
instance.destroy();
|
|
35
|
+
toastHost.remove();
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const ToastComponent = () => {
|
|
40
|
+
const el = $html(
|
|
41
|
+
"div",
|
|
42
|
+
{
|
|
43
|
+
class: `alert alert-soft ${type} shadow-lg transition-all duration-300 translate-x-10 opacity-0 pointer-events-auto`,
|
|
44
|
+
},
|
|
45
|
+
[
|
|
46
|
+
$html("span", {}, [typeof message === "function" ? message() : message]),
|
|
47
|
+
Button({ class: "btn-xs btn-circle btn-ghost", onclick: close }, "✕")
|
|
48
|
+
],
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
// Animación de entrada
|
|
52
|
+
requestAnimationFrame(() => el.classList.remove("translate-x-10", "opacity-0"));
|
|
53
|
+
return el;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const instance = $mount(ToastComponent, toastHost);
|
|
57
|
+
|
|
58
|
+
if (duration > 0) {
|
|
59
|
+
timeoutId = setTimeout(close, duration);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return close;
|
|
63
|
+
};
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import * as AccordionModule from './Accordion.js';
|
|
2
|
+
import * as AlertModule from './Alert.js';
|
|
3
|
+
import * as AutocompleteModule from './Autocomplete.js';
|
|
4
|
+
import * as BadgeModule from './Badge.js';
|
|
5
|
+
import * as ButtonModule from './Button.js';
|
|
6
|
+
import * as CheckboxModule from './Checkbox.js';
|
|
7
|
+
import * as ColorpickerModule from './Colorpicker.js';
|
|
8
|
+
import * as DatepickerModule from './Datepicker.js';
|
|
9
|
+
import * as DrawerModule from './Drawer.js';
|
|
10
|
+
import * as DropdownModule from './Dropdown.js';
|
|
11
|
+
import * as FabModule from './Fab.js';
|
|
12
|
+
import * as FieldsetModule from './Fieldset.js';
|
|
13
|
+
import * as FileinputModule from './Fileinput.js';
|
|
14
|
+
import * as IndicatorModule from './Indicator.js';
|
|
15
|
+
import * as InputModule from './Input.js';
|
|
16
|
+
import * as ListModule from './List.js';
|
|
17
|
+
import * as LoadingModule from './Loading.js';
|
|
18
|
+
import * as MenuModule from './Menu.js';
|
|
19
|
+
import * as ModalModule from './Modal.js';
|
|
20
|
+
import * as NavbarModule from './Navbar.js';
|
|
21
|
+
import * as RadioModule from './Radio.js';
|
|
22
|
+
import * as RangeModule from './Range.js';
|
|
23
|
+
import * as RatingModule from './Rating.js';
|
|
24
|
+
import * as SelectModule from './Select.js';
|
|
25
|
+
import * as StackModule from './Stack.js';
|
|
26
|
+
import * as StatModule from './Stat.js';
|
|
27
|
+
import * as SwapModule from './Swap.js';
|
|
28
|
+
import * as TableModule from './Table.js';
|
|
29
|
+
import * as TabsModule from './Tabs.js';
|
|
30
|
+
import * as TimelineModule from './Timeline.js';
|
|
31
|
+
import * as ToastModule from './Toast.js';
|
|
32
|
+
import * as TooltipModule from './Tooltip.js';
|
|
33
|
+
|
|
34
|
+
export * from './Accordion.js';
|
|
35
|
+
export * from './Alert.js';
|
|
36
|
+
export * from './Autocomplete.js';
|
|
37
|
+
export * from './Badge.js';
|
|
38
|
+
export * from './Button.js';
|
|
39
|
+
export * from './Checkbox.js';
|
|
40
|
+
export * from './Colorpicker.js';
|
|
41
|
+
export * from './Datepicker.js';
|
|
42
|
+
export * from './Drawer.js';
|
|
43
|
+
export * from './Dropdown.js';
|
|
44
|
+
export * from "./Fab.js";
|
|
45
|
+
export * from './Fieldset.js';
|
|
46
|
+
export * from './Fileinput.js';
|
|
47
|
+
export * from './Indicator.js';
|
|
48
|
+
export * from './Input.js';
|
|
49
|
+
export * from './List.js';
|
|
50
|
+
export * from './Loading.js';
|
|
51
|
+
export * from './Menu.js';
|
|
52
|
+
export * from './Modal.js';
|
|
53
|
+
export * from './Navbar.js';
|
|
54
|
+
export * from './Radio.js';
|
|
55
|
+
export * from './Range.js';
|
|
56
|
+
export * from './Rating.js';
|
|
57
|
+
export * from './Select.js';
|
|
58
|
+
export * from './Stack.js';
|
|
59
|
+
export * from './Stat.js';
|
|
60
|
+
export * from './Swap.js';
|
|
61
|
+
export * from './Table.js';
|
|
62
|
+
export * from './Tabs.js';
|
|
63
|
+
export * from './Timeline.js';
|
|
64
|
+
export * from './Toast.js';
|
|
65
|
+
export * from './Tooltip.js';
|
|
66
|
+
|
|
67
|
+
const Components = {
|
|
68
|
+
...AccordionModule,
|
|
69
|
+
...AlertModule,
|
|
70
|
+
...AutocompleteModule,
|
|
71
|
+
...BadgeModule,
|
|
72
|
+
...ButtonModule,
|
|
73
|
+
...CheckboxModule,
|
|
74
|
+
...ColorpickerModule,
|
|
75
|
+
...DatepickerModule,
|
|
76
|
+
...DrawerModule,
|
|
77
|
+
...DropdownModule,
|
|
78
|
+
...FabModule,
|
|
79
|
+
...FieldsetModule,
|
|
80
|
+
...FileinputModule,
|
|
81
|
+
...IndicatorModule,
|
|
82
|
+
...InputModule,
|
|
83
|
+
...ListModule,
|
|
84
|
+
...LoadingModule,
|
|
85
|
+
...MenuModule,
|
|
86
|
+
...ModalModule,
|
|
87
|
+
...NavbarModule,
|
|
88
|
+
...RadioModule,
|
|
89
|
+
...RangeModule,
|
|
90
|
+
...RatingModule,
|
|
91
|
+
...SelectModule,
|
|
92
|
+
...StackModule,
|
|
93
|
+
...StatModule,
|
|
94
|
+
...SwapModule,
|
|
95
|
+
...TableModule,
|
|
96
|
+
...TabsModule,
|
|
97
|
+
...TimelineModule,
|
|
98
|
+
...ToastModule,
|
|
99
|
+
...TooltipModule
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
export default {
|
|
103
|
+
...Components,
|
|
104
|
+
install: (target = window) => {
|
|
105
|
+
Object.entries(Components).forEach(([name, component]) => {
|
|
106
|
+
target[name] = component;
|
|
107
|
+
});
|
|
108
|
+
console.log("🚀 SigproUI");
|
|
109
|
+
}
|
|
110
|
+
};
|
package/src/core/i18n.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { $ } from "sigpro";
|
|
2
|
+
|
|
3
|
+
export const i18n = {
|
|
4
|
+
es: {
|
|
5
|
+
close: "Cerrar",
|
|
6
|
+
confirm: "Confirmar",
|
|
7
|
+
cancel: "Cancelar",
|
|
8
|
+
search: "Buscar...",
|
|
9
|
+
loading: "Cargando...",
|
|
10
|
+
nodata: "Sin datos"
|
|
11
|
+
},
|
|
12
|
+
en: {
|
|
13
|
+
close: "Close",
|
|
14
|
+
confirm: "Confirm",
|
|
15
|
+
cancel: "Cancel",
|
|
16
|
+
search: "Search...",
|
|
17
|
+
loading: "Loading...",
|
|
18
|
+
nodata: "No data"
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export const currentLocale = $("es");
|
|
23
|
+
|
|
24
|
+
export const Locale = t => currentLocale(t);
|
|
25
|
+
|
|
26
|
+
export const tt = t => () => i18n[currentLocale()][t] || t;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const iconShow = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAdgAAAHYBTnsmCAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAADjSURBVDiN3dJNSgNBEAXgz4DZeAAVJ9tko2St3kaIFxAVt4KZeAD1GKKi7vQSydI/yHgALxAXU02GxniAFBR0v1ev+3V1sZSxjxtM8BM5wTX2/hNu4gFvOMI21iJ3cIwP3GMjF/dQ4RyraOMS34GPAmvjIrBeEnfwjoPGgSM8ooh8QtngB6Ep4BWnmaMqkY1LqqzmDC8tzNDK3/RHzLL9SloUYWfQIMuw3Yl8xrDBH6qbvZWALqbqBqVmlWF7GuKEDwPr5hbXcYdPnKBv/o39wL5wG7ULY1c9NGPzQRrjKrhli1/02zEjWyWMBwAAAABJRU5ErkJggg==";
|
|
2
|
+
export const iconHide = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAdgAAAHYBTnsmCAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAEDSURBVDiN1dK/K8VhFAbwD+VLGSxKcu9guSQ/Zils/gNkuaX4BxRZDTdklYU/QAaDlEVGGwu2Kz/uVbKJzWDwfuv1+jHz1Km3c85znuf0Hv4jxnD2W8MItnCJ5xAX2MQcHsOQL+jEAapYQD9aQwxiDy+B3JKSe1DHCpqQYQ0PeMJOpDyAmyAAirjGbDRwFYcoYCZSzjGP+8B1gqXEUT2QxyPlqaRnGceNeENzUswwil1MBocbSU9DCAXUUI6K25HtIo5QSVaooitP9OEO65iIbE+HXSvBVRbeNZQSR9pxGil3o83HNw5hEbfYR0dKFki5ci+u8OrzIQ1/R8xx7ocL+9t4B0HPOVXjoptxAAAAAElFTkSuQmCC";
|
|
3
|
+
export const iconClose = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAdgAAAHYBTnsmCAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABcSURBVDiN3dIxDoAwCIXhL563g3bSm+hlq4O6GFNbO+k/EV54QIDfsSBk9IA5ZxCQEG+0eGi5BqDHivEhV2xSXXwy2EdOR3xLV+ta0/26wvSm+KTYpPmMzY/0QTZeZR2f+FxhRQAAAABJRU5ErkJggg==";
|
|
4
|
+
export const iconCalendar = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAdgAAAHYBTnsmCAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAACLSURBVDiN7dO9CQJBFEXhb38K0FwQrMNEVpuwB0NjrcYabECsQk0sQ1mTF4zIjrgmBh54MMx998AEwzOrmC5e8gJjbDHCJO7PHYI0v2JT4Ig9DljGwq5DkOZTLOCOMoIhBpknpHmFWx3ldaaUo6oTc2/ab7rl+508f8GvCC5oenTn4tM1cWg/nBNmD4fBH/Kfvt2TAAAAAElFTkSuQmCC";
|
|
5
|
+
export const iconLock = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAWQAAAFkBqp2phgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAACQSURBVDiN7dKxDcJQDATQJ0YgXQQ1bAgDEIZBETPQwjakIjRQ8CMSyR8SiZKTrvHZd/r+JsYSNZrEI1ZR4ywzfElcJ55xwiITOECNTVDf4jDGoEEZ1Etcxxg8pmjRDiahb7BH20uKKPVUkVmL+YjQArdI+PT2bO9Pd/A34O71Rd9QeN/LAFUSckfUscWuG3oCgP8nrDH6T5AAAAAASUVORK5CYII=";
|
|
6
|
+
export const iconAbc = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAdgAAAHYBTnsmCAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAADFSURBVDiN7dCxSoIBFAXgr1BbgmgSB5ubxKAHaAkcgnBpySVaDET3WhzcpQfoHZojawgX0ZZcfAWDSDdBoeUKP/8ojZ7tnnPv4dzDFv+KZzwl5jf84B354C4wwjdeUV4vl7DCEsXgxmhigDpOMcMVjoKr7cTyI/ZxiE90wmCB4zi+RRatZOxd7OEavxHtBmvjIV5wH2a59N8ZXIZQisMCzkL/wgGq6EYffXzgHHNo4y5h+oBGlLjEBJVUiVP0cJJOtMUG+APtfyYzbH7eVgAAAABJRU5ErkJggg==";
|
|
7
|
+
export const icon123 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAB2AAAAdgFOeyYIAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAMxJREFUOI3t0bFKwlEUBvBfmmBEr1APIDZJ9AJJQyAIvkGP0C4uQruza+DUmuIc9AC9gBG4Nmpkw/8IB3Vw1w8u95zvnvPde77LEeUUV9HAF67QRA2nmMf5A+o4x3cWOsMYy8j7WMX6jaYbLBL/mAWe8RcHm1ihs8G94gVKQQzwlAouMcQo8p/Y28HdYpYFZmsi0MVdxD1MdrxsC500wijdvgtbI1AYtDbxMwkuFAZmE1uYwkkSqOIaHyHcxEU0vUXNPSqKr37fZ6xDwD9DPS0OyHjQHQAAAABJRU5ErkJggg==";
|
|
8
|
+
export const iconMail = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAdgAAAHYBTnsmCAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAC4SURBVDiNxdIxagJRFIXhLzLFBNJYaJslSEylWOhq3IorMGQ16SyjYCFiZWU5pTaDFvOUyTAZ8RHID69555577oXLf/OEGaY4R3g/4IhORHg3eOXYYvSAeRQ8OWQYYoNPvDQYnxUr7zBB1grCAv3QbIlxjXmAb7Txhq+rkFUKq9NUU8vcJiizwDtOWGEdmvTKqT+61H0GXsP7jSxpEGF/R1e3wkO0FBeVRnhTSBTneBB3yvOI4D/mAnvrIwKM5s4AAAAAAElFTkSuQmCC";
|
|
9
|
+
export const iconInfo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAnXAAAJ1wGxbhe3AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAASVJREFUOI190r0uhFEQBuBnVxaF2PUTCkFchV0SV6BQi0rEbShFlCqNktJP0Iqf3i3YVSlXVEQozojP8e2+ySSTed+ZMzNnKnpjCFPhv+C9j/YPlnCBV3TCujhHq19iFftoYxOjBa4esTb2QvsP+7jFWJ9HxnEXRf5gGU9Z8gKucBl+sUgHTahE8AJnOCoIT/AcmhmsF7gtrGINBqWFFWcmLXMUhzjIuEbk1GA+2i/DNh4wUsK1MVfFV2GUHJO4xlsPHr8j1Eu44bAcDek2agP4lDZaxWMm3MEKbrL4hjT/8U+gJc00nglnw4qYkL5xMW9rTzqSvEiefI/dMrIaRTrSPzcKXCNinUguPeUfNKWj6kqH9Bz+aVnbvb6PtKTp8F/wUSb6Bu5YN5n7ff0kAAAAAElFTkSuQmCC";
|
|
10
|
+
export const iconSuccess = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAnXAAAJ1wGxbhe3AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAQtJREFUOI2F0jFOAlEQBuAPImoFqyTa6TEEbfUihruYDYfwCAg3UDsTY20na0VjgqUWWuxgHsuy/skk82bmn/fPm9eyHXs4Cn+Br4baNZxjhk8UYUtMMWwitjHGHNfoJrlexObIo3YDY9zjoOGSQzxEkzVc4O0fctqkwCANzkJiE9LmI9ytDrvKB+tWGQnylIAsOB04VcrfdluO55CeYo6THfygVUne4jX8S1zho1LTDu7fCL2KxCe8oF8zUqb8G51VYGrzEffD6jDCJA0MY6bqnHXoK9d4Vk3kyk/S1KSPR9zUJdvRpAiJWZLLIlYEufYrrzBQ7nyJ97ClcuYN2dX1pejgOPwFvuuKfgHXiDR+HL1j1AAAAABJRU5ErkJggg==";
|
|
11
|
+
export const iconError = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAnXAAAJ1wGxbhe3AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAARZJREFUOI2V0j1KQ1EQBeDPp4lWRiMoKVyAK9AoiLgJGytxD9oJNhKyDyvBnw2IugC3YGKVRk1KRbR48yC5vjzwwIHL3DPnzp2ZGdMxj9U4D/BZoZ3ANu4wQj84xC3aVYkZuujhCItjd42I9dAJ7R908YDlikeaeAyTCezgpST5IJia9LFVlA0nOMd7It4IjuMttKeFQR17uKooPcUV9lHL0ArX0T8MPqLa1hx+MDNFWDX7LHLV4/VGiWghmGJJvhu1WXzLO5rhORGeYRf3SfwQNVwWgbZ8SZqJcD04jhX5GDfTsjryJUlN0uQnXJRdZmHSx7H8nwWWItaP5NJVLrCFG3mTXoNDXJeVPW185E1ai/MAX2WiX9S3NSPYbj+uAAAAAElFTkSuQmCC";
|
|
12
|
+
export const iconWarning = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAnXAAAJ1wGxbhe3AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAARJJREFUOI2l0r8uRFEQBvAfu9glwUYiUaxHUEl0VDpKeq+wpZBINAqFRHgTKg0tCSqVhmKDEM1u/Esodm725rq7iC+ZzMnM982ZmXP4JwpdchWsYBrXeMkj9XQQV3GEi+BMYR63v+mqiDPUUrEaTiP3I1ZxEOcySnE+jFxXVPEQPimWiCYzOdCbKbCFPe1Z+8PgBvvBycVMCIdSsY2wBEPBmcnrYBtraKRib2EJGljHjswLLuI8Z6SS9hLTl15iIR08wZLv2AzLYjk0YATP8n9lVWbrgUJohosYxCdG8Zghdvp5ldCUi6hrPd0VjvGEVzTxEYLkogGMYQ67uEtvcgKzGA8y9IV/D9/Evdb89Q7d/Q1fB8U0mpUmzV0AAAAASUVORK5CYII=";
|
|
13
|
+
export const iconLeft = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAdgAAAHYBTnsmCAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABfSURBVDiNY2AY8oCZSHWxDAwMEgwMDHfJsaSAgYHhH9QQsjT/Z2BgKKe75gQGiLMLCSlkwiHOSI6t6ADmhYoBN6SIARIeidgkiUlIxxkYGB4xMDB8YmBguE6JSwYpAACvLRHTKwPjZgAAAABJRU5ErkJggg==";
|
|
14
|
+
export const iconRight = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAdgAAAHYBTnsmCAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABNSURBVDiN3dAxCoAwFATRh3fU2oAHiDbi5Y1F2jT+gKLbzyy7/DYjUo8g4cTWI8koOF6XrOqc5ifDDVGJthfsj8OLujtHYJgwR+GP5QKMxA9/SolDQgAAAABJRU5ErkJggg==";
|
|
15
|
+
export const iconLLeft = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAdgAAAHYBTnsmCAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABlSURBVDiN3ZLBDUBAEEUfmtCchA5woUMlOO1FCQrAwbqwf8eFhHd7mfzJn2Tg82TGvABywAmPUgOLD4XcDK9AJ/y5cOlrNsIvpCdPDL/FUbkX/t6Slv3+SjgQf6QBmIAZGAP+FzZJViOd89x8pAAAAABJRU5ErkJggg==";
|
|
16
|
+
export const iconRRight = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAdgAAAHYBTnsmCAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABmSURBVDiN3dGxCoAgEMbxfz1dL1BTREJzmUv08trgDYcg6VCD3/YD7zvkoLmMgFEegLmmwAAecOJVvNeUWCAAt7IHjt9LThkyiRf9qC8oCom70u0BuDL+bngj/tNm/JqJePucW8wDvGYdzT0nMUkAAAAASUVORK5CYII=";
|
|
17
|
+
export const iconUpload = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAdgAAAHYBTnsmCAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAADNSURBVDiNndOxTgJRFIThz41ZDMFKqH0DLSRSq4lQ0RifUcMzUJlYQKjtLcHVSimBggPRNSzs/sk0kzPnTHEvxZyHKnGJD3yhXSWcYRnKwvvH0Y7wEG/4wQI1XOEek6LLF3FtiDoGoXp4WcxsSXILHjFCH/Nf/jy8ER6KGuTZNNhJvkFpEpygUyHbRi1BFy8VFryilyANlSVFerxn6N36IRVyG0PNEtdbkbmBU8zwdOCSJp4xRWNj3sWS5YGaRvM/f6GBa5ztafCJMb5hBQQ/MMwXLnnZAAAAAElFTkSuQmCC";
|