@yo-yo.art/ui 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +52 -2
  3. package/dist/components/Badge/Badge.cjs +13 -0
  4. package/dist/components/Badge/Badge.cjs.map +1 -0
  5. package/dist/components/Badge/Badge.d.cts +8 -0
  6. package/dist/components/Badge/Badge.d.mts +8 -0
  7. package/dist/components/Badge/Badge.mjs +13 -0
  8. package/dist/components/Badge/Badge.mjs.map +1 -0
  9. package/dist/components/Badge/badge-classes.cjs +12 -0
  10. package/dist/components/Badge/badge-classes.cjs.map +1 -0
  11. package/dist/components/Badge/badge-classes.d.cts +7 -0
  12. package/dist/components/Badge/badge-classes.d.mts +7 -0
  13. package/dist/components/Badge/badge-classes.mjs +12 -0
  14. package/dist/components/Badge/badge-classes.mjs.map +1 -0
  15. package/dist/components/Badge/index.cjs +4 -0
  16. package/dist/components/Badge/index.d.cts +3 -0
  17. package/dist/components/Badge/index.d.mts +3 -0
  18. package/dist/components/Badge/index.mjs +3 -0
  19. package/dist/components/Button/Button.cjs +15 -0
  20. package/dist/components/Button/Button.cjs.map +1 -0
  21. package/dist/components/Button/Button.d.cts +9 -0
  22. package/dist/components/Button/Button.d.mts +9 -0
  23. package/dist/components/Button/Button.mjs +15 -0
  24. package/dist/components/Button/Button.mjs.map +1 -0
  25. package/dist/components/Button/ButtonLink.cjs +15 -0
  26. package/dist/components/Button/ButtonLink.cjs.map +1 -0
  27. package/dist/components/Button/ButtonLink.d.cts +10 -0
  28. package/dist/components/Button/ButtonLink.d.mts +10 -0
  29. package/dist/components/Button/ButtonLink.mjs +15 -0
  30. package/dist/components/Button/ButtonLink.mjs.map +1 -0
  31. package/dist/components/Button/button-classes.cjs +16 -0
  32. package/dist/components/Button/button-classes.cjs.map +1 -0
  33. package/dist/components/Button/button-classes.d.cts +9 -0
  34. package/dist/components/Button/button-classes.d.mts +9 -0
  35. package/dist/components/Button/button-classes.mjs +16 -0
  36. package/dist/components/Button/button-classes.mjs.map +1 -0
  37. package/dist/components/Button/index.cjs +6 -0
  38. package/dist/components/Button/index.d.cts +4 -0
  39. package/dist/components/Button/index.d.mts +4 -0
  40. package/dist/components/Button/index.mjs +4 -0
  41. package/dist/components/Eyebrow/Eyebrow.cjs +10 -0
  42. package/dist/components/Eyebrow/Eyebrow.cjs.map +1 -0
  43. package/dist/components/Eyebrow/Eyebrow.d.cts +5 -0
  44. package/dist/components/Eyebrow/Eyebrow.d.mts +5 -0
  45. package/dist/components/Eyebrow/Eyebrow.mjs +10 -0
  46. package/dist/components/Eyebrow/Eyebrow.mjs.map +1 -0
  47. package/dist/components/Eyebrow/index.cjs +2 -0
  48. package/dist/components/Eyebrow/index.d.cts +2 -0
  49. package/dist/components/Eyebrow/index.d.mts +2 -0
  50. package/dist/components/Eyebrow/index.mjs +1 -0
  51. package/dist/components/IconButton/IconButton.cjs +17 -0
  52. package/dist/components/IconButton/IconButton.cjs.map +1 -0
  53. package/dist/components/IconButton/IconButton.d.cts +11 -0
  54. package/dist/components/IconButton/IconButton.d.mts +11 -0
  55. package/dist/components/IconButton/IconButton.mjs +17 -0
  56. package/dist/components/IconButton/IconButton.mjs.map +1 -0
  57. package/dist/components/IconButton/icon-button-classes.cjs +16 -0
  58. package/dist/components/IconButton/icon-button-classes.cjs.map +1 -0
  59. package/dist/components/IconButton/icon-button-classes.d.cts +9 -0
  60. package/dist/components/IconButton/icon-button-classes.d.mts +9 -0
  61. package/dist/components/IconButton/icon-button-classes.mjs +16 -0
  62. package/dist/components/IconButton/icon-button-classes.mjs.map +1 -0
  63. package/dist/components/IconButton/index.cjs +4 -0
  64. package/dist/components/IconButton/index.d.cts +3 -0
  65. package/dist/components/IconButton/index.d.mts +3 -0
  66. package/dist/components/IconButton/index.mjs +3 -0
  67. package/dist/components/Link/Link.cjs +27 -0
  68. package/dist/components/Link/Link.cjs.map +1 -0
  69. package/dist/components/Link/Link.d.cts +19 -0
  70. package/dist/components/Link/Link.d.mts +19 -0
  71. package/dist/components/Link/Link.mjs +27 -0
  72. package/dist/components/Link/Link.mjs.map +1 -0
  73. package/dist/components/Link/index.cjs +4 -0
  74. package/dist/components/Link/index.d.cts +3 -0
  75. package/dist/components/Link/index.d.mts +3 -0
  76. package/dist/components/Link/index.mjs +3 -0
  77. package/dist/components/Link/link-classes.cjs +11 -0
  78. package/dist/components/Link/link-classes.cjs.map +1 -0
  79. package/dist/components/Link/link-classes.d.cts +7 -0
  80. package/dist/components/Link/link-classes.d.mts +7 -0
  81. package/dist/components/Link/link-classes.mjs +11 -0
  82. package/dist/components/Link/link-classes.mjs.map +1 -0
  83. package/dist/components/Logo/Logo.cjs +25 -0
  84. package/dist/components/Logo/Logo.cjs.map +1 -0
  85. package/dist/components/Logo/Logo.d.cts +12 -0
  86. package/dist/components/Logo/Logo.d.mts +12 -0
  87. package/dist/components/Logo/Logo.mjs +25 -0
  88. package/dist/components/Logo/Logo.mjs.map +1 -0
  89. package/dist/components/Logo/index.cjs +2 -0
  90. package/dist/components/Logo/index.mjs +1 -0
  91. package/dist/components/Panel/Panel.cjs +14 -0
  92. package/dist/components/Panel/Panel.cjs.map +1 -0
  93. package/dist/components/Panel/Panel.d.cts +9 -0
  94. package/dist/components/Panel/Panel.d.mts +9 -0
  95. package/dist/components/Panel/Panel.mjs +14 -0
  96. package/dist/components/Panel/Panel.mjs.map +1 -0
  97. package/dist/components/Panel/index.cjs +4 -0
  98. package/dist/components/Panel/index.d.cts +3 -0
  99. package/dist/components/Panel/index.d.mts +3 -0
  100. package/dist/components/Panel/index.mjs +3 -0
  101. package/dist/components/Panel/panel-classes.cjs +16 -0
  102. package/dist/components/Panel/panel-classes.cjs.map +1 -0
  103. package/dist/components/Panel/panel-classes.d.cts +9 -0
  104. package/dist/components/Panel/panel-classes.d.mts +9 -0
  105. package/dist/components/Panel/panel-classes.mjs +16 -0
  106. package/dist/components/Panel/panel-classes.mjs.map +1 -0
  107. package/dist/components/ThemeToggle/ThemeToggle.cjs +34 -0
  108. package/dist/components/ThemeToggle/ThemeToggle.cjs.map +1 -0
  109. package/dist/components/ThemeToggle/ThemeToggle.d.cts +6 -0
  110. package/dist/components/ThemeToggle/ThemeToggle.d.mts +6 -0
  111. package/dist/components/ThemeToggle/ThemeToggle.mjs +34 -0
  112. package/dist/components/ThemeToggle/ThemeToggle.mjs.map +1 -0
  113. package/dist/components/ThemeToggle/index.cjs +2 -0
  114. package/dist/components/ThemeToggle/index.mjs +1 -0
  115. package/dist/gallery/HomeButton/HomeButton.cjs +20 -0
  116. package/dist/gallery/HomeButton/HomeButton.cjs.map +1 -0
  117. package/dist/gallery/HomeButton/HomeButton.d.cts +8 -0
  118. package/dist/gallery/HomeButton/HomeButton.d.mts +8 -0
  119. package/dist/gallery/HomeButton/HomeButton.mjs +20 -0
  120. package/dist/gallery/HomeButton/HomeButton.mjs.map +1 -0
  121. package/dist/gallery/HomeButton/index.cjs +2 -0
  122. package/dist/gallery/HomeButton/index.mjs +1 -0
  123. package/dist/gallery/LoadingScreen/LoadingScreen.cjs +108 -0
  124. package/dist/gallery/LoadingScreen/LoadingScreen.cjs.map +1 -0
  125. package/dist/gallery/LoadingScreen/LoadingScreen.d.cts +31 -0
  126. package/dist/gallery/LoadingScreen/LoadingScreen.d.mts +31 -0
  127. package/dist/gallery/LoadingScreen/LoadingScreen.mjs +108 -0
  128. package/dist/gallery/LoadingScreen/LoadingScreen.mjs.map +1 -0
  129. package/dist/gallery/LoadingScreen/index.cjs +2 -0
  130. package/dist/gallery/LoadingScreen/index.mjs +1 -0
  131. package/dist/gallery/SetupNotice/SetupNotice.cjs +41 -0
  132. package/dist/gallery/SetupNotice/SetupNotice.cjs.map +1 -0
  133. package/dist/gallery/SetupNotice/SetupNotice.d.cts +9 -0
  134. package/dist/gallery/SetupNotice/SetupNotice.d.mts +9 -0
  135. package/dist/gallery/SetupNotice/SetupNotice.mjs +41 -0
  136. package/dist/gallery/SetupNotice/SetupNotice.mjs.map +1 -0
  137. package/dist/gallery/SetupNotice/index.cjs +2 -0
  138. package/dist/gallery/SetupNotice/index.mjs +1 -0
  139. package/dist/gallery.cjs +10 -0
  140. package/dist/gallery.d.cts +4 -0
  141. package/dist/gallery.d.mts +4 -0
  142. package/dist/gallery.mjs +7 -0
  143. package/dist/index.cjs +37 -0
  144. package/dist/index.d.cts +21 -0
  145. package/dist/index.d.mts +21 -0
  146. package/dist/index.mjs +23 -0
  147. package/dist/lib/cn.cjs +5 -0
  148. package/dist/lib/cn.cjs.map +1 -0
  149. package/dist/lib/cn.mjs +5 -0
  150. package/dist/lib/cn.mjs.map +1 -0
  151. package/dist/scenography.css +332 -0
  152. package/dist/styles.css +76 -0
  153. package/package.json +73 -4
