catastyle 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -4,7 +4,6 @@ import { jsx, jsxs } from 'react/jsx-runtime';
4
4
  import { useState } from 'react';
5
5
  import { FaEye, FaEyeSlash } from 'react-icons/fa6';
6
6
  import { Link as Link$1 } from 'react-router-dom';
7
- import * as logoConfigModule from 'catastyle/config';
8
7
  import path from 'path';
9
8
 
10
9
  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
@@ -480,34 +479,77 @@ var icon_light_theme_default = 'data:image/svg+xml,<svg id="svg" version="1.1" x
480
479
 
481
480
  // src/assets/icon/icon-dark-theme.svg
482
481
  var icon_dark_theme_default = 'data:image/svg+xml,<svg id="svg" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="322.0125786163522" viewBox="0, 0, 400,322.0125786163522"><g id="svgg"><path id="path0" d="M252.709 0.463 C 247.236 2.414,244.266 12.366,243.226 32.233 C 242.620 43.835,242.581 44.041,240.461 47.074 C 239.517 48.424,237.017 52.288,234.905 55.660 C 231.276 61.455,229.882 64.131,221.219 81.942 C 217.174 90.258,211.311 95.721,200.697 101.067 C 198.061 102.394,195.108 104.237,194.788 104.754 C 194.667 104.951,193.207 105.756,191.544 106.543 C 189.882 107.330,186.375 109.187,183.750 110.669 C 181.126 112.152,177.355 114.262,175.371 115.358 C 172.695 116.836,170.966 118.084,168.679 120.186 C 166.983 121.746,165.103 123.396,164.502 123.853 C 162.951 125.033,152.399 136.562,150.727 138.904 C 148.851 141.531,144.567 148.631,144.032 150.000 C 143.796 150.605,142.899 152.516,142.040 154.245 C 135.093 168.232,128.739 197.489,128.107 218.396 C 127.757 229.983,131.224 253.327,134.738 263.050 C 140.639 279.380,141.560 285.769,139.270 294.497 C 137.499 301.244,136.127 302.054,125.157 302.823 C 122.476 303.012,117.877 303.447,114.937 303.790 C 106.454 304.782,97.029 305.613,88.365 306.133 C 83.954 306.397,77.020 306.961,72.956 307.385 C 68.598 307.839,61.438 308.295,55.503 308.497 C 42.594 308.934,34.802 309.314,29.874 309.745 C 20.913 310.529,16.101 309.627,12.330 306.454 C 8.330 303.088,12.725 292.216,24.409 276.572 C 41.464 253.736,65.466 238.341,84.182 238.232 C 89.402 238.201,89.573 238.320,87.874 240.792 C 86.135 243.322,73.624 253.724,70.245 255.448 L 69.263 255.949 69.852 254.795 C 71.715 251.139,70.162 251.041,65.123 254.495 C 63.913 255.324,60.617 257.060,57.798 258.352 C 49.232 262.279,47.777 263.749,49.167 267.075 C 53.302 276.970,75.012 272.051,90.608 257.684 C 109.792 240.012,96.474 224.693,67.296 230.870 C 31.446 238.459,-0.877 270.202,0.103 296.855 C 0.678 312.479,6.162 318.689,20.126 319.529 C 22.807 319.690,29.387 320.254,34.748 320.782 L 44.497 321.742 70.881 321.709 C 85.392 321.691,97.379 321.606,97.517 321.521 C 97.656 321.435,109.698 321.220,124.278 321.042 C 179.622 320.368,202.131 320.069,204.717 319.975 C 206.187 319.921,217.508 319.720,229.874 319.527 C 242.241 319.335,254.198 319.049,256.447 318.893 C 258.695 318.736,262.905 318.596,265.802 318.581 C 291.487 318.448,303.692 315.621,307.025 309.034 C 309.777 303.595,308.623 298.126,303.000 289.964 C 299.211 284.464,298.284 282.088,297.592 276.101 C 296.468 266.391,296.433 253.282,297.503 242.871 C 297.665 241.285,297.798 237.181,297.797 233.751 C 297.795 229.888,297.979 226.140,298.280 223.899 C 298.547 221.910,298.839 219.688,298.928 218.961 L 299.091 217.640 300.882 218.772 C 301.867 219.394,303.381 220.495,304.245 221.218 C 306.674 223.247,313.392 227.602,316.548 229.193 C 318.692 230.273,324.224 232.321,332.862 235.232 C 352.389 241.812,355.223 243.300,365.079 252.144 C 381.498 266.877,399.945 263.290,399.994 245.357 C 400.006 240.817,395.851 233.838,389.178 227.192 C 384.530 222.562,355.655 197.260,350.786 193.550 C 349.230 192.364,346.753 190.317,345.283 189.000 C 343.813 187.684,340.912 185.184,338.836 183.446 C 330.093 176.122,324.849 170.223,323.654 166.367 C 322.730 163.387,322.844 136.823,323.788 135.063 C 324.874 133.038,327.561 130.637,331.604 128.079 C 345.180 119.491,351.037 112.658,355.006 100.777 C 359.279 87.991,358.285 79.429,349.387 52.358 C 345.756 41.314,345.182 38.671,344.018 27.671 C 342.051 9.061,339.880 3.773,334.211 3.774 C 329.644 3.775,312.028 17.620,310.511 22.401 C 310.308 23.042,309.100 23.117,306.952 22.622 C 304.523 22.062,299.414 21.660,291.905 21.436 L 284.596 21.218 278.697 15.221 C 267.356 3.691,258.216 -1.500,252.709 0.463 " stroke="none" fill="%23ecfcec" fill-rule="evenodd"></path><path id="path1" d="" stroke="none" fill="%23f0fcec" fill-rule="evenodd"></path><path id="path2" d="" stroke="none" fill="%23f0fcec" fill-rule="evenodd"></path><path id="path3" d="" stroke="none" fill="%23f0fcec" fill-rule="evenodd"></path><path id="path4" d="" stroke="none" fill="%23f0fcec" fill-rule="evenodd"></path></g></svg>';
