@petnow/ui 4.1.9 → 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 (42) 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/toggle.js +1 -0
  12. package/dist/v0/toggle.js.map +1 -1
  13. package/dist/v1/popup.js +1 -1
  14. package/docs/adr/0001-v5-consumer-owned-tailwind-and-no-global-leaks.md +42 -0
  15. package/docs/migration/v4-to-v5.md +209 -0
  16. package/package.json +13 -18
  17. package/petnow-design-system-v1.css +3 -76
  18. package/tailwind.css +144 -230
  19. package/dist/Popup-BCBW_e8Q.js.map +0 -1
  20. package/dist/jest.setup.d.ts +0 -0
  21. package/dist/src/App.d.ts +0 -2
  22. package/dist/src/components/ui/button.d.ts +0 -9
  23. package/dist/src/components/v0/checkbox/Checkbox.stories.d.ts +0 -6
  24. package/dist/src/components/v0/radio/Radio.stories.d.ts +0 -8
  25. package/dist/src/components/v0/tabs/Tabs.stories.d.ts +0 -7
  26. package/dist/src/components/v0/toggle/Toggle.stories.d.ts +0 -6
  27. package/dist/src/components/v1/badge/Badge.stories.d.ts +0 -10
  28. package/dist/src/components/v1/chip/Chip.stories.d.ts +0 -10
  29. package/dist/src/components/v1/cta-button/CTAButton.stories.d.ts +0 -11
  30. package/dist/src/components/v1/popup/Popup.stories.d.ts +0 -11
  31. package/dist/src/components/v1/text-field/TextField.stories.d.ts +0 -11
  32. package/dist/src/main.d.ts +0 -0
  33. package/dist/test/v0/Checkbox.test.d.ts +0 -1
  34. package/dist/test/v0/Radio.test.d.ts +0 -1
  35. package/dist/test/v0/Tabs.test.d.ts +0 -1
  36. package/dist/test/v0/Toggle.test.d.ts +0 -1
  37. package/dist/test/v1/Badge.test.d.ts +0 -1
  38. package/dist/test/v1/CTAButton.test.d.ts +0 -1
  39. package/dist/test/v1/Chip.test.d.ts +0 -1
  40. package/dist/test/v1/Popup.test.d.ts +0 -1
  41. package/dist/test/v1/TextField.test.d.ts +0 -1
  42. package/dist/vite.svg +0 -1
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,EAgDuB,CAAoB,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,EAoDuB,CAAmB,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;
@@ -1,10 +0,0 @@
1
- import { Meta, StoryObj } from '@storybook/react';
2
- import { Badge } from './Badge';
3
- declare const meta: Meta<typeof Badge>;
4
- export default meta;
5
- type Story = StoryObj<typeof Badge>;
6
- export declare const Default: Story;
7
- export declare const TintedWithIcon: Story;
8
- export declare const OutlinedSmall: Story;
9
- export declare const TypeColorShowcase: Story;
10
- export declare const SizeShowcase: Story;
@@ -1,10 +0,0 @@
1
- import { Meta, StoryObj } from '@storybook/react';
2
- import { Chip } from './Chip';
3
- declare const meta: Meta<typeof Chip>;
4
- export default meta;
5
- type Story = StoryObj<typeof Chip>;
6
- export declare const Default: Story;
7
- export declare const Selected: Story;
8
- export declare const WithIcon: Story;
9
- export declare const Disabled: Story;
10
- export declare const SelectableGroup: Story;
@@ -1,11 +0,0 @@
1
- import { Meta, StoryObj } from '@storybook/react';
2
- import { CTAButton } from './CTAButton';
3
- declare const meta: Meta<typeof CTAButton>;
4
- export default meta;
5
- type Story = StoryObj<typeof CTAButton>;
6
- export declare const Default: Story;
7
- export declare const SecondaryMedium: Story;
8
- export declare const TertiarySmallWithIcon: Story;
9
- export declare const Disabled: Story;
10
- export declare const HierarchyShowcase: Story;
11
- export declare const SizeShowcase: Story;
@@ -1,11 +0,0 @@
1
- import { Meta, StoryObj } from '@storybook/react';
2
- import { Popup } from './Popup';
3
- declare const meta: Meta<typeof Popup>;
4
- export default meta;
5
- type Story = StoryObj<typeof Popup>;
6
- export declare const Default: Story;
7
- export declare const OnlyTitle: Story;
8
- export declare const OnlyConfirm: Story;
9
- export declare const WithCustomContent: Story;
10
- export declare const PreventEasyClose: Story;
11
- export declare const DescriptionOnly: Story;
@@ -1,11 +0,0 @@
1
- import { Meta, StoryObj } from '@storybook/react';
2
- import { TextFieldNormal } from './TextField';
3
- declare const meta: Meta<typeof TextFieldNormal>;
4
- export default meta;
5
- type Story = StoryObj<typeof TextFieldNormal>;
6
- export declare const Normal: Story;
7
- export declare const NormalWithErrorAndCounter: Story;
8
- export declare const Multiline: Story;
9
- export declare const SelectField: Story;
10
- export declare const SelectFieldSmallError: Story;
11
- export declare const WithButton: Story;
File without changes
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
package/dist/vite.svg DELETED
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>