@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
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["esbuild-css-modules-plugin-ns-js::src/components/social/xsocialcontact/XSocialContact.module.css:injector.js", "../src/components/social/xsocialcontact/XSocialContact.module.css", "../src/components/social/xsocialcontact/XSocialContact.tsx", "../src/components/social/xsocialcontact/XSocialIcons.tsx"],
4
+ "sourcesContent": ["\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/social/xsocialcontact/XSocialContact.module.css\";\n\nimport { inject } from \"esbuild-css-modules-plugin-ns-js:src/components/social/xsocialcontact/XSocialContact.module.css:injector.js\";\nexport default new Proxy({\n \"container\": \"XSocialContact-module__container_D0-L3a__012\",\n \"iconWrapper\": \"XSocialContact-module__iconWrapper_D0-L3a__012\",\n \"item\": \"XSocialContact-module__item_D0-L3a__012\",\n \"large\": \"XSocialContact-module__large_D0-L3a__012\",\n \"medium\": \"XSocialContact-module__medium_D0-L3a__012\",\n \"rows1\": \"XSocialContact-module__rows1_D0-L3a__012\",\n \"rows2\": \"XSocialContact-module__rows2_D0-L3a__012\",\n \"rows3\": \"XSocialContact-module__rows3_D0-L3a__012\",\n \"rows4\": \"XSocialContact-module__rows4_D0-L3a__012\",\n \"small\": \"XSocialContact-module__small_D0-L3a__012\",\n \"text\": \"XSocialContact-module__text_D0-L3a__012\"\n}, {\n get: function(source, key) {\n inject();\n return source[key];\n }\n});\n ", "\"use client\";\n\nimport React from \"react\";\nimport styles from \"./XSocialContact.module.css\";\n\nexport interface SocialItem {\n id: string;\n href: string;\n label: string;\n icon: React.ReactNode;\n text?: string;\n iconColor?: string;\n iconHoverColor?: string;\n}\n\nexport interface XSocialContactProps {\n items: SocialItem[];\n columns?: number;\n rows?: number;\n size?: \"small\" | \"medium\" | \"large\";\n alignment?: \"left\" | \"center\" | \"right\";\n gap?: string;\n backgroundColor?: string;\n iconDefaultColor?: string;\n iconDefaultHoverColor?: string;\n borderColor?: string;\n borderWidth?: string;\n borderStyle?: \"solid\" | \"dashed\" | \"dotted\";\n borderRadius?: \"rounded\" | \"square\";\n padding?: string;\n textAlign?: \"left\" | \"center\" | \"right\";\n textColor?: string;\n textSize?: string;\n}\n\nexport default function XSocialContact({\n items,\n columns = 3,\n rows,\n size = \"medium\",\n alignment = \"center\",\n gap,\n backgroundColor,\n iconDefaultColor,\n iconDefaultHoverColor,\n borderColor,\n borderWidth,\n borderStyle = \"solid\",\n borderRadius = \"rounded\",\n padding,\n textAlign = \"center\",\n textColor,\n textSize,\n}: XSocialContactProps) {\n const sizeMap = {\n small: \"1rem\",\n medium: \"1.5rem\",\n large: \"2rem\",\n } as const;\n\n const alignmentMap = {\n left: \"flex-start\",\n center: \"center\",\n right: \"flex-end\",\n } as const;\n\n const textAlignMap = {\n left: \"left\",\n center: \"center\",\n right: \"right\",\n } as const;\n\n const radiusMap = {\n rounded: \"0.5rem\",\n square: \"0\",\n } as const;\n\n const defaultGap = gap || (size === \"small\" ? \"1rem\" : size === \"medium\" ? \"1.5rem\" : \"2rem\");\n const defaultPadding =\n padding || (size === \"small\" ? \"1rem\" : size === \"medium\" ? \"1.5rem\" : \"2rem\");\n const defaultTextSize = textSize || (size === \"small\" ? \"0.875rem\" : size === \"medium\" ? \"1rem\" : \"1.125rem\");\n\n const customStyles = {\n \"--columns\": columns.toString(),\n \"--gap\": defaultGap,\n \"--padding\": defaultPadding,\n \"--text-size\": defaultTextSize,\n \"--alignment\": alignmentMap[alignment],\n \"--text-align\": textAlignMap[textAlign],\n \"--icon-gap\": sizeMap[size],\n \"--border-radius\": radiusMap[borderRadius],\n ...(backgroundColor && { \"--bg-color\": backgroundColor }),\n ...(iconDefaultColor && { \"--icon-color\": iconDefaultColor }),\n ...(iconDefaultHoverColor && { \"--icon-hover-color\": iconDefaultHoverColor }),\n ...(borderColor && { \"--border-color\": borderColor }),\n ...(borderWidth && { \"--border-width\": borderWidth }),\n ...(textColor && { \"--text-color\": textColor }),\n \"--border-style\": borderStyle,\n } as React.CSSProperties;\n\n let containerClass = styles.container;\n if (rows) {\n containerClass += ` ${styles[`rows${rows}`]}`;\n }\n\n return (\n <div\n className={`${containerClass} ${styles[size]}`}\n style={customStyles}\n >\n {items.map((item) => (\n <a\n key={item.id}\n href={item.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.item}\n title={item.label}\n style={{\n ...(item.iconColor && { \"--item-icon-color\": item.iconColor }),\n ...(item.iconHoverColor && { \"--item-icon-hover-color\": item.iconHoverColor }),\n } as React.CSSProperties}\n >\n <div className={styles.iconWrapper}>{item.icon}</div>\n {item.text && <span className={styles.text}>{item.text}</span>}\n </a>\n ))}\n </div>\n );\n}\n", "\"use client\";\n\nimport React, { useState } from \"react\";\n\nexport interface XSocialIconProps extends Omit<React.SVGProps<SVGSVGElement>, \"color\" | \"children\"> {\n size?: number | string;\n color?: string;\n hoverColor?: string;\n fillColor?: string;\n hoverFillColor?: string;\n backgroundColor?: string;\n badgeColor?: string;\n badgeBackgroundColor?: string;\n strokeWidth?: number;\n showBadge?: boolean;\n title?: string;\n}\n\ntype IconPalette = {\n stroke: string;\n fill: string;\n badgeStroke: string;\n badgeFill: string;\n};\n\ntype SocialIconContentProps = {\n palette: IconPalette;\n};\n\ntype SocialIconRenderer = (props: SocialIconContentProps) => React.ReactNode;\n\nfunction XSocialIconShell({\n size = 24,\n color = \"currentColor\",\n hoverColor,\n fillColor,\n hoverFillColor,\n backgroundColor,\n badgeColor,\n badgeBackgroundColor,\n strokeWidth = 1.8,\n showBadge = true,\n title,\n style,\n children,\n ...rest\n}: XSocialIconProps & { children: SocialIconRenderer }) {\n const [isHovered, setIsHovered] = useState(false);\n\n const stroke = isHovered && hoverColor ? hoverColor : color;\n const fill = isHovered && hoverFillColor ? hoverFillColor : fillColor || stroke;\n const badgeStroke = badgeColor || stroke;\n const badgeFill = badgeBackgroundColor || \"transparent\";\n\n const palette = {\n stroke,\n fill,\n badgeStroke,\n badgeFill,\n };\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n role={title ? \"img\" : \"presentation\"}\n aria-label={title}\n aria-hidden={title ? undefined : true}\n onPointerEnter={() => setIsHovered(true)}\n onPointerLeave={() => setIsHovered(false)}\n style={{ color: stroke, ...(style ?? {}) }}\n {...rest}\n >\n {title ? <title>{title}</title> : null}\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10.5\"\n fill={backgroundColor || \"none\"}\n stroke={backgroundColor ? \"none\" : stroke}\n strokeOpacity={backgroundColor ? undefined : 0.14}\n strokeWidth={backgroundColor ? undefined : strokeWidth}\n />\n {children({ palette })}\n {showBadge && (\n <g>\n <circle cx=\"18\" cy=\"18\" r=\"2.6\" fill={badgeFill} stroke={badgeStroke} strokeWidth=\"1\" />\n <path d=\"M17.05 17.05L18.95 18.95M18.95 17.05L17.05 18.95\" stroke={badgeStroke} strokeWidth=\"1.15\" strokeLinecap=\"round\" />\n </g>\n )}\n </svg>\n );\n}\n\nexport function XTelegramIcon(props: XSocialIconProps) {\n return (\n <XSocialIconShell {...props} strokeWidth={props.strokeWidth ?? 1.8}>\n {({ palette }) => (\n <>\n <path\n d=\"M9.2 12.4l2.15 2.15 5.1-5.1M20.6 4.2L4 12l6.45 1.8 1.8 6.45 2.55-4.2 4.2 2.55 1.6-14.4z\"\n stroke={palette.stroke}\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n />\n <circle cx=\"12\" cy=\"12\" r=\"9.75\" fill=\"none\" stroke={palette.stroke} strokeOpacity=\"0.18\" strokeWidth=\"1\" />\n </>\n )}\n </XSocialIconShell>\n );\n}\n\nexport function XInstagramIcon(props: XSocialIconProps) {\n return (\n <XSocialIconShell {...props} strokeWidth={props.strokeWidth ?? 1.6}>\n {({ palette }) => (\n <>\n <rect x=\"6.2\" y=\"6.2\" width=\"11.6\" height=\"11.6\" rx=\"3.2\" ry=\"3.2\" stroke={palette.stroke} strokeWidth=\"1.6\" fill=\"none\" />\n <circle cx=\"12\" cy=\"12\" r=\"3.15\" stroke={palette.stroke} strokeWidth=\"1.6\" fill=\"none\" />\n <circle cx=\"16.3\" cy=\"7.7\" r=\"0.7\" fill={palette.fill} />\n </>\n )}\n </XSocialIconShell>\n );\n}\n\nexport function XWhatsappIcon(props: XSocialIconProps) {\n return (\n <XSocialIconShell {...props} strokeWidth={props.strokeWidth ?? 1.5}>\n {({ palette }) => (\n <>\n <path\n d=\"M16.72 13.06c-.29-.15-1.71-.84-1.98-.94-.26-.1-.45-.15-.64.14-.19.29-.74.94-.9 1.13-.16.19-.33.22-.62.08-.29-.15-1.23-.45-2.35-1.45-.87-.77-1.45-1.72-1.62-2.01-.16-.29-.02-.45.12-.59.13-.13.29-.33.43-.49.14-.16.18-.28.27-.47.09-.19.04-.36-.02-.51-.07-.15-.64-1.54-.88-2.1-.23-.55-.47-.48-.64-.49-.16-.01-.36-.01-.55-.01-.19 0-.5.07-.76.36-.26.29-1 1.01-1 2.47 0 1.45 1.04 2.85 1.19 3.05.15.19 2.05 3.12 5.2 4.38.73.31 1.3.49 1.74.63.73.23 1.4.2 1.92.12.59-.09 1.71-.7 1.95-1.37.24-.67.24-1.25.17-1.37-.07-.11-.26-.18-.55-.32z\"\n fill={palette.fill}\n />\n <path\n d=\"M12 3.2C7.13 3.2 3.2 7.13 3.2 12c0 1.56.41 3.02 1.13 4.29L3.2 20.8l4.59-1.09A8.77 8.77 0 0 0 12 20.8c4.87 0 8.8-3.93 8.8-8.8s-3.93-8.8-8.8-8.8z\"\n stroke={palette.stroke}\n strokeWidth=\"1.2\"\n fill=\"none\"\n opacity=\"0.18\"\n />\n </>\n )}\n </XSocialIconShell>\n );\n}\n\nexport function XEmailIcon(props: XSocialIconProps) {\n return (\n <XSocialIconShell {...props} strokeWidth={props.strokeWidth ?? 1.6}>\n {({ palette }) => (\n <>\n <rect x=\"4.5\" y=\"7\" width=\"15\" height=\"10\" rx=\"1.4\" stroke={palette.stroke} strokeWidth=\"1.6\" fill=\"none\" />\n <path d=\"M4.6 7.1l7.4 5.5 7.4-5.5\" stroke={palette.stroke} strokeWidth=\"1.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" fill=\"none\" />\n </>\n )}\n </XSocialIconShell>\n );\n}\n\nexport function XLinkedInIcon(props: XSocialIconProps) {\n return (\n <XSocialIconShell {...props} strokeWidth={props.strokeWidth ?? 1.6}>\n {({ palette }) => (\n <>\n <path d=\"M8.1 9.1l2.6 2.6 4.1-4.1\" stroke={palette.stroke} strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" fill=\"none\" />\n <path d=\"M6.8 10.2c1.6-1.6 4.3-1.6 5.9 0\" stroke={palette.stroke} strokeWidth=\"1.6\" strokeLinecap=\"round\" fill=\"none\" />\n <rect x=\"5\" y=\"5\" width=\"14\" height=\"14\" rx=\"3\" ry=\"3\" stroke={palette.stroke} strokeWidth=\"1.4\" fill=\"none\" opacity=\"0.12\" />\n </>\n )}\n </XSocialIconShell>\n );\n}\n\nexport function XTwitterIcon(props: XSocialIconProps) {\n return (\n <XSocialIconShell {...props} strokeWidth={props.strokeWidth ?? 1.6}>\n {({ palette }) => (\n <>\n <path d=\"M7 4l7 8.7L7 21h2.2l7-8.7L21 4h-2.2l-7 8.7L7 4z\" fill={palette.fill} />\n <path d=\"M8 4h2.2l6.2 7.7\" stroke={palette.stroke} strokeWidth=\"1.2\" strokeLinecap=\"round\" fill=\"none\" opacity=\"0.2\" />\n </>\n )}\n </XSocialIconShell>\n );\n}\n\nexport function XGitHubIcon(props: XSocialIconProps) {\n return (\n <XSocialIconShell {...props} strokeWidth={props.strokeWidth ?? 1.35}>\n {({ palette }) => (\n <>\n <path\n d=\"M12 2c5.52 0 10 4.48 10 10 0 4.42-2.87 8.17-6.84 9.49.5.09.68-.22.68-.48 0-.24-.01-.87-.01-1.7 2.78.6 3.37-1.34 3.37-1.34.45-1.16 1.11-1.46 1.11-1.46.91-.62-.07-.61-.07-.61-1 .07-1.53 1.03-1.53 1.03-.89 1.53-2.34 1.54-2.91 1.19-.09-.92-.35-1.54-.63-1.9 2.22-.25 4.55-1.11 4.55-4.94 0-1.09-.39-1.98-1.03-2.68.1-.25.45-1.27-.1-2.65 0 0-.84-.27-2.75 1.03A9.58 9.58 0 0 0 12 6.84c-.85 0-1.7.12-2.51.34-1.91-1.3-2.75-1.03-2.75-1.03-.54 1.38-.2 2.4-.1 2.65-.63.7-1.03 1.59-1.03 2.68 0 3.84 2.33 4.69 4.54 4.94-.29.36-.55.97-.64 1.9-.57.35-2.02.34-2.91-1.19 0 0-.52-.96-1.53-1.03 0 0-.98-.01-.07.61 0 0 .66.3 1.11 1.46 0 0 .59 1.94 3.37 1.34 0 .83-.01 1.46-.01 1.7 0 .26.18.57.68.48C5.87 20.17 3 16.42 3 12 3 6.48 7.48 2 12 2z\"\n fill={palette.fill}\n />\n </>\n )}\n </XSocialIconShell>\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs"]
7
+ }
@@ -3,8 +3,54 @@ import React, { useEffect, useRef } from "react";
3
3
  import Image from "next/image";
