@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/index8.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index8.js","sources":["../src/components/atoms/
|
|
1
|
+
{"version":3,"file":"index8.js","sources":["../src/components/atoms/badge/lib-badge.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport type { LibBadgeVariant, LibBadgeSize } from './lib-badge.html';\nimport { badgeTemplate } from './lib-badge.html';\nimport badgeCss from './lib-badge.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\n\n/**\n * @element lib-badge\n *\n * Indicador visual compacto para estado, notificaciones o etiquetas.\n *\n * @slot - Contenido del badge (texto o icono)\n * @csspart badge - El elemento <span> raíz del badge\n *\n * @example\n * <lib-badge variant=\"success\" dot>Activo</lib-badge>\n * <lib-badge variant=\"error\">Error</lib-badge>\n * <lib-badge variant=\"accent\" pill>Nuevo</lib-badge>\n */\n@customElement('lib-badge')\nexport class LibBadge extends LitElement {\n static override styles = [\n css`\n ${unsafeCSS(sharedTokens)}\n `,\n css`\n ${unsafeCSS(badgeCss)}\n `,\n ];\n\n /** Variante visual del badge */\n @property({ type: String, reflect: true })\n variant: LibBadgeVariant = 'default';\n\n /** Tamaño del badge */\n @property({ type: String, reflect: true })\n size: LibBadgeSize = 'md';\n\n /** Muestra un punto indicador de color a la izquierda del texto */\n @property({ type: Boolean, reflect: true })\n dot = false;\n\n /** Aplica border-radius completo (estilo píldora) */\n @property({ type: Boolean, reflect: true })\n pill = false;\n\n override render(): TemplateResult {\n return badgeTemplate({\n variant: this.variant,\n size: this.size,\n dot: this.dot,\n pill: this.pill,\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-badge': LibBadge;\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;;AAqBO,IAAM,WAAN,cAAuB,WAAW;AAAA,EAAlC,cAAA;AAAA,UAAA,GAAA,SAAA;AAYL,SAAA,UAA2B;AAI3B,SAAA,OAAqB;AAIrB,SAAA,MAAM;AAIN,SAAA,OAAO;AAAA,EAAA;AAAA,EAEE,SAAyB;AAChC,WAAO,cAAc;AAAA,MACnB,SAAS,KAAK;AAAA,MACd,MAAM,KAAK;AAAA,MACX,KAAK,KAAK;AAAA,MACV,MAAM,KAAK;AAAA,IAAA,CACZ;AAAA,EACH;AACF;AAlCa,SACK,SAAS;AAAA,EACvB;AAAA,QACI,UAAU,YAAY,CAAC;AAAA;AAAA,EAE3B;AAAA,QACI,UAAU,QAAQ,CAAC;AAAA;AAEzB;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAX9B,SAYX,WAAA,WAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAf9B,SAgBX,WAAA,QAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GAnB/B,SAoBX,WAAA,OAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GAvB/B,SAwBX,WAAA,QAAA,CAAA;AAxBW,WAAN,gBAAA;AAAA,EADN,cAAc,WAAW;AAAA,GACb,QAAA;"}
|
package/dist/index80.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { unsafeCSS, css, LitElement } from "lit";
|
|
2
|
-
import { property,
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
2
|
+
import { property, queryAssignedElements, customElement } from "lit/decorators.js";
|
|
3
|
+
import { staggerTemplate } from "./index257.js";
|
|
4
|
+
import staggerCss from "./index258.js";
|
|
5
5
|
import sharedTokens from "./index196.js";
|
|
6
6
|
var __defProp = Object.defineProperty;
|
|
7
7
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -13,210 +13,128 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
13
13
|
if (kind && result) __defProp(target, key, result);
|
|
14
14
|
return result;
|
|
15
15
|
};
|
|
16
|
-
|
|
16
|
+
const DIRECTION_MAP = {
|
|
17
|
+
up: "translateY(var(--lib-space-lg))",
|
|
18
|
+
down: "translateY(calc(-1 * var(--lib-space-lg)))",
|
|
19
|
+
left: "translateX(var(--lib-space-lg))",
|
|
20
|
+
right: "translateX(calc(-1 * var(--lib-space-lg)))",
|
|
21
|
+
fade: "none"
|
|
22
|
+
};
|
|
23
|
+
const EASING_MAP = {
|
|
24
|
+
default: "var(--ease-default)",
|
|
25
|
+
out: "var(--ease-out)",
|
|
26
|
+
bounce: "var(--ease-bounce)"
|
|
27
|
+
};
|
|
28
|
+
let LibStaggerContainer = class extends LitElement {
|
|
17
29
|
constructor() {
|
|
18
30
|
super(...arguments);
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
23
|
-
this.
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
26
|
-
|
|
27
|
-
|
|
31
|
+
this.delay = 100;
|
|
32
|
+
this.duration = 600;
|
|
33
|
+
this.direction = "up";
|
|
34
|
+
this.easing = "out";
|
|
35
|
+
this.threshold = 0.15;
|
|
36
|
+
this.once = true;
|
|
37
|
+
this._observer = null;
|
|
38
|
+
}
|
|
39
|
+
/* ── Lifecycle ── */
|
|
40
|
+
/**
|
|
41
|
+
* firstUpdated: el DOM ya está renderizado y el slot poblado.
|
|
42
|
+
* Es el momento correcto para iniciar el observer,
|
|
43
|
+
* a diferencia de connectedCallback que dispara antes del render.
|
|
44
|
+
*/
|
|
45
|
+
firstUpdated() {
|
|
46
|
+
var _a;
|
|
47
|
+
this._applyCssVars();
|
|
48
|
+
this._setupObserver();
|
|
49
|
+
const slot = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector("slot");
|
|
50
|
+
slot == null ? void 0 : slot.addEventListener("slotchange", () => {
|
|
51
|
+
this._applyCssVars();
|
|
52
|
+
});
|
|
28
53
|
}
|
|
29
|
-
/* ── Lifecycle ──────────────────────────────────────── */
|
|
30
54
|
disconnectedCallback() {
|
|
55
|
+
var _a;
|
|
31
56
|
super.disconnectedCallback();
|
|
32
|
-
this.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
handleNext: this._next.bind(this),
|
|
46
|
-
handleDot: this._goTo.bind(this),
|
|
47
|
-
handleSlot: this._onSlotChange.bind(this),
|
|
48
|
-
handleThumb: this._onThumbSlotChange.bind(this),
|
|
49
|
-
handleKey: this._onKeyDown.bind(this)
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
/* ── Slot handlers ──────────────────────────────────── */
|
|
53
|
-
_onSlotChange() {
|
|
54
|
-
this._total = this._slides.length;
|
|
55
|
-
this._applyState(this._current, false);
|
|
56
|
-
this._syncThumbs();
|
|
57
|
-
this.requestUpdate();
|
|
58
|
-
this._clearAutoplay();
|
|
59
|
-
this._startAutoplay();
|
|
60
|
-
}
|
|
61
|
-
_onThumbSlotChange() {
|
|
62
|
-
this._syncThumbs();
|
|
63
|
-
}
|
|
64
|
-
/* ── Navigation ─────────────────────────────────────── */
|
|
65
|
-
_prev() {
|
|
66
|
-
if (this._current === 0) {
|
|
67
|
-
if (this.loop) this._goTo(this._total - 1);
|
|
68
|
-
} else {
|
|
69
|
-
this._goTo(this._current - 1);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
_next() {
|
|
73
|
-
if (this._current === this._total - 1) {
|
|
74
|
-
if (this.loop) this._goTo(0);
|
|
75
|
-
} else {
|
|
76
|
-
this._goTo(this._current + 1);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
_goTo(index) {
|
|
80
|
-
if (!this._total) return;
|
|
81
|
-
const clamped = Math.max(0, Math.min(index, this._total - 1));
|
|
82
|
-
this._applyState(clamped, true);
|
|
83
|
-
this._syncThumbs();
|
|
84
|
-
this.requestUpdate();
|
|
85
|
-
this.dispatchEvent(
|
|
86
|
-
new CustomEvent("ui-lib-slide-change", {
|
|
87
|
-
detail: { current: this._current, total: this._total },
|
|
88
|
-
bubbles: true,
|
|
89
|
-
composed: true
|
|
90
|
-
})
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
/* ── Apply visual state ─────────────────────────────── */
|
|
94
|
-
_applyState(index, animate) {
|
|
95
|
-
this._current = index;
|
|
96
|
-
if (this.mode === "fade") {
|
|
97
|
-
this._applyFade();
|
|
98
|
-
} else {
|
|
99
|
-
this._applySlide(animate);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
_applySlide(animate) {
|
|
103
|
-
if (!this._trackEl) return;
|
|
104
|
-
if (!animate) {
|
|
105
|
-
this._trackEl.style.transition = "none";
|
|
106
|
-
void this._trackEl.offsetHeight;
|
|
107
|
-
} else {
|
|
108
|
-
this._trackEl.style.transition = "";
|
|
109
|
-
}
|
|
110
|
-
if (this.peek === 1) {
|
|
111
|
-
this._trackEl.style.transform = `translateX(-${this._current * 100}%)`;
|
|
112
|
-
} else {
|
|
113
|
-
const slide = this._slides[0];
|
|
114
|
-
if (!slide) return;
|
|
115
|
-
const slideW = slide.offsetWidth;
|
|
116
|
-
const gap = parseFloat(getComputedStyle(this._trackEl).gap) || 16;
|
|
117
|
-
this._trackEl.style.transform = `translateX(-${this._current * (slideW + gap)}px)`;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
_applyFade() {
|
|
121
|
-
this._slides.forEach((s, i) => {
|
|
122
|
-
s.classList.toggle("is-active", i === this._current);
|
|
57
|
+
(_a = this._observer) == null ? void 0 : _a.disconnect();
|
|
58
|
+
this._observer = null;
|
|
59
|
+
}
|
|
60
|
+
/* ── Props → CSS custom properties en :host ── */
|
|
61
|
+
updated() {
|
|
62
|
+
this.style.setProperty("--_stagger-from", DIRECTION_MAP[this.direction]);
|
|
63
|
+
this.style.setProperty("--_stagger-ease", EASING_MAP[this.easing]);
|
|
64
|
+
this.style.setProperty("--_stagger-duration", `${this.duration}ms`);
|
|
65
|
+
}
|
|
66
|
+
/* ── Asigna --_stagger-delay individual a cada item ── */
|
|
67
|
+
_applyCssVars() {
|
|
68
|
+
this._items.forEach((el, i) => {
|
|
69
|
+
el.style.setProperty("--_stagger-delay", `${i * this.delay}ms`);
|
|
123
70
|
});
|
|
124
71
|
}
|
|
125
|
-
/* ──
|
|
126
|
-
|
|
127
|
-
this.
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
72
|
+
/* ── IntersectionObserver ── */
|
|
73
|
+
_setupObserver() {
|
|
74
|
+
this._observer = new IntersectionObserver(
|
|
75
|
+
(entries) => {
|
|
76
|
+
entries.forEach((entry) => {
|
|
77
|
+
var _a;
|
|
78
|
+
if (entry.isIntersecting) {
|
|
79
|
+
this.setAttribute("visible", "");
|
|
80
|
+
this.dispatchEvent(new CustomEvent("ui-lib-stagger-visible", {
|
|
81
|
+
bubbles: true,
|
|
82
|
+
composed: true
|
|
83
|
+
}));
|
|
84
|
+
if (this.once) {
|
|
85
|
+
(_a = this._observer) == null ? void 0 : _a.disconnect();
|
|
86
|
+
this._observer = null;
|
|
87
|
+
}
|
|
88
|
+
} else if (!this.once) {
|
|
89
|
+
this.removeAttribute("visible");
|
|
90
|
+
this.dispatchEvent(new CustomEvent("ui-lib-stagger-hidden", {
|
|
91
|
+
bubbles: true,
|
|
92
|
+
composed: true
|
|
93
|
+
}));
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
threshold: this.threshold,
|
|
99
|
+
rootMargin: "0px 0px -40px 0px"
|
|
100
|
+
// Dispara un poco antes de llegar al borde
|
|
140
101
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
_clearAutoplay() {
|
|
144
|
-
if (this._autoplayTimer !== void 0) {
|
|
145
|
-
clearInterval(this._autoplayTimer);
|
|
146
|
-
this._autoplayTimer = void 0;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
/* ── Keyboard ───────────────────────────────────────── */
|
|
150
|
-
_onKeyDown(e) {
|
|
151
|
-
if (e.key === "ArrowLeft") {
|
|
152
|
-
e.preventDefault();
|
|
153
|
-
this._prev();
|
|
154
|
-
}
|
|
155
|
-
if (e.key === "ArrowRight") {
|
|
156
|
-
e.preventDefault();
|
|
157
|
-
this._next();
|
|
158
|
-
}
|
|
159
|
-
if (e.key === "Home") {
|
|
160
|
-
e.preventDefault();
|
|
161
|
-
this._goTo(0);
|
|
162
|
-
}
|
|
163
|
-
if (e.key === "End") {
|
|
164
|
-
e.preventDefault();
|
|
165
|
-
this._goTo(this._total - 1);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
/* ── Public API ─────────────────────────────────────── */
|
|
169
|
-
/** Ir a un slide concreto por índice (0-based). */
|
|
170
|
-
goTo(index) {
|
|
171
|
-
this._goTo(index);
|
|
172
|
-
}
|
|
173
|
-
/** Ir al siguiente slide. */
|
|
174
|
-
next() {
|
|
175
|
-
this._next();
|
|
102
|
+
);
|
|
103
|
+
this._observer.observe(this);
|
|
176
104
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
this._prev();
|
|
105
|
+
render() {
|
|
106
|
+
return staggerTemplate();
|
|
180
107
|
}
|
|
181
108
|
};
|
|
182
|
-
|
|
109
|
+
LibStaggerContainer.styles = [
|
|
183
110
|
css`${unsafeCSS(sharedTokens)}`,
|
|
184
|
-
css`${unsafeCSS(
|
|
111
|
+
css`${unsafeCSS(staggerCss)}`
|
|
185
112
|
];
|
|
186
113
|
__decorateClass([
|
|
187
|
-
property({ type:
|
|
188
|
-
],
|
|
189
|
-
__decorateClass([
|
|
190
|
-
property({ type: Number, reflect: true })
|
|
191
|
-
], LibCarousel.prototype, "peek", 2);
|
|
192
|
-
__decorateClass([
|
|
193
|
-
property({ type: Boolean, reflect: true })
|
|
194
|
-
], LibCarousel.prototype, "arrows", 2);
|
|
114
|
+
property({ type: Number })
|
|
115
|
+
], LibStaggerContainer.prototype, "delay", 2);
|
|
195
116
|
__decorateClass([
|
|
196
|
-
property({ type:
|
|
197
|
-
],
|
|
117
|
+
property({ type: Number })
|
|
118
|
+
], LibStaggerContainer.prototype, "duration", 2);
|
|
198
119
|
__decorateClass([
|
|
199
|
-
property({ type:
|
|
200
|
-
],
|
|
120
|
+
property({ type: String, reflect: true })
|
|
121
|
+
], LibStaggerContainer.prototype, "direction", 2);
|
|
201
122
|
__decorateClass([
|
|
202
|
-
property({ type:
|
|
203
|
-
],
|
|
123
|
+
property({ type: String })
|
|
124
|
+
], LibStaggerContainer.prototype, "easing", 2);
|
|
204
125
|
__decorateClass([
|
|
205
126
|
property({ type: Number })
|
|
206
|
-
],
|
|
207
|
-
__decorateClass([
|
|
208
|
-
query(".cr-track")
|
|
209
|
-
], LibCarousel.prototype, "_trackEl", 2);
|
|
127
|
+
], LibStaggerContainer.prototype, "threshold", 2);
|
|
210
128
|
__decorateClass([
|
|
211
|
-
|
|
212
|
-
],
|
|
129
|
+
property({ type: Boolean })
|
|
130
|
+
], LibStaggerContainer.prototype, "once", 2);
|
|
213
131
|
__decorateClass([
|
|
214
|
-
queryAssignedElements({
|
|
215
|
-
],
|
|
216
|
-
|
|
217
|
-
customElement("lib-
|
|
218
|
-
],
|
|
132
|
+
queryAssignedElements({ flatten: true })
|
|
133
|
+
], LibStaggerContainer.prototype, "_items", 2);
|
|
134
|
+
LibStaggerContainer = __decorateClass([
|
|
135
|
+
customElement("lib-stagger-container")
|
|
136
|
+
], LibStaggerContainer);
|
|
219
137
|
export {
|
|
220
|
-
|
|
138
|
+
LibStaggerContainer
|
|
221
139
|
};
|
|
222
140
|
//# sourceMappingURL=index80.js.map
|
package/dist/index80.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index80.js","sources":["../src/components/organisms/carousel/lib-carousel.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property, query, queryAssignedElements } from 'lit/decorators.js';\nimport { carouselTemplate } from './lib-carousel.html';\nimport type { LibCarouselMode } from './lib-carousel.html';\nimport carouselCss from './lib-carousel.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\n\nexport type { LibCarouselMode };\n\n/**\n * @element lib-carousel\n *\n * Carousel agnóstico. El consumer pasa los slides directamente como hijos.\n * El componente gestiona la navegación, animación y accesibilidad.\n *\n * Modos:\n * - slide : transform translateX (default)\n * - fade : crossfade por opacidad\n *\n * @slot (default) — slides del carousel\n * @slot thumbnail — tira de miniaturas (opcional, modo fade)\n *\n * @fires ui-lib-slide-change — `{ current: number, total: number }`\n *\n * @example — slide default (1 visible)\n * <lib-carousel dots counter>\n * <div>Slide 1</div>\n * <div>Slide 2</div>\n * </lib-carousel>\n *\n * @example — cards (3 visibles)\n * <lib-carousel peek=\"3\" counter>\n * <div class=\"mi-card\">...</div>\n * ...\n * </lib-carousel>\n *\n * @example — fade con thumbnails\n * <lib-carousel mode=\"fade\" dots arrows=\"false\">\n * <div>Slide 1</div>\n * <img slot=\"thumbnail\" src=\"...\" alt=\"\">\n * </lib-carousel>\n */\n@customElement('lib-carousel')\nexport class LibCarousel extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(carouselCss)}`,\n ];\n\n /**\n * Mecanismo de transición.\n * - slide : desplazamiento horizontal (transform)\n * - fade : crossfade por opacidad\n */\n @property({ type: String, reflect: true })\n mode: LibCarouselMode = 'slide';\n\n /**\n * Número de slides visibles simultáneamente.\n * peek=1 (default): carousel estándar.\n * peek=3: card carousel con tres columnas.\n */\n @property({ type: Number, reflect: true })\n peek = 1;\n\n /** Muestra flechas de navegación prev/next (solo en modo slide). */\n @property({ type: Boolean, reflect: true })\n arrows = true;\n\n /** Muestra dots de navegación. */\n @property({ type: Boolean, reflect: true })\n dots = true;\n\n /** Muestra contador numérico. */\n @property({ type: Boolean, reflect: true })\n counter = false;\n\n /** Navegación circular (el último slide vuelve al primero). */\n @property({ type: Boolean, reflect: true })\n loop = false;\n\n /**\n * Intervalo de autoplay en milisegundos.\n * 0 = desactivado (default).\n */\n @property({ type: Number })\n autoplay = 0;\n\n /* ── Internal state ─────────────────────────────────── */\n private _current = 0;\n private _total = 0;\n private _autoplayTimer: ReturnType<typeof setInterval> | undefined;\n\n @query('.cr-track')\n private _trackEl!: HTMLElement;\n\n @queryAssignedElements()\n private _slides!: Array<HTMLElement>;\n\n @queryAssignedElements({ slot: 'thumbnail' })\n private _thumbs!: Array<HTMLElement>;\n\n /* ── Lifecycle ──────────────────────────────────────── */\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._clearAutoplay();\n }\n\n override render(): TemplateResult {\n return carouselTemplate({\n mode: this.mode,\n current: this._current,\n total: this._total,\n peek: this.peek,\n arrows: this.arrows,\n dots: this.dots,\n counter: this.counter,\n loop: this.loop,\n handlePrev: this._prev.bind(this),\n handleNext: this._next.bind(this),\n handleDot: this._goTo.bind(this),\n handleSlot: this._onSlotChange.bind(this),\n handleThumb: this._onThumbSlotChange.bind(this),\n handleKey: this._onKeyDown.bind(this),\n });\n }\n\n /* ── Slot handlers ──────────────────────────────────── */\n private _onSlotChange(): void {\n this._total = this._slides.length;\n this._applyState(this._current, false); // sin animación en init\n this._syncThumbs();\n this.requestUpdate();\n this._clearAutoplay();\n this._startAutoplay();\n }\n\n private _onThumbSlotChange(): void {\n this._syncThumbs();\n }\n\n /* ── Navigation ─────────────────────────────────────── */\n private _prev(): void {\n if (this._current === 0) {\n if (this.loop) this._goTo(this._total - 1);\n } else {\n this._goTo(this._current - 1);\n }\n }\n\n private _next(): void {\n if (this._current === this._total - 1) {\n if (this.loop) this._goTo(0);\n } else {\n this._goTo(this._current + 1);\n }\n }\n\n private _goTo(index: number): void {\n if (!this._total) return;\n const clamped = Math.max(0, Math.min(index, this._total - 1));\n this._applyState(clamped, true);\n this._syncThumbs();\n this.requestUpdate();\n\n this.dispatchEvent(\n new CustomEvent<{ current: number; total: number }>('ui-lib-slide-change', {\n detail: { current: this._current, total: this._total },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /* ── Apply visual state ─────────────────────────────── */\n private _applyState(index: number, animate: boolean): void {\n this._current = index;\n\n if (this.mode === 'fade') {\n this._applyFade();\n } else {\n this._applySlide(animate);\n }\n }\n\n private _applySlide(animate: boolean): void {\n if (!this._trackEl) return;\n\n if (!animate) {\n this._trackEl.style.transition = 'none';\n // Forzar reflow para que se aplique sin transición\n void this._trackEl.offsetHeight;\n } else {\n this._trackEl.style.transition = '';\n }\n\n if (this.peek === 1) {\n this._trackEl.style.transform = `translateX(-${this._current * 100}%)`;\n } else {\n const slide = this._slides[0];\n if (!slide) return;\n const slideW = slide.offsetWidth;\n const gap = parseFloat(getComputedStyle(this._trackEl).gap) || 16;\n this._trackEl.style.transform =\n `translateX(-${this._current * (slideW + gap)}px)`;\n }\n }\n\n private _applyFade(): void {\n this._slides.forEach((s, i) => {\n s.classList.toggle('is-active', i === this._current);\n });\n }\n\n /* ── Thumbnails ─────────────────────────────────────── */\n private _syncThumbs(): void {\n this._thumbs.forEach((t, i) => {\n t.classList.toggle('is-active', i === this._current);\n t.addEventListener('click', () => this._goTo(i), { once: false });\n });\n }\n\n /* ── Autoplay ───────────────────────────────────────── */\n private _startAutoplay(): void {\n if (!this.autoplay || this.autoplay <= 0) return;\n this._autoplayTimer = setInterval(() => {\n if (this._current === this._total - 1) {\n if (this.loop) this._goTo(0);\n } else {\n this._goTo(this._current + 1);\n }\n }, this.autoplay);\n }\n\n private _clearAutoplay(): void {\n if (this._autoplayTimer !== undefined) {\n clearInterval(this._autoplayTimer);\n this._autoplayTimer = undefined;\n }\n }\n\n /* ── Keyboard ───────────────────────────────────────── */\n private _onKeyDown(e: KeyboardEvent): void {\n if (e.key === 'ArrowLeft') { e.preventDefault(); this._prev(); }\n if (e.key === 'ArrowRight') { e.preventDefault(); this._next(); }\n if (e.key === 'Home') { e.preventDefault(); this._goTo(0); }\n if (e.key === 'End') { e.preventDefault(); this._goTo(this._total - 1); }\n }\n\n /* ── Public API ─────────────────────────────────────── */\n /** Ir a un slide concreto por índice (0-based). */\n public goTo(index: number): void {\n this._goTo(index);\n }\n\n /** Ir al siguiente slide. */\n public next(): void {\n this._next();\n }\n\n /** Ir al anterior slide. */\n public prev(): void {\n this._prev();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-carousel': LibCarousel;\n }\n}"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index80.js","sources":["../src/components/organisms/stagger/lib-stagger-container.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js';\nimport { staggerTemplate } from './lib-stagger-container.html';\nimport staggerCss from './lib-stagger.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport type { StaggerDirection, StaggerEasing } from './lib-stagger-container.types';\n\n/** Mapeo dirección → valor CSS de transform inicial */\nconst DIRECTION_MAP: Record<StaggerDirection, string> = {\n up: 'translateY(var(--lib-space-lg))',\n down: 'translateY(calc(-1 * var(--lib-space-lg)))',\n left: 'translateX(var(--lib-space-lg))',\n right: 'translateX(calc(-1 * var(--lib-space-lg)))',\n fade: 'none',\n};\n\n/** Mapeo easing → token CSS */\nconst EASING_MAP: Record<StaggerEasing, string> = {\n default: 'var(--ease-default)',\n out: 'var(--ease-out)',\n bounce: 'var(--ease-bounce)',\n};\n\n/**\n * lib-stagger-container\n *\n * Anima los hijos directos en cascada al entrar en el viewport.\n * Usa IntersectionObserver para activar y CSS custom properties\n * individuales para los delays de cada item.\n *\n * @prop delay — ms entre cada item (default 100)\n * @prop duration — duración de la animación en ms (default 600)\n * @prop direction — 'up' | 'down' | 'left' | 'right' | 'fade'\n * @prop easing — 'default' | 'out' | 'bounce'\n * @prop threshold — fracción del elemento visible para disparar (default 0.15)\n * @prop once — animar solo la primera vez (default true)\n *\n * @fires ui-lib-stagger-visible — cuando el contenedor entra en viewport\n * @fires ui-lib-stagger-hidden — cuando vuelve a salir (si once=false)\n *\n * @slot — Items a animar (cada hijo directo recibe su propio delay)\n */\n@customElement('lib-stagger-container')\nexport class LibStaggerContainer extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(staggerCss)}`,\n ];\n\n @property({ type: Number })\n delay = 100;\n\n @property({ type: Number })\n duration = 600;\n\n @property({ type: String, reflect: true })\n direction: StaggerDirection = 'up';\n\n @property({ type: String })\n easing: StaggerEasing = 'out';\n\n @property({ type: Number })\n threshold = 0.15;\n\n @property({ type: Boolean })\n once = true;\n\n @queryAssignedElements({ flatten: true })\n declare private _items: HTMLElement[];\n\n private _observer: IntersectionObserver | null = null;\n\n /* ── Lifecycle ── */\n\n /**\n * firstUpdated: el DOM ya está renderizado y el slot poblado.\n * Es el momento correcto para iniciar el observer,\n * a diferencia de connectedCallback que dispara antes del render.\n */\n override firstUpdated(): void {\n this._applyCssVars();\n this._setupObserver();\n\n // Escuchar cambios en el slot (items añadidos dinámicamente)\n const slot = this.shadowRoot?.querySelector('slot');\n slot?.addEventListener('slotchange', (): void => {\n this._applyCssVars();\n });\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._observer?.disconnect();\n this._observer = null;\n }\n\n /* ── Props → CSS custom properties en :host ── */\n override updated(): void {\n this.style.setProperty('--_stagger-from', DIRECTION_MAP[this.direction]);\n this.style.setProperty('--_stagger-ease', EASING_MAP[this.easing]);\n this.style.setProperty('--_stagger-duration', `${this.duration}ms`);\n }\n\n /* ── Asigna --_stagger-delay individual a cada item ── */\n private _applyCssVars(): void {\n this._items.forEach((el, i): void => {\n el.style.setProperty('--_stagger-delay', `${i * this.delay}ms`);\n });\n }\n\n /* ── IntersectionObserver ── */\n private _setupObserver(): void {\n this._observer = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]): void => {\n entries.forEach((entry): void => {\n if (entry.isIntersecting) {\n this.setAttribute('visible', '');\n this.dispatchEvent(new CustomEvent('ui-lib-stagger-visible', {\n bubbles: true, composed: true,\n }));\n if (this.once) {\n this._observer?.disconnect();\n this._observer = null;\n }\n } else if (!this.once) {\n this.removeAttribute('visible');\n this.dispatchEvent(new CustomEvent('ui-lib-stagger-hidden', {\n bubbles: true, composed: true,\n }));\n }\n });\n },\n {\n threshold: this.threshold,\n rootMargin: '0px 0px -40px 0px', // Dispara un poco antes de llegar al borde\n },\n );\n this._observer.observe(this);\n }\n\n protected override render(): TemplateResult {\n return staggerTemplate();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-stagger-container': LibStaggerContainer;\n }\n}"],"names":[],"mappings":"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"}
|
package/dist/index81.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { unsafeCSS, css, LitElement } from "lit";
|
|
2
|
-
import { property, customElement } from "lit/decorators.js";
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
2
|
+
import { property, queryAssignedElements, customElement } from "lit/decorators.js";
|
|
3
|
+
import { stepperTemplate } from "./index259.js";
|
|
4
|
+
import stepperCss from "./index260.js";
|
|
5
5
|
import sharedTokens from "./index196.js";
|
|
6
6
|
var __defProp = Object.defineProperty;
|
|
7
7
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -13,34 +13,73 @@ 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 LibStepper = class extends LitElement {
|
|
17
17
|
constructor() {
|
|
18
18
|
super(...arguments);
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
21
|
-
this.
|
|
19
|
+
this.current = 1;
|
|
20
|
+
this.orientation = "horizontal";
|
|
21
|
+
this.variant = "default";
|
|
22
|
+
this.size = "md";
|
|
23
|
+
}
|
|
24
|
+
updated(changed) {
|
|
25
|
+
if (changed.has("current") || changed.has("orientation") || changed.has("variant") || changed.has("size")) {
|
|
26
|
+
this._syncSteps();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Propaga index, status, last, orientation, variant y size a cada lib-step hijo.
|
|
31
|
+
* Llamado en slotchange y cada vez que cambian las props relevantes.
|
|
32
|
+
*/
|
|
33
|
+
_syncSteps() {
|
|
34
|
+
const steps = this._steps;
|
|
35
|
+
if (!(steps == null ? void 0 : steps.length)) return;
|
|
36
|
+
steps.forEach((step, i) => {
|
|
37
|
+
const pos = i + 1;
|
|
38
|
+
step.index = pos;
|
|
39
|
+
step.orientation = this.orientation;
|
|
40
|
+
step.variant = this.variant;
|
|
41
|
+
step.size = this.size;
|
|
42
|
+
step.last = pos === steps.length;
|
|
43
|
+
if (step.status !== "error") {
|
|
44
|
+
if (pos < this.current) step.status = "completed";
|
|
45
|
+
else if (pos === this.current) step.status = "active";
|
|
46
|
+
else step.status = "pending";
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
_handleSlotChange() {
|
|
51
|
+
this._syncSteps();
|
|
22
52
|
}
|
|
23
53
|
render() {
|
|
24
|
-
return
|
|
54
|
+
return stepperTemplate({
|
|
55
|
+
orientation: this.orientation,
|
|
56
|
+
handleSlotChange: this._handleSlotChange.bind(this)
|
|
57
|
+
});
|
|
25
58
|
}
|
|
26
59
|
};
|
|
27
|
-
|
|
60
|
+
LibStepper.styles = [
|
|
28
61
|
css`${unsafeCSS(sharedTokens)}`,
|
|
29
|
-
css`${unsafeCSS(
|
|
62
|
+
css`${unsafeCSS(stepperCss)}`
|
|
30
63
|
];
|
|
31
64
|
__decorateClass([
|
|
32
|
-
property({ type: Number })
|
|
33
|
-
],
|
|
65
|
+
property({ type: Number, reflect: true })
|
|
66
|
+
], LibStepper.prototype, "current", 2);
|
|
67
|
+
__decorateClass([
|
|
68
|
+
property({ type: String, reflect: true })
|
|
69
|
+
], LibStepper.prototype, "orientation", 2);
|
|
70
|
+
__decorateClass([
|
|
71
|
+
property({ type: String, reflect: true })
|
|
72
|
+
], LibStepper.prototype, "variant", 2);
|
|
34
73
|
__decorateClass([
|
|
35
|
-
property({ type: String })
|
|
36
|
-
],
|
|
74
|
+
property({ type: String, reflect: true })
|
|
75
|
+
], LibStepper.prototype, "size", 2);
|
|
37
76
|
__decorateClass([
|
|
38
|
-
|
|
39
|
-
],
|
|
40
|
-
|
|
41
|
-
customElement("lib-
|
|
42
|
-
],
|
|
77
|
+
queryAssignedElements({ selector: "lib-step" })
|
|
78
|
+
], LibStepper.prototype, "_steps", 2);
|
|
79
|
+
LibStepper = __decorateClass([
|
|
80
|
+
customElement("lib-stepper")
|
|
81
|
+
], LibStepper);
|
|
43
82
|
export {
|
|
44
|
-
|
|
83
|
+
LibStepper
|
|
45
84
|
};
|
|
46
85
|
//# sourceMappingURL=index81.js.map
|
package/dist/index81.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index81.js","sources":["../src/components/organisms/
|
|
1
|
+
{"version":3,"file":"index81.js","sources":["../src/components/organisms/stepper/lib-stepper.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult, PropertyValues } from 'lit';\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js';\nimport type { LibStepperOrientation, LibStepperVariant, LibStepperSize } from './lib-stepper.html';\nimport { stepperTemplate } from './lib-stepper.html';\nimport stepperCss from './lib-stepper.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport type { LibStep } from '../../atoms/step/lib-step.component';\n\n/**\n * @element lib-stepper\n *\n * Contenedor que coordina un flujo de pasos `<lib-step>`.\n * Calcula y propaga automáticamente a cada hijo:\n * - index : posición ordinal (1-based)\n * - status : pending | active | completed (derivado de `current`)\n * - last : true en el último paso\n * - orientation : refleja la prop del stepper\n * - variant : refleja la prop del stepper\n * - size : refleja la prop del stepper\n *\n * El estado `error` no se gestiona automáticamente — se asigna desde fuera\n * con `stepEl.status = 'error'` cuando el formulario valida.\n *\n * @fires ui-lib-step-change — Emitido al cambiar `current` con `{ current: number, total: number }`\n *\n * @example — horizontal default\n * <lib-stepper current=\"2\">\n * <lib-step label=\"Información\" sub=\"Datos personales\"></lib-step>\n * <lib-step label=\"Pago\" sub=\"Método de pago\"></lib-step>\n * <lib-step label=\"Confirmación\"></lib-step>\n * </lib-stepper>\n *\n * @example — vertical\n * <lib-stepper orientation=\"vertical\" current=\"1\">\n * <lib-step label=\"Crea tu cuenta\">\n * Registro completado. Tu correo ha sido verificado.\n * </lib-step>\n * <lib-step label=\"Elige un plan\">\n * Selecciona el plan que mejor se adapte a tus necesidades.\n * </lib-step>\n * </lib-stepper>\n *\n * @example — minimal kaki\n * <lib-stepper variant=\"minimal\" current=\"3\">...</lib-stepper>\n *\n * @example — kintsugi oscuro\n * <lib-stepper variant=\"kintsugi\" current=\"2\">...</lib-stepper>\n */\n@customElement('lib-stepper')\nexport class LibStepper extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(stepperCss)}`,\n ];\n\n /**\n * Paso activo actual (1-based).\n * Los pasos anteriores quedan como `completed`, los posteriores como `pending`.\n */\n @property({ type: Number, reflect: true })\n current = 1;\n\n /**\n * Dirección del flujo.\n * - horizontal : barra horizontal con conectores (default)\n * - vertical : lista vertical con contenido expandido por paso\n */\n @property({ type: String, reflect: true })\n orientation: LibStepperOrientation = 'horizontal';\n\n /**\n * Variante visual. Se propaga a todos los lib-step hijos.\n * - default : nodo circular washi\n * - minimal : nodo cuadrado, acento kaki\n * - kintsugi : venas doradas, pensado para superficies oscuras\n */\n @property({ type: String, reflect: true })\n variant: LibStepperVariant = 'default';\n\n /**\n * Tamaño de los nodos. Se propaga a todos los lib-step hijos.\n * - sm : 24px · md : 32px (default) · lg : 40px\n */\n @property({ type: String, reflect: true })\n size: LibStepperSize = 'md';\n\n @queryAssignedElements({ selector: 'lib-step' })\n private _steps!: Array<LibStep>;\n\n override updated(changed: PropertyValues<this>): void {\n if (\n changed.has('current') ||\n changed.has('orientation') ||\n changed.has('variant') ||\n changed.has('size')\n ) {\n this._syncSteps();\n }\n }\n\n /**\n * Propaga index, status, last, orientation, variant y size a cada lib-step hijo.\n * Llamado en slotchange y cada vez que cambian las props relevantes.\n */\n private _syncSteps(): void {\n const steps = this._steps;\n if (!steps?.length) return;\n\n steps.forEach((step, i) => {\n const pos = i + 1;\n step.index = pos;\n step.orientation = this.orientation;\n step.variant = this.variant;\n step.size = this.size;\n step.last = pos === steps.length;\n\n // No sobreescribir 'error' si ya fue asignado externamente\n if (step.status !== 'error') {\n if (pos < this.current) step.status = 'completed';\n else if (pos === this.current) step.status = 'active';\n else step.status = 'pending';\n }\n });\n }\n\n private _handleSlotChange(): void {\n this._syncSteps();\n }\n\n override render(): TemplateResult {\n return stepperTemplate({\n orientation: this.orientation,\n handleSlotChange: this._handleSlotChange.bind(this),\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-stepper': LibStepper;\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;;AAiDO,IAAM,aAAN,cAAyB,WAAW;AAAA,EAApC,cAAA;AAAA,UAAA,GAAA,SAAA;AAWL,SAAA,UAAU;AAQV,SAAA,cAAqC;AASrC,SAAA,UAA6B;AAO7B,SAAA,OAAuB;AAAA,EAAA;AAAA,EAKd,QAAQ,SAAqC;AACpD,QACE,QAAQ,IAAI,SAAS,KACrB,QAAQ,IAAI,aAAa,KACzB,QAAQ,IAAI,SAAS,KACrB,QAAQ,IAAI,MAAM,GAClB;AACA,WAAK,WAAA;AAAA,IACP;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,aAAmB;AACzB,UAAM,QAAQ,KAAK;AACnB,QAAI,EAAC,+BAAO,QAAQ;AAEpB,UAAM,QAAQ,CAAC,MAAM,MAAM;AACzB,YAAM,MAAM,IAAI;AAChB,WAAK,QAAc;AACnB,WAAK,cAAc,KAAK;AACxB,WAAK,UAAc,KAAK;AACxB,WAAK,OAAc,KAAK;AACxB,WAAK,OAAc,QAAQ,MAAM;AAGjC,UAAI,KAAK,WAAW,SAAS;AAC3B,YAAI,MAAM,KAAK,QAAc,MAAK,SAAS;AAAA,iBAClC,QAAQ,KAAK,QAAS,MAAK,SAAS;AAAA,kBACV,SAAS;AAAA,MAC9C;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,oBAA0B;AAChC,SAAK,WAAA;AAAA,EACP;AAAA,EAES,SAAyB;AAChC,WAAO,gBAAgB;AAAA,MACrB,aAAiB,KAAK;AAAA,MACtB,kBAAkB,KAAK,kBAAkB,KAAK,IAAI;AAAA,IAAA,CACnD;AAAA,EACH;AACF;AAtFa,WACK,SAAS;AAAA,EACvB,MAAM,UAAU,YAAY,CAAC;AAAA,EAC7B,MAAM,UAAU,UAAU,CAAC;AAC7B;AAOA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAV9B,WAWX,WAAA,WAAA,CAAA;AAQA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAlB9B,WAmBX,WAAA,eAAA,CAAA;AASA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GA3B9B,WA4BX,WAAA,WAAA,CAAA;AAOA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAlC9B,WAmCX,WAAA,QAAA,CAAA;AAGQ,gBAAA;AAAA,EADP,sBAAsB,EAAE,UAAU,WAAA,CAAY;AAAA,GArCpC,WAsCH,WAAA,UAAA,CAAA;AAtCG,aAAN,gBAAA;AAAA,EADN,cAAc,aAAa;AAAA,GACf,UAAA;"}
|