@@ -0,0 +1,9 @@
1
+ type IconButtonVariant = "outline" | "ghost";
2
+ type IconButtonSize = "xs" | "sm" | "md";
3
+ declare const iconButtonClasses: ({ variant, size, className }?: {
4
+ variant?: IconButtonVariant;
5
+ size?: IconButtonSize;
6
+ className?: string;
7
+ }) => string;
8
+ export { IconButtonSize, IconButtonVariant, iconButtonClasses };
9
+ //# sourceMappingURL=icon-button-classes.d.mts.map
@@ -0,0 +1,16 @@
1
+ import { cn } from "../../lib/cn.mjs";
2
+ // src/components/IconButton/icon-button-classes.ts
3
+ const base = "inline-flex items-center justify-center border transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent disabled:pointer-events-none disabled:opacity-50";
4
+ const variants = {
5
+ outline: "border-base-content/12 bg-base-100/85 text-base-content/60 backdrop-blur-md hover:text-base-content",
6
+ ghost: "border-transparent bg-transparent text-base-content/60 hover:bg-base-content/5 hover:text-base-content"
7
+ };
8
+ const sizes = {
9
+ xs: "size-6",
10
+ sm: "size-8",
11
+ md: "size-10"
12
+ };
13
+ const iconButtonClasses = ({ variant = "outline", size = "sm", className } = {}) => cn(base, variants[variant], sizes[size], className);
14
+ export { iconButtonClasses };
15
+
16
+ //# sourceMappingURL=icon-button-classes.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-button-classes.mjs","names":[],"sources":["../../../src/components/IconButton/icon-button-classes.ts"],"sourcesContent":["import { cn } from \"../../lib/cn\";\n\nexport type IconButtonVariant = \"outline\" | \"ghost\";\nexport type IconButtonSize = \"xs\" | \"sm\" | \"md\";\n\nconst base =\n \"inline-flex items-center justify-center border transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent disabled:pointer-events-none disabled:opacity-50\";\n\nconst variants: Record<IconButtonVariant, string> = {\n outline:\n \"border-base-content/12 bg-base-100/85 text-base-content/60 backdrop-blur-md hover:text-base-content\",\n ghost:\n \"border-transparent bg-transparent text-base-content/60 hover:bg-base-content/5 hover:text-base-content\",\n};\n\nconst sizes: Record<IconButtonSize, string> = {\n xs: \"size-6\",\n sm: \"size-8\",\n md: \"size-10\",\n};\n\nexport const iconButtonClasses = ({\n variant = \"outline\",\n size = \"sm\",\n className,\n}: {\n variant?: IconButtonVariant;\n size?: IconButtonSize;\n className?: string;\n} = {}): string => cn(base, variants[variant], sizes[size], className);\n"],"mappings":";;AAKA,MAAM,OACJ;AAEF,MAAM,WAA8C;CAClD,SACE;CACF,OACE;AACJ;AAEA,MAAM,QAAwC;CAC5C,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,MAAa,qBAAqB,EAChC,UAAU,WACV,OAAO,MACP,cAKE,CAAC,MAAc,GAAG,MAAM,SAAS,UAAU,MAAM,OAAO,SAAS"}
@@ -0,0 +1,4 @@
1
+ const require_icon_button_classes = require("./icon-button-classes.cjs");
2
+ const require_IconButton = require("./IconButton.cjs");
3
+ exports.IconButton = require_IconButton.IconButton;
4
+ exports.iconButtonClasses = require_icon_button_classes.iconButtonClasses;
@@ -0,0 +1,3 @@
1
+ import { IconButtonSize, IconButtonVariant, iconButtonClasses } from "./icon-button-classes.cjs";
2
+ import { IconButton, IconButtonProps } from "./IconButton.cjs";
3
+ export { IconButton, type IconButtonProps, type IconButtonSize, type IconButtonVariant, iconButtonClasses };
@@ -0,0 +1,3 @@
1
+ import { IconButtonSize, IconButtonVariant, iconButtonClasses } from "./icon-button-classes.mjs";
2
+ import { IconButton, IconButtonProps } from "./IconButton.mjs";
3
+ export { IconButton, type IconButtonProps, type IconButtonSize, type IconButtonVariant, iconButtonClasses };
@@ -0,0 +1,3 @@
1
+ import { iconButtonClasses } from "./icon-button-classes.mjs";
2
+ import { IconButton } from "./IconButton.mjs";
3
+ export { IconButton, iconButtonClasses };
@@ -0,0 +1,27 @@
1
+ const require_link_classes = require("./link-classes.cjs");
2
+ let react_jsx_runtime = require("react/jsx-runtime");
3
+ let lucide_react = require("lucide-react");
4
+ // src/components/Link/Link.tsx
5
+ const Link = ({ href, tone, external, arrow, component, className, children, ...props }) => {
6
+ const Component = component ?? "a";
7
+ const externalProps = external ? {
8
+ target: "_blank",
9
+ rel: "noopener noreferrer"
10
+ } : {};
11
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Component, {
12
+ href,
13
+ className: require_link_classes.linkClasses({
14
+ tone,
15
+ className
16
+ }),
17
+ ...externalProps,
18
+ ...props,
19
+ children: [children, external || arrow ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ArrowUpRight, {
20
+ "aria-hidden": true,
21
+ className: "size-4"
22
+ }) : null]
23
+ });
24
+ };
25
+ exports.Link = Link;
26
+
27
+ //# sourceMappingURL=Link.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Link.cjs","names":["linkClasses","ArrowUpRight"],"sources":["../../../src/components/Link/Link.tsx"],"sourcesContent":["import type { AnchorHTMLAttributes, ElementType } from \"react\";\nimport { ArrowUpRight } from \"lucide-react\";\nimport { linkClasses, type LinkTone } from \"./link-classes\";\n\nexport type LinkComponentProps = Omit<\n AnchorHTMLAttributes<HTMLAnchorElement>,\n \"href\"\n> & {\n href: string;\n};\n\nexport type LinkProps = AnchorHTMLAttributes<HTMLAnchorElement> & {\n href: string;\n tone?: LinkTone;\n external?: boolean;\n arrow?: boolean;\n /**\n * Swap the rendered element. Pages can pass their framework's link\n * component here to keep client-side navigation.\n */\n component?: ElementType<LinkComponentProps>;\n};\n\nexport const Link = ({\n href,\n tone,\n external,\n arrow,\n component,\n className,\n children,\n ...props\n}: LinkProps) => {\n const Component = (component ?? \"a\") as ElementType<LinkComponentProps>;\n const externalProps = external ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {};\n\n return (\n <Component\n href={href}\n className={linkClasses({ tone, className })}\n {...externalProps}\n {...props}\n >\n {children}\n {external || arrow ? <ArrowUpRight aria-hidden className=\"size-4\" /> : null}\n </Component>\n );\n};\n"],"mappings":";;;;AAuBA,MAAa,QAAQ,EACnB,MACA,MACA,UACA,OACA,WACA,WACA,UACA,GAAG,YACY;CACf,MAAM,YAAa,aAAa;CAChC,MAAM,gBAAgB,WAAW;EAAE,QAAQ;EAAU,KAAK;CAAsB,IAAI,CAAC;CAErF,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,WAAD;EACQ;EACN,WAAWA,qBAAAA,YAAY;GAAE;GAAM;EAAU,CAAC;EAC1C,GAAI;EACJ,GAAI;EAJN,UAAA,CAMG,UACA,YAAY,QAAQ,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,cAAD;GAAc,eAAA;GAAY,WAAU;EAAU,CAAA,IAAI,IAC9D;;AAEf"}
@@ -0,0 +1,19 @@
1
+ import { LinkTone } from "./link-classes.cjs";
2
+ import { AnchorHTMLAttributes, ElementType } from "react";
3
+ type LinkComponentProps = Omit<AnchorHTMLAttributes<HTMLAnchorElement>, "href"> & {
4
+ href: string;
5
+ };
6
+ type LinkProps = AnchorHTMLAttributes<HTMLAnchorElement> & {
7
+ href: string;
8
+ tone?: LinkTone;
9
+ external?: boolean;
10
+ arrow?: boolean;
11
+ /**
12
+ * Swap the rendered element. Pages can pass their framework's link
13
+ * component here to keep client-side navigation.
14
+ */
15
+ component?: ElementType<LinkComponentProps>;
16
+ };
17
+ declare const Link: ({ href, tone, external, arrow, component, className, children, ...props }: LinkProps) => import("react").JSX.Element;
18
+ export { Link, LinkComponentProps, LinkProps };
19
+ //# sourceMappingURL=Link.d.cts.map
@@ -0,0 +1,19 @@
1
+ import { LinkTone } from "./link-classes.mjs";
2
+ import { AnchorHTMLAttributes, ElementType } from "react";
3
+ type LinkComponentProps = Omit<AnchorHTMLAttributes<HTMLAnchorElement>, "href"> & {
4
+ href: string;
5
+ };
6
+ type LinkProps = AnchorHTMLAttributes<HTMLAnchorElement> & {
7
+ href: string;
8
+ tone?: LinkTone;
9
+ external?: boolean;
10
+ arrow?: boolean;
11
+ /**
12
+ * Swap the rendered element. Pages can pass their framework's link
13
+ * component here to keep client-side navigation.
14
+ */
15
+ component?: ElementType<LinkComponentProps>;
16
+ };
17
+ declare const Link: ({ href, tone, external, arrow, component, className, children, ...props }: LinkProps) => import("react").JSX.Element;
18
+ export { Link, LinkComponentProps, LinkProps };
19
+ //# sourceMappingURL=Link.d.mts.map
@@ -0,0 +1,27 @@
1
+ import { linkClasses } from "./link-classes.mjs";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { ArrowUpRight } from "lucide-react";
4
+ // src/components/Link/Link.tsx
5
+ const Link = ({ href, tone, external, arrow, component, className, children, ...props }) => {
6
+ const Component = component ?? "a";
7
+ const externalProps = external ? {
8
+ target: "_blank",
9
+ rel: "noopener noreferrer"
10
+ } : {};
11
+ return /* @__PURE__ */ jsxs(Component, {
12
+ href,
13
+ className: linkClasses({
14
+ tone,
15
+ className
16
+ }),
17
+ ...externalProps,
18
+ ...props,
19
+ children: [children, external || arrow ? /* @__PURE__ */ jsx(ArrowUpRight, {
20
+ "aria-hidden": true,
21
+ className: "size-4"
22
+ }) : null]
23
+ });
24
+ };
25
+ export { Link };
26
+
27
+ //# sourceMappingURL=Link.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Link.mjs","names":[],"sources":["../../../src/components/Link/Link.tsx"],"sourcesContent":["import type { AnchorHTMLAttributes, ElementType } from \"react\";\nimport { ArrowUpRight } from \"lucide-react\";\nimport { linkClasses, type LinkTone } from \"./link-classes\";\n\nexport type LinkComponentProps = Omit<\n AnchorHTMLAttributes<HTMLAnchorElement>,\n \"href\"\n> & {\n href: string;\n};\n\nexport type LinkProps = AnchorHTMLAttributes<HTMLAnchorElement> & {\n href: string;\n tone?: LinkTone;\n external?: boolean;\n arrow?: boolean;\n /**\n * Swap the rendered element. Pages can pass their framework's link\n * component here to keep client-side navigation.\n */\n component?: ElementType<LinkComponentProps>;\n};\n\nexport const Link = ({\n href,\n tone,\n external,\n arrow,\n component,\n className,\n children,\n ...props\n}: LinkProps) => {\n const Component = (component ?? \"a\") as ElementType<LinkComponentProps>;\n const externalProps = external ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {};\n\n return (\n <Component\n href={href}\n className={linkClasses({ tone, className })}\n {...externalProps}\n {...props}\n >\n {children}\n {external || arrow ? <ArrowUpRight aria-hidden className=\"size-4\" /> : null}\n </Component>\n );\n};\n"],"mappings":";;;;AAuBA,MAAa,QAAQ,EACnB,MACA,MACA,UACA,OACA,WACA,WACA,UACA,GAAG,YACY;CACf,MAAM,YAAa,aAAa;CAChC,MAAM,gBAAgB,WAAW;EAAE,QAAQ;EAAU,KAAK;CAAsB,IAAI,CAAC;CAErF,OACE,qBAAC,WAAD;EACQ;EACN,WAAW,YAAY;GAAE;GAAM;EAAU,CAAC;EAC1C,GAAI;EACJ,GAAI;EAJN,UAAA,CAMG,UACA,YAAY,QAAQ,oBAAC,cAAD;GAAc,eAAA;GAAY,WAAU;EAAU,CAAA,IAAI,IAC9D;;AAEf"}
@@ -0,0 +1,4 @@
1
+ const require_link_classes = require("./link-classes.cjs");
2
+ const require_Link = require("./Link.cjs");
3
+ exports.Link = require_Link.Link;
4
+ exports.linkClasses = require_link_classes.linkClasses;
@@ -0,0 +1,3 @@
1
+ import { LinkTone, linkClasses } from "./link-classes.cjs";
2
+ import { Link, LinkComponentProps, LinkProps } from "./Link.cjs";
3
+ export { Link, type LinkComponentProps, type LinkProps, type LinkTone, linkClasses };
@@ -0,0 +1,3 @@
1
+ import { LinkTone, linkClasses } from "./link-classes.mjs";
2
+ import { Link, LinkComponentProps, LinkProps } from "./Link.mjs";
3
+ export { Link, type LinkComponentProps, type LinkProps, type LinkTone, linkClasses };
@@ -0,0 +1,3 @@
1
+ import { linkClasses } from "./link-classes.mjs";
2
+ import { Link } from "./Link.mjs";
3
+ export { Link, linkClasses };
@@ -0,0 +1,11 @@
1
+ const require_cn = require("../../lib/cn.cjs");
2
+ // src/components/Link/link-classes.ts
3
+ const base = "inline-flex items-center gap-2 text-sm font-medium underline-offset-4 transition-colors hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent";
4
+ const tones = {
5
+ default: "text-base-content",
6
+ muted: "text-base-content/60 hover:text-base-content"
7
+ };
8
+ const linkClasses = ({ tone = "default", className } = {}) => require_cn.cn(base, tones[tone], className);
9
+ exports.linkClasses = linkClasses;
10
+
11
+ //# sourceMappingURL=link-classes.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-classes.cjs","names":["cn"],"sources":["../../../src/components/Link/link-classes.ts"],"sourcesContent":["import { cn } from \"../../lib/cn\";\n\nexport type LinkTone = \"default\" | \"muted\";\n\nconst base =\n \"inline-flex items-center gap-2 text-sm font-medium underline-offset-4 transition-colors hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent\";\n\nconst tones: Record<LinkTone, string> = {\n default: \"text-base-content\",\n muted: \"text-base-content/60 hover:text-base-content\",\n};\n\nexport const linkClasses = ({\n tone = \"default\",\n className,\n}: {\n tone?: LinkTone;\n className?: string;\n} = {}): string => cn(base, tones[tone], className);\n"],"mappings":";;AAIA,MAAM,OACJ;AAEF,MAAM,QAAkC;CACtC,SAAS;CACT,OAAO;AACT;AAEA,MAAa,eAAe,EAC1B,OAAO,WACP,cAIE,CAAC,MAAcA,WAAAA,GAAG,MAAM,MAAM,OAAO,SAAS"}
@@ -0,0 +1,7 @@
1
+ type LinkTone = "default" | "muted";
2
+ declare const linkClasses: ({ tone, className }?: {
3
+ tone?: LinkTone;
4
+ className?: string;
5
+ }) => string;
6
+ export { LinkTone, linkClasses };
7
+ //# sourceMappingURL=link-classes.d.cts.map
@@ -0,0 +1,7 @@
1
+ type LinkTone = "default" | "muted";
2
+ declare const linkClasses: ({ tone, className }?: {
3
+ tone?: LinkTone;
4
+ className?: string;
5
+ }) => string;
6
+ export { LinkTone, linkClasses };
7
+ //# sourceMappingURL=link-classes.d.mts.map
@@ -0,0 +1,11 @@
1
+ import { cn } from "../../lib/cn.mjs";
2
+ // src/components/Link/link-classes.ts
3
+ const base = "inline-flex items-center gap-2 text-sm font-medium underline-offset-4 transition-colors hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent";
4
+ const tones = {
5
+ default: "text-base-content",
6
+ muted: "text-base-content/60 hover:text-base-content"
7
+ };
8
+ const linkClasses = ({ tone = "default", className } = {}) => cn(base, tones[tone], className);
9
+ export { linkClasses };
10
+
11
+ //# sourceMappingURL=link-classes.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-classes.mjs","names":[],"sources":["../../../src/components/Link/link-classes.ts"],"sourcesContent":["import { cn } from \"../../lib/cn\";\n\nexport type LinkTone = \"default\" | \"muted\";\n\nconst base =\n \"inline-flex items-center gap-2 text-sm font-medium underline-offset-4 transition-colors hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent\";\n\nconst tones: Record<LinkTone, string> = {\n default: \"text-base-content\",\n muted: \"text-base-content/60 hover:text-base-content\",\n};\n\nexport const linkClasses = ({\n tone = \"default\",\n className,\n}: {\n tone?: LinkTone;\n className?: string;\n} = {}): string => cn(base, tones[tone], className);\n"],"mappings":";;AAIA,MAAM,OACJ;AAEF,MAAM,QAAkC;CACtC,SAAS;CACT,OAAO;AACT;AAEA,MAAa,eAAe,EAC1B,OAAO,WACP,cAIE,CAAC,MAAc,GAAG,MAAM,MAAM,OAAO,SAAS"}
@@ -0,0 +1,25 @@
1
+ const require_cn = require("../../lib/cn.cjs");
2
+ let react_jsx_runtime = require("react/jsx-runtime");
3
+ // src/components/Logo/Logo.tsx
4
+ const Logo = ({ src, inverseSrc, alt = "", className }) => {
5
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6
+ "aria-hidden": alt === "",
7
+ className: require_cn.cn("block", className),
8
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
9
+ src,
10
+ alt,
11
+ width: 512,
12
+ height: 512,
13
+ className: "logo-mark size-full"
14
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
15
+ src: inverseSrc,
16
+ alt,
17
+ width: 512,
18
+ height: 512,
19
+ className: "logo-inverse size-full"
20
+ })]
21
+ });
22
+ };
23
+ exports.Logo = Logo;
24
+
25
+ //# sourceMappingURL=Logo.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logo.cjs","names":["cn"],"sources":["../../../src/components/Logo/Logo.tsx"],"sourcesContent":["import { cn } from \"../../lib/cn\";\n\nexport type LogoProps = {\n /** Light mark URL, usually served from the app's public folder. */\n src: string;\n /** Reversed mark URL, shown by the dark theme. */\n inverseSrc: string;\n /** Accessible name. Leave empty to keep the mark decorative. */\n alt?: string;\n className?: string;\n};\n\nexport const Logo = ({ src, inverseSrc, alt = \"\", className }: LogoProps) => {\n const decorative = alt === \"\";\n\n return (\n <span aria-hidden={decorative} className={cn(\"block\", className)}>\n <img src={src} alt={alt} width={512} height={512} className=\"logo-mark size-full\" />\n <img src={inverseSrc} alt={alt} width={512} height={512} className=\"logo-inverse size-full\" />\n </span>\n );\n};\n"],"mappings":";;;AAYA,MAAa,QAAQ,EAAE,KAAK,YAAY,MAAM,IAAI,gBAA2B;CAG3E,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;EAAM,eAHW,QAAQ;EAGM,WAAWA,WAAAA,GAAG,SAAS,SAAS;EAA/D,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;GAAU;GAAU;GAAK,OAAO;GAAK,QAAQ;GAAK,WAAU;EAAuB,CAAA,GACnF,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;GAAK,KAAK;GAAiB;GAAK,OAAO;GAAK,QAAQ;GAAK,WAAU;EAA0B,CAAA,CACzF;;AAEV"}
@@ -0,0 +1,12 @@
1
+ type LogoProps = {
2
+ /** Light mark URL, usually served from the app's public folder. */
3
+ src: string;
4
+ /** Reversed mark URL, shown by the dark theme. */
5
+ inverseSrc: string;
6
+ /** Accessible name. Leave empty to keep the mark decorative. */
7
+ alt?: string;
8
+ className?: string;
9
+ };
10
+ declare const Logo: ({ src, inverseSrc, alt, className }: LogoProps) => import("react").JSX.Element;
11
+ export { Logo, LogoProps };
12
+ //# sourceMappingURL=Logo.d.cts.map
@@ -0,0 +1,12 @@
1
+ type LogoProps = {
2
+ /** Light mark URL, usually served from the app's public folder. */
3
+ src: string;
4
+ /** Reversed mark URL, shown by the dark theme. */
5
+ inverseSrc: string;
6
+ /** Accessible name. Leave empty to keep the mark decorative. */
7
+ alt?: string;
8
+ className?: string;
9
+ };
10
+ declare const Logo: ({ src, inverseSrc, alt, className }: LogoProps) => import("react").JSX.Element;
11
+ export { Logo, LogoProps };
12
+ //# sourceMappingURL=Logo.d.mts.map
@@ -0,0 +1,25 @@
1
+ import { cn } from "../../lib/cn.mjs";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ // src/components/Logo/Logo.tsx
4
+ const Logo = ({ src, inverseSrc, alt = "", className }) => {
5
+ return /* @__PURE__ */ jsxs("span", {
6
+ "aria-hidden": alt === "",
7
+ className: cn("block", className),
8
+ children: [/* @__PURE__ */ jsx("img", {
9
+ src,
10
+ alt,
11
+ width: 512,
12
+ height: 512,
13
+ className: "logo-mark size-full"
14
+ }), /* @__PURE__ */ jsx("img", {
15
+ src: inverseSrc,
16
+ alt,
17
+ width: 512,
18
+ height: 512,
19
+ className: "logo-inverse size-full"
20
+ })]
21
+ });
22
+ };
23
+ export { Logo };
24
+
25
+ //# sourceMappingURL=Logo.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logo.mjs","names":[],"sources":["../../../src/components/Logo/Logo.tsx"],"sourcesContent":["import { cn } from \"../../lib/cn\";\n\nexport type LogoProps = {\n /** Light mark URL, usually served from the app's public folder. */\n src: string;\n /** Reversed mark URL, shown by the dark theme. */\n inverseSrc: string;\n /** Accessible name. Leave empty to keep the mark decorative. */\n alt?: string;\n className?: string;\n};\n\nexport const Logo = ({ src, inverseSrc, alt = \"\", className }: LogoProps) => {\n const decorative = alt === \"\";\n\n return (\n <span aria-hidden={decorative} className={cn(\"block\", className)}>\n <img src={src} alt={alt} width={512} height={512} className=\"logo-mark size-full\" />\n <img src={inverseSrc} alt={alt} width={512} height={512} className=\"logo-inverse size-full\" />\n </span>\n );\n};\n"],"mappings":";;;AAYA,MAAa,QAAQ,EAAE,KAAK,YAAY,MAAM,IAAI,gBAA2B;CAG3E,OACE,qBAAC,QAAD;EAAM,eAHW,QAAQ;EAGM,WAAW,GAAG,SAAS,SAAS;EAA/D,UAAA,CACE,oBAAC,OAAD;GAAU;GAAU;GAAK,OAAO;GAAK,QAAQ;GAAK,WAAU;EAAuB,CAAA,GACnF,oBAAC,OAAD;GAAK,KAAK;GAAiB;GAAK,OAAO;GAAK,QAAQ;GAAK,WAAU;EAA0B,CAAA,CACzF;;AAEV"}
@@ -0,0 +1,2 @@
1
+ const require_Logo = require("./Logo.cjs");
2
+ exports.Logo = require_Logo.Logo;
@@ -0,0 +1 @@
1
+ export { Logo } from "./Logo.mjs";
@@ -0,0 +1,14 @@
1
+ const require_panel_classes = require("./panel-classes.cjs");
2
+ let react_jsx_runtime = require("react/jsx-runtime");
3
+ // src/components/Panel/Panel.tsx
4
+ const Panel = ({ tone, padding, className, ...props }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5
+ className: require_panel_classes.panelClasses({
6
+ tone,
7
+ padding,
8
+ className
9
+ }),
10
+ ...props
11
+ });
12
+ exports.Panel = Panel;
13
+
14
+ //# sourceMappingURL=Panel.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Panel.cjs","names":["panelClasses"],"sources":["../../../src/components/Panel/Panel.tsx"],"sourcesContent":["import type { HTMLAttributes } from \"react\";\nimport { panelClasses, type PanelPadding, type PanelTone } from \"./panel-classes\";\n\nexport type PanelProps = HTMLAttributes<HTMLDivElement> & {\n tone?: PanelTone;\n padding?: PanelPadding;\n};\n\nexport const Panel = ({ tone, padding, className, ...props }: PanelProps) => (\n <div className={panelClasses({ tone, padding, className })} {...props} />\n);\n"],"mappings":";;;AAQA,MAAa,SAAS,EAAE,MAAM,SAAS,WAAW,GAAG,YACnD,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;CAAK,WAAWA,sBAAAA,aAAa;EAAE;EAAM;EAAS;CAAU,CAAC;CAAG,GAAI;AAAQ,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { PanelPadding, PanelTone } from "./panel-classes.cjs";
2
+ import { HTMLAttributes } from "react";
3
+ type PanelProps = HTMLAttributes<HTMLDivElement> & {
4
+ tone?: PanelTone;
5
+ padding?: PanelPadding;
6
+ };
7
+ declare const Panel: ({ tone, padding, className, ...props }: PanelProps) => import("react").JSX.Element;
8
+ export { Panel, PanelProps };
9
+ //# sourceMappingURL=Panel.d.cts.map
@@ -0,0 +1,9 @@
1
+ import { PanelPadding, PanelTone } from "./panel-classes.mjs";
2
+ import { HTMLAttributes } from "react";
3
+ type PanelProps = HTMLAttributes<HTMLDivElement> & {
4
+ tone?: PanelTone;
5
+ padding?: PanelPadding;
6
+ };
7
+ declare const Panel: ({ tone, padding, className, ...props }: PanelProps) => import("react").JSX.Element;
8
+ export { Panel, PanelProps };
9
+ //# sourceMappingURL=Panel.d.mts.map
@@ -0,0 +1,14 @@
1
+ import { panelClasses } from "./panel-classes.mjs";
2
+ import { jsx } from "react/jsx-runtime";
3
+ // src/components/Panel/Panel.tsx
4
+ const Panel = ({ tone, padding, className, ...props }) => /* @__PURE__ */ jsx("div", {
5
+ className: panelClasses({
6
+ tone,
7
+ padding,
8
+ className
9
+ }),
10
+ ...props
11
+ });
12
+ export { Panel };
13
+
14
+ //# sourceMappingURL=Panel.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Panel.mjs","names":[],"sources":["../../../src/components/Panel/Panel.tsx"],"sourcesContent":["import type { HTMLAttributes } from \"react\";\nimport { panelClasses, type PanelPadding, type PanelTone } from \"./panel-classes\";\n\nexport type PanelProps = HTMLAttributes<HTMLDivElement> & {\n tone?: PanelTone;\n padding?: PanelPadding;\n};\n\nexport const Panel = ({ tone, padding, className, ...props }: PanelProps) => (\n <div className={panelClasses({ tone, padding, className })} {...props} />\n);\n"],"mappings":";;;AAQA,MAAa,SAAS,EAAE,MAAM,SAAS,WAAW,GAAG,YACnD,oBAAC,OAAD;CAAK,WAAW,aAAa;EAAE;EAAM;EAAS;CAAU,CAAC;CAAG,GAAI;AAAQ,CAAA"}
@@ -0,0 +1,4 @@
1
+ const require_panel_classes = require("./panel-classes.cjs");
2
+ const require_Panel = require("./Panel.cjs");
3
+ exports.Panel = require_Panel.Panel;
4
+ exports.panelClasses = require_panel_classes.panelClasses;
@@ -0,0 +1,3 @@
1
+ import { PanelPadding, PanelTone, panelClasses } from "./panel-classes.cjs";
2
+ import { Panel, PanelProps } from "./Panel.cjs";
3
+ export { Panel, type PanelPadding, type PanelProps, type PanelTone, panelClasses };
@@ -0,0 +1,3 @@
1
+ import { PanelPadding, PanelTone, panelClasses } from "./panel-classes.mjs";
2
+ import { Panel, PanelProps } from "./Panel.mjs";
3
+ export { Panel, type PanelPadding, type PanelProps, type PanelTone, panelClasses };
@@ -0,0 +1,3 @@
1
+ import { panelClasses } from "./panel-classes.mjs";
2
+ import { Panel } from "./Panel.mjs";
3
+ export { Panel, panelClasses };
@@ -0,0 +1,16 @@
1
+ const require_cn = require("../../lib/cn.cjs");
2
+ // src/components/Panel/panel-classes.ts
3
+ const base = "border border-base-content/12 text-base-content";
4
+ const tones = {
5
+ paper: "bg-base-100",
6
+ floating: "bg-base-100/85 backdrop-blur-md"
7
+ };
8
+ const paddings = {
9
+ none: "",
10
+ sm: "p-4",
11
+ md: "p-6"
12
+ };
13
+ const panelClasses = ({ tone = "paper", padding = "md", className } = {}) => require_cn.cn(base, tones[tone], paddings[padding], className);
14
+ exports.panelClasses = panelClasses;
15
+
16
+ //# sourceMappingURL=panel-classes.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-classes.cjs","names":["cn"],"sources":["../../../src/components/Panel/panel-classes.ts"],"sourcesContent":["import { cn } from \"../../lib/cn\";\n\nexport type PanelTone = \"paper\" | \"floating\";\nexport type PanelPadding = \"none\" | \"sm\" | \"md\";\n\nconst base = \"border border-base-content/12 text-base-content\";\n\nconst tones: Record<PanelTone, string> = {\n paper: \"bg-base-100\",\n floating: \"bg-base-100/85 backdrop-blur-md\",\n};\n\nconst paddings: Record<PanelPadding, string> = {\n none: \"\",\n sm: \"p-4\",\n md: \"p-6\",\n};\n\nexport const panelClasses = ({\n tone = \"paper\",\n padding = \"md\",\n className,\n}: {\n tone?: PanelTone;\n padding?: PanelPadding;\n className?: string;\n} = {}): string => cn(base, tones[tone], paddings[padding], className);\n"],"mappings":";;AAKA,MAAM,OAAO;AAEb,MAAM,QAAmC;CACvC,OAAO;CACP,UAAU;AACZ;AAEA,MAAM,WAAyC;CAC7C,MAAM;CACN,IAAI;CACJ,IAAI;AACN;AAEA,MAAa,gBAAgB,EAC3B,OAAO,SACP,UAAU,MACV,cAKE,CAAC,MAAcA,WAAAA,GAAG,MAAM,MAAM,OAAO,SAAS,UAAU,SAAS"}
@@ -0,0 +1,9 @@
1
+ type PanelTone = "paper" | "floating";
2
+ type PanelPadding = "none" | "sm" | "md";
3
+ declare const panelClasses: ({ tone, padding, className }?: {
4
+ tone?: PanelTone;
5
+ padding?: PanelPadding;
6
+ className?: string;
7
+ }) => string;
8
+ export { PanelPadding, PanelTone, panelClasses };
9
+ //# sourceMappingURL=panel-classes.d.cts.map
@@ -0,0 +1,9 @@
1
+ type PanelTone = "paper" | "floating";
2
+ type PanelPadding = "none" | "sm" | "md";
3
+ declare const panelClasses: ({ tone, padding, className }?: {
4
+ tone?: PanelTone;
5
+ padding?: PanelPadding;
6
+ className?: string;
7
+ }) => string;
8
+ export { PanelPadding, PanelTone, panelClasses };
9
+ //# sourceMappingURL=panel-classes.d.mts.map
@@ -0,0 +1,16 @@
1
+ import { cn } from "../../lib/cn.mjs";
2
+ // src/components/Panel/panel-classes.ts
3
+ const base = "border border-base-content/12 text-base-content";
4
+ const tones = {
5
+ paper: "bg-base-100",
6
+ floating: "bg-base-100/85 backdrop-blur-md"
7
+ };
8
+ const paddings = {
9
+ none: "",
10
+ sm: "p-4",
11
+ md: "p-6"
12
+ };
13
+ const panelClasses = ({ tone = "paper", padding = "md", className } = {}) => cn(base, tones[tone], paddings[padding], className);
14
+ export { panelClasses };
15
+
16
+ //# sourceMappingURL=panel-classes.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-classes.mjs","names":[],"sources":["../../../src/components/Panel/panel-classes.ts"],"sourcesContent":["import { cn } from \"../../lib/cn\";\n\nexport type PanelTone = \"paper\" | \"floating\";\nexport type PanelPadding = \"none\" | \"sm\" | \"md\";\n\nconst base = \"border border-base-content/12 text-base-content\";\n\nconst tones: Record<PanelTone, string> = {\n paper: \"bg-base-100\",\n floating: \"bg-base-100/85 backdrop-blur-md\",\n};\n\nconst paddings: Record<PanelPadding, string> = {\n none: \"\",\n sm: \"p-4\",\n md: \"p-6\",\n};\n\nexport const panelClasses = ({\n tone = \"paper\",\n padding = \"md\",\n className,\n}: {\n tone?: PanelTone;\n padding?: PanelPadding;\n className?: string;\n} = {}): string => cn(base, tones[tone], paddings[padding], className);\n"],"mappings":";;AAKA,MAAM,OAAO;AAEb,MAAM,QAAmC;CACvC,OAAO;CACP,UAAU;AACZ;AAEA,MAAM,WAAyC;CAC7C,MAAM;CACN,IAAI;CACJ,IAAI;AACN;AAEA,MAAa,gBAAgB,EAC3B,OAAO,SACP,UAAU,MACV,cAKE,CAAC,MAAc,GAAG,MAAM,MAAM,OAAO,SAAS,UAAU,SAAS"}
@@ -0,0 +1,34 @@
1
+ const require_IconButton = require("../IconButton/IconButton.cjs");
2
+ require("../IconButton/index.cjs");
3
+ let react_jsx_runtime = require("react/jsx-runtime");
4
+ let lucide_react = require("lucide-react");
5
+ let react = require("react");
6
+ // src/components/ThemeToggle/ThemeToggle.tsx
7
+ const LIGHT = "yo-yo-light";
8
+ const DARK = "yo-yo-dark";
9
+ const KEY = "yo-yo-theme";
10
+ const ThemeToggle = ({ className }) => {
11
+ const [theme, setTheme] = (0, react.useState)(LIGHT);
12
+ (0, react.useEffect)(() => {
13
+ setTheme(document.documentElement.getAttribute("data-theme") ?? LIGHT);
14
+ }, []);
15
+ const toggle = () => {
16
+ const next = theme === DARK ? LIGHT : DARK;
17
+ setTheme(next);
18
+ document.documentElement.setAttribute("data-theme", next);
19
+ try {
20
+ localStorage.setItem(KEY, next);
21
+ } catch {}
22
+ };
23
+ const isDark = theme === DARK;
24
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_IconButton.IconButton, {
25
+ label: isDark ? "Cambiar a tema claro" : "Cambiar a tema oscuro",
26
+ variant: "ghost",
27
+ onClick: toggle,
28
+ className,
29
+ children: isDark ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Sun, { className: "size-5" }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Moon, { className: "size-5" })
30
+ });
31
+ };
32
+ exports.ThemeToggle = ThemeToggle;
33
+
34
+ //# sourceMappingURL=ThemeToggle.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeToggle.cjs","names":["useState","IconButton","Sun","Moon"],"sources":["../../../src/components/ThemeToggle/ThemeToggle.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { Moon, Sun } from \"lucide-react\";\nimport { IconButton } from \"../IconButton\";\n\nconst LIGHT = \"yo-yo-light\";\nconst DARK = \"yo-yo-dark\";\nconst KEY = \"yo-yo-theme\";\n\nexport type ThemeToggleProps = {\n className?: string;\n};\n\nexport const ThemeToggle = ({ className }: ThemeToggleProps) => {\n const [theme, setTheme] = useState<string>(LIGHT);\n\n useEffect(() => {\n setTheme(document.documentElement.getAttribute(\"data-theme\") ?? LIGHT);\n }, []);\n\n const toggle = (): void => {\n const next = theme === DARK ? LIGHT : DARK;\n setTheme(next);\n document.documentElement.setAttribute(\"data-theme\", next);\n try {\n localStorage.setItem(KEY, next);\n } catch {\n // Without storage the choice simply does not persist.\n }\n };\n\n const isDark = theme === DARK;\n\n return (\n <IconButton\n label={isDark ? \"Cambiar a tema claro\" : \"Cambiar a tema oscuro\"}\n variant=\"ghost\"\n onClick={toggle}\n className={className}\n >\n {isDark ? <Sun className=\"size-5\" /> : <Moon className=\"size-5\" />}\n </IconButton>\n );\n};\n"],"mappings":";;;;;;AAIA,MAAM,QAAQ;AACd,MAAM,OAAO;AACb,MAAM,MAAM;AAMZ,MAAa,eAAe,EAAE,gBAAkC;CAC9D,MAAM,CAAC,OAAO,aAAA,GAAYA,MAAAA,SAAAA,CAAiB,KAAK;CAEhD,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,SAAS,SAAS,gBAAgB,aAAa,YAAY,KAAK,KAAK;CACvE,GAAG,CAAC,CAAC;CAEL,MAAM,eAAqB;EACzB,MAAM,OAAO,UAAU,OAAO,QAAQ;EACtC,SAAS,IAAI;EACb,SAAS,gBAAgB,aAAa,cAAc,IAAI;EACxD,IAAI;GACF,aAAa,QAAQ,KAAK,IAAI;EAChC,QAAQ,CAER;CACF;CAEA,MAAM,SAAS,UAAU;CAEzB,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,mBAAAA,YAAD;EACE,OAAO,SAAS,yBAAyB;EACzC,SAAQ;EACR,SAAS;EACE;EAEV,UAAA,SAAS,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,KAAD,EAAK,WAAU,SAAU,CAAA,IAAI,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,MAAD,EAAM,WAAU,SAAU,CAAA;CACvD,CAAA;AAEhB"}
@@ -0,0 +1,6 @@
1
+ type ThemeToggleProps = {
2
+ className?: string;
3
+ };
4
+ declare const ThemeToggle: ({ className }: ThemeToggleProps) => import("react").JSX.Element;
5
+ export { ThemeToggle, ThemeToggleProps };
6
+ //# sourceMappingURL=ThemeToggle.d.cts.map
@@ -0,0 +1,6 @@
1
+ type ThemeToggleProps = {
2
+ className?: string;
3
+ };
4
+ declare const ThemeToggle: ({ className }: ThemeToggleProps) => import("react").JSX.Element;
5
+ export { ThemeToggle, ThemeToggleProps };
6
+ //# sourceMappingURL=ThemeToggle.d.mts.map
@@ -0,0 +1,34 @@
1
+ import { IconButton } from "../IconButton/IconButton.mjs";
2
+ import "../IconButton/index.mjs";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { Moon, Sun } from "lucide-react";
5
+ import { useEffect, useState } from "react";
6
+ // src/components/ThemeToggle/ThemeToggle.tsx
7
+ const LIGHT = "yo-yo-light";
8
+ const DARK = "yo-yo-dark";
9
+ const KEY = "yo-yo-theme";
10
+ const ThemeToggle = ({ className }) => {
11
+ const [theme, setTheme] = useState(LIGHT);
12
+ useEffect(() => {
13
+ setTheme(document.documentElement.getAttribute("data-theme") ?? LIGHT);
14
+ }, []);
15
+ const toggle = () => {
16
+ const next = theme === DARK ? LIGHT : DARK;
17
+ setTheme(next);
18
+ document.documentElement.setAttribute("data-theme", next);
19
+ try {
20
+ localStorage.setItem(KEY, next);
21
+ } catch {}
22
+ };
23
+ const isDark = theme === DARK;
24
+ return /* @__PURE__ */ jsx(IconButton, {
25
+ label: isDark ? "Cambiar a tema claro" : "Cambiar a tema oscuro",
26
+ variant: "ghost",
27
+ onClick: toggle,
28
+ className,
29
+ children: isDark ? /* @__PURE__ */ jsx(Sun, { className: "size-5" }) : /* @__PURE__ */ jsx(Moon, { className: "size-5" })
30
+ });
31
+ };
32
+ export { ThemeToggle };
33
+
34
+ //# sourceMappingURL=ThemeToggle.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeToggle.mjs","names":[],"sources":["../../../src/components/ThemeToggle/ThemeToggle.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { Moon, Sun } from \"lucide-react\";\nimport { IconButton } from \"../IconButton\";\n\nconst LIGHT = \"yo-yo-light\";\nconst DARK = \"yo-yo-dark\";\nconst KEY = \"yo-yo-theme\";\n\nexport type ThemeToggleProps = {\n className?: string;\n};\n\nexport const ThemeToggle = ({ className }: ThemeToggleProps) => {\n const [theme, setTheme] = useState<string>(LIGHT);\n\n useEffect(() => {\n setTheme(document.documentElement.getAttribute(\"data-theme\") ?? LIGHT);\n }, []);\n\n const toggle = (): void => {\n const next = theme === DARK ? LIGHT : DARK;\n setTheme(next);\n document.documentElement.setAttribute(\"data-theme\", next);\n try {\n localStorage.setItem(KEY, next);\n } catch {\n // Without storage the choice simply does not persist.\n }\n };\n\n const isDark = theme === DARK;\n\n return (\n <IconButton\n label={isDark ? \"Cambiar a tema claro\" : \"Cambiar a tema oscuro\"}\n variant=\"ghost\"\n onClick={toggle}\n className={className}\n >\n {isDark ? <Sun className=\"size-5\" /> : <Moon className=\"size-5\" />}\n </IconButton>\n );\n};\n"],"mappings":";;;;;;AAIA,MAAM,QAAQ;AACd,MAAM,OAAO;AACb,MAAM,MAAM;AAMZ,MAAa,eAAe,EAAE,gBAAkC;CAC9D,MAAM,CAAC,OAAO,YAAY,SAAiB,KAAK;CAEhD,gBAAgB;EACd,SAAS,SAAS,gBAAgB,aAAa,YAAY,KAAK,KAAK;CACvE,GAAG,CAAC,CAAC;CAEL,MAAM,eAAqB;EACzB,MAAM,OAAO,UAAU,OAAO,QAAQ;EACtC,SAAS,IAAI;EACb,SAAS,gBAAgB,aAAa,cAAc,IAAI;EACxD,IAAI;GACF,aAAa,QAAQ,KAAK,IAAI;EAChC,QAAQ,CAER;CACF;CAEA,MAAM,SAAS,UAAU;CAEzB,OACE,oBAAC,YAAD;EACE,OAAO,SAAS,yBAAyB;EACzC,SAAQ;EACR,SAAS;EACE;EAEV,UAAA,SAAS,oBAAC,KAAD,EAAK,WAAU,SAAU,CAAA,IAAI,oBAAC,MAAD,EAAM,WAAU,SAAU,CAAA;CACvD,CAAA;AAEhB"}
@@ -0,0 +1,2 @@
1
+ const require_ThemeToggle = require("./ThemeToggle.cjs");
2
+ exports.ThemeToggle = require_ThemeToggle.ThemeToggle;
@@ -0,0 +1 @@
1
+ export { ThemeToggle } from "./ThemeToggle.mjs";