@petnow/ui 4.1.8 → 5.0.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.
Files changed (45) hide show
  1. package/CHANGELOG.md +89 -0
  2. package/README.md +68 -54
  3. package/dist/{Popup-BCBW_e8Q.js → Popup-B2Q-le-6.js} +5 -4
  4. package/dist/Popup-B2Q-le-6.js.map +1 -0
  5. package/dist/index.css +130 -2
  6. package/dist/index.es.js +1 -1
  7. package/dist/v0/checkbox.js +1 -0
  8. package/dist/v0/checkbox.js.map +1 -1
  9. package/dist/v0/radio.js +2 -1
  10. package/dist/v0/radio.js.map +1 -1
  11. package/dist/v0/tabs.js +38 -26
  12. package/dist/v0/tabs.js.map +1 -1
  13. package/dist/v0/toggle.js +1 -0
  14. package/dist/v0/toggle.js.map +1 -1
  15. package/dist/v1/popup.js +1 -1
  16. package/dist/v1/text-field.js.map +1 -1
  17. package/docs/adr/0001-v5-consumer-owned-tailwind-and-no-global-leaks.md +42 -0
  18. package/docs/migration/v4-to-v5.md +209 -0
  19. package/package.json +15 -22
  20. package/petnow-design-system-v1.css +3 -76
  21. package/tailwind.css +144 -230
  22. package/dist/Popup-BCBW_e8Q.js.map +0 -1
  23. package/dist/jest.setup.d.ts +0 -0
  24. package/dist/src/App.d.ts +0 -2
  25. package/dist/src/components/ui/button.d.ts +0 -9
  26. package/dist/src/components/v0/checkbox/Checkbox.stories.d.ts +0 -6
  27. package/dist/src/components/v0/radio/Radio.stories.d.ts +0 -8
  28. package/dist/src/components/v0/tabs/Tabs.stories.d.ts +0 -7
  29. package/dist/src/components/v0/toggle/Toggle.stories.d.ts +0 -6
  30. package/dist/src/components/v1/badge/Badge.stories.d.ts +0 -10
  31. package/dist/src/components/v1/chip/Chip.stories.d.ts +0 -10
  32. package/dist/src/components/v1/cta-button/CTAButton.stories.d.ts +0 -11
  33. package/dist/src/components/v1/popup/Popup.stories.d.ts +0 -11
  34. package/dist/src/components/v1/text-field/TextField.stories.d.ts +0 -11
  35. package/dist/src/main.d.ts +0 -0
  36. package/dist/test/v0/Checkbox.test.d.ts +0 -1
  37. package/dist/test/v0/Radio.test.d.ts +0 -1
  38. package/dist/test/v0/Tabs.test.d.ts +0 -1
  39. package/dist/test/v0/Toggle.test.d.ts +0 -1
  40. package/dist/test/v1/Badge.test.d.ts +0 -1
  41. package/dist/test/v1/CTAButton.test.d.ts +0 -1
  42. package/dist/test/v1/Chip.test.d.ts +0 -1
  43. package/dist/test/v1/Popup.test.d.ts +0 -1
  44. package/dist/test/v1/TextField.test.d.ts +0 -1
  45. package/dist/vite.svg +0 -1
package/package.json CHANGED
@@ -1,38 +1,23 @@
1
1
  {
2
2
  "name": "@petnow/ui",
3
- "version": "4.1.8",
3
+ "version": "5.0.0",
4
4
  "type": "module",
5
5
  "packageManager": "pnpm@11.1.3",
6
- "engines": {
7
- "node": ">=22.13.0 <23",
8
- "pnpm": "11.1.3"
9
- },
10
6
  "scripts": {
11
- "dev": "vite",
12
- "build": "tsc && vite build && npm run tailwind",
13
- "tailwind": "npx @tailwindcss/cli -i ./src/index.css -o ./dist/index.css --minify",
7
+ "build": "tsc && vite build && pnpm run build:css",
8
+ "build:css": "node -e \"require('fs').copyFileSync('src/styles/components.css', 'dist/index.css')\"",
14
9
  "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
15
10
  "lint:fix": "eslint . --ext ts,tsx --fix",
16
- "preview": "vite preview",
17
11
  "storybook": "storybook dev -p 6006",
18
12
  "build-storybook": "storybook build",
19
13
  "format": "prettier . --check",
20
14
  "format:fix": "prettier . --write"
21
15
  },
22
16
  "dependencies": {
23
- "@headlessui/react": "^2.2.9",
24
- "@types/react-swipeable-views": "^0.13.6",
25
17
  "class-variance-authority": "^0.7.1",
26
18
  "clsx": "^2.1.1",
27
- "date-fns": "^4.4.0",
28
19
  "keen-slider": "^6.8.6",
29
- "lucide-react": "^1.17.0",
30
20
  "radix-ui": "^1.4.3",
31
- "react-datepicker": "^8.3.0",
32
- "react-daum-postcode": "^4.0.0",
33
- "react-icons": "^5.6.0",
34
- "react-swipeable-views": "^0.14.1",
35
- "shadcn": "^4.11.0",
36
21
  "tailwind-merge": "^3.6.0",
37
22
  "tw-animate-css": "^1.4.0"
38
23
  },
@@ -63,24 +48,29 @@
63
48
  "jest": "^30.3.0",
64
49
  "jest-environment-jsdom": "^30.4.1",
65
50
  "jest-transformer-svg": "^2.1.0",
51
+ "magic-string": "^0.30.21",
66
52
  "postcss": "^8.5.10",
67
53
  "prettier": "^3.6.2",
68
54
  "prettier-plugin-tailwindcss": "^0.6.14",
69
55
  "react": "^19.2.7",
70
56
  "react-dom": "^19.2.7",
71
- "storybook": "10.4.1",
57
+ "storybook": "10.6.2",
72
58
  "tailwindcss": "^4.1.14",
73
59
  "ts-jest": "^29.4.6",
74
60
  "typescript": "^5.7.2",
75
- "vite": "^8.0.16",
61
+ "vite": "^8.1.6",
76
62
  "vite-plugin-dts": "^5.0.1"
77
63
  },
