@xscriptor/xcomponents 0.1.0 → 0.1.2

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.
Files changed (106) hide show
  1. package/README.md +1 -0
  2. package/dist/{chunk-QCMWPIG7.mjs → chunk-BXVG4SYP.mjs} +101 -3
  3. package/dist/chunk-BXVG4SYP.mjs.map +7 -0
  4. package/dist/{chunk-42XPBYTL.mjs → chunk-FW47JGYZ.mjs} +122 -4
  5. package/dist/chunk-FW47JGYZ.mjs.map +7 -0
  6. package/dist/chunk-FZRTAML3.mjs +1 -1
  7. package/dist/chunk-FZRTAML3.mjs.map +7 -1
  8. package/dist/{chunk-5G4P2E76.mjs → chunk-IK2UCTCM.mjs} +46 -6
  9. package/dist/chunk-IK2UCTCM.mjs.map +7 -0
  10. package/dist/{chunk-U27ZVCP7.mjs → chunk-WE7QZGVP.mjs} +45 -2
  11. package/dist/chunk-WE7QZGVP.mjs.map +7 -0
  12. package/dist/{chunk-2OAXRRVQ.mjs → chunk-XB3UGHSF.mjs} +94 -3
  13. package/dist/chunk-XB3UGHSF.mjs.map +7 -0
  14. package/dist/{chunk-NY22GB3E.mjs → chunk-ZDMG7X6H.mjs} +57 -2
  15. package/dist/chunk-ZDMG7X6H.mjs.map +7 -0
  16. package/dist/components/content/index.css +65 -66
  17. package/dist/components/content/index.css.map +7 -1
  18. package/dist/components/content/index.d.ts +2 -17
  19. package/dist/components/content/index.js +46 -10
  20. package/dist/components/content/index.js.map +7 -1
  21. package/dist/components/content/index.mjs +2 -2
  22. package/dist/components/content/index.mjs.map +7 -1
  23. package/dist/components/content/xinteractivephrase/XInteractivePhrase.d.ts +13 -0
  24. package/dist/components/content/xinteractivephrase/index.d.ts +3 -0
  25. package/dist/components/forms/index.css +114 -116
  26. package/dist/components/forms/index.css.map +7 -1
  27. package/dist/components/forms/index.d.ts +4 -68
  28. package/dist/components/forms/index.js +101 -8
  29. package/dist/components/forms/index.js.map +7 -1
  30. package/dist/components/forms/index.mjs +2 -2
  31. package/dist/components/forms/index.mjs.map +7 -1
  32. package/dist/components/forms/xcontactform/XContactForm.d.ts +42 -0
  33. package/dist/components/forms/xcontactform/index.d.ts +3 -0
  34. package/dist/components/forms/xnewsletter/XNewsletter.d.ts +21 -0
  35. package/dist/components/forms/xnewsletter/index.d.ts +3 -0
  36. package/dist/components/gallery/index.css +108 -111
  37. package/dist/components/gallery/index.css.map +7 -1
  38. package/dist/components/gallery/index.d.ts +4 -29
  39. package/dist/components/gallery/index.js +94 -8
  40. package/dist/components/gallery/index.js.map +7 -1
  41. package/dist/components/gallery/index.mjs +2 -2
  42. package/dist/components/gallery/index.mjs.map +7 -1
  43. package/dist/components/gallery/xmicrogallerytext/XMicroGalleryText.d.ts +15 -0
  44. package/dist/components/gallery/xmicrogallerytext/index.d.ts +3 -0
  45. package/dist/components/gallery/xstaticgallery/XStaticGallery.d.ts +10 -0
  46. package/dist/components/gallery/xstaticgallery/index.d.ts +3 -0
  47. package/dist/components/index.css +537 -535
  48. package/dist/components/index.css.map +7 -1
  49. package/dist/components/index.d.ts +6 -8
  50. package/dist/components/index.js +460 -35
  51. package/dist/components/index.js.map +7 -1
  52. package/dist/components/index.mjs +12 -12
  53. package/dist/components/index.mjs.map +7 -1
  54. package/dist/components/layout/index.css +90 -82
  55. package/dist/components/layout/index.css.map +7 -1
  56. package/dist/components/layout/index.d.ts +6 -55
  57. package/dist/components/layout/index.js +122 -10
  58. package/dist/components/layout/index.js.map +7 -1
  59. package/dist/components/layout/index.mjs +2 -2
  60. package/dist/components/layout/index.mjs.map +7 -1
  61. package/dist/components/layout/xfooter/XFooter.d.ts +24 -0
  62. package/dist/components/layout/xfooter/index.d.ts +3 -0
  63. package/dist/components/layout/xseparator/XSeparator.d.ts +13 -0
  64. package/dist/components/layout/xseparator/index.d.ts +3 -0
  65. package/dist/components/layout/xzigzaglayout/XZigZagLayout.d.ts +12 -0
  66. package/dist/components/layout/xzigzaglayout/index.d.ts +3 -0
  67. package/dist/components/navigation/index.css +121 -121
  68. package/dist/components/navigation/index.css.map +7 -1
  69. package/dist/components/navigation/index.d.ts +2 -76
  70. package/dist/components/navigation/index.js +57 -6
  71. package/dist/components/navigation/index.js.map +7 -1
  72. package/dist/components/navigation/index.mjs +2 -2
  73. package/dist/components/navigation/index.mjs.map +7 -1
  74. package/dist/components/navigation/{index.d.mts → xnavbar/XNavbar.d.ts} +6 -10
  75. package/dist/components/navigation/xnavbar/index.d.ts +3 -0
  76. package/dist/components/social/index.css +44 -44
  77. package/dist/components/social/index.css.map +7 -1
  78. package/dist/components/social/index.d.ts +2 -55
  79. package/dist/components/social/index.js +45 -13
  80. package/dist/components/social/index.js.map +7 -1
  81. package/dist/components/social/index.mjs +2 -2
  82. package/dist/components/social/index.mjs.map +7 -1
  83. package/dist/components/social/xsocialcontact/XSocialContact.d.ts +30 -0
  84. package/dist/components/social/xsocialcontact/XSocialIcons.d.ts +21 -0
  85. package/dist/components/social/xsocialcontact/index.d.ts +5 -0
  86. package/dist/index.css +537 -535
  87. package/dist/index.css.map +7 -1
  88. package/dist/index.d.ts +1 -8
  89. package/dist/index.js +463 -38
  90. package/dist/index.js.map +7 -1
  91. package/dist/index.mjs +12 -12
  92. package/dist/index.mjs.map +7 -1
  93. package/package.json +7 -4
  94. package/dist/chunk-2OAXRRVQ.mjs.map +0 -1
  95. package/dist/chunk-42XPBYTL.mjs.map +0 -1
  96. package/dist/chunk-5G4P2E76.mjs.map +0 -1
  97. package/dist/chunk-NY22GB3E.mjs.map +0 -1
  98. package/dist/chunk-QCMWPIG7.mjs.map +0 -1
  99. package/dist/chunk-U27ZVCP7.mjs.map +0 -1
  100. package/dist/components/content/index.d.mts +0 -17
  101. package/dist/components/forms/index.d.mts +0 -68
  102. package/dist/components/gallery/index.d.mts +0 -29
  103. package/dist/components/index.d.mts +0 -8
  104. package/dist/components/layout/index.d.mts +0 -55
  105. package/dist/components/social/index.d.mts +0 -55
  106. package/dist/index.d.mts +0 -8