483
- var logoConfig = logoConfigModule.default ?? logoConfigModule;
482
+
483
+ // src/utils/logoLoader.ts
484
+ function tryLoadUserLogoConfig() {
485
+ if (typeof window !== "undefined" || typeof process === "undefined") {
486
+ return null;
487
+ }
488
+ try {
489
+ const path2 = __require("path");
490
+ const userProjectRoot = process.cwd();
491
+ const configPath = path2.join(
492
+ userProjectRoot,
493
+ "src",
494
+ "catastyle",
495
+ "catastyle.config.ts"
496
+ );
497
+ try {
498
+ const resolvedPath = __require.resolve(configPath);
499
+ delete __require.cache[resolvedPath];
500
+ const config = __require(configPath);
501
+ return {
502
+ logoLight: config.logoLight,
503
+ logoDark: config.logoDark,
504
+ iconLight: config.iconLight,
505
+ iconDark: config.iconDark
506
+ };
507
+ } catch {
508
+ return null;
509
+ }
510
+ } catch {
511
+ return null;
512
+ }
513
+ }
484
514
  function getLogoLight() {
485
- if (logoConfig.logoLight && logoConfig.logoLight !== "default") {
486
- return logoConfig.logoLight;
515
+ const userConfig = tryLoadUserLogoConfig();
516
+ if (userConfig && userConfig.logoLight !== "default") {
517
+ return userConfig.logoLight;
487
518
  }
488
519
  return light_theme_default;
489
520
  }
490
521
  function getLogoDark() {
491
- if (logoConfig.logoDark && logoConfig.logoDark !== "default") {
492
- return logoConfig.logoDark;
522
+ const userConfig = tryLoadUserLogoConfig();
523
+ if (userConfig && userConfig.logoDark !== "default") {
524
+ return userConfig.logoDark;
493
525
  }
494
526
  return dark_theme_default;
495
527
  }
496
528
  function getIconLight() {
497
- if (logoConfig.iconLight && logoConfig.iconLight !== "default") {
498
- return logoConfig.iconLight;
529
+ const userConfig = tryLoadUserLogoConfig();
530
+ if (userConfig && userConfig.iconLight !== "default") {
531
+ return userConfig.iconLight;
499
532
  }
500
533
  return icon_light_theme_default;
501
534
  }
502
535
  function getIconDark() {
503
- if (logoConfig.iconDark && logoConfig.iconDark !== "default") {
504
- return logoConfig.iconDark;
536
+ const userConfig = tryLoadUserLogoConfig();
537
+ if (userConfig && userConfig.iconDark !== "default") {
538
+ return userConfig.iconDark;
505
539
  }
506
540
  return icon_dark_theme_default;
507
541
  }
508
- var Logo = ({ className, $lgWidth, $mdWidth, $smWidth }) => {
542
+ var Logo = ({
543
+ className,
544
+ $lgWidth,
545
+ $mdWidth,
546
+ $smWidth,
547
+ logoLight,
548
+ logoDark
549
+ }) => {
509
550
  const theme = useTheme();
510
551
  const isDarkTheme = theme.isDark === true;
552
+ const src = isDarkTheme ? logoDark ?? getLogoDark() : logoLight ?? getLogoLight();
511
553
  return /* @__PURE__ */ jsx(
512
554
  LogoStyled,
513
555
  {
@@ -515,7 +557,7 @@ var Logo = ({ className, $lgWidth, $mdWidth, $smWidth }) => {
515
557
  $lgWidth,
516
558
  $mdWidth,
517
559
  $smWidth,
518
- children: /* @__PURE__ */ jsx("img", { src: isDarkTheme ? getLogoDark() : getLogoLight(), alt: "Logo" })
560
+ children: /* @__PURE__ */ jsx("img", { src, alt: "Logo" })
519
561
  }
520
562
  );
521
563
  };
@@ -536,15 +578,12 @@ body{
536
578
  `;
537
579
  var global_default = GlobalStyle;
538
580
  var MainContainer = styled2.main`
539
- width: ${(props) => props.$centered !== false ? "100vw" : "100%"};
540
- max-width: ${(props) => props.$centered !== false ? "1200px" : "none"};
541
- margin: ${(props) => props.$centered !== false ? "0 auto" : "0"};
542
- min-height: ${(props) => props.$centered !== false ? "100vh" : "auto"};
581
+ width: 100%;
543
582
  display: flex;
544
583
  flex-direction: column;
545
584
  align-items: center;
546
585
  justify-content: center;
547
- overflow-y: auto;
586
+ overflow-y: scroll;
548
587
  &::-webkit-scrollbar {
549
588
  display: none;
550
589
  }
@@ -599,23 +638,20 @@ var ThemeButton = styled2(ButtonStyled)`
599
638
  var ThemeButton2 = ({
600
639
  className,
601
640
  onClick,
602
- position: position2 = "bottom-right"
641
+ position: position2 = "bottom-right",
642
+ iconLight,
643
+ iconDark
603
644
  }) => {
604
645
  const theme = useTheme();
605
646
  const isDarkTheme = theme.isDark === true;
647
+ const src = isDarkTheme ? iconLight ?? getIconLight() : iconDark ?? getIconDark();
606
648
  return /* @__PURE__ */ jsx(
607
649
  ThemeButton,
608
650
  {
609
651
  className,
610
652
  onClick,
611
653
  $position: position2,
612
- children: /* @__PURE__ */ jsx(
613
- "img",
614
- {
615
- src: isDarkTheme ? getIconLight() : getIconDark(),
616
- alt: "Theme Button"
617
- }
618
- )
654
+ children: /* @__PURE__ */ jsx("img", { src, alt: "Theme Button" })
619
655
  }
620
656
  );
621
657
  };
@@ -650,7 +686,6 @@ function tryLoadUserThemeConfig() {
650
686
  userProjectRoot,
651
687
  "src",
652
688
  "catastyle",
653
- "config",
654
689
  "catastyle.config.ts"
655
690
  );
656
691
  try {
@@ -681,8 +716,7 @@ var Main = ({
681
716
  className,
682
717
  position: position2,
683
718
  darkTheme: darkThemeProp,
684
- lightTheme: lightThemeProp,
685
- centered = true
719
+ lightTheme: lightThemeProp
686
720
  }) => {
687
721
  const [darkTheme, setDarkTheme] = useState(false);
688
722
  function toggleTheme() {
@@ -691,7 +725,7 @@ var Main = ({
691
725
  const theme = darkTheme ? darkThemeProp ?? getDarkTheme() : lightThemeProp ?? getLightTheme();
692
726
  return /* @__PURE__ */ jsxs(ThemeProvider, { theme: { ...theme, isDark: darkTheme }, children: [
693
727
  /* @__PURE__ */ jsx(global_default, {}),
694
- /* @__PURE__ */ jsxs(MainContainer, { className, $centered: centered, children: [
728
+ /* @__PURE__ */ jsxs(MainContainer, { className, children: [
695
729
  /* @__PURE__ */ jsx(
696
730
  ThemeButton_default,
697
731
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/fontSize.ts","../src/types/breakpoints.ts","../src/components/Button/styles.ts","../src/components/Button/Button.tsx","../src/components/Input/styles.ts","../src/components/Checkbox/styles.ts","../src/components/Text/styles.ts","../src/components/Text/Text.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Footer/styles.ts","../src/components/Footer/Footer.tsx","../src/components/Input/Input.tsx","../src/components/Label/styles.ts","../src/components/Label/Label.tsx","../src/components/Link/styles.ts","../src/components/Link/Link.tsx","../src/components/Logo/styles.ts","../src/utils/logoLoader.ts","../src/components/Logo/Logo.tsx","../src/styles/global.ts","../src/components/ThemeButton/styles.ts","../src/components/ThemeButton/ThemeButton.tsx","../src/themes/dark.ts","../src/themes/light.ts","../src/utils/themeLoader.ts","../src/components/Main/Main.tsx","../src/components/Title/styles.ts","../src/components/Title/Title.tsx"],"names":["styled","jsx","jsxs","RouterLink","ThemeButton","position","useTheme","useState"],"mappings":"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","file":"index.mjs","sourcesContent":["export type FontSize = 4 | 8 | 12 | 16 | 20 | 24 | 32 | 40\n\nexport type FontSizeType = {\n $lgFontSize?: FontSize\n $mdFontSize?: FontSize\n $smFontSize?: FontSize\n}\n\nexport const fontSizeToRem = (size: FontSize): string => {\n const remMap: Record<FontSize, string> = {\n 4: '0.25rem',\n 8: '0.5rem',\n 12: '0.75rem',\n 16: '1rem',\n 20: '1.25rem',\n 24: '1.5rem',\n 32: '2rem',\n 40: '2.5rem'\n }\n return remMap[size]\n}\n","export const BREAKPOINTS = {\n md: '1024px',\n sm: '768px'\n} as const\n\nexport const mdScreen = `@media (max-width: ${BREAKPOINTS.md})`\nexport const smScreen = `@media (max-width: ${BREAKPOINTS.sm})`\n\nexport type BreakpointType = {\n mdScreen?: boolean\n smScreen?: boolean\n}\n\nexport const applyBreakpointStyles = (\n baseStyles: string,\n mdStyles?: string,\n smStyles?: string\n) => `\n ${baseStyles}\n\n ${mdStyles ? `${mdScreen} { ${mdStyles} }` : ''}\n ${smStyles ? `${smScreen} { ${smStyles} }` : ''}\n`\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype ButtonStyle = {\n id?: string | undefined\n disabled?: boolean | undefined\n as?: React.ElementType | undefined\n type?: 'button' | 'submit' | 'reset' | undefined\n $lgWidth?: number | undefined\n $mdWidth?: number | undefined\n $smWidth?: number | undefined\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n}\n\nexport const ButtonStyled = styled.button<ButtonStyle>`\n width: ${(props) => props.$lgWidth || 100}%;\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n font-weight: 500;\n color: ${(props) => props.theme.bgColor};\n background-color: ${(props) => props.theme.primaryColor};\n padding: 12px 8px;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: 0.2s ease;\n\n &:hover {\n color: ${(props) => props.theme.primaryColor};\n background-color: ${(props) => props.theme.secondaryColor};\n }\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import type { FontSizeType, WidthType } from '@/types'\nimport { ButtonStyled } from './styles'\n\nexport type ButtonType = {\n children: React.ReactNode\n className?: string\n id?: string\n onClick?: () => void\n disabled?: boolean\n as?: React.ElementType\n type?: 'button' | 'submit' | 'reset'\n} & WidthType &\n FontSizeType\n\nconst Button = ({\n children,\n className,\n onClick,\n disabled,\n $lgWidth,\n $mdWidth,\n $smWidth,\n $lgFontSize,\n $mdFontSize,\n $smFontSize,\n as,\n type,\n id\n}: ButtonType) => (\n <ButtonStyled\n className={className}\n onClick={onClick}\n disabled={disabled}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n as={as}\n type={type}\n id={id}\n >\n {children}\n </ButtonStyled>\n)\n\nexport default Button\n","import styled from 'styled-components'\nimport {\n mdScreen,\n smScreen,\n fontSizeToRem,\n type WidthType,\n type FontSize\n} from '@/types'\n\ntype InputWrapperProps = {\n display?: string | undefined\n} & WidthType\n\ntype InputStyle = {\n type?: string\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n}\n\nexport const InputWrapper = styled.div<InputWrapperProps>`\n position: relative;\n display: ${(props) => props.display || 'block'};\n width: ${(props) => props.$lgWidth || 100}%;\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n }\n`\n\nexport const InputStyled = styled.input<InputStyle>`\n width: 100%;\n padding: 16px 8px;\n border-radius: 8px;\n border: 1px solid ${(props) => props.theme.tertiaryColor};\n background-color: transparent;\n color: ${(props) => props.theme.primaryColor};\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n\n &:focus {\n outline: none;\n box-shadow: 0 0 4px 2px ${(props) => props.theme.tertiaryColor};\n }\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n\nexport const EyeButton = styled.button<InputStyle>`\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${(props) => props.theme.primaryColor};\n transition: color 0.2s ease;\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n\n svg {\n width: 20px;\n height: 20px;\n }\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import styled from 'styled-components'\nimport { mdScreen, smScreen, type WidthType } from '@/types'\nimport { InputStyled } from '@/components/Input/styles'\n\ntype CheckLabelStyled = {\n display?: string | undefined\n} & WidthType\n\nexport const CheckLabel = styled.label<CheckLabelStyled>`\n width: ${(props) => props.$lgWidth || 100}%;\n display: flex;\n align-items: center;\n gap: 4px;\n cursor: pointer;\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n justify-content: center;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n justify-content: center;\n }\n`\n\nexport const CheckInput = styled(InputStyled)<CheckLabelStyled>`\n width: ${(props) => props.$lgWidth || 5}%;\n height: 20px;\n margin: 0;\n cursor: pointer;\n box-shadow: none !important;\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 5}%;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 5}%;\n }\n`\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype TextStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n as?: 'p' | 'span'\n color?: 'primary' | 'secondary'\n}\n\nexport const TextStyled = styled.p<TextStyledProps>`\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n color: ${(props) =>\n props.color === 'primary'\n ? props.theme.primaryColor\n : props.theme.secondaryColor};\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import type { FontSizeType } from '@/types'\nimport { TextStyled } from './styles'\n\nexport type TextType = {\n as: 'p' | 'span'\n children: React.ReactNode\n className?: string\n color?: 'primary' | 'secondary'\n} & FontSizeType\n\nconst Text = ({\n as,\n children,\n className,\n color = 'primary',\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: TextType) => (\n <TextStyled\n as={as}\n className={className}\n color={color}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </TextStyled>\n)\n\nexport default Text\n","import type { WidthType, FontSizeType } from '@/types'\nimport { CheckInput, CheckLabel } from './styles'\nimport Text from '@/components/Text/Text'\n\nexport type CheckboxType = {\n id: string\n name: string\n checked?: boolean\n className?: string\n $disabled?: boolean\n children: string\n display?: string\n onClick?: () => void\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n} & WidthType &\n FontSizeType\n\nconst Checkbox = ({\n id,\n name,\n checked,\n className,\n $disabled,\n children,\n display,\n $lgWidth,\n $mdWidth,\n $smWidth,\n $lgFontSize = 16,\n $mdFontSize = 16,\n $smFontSize = 16,\n onClick,\n onChange\n}: CheckboxType) => (\n <CheckLabel\n className={className}\n htmlFor={id}\n display={display}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n >\n <CheckInput\n type=\"checkbox\"\n id={id}\n name={name}\n checked={checked}\n disabled={$disabled}\n display={display}\n onClick={onClick}\n onChange={onChange}\n />\n <Text\n as=\"span\"\n color=\"primary\"\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </Text>\n </CheckLabel>\n)\n\nexport default Checkbox\n","import styled from 'styled-components'\n\nexport const FooterStyled = styled.footer`\n width: 100%;\n margin-top: 2%;\n padding: 1rem;\n color: #fff;\n text-align: center;\n`\n","import { FooterStyled } from './styles'\ntype FooterType = {\n children: React.ReactNode\n className?: string\n}\nconst Footer = ({ children, className }: FooterType) => {\n return <FooterStyled className={className}>{children}</FooterStyled>\n}\n\nexport default Footer\n","import React, { useState } from 'react'\nimport { FaEye, FaEyeSlash } from 'react-icons/fa6'\nimport type { WidthType, FontSizeType } from '@/types'\nimport { EyeButton, InputStyled, InputWrapper } from './styles'\n\nexport type InputType = {\n type: string\n id: string\n name: string\n className?: string\n placeholder?: string\n value?: string\n display?: string\n $disabled?: boolean\n $required?: boolean\n onClick?: () => void\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n} & WidthType &\n FontSizeType\n\nconst Input = ({\n type,\n id,\n name,\n className,\n placeholder,\n display,\n $lgWidth,\n $mdWidth,\n $smWidth,\n $lgFontSize,\n $mdFontSize,\n $smFontSize,\n $disabled,\n $required,\n onClick,\n onChange\n}: InputType) => {\n const [showPassword, setShowPassword] = useState(false)\n\n return (\n <InputWrapper\n className={className}\n display={display}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n >\n <InputStyled\n type={type === 'password' ? (showPassword ? 'text' : 'password') : type}\n id={id}\n name={name}\n placeholder={placeholder}\n onClick={onClick}\n onChange={onChange}\n disabled={$disabled}\n required={$required}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n />\n {type === 'password' && (\n <EyeButton type=\"button\" onClick={() => setShowPassword(!showPassword)}>\n {showPassword ? <FaEye /> : <FaEyeSlash />}\n </EyeButton>\n )}\n </InputWrapper>\n )\n}\n\nexport default Input\n","import styled from 'styled-components'\nimport { mdScreen, smScreen, fontSizeToRem, type FontSize } from '@/types'\n\ntype LabelStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n}\n\nexport const LabelStyled = styled.label<LabelStyledProps>`\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n font-weight: 500;\n color: ${(props) => props.theme.primaryColor};\n margin-bottom: 4px;\n display: block;\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import React from 'react'\nimport type { FontSizeType } from '@/types'\nimport { LabelStyled } from './styles'\n\nexport type LabelType = {\n htmlFor: string\n children: React.ReactNode\n className?: string\n color?: 'primary' | 'secondary'\n} & FontSizeType\n\nconst Label = ({\n htmlFor,\n children,\n className,\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: LabelType) => (\n <LabelStyled\n className={className}\n htmlFor={htmlFor}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </LabelStyled>\n)\n\nexport default Label\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype LinkStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n $target?: '_blank' | '_self'\n color?: 'primary' | 'secondary'\n}\n\nexport const LinkStyled = styled.a<LinkStyledProps>`\n color: ${(props) =>\n props.color === 'primary'\n ? props.theme.primaryColor\n : props.color === 'secondary'\n ? props.theme.secondaryColor\n : props.theme.linkColor};\n text-decoration: none;\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n font-weight: normal;\n background-image: linear-gradient(currentColor, currentColor);\n background-position: 0 100%;\n background-size: 0% 2px;\n background-repeat: no-repeat;\n transition:\n background-size 0.2s,\n background-position 0s 0.2s;\n\n &:hover {\n background-position: 100% 100%;\n background-size: 100% 2px;\n }\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import type { FontSizeType } from '@/types'\nimport { LinkStyled } from './styles'\nimport { Link as RouterLink } from 'react-router-dom'\n\nexport type LinkType = {\n href?: string\n to?: string\n children: React.ReactNode\n className?: string\n $target?: '_blank' | '_self'\n $isInternal?: boolean\n} & FontSizeType\n\nconst Link = ({\n href,\n to,\n children,\n className,\n $target,\n $isInternal = false,\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: LinkType) => {\n if ($isInternal && to) {\n return (\n <RouterLink to={to} style={{ textDecoration: 'none', color: 'inherit' }}>\n <LinkStyled\n className={className}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </LinkStyled>\n </RouterLink>\n )\n }\n\n return (\n <LinkStyled\n className={className}\n href={href}\n target={$target}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </LinkStyled>\n )\n}\n\nexport default Link\n","import styled from 'styled-components'\nimport type { WidthType } from '@/types'\nimport { mdScreen, smScreen } from '@/types'\n\nexport const LogoStyled = styled.div<WidthType>`\n width: ${(props) => props.$lgWidth || 100}%;\n & > img {\n width: 100%;\n height: auto;\n display: block;\n }\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n }\n`\n","import LogoLightDefault from '@/assets/logos/light-theme.svg'\nimport LogoDarkDefault from '@/assets/logos/dark-theme.svg'\nimport IconLightDefault from '@/assets/icon/icon-light-theme.svg'\nimport IconDarkDefault from '@/assets/icon/icon-dark-theme.svg'\nimport * as logoConfigModule from 'catastyle/config'\n\nconst logoConfig =\n (\n logoConfigModule as {\n default?: {\n logoLight?: string\n logoDark?: string\n iconLight?: string\n iconDark?: string\n }\n }\n ).default ?? logoConfigModule\n\nexport function getLogoLight(): string {\n if (logoConfig.logoLight && logoConfig.logoLight !== 'default') {\n return logoConfig.logoLight\n }\n return LogoLightDefault\n}\n\nexport function getLogoDark(): string {\n if (logoConfig.logoDark && logoConfig.logoDark !== 'default') {\n return logoConfig.logoDark\n }\n return LogoDarkDefault\n}\n\nexport function getIconLight(): string {\n if (logoConfig.iconLight && logoConfig.iconLight !== 'default') {\n return logoConfig.iconLight\n }\n return IconLightDefault\n}\n\nexport function getIconDark(): string {\n if (logoConfig.iconDark && logoConfig.iconDark !== 'default') {\n return logoConfig.iconDark\n }\n return IconDarkDefault\n}\n","import { LogoStyled } from './styles'\nimport type { WidthType } from '@/types'\nimport { useTheme } from 'styled-components'\nimport { getLogoLight, getLogoDark } from '@/utils/logoLoader'\n\ntype LogoProps = {\n className?: string\n} & WidthType\n\nconst Logo = ({ className, $lgWidth, $mdWidth, $smWidth }: LogoProps) => {\n const theme = useTheme()\n const isDarkTheme = theme.isDark === true\n\n return (\n <LogoStyled\n className={className}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n >\n <img src={isDarkTheme ? getLogoDark() : getLogoLight()} alt=\"Logo\" />\n </LogoStyled>\n )\n}\n\nexport default Logo\n","import styled, { createGlobalStyle } from 'styled-components'\n\nconst GlobalStyle = createGlobalStyle`\n*{\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n list-style: none;\n font-family: \"Inter\", sans-serif;\n}\n\nbody{\n background-color: ${(props) => props.theme.bgColor};\n color: ${(props) => props.theme.primaryColor};\n\n`\nexport default GlobalStyle\n\nexport const MainContainer = styled.main<{ $centered?: boolean }>`\n width: ${(props) => (props.$centered !== false ? '100vw' : '100%')};\n max-width: ${(props) => (props.$centered !== false ? '1200px' : 'none')};\n margin: ${(props) => (props.$centered !== false ? '0 auto' : '0')};\n min-height: ${(props) => (props.$centered !== false ? '100vh' : 'auto')};\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n overflow-y: auto;\n &::-webkit-scrollbar {\n display: none;\n }\n`\n","import styled, { css } from 'styled-components'\nimport { ButtonStyled } from '@/components/Button/styles'\nexport type ThemeButtonPosition =\n | 'top-right'\n | 'top-left'\n | 'bottom-right'\n | 'bottom-left'\ntype ButtonPosition = { $position?: ThemeButtonPosition }\nconst position = [\n {\n 'top-right': css`\n top: 1.25rem;\n right: 1.25rem;\n `\n },\n {\n 'top-left': css`\n top: 1.25rem;\n left: 1.25rem;\n `\n },\n {\n 'bottom-right': css`\n bottom: 1.25rem;\n right: 1.25rem;\n `\n },\n {\n 'bottom-left': css`\n bottom: 1.25rem;\n left: 1.25rem;\n `\n }\n]\nconst getPosition = (key: ThemeButtonPosition) =>\n (\n position.find((pos) => key in pos) as\n | Record<ThemeButtonPosition, ReturnType<typeof css>>\n | undefined\n )?.[key]\nexport const ThemeButton = styled(ButtonStyled)<ButtonPosition>`\n position: fixed;\n width: 3rem;\n height: 3rem;\n ${(props) => getPosition(props.$position ?? 'bottom-right')}\n z-index: 9999;\n border-radius: 50%;\n padding: 1%;\n display: flex;\n align-items: center;\n justify-content: center;\n & > img {\n width: 100%;\n height: 100%;\n }\n &:hover {\n background-color: ${(props) => props.theme.tertiaryColor};\n box-shadow: 0 0 10px 0 ${(props) => props.theme.primaryColor};\n }\n`\n","import { ThemeButton as ThemeButtonStyled } from './styles'\nimport { useTheme } from 'styled-components'\nimport { getIconDark, getIconLight } from '@/utils/logoLoader'\n\ntype ThemeButtonType = {\n className?: string\n onClick?: () => void\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'\n}\nconst ThemeButton = ({\n className,\n onClick,\n position = 'bottom-right'\n}: ThemeButtonType) => {\n const theme = useTheme()\n const isDarkTheme = theme.isDark === true\n return (\n <ThemeButtonStyled\n className={className}\n onClick={onClick}\n $position={position}\n >\n <img\n src={isDarkTheme ? getIconLight() : getIconDark()}\n alt=\"Theme Button\"\n />\n </ThemeButtonStyled>\n )\n}\n\nexport default ThemeButton\n","import type { DefaultTheme } from 'styled-components/'\n\nconst DarkTheme: DefaultTheme = {\n primaryColor: '#EBFFEB',\n secondaryColor: '#538A53',\n tertiaryColor: '#669966',\n bgColor: '#011F1F',\n linkColor: '#33CC66'\n}\n\nexport default DarkTheme\n","import type { DefaultTheme } from 'styled-components/'\n\nconst LightTheme: DefaultTheme = {\n primaryColor: '#011F1F',\n secondaryColor: '#33CC66',\n tertiaryColor: '#538A53',\n bgColor: '#EBFFEB',\n linkColor: '#006633'\n}\n\nexport default LightTheme\n","import type { DefaultTheme } from 'styled-components'\nimport DarkThemeDefault from '@/themes/dark'\nimport LightThemeDefault from '@/themes/light'\nimport path from 'path'\n\nfunction tryLoadUserThemeConfig(): {\n darkTheme: DefaultTheme | null\n lightTheme: DefaultTheme | null\n} | null {\n if (typeof window !== 'undefined') {\n return null\n }\n\n try {\n const userProjectRoot = process.cwd()\n const configPath = path.join(\n userProjectRoot,\n 'src',\n 'catastyle',\n 'config',\n 'catastyle.config.ts'\n )\n\n try {\n const resolvedPath = require.resolve(configPath)\n delete require.cache[resolvedPath]\n const config = require(configPath)\n return {\n darkTheme: config.darkTheme ?? null,\n lightTheme: config.lightTheme ?? null\n }\n } catch {\n return null\n }\n } catch {\n return null\n }\n}\n\nexport function getDarkTheme(): DefaultTheme {\n const userConfig = tryLoadUserThemeConfig()\n return userConfig?.darkTheme ?? DarkThemeDefault\n}\n\nexport function getLightTheme(): DefaultTheme {\n const userConfig = tryLoadUserThemeConfig()\n return userConfig?.lightTheme ?? LightThemeDefault\n}\n","import GlobalStyle, { MainContainer } from '@/styles/global'\nimport { ThemeProvider } from 'styled-components'\nimport type { DefaultTheme } from 'styled-components'\nimport { useState } from 'react'\nimport ThemeButton from '@/components/ThemeButton/ThemeButton'\nimport { getDarkTheme, getLightTheme } from '@/utils/themeLoader'\nimport type { ThemeButtonPosition } from '../ThemeButton/styles'\n\nexport type MainType = {\n children: React.ReactNode\n className?: string\n position?: ThemeButtonPosition\n darkTheme?: DefaultTheme | null\n lightTheme?: DefaultTheme | null\n centered?: boolean\n}\nconst Main = ({\n children,\n className,\n position,\n darkTheme: darkThemeProp,\n lightTheme: lightThemeProp,\n centered = true\n}: MainType) => {\n const [darkTheme, setDarkTheme] = useState(false)\n function toggleTheme() {\n setDarkTheme(!darkTheme)\n }\n const theme = darkTheme\n ? (darkThemeProp ?? getDarkTheme())\n : (lightThemeProp ?? getLightTheme())\n return (\n <ThemeProvider theme={{ ...theme, isDark: darkTheme }}>\n <GlobalStyle />\n <MainContainer className={className} $centered={centered}>\n <ThemeButton\n onClick={toggleTheme}\n {...(position !== undefined && { position })}\n />\n {children}\n </MainContainer>\n </ThemeProvider>\n )\n}\n\nexport default Main\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype TitleStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n color: 'primary' | 'secondary'\n}\n\nexport const TitleStyled = styled.h1<TitleStyledProps>`\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 32)};\n font-weight: 600;\n color: ${(props) =>\n props.color === 'primary'\n ? props.theme.primaryColor\n : props.theme.secondaryColor};\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 32)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 32\n )};\n }\n`\n","import type { FontSizeType } from '@/types'\nimport { TitleStyled } from './styles'\n\nexport type TitleType = {\n children: string\n className?: string\n color: 'primary' | 'secondary'\n} & FontSizeType\n\nconst Title = ({\n children,\n className,\n color,\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: TitleType) => (\n <TitleStyled\n className={className}\n color={color}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </TitleStyled>\n)\n\nexport default Title\n"]}
1
+ {"version":3,"sources":["../src/types/fontSize.ts","../src/types/breakpoints.ts","../src/components/Button/styles.ts","../src/components/Button/Button.tsx","../src/components/Input/styles.ts","../src/components/Checkbox/styles.ts","../src/components/Text/styles.ts","../src/components/Text/Text.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Footer/styles.ts","../src/components/Footer/Footer.tsx","../src/components/Input/Input.tsx","../src/components/Label/styles.ts","../src/components/Label/Label.tsx","../src/components/Link/styles.ts","../src/components/Link/Link.tsx","../src/components/Logo/styles.ts","../src/utils/logoLoader.ts","../src/components/Logo/Logo.tsx","../src/styles/global.ts","../src/components/ThemeButton/styles.ts","../src/components/ThemeButton/ThemeButton.tsx","../src/themes/dark.ts","../src/themes/light.ts","../src/utils/themeLoader.ts","../src/components/Main/Main.tsx","../src/components/Title/styles.ts","../src/components/Title/Title.tsx"],"names":["styled","jsx","jsxs","RouterLink","path","ThemeButton","position","useTheme","useState"],"mappings":"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","file":"index.mjs","sourcesContent":["export type FontSize = 4 | 8 | 12 | 16 | 20 | 24 | 32 | 40\n\nexport type FontSizeType = {\n $lgFontSize?: FontSize\n $mdFontSize?: FontSize\n $smFontSize?: FontSize\n}\n\nexport const fontSizeToRem = (size: FontSize): string => {\n const remMap: Record<FontSize, string> = {\n 4: '0.25rem',\n 8: '0.5rem',\n 12: '0.75rem',\n 16: '1rem',\n 20: '1.25rem',\n 24: '1.5rem',\n 32: '2rem',\n 40: '2.5rem'\n }\n return remMap[size]\n}\n","export const BREAKPOINTS = {\n md: '1024px',\n sm: '768px'\n} as const\n\nexport const mdScreen = `@media (max-width: ${BREAKPOINTS.md})`\nexport const smScreen = `@media (max-width: ${BREAKPOINTS.sm})`\n\nexport type BreakpointType = {\n mdScreen?: boolean\n smScreen?: boolean\n}\n\nexport const applyBreakpointStyles = (\n baseStyles: string,\n mdStyles?: string,\n smStyles?: string\n) => `\n ${baseStyles}\n\n ${mdStyles ? `${mdScreen} { ${mdStyles} }` : ''}\n ${smStyles ? `${smScreen} { ${smStyles} }` : ''}\n`\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype ButtonStyle = {\n id?: string | undefined\n disabled?: boolean | undefined\n as?: React.ElementType | undefined\n type?: 'button' | 'submit' | 'reset' | undefined\n $lgWidth?: number | undefined\n $mdWidth?: number | undefined\n $smWidth?: number | undefined\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n}\n\nexport const ButtonStyled = styled.button<ButtonStyle>`\n width: ${(props) => props.$lgWidth || 100}%;\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n font-weight: 500;\n color: ${(props) => props.theme.bgColor};\n background-color: ${(props) => props.theme.primaryColor};\n padding: 12px 8px;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: 0.2s ease;\n\n &:hover {\n color: ${(props) => props.theme.primaryColor};\n background-color: ${(props) => props.theme.secondaryColor};\n }\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import type { FontSizeType, WidthType } from '@/types'\nimport { ButtonStyled } from './styles'\n\nexport type ButtonType = {\n children: React.ReactNode\n className?: string\n id?: string\n onClick?: () => void\n disabled?: boolean\n as?: React.ElementType\n type?: 'button' | 'submit' | 'reset'\n} & WidthType &\n FontSizeType\n\nconst Button = ({\n children,\n className,\n onClick,\n disabled,\n $lgWidth,\n $mdWidth,\n $smWidth,\n $lgFontSize,\n $mdFontSize,\n $smFontSize,\n as,\n type,\n id\n}: ButtonType) => (\n <ButtonStyled\n className={className}\n onClick={onClick}\n disabled={disabled}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n as={as}\n type={type}\n id={id}\n >\n {children}\n </ButtonStyled>\n)\n\nexport default Button\n","import styled from 'styled-components'\nimport {\n mdScreen,\n smScreen,\n fontSizeToRem,\n type WidthType,\n type FontSize\n} from '@/types'\n\ntype InputWrapperProps = {\n display?: string | undefined\n} & WidthType\n\ntype InputStyle = {\n type?: string\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n}\n\nexport const InputWrapper = styled.div<InputWrapperProps>`\n position: relative;\n display: ${(props) => props.display || 'block'};\n width: ${(props) => props.$lgWidth || 100}%;\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n }\n`\n\nexport const InputStyled = styled.input<InputStyle>`\n width: 100%;\n padding: 16px 8px;\n border-radius: 8px;\n border: 1px solid ${(props) => props.theme.tertiaryColor};\n background-color: transparent;\n color: ${(props) => props.theme.primaryColor};\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n\n &:focus {\n outline: none;\n box-shadow: 0 0 4px 2px ${(props) => props.theme.tertiaryColor};\n }\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n\nexport const EyeButton = styled.button<InputStyle>`\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${(props) => props.theme.primaryColor};\n transition: color 0.2s ease;\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n\n svg {\n width: 20px;\n height: 20px;\n }\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import styled from 'styled-components'\nimport { mdScreen, smScreen, type WidthType } from '@/types'\nimport { InputStyled } from '@/components/Input/styles'\n\ntype CheckLabelStyled = {\n display?: string | undefined\n} & WidthType\n\nexport const CheckLabel = styled.label<CheckLabelStyled>`\n width: ${(props) => props.$lgWidth || 100}%;\n display: flex;\n align-items: center;\n gap: 4px;\n cursor: pointer;\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n justify-content: center;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n justify-content: center;\n }\n`\n\nexport const CheckInput = styled(InputStyled)<CheckLabelStyled>`\n width: ${(props) => props.$lgWidth || 5}%;\n height: 20px;\n margin: 0;\n cursor: pointer;\n box-shadow: none !important;\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 5}%;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 5}%;\n }\n`\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype TextStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n as?: 'p' | 'span'\n color?: 'primary' | 'secondary'\n}\n\nexport const TextStyled = styled.p<TextStyledProps>`\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n color: ${(props) =>\n props.color === 'primary'\n ? props.theme.primaryColor\n : props.theme.secondaryColor};\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import type { FontSizeType } from '@/types'\nimport { TextStyled } from './styles'\n\nexport type TextType = {\n as: 'p' | 'span'\n children: React.ReactNode\n className?: string\n color?: 'primary' | 'secondary'\n} & FontSizeType\n\nconst Text = ({\n as,\n children,\n className,\n color = 'primary',\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: TextType) => (\n <TextStyled\n as={as}\n className={className}\n color={color}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </TextStyled>\n)\n\nexport default Text\n","import type { WidthType, FontSizeType } from '@/types'\nimport { CheckInput, CheckLabel } from './styles'\nimport Text from '@/components/Text/Text'\n\nexport type CheckboxType = {\n id: string\n name: string\n checked?: boolean\n className?: string\n $disabled?: boolean\n children: string\n display?: string\n onClick?: () => void\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n} & WidthType &\n FontSizeType\n\nconst Checkbox = ({\n id,\n name,\n checked,\n className,\n $disabled,\n children,\n display,\n $lgWidth,\n $mdWidth,\n $smWidth,\n $lgFontSize = 16,\n $mdFontSize = 16,\n $smFontSize = 16,\n onClick,\n onChange\n}: CheckboxType) => (\n <CheckLabel\n className={className}\n htmlFor={id}\n display={display}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n >\n <CheckInput\n type=\"checkbox\"\n id={id}\n name={name}\n checked={checked}\n disabled={$disabled}\n display={display}\n onClick={onClick}\n onChange={onChange}\n />\n <Text\n as=\"span\"\n color=\"primary\"\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </Text>\n </CheckLabel>\n)\n\nexport default Checkbox\n","import styled from 'styled-components'\n\nexport const FooterStyled = styled.footer`\n width: 100%;\n margin-top: 2%;\n padding: 1rem;\n color: #fff;\n text-align: center;\n`\n","import { FooterStyled } from './styles'\ntype FooterType = {\n children: React.ReactNode\n className?: string\n}\nconst Footer = ({ children, className }: FooterType) => {\n return <FooterStyled className={className}>{children}</FooterStyled>\n}\n\nexport default Footer\n","import React, { useState } from 'react'\nimport { FaEye, FaEyeSlash } from 'react-icons/fa6'\nimport type { WidthType, FontSizeType } from '@/types'\nimport { EyeButton, InputStyled, InputWrapper } from './styles'\n\nexport type InputType = {\n type: string\n id: string\n name: string\n className?: string\n placeholder?: string\n value?: string\n display?: string\n $disabled?: boolean\n $required?: boolean\n onClick?: () => void\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n} & WidthType &\n FontSizeType\n\nconst Input = ({\n type,\n id,\n name,\n className,\n placeholder,\n display,\n $lgWidth,\n $mdWidth,\n $smWidth,\n $lgFontSize,\n $mdFontSize,\n $smFontSize,\n $disabled,\n $required,\n onClick,\n onChange\n}: InputType) => {\n const [showPassword, setShowPassword] = useState(false)\n\n return (\n <InputWrapper\n className={className}\n display={display}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n >\n <InputStyled\n type={type === 'password' ? (showPassword ? 'text' : 'password') : type}\n id={id}\n name={name}\n placeholder={placeholder}\n onClick={onClick}\n onChange={onChange}\n disabled={$disabled}\n required={$required}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n />\n {type === 'password' && (\n <EyeButton type=\"button\" onClick={() => setShowPassword(!showPassword)}>\n {showPassword ? <FaEye /> : <FaEyeSlash />}\n </EyeButton>\n )}\n </InputWrapper>\n )\n}\n\nexport default Input\n","import styled from 'styled-components'\nimport { mdScreen, smScreen, fontSizeToRem, type FontSize } from '@/types'\n\ntype LabelStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n}\n\nexport const LabelStyled = styled.label<LabelStyledProps>`\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n font-weight: 500;\n color: ${(props) => props.theme.primaryColor};\n margin-bottom: 4px;\n display: block;\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import React from 'react'\nimport type { FontSizeType } from '@/types'\nimport { LabelStyled } from './styles'\n\nexport type LabelType = {\n htmlFor: string\n children: React.ReactNode\n className?: string\n color?: 'primary' | 'secondary'\n} & FontSizeType\n\nconst Label = ({\n htmlFor,\n children,\n className,\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: LabelType) => (\n <LabelStyled\n className={className}\n htmlFor={htmlFor}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </LabelStyled>\n)\n\nexport default Label\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype LinkStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n $target?: '_blank' | '_self'\n color?: 'primary' | 'secondary'\n}\n\nexport const LinkStyled = styled.a<LinkStyledProps>`\n color: ${(props) =>\n props.color === 'primary'\n ? props.theme.primaryColor\n : props.color === 'secondary'\n ? props.theme.secondaryColor\n : props.theme.linkColor};\n text-decoration: none;\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n font-weight: normal;\n background-image: linear-gradient(currentColor, currentColor);\n background-position: 0 100%;\n background-size: 0% 2px;\n background-repeat: no-repeat;\n transition:\n background-size 0.2s,\n background-position 0s 0.2s;\n\n &:hover {\n background-position: 100% 100%;\n background-size: 100% 2px;\n }\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import type { FontSizeType } from '@/types'\nimport { LinkStyled } from './styles'\nimport { Link as RouterLink } from 'react-router-dom'\n\nexport type LinkType = {\n href?: string\n to?: string\n children: React.ReactNode\n className?: string\n $target?: '_blank' | '_self'\n $isInternal?: boolean\n} & FontSizeType\n\nconst Link = ({\n href,\n to,\n children,\n className,\n $target,\n $isInternal = false,\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: LinkType) => {\n if ($isInternal && to) {\n return (\n <RouterLink to={to} style={{ textDecoration: 'none', color: 'inherit' }}>\n <LinkStyled\n className={className}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </LinkStyled>\n </RouterLink>\n )\n }\n\n return (\n <LinkStyled\n className={className}\n href={href}\n target={$target}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </LinkStyled>\n )\n}\n\nexport default Link\n","import styled from 'styled-components'\nimport type { WidthType } from '@/types'\nimport { mdScreen, smScreen } from '@/types'\n\nexport const LogoStyled = styled.div<WidthType>`\n width: ${(props) => props.$lgWidth || 100}%;\n & > img {\n width: 100%;\n height: auto;\n display: block;\n }\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n }\n`\n","import LogoLightDefault from '@/assets/logos/light-theme.svg'\nimport LogoDarkDefault from '@/assets/logos/dark-theme.svg'\nimport IconLightDefault from '@/assets/icon/icon-light-theme.svg'\nimport IconDarkDefault from '@/assets/icon/icon-dark-theme.svg'\n\nfunction tryLoadUserLogoConfig(): {\n logoLight: string\n logoDark: string\n iconLight: string\n iconDark: string\n} | null {\n if (typeof window !== 'undefined' || typeof process === 'undefined') {\n return null\n }\n\n try {\n const path = require('path')\n const userProjectRoot = process.cwd()\n const configPath = path.join(\n userProjectRoot,\n 'src',\n 'catastyle',\n 'catastyle.config.ts'\n )\n\n try {\n const resolvedPath = require.resolve(configPath)\n delete require.cache[resolvedPath]\n const config = require(configPath)\n return {\n logoLight: config.logoLight,\n logoDark: config.logoDark,\n iconLight: config.iconLight,\n iconDark: config.iconDark\n }\n } catch {\n return null\n }\n } catch {\n return null\n }\n}\n\nexport function getLogoLight(): string {\n const userConfig = tryLoadUserLogoConfig()\n\n if (userConfig && userConfig.logoLight !== 'default') {\n return userConfig.logoLight\n }\n\n return LogoLightDefault\n}\n\nexport function getLogoDark(): string {\n const userConfig = tryLoadUserLogoConfig()\n\n if (userConfig && userConfig.logoDark !== 'default') {\n return userConfig.logoDark\n }\n\n return LogoDarkDefault\n}\nexport function getIconLight(): string {\n const userConfig = tryLoadUserLogoConfig()\n\n if (userConfig && userConfig.iconLight !== 'default') {\n return userConfig.iconLight\n }\n\n return IconLightDefault\n}\n\nexport function getIconDark(): string {\n const userConfig = tryLoadUserLogoConfig()\n\n if (userConfig && userConfig.iconDark !== 'default') {\n return userConfig.iconDark\n }\n\n return IconDarkDefault\n}\n","import { LogoStyled } from './styles'\nimport type { WidthType } from '@/types'\nimport { useTheme } from 'styled-components'\nimport { getLogoLight, getLogoDark } from '@/utils/logoLoader'\n\ntype LogoProps = {\n className?: string\n logoLight?: string\n logoDark?: string\n} & WidthType\n\nconst Logo = ({\n className,\n $lgWidth,\n $mdWidth,\n $smWidth,\n logoLight,\n logoDark\n}: LogoProps) => {\n const theme = useTheme()\n const isDarkTheme = theme.isDark === true\n const src = isDarkTheme\n ? (logoDark ?? getLogoDark())\n : (logoLight ?? getLogoLight())\n\n return (\n <LogoStyled\n className={className}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n >\n <img src={src} alt=\"Logo\" />\n </LogoStyled>\n )\n}\n\nexport default Logo\n","import styled, { createGlobalStyle } from 'styled-components'\n\nconst GlobalStyle = createGlobalStyle`\n*{\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n list-style: none;\n font-family: \"Inter\", sans-serif;\n}\n\nbody{\n background-color: ${(props) => props.theme.bgColor};\n color: ${(props) => props.theme.primaryColor};\n\n`\nexport default GlobalStyle\n\nexport const MainContainer = styled.main`\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n overflow-y: scroll;\n &::-webkit-scrollbar {\n display: none;\n }\n`\n","import styled, { css } from 'styled-components'\nimport { ButtonStyled } from '@/components/Button/styles'\nexport type ThemeButtonPosition =\n | 'top-right'\n | 'top-left'\n | 'bottom-right'\n | 'bottom-left'\ntype ButtonPosition = { $position?: ThemeButtonPosition }\nconst position = [\n {\n 'top-right': css`\n top: 1.25rem;\n right: 1.25rem;\n `\n },\n {\n 'top-left': css`\n top: 1.25rem;\n left: 1.25rem;\n `\n },\n {\n 'bottom-right': css`\n bottom: 1.25rem;\n right: 1.25rem;\n `\n },\n {\n 'bottom-left': css`\n bottom: 1.25rem;\n left: 1.25rem;\n `\n }\n]\nconst getPosition = (key: ThemeButtonPosition) =>\n (\n position.find((pos) => key in pos) as\n | Record<ThemeButtonPosition, ReturnType<typeof css>>\n | undefined\n )?.[key]\nexport const ThemeButton = styled(ButtonStyled)<ButtonPosition>`\n position: fixed;\n width: 3rem;\n height: 3rem;\n ${(props) => getPosition(props.$position ?? 'bottom-right')}\n z-index: 9999;\n border-radius: 50%;\n padding: 1%;\n display: flex;\n align-items: center;\n justify-content: center;\n & > img {\n width: 100%;\n height: 100%;\n }\n &:hover {\n background-color: ${(props) => props.theme.tertiaryColor};\n box-shadow: 0 0 10px 0 ${(props) => props.theme.primaryColor};\n }\n`\n","import { ThemeButton as ThemeButtonStyled } from './styles'\nimport { useTheme } from 'styled-components'\nimport { getIconDark, getIconLight } from '@/utils/logoLoader'\n\ntype ThemeButtonType = {\n className?: string\n onClick?: () => void\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'\n iconLight?: string\n iconDark?: string\n}\nconst ThemeButton = ({\n className,\n onClick,\n position = 'bottom-right',\n iconLight,\n iconDark\n}: ThemeButtonType) => {\n const theme = useTheme()\n const isDarkTheme = theme.isDark === true\n const src = isDarkTheme\n ? (iconLight ?? getIconLight())\n : (iconDark ?? getIconDark())\n return (\n <ThemeButtonStyled\n className={className}\n onClick={onClick}\n $position={position}\n >\n <img src={src} alt=\"Theme Button\" />\n </ThemeButtonStyled>\n )\n}\n\nexport default ThemeButton\n","import type { DefaultTheme } from 'styled-components/'\n\nconst DarkTheme: DefaultTheme = {\n primaryColor: '#EBFFEB',\n secondaryColor: '#538A53',\n tertiaryColor: '#669966',\n bgColor: '#011F1F',\n linkColor: '#33CC66'\n}\n\nexport default DarkTheme\n","import type { DefaultTheme } from 'styled-components/'\n\nconst LightTheme: DefaultTheme = {\n primaryColor: '#011F1F',\n secondaryColor: '#33CC66',\n tertiaryColor: '#538A53',\n bgColor: '#EBFFEB',\n linkColor: '#006633'\n}\n\nexport default LightTheme\n","import type { DefaultTheme } from 'styled-components'\nimport DarkThemeDefault from '@/themes/dark'\nimport LightThemeDefault from '@/themes/light'\nimport path from 'path'\n\nfunction tryLoadUserThemeConfig(): {\n darkTheme: DefaultTheme | null\n lightTheme: DefaultTheme | null\n} | null {\n if (typeof window !== 'undefined') {\n return null\n }\n\n try {\n const userProjectRoot = process.cwd()\n const configPath = path.join(\n userProjectRoot,\n 'src',\n 'catastyle',\n 'catastyle.config.ts'\n )\n\n try {\n const resolvedPath = require.resolve(configPath)\n delete require.cache[resolvedPath]\n const config = require(configPath)\n return {\n darkTheme: config.darkTheme ?? null,\n lightTheme: config.lightTheme ?? null\n }\n } catch {\n return null\n }\n } catch {\n return null\n }\n}\n\nexport function getDarkTheme(): DefaultTheme {\n const userConfig = tryLoadUserThemeConfig()\n return userConfig?.darkTheme ?? DarkThemeDefault\n}\n\nexport function getLightTheme(): DefaultTheme {\n const userConfig = tryLoadUserThemeConfig()\n return userConfig?.lightTheme ?? LightThemeDefault\n}\n","import GlobalStyle, { MainContainer } from '@/styles/global'\nimport { ThemeProvider } from 'styled-components'\nimport type { DefaultTheme } from 'styled-components'\nimport { useState } from 'react'\nimport ThemeButton from '@/components/ThemeButton/ThemeButton'\nimport { getDarkTheme, getLightTheme } from '@/utils/themeLoader'\nimport type { ThemeButtonPosition } from '../ThemeButton/styles'\n\nexport type MainType = {\n children: React.ReactNode\n className?: string\n position?: ThemeButtonPosition\n darkTheme?: DefaultTheme | null\n lightTheme?: DefaultTheme | null\n}\nconst Main = ({\n children,\n className,\n position,\n darkTheme: darkThemeProp,\n lightTheme: lightThemeProp\n}: MainType) => {\n const [darkTheme, setDarkTheme] = useState(false)\n function toggleTheme() {\n setDarkTheme(!darkTheme)\n }\n const theme = darkTheme\n ? (darkThemeProp ?? getDarkTheme())\n : (lightThemeProp ?? getLightTheme())\n return (\n <ThemeProvider theme={{ ...theme, isDark: darkTheme }}>\n <GlobalStyle />\n <MainContainer className={className}>\n <ThemeButton\n onClick={toggleTheme}\n {...(position !== undefined && { position })}\n />\n {children}\n </MainContainer>\n </ThemeProvider>\n )\n}\n\nexport default Main\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype TitleStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n color: 'primary' | 'secondary'\n}\n\nexport const TitleStyled = styled.h1<TitleStyledProps>`\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 32)};\n font-weight: 600;\n color: ${(props) =>\n props.color === 'primary'\n ? props.theme.primaryColor\n : props.theme.secondaryColor};\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 32)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 32\n )};\n }\n`\n","import type { FontSizeType } from '@/types'\nimport { TitleStyled } from './styles'\n\nexport type TitleType = {\n children: string\n className?: string\n color: 'primary' | 'secondary'\n} & FontSizeType\n\nconst Title = ({\n children,\n className,\n color,\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: TitleType) => (\n <TitleStyled\n className={className}\n color={color}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </TitleStyled>\n)\n\nexport default Title\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "catastyle",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Design System reutilizável com styled-components",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -10,11 +10,6 @@
10
10
  "types": "./dist/index.d.ts",
11
11
  "import": "./dist/index.mjs",
12
12
  "require": "./dist/index.js"
13
- },
14
- "./config": {
15
- "types": "./dist/config.default.d.ts",
16
- "import": "./dist/config.default.mjs",
17
- "require": "./dist/config.default.js"
18
13
  }
19
14
  },
20
15
  "files": [
@@ -1,86 +1,50 @@
1
1
  const fs = require('fs')
2
2
  const path = require('path')
3
3
 
4
- const packageRoot = path.join(__dirname, '..')
5
- const userProjectRoot = path.join(packageRoot, '..', '..')
4
+ const packageRoot = path.resolve(__dirname, '..')
5
+ const isInstalledAsDependency = packageRoot.includes('node_modules')
6
+ const userProjectRoot = isInstalledAsDependency
7
+ ? path.resolve(process.cwd(), '..', '..')
8
+ : path.resolve(packageRoot, '..')
6
9
 
7
- const configTargetDir = path.join(userProjectRoot, 'src', 'catastyle', 'config')
8
- const assetsTargetDir = path.join(userProjectRoot, 'src', 'catastyle', 'assets')
9
- const catastyleConfigTemplate = path.join(__dirname, 'templates', 'catastyle.config.ts.template')
10
- const catastyleConfigFile = path.join(configTargetDir, 'catastyle.config.ts')
11
- const templatesAssetsDir = path.join(__dirname, 'templates', 'assets')
12
-
13
- function copyDirRecursive(src, dest) {
14
- if (!fs.existsSync(src)) return
15
- if (!fs.existsSync(dest)) {
16
- fs.mkdirSync(dest, { recursive: true })
17
- }
18
- const entries = fs.readdirSync(src, { withFileTypes: true })
19
- for (const entry of entries) {
20
- const srcPath = path.join(src, entry.name)
21
- const destPath = path.join(dest, entry.name)
22
- if (entry.isDirectory()) {
23
- copyDirRecursive(srcPath, destPath)
24
- } else {
25
- fs.copyFileSync(srcPath, destPath)
26
- }
27
- }
28
- }
10
+ const catastyleDir = path.resolve(userProjectRoot, 'src', 'catastyle')
11
+ const catastyleConfigTemplate = path.resolve(__dirname, 'templates', 'catastyle.config.ts.template')
12
+ const catastyleConfigFile = path.resolve(catastyleDir, 'catastyle.config.ts')
29
13
 
30
14
  function createConfigFile(templatePath, targetPath, type) {
31
15
  try {
32
- const srcDir = path.join(userProjectRoot, 'src')
16
+ if (!fs.existsSync(templatePath)) {
17
+ console.warn(`⚠️ Catastyle: template not found at ${templatePath}. Skipping.`)
18
+ return
19
+ }
20
+
21
+ const srcDir = path.resolve(userProjectRoot, 'src')
33
22
  if (!fs.existsSync(srcDir)) {
34
23
  fs.mkdirSync(srcDir, { recursive: true })
35
24
  }
36
25
 
37
- if (!fs.existsSync(configTargetDir)) {
38
- fs.mkdirSync(configTargetDir, { recursive: true })
26
+ if (!fs.existsSync(catastyleDir)) {
27
+ fs.mkdirSync(catastyleDir, { recursive: true })
39
28
  }
40
29
 
41
30
  if (fs.existsSync(targetPath)) {
42
- console.log(`ℹ️ ${type} config file already exists. Skipped.`)
43
- return
44
- }
45
-
46
- if (!fs.existsSync(templatePath)) {
47
- console.warn(`⚠️ ${type} template not found. Skipping.`)
31
+ console.log('ℹ️ Catastyle: catastyle.config.ts already exists. Skipped.')
48
32
  return
49
33
  }
50
34
 
51
35
  const templateContent = fs.readFileSync(templatePath, 'utf-8')
52
36
  fs.writeFileSync(targetPath, templateContent, 'utf-8')
53
- console.log(`✅ Created ${type} config file at ${targetPath}`)
37
+ console.log(`✅ Catastyle: created ${path.relative(userProjectRoot, targetPath)}`)
54
38
  } catch (error) {
55
- console.error(`❌ Error creating ${type} config file:`, error.message)
39
+ console.error('❌ Catastyle postinstall:', error.message)
56
40
  }
57
41
  }
58
42
 
59
- function copyDefaultAssets() {
60
- try {
61
- if (!fs.existsSync(templatesAssetsDir)) {
62
- console.warn('⚠️ Catastyle: templates/assets not found. Skipping assets copy.')
63
- return
64
- }
65
- if (fs.existsSync(assetsTargetDir)) {
66
- console.log('ℹ️ Catastyle: assets folder already exists. Skipped.')
67
- return
68
- }
69
- const catastyleDir = path.join(userProjectRoot, 'src', 'catastyle')
70
- if (!fs.existsSync(catastyleDir)) {
71
- fs.mkdirSync(catastyleDir, { recursive: true })
72
- }
73
- copyDirRecursive(templatesAssetsDir, assetsTargetDir)
74
- console.log('✅ Copied default logos and icons to src/catastyle/assets')
75
- } catch (error) {
76
- console.error('❌ Error copying default assets:', error.message)
77
- }
43
+ if (!isInstalledAsDependency) {
44
+ console.log('ℹ️ Catastyle: postinstall skipped (not installed as dependency).')
45
+ process.exit(0)
78
46
  }
79
47
 
80
- console.log('📦 Catastyle: Setting up configuration files...')
81
-
82
- copyDefaultAssets()
48
+ console.log('📦 Catastyle: Setting up config...')
83
49
  createConfigFile(catastyleConfigTemplate, catastyleConfigFile, 'catastyle')
84
-
85
- console.log('✨ Catastyle setup complete!')
86
- console.log('💡 You can now customize themes, logos and icons in src/catastyle/config/catastyle.config.ts')
50
+ console.log('💡 Customize themes in src/catastyle/catastyle.config.ts')
@@ -1,9 +1,8 @@
1
1
  import type { DefaultTheme } from 'styled-components'
2
- import logoLight from '../assets/logos/light-theme.svg'
3
- import logoDark from '../assets/logos/dark-theme.svg'
4
- import iconLight from '../assets/icon/icon-light-theme.svg'
5
- import iconDark from '../assets/icon/icon-dark-theme.svg'
6
2
 
3
+ // TEMAS
4
+ // Para customizar os temas, descomente e configure os objetos abaixo.
5
+ // Se os valores estiverem como null, os temas padrão do Catastyle serão usados.
7
6
  export const darkTheme: DefaultTheme | null = null
8
7
  /*
9
8
  export const darkTheme: DefaultTheme | null = {
@@ -25,4 +24,13 @@ export const lightTheme: DefaultTheme | null = {
25
24
  }
26
25
  */
27
26
 
28
- export { logoLight, logoDark, iconLight, iconDark }
27
+ // LOGOS
28
+ // Caminho para SVG customizado ou 'default' para usar os do Catastyle.
29
+ // Exemplo: '/src/assets/logo-light.svg'
30
+ export const logoLight: string = 'default'
31
+ export const logoDark: string = 'default'
32
+
33
+ // ÍCONES (ThemeButton)
34
+ // 'default' = ícones do pacote | caminho/URL = SVG customizado (ex.: mesmo do logo)
35
+ export const iconLight: string = 'default'
36
+ export const iconDark: string = 'default'
@@ -1,10 +0,0 @@
1
- /**
2
- * Config padrão de logos/ícones.
3
- * O app do cliente pode sobrescrever via alias do bundler: 'catastyle/config' -> seu catastyle.config
4
- */
5
- declare const logoLight = "default";
6
- declare const logoDark = "default";
7
- declare const iconLight = "default";
8
- declare const iconDark = "default";
9
-
10
- export { iconDark, iconLight, logoDark, logoLight };
@@ -1,10 +0,0 @@
1
- /**
2
- * Config padrão de logos/ícones.
3
- * O app do cliente pode sobrescrever via alias do bundler: 'catastyle/config' -> seu catastyle.config
4
- */
5
- declare const logoLight = "default";
6
- declare const logoDark = "default";
7
- declare const iconLight = "default";
8
- declare const iconDark = "default";
9
-
10
- export { iconDark, iconLight, logoDark, logoLight };
@@ -1,14 +0,0 @@
1
- 'use strict';
2
-
3
- // src/config.default.ts
4
- var logoLight = "default";
5
- var logoDark = "default";
6
- var iconLight = "default";
7
- var iconDark = "default";
8
-
9
- exports.iconDark = iconDark;
10
- exports.iconLight = iconLight;
11
- exports.logoDark = logoDark;
12
- exports.logoLight = logoLight;
13
- //# sourceMappingURL=config.default.js.map
14
- //# sourceMappingURL=config.default.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/config.default.ts"],"names":[],"mappings":";;;AAIO,IAAM,SAAA,GAAY;AAClB,IAAM,QAAA,GAAW;AACjB,IAAM,SAAA,GAAY;AAClB,IAAM,QAAA,GAAW","file":"config.default.js","sourcesContent":["/**\n * Config padrão de logos/ícones.\n * O app do cliente pode sobrescrever via alias do bundler: 'catastyle/config' -> seu catastyle.config\n */\nexport const logoLight = 'default'\nexport const logoDark = 'default'\nexport const iconLight = 'default'\nexport const iconDark = 'default'\n"]}
@@ -1,9 +0,0 @@
1
- // src/config.default.ts
2
- var logoLight = "default";
3
- var logoDark = "default";
4
- var iconLight = "default";
5
- var iconDark = "default";
6
-
7
- export { iconDark, iconLight, logoDark, logoLight };
8
- //# sourceMappingURL=config.default.mjs.map
9
- //# sourceMappingURL=config.default.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/config.default.ts"],"names":[],"mappings":";AAIO,IAAM,SAAA,GAAY;AAClB,IAAM,QAAA,GAAW;AACjB,IAAM,SAAA,GAAY;AAClB,IAAM,QAAA,GAAW","file":"config.default.mjs","sourcesContent":["/**\n * Config padrão de logos/ícones.\n * O app do cliente pode sobrescrever via alias do bundler: 'catastyle/config' -> seu catastyle.config\n */\nexport const logoLight = 'default'\nexport const logoDark = 'default'\nexport const iconLight = 'default'\nexport const iconDark = 'default'\n"]}
@@ -1 +0,0 @@
1
- <svg id="svg" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="322.0125786163522" viewBox="0, 0, 400,322.0125786163522"><g id="svgg"><path id="path0" d="M252.709 0.463 C 247.236 2.414,244.266 12.366,243.226 32.233 C 242.620 43.835,242.581 44.041,240.461 47.074 C 239.517 48.424,237.017 52.288,234.905 55.660 C 231.276 61.455,229.882 64.131,221.219 81.942 C 217.174 90.258,211.311 95.721,200.697 101.067 C 198.061 102.394,195.108 104.237,194.788 104.754 C 194.667 104.951,193.207 105.756,191.544 106.543 C 189.882 107.330,186.375 109.187,183.750 110.669 C 181.126 112.152,177.355 114.262,175.371 115.358 C 172.695 116.836,170.966 118.084,168.679 120.186 C 166.983 121.746,165.103 123.396,164.502 123.853 C 162.951 125.033,152.399 136.562,150.727 138.904 C 148.851 141.531,144.567 148.631,144.032 150.000 C 143.796 150.605,142.899 152.516,142.040 154.245 C 135.093 168.232,128.739 197.489,128.107 218.396 C 127.757 229.983,131.224 253.327,134.738 263.050 C 140.639 279.380,141.560 285.769,139.270 294.497 C 137.499 301.244,136.127 302.054,125.157 302.823 C 122.476 303.012,117.877 303.447,114.937 303.790 C 106.454 304.782,97.029 305.613,88.365 306.133 C 83.954 306.397,77.020 306.961,72.956 307.385 C 68.598 307.839,61.438 308.295,55.503 308.497 C 42.594 308.934,34.802 309.314,29.874 309.745 C 20.913 310.529,16.101 309.627,12.330 306.454 C 8.330 303.088,12.725 292.216,24.409 276.572 C 41.464 253.736,65.466 238.341,84.182 238.232 C 89.402 238.201,89.573 238.320,87.874 240.792 C 86.135 243.322,73.624 253.724,70.245 255.448 L 69.263 255.949 69.852 254.795 C 71.715 251.139,70.162 251.041,65.123 254.495 C 63.913 255.324,60.617 257.060,57.798 258.352 C 49.232 262.279,47.777 263.749,49.167 267.075 C 53.302 276.970,75.012 272.051,90.608 257.684 C 109.792 240.012,96.474 224.693,67.296 230.870 C 31.446 238.459,-0.877 270.202,0.103 296.855 C 0.678 312.479,6.162 318.689,20.126 319.529 C 22.807 319.690,29.387 320.254,34.748 320.782 L 44.497 321.742 70.881 321.709 C 85.392 321.691,97.379 321.606,97.517 321.521 C 97.656 321.435,109.698 321.220,124.278 321.042 C 179.622 320.368,202.131 320.069,204.717 319.975 C 206.187 319.921,217.508 319.720,229.874 319.527 C 242.241 319.335,254.198 319.049,256.447 318.893 C 258.695 318.736,262.905 318.596,265.802 318.581 C 291.487 318.448,303.692 315.621,307.025 309.034 C 309.777 303.595,308.623 298.126,303.000 289.964 C 299.211 284.464,298.284 282.088,297.592 276.101 C 296.468 266.391,296.433 253.282,297.503 242.871 C 297.665 241.285,297.798 237.181,297.797 233.751 C 297.795 229.888,297.979 226.140,298.280 223.899 C 298.547 221.910,298.839 219.688,298.928 218.961 L 299.091 217.640 300.882 218.772 C 301.867 219.394,303.381 220.495,304.245 221.218 C 306.674 223.247,313.392 227.602,316.548 229.193 C 318.692 230.273,324.224 232.321,332.862 235.232 C 352.389 241.812,355.223 243.300,365.079 252.144 C 381.498 266.877,399.945 263.290,399.994 245.357 C 400.006 240.817,395.851 233.838,389.178 227.192 C 384.530 222.562,355.655 197.260,350.786 193.550 C 349.230 192.364,346.753 190.317,345.283 189.000 C 343.813 187.684,340.912 185.184,338.836 183.446 C 330.093 176.122,324.849 170.223,323.654 166.367 C 322.730 163.387,322.844 136.823,323.788 135.063 C 324.874 133.038,327.561 130.637,331.604 128.079 C 345.180 119.491,351.037 112.658,355.006 100.777 C 359.279 87.991,358.285 79.429,349.387 52.358 C 345.756 41.314,345.182 38.671,344.018 27.671 C 342.051 9.061,339.880 3.773,334.211 3.774 C 329.644 3.775,312.028 17.620,310.511 22.401 C 310.308 23.042,309.100 23.117,306.952 22.622 C 304.523 22.062,299.414 21.660,291.905 21.436 L 284.596 21.218 278.697 15.221 C 267.356 3.691,258.216 -1.500,252.709 0.463 " stroke="none" fill="#ecfcec" fill-rule="evenodd"></path><path id="path1" d="" stroke="none" fill="#f0fcec" fill-rule="evenodd"></path><path id="path2" d="" stroke="none" fill="#f0fcec" fill-rule="evenodd"></path><path id="path3" d="" stroke="none" fill="#f0fcec" fill-rule="evenodd"></path><path id="path4" d="" stroke="none" fill="#f0fcec" fill-rule="evenodd"></path></g></svg>