78
64
  "peerDependencies": {
79
65
  "react": "^19.0.0",
80
- "react-dom": "^19.0.0"
66
+ "react-dom": "^19.0.0",
67
+ "tailwindcss": "^4.1.0"
81
68
  },
82
69
  "main": "dist/index.es.js",
83
70
  "types": "dist/index.d.ts",
71
+ "sideEffects": [
72
+ "**/*.css"
73
+ ],
84
74
  "exports": {
85
75
  ".": {
86
76
  "types": "./dist/index.d.ts",
@@ -186,7 +176,10 @@
186
176
  "files": [
187
177
  "dist",
188
178
  "tailwind.css",
189
- "petnow-design-system-v1.css"
179
+ "petnow-design-system-v1.css",
180
+ "CHANGELOG.md",
181
+ "docs/adr",
182
+ "docs/migration"
190
183
  ],
191
184
  "publishConfig": {
192
185
  "access": "public"
@@ -1,30 +1,5 @@
1
1
  @layer base {
2
2
  :root {
3
- --background: 0 0% 100%;
4
- --foreground: 0 0% 3.9%;
5
- --card: 0 0% 100%;
6
- --card-foreground: 0 0% 3.9%;
7
- --popover: 0 0% 100%;
8
- --popover-foreground: 0 0% 3.9%;
9
- --primary: 0 0% 9%;
10
- --primary-foreground: 0 0% 98%;
11
- --secondary: 0 0% 96.1%;
12
- --secondary-foreground: 0 0% 9%;
13
- --muted: 0 0% 96.1%;
14
- --muted-foreground: 0 0% 45.1%;
15
- --accent: 0 0% 96.1%;
16
- --accent-foreground: 0 0% 9%;
17
- --destructive: 0 84.2% 60.2%;
18
- --border: 0 0% 89.8%;
19
- --input: 0 0% 89.8%;
20
- --ring: 0 0% 63%;
21
- --radius: 0.625rem;
22
- --chart-1: 12 76% 61%;
23
- --chart-2: 173 58% 39%;
24
- --chart-3: 197 37% 24%;
25
- --chart-4: 43 74% 66%;
26
- --chart-5: 27 87% 67%;
27
-
28
3
  /* Ref Color */
29
4
 
30
5
  --petnow-main-0: #0a0b0c;
@@ -402,57 +377,9 @@
402
377
  --color-neutral-grey-95: var(--neutral-grey-95);
403
378
  --color-neutral-grey-100: var(--neutral-grey-100);
404
379
 
405
- --color-red-0: var(--red-0);
406
- --color-red-10: var(--red-10);
407
- --color-red-20: var(--red-20);
408
- --color-red-30: var(--red-30);
409
- --color-red-40: var(--red-40);
410
- --color-red-50: var(--red-50);
411
- --color-red-60: var(--red-60);
412
- --color-red-70: var(--red-70);
413
- --color-red-80: var(--red-80);
414
- --color-red-90: var(--red-90);
415
- --color-red-95: var(--red-95);
416
- --color-red-100: var(--red-100);
417
-
418
- --color-purple-0: var(--purple-0);
419
- --color-purple-10: var(--purple-10);
420
- --color-purple-20: var(--purple-20);
421
- --color-purple-30: var(--purple-30);
422
- --color-purple-40: var(--purple-40);
423
- --color-purple-50: var(--purple-50);
424
- --color-purple-60: var(--purple-60);
425
- --color-purple-70: var(--purple-70);
426
- --color-purple-80: var(--purple-80);
427
- --color-purple-90: var(--purple-90);
428
- --color-purple-95: var(--purple-95);
429
- --color-purple-100: var(--purple-100);
430
-
431
- --color-green-0: var(--green-0);
432
- --color-green-10: var(--green-10);
433
- --color-green-20: var(--green-20);
434
- --color-green-30: var(--green-30);
435
- --color-green-40: var(--green-40);
436
- --color-green-50: var(--green-50);
437
- --color-green-60: var(--green-60);
438
- --color-green-70: var(--green-70);
439
- --color-green-80: var(--green-80);
440
- --color-green-90: var(--green-90);
441
- --color-green-95: var(--green-95);
442
- --color-green-100: var(--green-100);
443
-
444
- --color-yellow-0: var(--yellow-0);
445
- --color-yellow-10: var(--yellow-10);
446
- --color-yellow-20: var(--yellow-20);
447
- --color-yellow-30: var(--yellow-30);
448
- --color-yellow-40: var(--yellow-40);
449
- --color-yellow-50: var(--yellow-50);
450
- --color-yellow-60: var(--yellow-60);
451
- --color-yellow-70: var(--yellow-70);
452
- --color-yellow-80: var(--yellow-80);
453
- --color-yellow-90: var(--yellow-90);
454
- --color-yellow-95: var(--yellow-95);
455
- --color-yellow-100: var(--yellow-100);
380
+ /* red, green, purple and yellow are not mapped to --color-*: their names would
381
+ override Tailwind's default palette (e.g. red-50, red-100) in consumer apps.
382
+ Use the semantic colors, or the raw vars, e.g. bg-(--red-95). */
456
383
  }
457
384
 
458
385
  /* Semantic tokens must be `inline`: utilities then reference the underlying
package/tailwind.css CHANGED
@@ -1,71 +1,84 @@
1
- @import "tailwindcss";
1
+ /*
2
+ @petnow/ui Tailwind entry.
3
+
4
+ Import this after your own `@import "tailwindcss"`. It adds the package's
5
+ tokens and utilities to your Tailwind build and registers the package's
6
+ `dist` as a source, so your build generates the classes our components use.
7
+ It does not import Tailwind and does not set fonts, base styles, shadcn
8
+ variables, or a dark-mode strategy; those belong to your app.
9
+ */
2
10
 
3
11
  @import "./petnow-design-system-v1.css";
4
12
 
5
13
  @import "tw-animate-css";
6
14
 
7
- @import "shadcn/tailwind.css";
8
-
9
- @custom-variant dark (&:is(.dark *));
15
+ @source "./dist/**/*.js";
10
16
 
17
+ /*
18
+ v0 tokens: deprecated. Use the v1 tokens in petnow-design-system-v1.css
19
+ (`petnow-main-*`, `petnow-sub-*`, `neutral-grey-*`, semantic colors, and
20
+ `text-<role>-<size>-<weight>` typography). Steps that exist in v1 resolve to
21
+ the v1 value; v0-only steps keep their own value.
22
+ */
11
23
  @theme {
12
24
  --background-image-gradient-radial: radial-gradient(var(--tw-gradient-stops));
13
25
  --background-image-gradient-conic: conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops));
14
26
 
15
- --color-petnow-orange-0: #0a0b0c;
16
- --color-petnow-orange-10: #3b1b12;
17
- --color-petnow-orange-20: #6c2a19;
18
- --color-petnow-orange-30: #9d3a1f;
19
- --color-petnow-orange-40: #ce4926;
20
- --color-petnow-orange-50: #ff592c;
21
- --color-petnow-orange-60: #ff7a56;
22
- --color-petnow-orange-70: #ff9b80;
23
- --color-petnow-orange-80: #ffbdab;
24
- --color-petnow-orange-90: #ffded5;
25
- --color-petnow-orange-95: #ffeeea;
27
+ --color-petnow-orange-0: var(--petnow-main-0);
28
+ --color-petnow-orange-10: var(--petnow-main-10);
29
+ --color-petnow-orange-20: var(--petnow-main-20);
30
+ --color-petnow-orange-30: var(--petnow-main-30);
31
+ --color-petnow-orange-40: var(--petnow-main-40);
32
+ --color-petnow-orange-50: var(--petnow-main-50);
33
+ --color-petnow-orange-60: var(--petnow-main-60);
34
+ --color-petnow-orange-70: var(--petnow-main-70);
35
+ --color-petnow-orange-80: var(--petnow-main-80);
36
+ --color-petnow-orange-90: var(--petnow-main-90);
37
+ --color-petnow-orange-95: var(--petnow-main-95);
26
38
  --color-petnow-orange-99: #fff7f4;
27
- --color-petnow-orange-100: #ffffff;
28
- --color-petnow-orange-primary: #ff592c;
29
- --color-petnow-orange-secondary: #ffeeea;
39
+ --color-petnow-orange-100: var(--petnow-main-100);
40
+ --color-petnow-orange-primary: var(--petnow-main-50);
41
+ --color-petnow-orange-secondary: var(--petnow-main-95);
30
42
  --color-petnow-orange-tertiary: #fff7f4;
31
43
 
32
- --color-petnow-blue-0: #0a0b0c;
33
- --color-petnow-blue-10: #152437;
34
- --color-petnow-blue-20: #213d63;
35
- --color-petnow-blue-30: #2c578e;
36
- --color-petnow-blue-40: #3870ba;
37
- --color-petnow-blue-50: #4389e5;
38
- --color-petnow-blue-60: #69a1ea;
39
- --color-petnow-blue-70: #8eb8ef;
40
- --color-petnow-blue-80: #b4d0f5;
41
- --color-petnow-blue-90: #d9e7fa;
42
- --color-petnow-blue-95: #ecf3fc;
44
+ --color-petnow-blue-0: var(--petnow-sub-0);
45
+ --color-petnow-blue-10: var(--petnow-sub-10);
46
+ --color-petnow-blue-20: var(--petnow-sub-20);
47
+ --color-petnow-blue-30: var(--petnow-sub-30);
48
+ --color-petnow-blue-40: var(--petnow-sub-40);
49
+ --color-petnow-blue-50: var(--petnow-sub-50);
50
+ --color-petnow-blue-60: var(--petnow-sub-60);
51
+ --color-petnow-blue-70: var(--petnow-sub-70);
52
+ --color-petnow-blue-80: var(--petnow-sub-80);
53
+ --color-petnow-blue-90: var(--petnow-sub-90);
54
+ --color-petnow-blue-95: var(--petnow-sub-95);
43
55
  --color-petnow-blue-99: #f6f9fe;
44
- --color-petnow-blue-100: #ffffff;
45
- --color-petnow-blue-primary: #4389e5;
46
- --color-petnow-blue-secondary: #ecf3fc;
56
+ --color-petnow-blue-100: var(--petnow-sub-100);
57
+ --color-petnow-blue-primary: var(--petnow-sub-50);
58
+ --color-petnow-blue-secondary: var(--petnow-sub-95);
47
59
  --color-petnow-blue-tertiary: #f6f9fe;
48
60
 
49
- --color-petnow-red-50: #ff4055;
50
- --color-petnow-red-95: #ffecf1;
61
+ --color-petnow-red-50: var(--red-50);
62
+ --color-petnow-red-95: var(--red-95);
51
63
  --color-petnow-red-99: #fff5f8;
52
- --color-petnow-red-primary: #ff4055;
64
+ --color-petnow-red-primary: var(--red-50);
53
65
 
54
- --color-petnow-green-50: #42d48e;
55
- --color-petnow-green-95: #ecfbf4;
66
+ --color-petnow-green-50: var(--green-50);
67
+ --color-petnow-green-95: var(--green-95);
56
68
  --color-petnow-green-99: #f6fdf9;
57
- --color-petnow-green-primary: #42d48e;
69
+ --color-petnow-green-primary: var(--green-50);
58
70
 
59
- --color-petnow-purple-50: #af50dc;
60
- --color-petnow-purple-95: #f7edfb;
71
+ --color-petnow-purple-50: var(--purple-50);
72
+ --color-petnow-purple-95: var(--purple-95);
61
73
  --color-petnow-purple-99: #fbf6fd;
62
- --color-petnow-purple-primary: #af50dc;
74
+ --color-petnow-purple-primary: var(--purple-50);
63
75
 
64
- --color-petnow-yellow-50: #ffd22d;
65
- --color-petnow-yellow-95: #fff8e0;
76
+ --color-petnow-yellow-50: var(--yellow-50);
77
+ --color-petnow-yellow-95: var(--yellow-95);
66
78
  --color-petnow-yellow-99: #fffbeb;
67
- --color-petnow-yellow-primary: #ffd22d;
79
+ --color-petnow-yellow-primary: var(--yellow-50);
68
80
 
81
+ /* A separate grey ramp from v1 `neutral-grey-*`; the values are not the same. */
69
82
  --color-petnow-grey-0: #0a0b0c;
70
83
  --color-petnow-grey-10: #16181a;
71
84
  --color-petnow-grey-20: #2c2f34;
@@ -87,24 +100,7 @@
87
100
  --color-background-secondary: #f8f8f9;
88
101
  --color-background-tertiary: #f0f1f2;
89
102
 
90
- --color-black: #2c2f34;
91
- --color-error: #ff323e;
92
-
93
- --text-display-large: font-bold text-[34px] leading-[46px] tracking-normal;
94
- --text-display-medium: font-bold text-[28px] leading-[38px] tracking-normal;
95
- --text-title-large: font-bold text-[24px] leading-[34px] tracking-normal;
96
- --text-title-medium: font-bold text-[20px] leading-[30px] tracking-normal;
97
- --text-title-small: font-bold text-[18px] leading-[26px] tracking-normal;
98
- --text-label-large: font-bold text-[16px] leading-[24px] tracking-normal;
99
- --text-label-medium: font-bold text-[14px] leading-[22px] tracking-normal;
100
- --text-label-small: font-bold text-[12px] leading-[18px] tracking-normal;
101
- --text-body-large: font-medium text-[16px] leading-[24px] tracking-normal;
102
- --text-body-medium: font-medium text-[14px] leading-[22px] tracking-normal;
103
- --text-body-small: font-medium text-[12px] leading-[18px] tracking-normal;
104
- --text-caption-large: font-normal text-[16px] leading-[24px] tracking-normal;
105
- --text-caption-medium: font-normal text-[14px] leading-[22px] tracking-normal;
106
- --text-caption-small: font-normal text-[12px] leading-[18px] tracking-normal;
107
- --text-badge: font-medium text-[11px] leading-[16px] tracking-normal;
103
+ --color-error: var(--red-50);
108
104
 
109
105
  @keyframes shimmer {
110
106
  100% {
@@ -113,176 +109,94 @@
113
109
  }
114
110
  }
115
111
 
116
- @layer utilities {
117
- .text-display-large {
118
- @apply text-[34px] leading-[46px] font-bold tracking-normal;
119
- }
120
- .text-display-medium {
121
- @apply text-[28px] leading-[38px] font-bold tracking-normal;
122
- }
123
- .text-title-large {
124
- @apply text-[24px] leading-[34px] font-bold tracking-normal;
125
- }
126
- .text-title-medium {
127
- @apply text-[20px] leading-[30px] font-bold tracking-normal;
128
- }
129
- .text-title-small {
130
- @apply text-[18px] leading-[26px] font-bold tracking-normal;
131
- }
132
- .text-label-large {
133
- @apply text-[16px] leading-[24px] font-bold tracking-normal;
134
- }
135
- .text-label-medium {
136
- @apply text-[14px] leading-[22px] font-bold tracking-normal;
137
- }
138
- .text-label-small {
139
- @apply text-[12px] leading-[18px] font-bold tracking-normal;
140
- }
141
- .text-body-large {
142
- @apply text-[16px] leading-[24px] font-medium tracking-normal;
143
- }
144
- .text-body-medium {
145
- @apply text-[14px] leading-[22px] font-medium tracking-normal;
146
- }
147
- .text-body-small {
148
- @apply text-[12px] leading-[18px] font-medium tracking-normal;
149
- }
150
- .text-caption-large {
151
- @apply text-[16px] leading-[24px] font-normal tracking-normal;
152
- }
153
- .text-caption-medium {
154
- @apply text-[14px] leading-[22px] font-normal tracking-normal;
155
- }
156
- .text-caption-small {
157
- @apply text-[12px] leading-[18px] font-normal tracking-normal;
158
- }
159
- .text-badge {
160
- @apply text-[11px] leading-[16px] font-medium tracking-normal;
161
- }
112
+ /* v0 typography: deprecated. Use the v1 `text-<role>-<size>-<weight>` utilities. */
113
+ @utility text-display-large {
114
+ font-size: 34px;
115
+ line-height: 46px;
116
+ font-weight: 700;
117
+ letter-spacing: 0;
162
118
  }
163
-
164
- :root {
165
- --background: oklch(1 0 0);
166
- --foreground: oklch(0.145 0 0);
167
- --card: oklch(1 0 0);
168
- --card-foreground: oklch(0.145 0 0);
169
- --popover: oklch(1 0 0);
170
- --popover-foreground: oklch(0.145 0 0);
171
- --primary: oklch(0.205 0 0);
172
- --primary-foreground: oklch(0.985 0 0);
173
- --secondary: oklch(0.97 0 0);
174
- --secondary-foreground: oklch(0.205 0 0);
175
- --muted: oklch(0.97 0 0);
176
- --muted-foreground: oklch(0.556 0 0);
177
- --accent: oklch(0.97 0 0);
178
- --accent-foreground: oklch(0.205 0 0);
179
- --destructive: oklch(0.577 0.245 27.325);
180
- --border: oklch(0.922 0 0);
181
- --input: oklch(0.922 0 0);
182
- --ring: oklch(0.708 0 0);
183
- --chart-1: oklch(0.809 0.105 251.813);
184
- --chart-2: oklch(0.623 0.214 259.815);
185
- --chart-3: oklch(0.546 0.245 262.881);
186
- --chart-4: oklch(0.488 0.243 264.376);
187
- --chart-5: oklch(0.424 0.199 265.638);
188
- --radius: 0.625rem;
189
- --sidebar: oklch(0.985 0 0);
190
- --sidebar-foreground: oklch(0.145 0 0);
191
- --sidebar-primary: oklch(0.205 0 0);
192
- --sidebar-primary-foreground: oklch(0.985 0 0);
193
- --sidebar-accent: oklch(0.97 0 0);
194
- --sidebar-accent-foreground: oklch(0.205 0 0);
195
- --sidebar-border: oklch(0.922 0 0);
196
- --sidebar-ring: oklch(0.708 0 0);
119
+ @utility text-display-medium {
120
+ font-size: 28px;
121
+ line-height: 38px;
122
+ font-weight: 700;
123
+ letter-spacing: 0;
197
124
  }
198
-
199
- .dark {
200
- --background: oklch(0.145 0 0);
201
- --foreground: oklch(0.985 0 0);
202
- --card: oklch(0.205 0 0);
203
- --card-foreground: oklch(0.985 0 0);
204
- --popover: oklch(0.205 0 0);
205
- --popover-foreground: oklch(0.985 0 0);
206
- --primary: oklch(0.922 0 0);
207
- --primary-foreground: oklch(0.205 0 0);
208
- --secondary: oklch(0.269 0 0);
209
- --secondary-foreground: oklch(0.985 0 0);
210
- --muted: oklch(0.269 0 0);
211
- --muted-foreground: oklch(0.708 0 0);
212
- --accent: oklch(0.269 0 0);
213
- --accent-foreground: oklch(0.985 0 0);
214
- --destructive: oklch(0.704 0.191 22.216);
215
- --border: oklch(1 0 0 / 10%);
216
- --input: oklch(1 0 0 / 15%);
217
- --ring: oklch(0.556 0 0);
218
- --chart-1: oklch(0.809 0.105 251.813);
219
- --chart-2: oklch(0.623 0.214 259.815);
220
- --chart-3: oklch(0.546 0.245 262.881);
221
- --chart-4: oklch(0.488 0.243 264.376);
222
- --chart-5: oklch(0.424 0.199 265.638);
223
- --sidebar: oklch(0.205 0 0);
224
- --sidebar-foreground: oklch(0.985 0 0);
225
- --sidebar-primary: oklch(0.488 0.243 264.376);
226
- --sidebar-primary-foreground: oklch(0.985 0 0);
227
- --sidebar-accent: oklch(0.269 0 0);
228
- --sidebar-accent-foreground: oklch(0.985 0 0);
229
- --sidebar-border: oklch(1 0 0 / 10%);
230
- --sidebar-ring: oklch(0.556 0 0);
125
+ @utility text-title-large {
126
+ font-size: 24px;
127
+ line-height: 34px;
128
+ font-weight: 700;
129
+ letter-spacing: 0;
231
130
  }
232
-
233
- @theme inline {
234
- --font-sans:
235
- "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Roboto, "Helvetica Neue",
236
- "Segoe UI", "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", "Apple Color Emoji", "Segoe UI Emoji",
237
- "Segoe UI Symbol", sans-serif;
238
- --color-sidebar-ring: var(--sidebar-ring);
239
- --color-sidebar-border: var(--sidebar-border);
240
- --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
241
- --color-sidebar-accent: var(--sidebar-accent);
242
- --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
243
- --color-sidebar-primary: var(--sidebar-primary);
244
- --color-sidebar-foreground: var(--sidebar-foreground);
245
- --color-sidebar: var(--sidebar);
246
- --color-chart-5: var(--chart-5);
247
- --color-chart-4: var(--chart-4);
248
- --color-chart-3: var(--chart-3);
249
- --color-chart-2: var(--chart-2);
250
- --color-chart-1: var(--chart-1);
251
- --color-ring: var(--ring);
252
- --color-input: var(--input);
253
- --color-border: var(--border);
254
- --color-destructive: var(--destructive);
255
- --color-accent-foreground: var(--accent-foreground);
256
- --color-accent: var(--accent);
257
- --color-muted-foreground: var(--muted-foreground);
258
- --color-muted: var(--muted);
259
- --color-secondary-foreground: var(--secondary-foreground);
260
- --color-secondary: var(--secondary);
261
- --color-primary-foreground: var(--primary-foreground);
262
- --color-primary: var(--primary);
263
- --color-popover-foreground: var(--popover-foreground);
264
- --color-popover: var(--popover);
265
- --color-card-foreground: var(--card-foreground);
266
- --color-card: var(--card);
267
- --color-foreground: var(--foreground);
268
- --color-background: var(--background);
269
- --radius-sm: calc(var(--radius) * 0.6);
270
- --radius-md: calc(var(--radius) * 0.8);
271
- --radius-lg: var(--radius);
272
- --radius-xl: calc(var(--radius) * 1.4);
273
- --radius-2xl: calc(var(--radius) * 1.8);
274
- --radius-3xl: calc(var(--radius) * 2.2);
275
- --radius-4xl: calc(var(--radius) * 2.6);
131
+ @utility text-title-medium {
132
+ font-size: 20px;
133
+ line-height: 30px;
134
+ font-weight: 700;
135
+ letter-spacing: 0;
276
136
  }
277
-
278
- @layer base {
279
- * {
280
- @apply border-border outline-ring/50;
281
- }
282
- body {
283
- @apply bg-background text-foreground;
284
- }
285
- html {
286
- @apply font-sans;
287
- }
137
+ @utility text-title-small {
138
+ font-size: 18px;
139
+ line-height: 26px;
140
+ font-weight: 700;
141
+ letter-spacing: 0;
142
+ }
143
+ @utility text-label-large {
144
+ font-size: 16px;
145
+ line-height: 24px;
146
+ font-weight: 700;
147
+ letter-spacing: 0;
148
+ }
149
+ @utility text-label-medium {
150
+ font-size: 14px;
151
+ line-height: 22px;
152
+ font-weight: 700;
153
+ letter-spacing: 0;
154
+ }
155
+ @utility text-label-small {
156
+ font-size: 12px;
157
+ line-height: 18px;
158
+ font-weight: 700;
159
+ letter-spacing: 0;
160
+ }
161
+ @utility text-body-large {
162
+ font-size: 16px;
163
+ line-height: 24px;
164
+ font-weight: 500;
165
+ letter-spacing: 0;
166
+ }
167
+ @utility text-body-medium {
168
+ font-size: 14px;
169
+ line-height: 22px;
170
+ font-weight: 500;
171
+ letter-spacing: 0;
172
+ }
173
+ @utility text-body-small {
174
+ font-size: 12px;
175
+ line-height: 18px;
176
+ font-weight: 500;
177
+ letter-spacing: 0;
178
+ }
179
+ @utility text-caption-large {
180
+ font-size: 16px;
181
+ line-height: 24px;
182
+ font-weight: 400;
183
+ letter-spacing: 0;
184
+ }
185
+ @utility text-caption-medium {
186
+ font-size: 14px;
187
+ line-height: 22px;
188
+ font-weight: 400;
189
+ letter-spacing: 0;
190
+ }
191
+ @utility text-caption-small {
192
+ font-size: 12px;
193
+ line-height: 18px;
194
+ font-weight: 400;
195
+ letter-spacing: 0;
196
+ }
197
+ @utility text-badge {
198
+ font-size: 11px;
199
+ line-height: 16px;
200
+ font-weight: 500;
201
+ letter-spacing: 0;
288
202
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"Popup-BCBW_e8Q.js","names":[],"sources":["../src/components/ui/dialog.tsx","../src/components/v1/popup/Popup.tsx"],"sourcesContent":["import { Dialog as DialogPrimitive } from \"radix-ui\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils/TailwindUtil\";\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/40 duration-200\",\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 bg-background fixed top-1/2 left-1/2 z-50 w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg p-6 shadow-lg duration-200 outline-none\",\n className,\n )}\n {...props}\n />\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nfunction DialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn(\"flex flex-col gap-2\", className)} {...props} />;\n}\n\nfunction DialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn(\"flex flex-col gap-2 sm:flex-row sm:justify-end\", className)} {...props} />;\n}\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title ref={ref} className={cn(\"text-lg font-semibold\", className)} {...props} />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description ref={ref} className={cn(\"text-muted-foreground text-sm\", className)} {...props} />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../../utils/TailwindUtil\";\nimport { CTAButton } from \"../cta-button/CTAButton\";\n\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from \"@/components/ui/dialog\";\n\ntype PopupAction = {\n label: string | React.ReactNode;\n icon?: React.ComponentType<{ className?: string }>;\n onClick?: () => void;\n};\n\nexport interface PopupProps {\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n onClose?: () => void;\n title?: string | React.ReactNode;\n description?: string | React.ReactNode;\n content?: React.ReactNode;\n confirm?: PopupAction;\n cancel?: PopupAction;\n preventEasyClose?: boolean;\n className?: string;\n}\n\nconst Popup = ({\n isOpen,\n setIsOpen,\n onClose,\n title,\n description,\n content,\n confirm,\n cancel,\n preventEasyClose = false,\n className,\n}: PopupProps) => {\n const handleClose = () => {\n setIsOpen(false);\n onClose?.();\n };\n\n const handleConfirmAction = (action?: PopupAction) => () => {\n action?.onClick?.();\n };\n\n const handleCancelAction = (action?: PopupAction) => () => {\n action?.onClick?.();\n handleClose();\n };\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (preventEasyClose && !nextOpen) {\n return;\n }\n\n if (!nextOpen) {\n onClose?.();\n }\n\n setIsOpen(nextOpen);\n };\n\n return (\n <Dialog open={isOpen} onOpenChange={handleOpenChange}>\n <DialogContent\n onEscapeKeyDown={preventEasyClose ? (event) => event.preventDefault() : undefined}\n onInteractOutside={preventEasyClose ? (event) => event.preventDefault() : undefined}\n className={cn(\n \"bg-surface-base-neutral-1 flex max-h-[440px] w-[300px] max-w-[300px] flex-col gap-4 overflow-hidden rounded-[16px] p-4\",\n className,\n )}\n >\n <div className=\"flex w-full flex-col gap-2 overflow-y-auto\">\n {title && <DialogTitle className=\"text-title-18-bold text-text-prominent-neutral-4\">{title}</DialogTitle>}\n {description && (\n <div className=\"overflow-y-auto\">\n <DialogDescription className=\"text-body-16-medium text-text-prominent-neutral-3\">\n {description}\n </DialogDescription>\n </div>\n )}\n {content && <div className=\"overflow-y-auto\">{content}</div>}\n </div>\n {(confirm || cancel) && (\n <div className=\"flex w-full flex-col gap-2\">\n {confirm && (\n <CTAButton\n label={confirm.label}\n icon={confirm.icon}\n size=\"medium\"\n hierarchy=\"primary\"\n onClick={handleConfirmAction(confirm)}\n />\n )}\n {cancel && (\n <CTAButton\n label={cancel.label}\n icon={cancel.icon}\n size=\"medium\"\n hierarchy=\"tertiary\"\n onClick={handleCancelAction(cancel)}\n />\n )}\n </div>\n )}\n </DialogContent>\n </Dialog>\n );\n};\n\nexport { Popup };\n"],"mappings":";;;;;;AAKA,IAAM,IAAS,EAAgB;AACT,EAAgB;AACtC,IAAM,IAAe,EAAgB;AACjB,EAAgB;AAEpC,IAAM,IAAgB,EAAM,YAGzB,EAAE,cAAW,GAAG,KAAS,MAC1B,kBAAC,EAAgB,SAAjB;CACO;CACL,WAAW,EACT,uKACA,CACF;CACA,GAAI;AACL,CAAA,CACF;AACD,EAAc,cAAc,EAAgB,QAAQ;AAEpD,IAAM,IAAgB,EAAM,YAGzB,EAAE,cAAW,GAAG,KAAS,MAC1B,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,CAAgB,CAAA,GAChB,kBAAC,EAAgB,SAAjB;CACO;CACL,WAAW,EACT,gRACA,CACF;CACA,GAAI;AACL,CAAA,CACW,EAAA,CAAA,CACf;AACD,EAAc,cAAc,EAAgB,QAAQ;AAUpD,IAAM,IAAc,EAAM,YAGvB,EAAE,cAAW,GAAG,KAAS,MAC1B,kBAAC,EAAgB,OAAjB;CAA4B;CAAK,WAAW,EAAG,yBAAyB,CAAS;CAAG,GAAI;AAAQ,CAAA,CACjG;AACD,EAAY,cAAc,EAAgB,MAAM;AAEhD,IAAM,IAAoB,EAAM,YAG7B,EAAE,cAAW,GAAG,KAAS,MAC1B,kBAAC,EAAgB,aAAjB;CAAkC;CAAK,WAAW,EAAG,iCAAiC,CAAS;CAAG,GAAI;AAAQ,CAAA,CAC/G;AACD,EAAkB,cAAc,EAAgB,YAAY;;;ACrC5D,IAAM,KAAS,EACb,WACA,cACA,YACA,UACA,gBACA,YACA,YACA,WACA,sBAAmB,IACnB,mBACgB;CAChB,IAAM,UAAoB;EAExB,AADA,EAAU,EAAK,GACf,IAAU;CACZ;CAuBA,OACE,kBAAC,GAAD;EAAQ,MAAM;EAAQ,eAbE,MAAsB;GAC1C,KAAoB,CAAC,MAIpB,KACH,IAAU,GAGZ,EAAU,CAAQ;EACpB;YAII,kBAAC,GAAD;GACE,iBAAiB,KAAoB,MAAU,EAAM,eAAe,IAAI,KAAA;GACxE,mBAAmB,KAAoB,MAAU,EAAM,eAAe,IAAI,KAAA;GAC1E,WAAW,EACT,0HACA,CACF;aANF,CAQE,kBAAC,OAAD;IAAK,WAAU;cAAf;KACG,KAAS,kBAAC,GAAD;MAAa,WAAU;gBAAoD;KAAmB,CAAA;KACvG,KACC,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,GAAD;OAAmB,WAAU;iBAC1B;MACgB,CAAA;KAChB,CAAA;KAEN,KAAW,kBAAC,OAAD;MAAK,WAAU;gBAAmB;KAAa,CAAA;IACxD;QACH,KAAW,MACX,kBAAC,OAAD;IAAK,WAAU;cAAf,CACG,KACC,kBAAC,GAAD;KACE,OAAO,EAAQ;KACf,MAAM,EAAQ;KACd,MAAK;KACL,WAAU;KACV,WAlDe,YAA+B;MAC1D,GAAQ,UAAU;KACpB,GAgD2C,CAAO;IACrC,CAAA,GAEF,KACC,kBAAC,GAAD;KACE,OAAO,EAAO;KACd,MAAM,EAAO;KACb,MAAK;KACL,WAAU;KACV,WAvDc,YAA+B;MAEzD,AADA,GAAQ,UAAU,GAClB,EAAY;KACd,GAoD0C,CAAM;IACnC,CAAA,CAEA;KAEM;;CACT,CAAA;AAEZ"}
File without changes
package/dist/src/App.d.ts DELETED
@@ -1,2 +0,0 @@
1
- declare function App(): import("react").JSX.Element;
2
- export default App;
@@ -1,9 +0,0 @@
1
- import { VariantProps } from 'class-variance-authority';
2
- declare const buttonVariants: (props?: ({
3
- variant?: "link" | "secondary" | "default" | "outline" | "ghost" | "destructive" | null | undefined;
4
- size?: "icon" | "default" | "xs" | "sm" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
5
- } & import('class-variance-authority/types').ClassProp) | undefined) => string;
6
- declare function Button({ className, variant, size, asChild, ...props }: React.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & {
7
- asChild?: boolean;
8
- }): import("react").JSX.Element;
9
- export { Button, buttonVariants };
@@ -1,6 +0,0 @@
1
- import { Meta, StoryObj } from '@storybook/react';
2
- import { default as Checkbox } from './Checkbox';
3
- declare const meta: Meta<typeof Checkbox>;
4
- export default meta;
5
- type Story = StoryObj<typeof Checkbox>;
6
- export declare const Default: Story;
@@ -1,8 +0,0 @@
1
- import { Meta, StoryObj } from '@storybook/react';
2
- import { default as Radio } from './Radio';
3
- declare const meta: Meta<typeof Radio>;
4
- export default meta;
5
- type Story = StoryObj<typeof Radio>;
6
- export declare const Default: Story;
7
- export declare const ChangeSize: Story;
8
- export declare const Disabled: Story;
@@ -1,7 +0,0 @@
1
- import { Meta, StoryObj } from '@storybook/react';
2
- import { default as Tabs } from './Tabs';
3
- declare const meta: Meta<typeof Tabs>;
4
- export default meta;
5
- type Story = StoryObj<typeof Tabs>;
6
- export declare const Default: Story;
7
- export declare const ThreeTabWithCuratedContent: Story;
@@ -1,6 +0,0 @@
1
- import { Meta, StoryObj } from '@storybook/react';
2
- import { default as Toggle } from './Toggle';
3
- declare const meta: Meta<typeof Toggle>;
4
- export default meta;
5
- type Story = StoryObj<typeof Toggle>;
6
- export declare const Default: Story;