@hydralms/components 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +61 -0
  3. package/dist/assessment-toolbar/assessment-toolbar.d.ts +2 -0
  4. package/dist/assessment-toolbar/index.d.ts +4 -0
  5. package/dist/assessment-toolbar/question-navigator.d.ts +2 -0
  6. package/dist/assessment-toolbar/timer-display.d.ts +2 -0
  7. package/dist/assessment-toolbar/types.d.ts +89 -0
  8. package/dist/common/confirm-dialog.d.ts +2 -0
  9. package/dist/common/due-date-display.d.ts +2 -0
  10. package/dist/common/empty-state.d.ts +2 -0
  11. package/dist/common/index.d.ts +6 -0
  12. package/dist/common/search-input.d.ts +2 -0
  13. package/dist/common/status-badge.d.ts +2 -0
  14. package/dist/common/types.d.ts +124 -0
  15. package/dist/components.css +1 -0
  16. package/dist/content/content-block.d.ts +2 -0
  17. package/dist/content/file-upload-zone.d.ts +2 -0
  18. package/dist/content/index.d.ts +3 -0
  19. package/dist/content/types.d.ts +95 -0
  20. package/dist/curriculum/curriculum-item.d.ts +2 -0
  21. package/dist/curriculum/curriculum-tree.d.ts +2 -0
  22. package/dist/curriculum/index.d.ts +4 -0
  23. package/dist/curriculum/learning-object-icon.d.ts +2 -0
  24. package/dist/curriculum/types.d.ts +79 -0
  25. package/dist/feedback/feedback-banner.d.ts +2 -0
  26. package/dist/feedback/index.d.ts +4 -0
  27. package/dist/feedback/likert-scale.d.ts +2 -0
  28. package/dist/feedback/star-rating.d.ts +2 -0
  29. package/dist/feedback/types.d.ts +83 -0
  30. package/dist/flashcards/flashcard-deck.d.ts +2 -0
  31. package/dist/flashcards/flashcard.d.ts +2 -0
  32. package/dist/flashcards/index.d.ts +3 -0
  33. package/dist/flashcards/types.d.ts +58 -0
  34. package/dist/index.cjs +1 -0
  35. package/dist/index.d.ts +13 -0
  36. package/dist/index.js +159 -0
  37. package/dist/lib/utils.d.ts +2 -0
  38. package/dist/progress/grade-indicator.d.ts +2 -0
  39. package/dist/progress/index.d.ts +4 -0
  40. package/dist/progress/progress-ring.d.ts +2 -0
  41. package/dist/progress/stat-card.d.ts +2 -0
  42. package/dist/progress/types.d.ts +73 -0
  43. package/dist/provider/HydraProvider.d.ts +9 -0
  44. package/dist/provider/index.d.ts +2 -0
  45. package/dist/questions/choice.d.ts +11 -0
  46. package/dist/questions/essay.d.ts +11 -0
  47. package/dist/questions/fill-in-the-blank.d.ts +11 -0
  48. package/dist/questions/index.d.ts +7 -0
  49. package/dist/questions/multiple-choice.d.ts +11 -0
  50. package/dist/questions/question-renderer.d.ts +12 -0
  51. package/dist/questions/true-false.d.ts +11 -0
  52. package/dist/questions/types.d.ts +47 -0
  53. package/dist/sections/AnnouncementFeed/AnnouncementFeed.d.ts +2 -0
  54. package/dist/sections/AnnouncementFeed/types.d.ts +52 -0
  55. package/dist/sections/AssessmentReview/AssessmentReview.d.ts +2 -0
  56. package/dist/sections/AssessmentReview/types.d.ts +58 -0
  57. package/dist/sections/AssignmentSubmission/AssignmentSubmission.d.ts +2 -0
  58. package/dist/sections/AssignmentSubmission/types.d.ts +65 -0
  59. package/dist/sections/CertificateViewer/CertificateViewer.d.ts +2 -0
  60. package/dist/sections/CertificateViewer/types.d.ts +47 -0
  61. package/dist/sections/CourseOutline/CourseOutline.d.ts +2 -0
  62. package/dist/sections/CourseOutline/types.d.ts +49 -0
  63. package/dist/sections/DiscussionThread/DiscussionThread.d.ts +2 -0
  64. package/dist/sections/DiscussionThread/types.d.ts +74 -0
  65. package/dist/sections/ExamSession/ExamSession.d.ts +2 -0
  66. package/dist/sections/ExamSession/types.d.ts +62 -0
  67. package/dist/sections/FlashcardStudySession/FlashcardStudySession.d.ts +2 -0
  68. package/dist/sections/FlashcardStudySession/types.d.ts +40 -0
  69. package/dist/sections/GradebookTable/GradebookTable.d.ts +2 -0
  70. package/dist/sections/GradebookTable/types.d.ts +71 -0
  71. package/dist/sections/LecturePlayer/LecturePlayer.d.ts +2 -0
  72. package/dist/sections/LecturePlayer/types.d.ts +47 -0
  73. package/dist/sections/LessonPage/LessonPage.d.ts +2 -0
  74. package/dist/sections/LessonPage/types.d.ts +40 -0
  75. package/dist/sections/PracticeQuiz/PracticeQuiz.d.ts +2 -0
  76. package/dist/sections/PracticeQuiz/types.d.ts +42 -0
  77. package/dist/sections/ProgressDashboard/ProgressDashboard.d.ts +2 -0
  78. package/dist/sections/ProgressDashboard/types.d.ts +73 -0
  79. package/dist/sections/QuizSession/QuizSession.d.ts +2 -0
  80. package/dist/sections/QuizSession/types.d.ts +46 -0
  81. package/dist/sections/ResourceLibrary/ResourceLibrary.d.ts +2 -0
  82. package/dist/sections/ResourceLibrary/types.d.ts +58 -0
  83. package/dist/sections/ScrollableQuiz/ScrollableQuiz.d.ts +2 -0
  84. package/dist/sections/ScrollableQuiz/types.d.ts +42 -0
  85. package/dist/sections/SurveyForm/SurveyForm.d.ts +2 -0
  86. package/dist/sections/SurveyForm/types.d.ts +69 -0
  87. package/dist/sections/index.d.ts +34 -0
  88. package/dist/sections.cjs +1 -0
  89. package/dist/sections.js +1898 -0
  90. package/dist/social/index.d.ts +3 -0
  91. package/dist/social/post-card.d.ts +2 -0
  92. package/dist/social/types.d.ts +59 -0
  93. package/dist/social/user-avatar.d.ts +2 -0
  94. package/dist/table-CW4_BYny.js +9869 -0
  95. package/dist/table-DSBBqb9X.cjs +56 -0
  96. package/dist/ui/alert-dialog.d.ts +14 -0
  97. package/dist/ui/alert.d.ts +9 -0
  98. package/dist/ui/avatar.d.ts +5 -0
  99. package/dist/ui/badge.d.ts +9 -0
  100. package/dist/ui/button.d.ts +10 -0
  101. package/dist/ui/card.d.ts +9 -0
  102. package/dist/ui/index.d.ts +15 -0
  103. package/dist/ui/input.d.ts +3 -0
  104. package/dist/ui/progress.d.ts +13 -0
  105. package/dist/ui/separator.d.ts +6 -0
  106. package/dist/ui/skeleton.d.ts +3 -0
  107. package/dist/ui/slot.d.ts +8 -0
  108. package/dist/ui/table.d.ts +10 -0
  109. package/dist/ui/tabs.d.ts +7 -0
  110. package/dist/ui/textarea.d.ts +3 -0
  111. package/dist/ui/tooltip.d.ts +8 -0
  112. package/dist/utils/debounce.d.ts +1 -0
  113. package/dist/utils/format-duration.d.ts +2 -0
  114. package/dist/video/index.d.ts +2 -0
  115. package/dist/video/types.d.ts +37 -0
  116. package/dist/video/video-player.d.ts +2 -0
  117. package/package.json +94 -0
