@pisodev/test-component-library 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -11,7 +11,7 @@ npm install @pisodev/test-component-library
11
11
  ## 사용법
12
12
 
13
13
  ```tsx
14
- import { Button, Card } from '@pisodev/test-component-library';
14
+ import { Button, Card, Anchor } from '@pisodev/test-component-library';
15
15
 
16
16
  function App() {
17
17
  return (
@@ -20,6 +20,13 @@ function App() {
20
20
  <Button variant="primary" onClick={() => alert('클릭!')}>
21
21
  시작하기
22
22
  </Button>
23
+ <Anchor
24
+ href="https://example.com"
25
+ rel="noopener noreferrer"
26
+ title="예시 사이트로 이동"
27
+ >
28
+ 더 알아보기
29
+ </Anchor>
23
30
  </Card>
24
31
  );
25
32
  }
@@ -59,6 +66,38 @@ function App() {
59
66
  - `footer`: `React.ReactNode`
60
67
  - `onClick`: `() => void`
61
68
 
69
+ ### Anchor
70
+
71
+ `rel`과 `title` 속성이 **필수**인 링크 컴포넌트입니다. 접근성과 SEO를 위해 항상 이 속성들을 제공해야 합니다.
72
+
73
+ ```tsx
74
+ <Anchor
75
+ href="https://example.com"
76
+ rel="noopener noreferrer"
77
+ title="예시 사이트로 이동"
78
+ target="_blank"
79
+ >
80
+ 외부 링크
81
+ </Anchor>
82
+
83
+ <Anchor
84
+ href="/about"
85
+ rel="internal"
86
+ title="회사 소개 페이지"
87
+ >
88
+ 회사 소개
89
+ </Anchor>
90
+ ```
91
+
92
+ **Props (필수 항목)**
93
+ - `href`: `string` (필수)
94
+ - `rel`: `string` (필수) - 링크 관계 (예: `"noopener noreferrer"`, `"internal"`)
95
+ - `title`: `string` (필수) - 링크 설명 (접근성 및 SEO에 중요)
96
+ - `target`: `'_blank'` | `'_self'` | `'_parent'` | `'_top'` (기본값: `'_self'`)
97
+ - `onClick`: `(e: React.MouseEvent<HTMLAnchorElement>) => void`
98
+
99
+ > **참고**: `rel`과 `title`은 접근성, SEO, 보안을 위해 반드시 제공해야 하는 필수 속성입니다.
100
+
62
101
  ## 라이센스
63
102
 
64
103
  MIT
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ export interface AnchorProps {
3
+ children: React.ReactNode;
4
+ href: string;
5
+ rel: string;
6
+ title: string;
7
+ target?: '_blank' | '_self' | '_parent' | '_top';
8
+ className?: string;
9
+ onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;
10
+ }
11
+ export declare const Anchor: React.FC<AnchorProps>;
@@ -0,0 +1,2 @@
1
+ export { Anchor } from './Anchor';
2
+ export type { AnchorProps } from './Anchor';
@@ -2,3 +2,5 @@ export { Button } from './Button';
2
2
  export type { ButtonProps } from './Button';
3
3
  export { Card } from './Card';
4
4
  export type { CardProps } from './Card';
5
+ export { Anchor } from './Anchor';
6
+ export type { AnchorProps } from './Anchor';
package/dist/index.esm.js CHANGED
@@ -27,15 +27,15 @@ function styleInject(css, ref) {
27
27
  }
28
28
  }
29
29
 
30
- var css_248z$1 = ".Button-module_button__18Bed{border:none;border-radius:4px;cursor:pointer;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-weight:500;transition:all .3s ease}.Button-module_button__18Bed:disabled{cursor:not-allowed;opacity:.6}.Button-module_button__18Bed:not(:disabled):hover{box-shadow:0 4px 8px rgba(0,0,0,.15);transform:translateY(-1px)}.Button-module_button__18Bed:not(:disabled):active{transform:translateY(0)}.Button-module_button__18Bed.Button-module_small__zfmcP{font-size:14px;padding:6px 12px}.Button-module_button__18Bed.Button-module_medium__HYxwi{font-size:16px;padding:10px 20px}.Button-module_button__18Bed.Button-module_large__iWceB{font-size:18px;padding:14px 28px}.Button-module_button__18Bed.Button-module_primary__st6yY{background-color:#007bff;color:#fff}.Button-module_button__18Bed.Button-module_primary__st6yY:not(:disabled):hover{background-color:#0062cc}.Button-module_button__18Bed.Button-module_secondary__j-3rj{background-color:#6c757d;color:#fff}.Button-module_button__18Bed.Button-module_secondary__j-3rj:not(:disabled):hover{background-color:#545b62}.Button-module_button__18Bed.Button-module_outline__TFr94{background-color:transparent;border:2px solid #007bff;color:#007bff}.Button-module_button__18Bed.Button-module_outline__TFr94:not(:disabled):hover{background-color:#007bff;color:#fff}";
31
- var styles$1 = {"button":"Button-module_button__18Bed","small":"Button-module_small__zfmcP","medium":"Button-module_medium__HYxwi","large":"Button-module_large__iWceB","primary":"Button-module_primary__st6yY","secondary":"Button-module_secondary__j-3rj","outline":"Button-module_outline__TFr94"};
32
- styleInject(css_248z$1);
30
+ var css_248z$2 = ".Button-module_button__18Bed{border:none;border-radius:4px;cursor:pointer;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-weight:500;transition:all .3s ease}.Button-module_button__18Bed:disabled{cursor:not-allowed;opacity:.6}.Button-module_button__18Bed:not(:disabled):hover{box-shadow:0 4px 8px rgba(0,0,0,.15);transform:translateY(-1px)}.Button-module_button__18Bed:not(:disabled):active{transform:translateY(0)}.Button-module_button__18Bed.Button-module_small__zfmcP{font-size:14px;padding:6px 12px}.Button-module_button__18Bed.Button-module_medium__HYxwi{font-size:16px;padding:10px 20px}.Button-module_button__18Bed.Button-module_large__iWceB{font-size:18px;padding:14px 28px}.Button-module_button__18Bed.Button-module_primary__st6yY{background-color:#007bff;color:#fff}.Button-module_button__18Bed.Button-module_primary__st6yY:not(:disabled):hover{background-color:#0062cc}.Button-module_button__18Bed.Button-module_secondary__j-3rj{background-color:#6c757d;color:#fff}.Button-module_button__18Bed.Button-module_secondary__j-3rj:not(:disabled):hover{background-color:#545b62}.Button-module_button__18Bed.Button-module_outline__TFr94{background-color:transparent;border:2px solid #007bff;color:#007bff}.Button-module_button__18Bed.Button-module_outline__TFr94:not(:disabled):hover{background-color:#007bff;color:#fff}";
31
+ var styles$2 = {"button":"Button-module_button__18Bed","small":"Button-module_small__zfmcP","medium":"Button-module_medium__HYxwi","large":"Button-module_large__iWceB","primary":"Button-module_primary__st6yY","secondary":"Button-module_secondary__j-3rj","outline":"Button-module_outline__TFr94"};
32
+ styleInject(css_248z$2);
33
33
 
34
34
  const Button = ({ children, variant = 'primary', size = 'medium', onClick, disabled = false, type = 'button', className = '', }) => {
35
35
  const buttonClasses = [
36
- styles$1.button,
37
- styles$1[variant],
38
- styles$1[size],
36
+ styles$2.button,
37
+ styles$2[variant],
38
+ styles$2[size],
39
39
  className,
40
40
  ]
41
41
  .filter(Boolean)
@@ -43,26 +43,35 @@ const Button = ({ children, variant = 'primary', size = 'medium', onClick, disab
43
43
  return (React.createElement("button", { className: buttonClasses, onClick: onClick, disabled: disabled, type: type }, children));
44
44
  };
45
45
 
46
- var css_248z = ".Card-module_card__LzN-3{border-radius:8px;overflow:hidden;transition:all .3s ease}.Card-module_card__LzN-3.Card-module_default__iGjRs{background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.1)}.Card-module_card__LzN-3.Card-module_elevated__SpUsJ{background-color:#fff;box-shadow:0 4px 12px rgba(0,0,0,.15)}.Card-module_card__LzN-3.Card-module_elevated__SpUsJ:hover{box-shadow:0 8px 16px rgba(0,0,0,.2)}.Card-module_card__LzN-3.Card-module_outlined__SPAas{background-color:#fff;border:1px solid #e0e0e0;box-shadow:none}.Card-module_card__LzN-3.Card-module_clickable__Lx4fx{cursor:pointer}.Card-module_card__LzN-3.Card-module_clickable__Lx4fx:hover{transform:translateY(-2px)}.Card-module_card__LzN-3.Card-module_clickable__Lx4fx:active{transform:translateY(0)}.Card-module_header__j-c-9{border-bottom:1px solid #e0e0e0;padding:16px}.Card-module_title__DzwNA{color:#333;font-size:20px;font-weight:600;margin:0}.Card-module_subtitle__RVMlO{color:#666;font-size:14px;margin:4px 0 0}.Card-module_content__vMtHg{padding:16px}.Card-module_footer__FjLbG{background-color:#f8f9fa;border-top:1px solid #e0e0e0;padding:16px}";
47
- var styles = {"card":"Card-module_card__LzN-3","default":"Card-module_default__iGjRs","elevated":"Card-module_elevated__SpUsJ","outlined":"Card-module_outlined__SPAas","clickable":"Card-module_clickable__Lx4fx","header":"Card-module_header__j-c-9","title":"Card-module_title__DzwNA","subtitle":"Card-module_subtitle__RVMlO","content":"Card-module_content__vMtHg","footer":"Card-module_footer__FjLbG"};
48
- styleInject(css_248z);
46
+ var css_248z$1 = ".Card-module_card__LzN-3{border-radius:8px;overflow:hidden;transition:all .3s ease}.Card-module_card__LzN-3.Card-module_default__iGjRs{background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.1)}.Card-module_card__LzN-3.Card-module_elevated__SpUsJ{background-color:#fff;box-shadow:0 4px 12px rgba(0,0,0,.15)}.Card-module_card__LzN-3.Card-module_elevated__SpUsJ:hover{box-shadow:0 8px 16px rgba(0,0,0,.2)}.Card-module_card__LzN-3.Card-module_outlined__SPAas{background-color:#fff;border:1px solid #e0e0e0;box-shadow:none}.Card-module_card__LzN-3.Card-module_clickable__Lx4fx{cursor:pointer}.Card-module_card__LzN-3.Card-module_clickable__Lx4fx:hover{transform:translateY(-2px)}.Card-module_card__LzN-3.Card-module_clickable__Lx4fx:active{transform:translateY(0)}.Card-module_header__j-c-9{border-bottom:1px solid #e0e0e0;padding:16px}.Card-module_title__DzwNA{color:#333;font-size:20px;font-weight:600;margin:0}.Card-module_subtitle__RVMlO{color:#666;font-size:14px;margin:4px 0 0}.Card-module_content__vMtHg{padding:16px}.Card-module_footer__FjLbG{background-color:#f8f9fa;border-top:1px solid #e0e0e0;padding:16px}";
47
+ var styles$1 = {"card":"Card-module_card__LzN-3","default":"Card-module_default__iGjRs","elevated":"Card-module_elevated__SpUsJ","outlined":"Card-module_outlined__SPAas","clickable":"Card-module_clickable__Lx4fx","header":"Card-module_header__j-c-9","title":"Card-module_title__DzwNA","subtitle":"Card-module_subtitle__RVMlO","content":"Card-module_content__vMtHg","footer":"Card-module_footer__FjLbG"};
48
+ styleInject(css_248z$1);
49
49
 
50
50
  const Card = ({ children, title, subtitle, footer, variant = 'default', className = '', onClick, }) => {
51
51
  const cardClasses = [
52
- styles.card,
53
- styles[variant],
54
- onClick ? styles.clickable : '',
52
+ styles$1.card,
53
+ styles$1[variant],
54
+ onClick ? styles$1.clickable : '',
55
55
  className,
56
56
  ]
57
57
  .filter(Boolean)
58
58
  .join(' ');
59
59
  return (React.createElement("div", { className: cardClasses, onClick: onClick },
60
- (title || subtitle) && (React.createElement("div", { className: styles.header },
61
- title && React.createElement("h3", { className: styles.title }, title),
62
- subtitle && React.createElement("p", { className: styles.subtitle }, subtitle))),
63
- React.createElement("div", { className: styles.content }, children),
64
- footer && React.createElement("div", { className: styles.footer }, footer)));
60
+ (title || subtitle) && (React.createElement("div", { className: styles$1.header },
61
+ title && React.createElement("h3", { className: styles$1.title }, title),
62
+ subtitle && React.createElement("p", { className: styles$1.subtitle }, subtitle))),
63
+ React.createElement("div", { className: styles$1.content }, children),
64
+ footer && React.createElement("div", { className: styles$1.footer }, footer)));
65
+ };
66
+
67
+ var css_248z = ".Anchor-module_anchor__uhpem{color:#007bff;cursor:pointer;position:relative;text-decoration:none;transition:all .2s ease}.Anchor-module_anchor__uhpem:hover{color:#0056b3;text-decoration:underline}.Anchor-module_anchor__uhpem:focus{outline:2px solid #007bff;outline-offset:2px}.Anchor-module_anchor__uhpem:visited{color:#0056b3}.Anchor-module_anchor__uhpem:active{color:#004a99}";
68
+ var styles = {"anchor":"Anchor-module_anchor__uhpem"};
69
+ styleInject(css_248z);
70
+
71
+ const Anchor = ({ children, href, rel, title, target = '_self', className = '', onClick, }) => {
72
+ const anchorClasses = [styles.anchor, className].filter(Boolean).join(' ');
73
+ return (React.createElement("a", { href: href, rel: rel, title: title, target: target, className: anchorClasses, onClick: onClick }, children));
65
74
  };
66
75
 
67
- export { Button, Card };
76
+ export { Anchor, Button, Card };
68
77
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/components/Button/Button.tsx","../src/components/Card/Card.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React from 'react';\nimport styles from './Button.module.scss';\n\nexport interface ButtonProps {\n children: React.ReactNode;\n variant?: 'primary' | 'secondary' | 'outline';\n size?: 'small' | 'medium' | 'large';\n onClick?: () => void;\n disabled?: boolean;\n type?: 'button' | 'submit' | 'reset';\n className?: string;\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n children,\n variant = 'primary',\n size = 'medium',\n onClick,\n disabled = false,\n type = 'button',\n className = '',\n}) => {\n const buttonClasses = [\n styles.button,\n styles[variant],\n styles[size],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n className={buttonClasses}\n onClick={onClick}\n disabled={disabled}\n type={type}\n >\n {children}\n </button>\n );\n};\n","import React from 'react';\nimport styles from './Card.module.scss';\n\nexport interface CardProps {\n children: React.ReactNode;\n title?: string;\n subtitle?: string;\n footer?: React.ReactNode;\n variant?: 'default' | 'elevated' | 'outlined';\n className?: string;\n onClick?: () => void;\n}\n\nexport const Card: React.FC<CardProps> = ({\n children,\n title,\n subtitle,\n footer,\n variant = 'default',\n className = '',\n onClick,\n}) => {\n const cardClasses = [\n styles.card,\n styles[variant],\n onClick ? styles.clickable : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={cardClasses} onClick={onClick}>\n {(title || subtitle) && (\n <div className={styles.header}>\n {title && <h3 className={styles.title}>{title}</h3>}\n {subtitle && <p className={styles.subtitle}>{subtitle}</p>}\n </div>\n )}\n <div className={styles.content}>{children}</div>\n {footer && <div className={styles.footer}>{footer}</div>}\n </div>\n );\n};\n"],"names":["styles"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.esm.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/components/Button/Button.tsx","../src/components/Card/Card.tsx","../src/components/Anchor/Anchor.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React from 'react';\nimport styles from './Button.module.scss';\n\nexport interface ButtonProps {\n children: React.ReactNode;\n variant?: 'primary' | 'secondary' | 'outline';\n size?: 'small' | 'medium' | 'large';\n onClick?: () => void;\n disabled?: boolean;\n type?: 'button' | 'submit' | 'reset';\n className?: string;\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n children,\n variant = 'primary',\n size = 'medium',\n onClick,\n disabled = false,\n type = 'button',\n className = '',\n}) => {\n const buttonClasses = [\n styles.button,\n styles[variant],\n styles[size],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n className={buttonClasses}\n onClick={onClick}\n disabled={disabled}\n type={type}\n >\n {children}\n </button>\n );\n};\n","import React from 'react';\nimport styles from './Card.module.scss';\n\nexport interface CardProps {\n children: React.ReactNode;\n title?: string;\n subtitle?: string;\n footer?: React.ReactNode;\n variant?: 'default' | 'elevated' | 'outlined';\n className?: string;\n onClick?: () => void;\n}\n\nexport const Card: React.FC<CardProps> = ({\n children,\n title,\n subtitle,\n footer,\n variant = 'default',\n className = '',\n onClick,\n}) => {\n const cardClasses = [\n styles.card,\n styles[variant],\n onClick ? styles.clickable : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={cardClasses} onClick={onClick}>\n {(title || subtitle) && (\n <div className={styles.header}>\n {title && <h3 className={styles.title}>{title}</h3>}\n {subtitle && <p className={styles.subtitle}>{subtitle}</p>}\n </div>\n )}\n <div className={styles.content}>{children}</div>\n {footer && <div className={styles.footer}>{footer}</div>}\n </div>\n );\n};\n","import React from 'react';\nimport styles from './Anchor.module.scss';\n\nexport interface AnchorProps {\n children: React.ReactNode;\n href: string;\n rel: string;\n title: string;\n target?: '_blank' | '_self' | '_parent' | '_top';\n className?: string;\n onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nexport const Anchor: React.FC<AnchorProps> = ({\n children,\n href,\n rel,\n title,\n target = '_self',\n className = '',\n onClick,\n}) => {\n const anchorClasses = [styles.anchor, className].filter(Boolean).join(' ');\n\n return (\n <a\n href={href}\n rel={rel}\n title={title}\n target={target}\n className={anchorClasses}\n onClick={onClick}\n >\n {children}\n </a>\n );\n};\n"],"names":["styles"],"mappings":"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","x_google_ignoreList":[0]}
package/dist/index.js CHANGED
@@ -29,15 +29,15 @@ function styleInject(css, ref) {
29
29
  }
30
30
  }
31
31
 
32
- var css_248z$1 = ".Button-module_button__18Bed{border:none;border-radius:4px;cursor:pointer;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-weight:500;transition:all .3s ease}.Button-module_button__18Bed:disabled{cursor:not-allowed;opacity:.6}.Button-module_button__18Bed:not(:disabled):hover{box-shadow:0 4px 8px rgba(0,0,0,.15);transform:translateY(-1px)}.Button-module_button__18Bed:not(:disabled):active{transform:translateY(0)}.Button-module_button__18Bed.Button-module_small__zfmcP{font-size:14px;padding:6px 12px}.Button-module_button__18Bed.Button-module_medium__HYxwi{font-size:16px;padding:10px 20px}.Button-module_button__18Bed.Button-module_large__iWceB{font-size:18px;padding:14px 28px}.Button-module_button__18Bed.Button-module_primary__st6yY{background-color:#007bff;color:#fff}.Button-module_button__18Bed.Button-module_primary__st6yY:not(:disabled):hover{background-color:#0062cc}.Button-module_button__18Bed.Button-module_secondary__j-3rj{background-color:#6c757d;color:#fff}.Button-module_button__18Bed.Button-module_secondary__j-3rj:not(:disabled):hover{background-color:#545b62}.Button-module_button__18Bed.Button-module_outline__TFr94{background-color:transparent;border:2px solid #007bff;color:#007bff}.Button-module_button__18Bed.Button-module_outline__TFr94:not(:disabled):hover{background-color:#007bff;color:#fff}";
33
- var styles$1 = {"button":"Button-module_button__18Bed","small":"Button-module_small__zfmcP","medium":"Button-module_medium__HYxwi","large":"Button-module_large__iWceB","primary":"Button-module_primary__st6yY","secondary":"Button-module_secondary__j-3rj","outline":"Button-module_outline__TFr94"};
34
- styleInject(css_248z$1);
32
+ var css_248z$2 = ".Button-module_button__18Bed{border:none;border-radius:4px;cursor:pointer;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-weight:500;transition:all .3s ease}.Button-module_button__18Bed:disabled{cursor:not-allowed;opacity:.6}.Button-module_button__18Bed:not(:disabled):hover{box-shadow:0 4px 8px rgba(0,0,0,.15);transform:translateY(-1px)}.Button-module_button__18Bed:not(:disabled):active{transform:translateY(0)}.Button-module_button__18Bed.Button-module_small__zfmcP{font-size:14px;padding:6px 12px}.Button-module_button__18Bed.Button-module_medium__HYxwi{font-size:16px;padding:10px 20px}.Button-module_button__18Bed.Button-module_large__iWceB{font-size:18px;padding:14px 28px}.Button-module_button__18Bed.Button-module_primary__st6yY{background-color:#007bff;color:#fff}.Button-module_button__18Bed.Button-module_primary__st6yY:not(:disabled):hover{background-color:#0062cc}.Button-module_button__18Bed.Button-module_secondary__j-3rj{background-color:#6c757d;color:#fff}.Button-module_button__18Bed.Button-module_secondary__j-3rj:not(:disabled):hover{background-color:#545b62}.Button-module_button__18Bed.Button-module_outline__TFr94{background-color:transparent;border:2px solid #007bff;color:#007bff}.Button-module_button__18Bed.Button-module_outline__TFr94:not(:disabled):hover{background-color:#007bff;color:#fff}";
33
+ var styles$2 = {"button":"Button-module_button__18Bed","small":"Button-module_small__zfmcP","medium":"Button-module_medium__HYxwi","large":"Button-module_large__iWceB","primary":"Button-module_primary__st6yY","secondary":"Button-module_secondary__j-3rj","outline":"Button-module_outline__TFr94"};
34
+ styleInject(css_248z$2);
35
35
 
36
36
  const Button = ({ children, variant = 'primary', size = 'medium', onClick, disabled = false, type = 'button', className = '', }) => {
37
37
  const buttonClasses = [
38
- styles$1.button,
39
- styles$1[variant],
40
- styles$1[size],
38
+ styles$2.button,
39
+ styles$2[variant],
40
+ styles$2[size],
41
41
  className,
42
42
  ]
43
43
  .filter(Boolean)
@@ -45,27 +45,37 @@ const Button = ({ children, variant = 'primary', size = 'medium', onClick, disab
45
45
  return (React.createElement("button", { className: buttonClasses, onClick: onClick, disabled: disabled, type: type }, children));
46
46
  };
47
47
 
48
- var css_248z = ".Card-module_card__LzN-3{border-radius:8px;overflow:hidden;transition:all .3s ease}.Card-module_card__LzN-3.Card-module_default__iGjRs{background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.1)}.Card-module_card__LzN-3.Card-module_elevated__SpUsJ{background-color:#fff;box-shadow:0 4px 12px rgba(0,0,0,.15)}.Card-module_card__LzN-3.Card-module_elevated__SpUsJ:hover{box-shadow:0 8px 16px rgba(0,0,0,.2)}.Card-module_card__LzN-3.Card-module_outlined__SPAas{background-color:#fff;border:1px solid #e0e0e0;box-shadow:none}.Card-module_card__LzN-3.Card-module_clickable__Lx4fx{cursor:pointer}.Card-module_card__LzN-3.Card-module_clickable__Lx4fx:hover{transform:translateY(-2px)}.Card-module_card__LzN-3.Card-module_clickable__Lx4fx:active{transform:translateY(0)}.Card-module_header__j-c-9{border-bottom:1px solid #e0e0e0;padding:16px}.Card-module_title__DzwNA{color:#333;font-size:20px;font-weight:600;margin:0}.Card-module_subtitle__RVMlO{color:#666;font-size:14px;margin:4px 0 0}.Card-module_content__vMtHg{padding:16px}.Card-module_footer__FjLbG{background-color:#f8f9fa;border-top:1px solid #e0e0e0;padding:16px}";
49
- var styles = {"card":"Card-module_card__LzN-3","default":"Card-module_default__iGjRs","elevated":"Card-module_elevated__SpUsJ","outlined":"Card-module_outlined__SPAas","clickable":"Card-module_clickable__Lx4fx","header":"Card-module_header__j-c-9","title":"Card-module_title__DzwNA","subtitle":"Card-module_subtitle__RVMlO","content":"Card-module_content__vMtHg","footer":"Card-module_footer__FjLbG"};
50
- styleInject(css_248z);
48
+ var css_248z$1 = ".Card-module_card__LzN-3{border-radius:8px;overflow:hidden;transition:all .3s ease}.Card-module_card__LzN-3.Card-module_default__iGjRs{background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.1)}.Card-module_card__LzN-3.Card-module_elevated__SpUsJ{background-color:#fff;box-shadow:0 4px 12px rgba(0,0,0,.15)}.Card-module_card__LzN-3.Card-module_elevated__SpUsJ:hover{box-shadow:0 8px 16px rgba(0,0,0,.2)}.Card-module_card__LzN-3.Card-module_outlined__SPAas{background-color:#fff;border:1px solid #e0e0e0;box-shadow:none}.Card-module_card__LzN-3.Card-module_clickable__Lx4fx{cursor:pointer}.Card-module_card__LzN-3.Card-module_clickable__Lx4fx:hover{transform:translateY(-2px)}.Card-module_card__LzN-3.Card-module_clickable__Lx4fx:active{transform:translateY(0)}.Card-module_header__j-c-9{border-bottom:1px solid #e0e0e0;padding:16px}.Card-module_title__DzwNA{color:#333;font-size:20px;font-weight:600;margin:0}.Card-module_subtitle__RVMlO{color:#666;font-size:14px;margin:4px 0 0}.Card-module_content__vMtHg{padding:16px}.Card-module_footer__FjLbG{background-color:#f8f9fa;border-top:1px solid #e0e0e0;padding:16px}";
49
+ var styles$1 = {"card":"Card-module_card__LzN-3","default":"Card-module_default__iGjRs","elevated":"Card-module_elevated__SpUsJ","outlined":"Card-module_outlined__SPAas","clickable":"Card-module_clickable__Lx4fx","header":"Card-module_header__j-c-9","title":"Card-module_title__DzwNA","subtitle":"Card-module_subtitle__RVMlO","content":"Card-module_content__vMtHg","footer":"Card-module_footer__FjLbG"};
50
+ styleInject(css_248z$1);
51
51
 
52
52
  const Card = ({ children, title, subtitle, footer, variant = 'default', className = '', onClick, }) => {
53
53
  const cardClasses = [
54
- styles.card,
55
- styles[variant],
56
- onClick ? styles.clickable : '',
54
+ styles$1.card,
55
+ styles$1[variant],
56
+ onClick ? styles$1.clickable : '',
57
57
  className,
58
58
  ]
59
59
  .filter(Boolean)
60
60
  .join(' ');
61
61
  return (React.createElement("div", { className: cardClasses, onClick: onClick },
62
- (title || subtitle) && (React.createElement("div", { className: styles.header },
63
- title && React.createElement("h3", { className: styles.title }, title),
64
- subtitle && React.createElement("p", { className: styles.subtitle }, subtitle))),
65
- React.createElement("div", { className: styles.content }, children),
66
- footer && React.createElement("div", { className: styles.footer }, footer)));
62
+ (title || subtitle) && (React.createElement("div", { className: styles$1.header },
63
+ title && React.createElement("h3", { className: styles$1.title }, title),
64
+ subtitle && React.createElement("p", { className: styles$1.subtitle }, subtitle))),
65
+ React.createElement("div", { className: styles$1.content }, children),
66
+ footer && React.createElement("div", { className: styles$1.footer }, footer)));
67
+ };
68
+
69
+ var css_248z = ".Anchor-module_anchor__uhpem{color:#007bff;cursor:pointer;position:relative;text-decoration:none;transition:all .2s ease}.Anchor-module_anchor__uhpem:hover{color:#0056b3;text-decoration:underline}.Anchor-module_anchor__uhpem:focus{outline:2px solid #007bff;outline-offset:2px}.Anchor-module_anchor__uhpem:visited{color:#0056b3}.Anchor-module_anchor__uhpem:active{color:#004a99}";
70
+ var styles = {"anchor":"Anchor-module_anchor__uhpem"};
71
+ styleInject(css_248z);
72
+
73
+ const Anchor = ({ children, href, rel, title, target = '_self', className = '', onClick, }) => {
74
+ const anchorClasses = [styles.anchor, className].filter(Boolean).join(' ');
75
+ return (React.createElement("a", { href: href, rel: rel, title: title, target: target, className: anchorClasses, onClick: onClick }, children));
67
76
  };
68
77
 
78
+ exports.Anchor = Anchor;
69
79
  exports.Button = Button;
70
80
  exports.Card = Card;
71
81
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/components/Button/Button.tsx","../src/components/Card/Card.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React from 'react';\nimport styles from './Button.module.scss';\n\nexport interface ButtonProps {\n children: React.ReactNode;\n variant?: 'primary' | 'secondary' | 'outline';\n size?: 'small' | 'medium' | 'large';\n onClick?: () => void;\n disabled?: boolean;\n type?: 'button' | 'submit' | 'reset';\n className?: string;\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n children,\n variant = 'primary',\n size = 'medium',\n onClick,\n disabled = false,\n type = 'button',\n className = '',\n}) => {\n const buttonClasses = [\n styles.button,\n styles[variant],\n styles[size],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n className={buttonClasses}\n onClick={onClick}\n disabled={disabled}\n type={type}\n >\n {children}\n </button>\n );\n};\n","import React from 'react';\nimport styles from './Card.module.scss';\n\nexport interface CardProps {\n children: React.ReactNode;\n title?: string;\n subtitle?: string;\n footer?: React.ReactNode;\n variant?: 'default' | 'elevated' | 'outlined';\n className?: string;\n onClick?: () => void;\n}\n\nexport const Card: React.FC<CardProps> = ({\n children,\n title,\n subtitle,\n footer,\n variant = 'default',\n className = '',\n onClick,\n}) => {\n const cardClasses = [\n styles.card,\n styles[variant],\n onClick ? styles.clickable : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={cardClasses} onClick={onClick}>\n {(title || subtitle) && (\n <div className={styles.header}>\n {title && <h3 className={styles.title}>{title}</h3>}\n {subtitle && <p className={styles.subtitle}>{subtitle}</p>}\n </div>\n )}\n <div className={styles.content}>{children}</div>\n {footer && <div className={styles.footer}>{footer}</div>}\n </div>\n );\n};\n"],"names":["styles"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/components/Button/Button.tsx","../src/components/Card/Card.tsx","../src/components/Anchor/Anchor.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React from 'react';\nimport styles from './Button.module.scss';\n\nexport interface ButtonProps {\n children: React.ReactNode;\n variant?: 'primary' | 'secondary' | 'outline';\n size?: 'small' | 'medium' | 'large';\n onClick?: () => void;\n disabled?: boolean;\n type?: 'button' | 'submit' | 'reset';\n className?: string;\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n children,\n variant = 'primary',\n size = 'medium',\n onClick,\n disabled = false,\n type = 'button',\n className = '',\n}) => {\n const buttonClasses = [\n styles.button,\n styles[variant],\n styles[size],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n className={buttonClasses}\n onClick={onClick}\n disabled={disabled}\n type={type}\n >\n {children}\n </button>\n );\n};\n","import React from 'react';\nimport styles from './Card.module.scss';\n\nexport interface CardProps {\n children: React.ReactNode;\n title?: string;\n subtitle?: string;\n footer?: React.ReactNode;\n variant?: 'default' | 'elevated' | 'outlined';\n className?: string;\n onClick?: () => void;\n}\n\nexport const Card: React.FC<CardProps> = ({\n children,\n title,\n subtitle,\n footer,\n variant = 'default',\n className = '',\n onClick,\n}) => {\n const cardClasses = [\n styles.card,\n styles[variant],\n onClick ? styles.clickable : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={cardClasses} onClick={onClick}>\n {(title || subtitle) && (\n <div className={styles.header}>\n {title && <h3 className={styles.title}>{title}</h3>}\n {subtitle && <p className={styles.subtitle}>{subtitle}</p>}\n </div>\n )}\n <div className={styles.content}>{children}</div>\n {footer && <div className={styles.footer}>{footer}</div>}\n </div>\n );\n};\n","import React from 'react';\nimport styles from './Anchor.module.scss';\n\nexport interface AnchorProps {\n children: React.ReactNode;\n href: string;\n rel: string;\n title: string;\n target?: '_blank' | '_self' | '_parent' | '_top';\n className?: string;\n onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nexport const Anchor: React.FC<AnchorProps> = ({\n children,\n href,\n rel,\n title,\n target = '_self',\n className = '',\n onClick,\n}) => {\n const anchorClasses = [styles.anchor, className].filter(Boolean).join(' ');\n\n return (\n <a\n href={href}\n rel={rel}\n title={title}\n target={target}\n className={anchorClasses}\n onClick={onClick}\n >\n {children}\n </a>\n );\n};\n"],"names":["styles"],"mappings":"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","x_google_ignoreList":[0]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pisodev/test-component-library",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "SCSS 기반 React 컴포넌트 라이브러리",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",