@shibui-ui/ui 1.25.0 → 1.25.1
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/index11.js +1 -1
- package/dist/index194.js +97 -6
- package/dist/index194.js.map +1 -1
- package/dist/index195.js +2 -2
- package/dist/index197.js +2 -18
- package/dist/index197.js.map +1 -1
- package/dist/index198.js +74 -2
- package/dist/index198.js.map +1 -1
- package/dist/index199.js +64 -74
- package/dist/index199.js.map +1 -1
- package/dist/index200.js +2 -2
- package/dist/index201.js +57 -2
- package/dist/index201.js.map +1 -1
- package/dist/index202.js +2 -39
- package/dist/index202.js.map +1 -1
- package/dist/index203.js +2 -2
- package/dist/index204.js +144 -219
- package/dist/index204.js.map +1 -1
- package/dist/index205.js +43 -82
- package/dist/index205.js.map +1 -1
- package/dist/index206.js +51 -2
- package/dist/index206.js.map +1 -1
- package/dist/index207.js +2 -94
- package/dist/index207.js.map +1 -1
- package/dist/index208.js +33 -2
- package/dist/index208.js.map +1 -1
- package/dist/index209.js +2 -268
- package/dist/index209.js.map +1 -1
- package/dist/index210.js +6 -2
- package/dist/index210.js.map +1 -1
- package/dist/index211.js +2 -21
- package/dist/index211.js.map +1 -1
- package/dist/index212.js +260 -2
- package/dist/index212.js.map +1 -1
- package/dist/index213.js +16 -8
- package/dist/index213.js.map +1 -1
- package/dist/index214.js +2 -2
- package/dist/index215.js +2 -15
- package/dist/index215.js.map +1 -1
- package/dist/index216.js +66 -2
- package/dist/index216.js.map +1 -1
- package/dist/index217.js +24 -146
- package/dist/index217.js.map +1 -1
- package/dist/index218.js +2 -2
- package/dist/index219.js +2 -5
- package/dist/index219.js.map +1 -1
- package/dist/index220.js +81 -2
- package/dist/index220.js.map +1 -1
- package/dist/index221.js +78 -6
- package/dist/index221.js.map +1 -1
- package/dist/index222.js +2 -2
- package/dist/index223.js +133 -2
- package/dist/index223.js.map +1 -1
- package/dist/index224.js +2 -92
- package/dist/index224.js.map +1 -1
- package/dist/index225.js +2 -59
- package/dist/index225.js.map +1 -1
- package/dist/index226.js +72 -2
- package/dist/index226.js.map +1 -1
- package/dist/index227.js +94 -97
- package/dist/index227.js.map +1 -1
- package/dist/index228.js +2 -2
- package/dist/index229.js +71 -2
- package/dist/index229.js.map +1 -1
- package/dist/index230.js +2 -74
- package/dist/index230.js.map +1 -1
- package/dist/index231.js +2 -74
- package/dist/index231.js.map +1 -1
- package/dist/index232.js +12 -2
- package/dist/index232.js.map +1 -1
- package/dist/index233.js +5 -53
- package/dist/index233.js.map +1 -1
- package/dist/index234.js +2 -2
- package/dist/index235.js +18 -2
- package/dist/index235.js.map +1 -1
- package/dist/index236.js +2 -162
- package/dist/index236.js.map +1 -1
- package/dist/index237.js +84 -43
- package/dist/index237.js.map +1 -1
- package/dist/index238.js +2 -51
- package/dist/index238.js.map +1 -1
- package/dist/index239.js +2 -2
- package/dist/index240.js +39 -33
- package/dist/index240.js.map +1 -1
- package/dist/index241.js +2 -2
- package/dist/index242.js +236 -5
- package/dist/index242.js.map +1 -1
- package/dist/index243.js +82 -2
- package/dist/index243.js.map +1 -1
- package/dist/index244.js +2 -260
- package/dist/index244.js.map +1 -1
- package/dist/index245.js +93 -16
- package/dist/index245.js.map +1 -1
- package/dist/index246.js +2 -2
- package/dist/index247.js +268 -2
- package/dist/index247.js.map +1 -1
- package/dist/index248.js +2 -66
- package/dist/index248.js.map +1 -1
- package/dist/index249.js +13 -24
- package/dist/index249.js.map +1 -1
- package/dist/index250.js +2 -2
- package/dist/index251.js +9 -2
- package/dist/index251.js.map +1 -1
- package/dist/index252.js +2 -81
- package/dist/index252.js.map +1 -1
- package/dist/index253.js +12 -78
- package/dist/index253.js.map +1 -1
- package/dist/index254.js +2 -2
- package/dist/index255.js +132 -111
- package/dist/index255.js.map +1 -1
- package/dist/index256.js +2 -2
- package/dist/index257.js +5 -2
- package/dist/index257.js.map +1 -1
- package/dist/index258.js +2 -72
- package/dist/index258.js.map +1 -1
- package/dist/index259.js +5 -93
- package/dist/index259.js.map +1 -1
- package/dist/index260.js +2 -2
- package/dist/index261.js +2 -71
- package/dist/index261.js.map +1 -1
- package/dist/index262.js +92 -2
- package/dist/index262.js.map +1 -1
- package/dist/index263.js +59 -2
- package/dist/index263.js.map +1 -1
- package/dist/index264.js +2 -12
- package/dist/index264.js.map +1 -1
- package/dist/index34.js +1 -1
- package/dist/index347.js +1 -1
- package/dist/index353.js +14 -32
- package/dist/index353.js.map +1 -1
- package/dist/index354.js +20 -6
- package/dist/index354.js.map +1 -1
- package/dist/index355.js +56 -18
- package/dist/index355.js.map +1 -1
- package/dist/index356.js +55 -57
- package/dist/index356.js.map +1 -1
- package/dist/index357.js +32 -64
- package/dist/index357.js.map +1 -1
- package/dist/index44.js +1 -1
- package/dist/index47.js +1 -1
- package/dist/index49.js +2 -2
- package/dist/index50.js +2 -2
- package/dist/index51.js +2 -2
- package/dist/index52.js +2 -2
- package/dist/index53.js +3 -3
- package/dist/index54.js +2 -2
- package/dist/index55.js +2 -2
- package/dist/index56.js +3 -3
- package/dist/index57.js +2 -2
- package/dist/index58.js +2 -2
- package/dist/index59.js +2 -2
- package/dist/index60.js +2 -2
- package/dist/index61.js +2 -2
- package/dist/index62.js +2 -2
- package/dist/index63.js +2 -2
- package/dist/index64.js +2 -2
- package/dist/index65.js +2 -2
- package/dist/index66.js +1 -1
- package/dist/index67.js +1 -1
- package/dist/index68.js +2 -2
- package/dist/index69.js +2 -2
- package/dist/index70.js +2 -2
- package/dist/index71.js +2 -2
- package/dist/index72.js +2 -2
- package/dist/index73.js +2 -2
- package/dist/index74.js +2 -2
- package/dist/index75.js +2 -2
- package/dist/index76.js +2 -2
- package/dist/index77.js +2 -2
- package/dist/index78.js +2 -2
- package/dist/index79.js +2 -2
- package/dist/index80.js +2 -2
- package/dist/index81.js +2 -2
- package/dist/index82.js +1 -1
- package/dist/index83.js +2 -2
- package/dist/index84.js +2 -2
- package/package.json +4 -4
package/dist/index232.js
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2021 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
5
|
+
*/
|
|
6
|
+
function* o(o2, f) {
|
|
7
|
+
if (void 0 !== o2) {
|
|
8
|
+
let i = 0;
|
|
9
|
+
for (const t of o2) yield f(t, i++);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
2
12
|
export {
|
|
3
|
-
|
|
13
|
+
o as map
|
|
4
14
|
};
|
|
5
15
|
//# sourceMappingURL=index232.js.map
|
package/dist/index232.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index232.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"index232.js","sources":["../../../node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directives/map.js"],"sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nfunction*o(o,f){if(void 0!==o){let i=0;for(const t of o)yield f(t,i++)}}export{o as map};\n//# sourceMappingURL=map.js.map\n"],"names":["o"],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,UAAS,EAAEA,IAAE,GAAE;AAAC,MAAG,WAASA,IAAE;AAAC,QAAI,IAAE;AAAE,eAAU,KAAKA,GAAE,OAAM,EAAE,GAAE,GAAG;AAAA,EAAC;AAAC;","x_google_ignoreList":[0]}
|
package/dist/index233.js
CHANGED
|
@@ -1,60 +1,12 @@
|
|
|
1
1
|
import { html } from "lit";
|
|
2
|
-
|
|
3
|
-
<svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true">
|
|
4
|
-
<path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"/>
|
|
5
|
-
</svg>`;
|
|
6
|
-
function staticChip() {
|
|
2
|
+
function accordionTemplate(props) {
|
|
7
3
|
return html`
|
|
8
|
-
<
|
|
9
|
-
<slot name="icon"></slot>
|
|
4
|
+
<div class="accordion__root" @accordion-toggle=${props.onToggle}>
|
|
10
5
|
<slot></slot>
|
|
11
|
-
</
|
|
12
|
-
|
|
13
|
-
function toggleChip(ctx) {
|
|
14
|
-
return html`
|
|
15
|
-
<button
|
|
16
|
-
class="chip-toggle"
|
|
17
|
-
part="chip"
|
|
18
|
-
role="checkbox"
|
|
19
|
-
aria-checked="${ctx.selected}"
|
|
20
|
-
aria-label="${ctx.ariaLabel}"
|
|
21
|
-
@click="${() => ctx._handleToggle()}"
|
|
22
|
-
@keydown="${(e) => {
|
|
23
|
-
if (e.key === "Enter" || e.key === " ") {
|
|
24
|
-
e.preventDefault();
|
|
25
|
-
ctx._handleToggle();
|
|
26
|
-
}
|
|
27
|
-
}}"
|
|
28
|
-
>
|
|
29
|
-
<slot name="icon"></slot>
|
|
30
|
-
<slot></slot>
|
|
31
|
-
</button>`;
|
|
32
|
-
}
|
|
33
|
-
function inputChip(ctx) {
|
|
34
|
-
return html`
|
|
35
|
-
<span class="chip-input" part="chip">
|
|
36
|
-
<slot name="avatar"></slot>
|
|
37
|
-
<slot name="icon"></slot>
|
|
38
|
-
<slot></slot>
|
|
39
|
-
<button
|
|
40
|
-
class="chip-remove"
|
|
41
|
-
part="remove"
|
|
42
|
-
type="button"
|
|
43
|
-
aria-label="Eliminar ${ctx.ariaLabel || ""}"
|
|
44
|
-
@click="${(e) => ctx._handleRemove(e)}"
|
|
45
|
-
>
|
|
46
|
-
${removeSvg}
|
|
47
|
-
</button>
|
|
48
|
-
</span>`;
|
|
49
|
-
}
|
|
50
|
-
function chipTemplate(ctx) {
|
|
51
|
-
if (ctx.kind === "toggle") return toggleChip(ctx);
|
|
52
|
-
if (ctx.kind === "input") return inputChip(ctx);
|
|
53
|
-
return staticChip(
|
|
54
|
-
/*ctx*/
|
|
55
|
-
);
|
|
6
|
+
</div>
|
|
7
|
+
`;
|
|
56
8
|
}
|
|
57
9
|
export {
|
|
58
|
-
|
|
10
|
+
accordionTemplate
|
|
59
11
|
};
|
|
60
12
|
//# sourceMappingURL=index233.js.map
|
package/dist/index233.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index233.js","sources":["../src/components/
|
|
1
|
+
{"version":3,"file":"index233.js","sources":["../src/components/organisms/accordion/lib-accordion.component.html.ts"],"sourcesContent":["import { html, TemplateResult } from 'lit';\n\nexport interface AccordionTemplateProps {\n onToggle: (e: Event) => void;\n}\n\n/**\n * Plantilla para lib-accordion.\n *\n * El organismo es un contenedor de slot: no renderiza items propios,\n * solo orquesta el comportamiento exclusive y aplica variantes via CSS.\n */\nexport function accordionTemplate(props: AccordionTemplateProps): TemplateResult {\n return html`\n <div class=\"accordion__root\" @accordion-toggle=${props.onToggle}>\n <slot></slot>\n </div>\n `;\n}"],"names":[],"mappings":";AAYO,SAAS,kBAAkB,OAA+C;AAC/E,SAAO;AAAA,qDAC4C,MAAM,QAAQ;AAAA;AAAA;AAAA;AAInE;"}
|
package/dist/index234.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const
|
|
1
|
+
const accordionCss = '@layer tokens,reset,components;@layer reset{:host{display:block}*,*:before,*:after{box-sizing:border-box}}@layer components{:host{border:1px solid var(--border-subtle);background:var(--bg-elevated);display:block}.accordion__root{display:flex;flex-direction:column}::slotted(lib-accordion-item:last-of-type){border-bottom:none!important}:host([variant="flush"]){border:none;background:transparent;box-shadow:none}:host([variant="flush"]) ::slotted(lib-accordion-item){--accordion-item-trigger-px: 0px;--accordion-item-content-px: 0px;--accordion-item-trigger-hover-bg: transparent;--accordion-item-trigger-bg: transparent;--accordion-item-body-bg: transparent}:host([variant="separated"]){border:none;background:transparent;box-shadow:none}:host([variant="separated"]) .accordion__root{gap:var(--lib-space-sm)}:host([variant="separated"]) ::slotted(lib-accordion-item){border:1px solid var(--border-subtle)!important;transition:box-shadow var(--duration-slow) var(--ease-out),border-color var(--duration-slow) var(--ease-out)}:host([variant="separated"]) ::slotted(lib-accordion-item[open]){box-shadow:var(--shadow-md);border-color:var(--border-default)!important}:host([variant="accent"]){border:1px solid var(--border-subtle);background:var(--bg-elevated)}:host([variant="accent"]) ::slotted(lib-accordion-item[open]){--accordion-item-accent-border: 2px solid var(--color-kaki-400);--accordion-item-trigger-bg: var(--color-kaki-50);--accordion-item-trigger-hover-bg: var(--color-kaki-100);--accordion-item-body-bg: var(--color-kaki-50);--accordion-item-label-color: var(--color-kaki-600);--accordion-item-icon-color: var(--color-kaki-400);--accordion-item-content-border: var(--color-kaki-200);--accordion-item-content-color: var(--color-kaki-600)}@media(prefers-reduced-motion:reduce){::slotted(lib-accordion-item){transition:none}}}';
|
|
2
2
|
export {
|
|
3
|
-
|
|
3
|
+
accordionCss as default
|
|
4
4
|
};
|
|
5
5
|
//# sourceMappingURL=index234.js.map
|
package/dist/index235.js
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
|
-
const pickerCss = '@layer tokens,reset,components;@layer reset{:host{display:inline-block}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}}@layer components{.cp{width:260px;background:var(--bg-elevated);border:1px solid var(--border-default);box-shadow:var(--shadow-md);-webkit-user-select:none;user-select:none;flex-shrink:0}.cp-canvas{width:100%;height:160px;position:relative;cursor:crosshair;overflow:hidden}.cp-canvas:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to right,#fff 0%,transparent 100%);pointer-events:none}.cp-canvas:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to bottom,transparent 0%,#000 100%);pointer-events:none}.cp-thumb{position:absolute;width:14px;height:14px;border-radius:var(--radius-full);border:2px solid #fff;box-shadow:0 0 0 1px #0000004d,0 2px 4px #0003;transform:translate(-50%,-50%);z-index:2;pointer-events:none;transition:transform var(--duration-fast)}.cp-canvas:active .cp-thumb{transform:translate(-50%,-50%) scale(1.15)}.cp-sliders{display:flex;gap:var(--lib-space-sm);align-items:center;padding:var(--lib-space-sm) var(--lib-space-md) 0}.cp-preview-dot{width:28px;height:28px;border-radius:var(--radius-full);flex-shrink:0;border:1px solid rgb(0,0,0,.1);position:relative;overflow:hidden}.cp-preview-dot:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(45deg,#ccc 25%,transparent 25%),linear-gradient(-45deg,#ccc 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#ccc 75%),linear-gradient(-45deg,transparent 75%,#ccc 75%);background-size:6px 6px;background-position:0 0,0 3px,3px -3px,-3px 0}.cp-preview-color{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--radius-full)}.cp-sliders-stack{display:flex;flex-direction:column;gap:var(--lib-space-xs);flex:1}.cp-range{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:10px;border-radius:var(--radius-full);border:1px solid rgb(0,0,0,.08);outline:none;cursor:pointer}.cp-range::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;border-radius:var(--radius-full);background:#fff;border:1px solid rgb(0,0,0,.25);box-shadow:0 1px 3px #0003;cursor:grab;transition:transform var(--duration-fast),box-shadow var(--duration-fast)}.cp-range::-webkit-slider-thumb:active{cursor:grabbing;transform:scale(1.15);box-shadow:0 2px 6px #00000040}.cp-range::-moz-range-thumb{width:14px;height:14px;border-radius:var(--radius-full);background:#fff;border:1px solid rgb(0,0,0,.25);box-shadow:0 1px 3px #0003;cursor:grab}.cp-range-hue{background:linear-gradient(to right,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#7f00ff,#f0f,#ff0080,red)}.cp-alpha-wrap{position:relative;border-radius:var(--radius-full);overflow:hidden}.cp-alpha-checker{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(45deg,#aaa 25%,transparent 25%),linear-gradient(-45deg,#aaa 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#aaa 75%),linear-gradient(-45deg,transparent 75%,#aaa 75%);background-size:8px 8px;background-position:0 0,0 4px,4px -4px,-4px 0;background-color:#eee;border-radius:var(--radius-full);border:1px solid rgb(0,0,0,.08)}.cp-alpha-checker .cp-range-alpha{position:relative;z-index:1;background:transparent;border:none}.cp-inputs-wrap{padding:var(--lib-space-sm) var(--lib-space-md);display:flex;gap:var(--lib-space-xs);align-items:flex-start;border-top:1px solid var(--border-subtle)}.cp-mode-btn{width:22px;height:22px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--text-muted);background:transparent;border:none;cursor:pointer;transition:color var(--duration-fast);margin-top:4px;padding:0}.cp-mode-btn:hover{color:var(--text-primary)}.cp-input-group{display:flex;flex-direction:column;gap:0;min-width:0}.cp-input{font-family:var(--lib-font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-wide);color:var(--text-primary);background:var(--bg-base);border:1px solid var(--border-default);padding:var(--lib-space-xs) var(--lib-space-sm);outline:none;width:100%;transition:border-color var(--duration-base),box-shadow var(--duration-base);text-transform:uppercase}.cp-input:focus{border-color:var(--color-washi-700);box-shadow:0 0 0 3px #1a140e17}.cp-input[type=number]{text-transform:none}.cp-input-label{font-family:var(--lib-font-mono);font-size:9px;letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--text-muted);display:block;text-align:center;margin-top:3px}.cp-saved{padding:var(--lib-space-xs) var(--lib-space-md) var(--lib-space-sm);border-top:1px solid var(--border-subtle);display:flex;align-items:center;gap:var(--lib-space-xs);flex-wrap:wrap}.cp-saved-label{font-family:var(--lib-font-mono);font-size:9px;letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--text-muted);width:100%}.cp-saved-add{width:20px;height:20px;border:1px dashed var(--border-default);display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--text-muted);cursor:pointer;background:transparent;transition:border-color var(--duration-fast),color var(--duration-fast),background var(--duration-fast);flex-shrink:0;line-height:1}.cp-saved-add:hover{border-color:var(--color-washi-700);color:var(--text-primary);background:var(--bg-surface)}.cp-actions{display:flex;gap:var(--lib-space-xs);padding:var(--lib-space-sm) var(--lib-space-md);border-top:1px solid var(--border-subtle);background:var(--bg-surface)}.cp-btn{font-family:var(--lib-font-mono);font-size:10px;letter-spacing:var(--tracking-wider);text-transform:uppercase;border:none;padding:var(--lib-space-xs) var(--lib-space-md);cursor:pointer;transition:background var(--duration-base),color var(--duration-base);flex:1}.cp-btn-cancel{background:transparent;border:1px solid var(--border-default);color:var(--text-muted)}.cp-btn-cancel:hover{background:var(--color-washi-200);color:var(--text-primary)}.cp-btn-ok{background:var(--color-washi-900);color:var(--color-washi-50)}.cp-btn-ok:hover{background:var(--color-washi-800)}.cp-trigger-wrap{position:relative;display:inline-block}.cp-trigger{display:flex;align-items:center;gap:var(--lib-space-sm);font-family:var(--lib-font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-wide);color:var(--text-secondary);background:var(--bg-elevated);border:1px solid var(--border-default);padding:var(--lib-space-xs) var(--lib-space-sm);cursor:pointer;transition:border-color var(--duration-base),box-shadow var(--duration-base);outline:none}.cp-trigger:focus,.cp-trigger.is-open{border-color:var(--color-washi-700);box-shadow:0 0 0 3px #1a140e17}.cp-trigger-dot{width:18px;height:18px;border:1px solid rgb(0,0,0,.1);flex-shrink:0;position:relative;overflow:hidden}.cp-trigger-dot:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(45deg,#ccc 25%,transparent 25%),linear-gradient(-45deg,#ccc 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#ccc 75%),linear-gradient(-45deg,transparent 75%,#ccc 75%);background-size:6px 6px;background-position:0 0,0 3px,3px -3px,-3px 0}.cp-trigger-color{position:absolute;top:0;right:0;bottom:0;left:0}.cp-trigger-wrap .cp{position:absolute;top:calc(100% + 6px);left:0;z-index:400;opacity:0;transform:translateY(-4px);pointer-events:none;transition:opacity var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out)}.cp-trigger-wrap .cp.is-open{opacity:1;transform:translateY(0);pointer-events:auto}.cp-swatches{display:flex;flex-direction:column;gap:var(--lib-space-sm)}.cp-swatches-row{display:flex;gap:var(--lib-space-xs);align-items:center}.cp-swatches-label{font-family:var(--lib-font-mono);font-size:9px;letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--text-muted);width:52px;flex-shrink:0}.cp-swatch{width:24px;height:24px;border:1px solid rgb(0,0,0,.08);cursor:pointer;position:relative;flex-shrink:0;transition:transform var(--duration-fast),box-shadow var(--duration-fast)}.cp-swatch:hover{transform:scale(1.18);box-shadow:0 2px 8px #0000002e;z-index:1}.cp-swatch.is-selected:after{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border:2px solid var(--color-washi-900)}.cp-swatch[data-name]:before{content:attr(data-name);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);font-family:var(--lib-font-mono);font-size:9px;letter-spacing:var(--tracking-wide);white-space:nowrap;background:var(--color-washi-900);color:var(--color-washi-100);padding:2px var(--lib-space-xs);pointer-events:none;opacity:0;transition:opacity var(--duration-base);z-index:10}.cp-swatch[data-name]:hover:before{opacity:1}.cp-swatch-sm{width:18px;height:18px}.cp-swatch-lg{width:32px;height:32px}.cp-swatch-xl{width:48px;height:48px}:host([dark]) .cp{background:#0a0403;border-color:#1e130e;box-shadow:0 8px 32px #00000080}:host([dark]) .cp-input{background:#060201;border-color:#231813;color:#998c84}:host([dark]) .cp-input:focus{border-color:#6d6059}:host([dark]) .cp-input-label{color:#2a1f19}:host([dark]) .cp-saved{border-color:#190f0a}:host([dark]) .cp-saved-label{color:#2a1f19}:host([dark]) .cp-saved-add{border-color:#231813;color:#362b25}:host([dark]) .cp-saved-add:hover{background:#150a06;border-color:#51453e;color:#998c84}:host([dark]) .cp-actions{background:#060201;border-color:#190f0a}:host([dark]) .cp-btn-cancel{border-color:#231813;color:#433831}:host([dark]) .cp-btn-cancel:hover{background:#190f0a;color:#998c84}:host([dark]) .cp-mode-btn{color:#362b25}:host([dark]) .cp-mode-btn:hover{color:#998c84}:host([dark]) .cp-inputs-wrap{border-color:#190f0a}:host([dark]) .cp-trigger{background:#100704;border-color:#1e130e;color:#5f524c}:host([dark]) .cp-trigger:focus,:host([dark]) .cp-trigger.is-open{border-color:#6d6059}:host([dark]) .cp-swatch.is-selected:after{border-color:#998c84}:host([dark]) .cp-swatches-label{color:#312620}:host([disabled]){pointer-events:none;opacity:.5}}';
|
|
1
|
+
import { html } from "lit";
|
|
2
|
+
function bentoGridTemplate(ctx) {
|
|
3
|
+
return html`
|
|
4
|
+
<div
|
|
5
|
+
class="bento-grid"
|
|
6
|
+
part="grid"
|
|
7
|
+
role="presentation"
|
|
8
|
+
style="
|
|
9
|
+
--_columns: ${ctx.columns};
|
|
10
|
+
--_gap: var(--lib-space-${ctx.gap});
|
|
11
|
+
--_row-height: ${ctx.rowHeight};
|
|
12
|
+
"
|
|
13
|
+
>
|
|
14
|
+
<slot></slot>
|
|
15
|
+
</div>
|
|
16
|
+
`;
|
|
17
|
+
}
|
|
2
18
|
export {
|
|
3
|
-
|
|
19
|
+
bentoGridTemplate
|
|
4
20
|
};
|
|
5
21
|
//# sourceMappingURL=index235.js.map
|
package/dist/index235.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index235.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"index235.js","sources":["../src/components/organisms/bento-grid/lib-bento-grid.html.ts"],"sourcesContent":["import { html, TemplateResult } from 'lit';\nimport type { LibBentoGrid } from './lib-bento-grid.component';\n\nexport function bentoGridTemplate(ctx: LibBentoGrid): TemplateResult {\n return html`\n <div\n class=\"bento-grid\"\n part=\"grid\"\n role=\"presentation\"\n style=\"\n --_columns: ${ctx.columns};\n --_gap: var(--lib-space-${ctx.gap});\n --_row-height: ${ctx.rowHeight};\n \"\n >\n <slot></slot>\n </div>\n `;\n}"],"names":[],"mappings":";AAGO,SAAS,kBAAkB,KAAmC;AACnE,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAMa,IAAI,OAAO;AAAA,kCACC,IAAI,GAAG;AAAA,yBAChB,IAAI,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAMtC;"}
|
package/dist/index236.js
CHANGED
|
@@ -1,165 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
const ROTATE_SVG = html`<svg width="12" height="12" viewBox="0 0 12 12" fill="none" stroke="currentColor"
|
|
3
|
-
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
|
|
4
|
-
<path d="M10 2.5A4.5 4.5 0 1 0 11 6"/>
|
|
5
|
-
<path d="M10 .5v2h2"/>
|
|
6
|
-
</svg>`;
|
|
7
|
-
const CARET_SVG = html`<svg width="10" height="10" viewBox="0 0 10 10" fill="none" stroke="currentColor"
|
|
8
|
-
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
|
|
9
|
-
<path d="M2 4l3 3 3-3"/>
|
|
10
|
-
</svg>`;
|
|
11
|
-
function swatchGridTemplate(props) {
|
|
12
|
-
const { rows, selected, onSelect } = props;
|
|
13
|
-
return html`
|
|
14
|
-
<div class="cp-swatches">
|
|
15
|
-
${rows.map((row) => html`
|
|
16
|
-
<div class="cp-swatches-row">
|
|
17
|
-
<span class="cp-swatches-label">${row.label}</span>
|
|
18
|
-
${row.colors.map((c) => html`
|
|
19
|
-
<div
|
|
20
|
-
class="cp-swatch ${c.value.toLowerCase() === selected.toLowerCase() ? "is-selected" : ""}"
|
|
21
|
-
style="background:${c.value};"
|
|
22
|
-
data-name="${c.name ?? ""}"
|
|
23
|
-
@click="${() => onSelect(c)}"
|
|
24
|
-
role="button"
|
|
25
|
-
aria-label="${c.name ?? c.value}"
|
|
26
|
-
></div>
|
|
27
|
-
`)}
|
|
28
|
-
</div>
|
|
29
|
-
`)}
|
|
30
|
-
</div>
|
|
31
|
-
`;
|
|
32
|
-
}
|
|
33
|
-
function pickerPanelTemplate(p) {
|
|
34
|
-
const { hex, r, g, b, h, s, l, alpha, inputMode, savedColors, showAlpha } = p;
|
|
35
|
-
const thumbX = s;
|
|
36
|
-
const thumbY = 100 - l;
|
|
37
|
-
const cssColor = alpha < 100 ? `rgba(${r},${g},${b},${(alpha / 100).toFixed(2)})` : hex;
|
|
38
|
-
const alphaGradient = `linear-gradient(to right, transparent, hsl(${h},${s}%,${l}%))`;
|
|
39
|
-
const inputsBlock = inputMode === "hex" ? html`
|
|
40
|
-
<div class="cp-input-group" style="flex:3">
|
|
41
|
-
<input class="cp-input" type="text" .value="${hex}" maxlength="7"
|
|
42
|
-
@input="${p.onHexInput}">
|
|
43
|
-
<span class="cp-input-label">HEX</span>
|
|
44
|
-
</div>
|
|
45
|
-
${showAlpha ? html`
|
|
46
|
-
<div class="cp-input-group" style="flex:1">
|
|
47
|
-
<input class="cp-input" type="number" .value="${String(Math.round(alpha))}" min="0" max="100"
|
|
48
|
-
@input="${p.onAlphaNumInput}">
|
|
49
|
-
<span class="cp-input-label">A%</span>
|
|
50
|
-
</div>` : nothing}
|
|
51
|
-
` : inputMode === "rgb" ? html`
|
|
52
|
-
<div class="cp-input-group" style="flex:1"><input class="cp-input" type="number" .value="${String(r)}" min="0" max="255" @input="${(e) => p.onRgbInput(0, e)}"><span class="cp-input-label">R</span></div>
|
|
53
|
-
<div class="cp-input-group" style="flex:1"><input class="cp-input" type="number" .value="${String(g)}" min="0" max="255" @input="${(e) => p.onRgbInput(1, e)}"><span class="cp-input-label">G</span></div>
|
|
54
|
-
<div class="cp-input-group" style="flex:1"><input class="cp-input" type="number" .value="${String(b)}" min="0" max="255" @input="${(e) => p.onRgbInput(2, e)}"><span class="cp-input-label">B</span></div>
|
|
55
|
-
${showAlpha ? html`<div class="cp-input-group" style="flex:1"><input class="cp-input" type="number" .value="${String(Math.round(alpha))}" min="0" max="100" @input="${p.onAlphaNumInput}"><span class="cp-input-label">A%</span></div>` : nothing}
|
|
56
|
-
` : html`
|
|
57
|
-
<div class="cp-input-group" style="flex:1"><input class="cp-input" type="number" .value="${String(h)}" min="0" max="360" @input="${(e) => p.onHslInput(0, e)}"><span class="cp-input-label">H</span></div>
|
|
58
|
-
<div class="cp-input-group" style="flex:1"><input class="cp-input" type="number" .value="${String(s)}" min="0" max="100" @input="${(e) => p.onHslInput(1, e)}"><span class="cp-input-label">S%</span></div>
|
|
59
|
-
<div class="cp-input-group" style="flex:1"><input class="cp-input" type="number" .value="${String(l)}" min="0" max="100" @input="${(e) => p.onHslInput(2, e)}"><span class="cp-input-label">L%</span></div>
|
|
60
|
-
${showAlpha ? html`<div class="cp-input-group" style="flex:1"><input class="cp-input" type="number" .value="${String(Math.round(alpha))}" min="0" max="100" @input="${p.onAlphaNumInput}"><span class="cp-input-label">A%</span></div>` : nothing}
|
|
61
|
-
`;
|
|
62
|
-
return html`
|
|
63
|
-
<!-- Canvas 2D -->
|
|
64
|
-
<div class="cp-canvas"
|
|
65
|
-
style="background: hsl(${h},100%,50%);"
|
|
66
|
-
@mousedown="${p.onCanvasMousedown}"
|
|
67
|
-
>
|
|
68
|
-
<div class="cp-thumb"
|
|
69
|
-
style="left:${thumbX}%;top:${thumbY}%;background:${cssColor};"
|
|
70
|
-
></div>
|
|
71
|
-
</div>
|
|
72
|
-
|
|
73
|
-
<!-- Sliders -->
|
|
74
|
-
<div class="cp-sliders">
|
|
75
|
-
<div class="cp-preview-dot">
|
|
76
|
-
<div class="cp-preview-color" style="background:${cssColor};"></div>
|
|
77
|
-
</div>
|
|
78
|
-
<div class="cp-sliders-stack">
|
|
79
|
-
<input type="range" class="cp-range cp-range-hue"
|
|
80
|
-
min="0" max="360" .value="${String(h)}"
|
|
81
|
-
@input="${p.onHueInput}">
|
|
82
|
-
${showAlpha ? html`
|
|
83
|
-
<div class="cp-alpha-wrap" style="height:10px;">
|
|
84
|
-
<div class="cp-alpha-checker">
|
|
85
|
-
<input type="range" class="cp-range cp-range-alpha"
|
|
86
|
-
min="0" max="100" .value="${String(Math.round(alpha))}"
|
|
87
|
-
style="background:${alphaGradient};"
|
|
88
|
-
@input="${p.onAlphaInput}">
|
|
89
|
-
</div>
|
|
90
|
-
</div>` : nothing}
|
|
91
|
-
</div>
|
|
92
|
-
</div>
|
|
93
|
-
|
|
94
|
-
<!-- Inputs -->
|
|
95
|
-
<div class="cp-inputs-wrap">
|
|
96
|
-
<button class="cp-mode-btn" title="Cambiar modo" @click="${p.onModeToggle}">
|
|
97
|
-
${ROTATE_SVG}
|
|
98
|
-
</button>
|
|
99
|
-
<div style="display:flex;gap:var(--lib-space-xs);flex:1;">
|
|
100
|
-
${inputsBlock}
|
|
101
|
-
</div>
|
|
102
|
-
</div>
|
|
103
|
-
|
|
104
|
-
<!-- Saved colors -->
|
|
105
|
-
<div class="cp-saved">
|
|
106
|
-
<span class="cp-saved-label">Guardados</span>
|
|
107
|
-
${savedColors.map((sc) => html`
|
|
108
|
-
<div class="cp-swatch cp-swatch-sm"
|
|
109
|
-
style="background:${sc};"
|
|
110
|
-
data-name="${sc}"
|
|
111
|
-
@click="${() => p.onSavedClick(sc)}"
|
|
112
|
-
></div>
|
|
113
|
-
`)}
|
|
114
|
-
<button class="cp-saved-add" title="Guardar color actual" @click="${p.onSaveColor}">+</button>
|
|
115
|
-
</div>
|
|
116
|
-
|
|
117
|
-
<!-- Actions -->
|
|
118
|
-
<div class="cp-actions">
|
|
119
|
-
<button class="cp-btn cp-btn-cancel" @click="${p.onCancel}">Cancelar</button>
|
|
120
|
-
<button class="cp-btn cp-btn-ok" @click="${p.onApply}">Aplicar</button>
|
|
121
|
-
</div>
|
|
122
|
-
`;
|
|
123
|
-
}
|
|
124
|
-
function colorPickerTemplate(props) {
|
|
125
|
-
const {
|
|
126
|
-
variant,
|
|
127
|
-
/*label,*/
|
|
128
|
-
hex,
|
|
129
|
-
alpha,
|
|
130
|
-
panelOpen,
|
|
131
|
-
onTriggerClick
|
|
132
|
-
} = props;
|
|
133
|
-
const panel = html`
|
|
134
|
-
<div class="cp ${variant === "trigger" && panelOpen ? "is-open" : ""}">
|
|
135
|
-
${pickerPanelTemplate(props)}
|
|
136
|
-
</div>
|
|
137
|
-
`;
|
|
138
|
-
if (variant === "inline") {
|
|
139
|
-
return panel;
|
|
140
|
-
}
|
|
141
|
-
const cssColor = alpha < 100 ? `rgba(${props.r},${props.g},${props.b},${(alpha / 100).toFixed(2)})` : hex;
|
|
142
|
-
return html`
|
|
143
|
-
<div class="cp-trigger-wrap">
|
|
144
|
-
<button
|
|
145
|
-
class="cp-trigger ${panelOpen ? "is-open" : ""}"
|
|
146
|
-
@click="${onTriggerClick}"
|
|
147
|
-
aria-expanded="${panelOpen}"
|
|
148
|
-
aria-haspopup="true"
|
|
149
|
-
>
|
|
150
|
-
<div class="cp-trigger-dot">
|
|
151
|
-
<div class="cp-trigger-color" style="background:${cssColor};"></div>
|
|
152
|
-
</div>
|
|
153
|
-
<span>${hex.toUpperCase()}</span>
|
|
154
|
-
${CARET_SVG}
|
|
155
|
-
</button>
|
|
156
|
-
${panel}
|
|
157
|
-
</div>
|
|
158
|
-
`;
|
|
159
|
-
}
|
|
1
|
+
const gridCss = "@layer tokens,reset,components;@layer reset{:host{display:block}*,*:before,*:after{box-sizing:border-box}}@layer components{.bento-item{height:100%;width:100%;display:flex;flex-direction:column;position:relative;background:var(--bg-elevated);border-radius:var(--lib-radius-lg);border:1px solid var(--border-subtle);overflow:hidden}:host([interactive]) .bento-item{cursor:pointer;transition:transform var(--duration-slow) var(--ease-default),border-color var(--duration-base) var(--ease-default),box-shadow var(--duration-slow) var(--ease-default)}:host([interactive]) .bento-item:hover{transform:translateY(-3px);border-color:var(--border-strong);box-shadow:var(--shadow-md)}:host([interactive]) .bento-item:active{transform:translateY(-1px)}.content{padding:var(--lib-space-md);height:100%;display:flex;flex-direction:column}:host([flush]) .content{padding:0}@media(prefers-reduced-motion:reduce){:host([interactive]) .bento-item{transition:border-color var(--duration-base)}:host([interactive]) .bento-item:hover{transform:none}}}";
|
|
160
2
|
export {
|
|
161
|
-
|
|
162
|
-
pickerPanelTemplate,
|
|
163
|
-
swatchGridTemplate
|
|
3
|
+
gridCss as default
|
|
164
4
|
};
|
|
165
5
|
//# sourceMappingURL=index236.js.map
|
package/dist/index236.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index236.js","sources":["../src/components/molecules/color-picker/lib-color-picker.html.ts"],"sourcesContent":["import { html, nothing, TemplateResult } from 'lit';\nimport type { ColorPickerVariant, ColorInputMode, SwatchRow, SwatchColor } from './lib-color-picker.types';\n\n/* ── Icono ↺ inline para el mode button ── */\nconst ROTATE_SVG = html`<svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M10 2.5A4.5 4.5 0 1 0 11 6\"/>\n <path d=\"M10 .5v2h2\"/>\n</svg>`;\n\n/* ── Caret-down para trigger ── */\nconst CARET_SVG = html`<svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M2 4l3 3 3-3\"/>\n</svg>`;\n\n/* ────────────────────────────────────────────\n Interfaces de props para cada sub-sección\n ──────────────────────────────────────────── */\n\nexport interface PickerPanelProps {\n hex: string;\n r: number; g: number; b: number;\n h: number; s: number; l: number;\n alpha: number; // 0–100\n inputMode: ColorInputMode;\n savedColors: string[];\n showAlpha: boolean;\n /** Callbacks */\n onCanvasMousedown: (e: MouseEvent) => void;\n onHueInput: (e: Event) => void;\n onAlphaInput: (e: Event) => void;\n onModeToggle: () => void;\n onHexInput: (e: Event) => void;\n onRgbInput: (rIdx: 0|1|2, e: Event) => void;\n onHslInput: (cIdx: 0|1|2, e: Event) => void;\n onAlphaNumInput: (e: Event) => void;\n onSaveColor: () => void;\n onSavedClick: (hex: string) => void;\n onCancel: () => void;\n onApply: () => void;\n}\n\nexport interface SwatchGridProps {\n rows: SwatchRow[];\n selected: string;\n onSelect: (color: SwatchColor) => void;\n}\n\n/* ────────────────────────────────────────────\n Swatch grid template\n ──────────────────────────────────────────── */\nexport function swatchGridTemplate(props: SwatchGridProps): TemplateResult {\n const { rows, selected, onSelect } = props;\n return html`\n <div class=\"cp-swatches\">\n ${rows.map(row => html`\n <div class=\"cp-swatches-row\">\n <span class=\"cp-swatches-label\">${row.label}</span>\n ${row.colors.map(c => html`\n <div\n class=\"cp-swatch ${c.value.toLowerCase() === selected.toLowerCase() ? 'is-selected' : ''}\"\n style=\"background:${c.value};\"\n data-name=\"${c.name ?? ''}\"\n @click=\"${(): void => onSelect(c)}\"\n role=\"button\"\n aria-label=\"${c.name ?? c.value}\"\n ></div>\n `)}\n </div>\n `)}\n </div>\n `;\n}\n\n/* ────────────────────────────────────────────\n Picker panel template (canvas + sliders + inputs + saved + actions)\n ──────────────────────────────────────────── */\nexport function pickerPanelTemplate(p: PickerPanelProps): TemplateResult {\n const { hex, r, g, b, h, s, l, alpha, inputMode, savedColors, showAlpha } = p;\n\n /* Thumb position: x = saturation %, y = inverted lightness % */\n const thumbX = s;\n const thumbY = 100 - l;\n\n const cssColor = alpha < 100\n ? `rgba(${r},${g},${b},${(alpha / 100).toFixed(2)})`\n : hex;\n\n const alphaGradient =\n `linear-gradient(to right, transparent, hsl(${h},${s}%,${l}%))`;\n\n /* Inputs según el modo */\n const inputsBlock: TemplateResult = inputMode === 'hex'\n ? html`\n <div class=\"cp-input-group\" style=\"flex:3\">\n <input class=\"cp-input\" type=\"text\" .value=\"${hex}\" maxlength=\"7\"\n @input=\"${p.onHexInput}\">\n <span class=\"cp-input-label\">HEX</span>\n </div>\n ${showAlpha ? html`\n <div class=\"cp-input-group\" style=\"flex:1\">\n <input class=\"cp-input\" type=\"number\" .value=\"${String(Math.round(alpha))}\" min=\"0\" max=\"100\"\n @input=\"${p.onAlphaNumInput}\">\n <span class=\"cp-input-label\">A%</span>\n </div>` : nothing}\n `\n : inputMode === 'rgb'\n ? html`\n <div class=\"cp-input-group\" style=\"flex:1\"><input class=\"cp-input\" type=\"number\" .value=\"${String(r)}\" min=\"0\" max=\"255\" @input=\"${(e: Event): void => p.onRgbInput(0, e)}\"><span class=\"cp-input-label\">R</span></div>\n <div class=\"cp-input-group\" style=\"flex:1\"><input class=\"cp-input\" type=\"number\" .value=\"${String(g)}\" min=\"0\" max=\"255\" @input=\"${(e: Event): void => p.onRgbInput(1, e)}\"><span class=\"cp-input-label\">G</span></div>\n <div class=\"cp-input-group\" style=\"flex:1\"><input class=\"cp-input\" type=\"number\" .value=\"${String(b)}\" min=\"0\" max=\"255\" @input=\"${(e: Event): void => p.onRgbInput(2, e)}\"><span class=\"cp-input-label\">B</span></div>\n ${showAlpha ? html`<div class=\"cp-input-group\" style=\"flex:1\"><input class=\"cp-input\" type=\"number\" .value=\"${String(Math.round(alpha))}\" min=\"0\" max=\"100\" @input=\"${p.onAlphaNumInput}\"><span class=\"cp-input-label\">A%</span></div>` : nothing}\n `\n : html`\n <div class=\"cp-input-group\" style=\"flex:1\"><input class=\"cp-input\" type=\"number\" .value=\"${String(h)}\" min=\"0\" max=\"360\" @input=\"${(e: Event): void => p.onHslInput(0, e)}\"><span class=\"cp-input-label\">H</span></div>\n <div class=\"cp-input-group\" style=\"flex:1\"><input class=\"cp-input\" type=\"number\" .value=\"${String(s)}\" min=\"0\" max=\"100\" @input=\"${(e: Event): void => p.onHslInput(1, e)}\"><span class=\"cp-input-label\">S%</span></div>\n <div class=\"cp-input-group\" style=\"flex:1\"><input class=\"cp-input\" type=\"number\" .value=\"${String(l)}\" min=\"0\" max=\"100\" @input=\"${(e: Event): void => p.onHslInput(2, e)}\"><span class=\"cp-input-label\">L%</span></div>\n ${showAlpha ? html`<div class=\"cp-input-group\" style=\"flex:1\"><input class=\"cp-input\" type=\"number\" .value=\"${String(Math.round(alpha))}\" min=\"0\" max=\"100\" @input=\"${p.onAlphaNumInput}\"><span class=\"cp-input-label\">A%</span></div>` : nothing}\n `;\n\n return html`\n <!-- Canvas 2D -->\n <div class=\"cp-canvas\"\n style=\"background: hsl(${h},100%,50%);\"\n @mousedown=\"${p.onCanvasMousedown}\"\n >\n <div class=\"cp-thumb\"\n style=\"left:${thumbX}%;top:${thumbY}%;background:${cssColor};\"\n ></div>\n </div>\n\n <!-- Sliders -->\n <div class=\"cp-sliders\">\n <div class=\"cp-preview-dot\">\n <div class=\"cp-preview-color\" style=\"background:${cssColor};\"></div>\n </div>\n <div class=\"cp-sliders-stack\">\n <input type=\"range\" class=\"cp-range cp-range-hue\"\n min=\"0\" max=\"360\" .value=\"${String(h)}\"\n @input=\"${p.onHueInput}\">\n ${showAlpha ? html`\n <div class=\"cp-alpha-wrap\" style=\"height:10px;\">\n <div class=\"cp-alpha-checker\">\n <input type=\"range\" class=\"cp-range cp-range-alpha\"\n min=\"0\" max=\"100\" .value=\"${String(Math.round(alpha))}\"\n style=\"background:${alphaGradient};\"\n @input=\"${p.onAlphaInput}\">\n </div>\n </div>` : nothing}\n </div>\n </div>\n\n <!-- Inputs -->\n <div class=\"cp-inputs-wrap\">\n <button class=\"cp-mode-btn\" title=\"Cambiar modo\" @click=\"${p.onModeToggle}\">\n ${ROTATE_SVG}\n </button>\n <div style=\"display:flex;gap:var(--lib-space-xs);flex:1;\">\n ${inputsBlock}\n </div>\n </div>\n\n <!-- Saved colors -->\n <div class=\"cp-saved\">\n <span class=\"cp-saved-label\">Guardados</span>\n ${savedColors.map(sc => html`\n <div class=\"cp-swatch cp-swatch-sm\"\n style=\"background:${sc};\"\n data-name=\"${sc}\"\n @click=\"${(): void => p.onSavedClick(sc)}\"\n ></div>\n `)}\n <button class=\"cp-saved-add\" title=\"Guardar color actual\" @click=\"${p.onSaveColor}\">+</button>\n </div>\n\n <!-- Actions -->\n <div class=\"cp-actions\">\n <button class=\"cp-btn cp-btn-cancel\" @click=\"${p.onCancel}\">Cancelar</button>\n <button class=\"cp-btn cp-btn-ok\" @click=\"${p.onApply}\">Aplicar</button>\n </div>\n `;\n}\n\n/* ────────────────────────────────────────────\n Root template — inline vs trigger\n ──────────────────────────────────────────── */\n\nexport interface ColorPickerRootProps extends PickerPanelProps {\n variant: ColorPickerVariant;\n label: string;\n panelOpen: boolean;\n onTriggerClick: () => void;\n}\n\nexport function colorPickerTemplate(props: ColorPickerRootProps): TemplateResult {\n const { variant, /*label,*/ hex, alpha, panelOpen, onTriggerClick } = props;\n\n const panel = html`\n <div class=\"cp ${variant === 'trigger' && panelOpen ? 'is-open' : ''}\">\n ${pickerPanelTemplate(props)}\n </div>\n `;\n\n if (variant === 'inline') {\n return panel;\n }\n\n /* Trigger variant — botón + panel flotante */\n const cssColor = alpha < 100\n ? `rgba(${props.r},${props.g},${props.b},${(alpha / 100).toFixed(2)})`\n : hex;\n\n return html`\n <div class=\"cp-trigger-wrap\">\n <button\n class=\"cp-trigger ${panelOpen ? 'is-open' : ''}\"\n @click=\"${onTriggerClick}\"\n aria-expanded=\"${panelOpen}\"\n aria-haspopup=\"true\"\n >\n <div class=\"cp-trigger-dot\">\n <div class=\"cp-trigger-color\" style=\"background:${cssColor};\"></div>\n </div>\n <span>${hex.toUpperCase()}</span>\n ${CARET_SVG}\n </button>\n ${panel}\n </div>\n `;\n}"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index236.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
package/dist/index237.js
CHANGED
|
@@ -1,46 +1,87 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
1
|
+
import { svg, html, nothing } from "lit";
|
|
2
|
+
const iconPrev = svg`
|
|
3
|
+
<svg viewBox="0 0 16 16" fill="none"
|
|
4
|
+
stroke="currentColor" stroke-width="1.5"
|
|
5
|
+
stroke-linecap="round" stroke-linejoin="round">
|
|
6
|
+
<polyline points="10,3 5,8 10,13"/>
|
|
7
|
+
</svg>`;
|
|
8
|
+
const iconNext = svg`
|
|
9
|
+
<svg viewBox="0 0 16 16" fill="none"
|
|
10
|
+
stroke="currentColor" stroke-width="1.5"
|
|
11
|
+
stroke-linecap="round" stroke-linejoin="round">
|
|
12
|
+
<polyline points="6,3 11,8 6,13"/>
|
|
13
|
+
</svg>`;
|
|
14
|
+
function carouselTemplate(props) {
|
|
15
|
+
const {
|
|
16
|
+
mode,
|
|
17
|
+
current,
|
|
18
|
+
total,
|
|
19
|
+
peek,
|
|
20
|
+
arrows,
|
|
21
|
+
dots,
|
|
22
|
+
counter,
|
|
23
|
+
loop,
|
|
24
|
+
handlePrev,
|
|
25
|
+
handleNext,
|
|
26
|
+
handleDot,
|
|
27
|
+
handleSlot,
|
|
28
|
+
handleThumb,
|
|
29
|
+
handleKey
|
|
30
|
+
} = props;
|
|
31
|
+
const prevDisabled = !loop && current === 0;
|
|
32
|
+
const nextDisabled = !loop && current === total - 1;
|
|
33
|
+
const counterHtml = peek > 1 ? html`<span>${current + 1}</span> – <span>${Math.min(current + peek, total)}</span> / ${total}` : html`<span>${current + 1}</span> / ${total}`;
|
|
34
|
+
return html`
|
|
35
|
+
<div
|
|
36
|
+
class="cr"
|
|
37
|
+
tabindex="0"
|
|
38
|
+
role="region"
|
|
39
|
+
aria-label="Carousel"
|
|
40
|
+
@keydown=${handleKey}
|
|
41
|
+
>
|
|
42
|
+
<div class="cr-track" part="track">
|
|
43
|
+
<slot @slotchange=${handleSlot}></slot>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
${arrows && mode === "slide" ? html`
|
|
47
|
+
<button
|
|
48
|
+
class="cr-arrow cr-arrow-prev ${prevDisabled ? "is-disabled" : ""}"
|
|
49
|
+
?disabled=${prevDisabled}
|
|
50
|
+
aria-label="Anterior"
|
|
51
|
+
@click=${handlePrev}
|
|
52
|
+
>${iconPrev}</button>
|
|
53
|
+
|
|
54
|
+
<button
|
|
55
|
+
class="cr-arrow cr-arrow-next ${nextDisabled ? "is-disabled" : ""}"
|
|
56
|
+
?disabled=${nextDisabled}
|
|
57
|
+
aria-label="Siguiente"
|
|
58
|
+
@click=${handleNext}
|
|
59
|
+
>${iconNext}</button>
|
|
60
|
+
` : nothing}
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
${dots && total > 1 ? html`
|
|
64
|
+
<div class="cr-dots" role="tablist" aria-label="Navegación por slides">
|
|
65
|
+
${Array.from({ length: total }, (_, i) => html`
|
|
66
|
+
<button
|
|
67
|
+
class="cr-dot ${i === current ? "is-active" : ""}"
|
|
68
|
+
role="tab"
|
|
69
|
+
aria-selected=${i === current ? "true" : "false"}
|
|
70
|
+
aria-label="Ir a slide ${i + 1}"
|
|
71
|
+
@click=${() => handleDot(i)}
|
|
72
|
+
></button>
|
|
73
|
+
`)}
|
|
74
|
+
</div>
|
|
75
|
+
` : nothing}
|
|
76
|
+
|
|
77
|
+
${counter && total > 1 ? html`
|
|
78
|
+
<p class="cr-counter">${counterHtml}</p>
|
|
79
|
+
` : nothing}
|
|
80
|
+
|
|
81
|
+
<slot name="thumbnail" @slotchange=${handleThumb}></slot>
|
|
82
|
+
`;
|
|
83
|
+
}
|
|
43
84
|
export {
|
|
44
|
-
|
|
85
|
+
carouselTemplate
|
|
45
86
|
};
|
|
46
87
|
//# sourceMappingURL=index237.js.map
|
package/dist/index237.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index237.js","sources":["../src/components/
|
|
1
|
+
{"version":3,"file":"index237.js","sources":["../src/components/organisms/carousel/lib-carousel.html.ts"],"sourcesContent":["import { html, nothing, svg, TemplateResult } from 'lit';\n\nexport type LibCarouselMode = 'slide' | 'fade';\n\nexport interface CarouselTemplateProps {\n mode: LibCarouselMode;\n current: number;\n total: number;\n peek: number;\n arrows: boolean;\n dots: boolean;\n counter: boolean;\n loop: boolean;\n handlePrev: () => void;\n handleNext: () => void;\n handleDot: (i: number) => void;\n handleSlot: (e: Event) => void;\n handleThumb: (e: Event) => void;\n handleKey: (e: KeyboardEvent) => void;\n}\n\n/** SVG chevron left */\nconst iconPrev = svg`\n <svg viewBox=\"0 0 16 16\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"10,3 5,8 10,13\"/>\n </svg>`;\n\n/** SVG chevron right */\nconst iconNext = svg`\n <svg viewBox=\"0 0 16 16\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"6,3 11,8 6,13\"/>\n </svg>`;\n\n/**\n * Template para lib-carousel.\n *\n * Estructura:\n * div.cr ← raíz, maneja keydown\n * div.cr-track ← contenedor deslizante\n * slot ← slides del consumer\n * button.cr-arrow-prev ← (condicional)\n * button.cr-arrow-next ← (condicional)\n * div.cr-dots ← (condicional)\n * p.cr-counter ← (condicional)\n * slot[name=\"thumbnail\"] ← tira de miniaturas (condicional)\n */\nexport function carouselTemplate(props: CarouselTemplateProps): TemplateResult {\n const {\n mode, current, total, peek, arrows, dots, counter, loop,\n handlePrev, handleNext, handleDot, handleSlot, handleThumb, handleKey,\n } = props;\n\n const prevDisabled = !loop && current === 0;\n const nextDisabled = !loop && current === total - 1;\n\n // Counter text: \"2 / 6\" para peek=1, \"1 – 3 / 6\" para peek>1\n const counterHtml = peek > 1\n ? html`<span>${current + 1}</span> – <span>${Math.min(current + peek, total)}</span> / ${total}`\n : html`<span>${current + 1}</span> / ${total}`;\n\n return html`\n <div\n class=\"cr\"\n tabindex=\"0\"\n role=\"region\"\n aria-label=\"Carousel\"\n @keydown=${handleKey}\n >\n <div class=\"cr-track\" part=\"track\">\n <slot @slotchange=${handleSlot}></slot>\n </div>\n\n ${arrows && mode === 'slide' ? html`\n <button\n class=\"cr-arrow cr-arrow-prev ${prevDisabled ? 'is-disabled' : ''}\"\n ?disabled=${prevDisabled}\n aria-label=\"Anterior\"\n @click=${handlePrev}\n >${iconPrev}</button>\n\n <button\n class=\"cr-arrow cr-arrow-next ${nextDisabled ? 'is-disabled' : ''}\"\n ?disabled=${nextDisabled}\n aria-label=\"Siguiente\"\n @click=${handleNext}\n >${iconNext}</button>\n ` : nothing}\n </div>\n\n ${dots && total > 1 ? html`\n <div class=\"cr-dots\" role=\"tablist\" aria-label=\"Navegación por slides\">\n ${Array.from({ length: total }, (_, i) => html`\n <button\n class=\"cr-dot ${i === current ? 'is-active' : ''}\"\n role=\"tab\"\n aria-selected=${i === current ? 'true' : 'false'}\n aria-label=\"Ir a slide ${i + 1}\"\n @click=${():void => handleDot(i)}\n ></button>\n `)}\n </div>\n ` : nothing}\n\n ${counter && total > 1 ? html`\n <p class=\"cr-counter\">${counterHtml}</p>\n ` : nothing}\n\n <slot name=\"thumbnail\" @slotchange=${handleThumb}></slot>\n `;\n}"],"names":[],"mappings":";AAsBA,MAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAQjB,MAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBV,SAAS,iBAAiB,OAA8C;AAC7E,QAAM;AAAA,IACJ;AAAA,IAAM;AAAA,IAAS;AAAA,IAAO;AAAA,IAAM;AAAA,IAAQ;AAAA,IAAM;AAAA,IAAS;AAAA,IACnD;AAAA,IAAY;AAAA,IAAY;AAAA,IAAW;AAAA,IAAY;AAAA,IAAa;AAAA,EAAA,IAC1D;AAEJ,QAAM,eAAe,CAAC,QAAQ,YAAY;AAC1C,QAAM,eAAe,CAAC,QAAQ,YAAY,QAAQ;AAGlD,QAAM,cAAc,OAAO,IACvB,aAAa,UAAU,CAAC,iCAAiC,KAAK,IAAI,UAAU,MAAM,KAAK,CAAC,aAAa,KAAK,KAC1G,aAAa,UAAU,CAAC,aAAa,KAAK;AAE9C,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAMQ,SAAS;AAAA;AAAA;AAAA,4BAGE,UAAU;AAAA;AAAA;AAAA,QAG9B,UAAU,SAAS,UAAU;AAAA;AAAA,0CAEK,eAAe,gBAAgB,EAAE;AAAA,sBACrD,YAAY;AAAA;AAAA,mBAEf,UAAU;AAAA,WAClB,QAAQ;AAAA;AAAA;AAAA,0CAGuB,eAAe,gBAAgB,EAAE;AAAA,sBACrD,YAAY;AAAA;AAAA,mBAEf,UAAU;AAAA,WAClB,QAAQ;AAAA,UACT,OAAO;AAAA;AAAA;AAAA,MAGX,QAAQ,QAAQ,IAAI;AAAA;AAAA,UAEhB,MAAM,KAAK,EAAE,QAAQ,SAAS,CAAC,GAAG,MAAM;AAAA;AAAA,4BAEtB,MAAM,UAAU,cAAc,EAAE;AAAA;AAAA,4BAEhC,MAAM,UAAU,SAAS,OAAO;AAAA,qCACvB,IAAI,CAAC;AAAA,qBACrB,MAAW,UAAU,CAAC,CAAC;AAAA;AAAA,SAEnC,CAAC;AAAA;AAAA,QAEF,OAAO;AAAA;AAAA,MAET,WAAW,QAAQ,IAAI;AAAA,8BACC,WAAW;AAAA,QACjC,OAAO;AAAA;AAAA,yCAE0B,WAAW;AAAA;AAEpD;"}
|