@@ -1 +1,7 @@
1
- {"version":3,"sources":["../../../src/components/layout/index.ts","../../../src/components/layout/xfooter/XFooter.tsx","../../../src/components/layout/xfooter/XFooter.module.css","../../../src/components/layout/xseparator/XSeparator.module.css","../../../src/components/layout/xseparator/XSeparator.tsx","../../../src/components/layout/xzigzaglayout/XZigZagLayout.tsx","../../../src/components/layout/xzigzaglayout/XZigZagLayout.module.css"],"sourcesContent":["export { XFooter } from \"./xfooter\";\nexport { XSeparator } from \"./xseparator\";\nexport { XZigZagLayout } from \"./xzigzaglayout\";\nexport type { XFooterProps, XFooterLink, CopyrightConfig } from \"./xfooter\";\nexport type { XSeparatorProps } from \"./xseparator\";\nexport type { XZigZagLayoutProps } from \"./xzigzaglayout\";\n","import Link from \"next/link\";\nimport { CSSProperties } from \"react\";\nimport styles from \"./XFooter.module.css\";\n\nexport type XFooterLink = {\n label: string;\n href: string;\n};\n\nexport type CopyrightConfig = {\n text?: string;\n showYear?: boolean;\n customYear?: number | string;\n yearFirst?: boolean;\n};\n\nexport type XFooterProps = {\n links: XFooterLink[];\n copyright?: CopyrightConfig; \n layout?: \"horizontal\" | \"vertical\";\n columns?: 1 | 2 | 3 | 4;\n colors?: {\n bg?: string;\n text?: string;\n accent?: string;\n border?: string;\n };\n className?: string;\n};\nexport default function XFooter({\n links,\n copyright,\n layout = \"horizontal\",\n columns = 1,\n colors,\n className = \"\",\n}: XFooterProps) {\n \n const customStyles = {\n \"--xf-bg\": colors?.bg,\n \"--xf-text\": colors?.text,\n \"--xf-accent\": colors?.accent,\n \"--xf-border\": colors?.border,\n \"--xf-cols\": layout === \"horizontal\" ? columns : 1,\n } as CSSProperties;\n\n const currentYear = copyright?.customYear || new Date().getFullYear();\n const copyLabel = copyright?.text || \"Xscriptor\";\n\n return (\n <footer className={`${styles.XFooter} ${className}`} style={customStyles}>\n <div className={styles.container}>\n {/* Los links se organizan en el grid definido por --xf-cols */}\n <nav className={layout === \"vertical\" ? styles.navVertical : styles.nav}>\n {links.map((link, idx) => (\n <Link key={idx} href={link.href} className={styles.link}>\n {link.label}\n </Link>\n ))}\n </nav>\n\n {/* El copyright queda fuera del nav, por lo que hereda el centrado del container */}\n <div className={styles.copyright}>\n © {copyright?.yearFirst \n ? `${currentYear} ${copyLabel}` \n : `${copyLabel} ${currentYear}`}\n </div>\n </div>\n </footer>\n );\n}",".XFooter {\n width: 100%;\n background-color: var(--xf-bg, transparent);\n color: var(--xf-text, #333);\n padding: var(--xf-py, 0.9rem) 0.6rem;\n}\n\n.container {\n max-width: 1280px;\n margin: 0 auto;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.6rem; /* Espacio entre los links y el copyright */\n}\n\n/* El nav es el que maneja las columnas de los links */\n.nav {\n display: grid;\n gap: 0.5rem 1.5rem; \n grid-template-columns: repeat(var(--xf-cols, 1), minmax(0, auto));\n justify-content: center;\n text-align: center;\n width: 100%;\n}\n\n.navVertical {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.75rem;\n}\n\n.link {\n color: var(--xf-accent, inherit);\n text-decoration: none;\n font-size: 0.9rem;\n transition: opacity 0.2s;\n white-space: nowrap; /* Evita que los links se rompan en dos líneas */\n}\n\n.link:hover {\n opacity: 0.7;\n}\n\n/* El copyright siempre irá al final y centrado por el flex del .container */\n.copyright {\n font-size: 0.75rem;\n opacity: 0.6;\n width: 100%;\n text-align: center;\n}",".separatorContainer {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n /* Variables para la X con fallbacks */\n --x-color: var(--separator-color); \n --x-bg: white;\n}\n\n.iconWrapper {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--x-bg);\n padding: 0 10px;\n \n /* Aplicamos el color dinámico */\n color: var(--x-color);\n \n font-family: system-ui, sans-serif;\n font-weight: bold;\n font-size: 1.2rem;\n line-height: 1;\n user-select: none;\n}\n\n.separator {\n --separator-color: #e2e8f0;\n --separator-thickness: 1px;\n --separator-margin: 1rem;\n \n border: 0;\n background-color: var(--separator-color);\n}\n\n/* Variantes de Estilo */\n.dashed {\n background-color: transparent !important;\n border-bottom: var(--separator-thickness) dashed var(--separator-color);\n}\n\n.dotted {\n background-color: transparent !important;\n border-bottom: var(--separator-thickness) dotted var(--separator-color);\n}\n\n/* Efecto Desvanecido (Fading) */\n/* Usamos mask-image para que funcione con cualquier color de fondo */\n.faded {\n mask-image: linear-gradient(\n to right, \n transparent, \n black 20%, \n black 80%, \n transparent\n );\n}\n\n/* Ajuste para desvanecido vertical */\n.vertical.faded {\n mask-image: linear-gradient(\n to bottom, \n transparent, \n black 20%, \n black 80%, \n transparent\n );\n}\n\n.horizontal {\n width: 100%;\n height: var(--separator-thickness);\n margin: var(--separator-margin) 0;\n}\n\n.vertical {\n width: var(--separator-thickness);\n height: 100%;\n display: inline-block;\n margin: 0 var(--separator-margin);\n vertical-align: middle;\n}","import React from 'react';\nimport styles from './XSeparator.module.css';\n\nexport interface XSeparatorProps {\n orientation?: 'horizontal' | 'vertical';\n variant?: 'solid' | 'dashed' | 'dotted';\n isFaded?: boolean;\n hasX?: boolean;\n xColor?: string; // Nuevo: Color de la X\n xBg?: string; // Nuevo: Fondo detrás de la X (para el recorte)\n thickness?: string;\n color?: string;\n gap?: string;\n className?: string;\n}\n\nexport default function XSeparator({\n orientation = 'horizontal',\n variant = 'solid',\n isFaded = false,\n hasX = false,\n xColor, \n xBg = 'white',\n thickness = '1px',\n color = '#e2e8f0',\n gap = '1rem',\n className = ''\n}: XSeparatorProps) {\n \n const dynamicStyles = {\n '--separator-color': color,\n '--separator-thickness': thickness,\n '--separator-margin': gap,\n '--x-color': xColor || color, // Si no se define xColor, usa el color de la línea\n '--x-bg': xBg,\n } as React.CSSProperties;\n\n const classes = [\n styles.separator,\n orientation === 'vertical' ? styles.vertical : styles.horizontal,\n variant !== 'solid' && styles[variant],\n isFaded && styles.faded,\n ].filter(Boolean).join(' ');\n\n const line = <hr className={classes} style={dynamicStyles} />;\n\n if (!hasX) return line;\n\n return (\n <div className={`${styles.separatorContainer} ${className}`} style={dynamicStyles}>\n {line}\n <div className={styles.iconWrapper}>\n ✕\n </div>\n </div>\n );\n}","import React, { Children, HTMLAttributes, useEffect, useRef, useState, useCallback } from \"react\";\nimport styles from \"./XZigZagLayout.module.css\";\n\nexport type XZigZagLayoutProps = HTMLAttributes<HTMLDivElement> & {\n children: React.ReactNode;\n startSide?: \"left\" | \"right\";\n gap?: number | string;\n offset?: number | string;\n textAlign?: \"inherit\" | \"side\" | \"left\" | \"right\";\n showLine?: boolean;\n lineColor?: string;\n lineThickness?: number | string;\n};\n\nexport default function XZigZagLayout({\n children,\n className,\n style,\n startSide = \"left\",\n gap,\n offset,\n textAlign = \"inherit\",\n showLine = false,\n lineColor = \"#cccccc\",\n lineThickness = 2,\n ...rest\n}: XZigZagLayoutProps) {\n const items = Children.toArray(children).filter(Boolean);\n const containerRef = useRef<HTMLDivElement>(null);\n const itemsRef = useRef<(HTMLDivElement | null)[]>([]);\n const pathRef = useRef<SVGPathElement>(null);\n\n const [points, setPoints] = useState<{ x: number; y: number }[]>([]);\n const [pathLength, setPathLength] = useState(0);\n const [drawProgress, setDrawProgress] = useState(0);\n\n // Calcula el centro de cada elemento para dibujar los puntos\n const calculatePoints = useCallback(() => {\n if (!containerRef.current) return;\n const containerRect = containerRef.current.getBoundingClientRect();\n\n const newPoints = itemsRef.current.filter(Boolean).map((el) => {\n const rect = el!.getBoundingClientRect();\n return {\n x: rect.left + rect.width / 2 - containerRect.left,\n y: rect.top + rect.height / 2 - containerRect.top,\n };\n });\n\n if (newPoints.length > 0) {\n newPoints.unshift({ x: newPoints[0].x, y: 0 }); // Inicia arriba\n newPoints.push({ x: newPoints[newPoints.length - 1].x, y: containerRect.height }); // Termina abajo\n }\n\n setPoints(newPoints);\n }, []);\n\n useEffect(() => {\n if (!showLine || !containerRef.current) return;\n const observer = new ResizeObserver(() => calculatePoints());\n observer.observe(containerRef.current);\n calculatePoints();\n return () => observer.disconnect();\n }, [showLine, calculatePoints]);\n\n useEffect(() => {\n if (pathRef.current) setPathLength(pathRef.current.getTotalLength());\n }, [points]);\n\n useEffect(() => {\n if (!showLine) return;\n const handleScroll = () => {\n if (!containerRef.current) return;\n const { top, height } = containerRef.current.getBoundingClientRect();\n const windowHeight = window.innerHeight;\n const start = windowHeight / 2;\n const progress = (start - top) / height;\n\n setDrawProgress(Math.min(Math.max(progress, 0), 1));\n };\n\n window.addEventListener(\"scroll\", handleScroll);\n handleScroll();\n return () => window.removeEventListener(\"scroll\", handleScroll);\n }, [showLine]);\n\n const cssVars: Record<string, string> = {};\n if (gap !== undefined) cssVars[\"--x-zigzag-gap\"] = typeof gap === \"number\" ? `${gap}px` : gap;\n if (offset !== undefined) cssVars[\"--x-zigzag-offset\"] = typeof offset === \"number\" ? `${offset}px` : offset;\n\n const mergedStyle: React.CSSProperties = { ...style, ...cssVars };\n\n const pathD = points.length > 0\n ? `M ${points[0].x} ${points[0].y} ` + points.slice(1).map((p) => `L ${p.x} ${p.y}`).join(\" \")\n : \"\";\n\n return (\n <div\n ref={containerRef}\n {...rest}\n className={[styles.layout, className].filter(Boolean).join(\" \")}\n style={mergedStyle}\n >\n {showLine && points.length > 0 && (\n <svg className={styles.svgLine} xmlns=\"http://www.w3.org/2000/svg\">\n <path\n ref={pathRef}\n d={pathD}\n fill=\"none\"\n stroke={lineColor}\n strokeWidth={lineThickness}\n strokeDasharray={pathLength}\n strokeDashoffset={pathLength - pathLength * drawProgress}\n style={{ transition: \"stroke-dashoffset 0.1s ease-out\" }}\n />\n </svg>\n )}\n\n {items.map((child, index) => {\n const isStartLeft = startSide === \"left\";\n const alignLeft = isStartLeft ? index % 2 === 0 : index % 2 !== 0;\n const alignmentClass =\n textAlign === \"side\"\n ? alignLeft ? styles.textLeft : styles.textRight\n : textAlign === \"left\" ? styles.textLeft : textAlign === \"right\" ? styles.textRight : \"\";\n\n return (\n <div key={index} className={`${styles.item} ${alignLeft ? styles.left : styles.right} ${alignmentClass}`}>\n {/* El wrapper interno nos permite medir exactamente dónde queda el contenido */}\n <div ref={(el) => { itemsRef.current[index] = el; }} className={styles.contentWrapper}>\n {child}\n </div>\n </div>\n );\n })}\n </div>\n );\n}",".layout {\n width: min(100%, 72rem);\n margin: 0 auto;\n display: flex;\n flex-direction: column;\n gap: var(--x-zigzag-gap, 0.5rem);\n padding-inline: clamp(0.5rem, 2vw, 1rem);\n position: relative; \n}\n\n/* Nuevos estilos para el SVG de la línea */\n.svgLine {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 0;\n}\n\n.item {\n width: 100%;\n display: grid;\n grid-template-columns: repeat(12, minmax(0, 1fr));\n}\n\n.item > * {\n width: 100%;\n text-align: inherit;\n}\n\n/* Wrapper transparente que envuelve al child */\n.contentWrapper {\n width: 100%;\n}\n\n.textLeft > * {\n text-align: left;\n}\n\n.textRight > * {\n text-align: right;\n}\n\n.left > * {\n grid-column: 2 / 8;\n}\n\n.right > * {\n grid-column: 6 / 12;\n}\n\n@media (max-width: 768px) {\n /* En lugar de ocupar las 12 columnas, los hacemos un poco más angostos para que sus centros se desfasen */\n .left > * {\n grid-column: 1 / 11;\n }\n\n .right > * {\n grid-column: 3 / 13;\n }\n}"],"mappings":"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","names":["Link","import_jsx_runtime","import_jsx_runtime"]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/layout/index.ts", "../../../src/components/layout/xfooter/XFooter.tsx", "esbuild-css-modules-plugin-ns-js::src/components/layout/xfooter/XFooter.module.css:injector.js", "../../../src/components/layout/xfooter/XFooter.module.css", "esbuild-css-modules-plugin-ns-js::src/components/layout/xseparator/XSeparator.module.css:injector.js", "../../../src/components/layout/xseparator/XSeparator.module.css", "../../../src/components/layout/xseparator/XSeparator.tsx", "../../../src/components/layout/xzigzaglayout/XZigZagLayout.tsx", "esbuild-css-modules-plugin-ns-js::src/components/layout/xzigzaglayout/XZigZagLayout.module.css:injector.js", "../../../src/components/layout/xzigzaglayout/XZigZagLayout.module.css"],
4
+ "sourcesContent": ["export { XFooter } from \"./xfooter\";\nexport { XSeparator } from \"./xseparator\";\nexport { XZigZagLayout } from \"./xzigzaglayout\";\nexport type { XFooterProps, XFooterLink, CopyrightConfig } from \"./xfooter\";\nexport type { XSeparatorProps } from \"./xseparator\";\nexport type { XZigZagLayoutProps } from \"./xzigzaglayout\";\n", "import Link from \"next/link\";\nimport { CSSProperties } from \"react\";\nimport styles from \"./XFooter.module.css\";\n\nexport type XFooterLink = {\n label: string;\n href: string;\n};\n\nexport type CopyrightConfig = {\n text?: string;\n showYear?: boolean;\n customYear?: number | string;\n yearFirst?: boolean;\n};\n\nexport type XFooterProps = {\n links: XFooterLink[];\n copyright?: CopyrightConfig; \n layout?: \"horizontal\" | \"vertical\";\n columns?: 1 | 2 | 3 | 4;\n colors?: {\n bg?: string;\n text?: string;\n accent?: string;\n border?: string;\n };\n className?: string;\n};\nexport default function XFooter({\n links,\n copyright,\n layout = \"horizontal\",\n columns = 1,\n colors,\n className = \"\",\n}: XFooterProps) {\n \n const customStyles = {\n \"--xf-bg\": colors?.bg,\n \"--xf-text\": colors?.text,\n \"--xf-accent\": colors?.accent,\n \"--xf-border\": colors?.border,\n \"--xf-cols\": layout === \"horizontal\" ? columns : 1,\n } as CSSProperties;\n\n const currentYear = copyright?.customYear || new Date().getFullYear();\n const copyLabel = copyright?.text || \"Xscriptor\";\n\n return (\n <footer className={`${styles.XFooter} ${className}`} style={customStyles}>\n <div className={styles.container}>\n {/* Los links se organizan en el grid definido por --xf-cols */}\n <nav className={layout === \"vertical\" ? styles.navVertical : styles.nav}>\n {links.map((link, idx) => (\n <Link key={idx} href={link.href} className={styles.link}>\n {link.label}\n </Link>\n ))}\n </nav>\n\n {/* El copyright queda fuera del nav, por lo que hereda el centrado del container */}\n <div className={styles.copyright}>\n \u00A9 {copyright?.yearFirst \n ? `${currentYear} ${copyLabel}` \n : `${copyLabel} ${currentYear}`}\n </div>\n </div>\n </footer>\n );\n}", "\nconst content = __content_placeholder__;\nconst digest = __digest_placeholder__; \nconst inject = () => {\n setTimeout(() => {\n if (!globalThis.document) {\n return;\n }\n let root = globalThis.document.querySelector(\"head\");\n if (root && root.shadowRoot) {\n root = root.shadowRoot;\n }\n if (!root) {\n root = globalThis.document.head;\n }\n let container = root.querySelector(\"#_\" + digest);\n if (!container) {\n container = globalThis.document.createElement(\"style\");\n container.id = \"_\" + digest;\n const text = globalThis.document.createTextNode(content);\n container.appendChild(text);\n root.appendChild(container);\n }\n }, 0);\n};\n\nexport { inject };\n ", "import \"esbuild-css-modules-plugin-ns-css:src/components/layout/xfooter/XFooter.module.css\";\n\nimport { inject } from \"esbuild-css-modules-plugin-ns-js:src/components/layout/xfooter/XFooter.module.css:injector.js\";\nexport default new Proxy({\n \"xFooter\": \"XFooter-module__XFooter_v8t72G__012\",\n \"container\": \"XFooter-module__container_v8t72G__012\",\n \"copyright\": \"XFooter-module__copyright_v8t72G__012\",\n \"link\": \"XFooter-module__link_v8t72G__012\",\n \"nav\": \"XFooter-module__nav_v8t72G__012\",\n \"navVertical\": \"XFooter-module__navVertical_v8t72G__012\"\n}, {\n get: function(source, key) {\n inject();\n return source[key];\n }\n});\n ", "\nconst content = __content_placeholder__;\nconst digest = __digest_placeholder__; \nconst inject = () => {\n setTimeout(() => {\n if (!globalThis.document) {\n return;\n }\n let root = globalThis.document.querySelector(\"head\");\n if (root && root.shadowRoot) {\n root = root.shadowRoot;\n }\n if (!root) {\n root = globalThis.document.head;\n }\n let container = root.querySelector(\"#_\" + digest);\n if (!container) {\n container = globalThis.document.createElement(\"style\");\n container.id = \"_\" + digest;\n const text = globalThis.document.createTextNode(content);\n container.appendChild(text);\n root.appendChild(container);\n }\n }, 0);\n};\n\nexport { inject };\n ", "import \"esbuild-css-modules-plugin-ns-css:src/components/layout/xseparator/XSeparator.module.css\";\n\nimport { inject } from \"esbuild-css-modules-plugin-ns-js:src/components/layout/xseparator/XSeparator.module.css:injector.js\";\nexport default new Proxy({\n \"dashed\": \"XSeparator-module__dashed_btqQTG__012\",\n \"dotted\": \"XSeparator-module__dotted_btqQTG__012\",\n \"faded\": \"XSeparator-module__faded_btqQTG__012\",\n \"horizontal\": \"XSeparator-module__horizontal_btqQTG__012\",\n \"iconWrapper\": \"XSeparator-module__iconWrapper_btqQTG__012\",\n \"separator\": \"XSeparator-module__separator_btqQTG__012\",\n \"separatorContainer\": \"XSeparator-module__separatorContainer_btqQTG__012\",\n \"vertical\": \"XSeparator-module__vertical_btqQTG__012\"\n}, {\n get: function(source, key) {\n inject();\n return source[key];\n }\n});\n ", "import React from 'react';\nimport styles from './XSeparator.module.css';\n\nexport interface XSeparatorProps {\n orientation?: 'horizontal' | 'vertical';\n variant?: 'solid' | 'dashed' | 'dotted';\n isFaded?: boolean;\n hasX?: boolean;\n xColor?: string; // Nuevo: Color de la X\n xBg?: string; // Nuevo: Fondo detr\u00E1s de la X (para el recorte)\n thickness?: string;\n color?: string;\n gap?: string;\n className?: string;\n}\n\nexport default function XSeparator({\n orientation = 'horizontal',\n variant = 'solid',\n isFaded = false,\n hasX = false,\n xColor, \n xBg = 'white',\n thickness = '1px',\n color = '#e2e8f0',\n gap = '1rem',\n className = ''\n}: XSeparatorProps) {\n \n const dynamicStyles = {\n '--separator-color': color,\n '--separator-thickness': thickness,\n '--separator-margin': gap,\n '--x-color': xColor || color, // Si no se define xColor, usa el color de la l\u00EDnea\n '--x-bg': xBg,\n } as React.CSSProperties;\n\n const classes = [\n styles.separator,\n orientation === 'vertical' ? styles.vertical : styles.horizontal,\n variant !== 'solid' && styles[variant],\n isFaded && styles.faded,\n ].filter(Boolean).join(' ');\n\n const line = <hr className={classes} style={dynamicStyles} />;\n\n if (!hasX) return line;\n\n return (\n <div className={`${styles.separatorContainer} ${className}`} style={dynamicStyles}>\n {line}\n <div className={styles.iconWrapper}>\n \u2715\n </div>\n </div>\n );\n}", "import React, { Children, HTMLAttributes, useEffect, useRef, useState, useCallback } from \"react\";\nimport styles from \"./XZigZagLayout.module.css\";\n\nexport type XZigZagLayoutProps = HTMLAttributes<HTMLDivElement> & {\n children: React.ReactNode;\n startSide?: \"left\" | \"right\";\n gap?: number | string;\n offset?: number | string;\n textAlign?: \"inherit\" | \"side\" | \"left\" | \"right\";\n showLine?: boolean;\n lineColor?: string;\n lineThickness?: number | string;\n};\n\nexport default function XZigZagLayout({\n children,\n className,\n style,\n startSide = \"left\",\n gap,\n offset,\n textAlign = \"inherit\",\n showLine = false,\n lineColor = \"#cccccc\",\n lineThickness = 2,\n ...rest\n}: XZigZagLayoutProps) {\n const items = Children.toArray(children).filter(Boolean);\n const containerRef = useRef<HTMLDivElement>(null);\n const itemsRef = useRef<(HTMLDivElement | null)[]>([]);\n const pathRef = useRef<SVGPathElement>(null);\n\n const [points, setPoints] = useState<{ x: number; y: number }[]>([]);\n const [pathLength, setPathLength] = useState(0);\n const [drawProgress, setDrawProgress] = useState(0);\n\n // Calcula el centro de cada elemento para dibujar los puntos\n const calculatePoints = useCallback(() => {\n if (!containerRef.current) return;\n const containerRect = containerRef.current.getBoundingClientRect();\n\n const newPoints = itemsRef.current.filter(Boolean).map((el) => {\n const rect = el!.getBoundingClientRect();\n return {\n x: rect.left + rect.width / 2 - containerRect.left,\n y: rect.top + rect.height / 2 - containerRect.top,\n };\n });\n\n if (newPoints.length > 0) {\n newPoints.unshift({ x: newPoints[0].x, y: 0 }); // Inicia arriba\n newPoints.push({ x: newPoints[newPoints.length - 1].x, y: containerRect.height }); // Termina abajo\n }\n\n setPoints(newPoints);\n }, []);\n\n useEffect(() => {\n if (!showLine || !containerRef.current) return;\n const observer = new ResizeObserver(() => calculatePoints());\n observer.observe(containerRef.current);\n calculatePoints();\n return () => observer.disconnect();\n }, [showLine, calculatePoints]);\n\n useEffect(() => {\n if (pathRef.current) setPathLength(pathRef.current.getTotalLength());\n }, [points]);\n\n useEffect(() => {\n if (!showLine) return;\n const handleScroll = () => {\n if (!containerRef.current) return;\n const { top, height } = containerRef.current.getBoundingClientRect();\n const windowHeight = window.innerHeight;\n const start = windowHeight / 2;\n const progress = (start - top) / height;\n\n setDrawProgress(Math.min(Math.max(progress, 0), 1));\n };\n\n window.addEventListener(\"scroll\", handleScroll);\n handleScroll();\n return () => window.removeEventListener(\"scroll\", handleScroll);\n }, [showLine]);\n\n const cssVars: Record<string, string> = {};\n if (gap !== undefined) cssVars[\"--x-zigzag-gap\"] = typeof gap === \"number\" ? `${gap}px` : gap;\n if (offset !== undefined) cssVars[\"--x-zigzag-offset\"] = typeof offset === \"number\" ? `${offset}px` : offset;\n\n const mergedStyle: React.CSSProperties = { ...style, ...cssVars };\n\n const pathD = points.length > 0\n ? `M ${points[0].x} ${points[0].y} ` + points.slice(1).map((p) => `L ${p.x} ${p.y}`).join(\" \")\n : \"\";\n\n return (\n <div\n ref={containerRef}\n {...rest}\n className={[styles.layout, className].filter(Boolean).join(\" \")}\n style={mergedStyle}\n >\n {showLine && points.length > 0 && (\n <svg className={styles.svgLine} xmlns=\"http://www.w3.org/2000/svg\">\n <path\n ref={pathRef}\n d={pathD}\n fill=\"none\"\n stroke={lineColor}\n strokeWidth={lineThickness}\n strokeDasharray={pathLength}\n strokeDashoffset={pathLength - pathLength * drawProgress}\n style={{ transition: \"stroke-dashoffset 0.1s ease-out\" }}\n />\n </svg>\n )}\n\n {items.map((child, index) => {\n const isStartLeft = startSide === \"left\";\n const alignLeft = isStartLeft ? index % 2 === 0 : index % 2 !== 0;\n const alignmentClass =\n textAlign === \"side\"\n ? alignLeft ? styles.textLeft : styles.textRight\n : textAlign === \"left\" ? styles.textLeft : textAlign === \"right\" ? styles.textRight : \"\";\n\n return (\n <div key={index} className={`${styles.item} ${alignLeft ? styles.left : styles.right} ${alignmentClass}`}>\n {/* El wrapper interno nos permite medir exactamente d\u00F3nde queda el contenido */}\n <div ref={(el) => { itemsRef.current[index] = el; }} className={styles.contentWrapper}>\n {child}\n </div>\n </div>\n );\n })}\n </div>\n );\n}", "\nconst content = __content_placeholder__;\nconst digest = __digest_placeholder__; \nconst inject = () => {\n setTimeout(() => {\n if (!globalThis.document) {\n return;\n }\n let root = globalThis.document.querySelector(\"head\");\n if (root && root.shadowRoot) {\n root = root.shadowRoot;\n }\n if (!root) {\n root = globalThis.document.head;\n }\n let container = root.querySelector(\"#_\" + digest);\n if (!container) {\n container = globalThis.document.createElement(\"style\");\n container.id = \"_\" + digest;\n const text = globalThis.document.createTextNode(content);\n container.appendChild(text);\n root.appendChild(container);\n }\n }, 0);\n};\n\nexport { inject };\n ", "import \"esbuild-css-modules-plugin-ns-css:src/components/layout/xzigzaglayout/XZigZagLayout.module.css\";\n\nimport { inject } from \"esbuild-css-modules-plugin-ns-js:src/components/layout/xzigzaglayout/XZigZagLayout.module.css:injector.js\";\nexport default new Proxy({\n \"contentWrapper\": \"XZigZagLayout-module__contentWrapper_Jgc4GG__012\",\n \"item\": \"XZigZagLayout-module__item_Jgc4GG__012\",\n \"layout\": \"XZigZagLayout-module__layout_Jgc4GG__012\",\n \"left\": \"XZigZagLayout-module__left_Jgc4GG__012\",\n \"right\": \"XZigZagLayout-module__right_Jgc4GG__012\",\n \"svgLine\": \"XZigZagLayout-module__svgLine_Jgc4GG__012\",\n \"textLeft\": \"XZigZagLayout-module__textLeft_Jgc4GG__012\",\n \"textRight\": \"XZigZagLayout-module__textRight_Jgc4GG__012\"\n}, {\n get: function(source, key) {\n inject();\n return source[key];\n }\n});\n "],
5
+ "mappings": "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",
6
+ "names": ["Link", "content", "digest", "inject", "inject", "import_jsx_runtime", "content", "digest", "inject", "inject", "import_jsx_runtime"]
7
+ }
@@ -2,10 +2,10 @@ import {
2
2
  XFooter,
3
3
  XSeparator,
4
4
  XZigZagLayout
5
- } from "../../chunk-42XPBYTL.mjs";
5
+ } from "../../chunk-FW47JGYZ.mjs";
6
6
  export {
7
7
  XFooter,
8
8
  XSeparator,
9
9
  XZigZagLayout
10
10
  };
