@shibui-ui/ui 1.24.1 → 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/components/atoms/index.d.ts +45 -16
- package/dist/components/atoms/index.d.ts.map +1 -1
- package/dist/components/molecules/index.d.ts +20 -1
- package/dist/components/molecules/index.d.ts.map +1 -1
- package/dist/components/organisms/index.d.ts +17 -1
- package/dist/components/organisms/index.d.ts.map +1 -1
- package/dist/index.d.ts +3 -82
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +79 -80
- package/dist/index.js.map +1 -1
- package/dist/index10.js +82 -18
- package/dist/index10.js.map +1 -1
- package/dist/index11.js +84 -69
- package/dist/index11.js.map +1 -1
- package/dist/index12.js +40 -26
- package/dist/index12.js.map +1 -1
- package/dist/index13.js +16 -39
- package/dist/index13.js.map +1 -1
- package/dist/index14.js +29 -44
- package/dist/index14.js.map +1 -1
- package/dist/index15.js +16 -117
- package/dist/index15.js.map +1 -1
- package/dist/index16.js +48 -40
- package/dist/index16.js.map +1 -1
- package/dist/index17.js +41 -25
- package/dist/index17.js.map +1 -1
- package/dist/index18.js +76 -49
- package/dist/index18.js.map +1 -1
- package/dist/index19.js +19 -39
- package/dist/index19.js.map +1 -1
- package/dist/index194.js +94 -24
- package/dist/index194.js.map +1 -1
- package/dist/index195.js +2 -2
- package/dist/index197.js +2 -24
- 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 -35
- package/dist/index199.js.map +1 -1
- package/dist/index20.js +21 -41
- package/dist/index20.js.map +1 -1
- package/dist/index200.js +2 -2
- package/dist/index201.js +54 -13
- package/dist/index201.js.map +1 -1
- package/dist/index202.js +2 -2
- package/dist/index203.js +2 -2
- package/dist/index204.js +143 -157
- package/dist/index204.js.map +1 -1
- package/dist/index205.js +43 -24
- 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 -11
- 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 -91
- package/dist/index209.js.map +1 -1
- package/dist/index21.js +90 -26
- package/dist/index21.js.map +1 -1
- package/dist/index210.js +6 -2
- package/dist/index210.js.map +1 -1
- package/dist/index211.js +2 -41
- 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 -5
- package/dist/index213.js.map +1 -1
- package/dist/index214.js +2 -2
- package/dist/index215.js +2 -35
- package/dist/index215.js.map +1 -1
- package/dist/index216.js +59 -42
- package/dist/index216.js.map +1 -1
- package/dist/index217.js +32 -2
- package/dist/index217.js.map +1 -1
- package/dist/index218.js +2 -85
- package/dist/index218.js.map +1 -1
- package/dist/index219.js +2 -2
- package/dist/index22.js +41 -48
- package/dist/index22.js.map +1 -1
- package/dist/index220.js +73 -65
- package/dist/index220.js.map +1 -1
- package/dist/index221.js +81 -2
- package/dist/index221.js.map +1 -1
- package/dist/index222.js +2 -10
- package/dist/index222.js.map +1 -1
- package/dist/index223.js +133 -2
- package/dist/index223.js.map +1 -1
- package/dist/index224.js +2 -26
- package/dist/index224.js.map +1 -1
- package/dist/index225.js +2 -2
- package/dist/index226.js +66 -12
- package/dist/index226.js.map +1 -1
- package/dist/index227.js +97 -2
- package/dist/index227.js.map +1 -1
- package/dist/index228.js +2 -2
- package/dist/index229.js +62 -24
- package/dist/index229.js.map +1 -1
- package/dist/index23.js +50 -94
- package/dist/index23.js.map +1 -1
- package/dist/index230.js +2 -2
- package/dist/index231.js +2 -2
- package/dist/index232.js +12 -2
- package/dist/index232.js.map +1 -1
- package/dist/index233.js +5 -16
- package/dist/index233.js.map +1 -1
- package/dist/index234.js +2 -2
- package/dist/index235.js +11 -9
- package/dist/index235.js.map +1 -1
- package/dist/index236.js +2 -2
- package/dist/index237.js +76 -34
- package/dist/index237.js.map +1 -1
- package/dist/index238.js +2 -2
- package/dist/index239.js +2 -27
- package/dist/index239.js.map +1 -1
- package/dist/index24.js +37 -34
- package/dist/index24.js.map +1 -1
- package/dist/index240.js +39 -2
- package/dist/index240.js.map +1 -1
- package/dist/index241.js +2 -34
- package/dist/index241.js.map +1 -1
- package/dist/index242.js +235 -12
- 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 -9
- package/dist/index244.js.map +1 -1
- package/dist/index245.js +94 -2
- package/dist/index245.js.map +1 -1
- package/dist/index246.js +2 -5
- package/dist/index246.js.map +1 -1
- package/dist/index247.js +268 -2
- package/dist/index247.js.map +1 -1
- package/dist/index248.js +2 -36
- package/dist/index248.js.map +1 -1
- package/dist/index249.js +21 -2
- package/dist/index249.js.map +1 -1
- package/dist/index25.js +51 -32
- package/dist/index25.js.map +1 -1
- package/dist/index250.js +2 -31
- package/dist/index250.js.map +1 -1
- package/dist/index251.js +9 -2
- package/dist/index251.js.map +1 -1
- package/dist/index252.js +2 -19
- package/dist/index252.js.map +1 -1
- package/dist/index253.js +15 -2
- package/dist/index253.js.map +1 -1
- package/dist/index254.js +2 -2
- package/dist/index255.js +135 -69
- package/dist/index255.js.map +1 -1
- package/dist/index256.js +2 -11
- package/dist/index256.js.map +1 -1
- package/dist/index257.js +5 -2
- package/dist/index257.js.map +1 -1
- package/dist/index258.js +2 -78
- package/dist/index258.js.map +1 -1
- package/dist/index259.js +9 -2
- package/dist/index259.js.map +1 -1
- package/dist/index26.js +31 -236
- package/dist/index26.js.map +1 -1
- package/dist/index260.js +2 -32
- package/dist/index260.js.map +1 -1
- package/dist/index261.js +2 -2
- package/dist/index262.js +92 -9
- 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 -16
- package/dist/index264.js.map +1 -1
- package/dist/index265.js +41 -2
- package/dist/index265.js.map +1 -1
- package/dist/index266.js +2 -16
- package/dist/index266.js.map +1 -1
- package/dist/index267.js +34 -9
- package/dist/index267.js.map +1 -1
- package/dist/index268.js +8 -54
- package/dist/index268.js.map +1 -1
- package/dist/index269.js +2 -2
- package/dist/index27.js +27 -58
- package/dist/index27.js.map +1 -1
- package/dist/index270.js +42 -7
- package/dist/index270.js.map +1 -1
- package/dist/index271.js +2 -2
- package/dist/index272.js +2 -34
- package/dist/index272.js.map +1 -1
- package/dist/index273.js +16 -2
- package/dist/index273.js.map +1 -1
- package/dist/index274.js +9 -2
- package/dist/index274.js.map +1 -1
- package/dist/index275.js +6 -13
- package/dist/index275.js.map +1 -1
- package/dist/index276.js +2 -2
- package/dist/index277.js +8 -15
- package/dist/index277.js.map +1 -1
- package/dist/index278.js +2 -2
- package/dist/index279.js +55 -2
- package/dist/index279.js.map +1 -1
- package/dist/index28.js +247 -24
- package/dist/index28.js.map +1 -1
- package/dist/index280.js +2 -42
- package/dist/index280.js.map +1 -1
- package/dist/index281.js +2 -100
- package/dist/index281.js.map +1 -1
- package/dist/index282.js +20 -2
- package/dist/index282.js.map +1 -1
- package/dist/index283.js +2 -97
- package/dist/index283.js.map +1 -1
- package/dist/index284.js +33 -2
- package/dist/index284.js.map +1 -1
- package/dist/index285.js +6 -27
- package/dist/index285.js.map +1 -1
- package/dist/index286.js +2 -2
- package/dist/index287.js +9 -44
- package/dist/index287.js.map +1 -1
- package/dist/index288.js +2 -2
- package/dist/index289.js +2 -33
- package/dist/index289.js.map +1 -1
- package/dist/index29.js +249 -39
- package/dist/index29.js.map +1 -1
- package/dist/index290.js +36 -2
- package/dist/index290.js.map +1 -1
- package/dist/index291.js +2 -57
- package/dist/index291.js.map +1 -1
- package/dist/index292.js +24 -2
- package/dist/index292.js.map +1 -1
- package/dist/index293.js +2 -2
- package/dist/index294.js +26 -247
- package/dist/index294.js.map +1 -1
- package/dist/index295.js +2 -2
- package/dist/index296.js +2 -72
- package/dist/index296.js.map +1 -1
- package/dist/index297.js +42 -2
- package/dist/index297.js.map +1 -1
- package/dist/index298.js +7 -56
- package/dist/index298.js.map +1 -1
- package/dist/index299.js +2 -133
- package/dist/index299.js.map +1 -1
- package/dist/index30.js +32 -19
- package/dist/index30.js.map +1 -1
- package/dist/index300.js +30 -2
- package/dist/index300.js.map +1 -1
- package/dist/index301.js +2 -12
- package/dist/index301.js.map +1 -1
- package/dist/index302.js +34 -2
- package/dist/index302.js.map +1 -1
- package/dist/index303.js +2 -162
- package/dist/index303.js.map +1 -1
- package/dist/index304.js +26 -42
- package/dist/index304.js.map +1 -1
- package/dist/index305.js +2 -81
- package/dist/index305.js.map +1 -1
- package/dist/index306.js +10 -2
- package/dist/index306.js.map +1 -1
- package/dist/index307.js +2 -71
- package/dist/index307.js.map +1 -1
- package/dist/index308.js +2 -2
- package/dist/index309.js +19 -2
- package/dist/index309.js.map +1 -1
- package/dist/index31.js +96 -11
- package/dist/index31.js.map +1 -1
- package/dist/index310.js +2 -81
- package/dist/index310.js.map +1 -1
- package/dist/index311.js +2 -2
- package/dist/index312.js +42 -2
- package/dist/index312.js.map +1 -1
- package/dist/index313.js +2 -74
- package/dist/index313.js.map +1 -1
- package/dist/index314.js +25 -67
- package/dist/index314.js.map +1 -1
- package/dist/index315.js +2 -2
- package/dist/index316.js +9 -17
- package/dist/index316.js.map +1 -1
- package/dist/index317.js +2 -2
- package/dist/index318.js +84 -32
- package/dist/index318.js.map +1 -1
- package/dist/index319.js +2 -2
- package/dist/index32.js +40 -48
- package/dist/index32.js.map +1 -1
- package/dist/index320.js +68 -77
- package/dist/index320.js.map +1 -1
- package/dist/index321.js +2 -2
- package/dist/index322.js +12 -148
- package/dist/index322.js.map +1 -1
- package/dist/index323.js +1 -1
- package/dist/index324.js +28 -6
- package/dist/index324.js.map +1 -1
- package/dist/index325.js +2 -2
- package/dist/index326.js +78 -87
- package/dist/index326.js.map +1 -1
- package/dist/index327.js +2 -2
- package/dist/index328.js +78 -2
- package/dist/index328.js.map +1 -1
- package/dist/index329.js +2 -237
- package/dist/index329.js.map +1 -1
- package/dist/index33.js +20 -56
- package/dist/index33.js.map +1 -1
- package/dist/index330.js +11 -6
- package/dist/index330.js.map +1 -1
- package/dist/index331.js +2 -2
- package/dist/index332.js +18 -59
- package/dist/index332.js.map +1 -1
- package/dist/index333.js +2 -2
- package/dist/index334.js +12 -5
- package/dist/index334.js.map +1 -1
- package/dist/index335.js +2 -2
- package/dist/index336.js +2 -15
- package/dist/index336.js.map +1 -1
- package/dist/index337.js +88 -2
- package/dist/index337.js.map +1 -1
- package/dist/index338.js +24 -2
- package/dist/index338.js.map +1 -1
- package/dist/index339.js +2 -92
- package/dist/index339.js.map +1 -1
- package/dist/index34.js +59 -35
- package/dist/index34.js.map +1 -1
- package/dist/index340.js +42 -14
- package/dist/index340.js.map +1 -1
- package/dist/index341.js +2 -2
- package/dist/index342.js +22 -80
- package/dist/index342.js.map +1 -1
- package/dist/index343.js +2 -2
- package/dist/index344.js +2 -18
- package/dist/index344.js.map +1 -1
- package/dist/index345.js +16 -2
- package/dist/index345.js.map +1 -1
- package/dist/index346.js +2 -268
- package/dist/index346.js.map +1 -1
- package/dist/index347.js +176 -2
- package/dist/index347.js.map +1 -1
- package/dist/index348.js +2 -2
- package/dist/index349.js +35 -39
- package/dist/index349.js.map +1 -1
- package/dist/index35.js +101 -28
- package/dist/index35.js.map +1 -1
- package/dist/index350.js +3 -3
- package/dist/index350.js.map +1 -1
- package/dist/index351.js +2 -2
- package/dist/index352.js +19 -26
- package/dist/index352.js.map +1 -1
- package/dist/index357.js +26 -19
- package/dist/index357.js.map +1 -1
- package/dist/index36.js +115 -33
- package/dist/index36.js.map +1 -1
- package/dist/index37.js +41 -115
- package/dist/index37.js.map +1 -1
- package/dist/index38.js +34 -246
- package/dist/index38.js.map +1 -1
- package/dist/index39.js +30 -137
- package/dist/index39.js.map +1 -1
- package/dist/index4.js +26 -84
- package/dist/index4.js.map +1 -1
- package/dist/index40.js +26 -400
- package/dist/index40.js.map +1 -1
- package/dist/index41.js +28 -77
- package/dist/index41.js.map +1 -1
- package/dist/index42.js +23 -26
- package/dist/index42.js.map +1 -1
- package/dist/index43.js +36 -33
- package/dist/index43.js.map +1 -1
- package/dist/index44.js +62 -16
- package/dist/index44.js.map +1 -1
- package/dist/index45.js +138 -21
- package/dist/index45.js.map +1 -1
- package/dist/index46.js +129 -22
- package/dist/index46.js.map +1 -1
- package/dist/index47.js +41 -19
- package/dist/index47.js.map +1 -1
- package/dist/index48.js +11 -82
- package/dist/index48.js.map +1 -1
- package/dist/index49.js +56 -279
- package/dist/index49.js.map +1 -1
- package/dist/index5.js +21 -34
- package/dist/index5.js.map +1 -1
- package/dist/index50.js +280 -33
- package/dist/index50.js.map +1 -1
- package/dist/index51.js +74 -94
- package/dist/index51.js.map +1 -1
- package/dist/index52.js +66 -41
- package/dist/index52.js.map +1 -1
- package/dist/index53.js +333 -62
- package/dist/index53.js.map +1 -1
- package/dist/index54.js +96 -256
- package/dist/index54.js.map +1 -1
- package/dist/index55.js +38 -130
- package/dist/index55.js.map +1 -1
- package/dist/index56.js +251 -50
- package/dist/index56.js.map +1 -1
- package/dist/index57.js +144 -115
- package/dist/index57.js.map +1 -1
- package/dist/index58.js +93 -183
- package/dist/index58.js.map +1 -1
- package/dist/index59.js +33 -339
- package/dist/index59.js.map +1 -1
- package/dist/index6.js +2 -2
- package/dist/index60.js +102 -66
- package/dist/index60.js.map +1 -1
- package/dist/index61.js +73 -179
- package/dist/index61.js.map +1 -1
- package/dist/index62.js +117 -97
- package/dist/index62.js.map +1 -1
- package/dist/index63.js +113 -263
- package/dist/index63.js.map +1 -1
- package/dist/index64.js +258 -251
- package/dist/index64.js.map +1 -1
- package/dist/index65.js +177 -79
- package/dist/index65.js.map +1 -1
- package/dist/index66.js +261 -140
- package/dist/index66.js.map +1 -1
- package/dist/index67.js +183 -100
- package/dist/index67.js.map +1 -1
- package/dist/index68.js +28 -89
- package/dist/index68.js.map +1 -1
- package/dist/index69.js +20 -161
- package/dist/index69.js.map +1 -1
- package/dist/index7.js +394 -32
- package/dist/index7.js.map +1 -1
- package/dist/index70.js +190 -53
- package/dist/index70.js.map +1 -1
- package/dist/index71.js +204 -112
- package/dist/index71.js.map +1 -1
- package/dist/index72.js +2 -2
- package/dist/index73.js +89 -28
- package/dist/index73.js.map +1 -1
- package/dist/index74.js +126 -63
- package/dist/index74.js.map +1 -1
- package/dist/index75.js +122 -111
- package/dist/index75.js.map +1 -1
- package/dist/index76.js +67 -64
- package/dist/index76.js.map +1 -1
- package/dist/index77.js +112 -88
- package/dist/index77.js.map +1 -1
- package/dist/index78.js +87 -16
- package/dist/index78.js.map +1 -1
- package/dist/index79.js +151 -79
- package/dist/index79.js.map +1 -1
- package/dist/index8.js +25 -127
- package/dist/index8.js.map +1 -1
- package/dist/index80.js +104 -186
- package/dist/index80.js.map +1 -1
- package/dist/index81.js +59 -20
- package/dist/index81.js.map +1 -1
- package/dist/index82.js +17 -129
- package/dist/index82.js.map +1 -1
- package/dist/index83.js +88 -217
- package/dist/index83.js.map +1 -1
- package/dist/index84.js +64 -112
- package/dist/index84.js.map +1 -1
- package/dist/index9.js +30 -45
- package/dist/index9.js.map +1 -1
- package/dist/src/components/atoms/index.d.ts +45 -16
- package/dist/src/components/atoms/index.d.ts.map +1 -1
- package/dist/src/components/molecules/index.d.ts +20 -1
- package/dist/src/components/molecules/index.d.ts.map +1 -1
- package/dist/src/components/organisms/index.d.ts +17 -1
- package/dist/src/components/organisms/index.d.ts.map +1 -1
- package/dist/src/index.d.ts +3 -82
- package/dist/src/index.d.ts.map +1 -1
- package/dist/tokens.css +353 -7
- package/dist/vite.config.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/index65.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { unsafeCSS, css, LitElement } from "lit";
|
|
2
|
-
import { property,
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
1
|
+
import { unsafeCSS, css, LitElement, html } from "lit";
|
|
2
|
+
import { property, state, customElement } from "lit/decorators.js";
|
|
3
|
+
import { tabsTemplate } from "./index229.js";
|
|
4
|
+
import tabsCss from "./index230.js";
|
|
5
5
|
import sharedTokens from "./index196.js";
|
|
6
6
|
var __defProp = Object.defineProperty;
|
|
7
7
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -13,107 +13,205 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
13
13
|
if (kind && result) __defProp(target, key, result);
|
|
14
14
|
return result;
|
|
15
15
|
};
|
|
16
|
-
let
|
|
16
|
+
let LibTabs = class extends LitElement {
|
|
17
17
|
constructor() {
|
|
18
18
|
super(...arguments);
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
21
|
-
this.
|
|
22
|
-
this.value = "";
|
|
23
|
-
this.color = "kaki";
|
|
24
|
-
this.layout = "vertical";
|
|
25
|
-
this.cardTitle = "";
|
|
26
|
-
this.desc = "";
|
|
27
|
-
this.checkShape = "square";
|
|
19
|
+
this.variant = "underline";
|
|
20
|
+
this.color = "";
|
|
21
|
+
this.size = "";
|
|
28
22
|
this.dark = false;
|
|
29
|
-
this.
|
|
30
|
-
this.
|
|
31
|
-
this.
|
|
23
|
+
this.kintsugi = false;
|
|
24
|
+
this.glitch = false;
|
|
25
|
+
this.scrollable = false;
|
|
26
|
+
this.full = false;
|
|
27
|
+
this.active = "";
|
|
28
|
+
this.ariaLabel = "";
|
|
29
|
+
this.items = [];
|
|
30
|
+
this._inkLeft = 0;
|
|
31
|
+
this._inkWidth = 0;
|
|
32
|
+
this._ro = null;
|
|
32
33
|
}
|
|
33
|
-
/* ──
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
this.
|
|
34
|
+
/* ── Lifecycle ── */
|
|
35
|
+
firstUpdated() {
|
|
36
|
+
this._setupResizeObserver();
|
|
37
|
+
requestAnimationFrame(() => this._positionInk());
|
|
38
|
+
}
|
|
39
|
+
updated(changed) {
|
|
40
|
+
var _a;
|
|
41
|
+
(_a = super.updated) == null ? void 0 : _a.call(this, changed);
|
|
42
|
+
if (changed.has("active") || changed.has("items") || changed.has("variant")) {
|
|
43
|
+
requestAnimationFrame(() => this._positionInk());
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
disconnectedCallback() {
|
|
47
|
+
var _a;
|
|
48
|
+
super.disconnectedCallback();
|
|
49
|
+
(_a = this._ro) == null ? void 0 : _a.disconnect();
|
|
50
|
+
this._ro = null;
|
|
37
51
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
52
|
+
/* ── Ink bar ── */
|
|
53
|
+
_positionInk() {
|
|
54
|
+
var _a, _b;
|
|
55
|
+
const noInkVariants = [
|
|
56
|
+
"pill",
|
|
57
|
+
"card",
|
|
58
|
+
"outline",
|
|
59
|
+
"vertical"
|
|
60
|
+
];
|
|
61
|
+
if (noInkVariants.includes(this.variant)) return;
|
|
62
|
+
const list = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector(".tb-list");
|
|
63
|
+
const activeTab = (_b = this.shadowRoot) == null ? void 0 : _b.querySelector(".tb-tab.is-active");
|
|
64
|
+
if (!list || !activeTab) return;
|
|
65
|
+
const listRect = list.getBoundingClientRect();
|
|
66
|
+
const tabRect = activeTab.getBoundingClientRect();
|
|
67
|
+
this._inkLeft = tabRect.left - listRect.left;
|
|
68
|
+
this._inkWidth = tabRect.width;
|
|
48
69
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
this.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
70
|
+
_setupResizeObserver() {
|
|
71
|
+
var _a;
|
|
72
|
+
const list = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector(".tb-list");
|
|
73
|
+
if (!list) return;
|
|
74
|
+
this._ro = new ResizeObserver(() => this._positionInk());
|
|
75
|
+
this._ro.observe(list);
|
|
76
|
+
}
|
|
77
|
+
/* ── Tab activation ── */
|
|
78
|
+
_activateTab(id) {
|
|
79
|
+
var _a;
|
|
80
|
+
if (id === this.active) return;
|
|
81
|
+
const prev = this.active;
|
|
82
|
+
this.active = id;
|
|
83
|
+
if (this.scrollable) {
|
|
84
|
+
const tab = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector(
|
|
85
|
+
`[data-id="${id}"]`
|
|
86
|
+
);
|
|
87
|
+
tab == null ? void 0 : tab.scrollIntoView({
|
|
88
|
+
inline: "nearest",
|
|
89
|
+
block: "nearest",
|
|
90
|
+
behavior: "smooth"
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
this.dispatchEvent(
|
|
94
|
+
new CustomEvent("ui-lib-tab-change", {
|
|
95
|
+
detail: { id, prev },
|
|
96
|
+
bubbles: true,
|
|
97
|
+
composed: true
|
|
98
|
+
})
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
_handleClick(e) {
|
|
102
|
+
var _a;
|
|
103
|
+
const targetId = e.target.id;
|
|
104
|
+
console.log("target:", e.target.id);
|
|
105
|
+
const tabs = Array.from(
|
|
106
|
+
((_a = this.shadowRoot) == null ? void 0 : _a.querySelectorAll(
|
|
107
|
+
".tb-tab:not(.is-disabled)"
|
|
108
|
+
)) ?? []
|
|
109
|
+
);
|
|
110
|
+
const selectedTab = tabs.find((tab) => tab.id === targetId);
|
|
111
|
+
console.log(selectedTab);
|
|
112
|
+
if (!selectedTab) return;
|
|
113
|
+
this._activateTab((selectedTab == null ? void 0 : selectedTab.dataset["id"]) ?? "");
|
|
114
|
+
selectedTab.focus();
|
|
58
115
|
}
|
|
59
|
-
/*
|
|
60
|
-
|
|
61
|
-
|
|
116
|
+
/* ── Keyboard navigation ── */
|
|
117
|
+
_handleKey(e) {
|
|
118
|
+
var _a;
|
|
119
|
+
const isVertical = this.variant === "vertical";
|
|
120
|
+
const tabs = Array.from(
|
|
121
|
+
((_a = this.shadowRoot) == null ? void 0 : _a.querySelectorAll(
|
|
122
|
+
".tb-tab:not(.is-disabled)"
|
|
123
|
+
)) ?? []
|
|
124
|
+
);
|
|
125
|
+
const current = tabs.findIndex((t) => t.dataset["id"] === this.active);
|
|
126
|
+
let next = -1;
|
|
127
|
+
if (e.key === "ArrowRight" && !isVertical || e.key === "ArrowDown" && isVertical) {
|
|
128
|
+
e.preventDefault();
|
|
129
|
+
next = (current + 1) % tabs.length;
|
|
130
|
+
} else if (e.key === "ArrowLeft" && !isVertical || e.key === "ArrowUp" && isVertical) {
|
|
131
|
+
e.preventDefault();
|
|
132
|
+
next = (current - 1 + tabs.length) % tabs.length;
|
|
133
|
+
} else if (e.key === "Home") {
|
|
134
|
+
e.preventDefault();
|
|
135
|
+
next = 0;
|
|
136
|
+
} else if (e.key === "End") {
|
|
137
|
+
e.preventDefault();
|
|
138
|
+
next = tabs.length - 1;
|
|
139
|
+
}
|
|
140
|
+
if (next >= 0) {
|
|
141
|
+
const target = tabs[next];
|
|
142
|
+
if (target == null ? void 0 : target.dataset["id"]) {
|
|
143
|
+
this._activateTab(target.dataset["id"]);
|
|
144
|
+
target.focus();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
62
147
|
}
|
|
148
|
+
/* ── renderItem (LibListModel) — fallback para modo loading ── */
|
|
149
|
+
renderItem(item) {
|
|
150
|
+
return html`<button class="tb-tab">${item.label}</button>`;
|
|
151
|
+
}
|
|
152
|
+
/* ── Render principal ── */
|
|
63
153
|
render() {
|
|
64
|
-
|
|
154
|
+
var _a;
|
|
155
|
+
console.log(
|
|
156
|
+
"lib-tabs render, items:",
|
|
157
|
+
(_a = this.items) == null ? void 0 : _a.length,
|
|
158
|
+
"active:",
|
|
159
|
+
this.active
|
|
160
|
+
);
|
|
161
|
+
return tabsTemplate(this);
|
|
65
162
|
}
|
|
66
163
|
};
|
|
67
|
-
|
|
68
|
-
css
|
|
69
|
-
|
|
164
|
+
LibTabs.styles = [
|
|
165
|
+
css`
|
|
166
|
+
${unsafeCSS(sharedTokens)}
|
|
167
|
+
`,
|
|
168
|
+
css`
|
|
169
|
+
${unsafeCSS(tabsCss)}
|
|
170
|
+
`
|
|
70
171
|
];
|
|
71
|
-
__decorateClass([
|
|
72
|
-
property({ type: Boolean, reflect: true })
|
|
73
|
-
], LibCheckboxCard.prototype, "checked", 2);
|
|
74
|
-
__decorateClass([
|
|
75
|
-
property({ type: String, reflect: true, attribute: "input-type" })
|
|
76
|
-
], LibCheckboxCard.prototype, "inputType", 2);
|
|
77
|
-
__decorateClass([
|
|
78
|
-
property({ type: String })
|
|
79
|
-
], LibCheckboxCard.prototype, "name", 2);
|
|
80
|
-
__decorateClass([
|
|
81
|
-
property({ type: String })
|
|
82
|
-
], LibCheckboxCard.prototype, "value", 2);
|
|
83
172
|
__decorateClass([
|
|
84
173
|
property({ type: String, reflect: true })
|
|
85
|
-
],
|
|
174
|
+
], LibTabs.prototype, "variant", 2);
|
|
86
175
|
__decorateClass([
|
|
87
176
|
property({ type: String, reflect: true })
|
|
88
|
-
],
|
|
89
|
-
__decorateClass([
|
|
90
|
-
property({ type: String, attribute: "card-title" })
|
|
91
|
-
], LibCheckboxCard.prototype, "cardTitle", 2);
|
|
92
|
-
__decorateClass([
|
|
93
|
-
property({ type: String })
|
|
94
|
-
], LibCheckboxCard.prototype, "desc", 2);
|
|
177
|
+
], LibTabs.prototype, "color", 2);
|
|
95
178
|
__decorateClass([
|
|
96
|
-
property({ type: String,
|
|
97
|
-
],
|
|
179
|
+
property({ type: String, reflect: true })
|
|
180
|
+
], LibTabs.prototype, "size", 2);
|
|
98
181
|
__decorateClass([
|
|
99
182
|
property({ type: Boolean, reflect: true })
|
|
100
|
-
],
|
|
183
|
+
], LibTabs.prototype, "dark", 2);
|
|
101
184
|
__decorateClass([
|
|
102
185
|
property({ type: Boolean, reflect: true })
|
|
103
|
-
],
|
|
186
|
+
], LibTabs.prototype, "kintsugi", 2);
|
|
104
187
|
__decorateClass([
|
|
105
188
|
property({ type: Boolean, reflect: true })
|
|
106
|
-
],
|
|
189
|
+
], LibTabs.prototype, "glitch", 2);
|
|
190
|
+
__decorateClass([
|
|
191
|
+
property({ type: Boolean, reflect: true, attribute: "scroll" })
|
|
192
|
+
], LibTabs.prototype, "scrollable", 2);
|
|
107
193
|
__decorateClass([
|
|
108
194
|
property({ type: Boolean, reflect: true })
|
|
109
|
-
],
|
|
195
|
+
], LibTabs.prototype, "full", 2);
|
|
196
|
+
__decorateClass([
|
|
197
|
+
property({ type: String, reflect: true })
|
|
198
|
+
], LibTabs.prototype, "active", 2);
|
|
199
|
+
__decorateClass([
|
|
200
|
+
property({ type: String, attribute: "aria-label" })
|
|
201
|
+
], LibTabs.prototype, "ariaLabel", 2);
|
|
202
|
+
__decorateClass([
|
|
203
|
+
property({ type: Array, hasChanged: () => true })
|
|
204
|
+
], LibTabs.prototype, "items", 2);
|
|
205
|
+
__decorateClass([
|
|
206
|
+
state()
|
|
207
|
+
], LibTabs.prototype, "_inkLeft", 2);
|
|
110
208
|
__decorateClass([
|
|
111
|
-
|
|
112
|
-
],
|
|
113
|
-
|
|
114
|
-
customElement("lib-
|
|
115
|
-
],
|
|
209
|
+
state()
|
|
210
|
+
], LibTabs.prototype, "_inkWidth", 2);
|
|
211
|
+
LibTabs = __decorateClass([
|
|
212
|
+
customElement("lib-tabs")
|
|
213
|
+
], LibTabs);
|
|
116
214
|
export {
|
|
117
|
-
|
|
215
|
+
LibTabs
|
|
118
216
|
};
|
|
119
217
|
//# sourceMappingURL=index65.js.map
|
package/dist/index65.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index65.js","sources":["../src/components/molecules/checkbox-card/lib-checkbox-card.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { checkboxCardTemplate } from './lib-checkbox-card.html';\nimport checkboxCardCss from './lib-checkbox-card.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport type {\n CheckboxCardColor,\n CheckboxCardLayout,\n CheckboxCardInputType,\n} from './lib-checkbox-card.types';\n\n/**\n * lib-checkbox-card — Tarjeta seleccionable Shibui (SG-57)\n *\n * La mecánica de checked se gestiona con CSS puro vía\n * `input:checked ~ .cc-body`. El componente solo gestiona\n * el estado, el ripple y los eventos.\n *\n * @prop checked — Estado checked (refleja en atributo)\n * @prop input-type — 'checkbox' | 'radio'\n * @prop name — Nombre del grupo (requerido en radio)\n * @prop value — Valor del input\n * @prop color — 'kaki' | 'celadon'\n * @prop layout — 'vertical' | 'horizontal' | 'compact'\n * @prop card-title — Título (alternativa a slot)\n * @prop desc — Descripción (alternativa a slot)\n * @prop check-shape — 'square' | 'pill'\n * @prop dark — Surface oscura\n * @prop disabled — Estado deshabilitado\n * @prop error — Estado de error\n * @prop image — Modo imagen (sin padding en .cc-body)\n *\n * @fires ui-lib-checkbox-card-change — { detail: { checked: boolean, value: string } }\n *\n * @slot icon — Icono SVG o imagen\n * @slot badge — Badge/etiqueta\n * @slot title — Título (sobreescribe card-title prop)\n * @slot desc — Descripción (sobreescribe desc prop)\n * @slot price — Bloque de precio\n * @slot divider — Línea divisoria\n * @slot features — Lista de características\n * @slot image — Imagen con aspect-ratio 16/9\n * @slot — Contenido libre\n */\n@customElement('lib-checkbox-card')\nexport class LibCheckboxCard extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(checkboxCardCss)}`,\n ];\n\n @property({ type: Boolean, reflect: true })\n checked = false;\n\n @property({ type: String, reflect: true, attribute: 'input-type' })\n inputType: CheckboxCardInputType = 'checkbox';\n\n @property({ type: String })\n name = '';\n\n @property({ type: String })\n value = '';\n\n @property({ type: String, reflect: true })\n color: CheckboxCardColor = 'kaki';\n\n @property({ type: String, reflect: true })\n layout: CheckboxCardLayout = 'vertical';\n\n @property({ type: String, attribute: 'card-title' })\n cardTitle = '';\n\n @property({ type: String })\n desc = '';\n\n @property({ type: String, attribute: 'check-shape' })\n checkShape: 'square' | 'pill' = 'square';\n\n @property({ type: Boolean, reflect: true })\n dark = false;\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: Boolean, reflect: true })\n error = false;\n\n @property({ type: Boolean, reflect: true })\n image = false;\n\n @query('.cc-ripple')\n declare private _rippleEl: HTMLElement | null;\n\n /* ── Ripple en click ── */\n _handleClick(e: MouseEvent): void {\n if (this.disabled) return;\n this._spawnRipple(e);\n }\n\n private _spawnRipple(e: MouseEvent): void {\n const ripple = this._rippleEl;\n if (!ripple) return;\n\n const rect = ripple.getBoundingClientRect();\n const dot = document.createElement('span');\n dot.className = 'cc-ripple-dot';\n dot.style.left = `${e.clientX - rect.left - 2}px`;\n dot.style.top = `${e.clientY - rect.top - 2}px`;\n ripple.appendChild(dot);\n dot.addEventListener('animationend', (): void => dot.remove(), { once: true });\n }\n\n /* ── Cambio de estado ── */\n _handleChange(e: Event): void {\n const input = e.target as HTMLInputElement;\n this.checked = input.checked;\n this.dispatchEvent(new CustomEvent('ui-lib-checkbox-card-change', {\n detail: { checked: this.checked, value: this.value },\n bubbles: true,\n composed: true,\n }));\n }\n\n /* Helper para detectar slots con contenido */\n _hasSlot(name: string): boolean {\n return !!this.querySelector(`[slot=\"${name}\"]`);\n }\n\n protected override render(): TemplateResult {\n return checkboxCardTemplate(this);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-checkbox-card': LibCheckboxCard;\n }\n}"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index65.js","sources":["../src/components/molecules/tabs/lib-tabs.component.ts"],"sourcesContent":["import { html, css, unsafeCSS, TemplateResult, LitElement } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { tabsTemplate } from \"./lib-tabs.html\";\nimport tabsCss from \"./lib-tabs.css?inline\";\nimport sharedTokens from \"../../../styles/shared/tokens.css?inline\";\nimport type {\n TabItem,\n TabsVariant,\n TabsColor,\n TabsSize,\n} from \"./lib-tabs.types\";\n\n/**\n * lib-tabs — Componente de pestañas Shibui (SG-60)\n *\n * @prop variant — 'underline' | 'pill' | 'card' | 'outline' | 'vertical'\n * @prop color — 'kaki' | 'celadon'\n * @prop size — 'sm' | 'md' | 'lg'\n * @prop dark — surface oscura\n * @prop kintsugi — ink bar animada dorada\n * @prop glitch — efecto RGB split en tab activo\n * @prop scroll — overflow-x scroll en la lista\n * @prop full — tabs en grid de columnas iguales\n * @prop active — id del tab activo\n * @prop items — array de TabItem\n *\n * Panels: cada TabItem con id=\"X\" se muestra via <slot name=\"X\">.\n * El usuario añade <div slot=\"X\">contenido</div> como hijo de lib-tabs.\n *\n * @fires ui-lib-tab-change — {detail: { id: string; prev: string }}\n */\n@customElement(\"lib-tabs\")\nexport class LibTabs extends LitElement {\n static override styles = [\n css`\n ${unsafeCSS(sharedTokens)}\n `,\n css`\n ${unsafeCSS(tabsCss)}\n `,\n ];\n\n @property({ type: String, reflect: true })\n variant: TabsVariant = \"underline\";\n\n @property({ type: String, reflect: true })\n color: TabsColor | \"\" = \"\";\n\n @property({ type: String, reflect: true })\n size: TabsSize | \"\" = \"\";\n\n @property({ type: Boolean, reflect: true })\n dark = false;\n\n @property({ type: Boolean, reflect: true })\n kintsugi = false;\n\n @property({ type: Boolean, reflect: true })\n glitch = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"scroll\" })\n scrollable = false;\n\n @property({ type: Boolean, reflect: true })\n full = false;\n\n @property({ type: String, reflect: true })\n active = \"\";\n\n /** aria-label para el tablist */\n @property({ type: String, attribute: \"aria-label\" })\n override ariaLabel = \"\";\n\n @property({ type: Array, hasChanged: () => true })\n items: TabItem[] = [];\n\n /* ── Internal state para la ink bar ── */\n @state() _inkLeft = 0;\n @state() _inkWidth = 0;\n\n private _ro: ResizeObserver | null = null;\n\n /* ── Lifecycle ── */\n\n override firstUpdated(): void {\n this._setupResizeObserver();\n // Aseguramos que el primer tab activo tiene ink bar correcta\n requestAnimationFrame((): void => this._positionInk());\n }\n\n override updated(changed: Map<string, unknown>): void {\n super.updated?.(changed);\n if (\n changed.has(\"active\") ||\n changed.has(\"items\") ||\n changed.has(\"variant\")\n ) {\n requestAnimationFrame((): void => this._positionInk());\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._ro?.disconnect();\n this._ro = null;\n }\n\n /* ── Ink bar ── */\n\n private _positionInk(): void {\n /* Solo aplica a variantes con ink bar */\n const noInkVariants: TabsVariant[] = [\n \"pill\",\n \"card\",\n \"outline\",\n \"vertical\",\n ];\n if (noInkVariants.includes(this.variant)) return;\n\n const list = this.shadowRoot?.querySelector<HTMLElement>(\".tb-list\");\n const activeTab =\n this.shadowRoot?.querySelector<HTMLElement>(\".tb-tab.is-active\");\n if (!list || !activeTab) return;\n\n const listRect = list.getBoundingClientRect();\n const tabRect = activeTab.getBoundingClientRect();\n this._inkLeft = tabRect.left - listRect.left;\n this._inkWidth = tabRect.width;\n }\n\n private _setupResizeObserver(): void {\n const list = this.shadowRoot?.querySelector<HTMLElement>(\".tb-list\");\n if (!list) return;\n this._ro = new ResizeObserver((): void => this._positionInk());\n this._ro.observe(list);\n }\n\n /* ── Tab activation ── */\n\n private _activateTab(id: string): void {\n if (id === this.active) return;\n const prev = this.active;\n this.active = id;\n\n /* Scroll tab into view si está en modo scrollable */\n if (this.scrollable) {\n const tab = this.shadowRoot?.querySelector<HTMLElement>(\n `[data-id=\"${id}\"]`,\n );\n tab?.scrollIntoView({\n inline: \"nearest\",\n block: \"nearest\",\n behavior: \"smooth\",\n });\n }\n\n this.dispatchEvent(\n new CustomEvent(\"ui-lib-tab-change\", {\n detail: { id, prev },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n _handleClick(e: CustomEvent): void {\n const targetId = (e.target as HTMLElement).id;\n console.log(\"target:\", (e.target as HTMLElement).id);\n\n const tabs = Array.from(\n this.shadowRoot?.querySelectorAll<HTMLButtonElement>(\n \".tb-tab:not(.is-disabled)\",\n ) ?? [],\n );\n\n const selectedTab = tabs.find((tab) => tab.id === targetId);\n console.log(selectedTab);\n\n if (!selectedTab) return; // Si no lo encuentra, abortamos la función\n\n this._activateTab(selectedTab?.dataset[\"id\"] ?? \"\");\n selectedTab.focus();\n }\n\n /* ── Keyboard navigation ── */\n\n _handleKey(e: KeyboardEvent): void {\n const isVertical = this.variant === \"vertical\";\n const tabs = Array.from(\n this.shadowRoot?.querySelectorAll<HTMLButtonElement>(\n \".tb-tab:not(.is-disabled)\",\n ) ?? [],\n );\n const current = tabs.findIndex((t) => t.dataset[\"id\"] === this.active);\n\n let next = -1;\n\n if (\n (e.key === \"ArrowRight\" && !isVertical) ||\n (e.key === \"ArrowDown\" && isVertical)\n ) {\n e.preventDefault();\n next = (current + 1) % tabs.length;\n } else if (\n (e.key === \"ArrowLeft\" && !isVertical) ||\n (e.key === \"ArrowUp\" && isVertical)\n ) {\n e.preventDefault();\n next = (current - 1 + tabs.length) % tabs.length;\n } else if (e.key === \"Home\") {\n e.preventDefault();\n next = 0;\n } else if (e.key === \"End\") {\n e.preventDefault();\n next = tabs.length - 1;\n }\n\n if (next >= 0) {\n const target = tabs[next];\n if (target?.dataset[\"id\"]) {\n this._activateTab(target.dataset[\"id\"]);\n target.focus();\n }\n }\n }\n\n /* ── renderItem (LibListModel) — fallback para modo loading ── */\n protected renderItem(item: TabItem): TemplateResult {\n return html`<button class=\"tb-tab\">${item.label}</button>`;\n }\n\n /* ── Render principal ── */\n protected override render(): TemplateResult {\n console.log(\n \"lib-tabs render, items:\",\n this.items?.length,\n \"active:\",\n this.active,\n );\n\n return tabsTemplate(this);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"lib-tabs\": LibTabs;\n }\n}\n"],"names":[],"mappings":"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"}
|