4
4
  import { motion } from "framer-motion";
5
5
 
6
+ // esbuild-css-modules-plugin-ns-js::src/components/gallery/xmicrogallerytext/XMicroGalleryText.module.css:injector.js
7
+ var content = __content_placeholder__;
8
+ var digest = __digest_placeholder__;
9
+ var inject = () => {
10
+ setTimeout(() => {
11
+ if (!globalThis.document) {
12
+ return;
13
+ }
14
+ let root = globalThis.document.querySelector("head");
15
+ if (root && root.shadowRoot) {
16
+ root = root.shadowRoot;
17
+ }
18
+ if (!root) {
19
+ root = globalThis.document.head;
20
+ }
21
+ let container = root.querySelector("#_" + digest);
22
+ if (!container) {
23
+ container = globalThis.document.createElement("style");
24
+ container.id = "_" + digest;
25
+ const text = globalThis.document.createTextNode(content);
26
+ container.appendChild(text);
27
+ root.appendChild(container);
28
+ }
29
+ }, 0);
30
+ };
31
+
6
32
  // src/components/gallery/xmicrogallerytext/XMicroGalleryText.module.css
7
- var XMicroGalleryText_default = {};
33
+ var XMicroGalleryText_default = new Proxy({
34
+ "artistic1": "XMicroGalleryText-module__artistic1_22YC0W__012",
35
+ "artistic2": "XMicroGalleryText-module__artistic2_22YC0W__012",
36
+ "artistic3": "XMicroGalleryText-module__artistic3_22YC0W__012",
37
+ "artisticGrid": "XMicroGalleryText-module__artisticGrid_22YC0W__012",
38
+ "container": "XMicroGalleryText-module__container_22YC0W__012",
39
+ "gallery": "XMicroGalleryText-module__gallery_22YC0W__012",
40
+ "imageWrapper": "XMicroGalleryText-module__imageWrapper_22YC0W__012",
41
+ "previewImage": "XMicroGalleryText-module__previewImage_22YC0W__012",
42
+ "reverse": "XMicroGalleryText-module__reverse_22YC0W__012",
43
+ "textCenter": "XMicroGalleryText-module__textCenter_22YC0W__012",
44
+ "textContent": "XMicroGalleryText-module__textContent_22YC0W__012",
45
+ "textLeft": "XMicroGalleryText-module__textLeft_22YC0W__012",
46
+ "textRight": "XMicroGalleryText-module__textRight_22YC0W__012",
47
+ "visible": "XMicroGalleryText-module__visible_22YC0W__012"
48
+ }, {
49
+ get: function(source, key) {
50
+ inject();
51
+ return source[key];
52
+ }
53
+ });
8
54
 
9
55
  // src/components/gallery/xmicrogallerytext/XMicroGalleryText.tsx
10
56
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -90,8 +136,53 @@ var XMicroGalleryText_default2 = XMicroGalleryText;
90
136
  import { useEffect as useEffect2, useRef as useRef2 } from "react";
91
137
  import Image2 from "next/image";
92
138
 
139
+ // esbuild-css-modules-plugin-ns-js::src/components/gallery/xstaticgallery/XStaticGallery.module.css:injector.js
140
+ var content2 = __content_placeholder__;
141
+ var digest2 = __digest_placeholder__;
142
+ var inject2 = () => {
143
+ setTimeout(() => {
144
+ if (!globalThis.document) {
145
+ return;
146
+ }
147
+ let root = globalThis.document.querySelector("head");
148
+ if (root && root.shadowRoot) {
149
+ root = root.shadowRoot;
150
+ }
151
+ if (!root) {
152
+ root = globalThis.document.head;
153
+ }
154
+ let container = root.querySelector("#_" + digest2);
155
+ if (!container) {
156
+ container = globalThis.document.createElement("style");
157
+ container.id = "_" + digest2;
158
+ const text = globalThis.document.createTextNode(content2);
159
+ container.appendChild(text);
160
+ root.appendChild(container);
161
+ }
162
+ }, 0);
163
+ };
164
+
93
165
  // src/components/gallery/xstaticgallery/XStaticGallery.module.css
