@academy-sdk/sdk 0.1.1 → 0.2.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 (238) hide show
  1. package/dist/bundle.js +70 -0
  2. package/dist/manifest.json +5 -0
  3. package/dist/styles.css +3307 -0
  4. package/package.json +40 -46
  5. package/src/components/atoms/Avatar.tsx +38 -0
  6. package/src/components/atoms/Badge.tsx +32 -0
  7. package/src/components/atoms/Button.tsx +48 -0
  8. package/src/components/atoms/Card.tsx +33 -0
  9. package/src/components/atoms/Input.tsx +39 -0
  10. package/src/components/atoms/ProgressBar.tsx +52 -0
  11. package/src/components/atoms/Tabs.tsx +47 -0
  12. package/{dist/components/atoms/index.d.ts → src/components/atoms/index.ts} +0 -1
  13. package/{dist/components/index.d.ts → src/components/index.ts} +7 -1
  14. package/src/components/molecules/CourseCard.tsx +215 -0
  15. package/src/components/molecules/EmptyState.tsx +23 -0
  16. package/src/components/molecules/LoadingSpinner.tsx +27 -0
  17. package/src/components/molecules/PageHeader.tsx +22 -0
  18. package/src/components/molecules/Pagination.tsx +82 -0
  19. package/src/components/molecules/SearchInput.tsx +35 -0
  20. package/{dist/components/molecules/index.d.ts → src/components/molecules/index.ts} +0 -1
  21. package/src/components/organisms/CourseSidebar.tsx +276 -0
  22. package/src/components/organisms/LearnerNavbar.tsx +129 -0
  23. package/src/components/organisms/LearnerSidebar.tsx +148 -0
  24. package/src/components/organisms/LessonBookmarks.tsx +128 -0
  25. package/src/components/organisms/LessonNotes.tsx +153 -0
  26. package/{dist/components/organisms/index.d.ts → src/components/organisms/index.ts} +0 -1
  27. package/src/components/pages/BundleDetailPage.tsx +388 -0
  28. package/src/components/pages/CatalogBundlesPage.tsx +96 -0
  29. package/src/components/pages/CatalogCoursesPage.tsx +299 -0
  30. package/src/components/pages/CourseDetailPage.tsx +582 -0
  31. package/src/components/pages/CoursePlayerPage.tsx +481 -0
  32. package/src/components/pages/CreatorProfilePage.tsx +161 -0
  33. package/src/components/pages/LearnerSettingsPage.tsx +58 -0
  34. package/src/components/pages/ManualReviewDetailPage.tsx +254 -0
  35. package/src/components/pages/ManualReviewPage.tsx +228 -0
  36. package/src/components/pages/MessagesPage.tsx +285 -0
  37. package/src/components/pages/MyLearningPage.tsx +239 -0
  38. package/src/components/pages/PaymentCancelPage.tsx +74 -0
  39. package/src/components/pages/PaymentSuccessPage.tsx +73 -0
  40. package/{dist/components/pages/index.d.ts → src/components/pages/index.ts} +0 -1
  41. package/src/components/utils.ts +6 -0
  42. package/src/contracts/components.contract.ts +89 -0
  43. package/{dist/contracts/index.d.ts → src/contracts/index.ts} +0 -1
  44. package/src/contracts/layout.contract.ts +36 -0
  45. package/src/contracts/pages.contract.ts +275 -0
  46. package/src/contracts/template.contract.ts +100 -0
  47. package/src/default-template.tsx +52 -0
  48. package/{dist/hooks/index.d.ts → src/hooks/index.ts} +15 -1
  49. package/src/hooks/sdk-context.tsx +152 -0
  50. package/src/hooks/useAiCoach.ts +27 -0
  51. package/src/hooks/useBookmarks.ts +35 -0
  52. package/{dist/hooks/useCourseSearch.d.ts → src/hooks/useCourseSearch.ts} +8 -5
  53. package/{dist/hooks/useDebounce.d.ts → src/hooks/useDebounce.ts} +8 -2
  54. package/{dist/hooks/useMyBundles.d.ts → src/hooks/useMyBundles.ts} +8 -6
  55. package/{dist/hooks/useMyCourses.d.ts → src/hooks/useMyCourses.ts} +8 -6
  56. package/src/hooks/useNotes.ts +35 -0
  57. package/src/hooks/useNotifications.ts +16 -0
  58. package/{dist/hooks/useTheme.d.ts → src/hooks/useTheme.ts} +8 -5
  59. package/src/hooks/useToast.ts +17 -0
  60. package/{dist/hooks/useUser.d.ts → src/hooks/useUser.ts} +13 -9
  61. package/src/index.ts +33 -0
  62. package/src/layouts/DefaultLayout.tsx +58 -0
  63. package/src/manifest.json +5 -0
  64. package/src/styles.css +43 -0
  65. package/src/types/ai-coach.ts +25 -0
  66. package/src/types/bookmarks.ts +20 -0
  67. package/src/types/bundle.ts +119 -0
  68. package/src/types/common.ts +24 -0
  69. package/src/types/course.ts +135 -0
  70. package/src/types/enrollment.ts +35 -0
  71. package/{dist/types/index.d.ts → src/types/index.ts} +0 -1
  72. package/src/types/lesson.ts +106 -0
  73. package/src/types/manual-review.ts +116 -0
  74. package/src/types/messaging.ts +109 -0
  75. package/src/types/notification.ts +30 -0
  76. package/src/types/payment.ts +40 -0
  77. package/src/types/progress.ts +19 -0
  78. package/src/types/rating.ts +20 -0
  79. package/src/types/search.ts +31 -0
  80. package/src/types/user.ts +16 -0
  81. package/src/utils/formatters.ts +74 -0
  82. package/src/utils/index.ts +8 -0
  83. package/dist/components/atoms/Avatar.d.ts +0 -9
  84. package/dist/components/atoms/Avatar.d.ts.map +0 -1
  85. package/dist/components/atoms/Badge.d.ts +0 -10
  86. package/dist/components/atoms/Badge.d.ts.map +0 -1
  87. package/dist/components/atoms/Button.d.ts +0 -11
  88. package/dist/components/atoms/Button.d.ts.map +0 -1
  89. package/dist/components/atoms/Card.d.ts +0 -11
  90. package/dist/components/atoms/Card.d.ts.map +0 -1
  91. package/dist/components/atoms/Input.d.ts +0 -7
  92. package/dist/components/atoms/Input.d.ts.map +0 -1
  93. package/dist/components/atoms/ProgressBar.d.ts +0 -11
  94. package/dist/components/atoms/ProgressBar.d.ts.map +0 -1
  95. package/dist/components/atoms/Tabs.d.ts +0 -16
  96. package/dist/components/atoms/Tabs.d.ts.map +0 -1
  97. package/dist/components/atoms/index.cjs +0 -318
  98. package/dist/components/atoms/index.d.ts.map +0 -1
  99. package/dist/components/atoms/index.js +0 -288
  100. package/dist/components/index.cjs +0 -1275
  101. package/dist/components/index.d.ts.map +0 -1
  102. package/dist/components/index.js +0 -1245
  103. package/dist/components/molecules/CourseCard.d.ts +0 -25
  104. package/dist/components/molecules/CourseCard.d.ts.map +0 -1
  105. package/dist/components/molecules/EmptyState.d.ts +0 -10
  106. package/dist/components/molecules/EmptyState.d.ts.map +0 -1
  107. package/dist/components/molecules/LoadingSpinner.d.ts +0 -7
  108. package/dist/components/molecules/LoadingSpinner.d.ts.map +0 -1
  109. package/dist/components/molecules/PageHeader.d.ts +0 -8
  110. package/dist/components/molecules/PageHeader.d.ts.map +0 -1
  111. package/dist/components/molecules/Pagination.d.ts +0 -13
  112. package/dist/components/molecules/Pagination.d.ts.map +0 -1
  113. package/dist/components/molecules/SearchInput.d.ts +0 -8
  114. package/dist/components/molecules/SearchInput.d.ts.map +0 -1
  115. package/dist/components/molecules/index.cjs +0 -334
  116. package/dist/components/molecules/index.d.ts.map +0 -1
  117. package/dist/components/molecules/index.js +0 -311
  118. package/dist/components/organisms/CourseSidebar.d.ts +0 -37
  119. package/dist/components/organisms/CourseSidebar.d.ts.map +0 -1
  120. package/dist/components/organisms/LearnerNavbar.d.ts +0 -8
  121. package/dist/components/organisms/LearnerNavbar.d.ts.map +0 -1
  122. package/dist/components/organisms/LearnerSidebar.d.ts +0 -16
  123. package/dist/components/organisms/LearnerSidebar.d.ts.map +0 -1
  124. package/dist/components/organisms/LessonBookmarks.d.ts +0 -8
  125. package/dist/components/organisms/LessonBookmarks.d.ts.map +0 -1
  126. package/dist/components/organisms/LessonNotes.d.ts +0 -8
  127. package/dist/components/organisms/LessonNotes.d.ts.map +0 -1
  128. package/dist/components/organisms/index.cjs +0 -855
  129. package/dist/components/organisms/index.d.ts.map +0 -1
  130. package/dist/components/organisms/index.js +0 -825
  131. package/dist/components/pages/BundleDetailPage.d.ts +0 -3
  132. package/dist/components/pages/BundleDetailPage.d.ts.map +0 -1
  133. package/dist/components/pages/CatalogBundlesPage.d.ts +0 -3
  134. package/dist/components/pages/CatalogBundlesPage.d.ts.map +0 -1
  135. package/dist/components/pages/CatalogCoursesPage.d.ts +0 -3
  136. package/dist/components/pages/CatalogCoursesPage.d.ts.map +0 -1
  137. package/dist/components/pages/CourseDetailPage.d.ts +0 -3
  138. package/dist/components/pages/CourseDetailPage.d.ts.map +0 -1
  139. package/dist/components/pages/CoursePlayerPage.d.ts +0 -8
  140. package/dist/components/pages/CoursePlayerPage.d.ts.map +0 -1
  141. package/dist/components/pages/CreatorProfilePage.d.ts +0 -3
  142. package/dist/components/pages/CreatorProfilePage.d.ts.map +0 -1
  143. package/dist/components/pages/LearnerSettingsPage.d.ts +0 -3
  144. package/dist/components/pages/LearnerSettingsPage.d.ts.map +0 -1
  145. package/dist/components/pages/ManualReviewDetailPage.d.ts +0 -3
  146. package/dist/components/pages/ManualReviewDetailPage.d.ts.map +0 -1
  147. package/dist/components/pages/ManualReviewPage.d.ts +0 -3
  148. package/dist/components/pages/ManualReviewPage.d.ts.map +0 -1
  149. package/dist/components/pages/MessagesPage.d.ts +0 -3
  150. package/dist/components/pages/MessagesPage.d.ts.map +0 -1
  151. package/dist/components/pages/MyLearningPage.d.ts +0 -3
  152. package/dist/components/pages/MyLearningPage.d.ts.map +0 -1
  153. package/dist/components/pages/PaymentCancelPage.d.ts +0 -3
  154. package/dist/components/pages/PaymentCancelPage.d.ts.map +0 -1
  155. package/dist/components/pages/PaymentSuccessPage.d.ts +0 -3
  156. package/dist/components/pages/PaymentSuccessPage.d.ts.map +0 -1
  157. package/dist/components/pages/index.cjs +0 -3306
  158. package/dist/components/pages/index.d.ts.map +0 -1
  159. package/dist/components/pages/index.js +0 -3315
  160. package/dist/components/utils.d.ts +0 -3
  161. package/dist/components/utils.d.ts.map +0 -1
  162. package/dist/contracts/components.contract.d.ts +0 -87
  163. package/dist/contracts/components.contract.d.ts.map +0 -1
  164. package/dist/contracts/index.cjs +0 -52
  165. package/dist/contracts/index.d.ts.map +0 -1
  166. package/dist/contracts/index.js +0 -29
  167. package/dist/contracts/layout.contract.d.ts +0 -35
  168. package/dist/contracts/layout.contract.d.ts.map +0 -1
  169. package/dist/contracts/pages.contract.d.ts +0 -192
  170. package/dist/contracts/pages.contract.d.ts.map +0 -1
  171. package/dist/contracts/template.contract.d.ts +0 -49
  172. package/dist/contracts/template.contract.d.ts.map +0 -1
  173. package/dist/hooks/index.cjs +0 -165
  174. package/dist/hooks/index.d.ts.map +0 -1
  175. package/dist/hooks/index.js +0 -142
  176. package/dist/hooks/sdk-context.d.ts +0 -125
  177. package/dist/hooks/sdk-context.d.ts.map +0 -1
  178. package/dist/hooks/useAiCoach.d.ts +0 -32
  179. package/dist/hooks/useAiCoach.d.ts.map +0 -1
  180. package/dist/hooks/useBookmarks.d.ts +0 -31
  181. package/dist/hooks/useBookmarks.d.ts.map +0 -1
  182. package/dist/hooks/useCourseSearch.d.ts.map +0 -1
  183. package/dist/hooks/useDebounce.d.ts.map +0 -1
  184. package/dist/hooks/useMyBundles.d.ts.map +0 -1
  185. package/dist/hooks/useMyCourses.d.ts.map +0 -1
  186. package/dist/hooks/useNotes.d.ts +0 -31
  187. package/dist/hooks/useNotes.d.ts.map +0 -1
  188. package/dist/hooks/useNotifications.d.ts +0 -19
  189. package/dist/hooks/useNotifications.d.ts.map +0 -1
  190. package/dist/hooks/useTheme.d.ts.map +0 -1
  191. package/dist/hooks/useToast.d.ts +0 -17
  192. package/dist/hooks/useToast.d.ts.map +0 -1
  193. package/dist/hooks/useUser.d.ts.map +0 -1
  194. package/dist/index.cjs +0 -630
  195. package/dist/index.d.ts +0 -17
  196. package/dist/index.d.ts.map +0 -1
  197. package/dist/index.js +0 -600
  198. package/dist/layouts/DefaultLayout.d.ts +0 -9
  199. package/dist/layouts/DefaultLayout.d.ts.map +0 -1
  200. package/dist/types/ai-coach.d.ts +0 -22
  201. package/dist/types/ai-coach.d.ts.map +0 -1
  202. package/dist/types/bookmarks.d.ts +0 -19
  203. package/dist/types/bookmarks.d.ts.map +0 -1
  204. package/dist/types/bundle.d.ts +0 -114
  205. package/dist/types/bundle.d.ts.map +0 -1
  206. package/dist/types/common.d.ts +0 -23
  207. package/dist/types/common.d.ts.map +0 -1
  208. package/dist/types/course.d.ts +0 -127
  209. package/dist/types/course.d.ts.map +0 -1
  210. package/dist/types/enrollment.d.ts +0 -34
  211. package/dist/types/enrollment.d.ts.map +0 -1
  212. package/dist/types/index.cjs +0 -18
  213. package/dist/types/index.d.ts.map +0 -1
  214. package/dist/types/index.js +0 -0
  215. package/dist/types/lesson.d.ts +0 -105
  216. package/dist/types/lesson.d.ts.map +0 -1
  217. package/dist/types/manual-review.d.ts +0 -123
  218. package/dist/types/manual-review.d.ts.map +0 -1
  219. package/dist/types/messaging.d.ts +0 -101
  220. package/dist/types/messaging.d.ts.map +0 -1
  221. package/dist/types/notification.d.ts +0 -28
  222. package/dist/types/notification.d.ts.map +0 -1
  223. package/dist/types/payment.d.ts +0 -38
  224. package/dist/types/payment.d.ts.map +0 -1
  225. package/dist/types/progress.d.ts +0 -18
  226. package/dist/types/progress.d.ts.map +0 -1
  227. package/dist/types/rating.d.ts +0 -20
  228. package/dist/types/rating.d.ts.map +0 -1
  229. package/dist/types/search.d.ts +0 -28
  230. package/dist/types/search.d.ts.map +0 -1
  231. package/dist/types/user.d.ts +0 -15
  232. package/dist/types/user.d.ts.map +0 -1
  233. package/dist/utils/formatters.d.ts +0 -25
  234. package/dist/utils/formatters.d.ts.map +0 -1
  235. package/dist/utils/index.cjs +0 -80
  236. package/dist/utils/index.d.ts +0 -2
  237. package/dist/utils/index.d.ts.map +0 -1
  238. package/dist/utils/index.js +0 -57