@@ -0,0 +1,14 @@
1
+ import { Dialog } from '@base-ui/react/dialog';
2
+ import * as React from "react";
3
+ declare function AlertDialog({ ...props }: React.ComponentProps<typeof Dialog.Root>): import("react/jsx-runtime").JSX.Element;
4
+ declare function AlertDialogTrigger({ ...props }: React.ComponentProps<typeof Dialog.Trigger>): import("react/jsx-runtime").JSX.Element;
5
+ declare function AlertDialogPortal({ ...props }: React.ComponentProps<typeof Dialog.Portal>): import("react/jsx-runtime").JSX.Element;
6
+ declare function AlertDialogBackdrop({ className, ...props }: React.ComponentProps<typeof Dialog.Backdrop>): import("react/jsx-runtime").JSX.Element;
7
+ declare function AlertDialogContent({ className, children, ...props }: React.ComponentProps<typeof Dialog.Popup>): import("react/jsx-runtime").JSX.Element;
8
+ declare function AlertDialogHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
9
+ declare function AlertDialogFooter({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
10
+ declare function AlertDialogTitle({ className, ...props }: React.ComponentProps<typeof Dialog.Title>): import("react/jsx-runtime").JSX.Element;
11
+ declare function AlertDialogDescription({ className, ...props }: React.ComponentProps<typeof Dialog.Description>): import("react/jsx-runtime").JSX.Element;
12
+ declare function AlertDialogAction({ className, ...props }: React.ComponentProps<"button">): import("react/jsx-runtime").JSX.Element;
13
+ declare function AlertDialogCancel({ className, ...props }: React.ComponentProps<"button">): import("react/jsx-runtime").JSX.Element;
14
+ export { AlertDialog, AlertDialogTrigger, AlertDialogPortal, AlertDialogBackdrop, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, };
@@ -0,0 +1,9 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ import * as React from "react";
3
+ declare const alertVariants: (props?: ({
4
+ variant?: "default" | "destructive" | "success" | "warning" | "info" | null | undefined;
5
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
6
+ declare function Alert({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof alertVariants>): import("react/jsx-runtime").JSX.Element;
7
+ declare function AlertTitle({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
8
+ declare function AlertDescription({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
9
+ export { Alert, AlertTitle, AlertDescription, alertVariants };
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ declare function Avatar({ className, ...props }: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
3
+ declare function AvatarImage({ className, onError, ...props }: React.ComponentProps<"img">): import("react/jsx-runtime").JSX.Element;
4
+ declare function AvatarFallback({ className, ...props }: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
5
+ export { Avatar, AvatarImage, AvatarFallback };
@@ -0,0 +1,9 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ import * as React from "react";
3
+ declare const badgeVariants: (props?: ({
4
+ variant?: "default" | "destructive" | "success" | "warning" | "info" | "outline" | "secondary" | "muted" | null | undefined;
5
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
6
+ declare function Badge({ className, variant, asChild, ...props }: React.ComponentProps<"span"> & VariantProps<typeof badgeVariants> & {
7
+ asChild?: boolean;
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ export { Badge, badgeVariants };
@@ -0,0 +1,10 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ import * as React from "react";
3
+ declare const buttonVariants: (props?: ({
4
+ variant?: "default" | "destructive" | "link" | "outline" | "secondary" | "ghost" | null | undefined;
5
+ size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
6
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
7
+ declare function Button({ className, variant, size, asChild, ...props }: React.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & {
8
+ asChild?: boolean;
9
+ }): import("react/jsx-runtime").JSX.Element;
10
+ export { Button, buttonVariants };
@@ -0,0 +1,9 @@
1
+ import * as React from "react";
2
+ declare function Card({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
3
+ declare function CardHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
4
+ declare function CardTitle({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
5
+ declare function CardDescription({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
6
+ declare function CardAction({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
7
+ declare function CardContent({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
8
+ declare function CardFooter({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
9
+ export { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent, };
@@ -0,0 +1,15 @@
1
+ export { Button, buttonVariants } from './button';
2
+ export { Input } from './input';
3
+ export { Textarea } from './textarea';
4
+ export { Badge, badgeVariants } from './badge';
5
+ export { Alert, AlertTitle, AlertDescription, alertVariants } from './alert';
6
+ export { Separator } from './separator';
7
+ export { AlertDialog, AlertDialogTrigger, AlertDialogPortal, AlertDialogBackdrop, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, } from './alert-dialog';
8
+ export { Avatar, AvatarImage, AvatarFallback } from './avatar';
9
+ export { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent, } from './card';
10
+ export { Tabs, TabsList, TabsTrigger, TabsContent } from './tabs';
11
+ export { Progress, progressVariants } from './progress';
12
+ export type { ProgressProps } from './progress';
13
+ export { Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption, } from './table';
14
+ export { Skeleton } from './skeleton';
15
+ export { Tooltip, TooltipTrigger, TooltipContent } from './tooltip';
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare function Input({ className, type, ...props }: React.ComponentProps<"input">): import("react/jsx-runtime").JSX.Element;
3
+ export { Input };
@@ -0,0 +1,13 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ import * as React from "react";
3
+ declare const progressVariants: (props?: ({
4
+ variant?: "default" | "success" | "warning" | "info" | null | undefined;
5
+ size?: "default" | "sm" | null | undefined;
6
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
7
+ interface ProgressProps extends Omit<React.ComponentProps<"div">, "children">, VariantProps<typeof progressVariants> {
8
+ value?: number;
9
+ max?: number;
10
+ }
11
+ declare function Progress({ className, value, max, variant, size, ...props }: ProgressProps): import("react/jsx-runtime").JSX.Element;
12
+ export { Progress, progressVariants };
13
+ export type { ProgressProps };
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ declare function Separator({ className, orientation, decorative, ...props }: React.ComponentProps<"div"> & {
3
+ orientation?: "horizontal" | "vertical";
4
+ decorative?: boolean;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ export { Separator };
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare function Skeleton({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
3
+ export { Skeleton };
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ /**
3
+ * Minimal Slot implementation for the asChild pattern.
4
+ * Merges parent props onto a single React element child.
5
+ */
6
+ export declare function Slot({ children, ...props }: React.HTMLAttributes<HTMLElement> & {
7
+ children?: React.ReactNode;
8
+ }): React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | null;
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ declare function Table({ className, ...props }: React.ComponentProps<"table">): import("react/jsx-runtime").JSX.Element;
3
+ declare function TableHeader({ className, ...props }: React.ComponentProps<"thead">): import("react/jsx-runtime").JSX.Element;
4
+ declare function TableBody({ className, ...props }: React.ComponentProps<"tbody">): import("react/jsx-runtime").JSX.Element;
5
+ declare function TableFooter({ className, ...props }: React.ComponentProps<"tfoot">): import("react/jsx-runtime").JSX.Element;
6
+ declare function TableRow({ className, ...props }: React.ComponentProps<"tr">): import("react/jsx-runtime").JSX.Element;
7
+ declare function TableHead({ className, ...props }: React.ComponentProps<"th">): import("react/jsx-runtime").JSX.Element;
8
+ declare function TableCell({ className, ...props }: React.ComponentProps<"td">): import("react/jsx-runtime").JSX.Element;
9
+ declare function TableCaption({ className, ...props }: React.ComponentProps<"caption">): import("react/jsx-runtime").JSX.Element;
10
+ export { Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption, };
@@ -0,0 +1,7 @@
1
+ import { Tabs as BaseTabs } from '@base-ui/react/tabs';
2
+ import * as React from "react";
3
+ declare function Tabs({ ...props }: React.ComponentProps<typeof BaseTabs.Root>): import("react/jsx-runtime").JSX.Element;
4
+ declare function TabsList({ className, ...props }: React.ComponentProps<typeof BaseTabs.List>): import("react/jsx-runtime").JSX.Element;
5
+ declare function TabsTrigger({ className, ...props }: React.ComponentProps<typeof BaseTabs.Tab>): import("react/jsx-runtime").JSX.Element;
6
+ declare function TabsContent({ className, ...props }: React.ComponentProps<typeof BaseTabs.Panel>): import("react/jsx-runtime").JSX.Element;
7
+ export { Tabs, TabsList, TabsTrigger, TabsContent };
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare function Textarea({ className, ...props }: React.ComponentProps<"textarea">): import("react/jsx-runtime").JSX.Element;
3
+ export { Textarea };
@@ -0,0 +1,8 @@
1
+ import { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';
2
+ import * as React from "react";
3
+ declare function Tooltip({ ...props }: React.ComponentProps<typeof BaseTooltip.Root>): import("react/jsx-runtime").JSX.Element;
4
+ declare function TooltipTrigger({ ...props }: React.ComponentProps<typeof BaseTooltip.Trigger>): import("react/jsx-runtime").JSX.Element;
5
+ declare function TooltipContent({ className, sideOffset, children, ...props }: React.ComponentProps<typeof BaseTooltip.Popup> & {
6
+ sideOffset?: number;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ export { Tooltip, TooltipTrigger, TooltipContent };
@@ -0,0 +1 @@
1
+ export declare function debounce<T extends (...args: Parameters<T>) => void>(fn: T, delay: number): (...args: Parameters<T>) => void;
@@ -0,0 +1,2 @@
1
+ export declare const formatDuration: (duration: number) => string;
2
+ export declare const formatTimer: (totalSeconds: number) => string;
@@ -0,0 +1,2 @@
1
+ export { VideoPlayer } from './video-player';
2
+ export type { VideoPlayerProps } from './types';
@@ -0,0 +1,37 @@
1
+ /**
2
+ * VideoPlayer component for rendering video content with interactive playback controls.
3
+ *
4
+ * @example
5
+ * <VideoPlayer
6
+ * src="https://example.com/lesson.mp4"
7
+ * poster="https://example.com/thumbnail.jpg"
8
+ * title="Introduction to React"
9
+ * onEnded={() => markLessonComplete()}
10
+ * />
11
+ */
12
+ export interface VideoPlayerProps {
13
+ /** URL of the video source */
14
+ src?: string;
15
+ /** URL of the poster/thumbnail image */
16
+ poster?: string;
17
+ /** Title displayed above the video */
18
+ title?: string;
19
+ /** Whether the video should autoplay */
20
+ autoPlay?: boolean;
21
+ /** Called when the video starts playing */
22
+ onPlay?: () => void;
23
+ /** Called when the video is paused */
24
+ onPause?: () => void;
25
+ /** Called when the video ends */
26
+ onEnded?: () => void;
27
+ /** Called on each time update tick with currentTime and duration */
28
+ onTimeUpdate?: (currentTime: number, duration: number) => void;
29
+ /** When true, shows a poster image instead of interactive controls */
30
+ readOnly?: boolean;
31
+ /** Aspect ratio of the video container */
32
+ aspectRatio?: "16/9" | "4/3" | "1/1";
33
+ /** CSS class name for the root element */
34
+ className?: string;
35
+ /** Inline styles for the root element */
36
+ style?: React.CSSProperties;
37
+ }
@@ -0,0 +1,2 @@
1
+ import { VideoPlayerProps } from './types';
2
+ export declare const VideoPlayer: ({ src, poster, title, autoPlay, onPlay, onPause, onEnded, onTimeUpdate, readOnly, aspectRatio, className, style, }: VideoPlayerProps) => import("react/jsx-runtime").JSX.Element;
package/package.json ADDED
@@ -0,0 +1,94 @@
1
+ {
2
+ "name": "@hydralms/components",
3
+ "version": "0.1.0",
4
+ "description": "React component library for LMS platforms, built on Base UI",
5
+ "license": "MIT",
6
+ "author": "HydraLMS",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/smccart/hydra-lms.git",
10
+ "directory": "packages/hydra-lms"
11
+ },
12
+ "homepage": "https://hydralms.com",
13
+ "bugs": {
14
+ "url": "https://github.com/smccart/hydra-lms/issues"
15
+ },
16
+ "keywords": [
17
+ "react",
18
+ "lms",
19
+ "learning-management-system",
20
+ "components",
21
+ "ui",
22
+ "tailwindcss",
23
+ "education",
24
+ "quiz",
25
+ "assessment",
26
+ "course"
27
+ ],
28
+ "type": "module",
29
+ "main": "./dist/index.cjs",
30
+ "module": "./dist/index.js",
31
+ "types": "./dist/index.d.ts",
32
+ "files": [
33
+ "dist",
34
+ "LICENSE",
35
+ "README.md"
36
+ ],
37
+ "sideEffects": [
38
+ "**/*.css"
39
+ ],
40
+ "exports": {
41
+ ".": {
42
+ "types": "./dist/index.d.ts",
43
+ "import": "./dist/index.js",
44
+ "require": "./dist/index.cjs"
45
+ },
46
+ "./sections": {
47
+ "types": "./dist/sections.d.ts",
48
+ "import": "./dist/sections.js",
49
+ "require": "./dist/sections.cjs"
50
+ },
51
+ "./styles.css": "./dist/components.css",
52
+ "./package.json": "./package.json"
53
+ },
54
+ "peerDependencies": {
55
+ "@base-ui/react": "^1.0.0",
56
+ "react": "^18.0.0 || ^19.0.0",
57
+ "react-dom": "^18.0.0 || ^19.0.0",
58
+ "tailwindcss": "^4.0.0"
59
+ },
60
+ "dependencies": {
61
+ "class-variance-authority": "^0.7.1",
62
+ "clsx": "^2.1.1",
63
+ "lucide-react": "^0.475.0",
64
+ "tailwind-merge": "^3.0.2"
65
+ },
66
+ "devDependencies": {
67
+ "@base-ui/react": "^1.2.0",
68
+ "@tailwindcss/vite": "^4.0.0",
69
+ "@testing-library/jest-dom": "^6.9.1",
70
+ "@testing-library/react": "^16.3.2",
71
+ "@testing-library/user-event": "^14.6.1",
72
+ "@types/react": "^19.0.0",
73
+ "@types/react-dom": "^19.0.0",
74
+ "@vitejs/plugin-react": "^4.3.0",
75
+ "jsdom": "^28.1.0",
76
+ "react": "^19.0.0",
77
+ "react-docgen-typescript": "^2.3.0",
78
+ "tailwindcss": "^4.0.0",
79
+ "tsx": "^4.19.0",
80
+ "typescript": "~5.7.0",
81
+ "vite": "^6.0.0",
82
+ "vite-plugin-dts": "^4.0.0",
83
+ "vitest": "^4.0.18"
84
+ },
85
+ "scripts": {
86
+ "build": "tsc -b && vite build",
87
+ "dev": "vite build --watch",
88
+ "generate-docs": "tsx scripts/generate-docs.ts",
89
+ "check-docs": "tsx scripts/generate-docs.ts --check",
90
+ "typecheck": "tsc --noEmit",
91
+ "test": "vitest run",
92
+ "test:watch": "vitest"
93
+ }
94
+ }