94
- var XStaticGallery_default = {};
166
+ var XStaticGallery_default = new Proxy({
167
+ "cols1": "XStaticGallery-module__cols1_7nn4pa__012",
168
+ "cols2": "XStaticGallery-module__cols2_7nn4pa__012",
169
+ "cols3": "XStaticGallery-module__cols3_7nn4pa__012",
170
+ "cols4": "XStaticGallery-module__cols4_7nn4pa__012",
171
+ "cols5": "XStaticGallery-module__cols5_7nn4pa__012",
172
+ "galleryContainer": "XStaticGallery-module__galleryContainer_7nn4pa__012",
173
+ "galleryImage": "XStaticGallery-module__galleryImage_7nn4pa__012",
174
+ "galleryTitle": "XStaticGallery-module__galleryTitle_7nn4pa__012",
175
+ "imageContainer": "XStaticGallery-module__imageContainer_7nn4pa__012",
176
+ "imageOverlay": "XStaticGallery-module__imageOverlay_7nn4pa__012",
177
+ "masonryGrid": "XStaticGallery-module__masonryGrid_7nn4pa__012",
178
+ "masonryItem": "XStaticGallery-module__masonryItem_7nn4pa__012",
179
+ "visible": "XStaticGallery-module__visible_7nn4pa__012"
180
+ }, {
181
+ get: function(source, key) {
182
+ inject2();
183
+ return source[key];
184
+ }
185
+ });
95
186
 
96
187
  // src/components/gallery/xstaticgallery/XStaticGallery.tsx
97
188
  import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
@@ -147,4 +238,4 @@ export {
147
238
  XMicroGalleryText_default2 as XMicroGalleryText_default,
148
239
  XStaticGallery
149
240
  };
150
- //# sourceMappingURL=chunk-2OAXRRVQ.mjs.map
241
+ //# sourceMappingURL=chunk-XB3UGHSF.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/components/gallery/xmicrogallerytext/XMicroGalleryText.tsx", "esbuild-css-modules-plugin-ns-js::src/components/gallery/xmicrogallerytext/XMicroGalleryText.module.css:injector.js", "../src/components/gallery/xmicrogallerytext/XMicroGalleryText.module.css", "../src/components/gallery/xstaticgallery/XStaticGallery.tsx", "esbuild-css-modules-plugin-ns-js::src/components/gallery/xstaticgallery/XStaticGallery.module.css:injector.js", "../src/components/gallery/xstaticgallery/XStaticGallery.module.css"],
4
+ "sourcesContent": ["import React, { useEffect, useRef } from 'react';\nimport Image from 'next/image';\nimport { motion } from 'framer-motion';\nimport styles from './XMicroGalleryText.module.css';\n\nexport interface XMicroGalleryImage {\n src: string;\n alt: string;\n}\n\nexport interface XMicroGalleryTextProps {\n images: XMicroGalleryImage[];\n text: React.ReactNode;\n textPosition?: 'left' | 'right';\n textAlign?: 'left' | 'right' | 'center';\n autoShuffle?: boolean;\n shuffleInterval?: number;\n}\n\nconst DISPLAY_COUNT = 3;\n\nconst XMicroGalleryText: React.FC<XMicroGalleryTextProps> = ({ \n images, \n text, \n textPosition = 'left',\n textAlign = 'left',\n autoShuffle = false,\n shuffleInterval = 5000\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [startIndex, setStartIndex] = React.useState(0);\n\n const visibleImages = React.useMemo(() => {\n const result: XMicroGalleryImage[] = [];\n for (let i = 0; i < DISPLAY_COUNT; i++) {\n result.push(images[(startIndex + i) % images.length]);\n }\n return result;\n }, [images, startIndex]);\n\n React.useEffect(() => {\n if (!autoShuffle || images.length <= DISPLAY_COUNT) return;\n\n const intervalId = setInterval(() => {\n setStartIndex((prev) => (prev + 1) % images.length);\n }, shuffleInterval);\n\n return () => clearInterval(intervalId);\n }, [autoShuffle, shuffleInterval, images.length]);\n\n const [isVisible, setIsVisible] = React.useState(false);\n\n useEffect(() => {\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setIsVisible(true);\n observer.disconnect();\n }\n },\n {\n threshold: 0.1,\n rootMargin: '0px 0px -50px 0px'\n }\n );\n\n if (containerRef.current) {\n observer.observe(containerRef.current);\n }\n\n return () => observer.disconnect();\n }, []);\n\n const isTextRight = textPosition === 'right';\n\n const alignClass = {\n left: styles.textLeft,\n right: styles.textRight,\n center: styles.textCenter,\n }[textAlign];\n\n return (\n <div ref={containerRef} className={`${styles.container} ${isTextRight ? styles.reverse : ''}`}>\n <div className={`${styles.textContent} ${alignClass} ${isVisible ? styles.visible : ''}`}>\n {typeof text === 'string' ? (\n <div dangerouslySetInnerHTML={{ __html: text }} />\n ) : (\n text\n )}\n </div>\n \n <div className={styles.gallery}>\n <div className={styles.artisticGrid}>\n {visibleImages.map((image, index) => (\n <motion.div \n layout\n key={image.src} \n className={`${styles.imageWrapper} ${styles[`artistic${index + 1}`]} ${isVisible ? styles.visible : ''}`}\n style={{ transitionProperty: 'opacity, box-shadow' }}\n transition={{\n layout: { type: \"spring\", stiffness: 80, damping: 20 }\n }}\n >\n <Image\n src={image.src}\n alt={image.alt}\n fill\n className={styles.previewImage}\n sizes=\"(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 33vw\"\n />\n </motion.div>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default XMicroGalleryText;\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/gallery/xmicrogallerytext/XMicroGalleryText.module.css\";\n\nimport { inject } from \"esbuild-css-modules-plugin-ns-js:src/components/gallery/xmicrogallerytext/XMicroGalleryText.module.css:injector.js\";\nexport default new Proxy({\n \"artistic1\": \"XMicroGalleryText-module__artistic1_22YC0W__012\",\n \"artistic2\": \"XMicroGalleryText-module__artistic2_22YC0W__012\",\n \"artistic3\": \"XMicroGalleryText-module__artistic3_22YC0W__012\",\n \"artisticGrid\": \"XMicroGalleryText-module__artisticGrid_22YC0W__012\",\n \"container\": \"XMicroGalleryText-module__container_22YC0W__012\",\n \"gallery\": \"XMicroGalleryText-module__gallery_22YC0W__012\",\n \"imageWrapper\": \"XMicroGalleryText-module__imageWrapper_22YC0W__012\",\n \"previewImage\": \"XMicroGalleryText-module__previewImage_22YC0W__012\",\n \"reverse\": \"XMicroGalleryText-module__reverse_22YC0W__012\",\n \"textCenter\": \"XMicroGalleryText-module__textCenter_22YC0W__012\",\n \"textContent\": \"XMicroGalleryText-module__textContent_22YC0W__012\",\n \"textLeft\": \"XMicroGalleryText-module__textLeft_22YC0W__012\",\n \"textRight\": \"XMicroGalleryText-module__textRight_22YC0W__012\",\n \"visible\": \"XMicroGalleryText-module__visible_22YC0W__012\"\n}, {\n get: function(source, key) {\n inject();\n return source[key];\n }\n});\n ", "\"use client\";\nimport React, { useEffect, useRef } from 'react';\nimport Image from 'next/image';\nimport styles from './XStaticGallery.module.css';\n\nexport interface XStaticGalleryImage {\n src: string;\n alt: string;\n}\n\nexport interface XStaticGalleryProps {\n images: XStaticGalleryImage[];\n columns?: 1 | 2 | 3 | 4 | 5;\n title?: string;\n}\n\nconst COLUMN_CLASSES: Record<number, string> = {\n 1: styles.cols1,\n 2: styles.cols2,\n 3: styles.cols3,\n 4: styles.cols4,\n 5: styles.cols5,\n};\n\nexport default function XStaticGallery({ images, columns = 4, title }: XStaticGalleryProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n entry.target.classList.add(styles.visible);\n }\n });\n },\n {\n threshold: 0.1,\n rootMargin: '0px 0px -50px 0px',\n }\n );\n\n const items = containerRef.current?.querySelectorAll(`.${styles.masonryItem}`);\n items?.forEach((el) => observer.observe(el));\n\n return () => observer.disconnect();\n }, []);\n\n const colClass = COLUMN_CLASSES[columns] || COLUMN_CLASSES[4];\n\n return (\n <div ref={containerRef} className={styles.galleryContainer}>\n {title && <h2 className={styles.galleryTitle}>{title}</h2>}\n\n <div className={`${styles.masonryGrid} ${colClass}`}>\n {images.map((image, index) => (\n <div key={index} className={styles.masonryItem}>\n <div className={styles.imageContainer}>\n <Image\n src={image.src}\n alt={image.alt}\n width={600}\n height={600}\n className={styles.galleryImage}\n loading=\"lazy\"\n sizes=\"(max-width: 640px) 100vw, (max-width: 768px) 50vw, (max-width: 1280px) 33vw, 25vw\"\n />\n <div className={styles.imageOverlay} />\n </div>\n </div>\n ))}\n </div>\n </div>\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/gallery/xstaticgallery/XStaticGallery.module.css\";\n\nimport { inject } from \"esbuild-css-modules-plugin-ns-js:src/components/gallery/xstaticgallery/XStaticGallery.module.css:injector.js\";\nexport default new Proxy({\n \"cols1\": \"XStaticGallery-module__cols1_7nn4pa__012\",\n \"cols2\": \"XStaticGallery-module__cols2_7nn4pa__012\",\n \"cols3\": \"XStaticGallery-module__cols3_7nn4pa__012\",\n \"cols4\": \"XStaticGallery-module__cols4_7nn4pa__012\",\n \"cols5\": \"XStaticGallery-module__cols5_7nn4pa__012\",\n \"galleryContainer\": \"XStaticGallery-module__galleryContainer_7nn4pa__012\",\n \"galleryImage\": \"XStaticGallery-module__galleryImage_7nn4pa__012\",\n \"galleryTitle\": \"XStaticGallery-module__galleryTitle_7nn4pa__012\",\n \"imageContainer\": \"XStaticGallery-module__imageContainer_7nn4pa__012\",\n \"imageOverlay\": \"XStaticGallery-module__imageOverlay_7nn4pa__012\",\n \"masonryGrid\": \"XStaticGallery-module__masonryGrid_7nn4pa__012\",\n \"masonryItem\": \"XStaticGallery-module__masonryItem_7nn4pa__012\",\n \"visible\": \"XStaticGallery-module__visible_7nn4pa__012\"\n}, {\n get: function(source, key) {\n inject();\n return source[key];\n }\n});\n "],
5
+ "mappings": "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",
6
+ "names": ["XMicroGalleryText_default", "useEffect", "useRef", "Image", "content", "digest", "inject", "inject", "jsx", "jsxs", "useRef", "useEffect", "Image"]
7
+ }
@@ -4,8 +4,63 @@ import { motion } from "framer-motion";
4
4
  import Link from "next/link";