11
- //# sourceMappingURL=index.mjs.map
11
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1,7 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,24 @@
1
+ export type XFooterLink = {
2
+ label: string;
3
+ href: string;
4
+ };
5
+ export type CopyrightConfig = {
6
+ text?: string;
7
+ showYear?: boolean;
8
+ customYear?: number | string;
9
+ yearFirst?: boolean;
10
+ };
11
+ export type XFooterProps = {
12
+ links: XFooterLink[];
13
+ copyright?: CopyrightConfig;
14
+ layout?: "horizontal" | "vertical";
15
+ columns?: 1 | 2 | 3 | 4;
16
+ colors?: {
17
+ bg?: string;
18
+ text?: string;
19
+ accent?: string;
20
+ border?: string;
21
+ };
22
+ className?: string;
23
+ };
24
+ export default function XFooter({ links, copyright, layout, columns, colors, className, }: XFooterProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ export { default as XFooter } from "./XFooter";
2
+ export { default } from "./XFooter";
3
+ export type { XFooterProps, XFooterLink, CopyrightConfig } from "./XFooter";
@@ -0,0 +1,13 @@
1
+ export interface XSeparatorProps {
2
+ orientation?: 'horizontal' | 'vertical';
3
+ variant?: 'solid' | 'dashed' | 'dotted';
4
+ isFaded?: boolean;
5
+ hasX?: boolean;
6
+ xColor?: string;
7
+ xBg?: string;
8
+ thickness?: string;
9
+ color?: string;
10
+ gap?: string;
11
+ className?: string;
12
+ }
13
+ export default function XSeparator({ orientation, variant, isFaded, hasX, xColor, xBg, thickness, color, gap, className }: XSeparatorProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ export { default as XSeparator } from "./XSeparator";
2
+ export { default } from "./XSeparator";
3
+ export type { XSeparatorProps } from "./XSeparator";
@@ -0,0 +1,12 @@
1
+ import React, { HTMLAttributes } from "react";
2
+ export type XZigZagLayoutProps = HTMLAttributes<HTMLDivElement> & {
3
+ children: React.ReactNode;
4
+ startSide?: "left" | "right";
5
+ gap?: number | string;
6
+ offset?: number | string;
7
+ textAlign?: "inherit" | "side" | "left" | "right";
8
+ showLine?: boolean;
9
+ lineColor?: string;
10
+ lineThickness?: number | string;
11
+ };
12
+ export default function XZigZagLayout({ children, className, style, startSide, gap, offset, textAlign, showLine, lineColor, lineThickness, ...rest }: XZigZagLayoutProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ export { default as XZigZagLayout } from "./XZigZagLayout";
2
+ export { default } from "./XZigZagLayout";
3
+ export type { XZigZagLayoutProps } from "./XZigZagLayout";
@@ -1,229 +1,229 @@
1
- /* src/components/navigation/xnavbar/XNavbar.module.css */
2
- .header {
1
+ /* esbuild-css-modules-plugin-ns-css:src/components/navigation/xnavbar/XNavbar.module.css */
2
+ .XNavbar-module__header_wx7KiW__012 {
3
+ background: var(--bg);
3
4
  height: 100%;
4
- display: flex;
5
- align-items: center;
5
+ color: var(--text);
6
+ z-index: 60;
6
7
  justify-content: space-between;
8
+ align-items: center;
7
9
  padding: 2rem 3rem;
8
- background: var(--bg);
9
- color: var(--text);
10
10
  font-size: 1.25rem;
11
- z-index: 60;
11
+ display: flex;
12
12
  }
13
- @media (min-width: 640px) {
14
- .header {
13
+ @media (width >= 640px) {
14
+ .XNavbar-module__header_wx7KiW__012 {
15
15
  padding-inline: 2rem;
16
16
  }
17
17
  }
18
- @media (min-width: 768px) {
19
- .header {
18
+ @media (width >= 768px) {
19
+ .XNavbar-module__header_wx7KiW__012 {
20
20
  padding-inline: 3rem;
21
21
  }
22
22
  }
23
- @media (min-width: 1024px) {
24
- .header {
23
+ @media (width >= 1024px) {
24
+ .XNavbar-module__header_wx7KiW__012 {
25
25
  padding-inline: 5rem;
26
26
  }
27
27
  }
28
- @media (min-width: 1280px) {
29
- .header {
28
+ @media (width >= 1280px) {
29
+ .XNavbar-module__header_wx7KiW__012 {
30
30
  padding-inline: 12rem;
31
31
  }
32
32
  }
33
- .desktopNav {
34
- display: none;
33
+ .XNavbar-module__desktopNav_wx7KiW__012 {
34
+ grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
35
35
  align-items: center;
36
36
  width: 100%;
37
- grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
38
- padding-bottom: 0.5rem;
37
+ padding-bottom: .5rem;
38
+ display: none;
39
39
  }
40
- @media (min-width: 768px) {
41
- .desktopNav {
40
+ @media (width >= 768px) {
41
+ .XNavbar-module__desktopNav_wx7KiW__012 {
42
42
  display: grid;
43
43
  }
44
44
  }
45
- .desktopLinksLeft,
46
- .desktopLinksRight {
47
- display: flex;
45
+ .XNavbar-module__desktopLinksLeft_wx7KiW__012,
46
+ .XNavbar-module__desktopLinksRight_wx7KiW__012 {
48
47
  align-items: center;
49
48
  gap: 1.5rem;
50
49
  min-width: 0;
50
+ display: flex;
51
51
  }
52
- .desktopLinksLeft {
52
+ .XNavbar-module__desktopLinksLeft_wx7KiW__012 {
53
53
  justify-content: flex-end;
54
54
  }
55
- .desktopLinksRight {
55
+ .XNavbar-module__desktopLinksRight_wx7KiW__012 {
56
56
  justify-content: flex-start;
57
57
  }
58
- .logoSlot {
59
- display: flex;
58
+ .XNavbar-module__logoSlot_wx7KiW__012 {
60
59
  justify-content: center;
61
60
  align-items: center;
61
+ display: flex;
62
62
  }
63
- .logoWrapper {
64
- position: relative;
63
+ .XNavbar-module__logoWrapper_wx7KiW__012 {
64
+ align-items: center;
65
65
  margin-inline: 1rem;
66
66
  display: flex;
67
- align-items: center;
67
+ position: relative;
68
68
  }
69
- .logoBtn {
70
- font-weight: 700;
71
- font-size: 1.5rem;
72
- line-height: 1;
69
+ .XNavbar-module__logoBtn_wx7KiW__012 {
73
70
  user-select: none;
74
- background: none;
75
- border: none;
76
71
  cursor: pointer;
77
72
  color: var(--text);
73
+ background: none;
74
+ border: none;
78
75
  padding: 0;
76
+ font-size: 1.5rem;
77
+ font-weight: 700;
78
+ line-height: 1;
79
79
  }
80
- .iconTray {
80
+ .XNavbar-module__iconTray_wx7KiW__012 {
81
+ pointer-events: none;
81
82
  position: absolute;
82
83
  top: 50%;
83
84
  transform: translateY(-50%);
84
- pointer-events: none;
85
85
  }
86
- .iconTrayRight {
86
+ .XNavbar-module__iconTrayRight_wx7KiW__012 {
87
+ padding-left: .75rem;
87
88
  left: 100%;
88
- padding-left: 0.75rem;
89
89
  }
90
- .iconTrayLeft {
90
+ .XNavbar-module__iconTrayLeft_wx7KiW__012 {
91
+ padding-right: .75rem;
91
92
  right: 100%;
92
- padding-right: 0.75rem;
93
93
  }
94
- .navLink {
95
- padding: 0.25rem;
96
- border-bottom: 2px solid transparent;
97
- transition:
98
- border-color 0.2s,
99
- opacity 0.2s,
100
- color 0.2s;
94
+ .XNavbar-module__navLink_wx7KiW__012 {
101
95
  color: var(--xnav-link-color, var(--text));
102
- text-decoration: none;
103
96
  white-space: nowrap;
97
+ border-bottom: 2px solid #0000;
98
+ padding: .25rem;
99
+ text-decoration: none;
100
+ transition:
101
+ border-color .2s,
102
+ opacity .2s,
103
+ color .2s;
104
104
  }
105
- .navLink:hover {
105
+ .XNavbar-module__navLink_wx7KiW__012:hover {
106
106
  color: var(--xnav-link-hover, var(--xnav-link-color, var(--text)));
107
- opacity: var(--xnav-link-hover-opacity, 0.7);
107
+ opacity: var(--xnav-link-hover-opacity, .7);
108
108
  }
109
- .navLinkActive {
109
+ .XNavbar-module__navLinkActive_wx7KiW__012 {
110
110
  border-bottom-color: var(--xnav-link-active, var(--xnav-link-color, var(--text)));
111
111
  font-weight: 600;
112
112
  }
113
- .navLinkExternal::after {
113
+ .XNavbar-module__navLinkExternal_wx7KiW__012:after {
114
114
  content: " \2197";
115
- font-size: 0.7em;
116
- opacity: 0.6;
115
+ opacity: .6;
116
+ font-size: .7em;
117
117
  }
118
- .mobileToggle {
119
- display: flex;
120
- align-items: center;
118
+ .XNavbar-module__mobileToggle_wx7KiW__012 {
121
119
  justify-content: center;
120
+ align-items: center;
121
+ display: flex;
122
122
  }
123
- @media (min-width: 768px) {
124
- .mobileToggle {
123
+ @media (width >= 768px) {
124
+ .XNavbar-module__mobileToggle_wx7KiW__012 {
125
125
  display: none;
126
126
  }
127
127
  }
128
- .hamburgerBtn {
128
+ .XNavbar-module__hamburgerBtn_wx7KiW__012 {
129
+ cursor: pointer;
130
+ z-index: 80;
131
+ background: none;
132
+ border: none;
133
+ flex-direction: column;
134
+ justify-content: space-between;
135
+ align-items: center;
129
136
  width: 2.5rem;
130
137
  height: 2rem;
138
+ padding: 0;
131
139
  display: flex;
132
- flex-direction: column;
133
- align-items: center;
134
- justify-content: space-between;
135
- background: none;
136
- border: none;
137
- cursor: pointer;
138
140
  position: relative;
139
- z-index: 80;
140
- padding: 0;
141
141
  }
142
- .bar {
142
+ .XNavbar-module__bar_wx7KiW__012 {
143
143
  width: var(--xnav-bar-w, 2rem);
144
144
  height: var(--xnav-bar-h, 3px);
145
145
  background: var(--xnav-bar-color, var(--text));
146
146
  border-radius: 2px;
147
147
  }
148
- .mobileOverlay {
149
- position: fixed;
150
- inset: 0;
148
+ .XNavbar-module__mobileOverlay_wx7KiW__012 {
149
+ background: var(--bg);
151
150
  width: 100vw;
152
151
  height: 100svh;
153
- background: var(--bg);
154
152
  color: var(--text);
155
- display: flex;
153
+ z-index: 9999;
156
154
  flex-direction: column;
157
- align-items: center;
158
155
  justify-content: center;
156
+ align-items: center;
159
157
  gap: 2rem;
160
158
  font-size: 2.5rem;
161
- z-index: 9999;
162
- }
163
- .mobileCloseBtn {
159
+ display: flex;
164
160
  position: fixed;
165
- top: 2rem;
166
- left: 1rem;
161
+ inset: 0;
162
+ }
163
+ .XNavbar-module__mobileCloseBtn_wx7KiW__012 {
164
+ cursor: pointer;
167
165
  width: 2.5rem;
168
166
  height: 2rem;
169
- display: flex;
170
- align-items: center;
171
- justify-content: center;
172
- background: none;
173
- border: none;
174
- cursor: pointer;
175
167
  color: var(--xnav-bar-color, var(--text));
176
168
  z-index: 10000;
177
169
  -webkit-tap-highlight-color: transparent;
170
+ background: none;
171
+ border: none;
172
+ justify-content: center;
173
+ align-items: center;
174
+ display: flex;
175
+ position: fixed;
176
+ top: 2rem;
177
+ left: 1rem;
178
178
  }
179
- .closeBar {
180
- display: block;
181
- position: absolute;
179
+ .XNavbar-module__closeBar_wx7KiW__012 {
180
+ background: currentColor;
181
+ border-radius: 2px;
182
182
  width: 2rem;
183
183
  height: 3px;
184
- border-radius: 2px;
185
- background: currentColor;
184
+ display: block;
185
+ position: absolute;
186
186
  }
187
- .mobileLogo {
188
- font-weight: 700;
189
- font-size: 3rem;
187
+ .XNavbar-module__mobileLogo_wx7KiW__012 {
190
188
  user-select: none;
191
189
  pointer-events: none;
190
+ font-size: 3rem;
191
+ font-weight: 700;
192
192
  }
193
- .mobileNavLink {
194
- font-size: 2.5rem;
193
+ .XNavbar-module__mobileNavLink_wx7KiW__012 {
195
194
  color: var(--xnav-link-color, var(--text));
195
+ border-bottom: 2px solid #0000;
196
+ padding: .25rem;
197
+ font-size: 2.5rem;
196
198
  text-decoration: none;
197
- border-bottom: 2px solid transparent;
198
199
  transition:
199
- border-color 0.2s,
200
- color 0.2s,
201
- opacity 0.2s;
202
- padding: 0.25rem;
200
+ border-color .2s,
201
+ color .2s,
202
+ opacity .2s;
203
203
  }
204
- .mobileNavLink:hover {
204
+ .XNavbar-module__mobileNavLink_wx7KiW__012:hover {
205
205
  color: var(--xnav-link-hover, var(--xnav-link-color, var(--text)));
206
- opacity: var(--xnav-link-hover-opacity, 0.7);
206
+ opacity: var(--xnav-link-hover-opacity, .7);
207
207
  }
208
- .mobileNavLinkActive {
209
- font-weight: 600;
208
+ .XNavbar-module__mobileNavLinkActive_wx7KiW__012 {
210
209
  border-bottom-color: var(--xnav-link-active, var(--xnav-link-color, var(--text)));
210
+ font-weight: 600;
211
211
  }
212
- .themeToggleMobile {
213
- margin-top: 1rem;
214
- font-size: 1rem;
215
- padding: 0.5rem 1rem;
212
+ .XNavbar-module__themeToggleMobile_wx7KiW__012 {
216
213
  border: 1px solid var(--border);
217
- border-radius: 0.375rem;
218
- display: flex;
219
- align-items: center;
220
- gap: 0.5rem;
221
- background: none;
222
214
  color: var(--text);
223
215
  cursor: pointer;
224
- transition: opacity 0.2s;
216
+ background: none;
217
+ border-radius: .375rem;
218
+ align-items: center;
219
+ gap: .5rem;
220
+ margin-top: 1rem;
221
+ padding: .5rem 1rem;
222
+ font-size: 1rem;
223
+ transition: opacity .2s;
224
+ display: flex;
225
225
  }
226
- .themeToggleMobile:hover {
227
- opacity: 0.7;
226
+ .XNavbar-module__themeToggleMobile_wx7KiW__012:hover {
227
+ opacity: .7;
228
228
  }
229
- /*# sourceMappingURL=index.css.map */
229
+ /*# sourceMappingURL=index.css.map */
@@ -1 +1,7 @@
1
- {"version":3,"sources":["../../../src/components/navigation/xnavbar/XNavbar.module.css"],"sourcesContent":["/* ────────────────────────────────────────────\n XNavbar.module.css\n Navbar completamente libre de Tailwind.\n Usa variables CSS del tema global (--bg, --text, --border, --accent).\n ──────────────────────────────────────────── */\n\n/* ── Header / contenedor raíz ── */\n.header {\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 2rem 3rem;\n background: var(--bg);\n color: var(--text);\n font-size: 1.25rem;\n z-index: 60;\n}\n\n@media (min-width: 640px) { .header { padding-inline: 2rem; } }\n@media (min-width: 768px) { .header { padding-inline: 3rem; } }\n@media (min-width: 1024px) { .header { padding-inline: 5rem; } }\n@media (min-width: 1280px) { .header { padding-inline: 12rem; } }\n\n/* ── Desktop nav ── */\n.desktopNav {\n display: none;\n align-items: center;\n width: 100%;\n grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);\n padding-bottom: 0.5rem;\n}\n\n@media (min-width: 768px) {\n .desktopNav {\n display: grid;\n }\n}\n\n.desktopLinksLeft,\n.desktopLinksRight {\n display: flex;\n align-items: center;\n gap: 1.5rem;\n min-width: 0;\n}\n\n.desktopLinksLeft {\n justify-content: flex-end;\n}\n\n.desktopLinksRight {\n justify-content: flex-start;\n}\n\n.logoSlot {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n/* ── Logo / botón central (desktop) ── */\n.logoWrapper {\n position: relative;\n margin-inline: 1rem;\n display: flex;\n align-items: center;\n}\n\n.logoBtn {\n font-weight: 700;\n font-size: 1.5rem;\n line-height: 1;\n user-select: none;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--text);\n padding: 0;\n}\n\n/* ── Tray de íconos hover (sun/moon) ── */\n.iconTray {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n pointer-events: none;\n}\n\n.iconTrayRight {\n left: 100%;\n padding-left: 0.75rem;\n}\n\n.iconTrayLeft {\n right: 100%;\n padding-right: 0.75rem;\n}\n\n/* ── NavLink (desktop) ── */\n.navLink {\n padding: 0.25rem;\n border-bottom: 2px solid transparent;\n transition: border-color 0.2s, opacity 0.2s, color 0.2s;\n color: var(--xnav-link-color, var(--text));\n text-decoration: none;\n white-space: nowrap;\n}\n\n.navLink:hover {\n color: var(--xnav-link-hover, var(--xnav-link-color, var(--text)));\n opacity: var(--xnav-link-hover-opacity, 0.7);\n}\n\n.navLinkActive {\n border-bottom-color: var(--xnav-link-active, var(--xnav-link-color, var(--text)));\n font-weight: 600;\n}\n\n/* External link indicator */\n.navLinkExternal::after {\n content: \" ↗\";\n font-size: 0.7em;\n opacity: 0.6;\n}\n\n/* ── Mobile hamburger ── */\n.mobileToggle {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n@media (min-width: 768px) {\n .mobileToggle {\n display: none;\n }\n}\n\n.hamburgerBtn {\n width: 2.5rem;\n height: 2rem;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n background: none;\n border: none;\n cursor: pointer;\n position: relative;\n z-index: 80;\n padding: 0;\n}\n\n.bar {\n width: var(--xnav-bar-w, 2rem);\n height: var(--xnav-bar-h, 3px);\n background: var(--xnav-bar-color, var(--text));\n border-radius: 2px;\n}\n\n/* ── Mobile overlay (portal) ── */\n.mobileOverlay {\n position: fixed;\n inset: 0;\n width: 100vw;\n height: 100svh;\n background: var(--bg);\n color: var(--text);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 2rem;\n font-size: 2.5rem;\n z-index: 9999;\n}\n\n.mobileCloseBtn {\n position: fixed;\n top: 2rem;\n left: 1rem;\n width: 2.5rem;\n height: 2rem;\n display: flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: none;\n cursor: pointer;\n /* hereda el mismo color que las barras del hamburguesa */\n color: var(--xnav-bar-color, var(--text));\n z-index: 10000;\n -webkit-tap-highlight-color: transparent;\n}\n\n.closeBar {\n display: block;\n position: absolute;\n width: 2rem;\n height: 3px;\n border-radius: 2px;\n background: currentColor;\n}\n\n.mobileLogo {\n font-weight: 700;\n font-size: 3rem;\n user-select: none;\n pointer-events: none;\n}\n\n.mobileNavLink {\n font-size: 2.5rem;\n color: var(--xnav-link-color, var(--text));\n text-decoration: none;\n border-bottom: 2px solid transparent;\n transition: border-color 0.2s, color 0.2s, opacity 0.2s;\n padding: 0.25rem;\n}\n\n.mobileNavLink:hover {\n color: var(--xnav-link-hover, var(--xnav-link-color, var(--text)));\n opacity: var(--xnav-link-hover-opacity, 0.7);\n}\n\n.mobileNavLinkActive {\n font-weight: 600;\n border-bottom-color: var(--xnav-link-active, var(--xnav-link-color, var(--text)));\n}\n\n/* ── Botón tema (móvil) ── */\n.themeToggleMobile {\n margin-top: 1rem;\n font-size: 1rem;\n padding: 0.5rem 1rem;\n border: 1px solid var(--border);\n border-radius: 0.375rem;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n background: none;\n color: var(--text);\n cursor: pointer;\n transition: opacity 0.2s;\n}\n\n.themeToggleMobile:hover {\n opacity: 0.7;\n}\n"],"mappings":"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","names":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["esbuild-css-modules-plugin-ns-css:src/components/navigation/xnavbar/XNavbar.module.css"],
4
+ "sourcesContent": [".XNavbar-module__header_wx7KiW__012 {\n background: var(--bg);\n height: 100%;\n color: var(--text);\n z-index: 60;\n justify-content: space-between;\n align-items: center;\n padding: 2rem 3rem;\n font-size: 1.25rem;\n display: flex;\n}\n\n@media (width >= 640px) {\n .XNavbar-module__header_wx7KiW__012 {\n padding-inline: 2rem;\n }\n}\n\n@media (width >= 768px) {\n .XNavbar-module__header_wx7KiW__012 {\n padding-inline: 3rem;\n }\n}\n\n@media (width >= 1024px) {\n .XNavbar-module__header_wx7KiW__012 {\n padding-inline: 5rem;\n }\n}\n\n@media (width >= 1280px) {\n .XNavbar-module__header_wx7KiW__012 {\n padding-inline: 12rem;\n }\n}\n\n.XNavbar-module__desktopNav_wx7KiW__012 {\n grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);\n align-items: center;\n width: 100%;\n padding-bottom: .5rem;\n display: none;\n}\n\n@media (width >= 768px) {\n .XNavbar-module__desktopNav_wx7KiW__012 {\n display: grid;\n }\n}\n\n.XNavbar-module__desktopLinksLeft_wx7KiW__012, .XNavbar-module__desktopLinksRight_wx7KiW__012 {\n align-items: center;\n gap: 1.5rem;\n min-width: 0;\n display: flex;\n}\n\n.XNavbar-module__desktopLinksLeft_wx7KiW__012 {\n justify-content: flex-end;\n}\n\n.XNavbar-module__desktopLinksRight_wx7KiW__012 {\n justify-content: flex-start;\n}\n\n.XNavbar-module__logoSlot_wx7KiW__012 {\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.XNavbar-module__logoWrapper_wx7KiW__012 {\n align-items: center;\n margin-inline: 1rem;\n display: flex;\n position: relative;\n}\n\n.XNavbar-module__logoBtn_wx7KiW__012 {\n user-select: none;\n cursor: pointer;\n color: var(--text);\n background: none;\n border: none;\n padding: 0;\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n}\n\n.XNavbar-module__iconTray_wx7KiW__012 {\n pointer-events: none;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.XNavbar-module__iconTrayRight_wx7KiW__012 {\n padding-left: .75rem;\n left: 100%;\n}\n\n.XNavbar-module__iconTrayLeft_wx7KiW__012 {\n padding-right: .75rem;\n right: 100%;\n}\n\n.XNavbar-module__navLink_wx7KiW__012 {\n color: var(--xnav-link-color, var(--text));\n white-space: nowrap;\n border-bottom: 2px solid #0000;\n padding: .25rem;\n text-decoration: none;\n transition: border-color .2s, opacity .2s, color .2s;\n}\n\n.XNavbar-module__navLink_wx7KiW__012:hover {\n color: var(--xnav-link-hover, var(--xnav-link-color, var(--text)));\n opacity: var(--xnav-link-hover-opacity, .7);\n}\n\n.XNavbar-module__navLinkActive_wx7KiW__012 {\n border-bottom-color: var(--xnav-link-active, var(--xnav-link-color, var(--text)));\n font-weight: 600;\n}\n\n.XNavbar-module__navLinkExternal_wx7KiW__012:after {\n content: \" \u2197\";\n opacity: .6;\n font-size: .7em;\n}\n\n.XNavbar-module__mobileToggle_wx7KiW__012 {\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n@media (width >= 768px) {\n .XNavbar-module__mobileToggle_wx7KiW__012 {\n display: none;\n }\n}\n\n.XNavbar-module__hamburgerBtn_wx7KiW__012 {\n cursor: pointer;\n z-index: 80;\n background: none;\n border: none;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n width: 2.5rem;\n height: 2rem;\n padding: 0;\n display: flex;\n position: relative;\n}\n\n.XNavbar-module__bar_wx7KiW__012 {\n width: var(--xnav-bar-w, 2rem);\n height: var(--xnav-bar-h, 3px);\n background: var(--xnav-bar-color, var(--text));\n border-radius: 2px;\n}\n\n.XNavbar-module__mobileOverlay_wx7KiW__012 {\n background: var(--bg);\n width: 100vw;\n height: 100svh;\n color: var(--text);\n z-index: 9999;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 2rem;\n font-size: 2.5rem;\n display: flex;\n position: fixed;\n inset: 0;\n}\n\n.XNavbar-module__mobileCloseBtn_wx7KiW__012 {\n cursor: pointer;\n width: 2.5rem;\n height: 2rem;\n color: var(--xnav-bar-color, var(--text));\n z-index: 10000;\n -webkit-tap-highlight-color: transparent;\n background: none;\n border: none;\n justify-content: center;\n align-items: center;\n display: flex;\n position: fixed;\n top: 2rem;\n left: 1rem;\n}\n\n.XNavbar-module__closeBar_wx7KiW__012 {\n background: currentColor;\n border-radius: 2px;\n width: 2rem;\n height: 3px;\n display: block;\n position: absolute;\n}\n\n.XNavbar-module__mobileLogo_wx7KiW__012 {\n user-select: none;\n pointer-events: none;\n font-size: 3rem;\n font-weight: 700;\n}\n\n.XNavbar-module__mobileNavLink_wx7KiW__012 {\n color: var(--xnav-link-color, var(--text));\n border-bottom: 2px solid #0000;\n padding: .25rem;\n font-size: 2.5rem;\n text-decoration: none;\n transition: border-color .2s, color .2s, opacity .2s;\n}\n\n.XNavbar-module__mobileNavLink_wx7KiW__012:hover {\n color: var(--xnav-link-hover, var(--xnav-link-color, var(--text)));\n opacity: var(--xnav-link-hover-opacity, .7);\n}\n\n.XNavbar-module__mobileNavLinkActive_wx7KiW__012 {\n border-bottom-color: var(--xnav-link-active, var(--xnav-link-color, var(--text)));\n font-weight: 600;\n}\n\n.XNavbar-module__themeToggleMobile_wx7KiW__012 {\n border: 1px solid var(--border);\n color: var(--text);\n cursor: pointer;\n background: none;\n border-radius: .375rem;\n align-items: center;\n gap: .5rem;\n margin-top: 1rem;\n padding: .5rem 1rem;\n font-size: 1rem;\n transition: opacity .2s;\n display: flex;\n}\n\n.XNavbar-module__themeToggleMobile_wx7KiW__012:hover {\n opacity: .7;\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }