bo-ui-kit 0.1.0
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/LICENSE +21 -0
- package/README.md +124 -0
- package/dist/components/ui/button.d.ts +23 -0
- package/dist/components/ui/checkbox.d.ts +33 -0
- package/dist/components/ui/field.d.ts +37 -0
- package/dist/components/ui/index.d.ts +20 -0
- package/dist/components/ui/input-otp.d.ts +33 -0
- package/dist/components/ui/input.d.ts +43 -0
- package/dist/components/ui/label.d.ts +12 -0
- package/dist/components/ui/meter.d.ts +30 -0
- package/dist/components/ui/select.d.ts +47 -0
- package/dist/components/ui/toggle-group.d.ts +42 -0
- package/dist/components/ui/toggle.d.ts +41 -0
- package/dist/index.cjs +1 -0
- package/dist/index.js +665 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/styles.css +59 -0
- package/package.json +65 -0
package/dist/styles.css
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/* bo-ui-kit — 디자인 토큰 + 컴포넌트 유틸리티 */
|
|
2
|
+
/**
|
|
3
|
+
* 디자인 토큰 (단일 소스) — "BO UI Kit" (Figma) 파운데이션에서 추출.
|
|
4
|
+
* 색상은 Tailwind 불투명도 유틸리티 지원을 위해 RGB 채널(공백 구분)로 저장한다.
|
|
5
|
+
*
|
|
6
|
+
* 이 파일은 앱(src/index.css 가 @import)과 npm 라이브러리(dist/styles.css 빌드)가
|
|
7
|
+
* **함께** 사용한다. 토큰을 바꿀 땐 여기만 고치면 양쪽에 반영된다.
|
|
8
|
+
*/
|
|
9
|
+
:root {
|
|
10
|
+
--background: 248 250 252; /* #f8fafc */
|
|
11
|
+
--foreground: 29 41 61; /* #1d293d */
|
|
12
|
+
--card: 255 255 255; /* #ffffff */
|
|
13
|
+
--card-foreground: 2 6 24; /* #020618 */
|
|
14
|
+
--primary: 43 127 255; /* #2B7FFF */
|
|
15
|
+
--primary-foreground: 255 255 255; /* #ffffff */
|
|
16
|
+
--secondary: 226 232 240; /* #e2e8f0 */
|
|
17
|
+
--secondary-foreground: 49 65 88; /* #314158 */
|
|
18
|
+
--accent: 248 250 252; /* #f8fafc — Select/메뉴 항목 hover 배경 */
|
|
19
|
+
--accent-foreground: 43 127 255; /* #2b7fff — Select 항목 텍스트(primary 와 동일) */
|
|
20
|
+
--popover: 255 255 255; /* #ffffff — Select 드롭다운 패널 배경 */
|
|
21
|
+
--popover-foreground: 2 6 24; /* #020618 */
|
|
22
|
+
--destructive: 239 68 68; /* #ef4444 — Destructive 버튼 채움 + 폼 에러(Input border, Field error text) */
|
|
23
|
+
--destructive-foreground: 185 28 28; /* #b91c1c */
|
|
24
|
+
--success-foreground: 4 120 87; /* #047857 */
|
|
25
|
+
--muted-foreground: 15 23 43; /* #0f172b @ 50% → muted-foreground */
|
|
26
|
+
--border: 15 23 43; /* #0f172b @ 8% (border 토큰에서 알파 적용) */
|
|
27
|
+
--ring: 43 127 255; /* #2B7FFF — primary 와 동일 */
|
|
28
|
+
--disabled: 69 85 108; /* #45556c — Figma `disabled` 토큰. OTP active 슬롯 테두리/링 등 */
|
|
29
|
+
|
|
30
|
+
--radius: 10px;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* 다크 테마 — Figma "Dark Mode Preview" 기준 근사값(검증 전 TODO).
|
|
35
|
+
* 정확한 다크 토큰이 필요하면 해당 프레임에서 추가 추출 가능.
|
|
36
|
+
*/
|
|
37
|
+
.dark {
|
|
38
|
+
--background: 2 6 24;
|
|
39
|
+
--foreground: 248 250 252;
|
|
40
|
+
--card: 15 23 43;
|
|
41
|
+
--card-foreground: 248 250 252;
|
|
42
|
+
--primary: 43 127 255;
|
|
43
|
+
--primary-foreground: 255 255 255;
|
|
44
|
+
--secondary: 30 41 59;
|
|
45
|
+
--secondary-foreground: 248 250 252;
|
|
46
|
+
--accent: 30 41 59;
|
|
47
|
+
--accent-foreground: 43 127 255;
|
|
48
|
+
--popover: 15 23 43;
|
|
49
|
+
--popover-foreground: 248 250 252;
|
|
50
|
+
--destructive: 239 68 68;
|
|
51
|
+
--destructive-foreground: 248 113 113;
|
|
52
|
+
--success-foreground: 52 211 153; /* #34d399 (dark 근사) */
|
|
53
|
+
--muted-foreground: 148 163 184;
|
|
54
|
+
--border: 248 250 252;
|
|
55
|
+
--ring: 43 127 255;
|
|
56
|
+
--disabled: 69 85 108;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:after,:before{box-sizing:border-box;border:0 solid}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.absolute{position:absolute}.relative{position:relative}.inset-y-0{top:0;bottom:0}.left-0{left:0}.top-full{top:100%}.z-10{z-index:10}.z-50{z-index:50}.mt-1{margin-top:.25rem}.flex{display:flex}.inline-flex{display:inline-flex}.size-2{width:.5rem;height:.5rem}.size-2\.5{width:.625rem;height:.625rem}.size-4{width:1rem;height:1rem}.size-7{width:1.75rem;height:1.75rem}.size-8{width:2rem;height:2rem}.size-9{width:2.25rem;height:2.25rem}.size-\[18px\]{width:18px;height:18px}.h-0\.5{height:.125rem}.h-10{height:2.5rem}.h-2{height:.5rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.max-h-64{max-height:16rem}.w-1\.5{width:.375rem}.w-2{width:.5rem}.w-3{width:.75rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-0{min-width:0}.min-w-10{min-width:2.5rem}.min-w-6{min-width:1.5rem}.min-w-7{min-width:1.75rem}.min-w-8{min-width:2rem}.min-w-9{min-width:2.25rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-px{gap:1px}.overflow-auto{overflow:auto}.overflow-hidden,.truncate{overflow:hidden}.truncate{text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.\!rounded-none{border-radius:0!important}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-radius{border-radius:10px}.rounded-radius-lg{border-radius:8px}.rounded-radius-sm{border-radius:4px}.rounded-radius-xl{border-radius:12px}.border{border-width:1px}.border-border{border-color:rgb(var(--border)/.08)}.border-destructive{--tw-border-opacity:1;border-color:rgb(var(--destructive)/var(--tw-border-opacity,1))}.border-disabled\/30{border-color:rgb(var(--disabled)/.3)}.border-input{border-color:rgb(var(--border)/.08)}.border-primary{--tw-border-opacity:1;border-color:rgb(var(--primary)/var(--tw-border-opacity,1))}.border-transparent{border-color:transparent}.bg-background{--tw-bg-opacity:1;background-color:rgb(var(--background)/var(--tw-bg-opacity,1))}.bg-border{background-color:rgb(var(--border)/.08)}.bg-card{background-color:rgb(var(--card)/var(--tw-bg-opacity,1))}.bg-card,.bg-destructive{--tw-bg-opacity:1}.bg-destructive{background-color:rgb(var(--destructive)/var(--tw-bg-opacity,1))}.bg-input{background-color:rgb(var(--border)/.08)}.bg-popover{background-color:rgb(var(--popover)/var(--tw-bg-opacity,1))}.bg-popover,.bg-primary{--tw-bg-opacity:1}.bg-primary{background-color:rgb(var(--primary)/var(--tw-bg-opacity,1))}.bg-primary\/\[0\.04\]{background-color:rgb(var(--primary)/.04)}.bg-secondary{--tw-bg-opacity:1;background-color:rgb(var(--secondary)/var(--tw-bg-opacity,1))}.bg-transparent{background-color:transparent}.p-1{padding:.25rem}.p-2{padding:.5rem}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.text-left{text-align:left}.text-center{text-align:center}.text-base{font-size:16px;line-height:24px}.text-sm{font-size:14px;line-height:20px}.text-xs{font-size:12px;line-height:14px;letter-spacing:.12px}.font-medium{font-weight:500}.leading-5{line-height:1.25rem}.leading-\[14px\]{line-height:14px}.tracking-\[0\.12px\]{letter-spacing:.12px}.text-accent-foreground{--tw-text-opacity:1;color:rgb(var(--accent-foreground)/var(--tw-text-opacity,1))}.text-destructive-foreground{--tw-text-opacity:1;color:rgb(var(--destructive-foreground)/var(--tw-text-opacity,1))}.text-foreground{--tw-text-opacity:1;color:rgb(var(--foreground)/var(--tw-text-opacity,1))}.text-muted-foreground{color:rgb(var(--muted-foreground)/.5)}.text-primary-foreground{--tw-text-opacity:1;color:rgb(var(--primary-foreground)/var(--tw-text-opacity,1))}.underline-offset-4{text-underline-offset:4px}.accent-foreground{accent-color:rgb(var(--foreground)/1)}.opacity-50{opacity:.5}.opacity-80{opacity:.8}.opacity-\[0\.64\]{opacity:.64}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-btn{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-btn{--tw-shadow:0 1px 1px rgba(38,38,38,.24),inset 0 1px 0 hsla(0,0%,100%,.16);--tw-shadow-colored:0 1px 1px var(--tw-shadow-color),inset 0 1px 0 var(--tw-shadow-color)}.shadow-popover{--tw-shadow:0px 10px 15px -3px rgba(0,0,0,.05),0px 4px 6px -4px rgba(0,0,0,.05);--tw-shadow-colored:0px 10px 15px -3px var(--tw-shadow-color),0px 4px 6px -4px var(--tw-shadow-color)}.shadow-popover,.shadow-xs{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-popover{--tw-shadow-color:rgb(var(--popover)/1);--tw-shadow:var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring,.ring-\[3px\]{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-disabled\/20{--tw-ring-color:rgb(var(--disabled)/0.2)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-\[color\2c box-shadow\]{transition-property:color,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.placeholder\:text-muted-foreground::-moz-placeholder{color:rgb(var(--muted-foreground)/.5)}.placeholder\:text-muted-foreground::placeholder{color:rgb(var(--muted-foreground)/.5)}.focus-within\:border-disabled\/30:focus-within{border-color:rgb(var(--disabled)/.3)}.focus-within\:ring-\[3px\]:focus-within{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:ring-destructive\/\[0\.15\]:focus-within{--tw-ring-color:rgb(var(--destructive)/0.15)}.focus-within\:ring-disabled\/\[0\.07\]:focus-within{--tw-ring-color:rgb(var(--disabled)/0.07)}.focus-within\:ring-offset-0:focus-within{--tw-ring-offset-width:0px}.hover\:bg-accent:hover{--tw-bg-opacity:1;background-color:rgb(var(--accent)/var(--tw-bg-opacity,1))}.hover\:bg-destructive\/10:hover{background-color:rgb(var(--destructive)/.1)}.hover\:bg-destructive\/90:hover{background-color:rgb(var(--destructive)/.9)}.hover\:bg-primary\/90:hover{background-color:rgb(var(--primary)/.9)}.hover\:bg-secondary:hover{--tw-bg-opacity:1;background-color:rgb(var(--secondary)/var(--tw-bg-opacity,1))}.hover\:bg-secondary\/50:hover{background-color:rgb(var(--secondary)/.5)}.hover\:bg-secondary\/80:hover{background-color:rgb(var(--secondary)/.8)}.hover\:underline:hover{text-decoration-line:underline}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-disabled\/30:focus-visible{border-color:rgb(var(--disabled)/.3)}.focus-visible\:bg-accent:focus-visible{--tw-bg-opacity:1;background-color:rgb(var(--accent)/var(--tw-bg-opacity,1))}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-destructive\/\[0\.15\]:focus-visible{--tw-ring-color:rgb(var(--destructive)/0.15)}.focus-visible\:ring-disabled\/\[0\.07\]:focus-visible{--tw-ring-color:rgb(var(--disabled)/0.07)}.focus-visible\:ring-ring:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(var(--ring)/var(--tw-ring-opacity,1))}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:rgb(var(--background)/1)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-\[0\.64\]:disabled{opacity:.64}.peer:focus-visible~.peer-focus-visible\:ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.peer:focus-visible~.peer-focus-visible\:ring-ring{--tw-ring-opacity:1;--tw-ring-color:rgb(var(--ring)/var(--tw-ring-opacity,1))}.peer:focus-visible~.peer-focus-visible\:ring-offset-1{--tw-ring-offset-width:1px}.peer:focus-visible~.peer-focus-visible\:ring-offset-background{--tw-ring-offset-color:rgb(var(--background)/1)}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.has-\[\:disabled\]\:cursor-not-allowed:has(:disabled){cursor:not-allowed}.has-\[\:disabled\]\:opacity-\[0\.64\]:has(:disabled){opacity:.64}.data-\[state\=on\]\:bg-secondary\/\[0\.64\][data-state=on]{background-color:rgb(var(--secondary)/.64)}.data-\[state\=off\]\:hover\:bg-card\/50:hover[data-state=off]{background-color:rgb(var(--card)/.5)}.\[\&\>\*\:not\(\:first-child\)\]\:-ml-px>:not(:first-child){margin-left:-1px}.\[\&\>\*\:not\(\:first-child\)\]\:-mt-px>:not(:first-child){margin-top:-1px}.\[\&_\[data-label\]\]\:px-1\.5 [data-label]{padding-left:.375rem;padding-right:.375rem}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:size-5 svg{width:1.25rem;height:1.25rem}.\[\&_svg\]\:size-\[18px\] svg{width:18px;height:18px}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}
|
package/package.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "bo-ui-kit",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "BO UI Kit — Figma 디자인 시스템에서 추출한 React 컴포넌트 라이브러리 (Tailwind 토큰 기반).",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"workspaces": [
|
|
8
|
+
"examples/consumer"
|
|
9
|
+
],
|
|
10
|
+
"sideEffects": [
|
|
11
|
+
"**/*.css"
|
|
12
|
+
],
|
|
13
|
+
"main": "./dist/index.cjs",
|
|
14
|
+
"module": "./dist/index.js",
|
|
15
|
+
"types": "./dist/components/ui/index.d.ts",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./dist/components/ui/index.d.ts",
|
|
19
|
+
"import": "./dist/index.js",
|
|
20
|
+
"require": "./dist/index.cjs"
|
|
21
|
+
},
|
|
22
|
+
"./styles.css": "./dist/styles.css"
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"dist"
|
|
26
|
+
],
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"dev": "vite",
|
|
32
|
+
"build": "tsc -b && vite build",
|
|
33
|
+
"preview": "vite preview",
|
|
34
|
+
"typecheck": "tsc --noEmit",
|
|
35
|
+
"verify": "tsc --noEmit && vite build",
|
|
36
|
+
"build:lib": "node scripts/build-lib.mjs",
|
|
37
|
+
"prepack": "node scripts/build-lib.mjs",
|
|
38
|
+
"pack:test": "node scripts/pack-test.mjs",
|
|
39
|
+
"check:figma": "node --env-file-if-exists=.env scripts/check-figma-version.mjs",
|
|
40
|
+
"test:visual": "playwright test",
|
|
41
|
+
"test:visual:update": "playwright test --update-snapshots"
|
|
42
|
+
},
|
|
43
|
+
"peerDependencies": {
|
|
44
|
+
"react": ">=18",
|
|
45
|
+
"react-dom": ">=18"
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"class-variance-authority": "^0.7.1",
|
|
49
|
+
"clsx": "^2.1.1",
|
|
50
|
+
"tailwind-merge": "^2.5.5"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@playwright/test": "^1.60.0",
|
|
54
|
+
"@types/react": "^18.3.12",
|
|
55
|
+
"@types/react-dom": "^18.3.1",
|
|
56
|
+
"@vitejs/plugin-react": "^4.3.4",
|
|
57
|
+
"autoprefixer": "^10.4.20",
|
|
58
|
+
"postcss": "^8.4.49",
|
|
59
|
+
"react": "^18.3.1",
|
|
60
|
+
"react-dom": "^18.3.1",
|
|
61
|
+
"tailwindcss": "^3.4.17",
|
|
62
|
+
"typescript": "^5.6.3",
|
|
63
|
+
"vite": "^5.4.11"
|
|
64
|
+
}
|
|
65
|
+
}
|