5
5
  import { usePathname } from "next/navigation";
6
6
 
7
+ // esbuild-css-modules-plugin-ns-js::src/components/navigation/xnavbar/XNavbar.module.css:injector.js
8
+ var content = __content_placeholder__;
9
+ var digest = __digest_placeholder__;
10
+ var inject = () => {
11
+ setTimeout(() => {
12
+ if (!globalThis.document) {
13
+ return;
14
+ }
15
+ let root = globalThis.document.querySelector("head");
16
+ if (root && root.shadowRoot) {
17
+ root = root.shadowRoot;
18
+ }
19
+ if (!root) {
20
+ root = globalThis.document.head;
21
+ }
22
+ let container = root.querySelector("#_" + digest);
23
+ if (!container) {
24
+ container = globalThis.document.createElement("style");
25
+ container.id = "_" + digest;
26
+ const text = globalThis.document.createTextNode(content);
27
+ container.appendChild(text);
28
+ root.appendChild(container);
29
+ }
30
+ }, 0);
31
+ };
32
+
7
33
  // src/components/navigation/xnavbar/XNavbar.module.css
8
- var XNavbar_default = {};
34
+ var XNavbar_default = new Proxy({
35
+ "bar": "XNavbar-module__bar_wx7KiW__012",
36
+ "closeBar": "XNavbar-module__closeBar_wx7KiW__012",
37
+ "desktopLinksLeft": "XNavbar-module__desktopLinksLeft_wx7KiW__012",
38
+ "desktopLinksRight": "XNavbar-module__desktopLinksRight_wx7KiW__012",
39
+ "desktopNav": "XNavbar-module__desktopNav_wx7KiW__012",
40
+ "hamburgerBtn": "XNavbar-module__hamburgerBtn_wx7KiW__012",
41
+ "header": "XNavbar-module__header_wx7KiW__012",
42
+ "iconTray": "XNavbar-module__iconTray_wx7KiW__012",
43
+ "iconTrayLeft": "XNavbar-module__iconTrayLeft_wx7KiW__012",
44
+ "iconTrayRight": "XNavbar-module__iconTrayRight_wx7KiW__012",
45
+ "logoBtn": "XNavbar-module__logoBtn_wx7KiW__012",
46
+ "logoSlot": "XNavbar-module__logoSlot_wx7KiW__012",
47
+ "logoWrapper": "XNavbar-module__logoWrapper_wx7KiW__012",
48
+ "mobileCloseBtn": "XNavbar-module__mobileCloseBtn_wx7KiW__012",
49
+ "mobileLogo": "XNavbar-module__mobileLogo_wx7KiW__012",
50
+ "mobileNavLink": "XNavbar-module__mobileNavLink_wx7KiW__012",
51
+ "mobileNavLinkActive": "XNavbar-module__mobileNavLinkActive_wx7KiW__012",
52
+ "mobileOverlay": "XNavbar-module__mobileOverlay_wx7KiW__012",
53
+ "mobileToggle": "XNavbar-module__mobileToggle_wx7KiW__012",
54
+ "navLink": "XNavbar-module__navLink_wx7KiW__012",
55
+ "navLinkActive": "XNavbar-module__navLinkActive_wx7KiW__012",
56
+ "navLinkExternal": "XNavbar-module__navLinkExternal_wx7KiW__012",
57
+ "themeToggleMobile": "XNavbar-module__themeToggleMobile_wx7KiW__012"
58
+ }, {
59
+ get: function(source, key) {
60
+ inject();
61
+ return source[key];
62
+ }
63
+ });
9
64
 
10
65
  // src/components/navigation/xnavbar/XNavbar.tsx