@@ -0,0 +1,40 @@
1
+ export interface PaymentProvider {
2
+ id: string;
3
+ name: string;
4
+ type: string;
5
+ isActive: boolean;
6
+ }
7
+
8
+ export interface CheckoutConfig {
9
+ courseId?: string;
10
+ bundleId?: string;
11
+ paymentMode: 'ONE_TIME' | 'INSTALLMENT' | 'SUBSCRIPTION';
12
+ successUrl: string;
13
+ cancelUrl: string;
14
+ couponCode?: string;
15
+ paymentProvider?: string;
16
+ }
17
+
18
+ export interface Coupon {
19
+ id: string;
20
+ code: string;
21
+ description?: string;
22
+ discountType: 'FIXED' | 'PERCENTAGE';
23
+ discountValue: number;
24
+ maxDiscountAmount?: number;
25
+ minimumPurchase?: number;
26
+ currency?: string;
27
+ courseId?: string;
28
+ bundleId?: string;
29
+ status: 'SCHEDULED' | 'ACTIVE' | 'EXPIRED' | 'EXHAUSTED' | 'DISABLED';
30
+ isActive: boolean;
31
+ }
32
+
33
+ export interface ValidateCouponResponse {
34
+ valid: boolean;
35
+ coupon?: Coupon;
36
+ message?: string;
37
+ originalAmount?: number;
38
+ discountAmount?: number;
39
+ finalAmount?: number;
40
+ }
@@ -0,0 +1,19 @@
1
+ export interface CreateProgressPayload {
2
+ enrollmentId: string;
3
+ activityId: string;
4
+ }
5
+
6
+ export interface UpdateProgressPayload {
7
+ progressSecond: number;
8
+ completed?: boolean;
9
+ }
10
+
11
+ export interface ProgressResponse {
12
+ progressId: string;
13
+ enrollmentId: string;
14
+ activityId: string;
15
+ progressSecond: number;
16
+ completed: boolean;
17
+ createdAt: string;
18
+ updatedAt: string;
19
+ }
@@ -0,0 +1,20 @@
1
+ export interface Rating {
2
+ id: string;
3
+ userName: string;
4
+ userAvatar?: string;
5
+ rating: number;
6
+ comment: string;
7
+ date: string;
8
+ }
9
+
10
+ export interface RatingSummary {
11
+ averageRating: number;
12
+ totalRatings: number;
13
+ starDistribution: {
14
+ 5: number;
15
+ 4: number;
16
+ 3: number;
17
+ 2: number;
18
+ 1: number;
19
+ };
20
+ }
@@ -0,0 +1,31 @@
1
+ export interface SearchHighlight {
2
+ title?: string;
3
+ }
4
+
5
+ export interface SearchActivity {
6
+ id: string;
7
+ title: string;
8
+ highlight?: SearchHighlight;
9
+ }
10
+
11
+ export interface SearchSection {
12
+ id: string;
13
+ title: string;
14
+ highlight?: SearchHighlight;
15
+ activities?: SearchActivity[];
16
+ }
17
+
18
+ export interface SearchCourse {
19
+ id: string;
20
+ title: string;
21
+ enrollmentId: string;
22
+ highlight?: SearchHighlight;
23
+ sections: SearchSection[];
24
+ }
25
+
26
+ export interface SearchResponse {
27
+ page: number;
28
+ limit: number;
29
+ total: number;
30
+ data: SearchCourse[];
31
+ }
@@ -0,0 +1,16 @@
1
+ export type UserRole = 'CREATOR' | 'ADMIN' | 'STUDENT' | 'PLATFORM_ADMIN';
2
+
3
+ export interface User {
4
+ id: string;
5
+ email: string;
6
+ name: string;
7
+ userRole: UserRole;
8
+ profileImage?: string;
9
+ }
10
+
11
+ export interface Membership {
12
+ tenantId: string;
13
+ tenantName: string;
14
+ tenantSlug: string;
15
+ role: UserRole;
16
+ }
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Format seconds into MM:SS or HH:MM:SS string.
3
+ */
4
+ export function formatDuration(seconds: number): string {
5
+ if (!seconds || seconds < 0) return '0:00';
6
+
7
+ const hours = Math.floor(seconds / 3600);
8
+ const minutes = Math.floor((seconds % 3600) / 60);
9
+ const secs = Math.floor(seconds % 60);
10
+
11
+ if (hours > 0) {
12
+ return `${hours}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
13
+ }
14
+ return `${minutes}:${secs.toString().padStart(2, '0')}`;
15
+ }
16
+
17
+ /**
18
+ * Format a price with currency symbol.
19
+ */
20
+ export function formatPrice(amount: number, currency: string = 'USD'): string {
21
+ return new Intl.NumberFormat('en-US', {
22
+ style: 'currency',
23
+ currency,
24
+ minimumFractionDigits: 0,
25
+ maximumFractionDigits: 2,
26
+ }).format(amount);
27
+ }
28
+
29
+ /**
30
+ * Format a date string to a human-readable format.
31
+ */
32
+ export function formatDate(dateString: string, options?: Intl.DateTimeFormatOptions): string {
33
+ const date = new Date(dateString);
34
+ return date.toLocaleDateString('en-US', options ?? {
35
+ year: 'numeric',
36
+ month: 'short',
37
+ day: 'numeric',
38
+ });
39
+ }
40
+
41
+ /**
42
+ * Format a relative time (e.g., "2 hours ago").
43
+ */
44
+ export function formatRelativeTime(dateString: string): string {
45
+ const date = new Date(dateString);
46
+ const now = new Date();
47
+ const diffMs = now.getTime() - date.getTime();
48
+ const diffSecs = Math.floor(diffMs / 1000);
49
+ const diffMins = Math.floor(diffSecs / 60);
50
+ const diffHours = Math.floor(diffMins / 60);
51
+ const diffDays = Math.floor(diffHours / 24);
52
+
53
+ if (diffSecs < 60) return 'just now';
54
+ if (diffMins < 60) return `${diffMins}m ago`;
55
+ if (diffHours < 24) return `${diffHours}h ago`;
56
+ if (diffDays < 7) return `${diffDays}d ago`;
57
+ return formatDate(dateString);
58
+ }
59
+
60
+ /**
61
+ * Calculate progress percentage.
62
+ */
63
+ export function calculateProgress(completed: number, total: number): number {
64
+ if (total === 0) return 0;
65
+ return Math.round((completed / total) * 100);
66
+ }
67
+
68
+ /**
69
+ * Truncate text to a max length.
70
+ */
71
+ export function truncateText(text: string, maxLength: number): string {
72
+ if (text.length <= maxLength) return text;
73
+ return text.slice(0, maxLength).trimEnd() + '...';
74
+ }
@@ -0,0 +1,8 @@
1
+ export {
2
+ formatDuration,
3
+ formatPrice,
4
+ formatDate,
5
+ formatRelativeTime,
6
+ calculateProgress,
7
+ truncateText,
8
+ } from './formatters';
@@ -1,9 +0,0 @@
1
- import * as React from 'react';
2
- interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {
3
- src?: string;
4
- alt?: string;
5
- fallback?: string;
6
- }
7
- declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLDivElement>>;
8
- export { Avatar };
9
- //# sourceMappingURL=Avatar.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,UAAU,WAAY,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAChE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,QAAA,MAAM,MAAM,oFAyBX,CAAC;AAGF,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -1,10 +0,0 @@
1
- import * as React from 'react';
2
- import { type VariantProps } from 'class-variance-authority';
3
- declare const badgeVariants: (props?: ({
4
- variant?: "default" | "destructive" | "outline" | "secondary" | "success" | "warning" | null | undefined;
5
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
- export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
7
- }
8
- export declare function Badge({ className, variant, ...props }: BadgeProps): import("react/jsx-runtime").JSX.Element;
9
- export { badgeVariants };
10
- //# sourceMappingURL=Badge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,QAAA,MAAM,aAAa;;8EAiBlB,CAAC;AAEF,MAAM,WAAW,UACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAC1C,YAAY,CAAC,OAAO,aAAa,CAAC;CAAG;AAEzC,wBAAgB,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,2CAEjE;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -1,11 +0,0 @@
1
- import * as React from 'react';
2
- import { type VariantProps } from 'class-variance-authority';
3
- declare const buttonVariants: (props?: ({
4
- variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
5
- size?: "default" | "sm" | "lg" | "icon" | null | undefined;
6
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
- export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
8
- }
9
- declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
10
- export { Button, buttonVariants };
11
- //# sourceMappingURL=Button.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,QAAA,MAAM,cAAc;;;8EAwBnB,CAAC;AAEF,MAAM,WAAW,WACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EACnD,YAAY,CAAC,OAAO,cAAc,CAAC;CAAG;AAE1C,QAAA,MAAM,MAAM,uFAUX,CAAC;AAGF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC"}
@@ -1,11 +0,0 @@
1
- import * as React from 'react';
2
- interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
3
- }
4
- export declare function Card({ className, ...props }: CardProps): import("react/jsx-runtime").JSX.Element;
5
- export declare function CardHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
6
- export declare function CardTitle({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>): import("react/jsx-runtime").JSX.Element;
7
- export declare function CardDescription({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>): import("react/jsx-runtime").JSX.Element;
8
- export declare function CardContent({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
9
- export declare function CardFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
10
- export {};
11
- //# sourceMappingURL=Card.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,UAAU,SAAU,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEnE,wBAAgB,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,2CAOtD;AAED,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,2CAEvF;AAED,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,2CAE1F;AAED,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,2CAElG;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,2CAExF;AAED,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,2CAEvF"}
@@ -1,7 +0,0 @@
1
- import * as React from 'react';
2
- export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
3
- label?: string;
4
- }
5
- declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
6
- export { Input };
7
- //# sourceMappingURL=Input.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,QAAA,MAAM,KAAK,qFA4BV,CAAC;AAGF,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -1,11 +0,0 @@
1
- import * as React from 'react';
2
- interface ProgressBarProps extends React.HTMLAttributes<HTMLDivElement> {
3
- value: number;
4
- max?: number;
5
- showLabel?: boolean;
6
- size?: 'sm' | 'md' | 'lg';
7
- variant?: 'default' | 'success' | 'warning' | 'error';
8
- }
9
- export declare function ProgressBar({ value, max, showLabel, size, variant, className, ...props }: ProgressBarProps): import("react/jsx-runtime").JSX.Element;
10
- export {};
11
- //# sourceMappingURL=ProgressBar.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/ProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,UAAU,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;CACvD;AAeD,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,GAAS,EACT,SAAiB,EACjB,IAAW,EACX,OAAmB,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAmBlB"}
@@ -1,16 +0,0 @@
1
- import * as React from 'react';
2
- interface Tab {
3
- id: string;
4
- label: string;
5
- icon?: React.ReactNode;
6
- }
7
- interface TabsProps {
8
- tabs: Tab[];
9
- activeTab: string;
10
- onTabChange: (tabId: string) => void;
11
- className?: string;
12
- actions?: React.ReactNode;
13
- }
14
- export declare function Tabs({ tabs, activeTab, onTabChange, className, actions }: TabsProps): import("react/jsx-runtime").JSX.Element;
15
- export {};
16
- //# sourceMappingURL=Tabs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/Tabs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,UAAU,GAAG;IACX,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,2CA2BnF"}
@@ -1,318 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __defProps = Object.defineProperties;
5
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
- var __getOwnPropNames = Object.getOwnPropertyNames;
8
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
- var __getProtoOf = Object.getPrototypeOf;
10
- var __hasOwnProp = Object.prototype.hasOwnProperty;
11
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
12
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
13
- var __spreadValues = (a, b) => {
14
- for (var prop in b || (b = {}))
15
- if (__hasOwnProp.call(b, prop))
16
- __defNormalProp(a, prop, b[prop]);
17
- if (__getOwnPropSymbols)
18
- for (var prop of __getOwnPropSymbols(b)) {
19
- if (__propIsEnum.call(b, prop))
20
- __defNormalProp(a, prop, b[prop]);
21
- }
22
- return a;
23
- };
24
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
25
- var __objRest = (source, exclude) => {
26
- var target = {};
27
- for (var prop in source)
28
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
29
- target[prop] = source[prop];
30
- if (source != null && __getOwnPropSymbols)
31
- for (var prop of __getOwnPropSymbols(source)) {
32
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
33
- target[prop] = source[prop];
34
- }
35
- return target;
36
- };
37
- var __export = (target, all) => {
38
- for (var name in all)
39
- __defProp(target, name, { get: all[name], enumerable: true });
40
- };
41
- var __copyProps = (to, from, except, desc) => {
42
- if (from && typeof from === "object" || typeof from === "function") {
43
- for (let key of __getOwnPropNames(from))
44
- if (!__hasOwnProp.call(to, key) && key !== except)
45
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
46
- }
47
- return to;
48
- };
49
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
50
- // If the importer is in node compatibility mode or this is not an ESM
51
- // file that has been converted to a CommonJS file using a Babel-
52
- // compatible transform (i.e. "__esModule" has not been set), then set
53
- // "default" to the CommonJS "module.exports" for node compatibility.
54
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
55
- mod
56
- ));
57
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
58
-
59
- // src/components/atoms/index.ts
60
- var atoms_exports = {};
61
- __export(atoms_exports, {
62
- Avatar: () => Avatar,
63
- Badge: () => Badge,
64
- Button: () => Button,
65
- Card: () => Card,
66
- CardContent: () => CardContent,
67
- CardDescription: () => CardDescription,
68
- CardFooter: () => CardFooter,
69
- CardHeader: () => CardHeader,
70
- CardTitle: () => CardTitle,
71
- Input: () => Input,
72
- ProgressBar: () => ProgressBar,
73
- Tabs: () => Tabs,
74
- badgeVariants: () => badgeVariants,
75
- buttonVariants: () => buttonVariants
76
- });
77
- module.exports = __toCommonJS(atoms_exports);
78
-
79
- // src/components/atoms/Button.tsx
80
- var React = __toESM(require("react"));
81
- var import_class_variance_authority = require("class-variance-authority");
82
-
83
- // src/components/utils.ts
84
- var import_clsx = require("clsx");
85
- var import_tailwind_merge = require("tailwind-merge");
86
- function cn(...inputs) {
87
- return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
88
- }
89
-
90
- // src/components/atoms/Button.tsx
91
- var import_jsx_runtime = require("react/jsx-runtime");
92
- var buttonVariants = (0, import_class_variance_authority.cva)(
93
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 cursor-pointer",
94
- {
95
- variants: {
96
- variant: {
97
- default: "bg-theme-accent-primary text-white hover:opacity-90",
98
- destructive: "bg-red-600 text-white hover:bg-red-700",
99
- outline: "border border-theme-border-primary bg-theme-bg-secondary hover:bg-theme-bg-tertiary text-theme-text-primary",
100
- secondary: "bg-theme-bg-tertiary text-theme-text-primary hover:opacity-80",
101
- ghost: "hover:bg-theme-bg-tertiary text-theme-text-primary",
102
- link: "text-[rgb(var(--accent-primary))] underline-offset-4 hover:underline"
103
- },
104
- size: {
105
- default: "h-10 px-4 py-2",
106
- sm: "h-9 rounded-md px-3",
107
- lg: "h-11 rounded-md px-8",
108
- icon: "h-10 w-10"
109
- }
110
- },
111
- defaultVariants: {
112
- variant: "default",
113
- size: "default"
114
- }
115
- }
116
- );
117
- var Button = React.forwardRef(
118
- (_a, ref) => {
119
- var _b = _a, { className, variant, size } = _b, props = __objRest(_b, ["className", "variant", "size"]);
120
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
121
- "button",
122
- __spreadValues({
123
- className: cn(buttonVariants({ variant, size, className })),
124
- ref
125
- }, props)
126
- );
127
- }
128
- );
129
- Button.displayName = "Button";
130
-
131
- // src/components/atoms/Input.tsx
132
- var React2 = __toESM(require("react"));
133
- var import_jsx_runtime2 = require("react/jsx-runtime");
134
- var Input = React2.forwardRef(
135
- (_a, ref) => {
136
- var _b = _a, { className, type, label } = _b, props = __objRest(_b, ["className", "type", "label"]);
137
- const inputElement = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
138
- "input",
139
- __spreadValues({
140
- type,
141
- className: cn(
142
- "flex h-10 w-full rounded-md border border-theme-border-primary bg-theme-bg-primary px-3 py-2 text-sm text-theme-text-primary file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-[rgb(var(--text-muted))] focus-visible:outline-none focus-visible:border-theme-accent-primary transition-colors disabled:cursor-not-allowed disabled:opacity-50",
143
- className
144
- ),
145
- ref
146
- }, props)
147
- );
148
- if (label) {
149
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "space-y-2", children: [
150
- /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("label", { className: "text-sm font-medium text-theme-text-primary", children: [
151
- label,
152
- props.required && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "text-red-500 ml-1", children: "*" })
153
- ] }),
154
- inputElement
155
- ] });
156
- }
157
- return inputElement;
158
- }
159
- );
160
- Input.displayName = "Input";
161
-
162
- // src/components/atoms/Card.tsx
163
- var import_jsx_runtime3 = require("react/jsx-runtime");
164
- function Card(_a) {
165
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
166
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
167
- "div",
168
- __spreadValues({
169
- className: cn("rounded-lg border border-theme-border-primary bg-theme-bg-primary shadow-sm", className)
170
- }, props)
171
- );
172
- }
173
- function CardHeader(_a) {
174
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
175
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", __spreadValues({ className: cn("flex flex-col space-y-1.5 p-6", className) }, props));
176
- }
177
- function CardTitle(_a) {
178
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
179
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h3", __spreadValues({ className: cn("text-2xl font-semibold leading-none tracking-tight", className) }, props));
180
- }
181
- function CardDescription(_a) {
182
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
183
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", __spreadValues({ className: cn("text-sm text-theme-text-secondary", className) }, props));
184
- }
185
- function CardContent(_a) {
186
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
187
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", __spreadValues({ className: cn("p-6 pt-0", className) }, props));
188
- }
189
- function CardFooter(_a) {
190
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
191
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", __spreadValues({ className: cn("flex items-center p-6 pt-0", className) }, props));
192
- }
193
-
194
- // src/components/atoms/Badge.tsx
195
- var import_class_variance_authority2 = require("class-variance-authority");
196
- var import_jsx_runtime4 = require("react/jsx-runtime");
197
- var badgeVariants = (0, import_class_variance_authority2.cva)(
198
- "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2",
199
- {
200
- variants: {
201
- variant: {
202
- default: "bg-theme-accent-primary text-white",
203
- secondary: "bg-theme-bg-tertiary text-theme-text-primary",
204
- success: "border-transparent bg-green-600 text-white",
205
- warning: "border-transparent bg-yellow-500 text-white",
206
- destructive: "border-transparent bg-red-600 text-white",
207
- outline: "text-theme-text-primary border-theme-border-primary"
208
- }
209
- },
210
- defaultVariants: {
211
- variant: "default"
212
- }
213
- }
214
- );
215
- function Badge(_a) {
216
- var _b = _a, { className, variant } = _b, props = __objRest(_b, ["className", "variant"]);
217
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", __spreadValues({ className: cn(badgeVariants({ variant }), className) }, props));
218
- }
219
-
220
- // src/components/atoms/Avatar.tsx
221
- var React3 = __toESM(require("react"));
222
- var import_jsx_runtime5 = require("react/jsx-runtime");
223
- var Avatar = React3.forwardRef(
224
- (_a, ref) => {
225
- var _b = _a, { className, src, alt, fallback } = _b, props = __objRest(_b, ["className", "src", "alt", "fallback"]);
226
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
227
- "div",
228
- __spreadProps(__spreadValues({
229
- ref,
230
- className: cn(
231
- "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
232
- className
233
- )
234
- }, props), {
235
- children: src ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
236
- "img",
237
- {
238
- src,
239
- alt: alt || "Avatar",
240
- className: "aspect-square h-full w-full object-cover"
241
- }
242
- ) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "flex h-full w-full items-center justify-center bg-gray-200 text-gray-600 text-sm font-medium", children: fallback || "?" })
243
- })
244
- );
245
- }
246
- );
247
- Avatar.displayName = "Avatar";
248
-
249
- // src/components/atoms/ProgressBar.tsx
250
- var import_jsx_runtime6 = require("react/jsx-runtime");
251
- var sizeClasses = {
252
- sm: "h-1.5",
253
- md: "h-2.5",
254
- lg: "h-3.5"
255
- };
256
- var variantClasses = {
257
- default: "bg-theme-accent-primary",
258
- success: "bg-green-600",
259
- warning: "bg-yellow-500",
260
- error: "bg-red-600"
261
- };
262
- function ProgressBar(_a) {
263
- var _b = _a, {
264
- value,
265
- max = 100,
266
- showLabel = false,
267
- size = "md",
268
- variant = "default",
269
- className
270
- } = _b, props = __objRest(_b, [
271
- "value",
272
- "max",
273
- "showLabel",
274
- "size",
275
- "variant",
276
- "className"
277
- ]);
278
- const percentage = Math.min(Math.max(value / max * 100, 0), 100);
279
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", __spreadProps(__spreadValues({ className: cn("w-full", className) }, props), { children: [
280
- showLabel && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "mb-1 flex items-center justify-between text-sm", children: [
281
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-theme-text-secondary", children: "Progress" }),
282
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: "font-medium text-theme-text-primary", children: [
283
- Math.round(percentage),
284
- "%"
285
- ] })
286
- ] }),
287
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: cn("w-full overflow-hidden rounded-full bg-theme-bg-tertiary", sizeClasses[size]), children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
288
- "div",
289
- {
290
- className: cn("h-full transition-all duration-300 ease-in-out", variantClasses[variant]),
291
- style: { width: `${percentage}%` }
292
- }
293
- ) })
294
- ] }));
295
- }
296
-
297
- // src/components/atoms/Tabs.tsx
298
- var import_jsx_runtime7 = require("react/jsx-runtime");
299
- function Tabs({ tabs, activeTab, onTabChange, className, actions }) {
300
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: cn("border-b border-theme-border-primary", className), children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "px-4 sm:px-6 pt-4", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "p-0.5 flex items-center justify-between overflow-x-auto", children: [
301
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("nav", { className: "flex gap-4 sm:gap-8 min-w-min", children: tabs.map((tab) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
302
- "button",
303
- {
304
- onClick: () => onTabChange(tab.id),
305
- className: cn(
306
- "pb-3 px-1 text-sm font-medium border-b-2 transition-all flex items-center gap-2 cursor-pointer whitespace-nowrap",
307
- activeTab === tab.id ? "border-theme-accent-primary text-theme-accent-primary" : "border-transparent text-theme-text-secondary hover:text-theme-text-primary hover:border-theme-accent-primary/40"
308
- ),
309
- children: [
310
- tab.icon && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "flex-shrink-0", children: tab.icon }),
311
- tab.label
312
- ]
313
- },
314
- tab.id
315
- )) }),
316
- actions && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "pb-3", children: actions })
317
- ] }) }) });
318
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAClD,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC/F,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}