11
66
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -308,4 +363,4 @@ function XNavbar({
308
363
  export {
309
364
  XNavbar
310
365
  };
311
- //# sourceMappingURL=chunk-NY22GB3E.mjs.map
366
+ //# sourceMappingURL=chunk-ZDMG7X6H.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/components/navigation/xnavbar/XNavbar.tsx", "esbuild-css-modules-plugin-ns-js::src/components/navigation/xnavbar/XNavbar.module.css:injector.js", "../src/components/navigation/xnavbar/XNavbar.module.css"],
4
+ "sourcesContent": ["\"use client\";\n\nimport { useEffect, useState, ReactNode, CSSProperties } from \"react\";\nimport { motion, Variants } from \"framer-motion\";\nimport Link from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport styles from \"./XNavbar.module.css\";\n\n// \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Tipos p\u00FAblicos \u2014 exportados para que el consumidor pueda tipear sus datos\n// \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type NavLinkItem = {\n /** Ruta destino */\n url: string;\n /** Texto visible */\n title: string;\n /** Si es true abre en pesta\u00F1a nueva y muestra el indicador \u2197 */\n external?: boolean;\n};\n\n/**\n * ReactNode est\u00E1tico O funci\u00F3n de render (size, color?) => ReactNode.\n * La funci\u00F3n recibe el tama\u00F1o y el color vigente para que el \u00EDcono\n * pueda adaptarse din\u00E1micamente a los props del navbar.\n */\nexport type IconRenderer = ReactNode | ((size: number, color?: string) => ReactNode);\n\nexport type ThemeToggleIcons = {\n /** \u00CDcono/renderer hacia tema oscuro (ReactNode o funci\u00F3n) */\n toDark: IconRenderer;\n /** \u00CDcono/renderer hacia tema claro (ReactNode o funci\u00F3n) */\n toLight: IconRenderer;\n};\n\nexport type XNavbarProps = {\n // \u2500\u2500 Navegaci\u00F3n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /** Links que aparecen a la izquierda del logo en desktop */\n linksLeft?: NavLinkItem[];\n /** Links que aparecen a la derecha del logo en desktop */\n linksRight?: NavLinkItem[];\n\n // \u2500\u2500 Logo central \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /** Contenido del bot\u00F3n central (texto o JSX). Por defecto: \"X\" */\n logo?: ReactNode;\n /** Si true el logo act\u00FAa como toggle de tema (comportamiento original). Default: true */\n logoAsThemeToggle?: boolean;\n /** Callback custom si logoAsThemeToggle es false */\n onLogoClick?: () => void;\n\n // \u2500\u2500 Toggle de tema \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /** \u00CDconos para el toggle de tema. Si no se pasa, no se mostrar\u00E1 hint de \u00EDcono */\n themeIcons?: ThemeToggleIcons;\n /** Tema inicial. Default: \"light\" */\n defaultTheme?: \"light\" | \"dark\";\n /** Key de localStorage para persistencia del tema. Default: \"theme\" */\n storageKey?: string;\n\n // \u2500\u2500 Color de los enlaces de navegaci\u00F3n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /** Color base de los enlaces (Inicio, Contacto, etc.). Default: var(--text) */\n linkColor?: string;\n /** Color al hacer hover sobre los enlaces. Default: opacidad reducida del linkColor */\n linkHoverColor?: string;\n /** Color del borde inferior del enlace activo. Default: linkColor */\n linkActiveColor?: string;\n\n // \u2500\u2500 Color y tama\u00F1o de \u00EDconos theme-toggle \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /** Color base de los \u00EDconos. Acepta cualquier valor CSS: hex, hsl, \"var(--accent)\", etc.\n * Si no se pasa, los \u00EDconos heredan el color del texto (currentColor). */\n iconColor?: string;\n /** Color que toman los \u00EDconos al hacer hover sobre el logo. Default: iconColor */\n iconHoverColor?: string;\n /** Tama\u00F1o en px que se pasa a IconRenderer cuando es funci\u00F3n. Default: 22 */\n iconSize?: number;\n\n // \u2500\u2500 Hamburguesa \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /** Color de las 3 barras (y la X de cierre m\u00F3vil). Acepta cualquier valor CSS. Default: var(--text) */\n hamburgerColor?: string;\n /** Ancho de las barras. Cualquier unidad CSS. Default: \"2rem\" */\n hamburgerBarWidth?: string;\n /** Grosor (altura) de las barras. Cualquier unidad CSS. Default: \"3px\" */\n hamburgerBarThickness?: string;\n\n // \u2500\u2500 Variables CSS personalizadas \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /** Inyecta variables CSS extra directamente en el style del <header>.\n * \u00DAtil para pasar tokens del tema: { '--xnav-icon-color': 'var(--accent)' } */\n cssVars?: Record<string, string>;\n\n // \u2500\u2500 Labels de accesibilidad \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /** aria-label del bot\u00F3n hamburguesa cuando est\u00E1 cerrado. Default: \"Abrir men\u00FA\" */\n labelOpen?: string;\n /** aria-label del bot\u00F3n hamburguesa cuando est\u00E1 abierto. Default: \"Cerrar men\u00FA\" */\n labelClose?: string;\n /** Texto del bot\u00F3n de tema oscuro en men\u00FA m\u00F3vil. Default: \"Oscuro\" */\n labelDark?: string;\n /** Texto del bot\u00F3n de tema claro en men\u00FA m\u00F3vil. Default: \"Claro\" */\n labelLight?: string;\n\n // \u2500\u2500 Estilos adicionales \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /** className extra que se a\u00F1ade al <header> */\n className?: string;\n};\n\n// \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Variantes de animaci\u00F3n (id\u00E9nticas al navbar original)\n// \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst iconTrayRightVariants: Variants = {\n hidden: { opacity: 0, x: -6, pointerEvents: \"none\" },\n visible: { opacity: 1, x: 0, pointerEvents: \"none\", transition: { duration: 0.18 } },\n};\nconst iconTrayLeftVariants: Variants = {\n hidden: { opacity: 0, x: 6, pointerEvents: \"none\" },\n visible: { opacity: 1, x: 0, pointerEvents: \"none\", transition: { duration: 0.18 } },\n};\n\nconst topVariants: Variants = { closed: { rotate: 0 }, opened: { rotate: 45 } };\nconst centerVariants: Variants = { closed: { opacity: 1 }, opened: { opacity: 0 } };\nconst bottomVariants: Variants = { closed: { rotate: 0 }, opened: { rotate: -45 } };\n\nconst listVariants: Variants = {\n closed: { x: \"100vw\" },\n opened: { x: 0, transition: { when: \"beforeChildren\", staggerChildren: 0.02 } },\n};\nconst itemVariants: Variants = {\n closed: { x: -10, opacity: 0 },\n opened: { x: 0, opacity: 1 },\n};\n\n/** Renderiza un IconRenderer: si es funci\u00F3n la llama con (size, color?), si es ReactNode lo devuelve tal cual. */\nfunction renderIcon(\n icon: IconRenderer,\n size: number,\n color?: string\n): ReactNode {\n if (typeof icon === \"function\") return icon(size, color);\n return icon;\n}\n\n// \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Sub-componente NavLink (interno)\n// \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ntype NavLinkProps = {\n link: NavLinkItem;\n onClick?: () => void;\n mobile?: boolean;\n};\n\nfunction XNavLink({ link, onClick, mobile }: NavLinkProps) {\n const pathname = usePathname();\n const isActive =\n link.url === \"/\" ? pathname === \"/\" : pathname?.startsWith(link.url);\n\n const baseClass = mobile ? styles.mobileNavLink : styles.navLink;\n const activeClass = mobile ? styles.mobileNavLinkActive : styles.navLinkActive;\n const externalClass = link.external ? styles.navLinkExternal : \"\";\n\n return (\n <Link\n href={link.url}\n onClick={onClick}\n target={link.external ? \"_blank\" : undefined}\n rel={link.external ? \"noopener noreferrer\" : undefined}\n aria-label={`Ir a ${link.title}`}\n aria-current={isActive ? \"page\" : undefined}\n className={[baseClass, isActive ? activeClass : \"\", externalClass]\n .filter(Boolean)\n .join(\" \")}\n >\n {link.title}\n </Link>\n );\n}\n\n// \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Componente principal XNavbar\n// \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport default function XNavbar({\n linksLeft = [],\n linksRight = [],\n logo = \"X\",\n logoAsThemeToggle = true,\n onLogoClick,\n themeIcons,\n defaultTheme = \"light\",\n storageKey = \"theme\",\n linkColor,\n linkHoverColor,\n linkActiveColor,\n iconColor,\n iconHoverColor,\n iconSize = 22,\n hamburgerColor,\n hamburgerBarWidth,\n hamburgerBarThickness,\n cssVars,\n labelOpen = \"Abrir men\u00FA\",\n labelClose = \"Cerrar men\u00FA\",\n labelDark = \"Oscuro\",\n labelLight = \"Claro\",\n className,\n}: XNavbarProps) {\n const [open, setOpen] = useState(false);\n const [hoverX, setHoverX] = useState(false);\n const [theme, setTheme] = useState<\"light\" | \"dark\">(defaultTheme);\n\n // Persistir tema\n useEffect(() => {\n const saved = (typeof window !== \"undefined\" &&\n localStorage.getItem(storageKey)) as \"light\" | \"dark\" | null;\n applyTheme(saved ?? defaultTheme);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n function applyTheme(t: \"light\" | \"dark\") {\n setTheme(t);\n const root = document.documentElement;\n if (t === \"dark\") root.setAttribute(\"data-theme\", \"dark\");\n else root.removeAttribute(\"data-theme\");\n localStorage.setItem(storageKey, t);\n }\n\n function toggleTheme() {\n applyTheme(theme === \"dark\" ? \"light\" : \"dark\");\n }\n\n // Bloquear scroll \u2014 usamos documentElement para no tocar document.body\n useEffect(() => {\n document.documentElement.style.overflow = open ? \"hidden\" : \"\";\n return () => { document.documentElement.style.overflow = \"\"; };\n }, [open]);\n\n // Cerrar con ESC\n useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setOpen(false);\n };\n window.addEventListener(\"keydown\", onKey);\n return () => window.removeEventListener(\"keydown\", onKey);\n }, [open]);\n\n const allLinks = [...linksLeft, ...linksRight];\n\n // \u2500\u2500 CSS vars inyectadas en el <header> via inline style \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Usando \"--xnav-*\" como namespace para no colisionar con vars globales.\n const headerStyle = {\n ...(linkColor && { \"--xnav-link-color\" : linkColor }),\n ...(linkHoverColor && { \"--xnav-link-hover\" : linkHoverColor }),\n ...(linkActiveColor && { \"--xnav-link-active\" : linkActiveColor }),\n ...(iconColor && { \"--xnav-icon-color\" : iconColor }),\n ...(iconHoverColor && { \"--xnav-icon-hover\" : iconHoverColor }),\n ...(hamburgerColor && { \"--xnav-bar-color\" : hamburgerColor }),\n ...(hamburgerBarWidth && { \"--xnav-bar-w\" : hamburgerBarWidth }),\n ...(hamburgerBarThickness && { \"--xnav-bar-h\" : hamburgerBarThickness }),\n ...cssVars,\n } as CSSProperties;\n\n // Acci\u00F3n del logo central\n const handleLogoClick = () => {\n if (logoAsThemeToggle) {\n toggleTheme();\n } else {\n onLogoClick?.();\n }\n };\n\n const logoAriaLabel = logoAsThemeToggle\n ? `Cambiar a tema ${theme === \"dark\" ? \"claro\" : \"oscuro\"}`\n : undefined;\n\n const logoTitle = logoAsThemeToggle\n ? theme === \"dark\"\n ? \"Cambiar a tema claro\"\n : \"Cambiar a tema oscuro\"\n : undefined;\n\n return (\n <header\n className={[styles.header, className].filter(Boolean).join(\" \")}\n style={headerStyle}\n role=\"banner\"\n >\n {/* \u2500\u2500 Desktop \u2500\u2500 */}\n <nav className={styles.desktopNav} aria-label=\"Navegaci\u00F3n principal\">\n <div className={styles.desktopLinksLeft}>\n {linksLeft.map((link) => (\n <XNavLink key={link.url + link.title} link={link} />\n ))}\n </div>\n\n {/* Bot\u00F3n logo central */}\n <div className={styles.logoSlot}>\n <div\n className={styles.logoWrapper}\n onMouseEnter={() => setHoverX(true)}\n onMouseLeave={() => setHoverX(false)}\n >\n <button\n type=\"button\"\n onClick={handleLogoClick}\n aria-label={logoAriaLabel}\n title={logoTitle}\n className={styles.logoBtn}\n >\n {logo}\n </button>\n\n {/* \u00CDcono hint al hover (solo si se pasan themeIcons y el logo es toggle de tema) */}\n {logoAsThemeToggle && themeIcons && (\n <>\n {theme === \"light\" ? (\n <motion.div\n initial={false}\n animate={hoverX ? \"visible\" : \"hidden\"}\n variants={iconTrayRightVariants}\n className={`${styles.iconTray} ${styles.iconTrayRight}`}\n style={{\n color:\n (hoverX ? iconHoverColor ?? iconColor : iconColor) ||\n undefined,\n }}\n aria-hidden\n >\n {renderIcon(themeIcons.toDark, iconSize, iconColor)}\n </motion.div>\n ) : (\n <motion.div\n initial={false}\n animate={hoverX ? \"visible\" : \"hidden\"}\n variants={iconTrayLeftVariants}\n className={`${styles.iconTray} ${styles.iconTrayLeft}`}\n style={{\n color:\n (hoverX ? iconHoverColor ?? iconColor : iconColor) ||\n undefined,\n }}\n aria-hidden\n >\n {renderIcon(themeIcons.toLight, iconSize, iconColor)}\n </motion.div>\n )}\n </>\n )}\n </div>\n </div>\n\n <div className={styles.desktopLinksRight}>\n {linksRight.map((link) => (\n <XNavLink key={link.url + link.title} link={link} />\n ))}\n </div>\n </nav>\n\n {/* \u2500\u2500 Mobile: bot\u00F3n hamburguesa \u2500\u2500 */}\n <div className={styles.mobileToggle}>\n <button\n aria-label={open ? labelClose : labelOpen}\n aria-expanded={open}\n aria-controls=\"xnavbar-mobile-menu\"\n onClick={() => setOpen((p) => !p)}\n className={styles.hamburgerBtn}\n title={open ? labelClose : labelOpen}\n >\n <motion.div\n variants={topVariants}\n initial=\"closed\"\n animate={open ? \"opened\" : \"closed\"}\n className={styles.bar}\n style={{ originX: \"left\" }}\n aria-hidden\n />\n <motion.div\n variants={centerVariants}\n initial=\"closed\"\n animate={open ? \"opened\" : \"closed\"}\n className={styles.bar}\n aria-hidden\n />\n <motion.div\n variants={bottomVariants}\n initial=\"closed\"\n animate={open ? \"opened\" : \"closed\"}\n className={styles.bar}\n style={{ originX: \"left\" }}\n aria-hidden\n />\n </button>\n </div>\n\n {/* \u2500\u2500 Mobile overlay \u2014 position:fixed, sin portal, sin document.body \u2500\u2500 */}\n {open && (\n <motion.div\n id=\"xnavbar-mobile-menu\"\n variants={listVariants}\n initial=\"closed\"\n animate=\"opened\"\n className={styles.mobileOverlay}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Men\u00FA de navegaci\u00F3n\"\n >\n {/* Bot\u00F3n cerrar */}\n <button\n aria-label={labelClose}\n onClick={() => setOpen(false)}\n className={styles.mobileCloseBtn}\n style={{ WebkitTapHighlightColor: \"transparent\" }}\n >\n <span\n aria-hidden\n className={styles.closeBar}\n style={{ transform: \"rotate(45deg)\" }}\n />\n <span\n aria-hidden\n className={styles.closeBar}\n style={{ transform: \"rotate(-45deg)\" }}\n />\n <span className=\"sr-only\">{labelClose}</span>\n </button>\n\n {/* Logo decorativo */}\n <motion.div variants={itemVariants} className={styles.mobileLogo}>\n {logo}\n </motion.div>\n\n {/* Links */}\n {allLinks.map((link) => (\n <motion.div key={link.url + link.title} variants={itemVariants}>\n <XNavLink\n link={link}\n onClick={() => setOpen(false)}\n mobile\n />\n </motion.div>\n ))}\n\n {/* Toggle de tema */}\n <motion.button\n variants={itemVariants}\n onClick={toggleTheme}\n className={styles.themeToggleMobile}\n >\n {themeIcons ? (\n theme === \"light\" ? (\n <>\n {renderIcon(themeIcons.toDark, iconSize, iconColor)}\n {labelDark}\n </>\n ) : (\n <>\n {renderIcon(themeIcons.toLight, iconSize, iconColor)}\n {labelLight}\n </>\n )\n ) : theme === \"light\" ? (\n labelDark\n ) : (\n labelLight\n )}\n </motion.button>\n </motion.div>\n )}\n </header>\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/navigation/xnavbar/XNavbar.module.css\";\n\nimport { inject } from \"esbuild-css-modules-plugin-ns-js:src/components/navigation/xnavbar/XNavbar.module.css:injector.js\";\nexport default new Proxy({\n \"bar\": \"XNavbar-module__bar_wx7KiW__012\",\n \"closeBar\": \"XNavbar-module__closeBar_wx7KiW__012\",\n \"desktopLinksLeft\": \"XNavbar-module__desktopLinksLeft_wx7KiW__012\",\n \"desktopLinksRight\": \"XNavbar-module__desktopLinksRight_wx7KiW__012\",\n \"desktopNav\": \"XNavbar-module__desktopNav_wx7KiW__012\",\n \"hamburgerBtn\": \"XNavbar-module__hamburgerBtn_wx7KiW__012\",\n \"header\": \"XNavbar-module__header_wx7KiW__012\",\n \"iconTray\": \"XNavbar-module__iconTray_wx7KiW__012\",\n \"iconTrayLeft\": \"XNavbar-module__iconTrayLeft_wx7KiW__012\",\n \"iconTrayRight\": \"XNavbar-module__iconTrayRight_wx7KiW__012\",\n \"logoBtn\": \"XNavbar-module__logoBtn_wx7KiW__012\",\n \"logoSlot\": \"XNavbar-module__logoSlot_wx7KiW__012\",\n \"logoWrapper\": \"XNavbar-module__logoWrapper_wx7KiW__012\",\n \"mobileCloseBtn\": \"XNavbar-module__mobileCloseBtn_wx7KiW__012\",\n \"mobileLogo\": \"XNavbar-module__mobileLogo_wx7KiW__012\",\n \"mobileNavLink\": \"XNavbar-module__mobileNavLink_wx7KiW__012\",\n \"mobileNavLinkActive\": \"XNavbar-module__mobileNavLinkActive_wx7KiW__012\",\n \"mobileOverlay\": \"XNavbar-module__mobileOverlay_wx7KiW__012\",\n \"mobileToggle\": \"XNavbar-module__mobileToggle_wx7KiW__012\",\n \"navLink\": \"XNavbar-module__navLink_wx7KiW__012\",\n \"navLinkActive\": \"XNavbar-module__navLinkActive_wx7KiW__012\",\n \"navLinkExternal\": \"XNavbar-module__navLinkExternal_wx7KiW__012\",\n \"themeToggleMobile\": \"XNavbar-module__themeToggleMobile_wx7KiW__012\"\n}, {\n get: function(source, key) {\n inject();\n return source[key];\n }\n});\n "],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,132 +1,131 @@
1
- /* src/components/content/xinteractivephrase/XInteractivePhrase.module.css */
2
- .container {
3
- padding: 1rem 0;
1
+ /* esbuild-css-modules-plugin-ns-css:src/components/content/xinteractivephrase/XInteractivePhrase.module.css */
2
+ .XInteractivePhrase-module__container_fdhnVG__012 {
4
3
  color: var(--text, #000);
5
4
  width: 100%;
5
+ padding: 1rem 0;
6
6
  }
7
- .title {
8
- margin: 0;
9
- padding: 0;
7
+ .XInteractivePhrase-module__title_fdhnVG__012 {
10
8
  line-height: 1.3;
11
9
  font-weight: inherit;
12
10
  text-align: inherit;
11
+ margin: 0;
12
+ padding: 0;
13
13
  }
14
- h1.title {
14
+ h1.XInteractivePhrase-module__title_fdhnVG__012 {
15
+ text-align: inherit;
16
+ margin: 0;
17
+ padding: 0;
15
18
  font-size: clamp(2rem, 6vw, 2.2rem);
16
19
  font-weight: 800;
20
+ }
21
+ h2.XInteractivePhrase-module__title_fdhnVG__012 {
22
+ text-align: inherit;
17
23
  margin: 0;
18
24
  padding: 0;
19
- text-align: inherit;
20
- }
21
- h2.title {
22
25
  font-size: clamp(1.675rem, 4vw, 1.8rem);
23
26
  font-weight: 700;
27
+ }
28
+ h3.XInteractivePhrase-module__title_fdhnVG__012 {
29
+ text-align: inherit;
24
30
  margin: 0;
25
31
  padding: 0;
26
- text-align: inherit;
27
- }
28
- h3.title {
29
32
  font-size: clamp(1.4rem, 3vw, 1.95rem);
30
33
  font-weight: 700;
34
+ }
35
+ h4.XInteractivePhrase-module__title_fdhnVG__012 {
36
+ text-align: inherit;
31
37
  margin: 0;
32
38
  padding: 0;
33
- text-align: inherit;
34
- }
35
- h4.title {
36
39
  font-size: clamp(1.25rem, 3vw, 2rem);
37
40
  font-weight: 600;
41
+ }
42
+ h5.XInteractivePhrase-module__title_fdhnVG__012 {
43
+ text-align: inherit;
38
44
  margin: 0;
39
45
  padding: 0;
40
- text-align: inherit;
41
- }
42
- h5.title {
43
46
  font-size: clamp(1.125rem, 3vw, 1.5rem);
44
47
  font-weight: 600;
48
+ }
49
+ h6.XInteractivePhrase-module__title_fdhnVG__012 {
50
+ text-align: inherit;
45
51
  margin: 0;
46
52
  padding: 0;
47
- text-align: inherit;
48
- }
49
- h6.title {
50
53
  font-size: clamp(1rem, 2.5vw, 1.25rem);
51
54
  font-weight: 600;
55
+ }
56
+ p.XInteractivePhrase-module__title_fdhnVG__012 {
57
+ text-align: inherit;
52
58
  margin: 0;
53
59
  padding: 0;
54
- text-align: inherit;
55
- }
56
- p.title {
57
60
  font-size: 1rem;
58
61
  font-weight: 400;
59
- margin: 0;
60
- padding: 0;
61
- text-align: inherit;
62
62
  }
63
- .title strong {
64
- font-weight: 900;
63
+ .XInteractivePhrase-module__title_fdhnVG__012 strong {
65
64
  color: var(--accent, #0070f3);
65
+ font-weight: 900;
66
66
  }
67
- .title em {
68
- font-style: italic;
67
+ .XInteractivePhrase-module__title_fdhnVG__012 em {
69
68
  font-family: serif;
69
+ font-style: italic;
70
70
  }
71
- .underlineEffect {
72
- position: relative;
71
+ .XInteractivePhrase-module__underlineEffect_fdhnVG__012 {
73
72
  cursor: pointer;
74
73
  color: var(--accent, #0070f3);
74
+ transition: color .3s;
75
75
  display: inline-block;
76
- transition: color 0.3s ease;
76
+ position: relative;
77
77
  }
78
- .underlineEffect::after {
78
+ .XInteractivePhrase-module__underlineEffect_fdhnVG__012:after {
79
79
  content: "";
80
- position: absolute;
81
- bottom: -2px;
82
- left: 0;
83
- height: 0.15em;
84
- width: 100%;
85
80
  background:
86
81
  repeating-linear-gradient(
87
82
  45deg,
88
- transparent,
89
- transparent 2px,
90
- currentColor 2px,
91
- currentColor 4px);
92
- transition: opacity 0.3s ease;
83
+ #0000,
84
+ #0000 2px,
85
+ currentColor 2px 4px);
86
+ width: 100%;
87
+ height: .15em;
88
+ transition: opacity .3s;
89
+ position: absolute;
90
+ bottom: -2px;
91
+ left: 0;
93
92
  }
94
- .underlineEffect:hover::after {
93
+ .XInteractivePhrase-module__underlineEffect_fdhnVG__012:hover:after {
95
94
  opacity: 0;
96
95
  }
97
- .buttonEffect {
98
- display: inline-block;
99
- padding: 0.1em 0.6em;
100
- border: 2px dashed currentColor;
101
- border-radius: 9999px;
96
+ .XInteractivePhrase-module__buttonEffect_fdhnVG__012 {
102
97
  cursor: pointer;
103
98
  color: var(--accent, #0070f3);
104
- transition: all 0.3s ease;
99
+ border: 2px dashed;
100
+ border-radius: 9999px;
101
+ padding: .1em .6em;
102
+ transition: all .3s;
103
+ display: inline-block;
105
104
  }
106
- .buttonEffect:hover {
107
- background: currentColor;
105
+ .XInteractivePhrase-module__buttonEffect_fdhnVG__012:hover {
108
106
  color: var(--bg, #fff);
107
+ background: currentColor;
109
108
  }
110
- .blurEffect {
109
+ .XInteractivePhrase-module__blurEffect_fdhnVG__012 {
110
+ transition: filter .7s cubic-bezier(.4, 0, .2, 1), opacity .7s;
111
111
  display: inline-block;
112
- transition: filter 0.7s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.7s ease;
113
112
  }
114
- .isVisible {
115
- filter: blur(0);
113
+ .XInteractivePhrase-module__isVisible_fdhnVG__012 {
114
+ filter: blur();
116
115
  opacity: 1;
117
116
  }
118
- .isHidden {
117
+ .XInteractivePhrase-module__isHidden_fdhnVG__012 {
119
118
  filter: blur(10px);
120
- opacity: 0.3;
119
+ opacity: .3;
121
120
  user-select: none;
122
121
  }
123
- .lineBreak {
122
+ .XInteractivePhrase-module__lineBreak_fdhnVG__012 {
123
+ height: .8rem;
124
124
  display: block;
125
- height: 0.8rem;
126
125
  }
127
- .underlineEffect:focus-visible,
128
- .buttonEffect:focus-visible {
126
+ .XInteractivePhrase-module__underlineEffect_fdhnVG__012:focus-visible,
127
+ .XInteractivePhrase-module__buttonEffect_fdhnVG__012:focus-visible {
129
128
  outline: 2px solid var(--accent, #0070f3);
130
129
  outline-offset: 4px;
131
130
  }
132
- /*# sourceMappingURL=index.css.map */
131
+ /*# sourceMappingURL=index.css.map */
@@ -1 +1,7 @@
1
- {"version":3,"sources":["../../../src/components/content/xinteractivephrase/XInteractivePhrase.module.css"],"sourcesContent":[".container {\n padding: 1rem 0;\n color: var(--text, #000);\n width: 100%;\n}\n\n.title {\n margin: 0;\n padding: 0;\n line-height: 1.3;\n font-weight: inherit;\n text-align: inherit;\n}\n\n/* Escala tipográfica fluida */\nh1.title { font-size: clamp(2rem, 6vw, 2.2rem); font-weight: 800; margin: 0; padding: 0; text-align: inherit; }\nh2.title { font-size: clamp(1.675rem, 4vw, 1.8rem); font-weight: 700; margin: 0; padding: 0; text-align: inherit; }\nh3.title { font-size: clamp(1.4rem, 3vw, 1.95rem); font-weight: 700; margin: 0; padding: 0; text-align: inherit; }\nh4.title { font-size: clamp(1.25rem, 3vw, 2rem); font-weight: 600; margin: 0; padding: 0; text-align: inherit; }\nh5.title { font-size: clamp(1.125rem, 3vw, 1.5rem); font-weight: 600; margin: 0; padding: 0; text-align: inherit; }\nh6.title { font-size: clamp(1rem, 2.5vw, 1.25rem); font-weight: 600; margin: 0; padding: 0; text-align: inherit; }\np.title { font-size: 1rem; font-weight: 400; margin: 0; padding: 0; text-align: inherit; }\n\n/* Estilos para etiquetas de énfasis */\n.title strong {\n font-weight: 900;\n color: var(--accent, #0070f3);\n}\n\n.title em {\n font-style: italic;\n font-family: serif; /* Opcional: da un toque elegante a las itálicas */\n}\n\n/* Efectos */\n.underlineEffect {\n position: relative;\n cursor: pointer;\n color: var(--accent, #0070f3);\n display: inline-block;\n transition: color 0.3s ease;\n}\n\n.underlineEffect::after {\n content: \"\";\n position: absolute;\n bottom: -2px;\n left: 0;\n height: 0.15em;\n width: 100%;\n background: repeating-linear-gradient(\n 45deg,\n transparent,\n transparent 2px,\n currentColor 2px,\n currentColor 4px\n );\n transition: opacity 0.3s ease;\n}\n\n.underlineEffect:hover::after {\n opacity: 0;\n}\n\n.buttonEffect {\n display: inline-block;\n padding: 0.1em 0.6em;\n border: 2px dashed currentColor;\n border-radius: 9999px;\n cursor: pointer;\n color: var(--accent, #0070f3);\n transition: all 0.3s ease;\n}\n\n.buttonEffect:hover {\n background: currentColor;\n color: var(--bg, #fff);\n}\n\n.blurEffect {\n display: inline-block;\n transition: filter 0.7s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.7s ease;\n}\n\n.isVisible {\n filter: blur(0);\n opacity: 1;\n}\n\n.isHidden {\n filter: blur(10px);\n opacity: 0.3;\n user-select: none;\n}\n\n.lineBreak {\n display: block;\n height: 0.8rem;\n}\n\n.underlineEffect:focus-visible,\n.buttonEffect:focus-visible {\n outline: 2px solid var(--accent, #0070f3);\n outline-offset: 4px;\n}"],"mappings":";AAAA,CAAC;AACC,WAAS,KAAK;AACd,SAAO,IAAI,MAAM,EAAE;AACnB,SAAO;AACT;AAEA,CAAC;AACC,UAAQ;AACR,WAAS;AACT,eAAa;AACb,eAAa;AACb,cAAY;AACd;AAGA,EAAE,CATD;AASU,aAAW,MAAM,IAAI,EAAE,GAAG,EAAE;AAAS,eAAa;AAAK,UAAQ;AAAG,WAAS;AAAG,cAAY;AAAS;AAC9G,EAAE,CAVD;AAUU,aAAW,MAAM,QAAQ,EAAE,GAAG,EAAE;AAAS,eAAa;AAAK,UAAQ;AAAG,WAAS;AAAG,cAAY;AAAS;AAClH,EAAE,CAXD;AAWU,aAAW,MAAM,MAAM,EAAE,GAAG,EAAE;AAAU,eAAa;AAAK,UAAQ;AAAG,WAAS;AAAG,cAAY;AAAS;AACjH,EAAE,CAZD;AAYU,aAAW,MAAM,OAAO,EAAE,GAAG,EAAE;AAAO,eAAa;AAAK,UAAQ;AAAG,WAAS;AAAG,cAAY;AAAS;AAC/G,EAAE,CAbD;AAaU,aAAW,MAAM,QAAQ,EAAE,GAAG,EAAE;AAAS,eAAa;AAAK,UAAQ;AAAG,WAAS;AAAG,cAAY;AAAS;AAClH,EAAE,CAdD;AAcU,aAAW,MAAM,IAAI,EAAE,KAAK,EAAE;AAAU,eAAa;AAAK,UAAQ;AAAG,WAAS;AAAG,cAAY;AAAS;AACjH,CAAC,CAfA;AAeU,aAAW;AAAM,eAAa;AAAK,UAAQ;AAAG,WAAS;AAAG,cAAY;AAAS;AAG1F,CAlBC,MAkBM;AACL,eAAa;AACb,SAAO,IAAI,QAAQ,EAAE;AACvB;AAEA,CAvBC,MAuBM;AACL,cAAY;AACZ,eAAa;AACf;AAGA,CAAC;AACC,YAAU;AACV,UAAQ;AACR,SAAO,IAAI,QAAQ,EAAE;AACrB,WAAS;AACT,cAAY,MAAM,KAAK;AACzB;AAEA,CARC,eAQe;AACd,WAAS;AACT,YAAU;AACV,UAAQ;AACR,QAAM;AACN,UAAQ;AACR,SAAO;AACP;AAAA,IAAY;AAAA,MACV,KAAK;AAAA,MACL,WAAW;AAAA,MACX,YAAY,GAAG;AAAA,MACf,aAAa,GAAG;AAAA,MAChB,aAAa;AAEf,cAAY,QAAQ,KAAK;AAC3B;AAEA,CAzBC,eAyBe,MAAM;AACpB,WAAS;AACX;AAEA,CAAC;AACC,WAAS;AACT,WAAS,MAAM;AACf,UAAQ,IAAI,OAAO;AACnB,iBAAe;AACf,UAAQ;AACR,SAAO,IAAI,QAAQ,EAAE;AACrB,cAAY,IAAI,KAAK;AACvB;AAEA,CAVC,YAUY;AACX,cAAY;AACZ,SAAO,IAAI,IAAI,EAAE;AACnB;AAEA,CAAC;AACC,WAAS;AACT,cAAY,OAAO,KAAK,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,KAAK;AACrE;AAEA,CAAC;AACC,UAAQ,KAAK;AACb,WAAS;AACX;AAEA,CAAC;AACC,UAAQ,KAAK;AACb,WAAS;AACT,eAAa;AACf;AAEA,CAAC;AACC,WAAS;AACT,UAAQ;AACV;AAEA,CAjEC,eAiEe;AAChB,CArCC,YAqCY;AACX,WAAS,IAAI,MAAM,IAAI,QAAQ,EAAE;AACjC,kBAAgB;AAClB;","names":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["esbuild-css-modules-plugin-ns-css:src/components/content/xinteractivephrase/XInteractivePhrase.module.css"],
4
+ "sourcesContent": [".XInteractivePhrase-module__container_fdhnVG__012 {\n color: var(--text, #000);\n width: 100%;\n padding: 1rem 0;\n}\n\n.XInteractivePhrase-module__title_fdhnVG__012 {\n line-height: 1.3;\n font-weight: inherit;\n text-align: inherit;\n margin: 0;\n padding: 0;\n}\n\nh1.XInteractivePhrase-module__title_fdhnVG__012 {\n text-align: inherit;\n margin: 0;\n padding: 0;\n font-size: clamp(2rem, 6vw, 2.2rem);\n font-weight: 800;\n}\n\nh2.XInteractivePhrase-module__title_fdhnVG__012 {\n text-align: inherit;\n margin: 0;\n padding: 0;\n font-size: clamp(1.675rem, 4vw, 1.8rem);\n font-weight: 700;\n}\n\nh3.XInteractivePhrase-module__title_fdhnVG__012 {\n text-align: inherit;\n margin: 0;\n padding: 0;\n font-size: clamp(1.4rem, 3vw, 1.95rem);\n font-weight: 700;\n}\n\nh4.XInteractivePhrase-module__title_fdhnVG__012 {\n text-align: inherit;\n margin: 0;\n padding: 0;\n font-size: clamp(1.25rem, 3vw, 2rem);\n font-weight: 600;\n}\n\nh5.XInteractivePhrase-module__title_fdhnVG__012 {\n text-align: inherit;\n margin: 0;\n padding: 0;\n font-size: clamp(1.125rem, 3vw, 1.5rem);\n font-weight: 600;\n}\n\nh6.XInteractivePhrase-module__title_fdhnVG__012 {\n text-align: inherit;\n margin: 0;\n padding: 0;\n font-size: clamp(1rem, 2.5vw, 1.25rem);\n font-weight: 600;\n}\n\np.XInteractivePhrase-module__title_fdhnVG__012 {\n text-align: inherit;\n margin: 0;\n padding: 0;\n font-size: 1rem;\n font-weight: 400;\n}\n\n.XInteractivePhrase-module__title_fdhnVG__012 strong {\n color: var(--accent, #0070f3);\n font-weight: 900;\n}\n\n.XInteractivePhrase-module__title_fdhnVG__012 em {\n font-family: serif;\n font-style: italic;\n}\n\n.XInteractivePhrase-module__underlineEffect_fdhnVG__012 {\n cursor: pointer;\n color: var(--accent, #0070f3);\n transition: color .3s;\n display: inline-block;\n position: relative;\n}\n\n.XInteractivePhrase-module__underlineEffect_fdhnVG__012:after {\n content: \"\";\n background: repeating-linear-gradient(45deg, #0000, #0000 2px, currentColor 2px 4px);\n width: 100%;\n height: .15em;\n transition: opacity .3s;\n position: absolute;\n bottom: -2px;\n left: 0;\n}\n\n.XInteractivePhrase-module__underlineEffect_fdhnVG__012:hover:after {\n opacity: 0;\n}\n\n.XInteractivePhrase-module__buttonEffect_fdhnVG__012 {\n cursor: pointer;\n color: var(--accent, #0070f3);\n border: 2px dashed;\n border-radius: 9999px;\n padding: .1em .6em;\n transition: all .3s;\n display: inline-block;\n}\n\n.XInteractivePhrase-module__buttonEffect_fdhnVG__012:hover {\n color: var(--bg, #fff);\n background: currentColor;\n}\n\n.XInteractivePhrase-module__blurEffect_fdhnVG__012 {\n transition: filter .7s cubic-bezier(.4, 0, .2, 1), opacity .7s;\n display: inline-block;\n}\n\n.XInteractivePhrase-module__isVisible_fdhnVG__012 {\n filter: blur();\n opacity: 1;\n}\n\n.XInteractivePhrase-module__isHidden_fdhnVG__012 {\n filter: blur(10px);\n opacity: .3;\n user-select: none;\n}\n\n.XInteractivePhrase-module__lineBreak_fdhnVG__012 {\n height: .8rem;\n display: block;\n}\n\n.XInteractivePhrase-module__underlineEffect_fdhnVG__012:focus-visible, .XInteractivePhrase-module__buttonEffect_fdhnVG__012:focus-visible {\n outline: 2px solid var(--accent, #0070f3);\n outline-offset: 4px;\n}\n"],
5
+ "mappings": ";AAAA,CAAC;AACC,SAAO,IAAI,MAAM,EAAE;AACnB,SAAO;AACP,WAAS,KAAK;AAChB;AAEA,CAAC;AACC,eAAa;AACb,eAAa;AACb,cAAY;AACZ,UAAQ;AACR,WAAS;AACX;AAEA,EAAE,CARD;AASC,cAAY;AACZ,UAAQ;AACR,WAAS;AACT,aAAW,MAAM,IAAI,EAAE,GAAG,EAAE;AAC5B,eAAa;AACf;AAEA,EAAE,CAhBD;AAiBC,cAAY;AACZ,UAAQ;AACR,WAAS;AACT,aAAW,MAAM,QAAQ,EAAE,GAAG,EAAE;AAChC,eAAa;AACf;AAEA,EAAE,CAxBD;AAyBC,cAAY;AACZ,UAAQ;AACR,WAAS;AACT,aAAW,MAAM,MAAM,EAAE,GAAG,EAAE;AAC9B,eAAa;AACf;AAEA,EAAE,CAhCD;AAiCC,cAAY;AACZ,UAAQ;AACR,WAAS;AACT,aAAW,MAAM,OAAO,EAAE,GAAG,EAAE;AAC/B,eAAa;AACf;AAEA,EAAE,CAxCD;AAyCC,cAAY;AACZ,UAAQ;AACR,WAAS;AACT,aAAW,MAAM,QAAQ,EAAE,GAAG,EAAE;AAChC,eAAa;AACf;AAEA,EAAE,CAhDD;AAiDC,cAAY;AACZ,UAAQ;AACR,WAAS;AACT,aAAW,MAAM,IAAI,EAAE,KAAK,EAAE;AAC9B,eAAa;AACf;AAEA,CAAC,CAxDA;AAyDC,cAAY;AACZ,UAAQ;AACR,WAAS;AACT,aAAW;AACX,eAAa;AACf;AAEA,CAhEC,6CAgE6C;AAC5C,SAAO,IAAI,QAAQ,EAAE;AACrB,eAAa;AACf;AAEA,CArEC,6CAqE6C;AAC5C,eAAa;AACb,cAAY;AACd;AAEA,CAAC;AACC,UAAQ;AACR,SAAO,IAAI,QAAQ,EAAE;AACrB,cAAY,MAAM;AAClB,WAAS;AACT,YAAU;AACZ;AAEA,CARC,sDAQsD;AACrD,WAAS;AACT;AAAA,IAAY;AAAA,MAA0B,KAAK;AAAA,MAAE,KAAK;AAAA,MAAE,MAAM,GAAG;AAAA,MAAE,aAAa,IAAI;AAChF,SAAO;AACP,UAAQ;AACR,cAAY,QAAQ;AACpB,YAAU;AACV,UAAQ;AACR,QAAM;AACR;AAEA,CAnBC,sDAmBsD,MAAM;AAC3D,WAAS;AACX;AAEA,CAAC;AACC,UAAQ;AACR,SAAO,IAAI,QAAQ,EAAE;AACrB,UAAQ,IAAI;AACZ,iBAAe;AACf,WAAS,KAAK;AACd,cAAY,IAAI;AAChB,WAAS;AACX;AAEA,CAVC,mDAUmD;AAClD,SAAO,IAAI,IAAI,EAAE;AACjB,cAAY;AACd;AAEA,CAAC;AACC,cAAY,OAAO,IAAI,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ;AAC3D,WAAS;AACX;AAEA,CAAC;AACC,UAAQ;AACR,WAAS;AACX;AAEA,CAAC;AACC,UAAQ,KAAK;AACb,WAAS;AACT,eAAa;AACf;AAEA,CAAC;AACC,UAAQ;AACR,WAAS;AACX;AAEA,CA3DC,sDA2DsD;AAAgB,CApCtE,mDAoC0H;AACzH,WAAS,IAAI,MAAM,IAAI,QAAQ,EAAE;AACjC,kBAAgB;AAClB;",
6
+ "names": []
7
+ }
@@ -1,17 +1,2 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
-
3
- interface WordConfig {
4
- text: string;
5
- type: "normal" | "underline" | "button" | "blur1" | "blur2";
6
- breakAfter?: boolean;
7
- italic?: boolean;
8
- bold?: boolean;
9
- }
10
- interface XInteractivePhraseProps {
11
- words: WordConfig[];
12
- as?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | "span";
13
- className?: string;
14
- }
15
- declare function XInteractivePhrase({ words, as: Tag, className }: XInteractivePhraseProps): react_jsx_runtime.JSX.Element;
16
-
17
- export { type WordConfig, XInteractivePhrase, type XInteractivePhraseProps };
1
+ export { XInteractivePhrase } from "./xinteractivephrase";
2
+ export type { XInteractivePhraseProps, WordConfig } from "./xinteractivephrase";