nextworks 0.2.0-alpha.2 → 0.2.0-alpha.20

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 (145) hide show
  1. package/README.md +280 -228
  2. package/dist/cli_manifests/blocks_manifest.json +193 -194
  3. package/dist/commands/blocks.d.ts +3 -0
  4. package/dist/commands/blocks.d.ts.map +1 -1
  5. package/dist/commands/blocks.js +128 -19
  6. package/dist/commands/blocks.js.map +1 -1
  7. package/dist/commands/doctor.d.ts +136 -0
  8. package/dist/commands/doctor.d.ts.map +1 -0
  9. package/dist/commands/doctor.js +696 -0
  10. package/dist/commands/doctor.js.map +1 -0
  11. package/dist/commands/remove-blocks.d.ts +4 -1
  12. package/dist/commands/remove-blocks.d.ts.map +1 -1
  13. package/dist/commands/remove-blocks.js +24 -6
  14. package/dist/commands/remove-blocks.js.map +1 -1
  15. package/dist/index.js +125 -4
  16. package/dist/index.js.map +1 -1
  17. package/dist/kits/blocks/.nextworks/docs/BLOCKS_QUICKSTART.md +104 -194
  18. package/dist/kits/blocks/.nextworks/docs/BLOCKS_README.md +115 -75
  19. package/dist/kits/blocks/.nextworks/docs/THEME_GUIDE.md +269 -251
  20. package/dist/kits/blocks/app/templates/digitalagency/PresetThemeVars.tsx +80 -80
  21. package/dist/kits/blocks/app/templates/digitalagency/README.md +42 -36
  22. package/dist/kits/blocks/app/templates/digitalagency/components/About.tsx +71 -99
  23. package/dist/kits/blocks/app/templates/digitalagency/components/CTA.tsx +40 -74
  24. package/dist/kits/blocks/app/templates/digitalagency/components/Contact.tsx +123 -227
  25. package/dist/kits/blocks/app/templates/digitalagency/components/Footer.tsx +89 -89
  26. package/dist/kits/blocks/app/templates/digitalagency/components/Hero.tsx +83 -90
  27. package/dist/kits/blocks/app/templates/digitalagency/components/Navbar.tsx +121 -168
  28. package/dist/kits/blocks/app/templates/digitalagency/components/NetworkPattern.tsx +288 -297
  29. package/dist/kits/blocks/app/templates/digitalagency/components/Portfolio.tsx +157 -157
  30. package/dist/kits/blocks/app/templates/digitalagency/components/Pricing.tsx +114 -114
  31. package/dist/kits/blocks/app/templates/digitalagency/components/Process.tsx +59 -59
  32. package/dist/kits/blocks/app/templates/digitalagency/components/Services.tsx +55 -55
  33. package/dist/kits/blocks/app/templates/digitalagency/components/Team.tsx +28 -28
  34. package/dist/kits/blocks/app/templates/digitalagency/components/Testimonials.tsx +65 -65
  35. package/dist/kits/blocks/app/templates/digitalagency/page.tsx +38 -38
  36. package/dist/kits/blocks/app/templates/gallery/PresetThemeVars.tsx +130 -85
  37. package/dist/kits/blocks/app/templates/gallery/page.tsx +357 -303
  38. package/dist/kits/blocks/app/templates/productlaunch/PresetThemeVars.tsx +75 -74
  39. package/dist/kits/blocks/app/templates/productlaunch/README.md +62 -55
  40. package/dist/kits/blocks/app/templates/productlaunch/components/About.tsx +84 -178
  41. package/dist/kits/blocks/app/templates/productlaunch/components/CTA.tsx +50 -93
  42. package/dist/kits/blocks/app/templates/productlaunch/components/Contact.tsx +231 -231
  43. package/dist/kits/blocks/app/templates/productlaunch/components/FAQ.tsx +86 -93
  44. package/dist/kits/blocks/app/templates/productlaunch/components/Features.tsx +83 -84
  45. package/dist/kits/blocks/app/templates/productlaunch/components/Footer.tsx +132 -132
  46. package/dist/kits/blocks/app/templates/productlaunch/components/Hero.tsx +88 -89
  47. package/dist/kits/blocks/app/templates/productlaunch/components/Navbar.tsx +116 -162
  48. package/dist/kits/blocks/app/templates/productlaunch/components/Pricing.tsx +106 -106
  49. package/dist/kits/blocks/app/templates/productlaunch/components/ProcessTimeline.tsx +110 -110
  50. package/dist/kits/blocks/app/templates/productlaunch/components/ServicesGrid.tsx +68 -68
  51. package/dist/kits/blocks/app/templates/productlaunch/components/Team.tsx +104 -104
  52. package/dist/kits/blocks/app/templates/productlaunch/components/Testimonials.tsx +90 -89
  53. package/dist/kits/blocks/app/templates/productlaunch/components/TrustBadges.tsx +76 -76
  54. package/dist/kits/blocks/app/templates/productlaunch/page.tsx +43 -43
  55. package/dist/kits/blocks/app/templates/saasdashboard/PresetThemeVars.tsx +80 -80
  56. package/dist/kits/blocks/app/templates/saasdashboard/README.md +44 -38
  57. package/dist/kits/blocks/app/templates/saasdashboard/components/Contact.tsx +129 -176
  58. package/dist/kits/blocks/app/templates/saasdashboard/components/Dashboard.tsx +293 -293
  59. package/dist/kits/blocks/app/templates/saasdashboard/components/FAQ.tsx +55 -55
  60. package/dist/kits/blocks/app/templates/saasdashboard/components/Features.tsx +90 -91
  61. package/dist/kits/blocks/app/templates/saasdashboard/components/Footer.tsx +77 -77
  62. package/dist/kits/blocks/app/templates/saasdashboard/components/Hero.tsx +104 -105
  63. package/dist/kits/blocks/app/templates/saasdashboard/components/Hero_mask.tsx +126 -127
  64. package/dist/kits/blocks/app/templates/saasdashboard/components/Navbar.tsx +117 -159
  65. package/dist/kits/blocks/app/templates/saasdashboard/components/Pricing.tsx +90 -90
  66. package/dist/kits/blocks/app/templates/saasdashboard/components/SmoothScroll.tsx +96 -97
  67. package/dist/kits/blocks/app/templates/saasdashboard/components/Testimonials.tsx +72 -72
  68. package/dist/kits/blocks/app/templates/saasdashboard/components/TrustBadges.tsx +53 -53
  69. package/dist/kits/blocks/app/templates/saasdashboard/page.tsx +39 -39
  70. package/dist/kits/blocks/components/enhanced-theme-provider.tsx +195 -183
  71. package/dist/kits/blocks/components/providers/BlocksAppProviders.tsx +27 -27
  72. package/dist/kits/blocks/components/sections/About.tsx +291 -291
  73. package/dist/kits/blocks/components/sections/CTA.tsx +257 -258
  74. package/dist/kits/blocks/components/sections/CommandShowcase.tsx +517 -0
  75. package/dist/kits/blocks/components/sections/Contact.tsx +267 -267
  76. package/dist/kits/blocks/components/sections/FAQ.tsx +214 -225
  77. package/dist/kits/blocks/components/sections/FeaturedProjectShowcase.tsx +687 -0
  78. package/dist/kits/blocks/components/sections/Features.tsx +268 -270
  79. package/dist/kits/blocks/components/sections/Footer.tsx +302 -302
  80. package/dist/kits/blocks/components/sections/HeroMotion.tsx +308 -308
  81. package/dist/kits/blocks/components/sections/HeroOverlay.tsx +358 -358
  82. package/dist/kits/blocks/components/sections/HeroProductDemo.tsx +246 -0
  83. package/dist/kits/blocks/components/sections/HeroSplit.tsx +352 -352
  84. package/dist/kits/blocks/components/sections/HeroWithVideo.tsx +495 -0
  85. package/dist/kits/blocks/components/sections/Navbar.tsx +352 -353
  86. package/dist/kits/blocks/components/sections/PortfolioSimple.tsx +549 -550
  87. package/dist/kits/blocks/components/sections/Pricing.tsx +264 -264
  88. package/dist/kits/blocks/components/sections/ProcessTimeline.tsx +325 -325
  89. package/dist/kits/blocks/components/sections/ProjectDeepDive.tsx +805 -0
  90. package/dist/kits/blocks/components/sections/SelectedWorkRail.tsx +485 -0
  91. package/dist/kits/blocks/components/sections/ServicesGrid.tsx +210 -210
  92. package/dist/kits/blocks/components/sections/Team.tsx +309 -309
  93. package/dist/kits/blocks/components/sections/Testimonials.tsx +158 -158
  94. package/dist/kits/blocks/components/sections/TrustBadges.tsx +162 -162
  95. package/dist/kits/blocks/components/sections/product-demo/ApprovalInboxPanel.tsx +128 -0
  96. package/dist/kits/blocks/components/sections/product-demo/DemoStage.tsx +519 -0
  97. package/dist/kits/blocks/components/sections/product-demo/DemoWindow.tsx +140 -0
  98. package/dist/kits/blocks/components/sections/product-demo/KnowledgePanel.tsx +130 -0
  99. package/dist/kits/blocks/components/sections/product-demo/RunConsolePanel.tsx +430 -0
  100. package/dist/kits/blocks/components/sections/product-demo/TaskListPanel.tsx +302 -0
  101. package/dist/kits/blocks/components/sections/product-demo/WorkflowStudioPanel.tsx +744 -0
  102. package/dist/kits/blocks/components/sections/product-demo/types.ts +262 -0
  103. package/dist/kits/blocks/components/theme-provider.tsx +1 -34
  104. package/dist/kits/blocks/components/ui/alert-dialog.tsx +134 -134
  105. package/dist/kits/blocks/components/ui/brand-node.tsx +121 -121
  106. package/dist/kits/blocks/components/ui/button.tsx +122 -122
  107. package/dist/kits/blocks/components/ui/card.tsx +95 -95
  108. package/dist/kits/blocks/components/ui/checkbox.tsx +30 -30
  109. package/dist/kits/blocks/components/ui/cta-button.tsx +125 -125
  110. package/dist/kits/blocks/components/ui/dropdown-menu.tsx +201 -201
  111. package/dist/kits/blocks/components/ui/feature-card.tsx +91 -91
  112. package/dist/kits/blocks/components/ui/input.tsx +27 -27
  113. package/dist/kits/blocks/components/ui/label.tsx +29 -29
  114. package/dist/kits/blocks/components/ui/pricing-card.tsx +120 -120
  115. package/dist/kits/blocks/components/ui/select.tsx +25 -25
  116. package/dist/kits/blocks/components/ui/skeleton.tsx +13 -13
  117. package/dist/kits/blocks/components/ui/table.tsx +98 -98
  118. package/dist/kits/blocks/components/ui/testimonial-card.tsx +108 -108
  119. package/dist/kits/blocks/components/ui/textarea.tsx +26 -26
  120. package/dist/kits/blocks/components/ui/theme-selector.tsx +243 -247
  121. package/dist/kits/blocks/components/ui/theme-toggle.tsx +74 -74
  122. package/dist/kits/blocks/components/ui/toaster.tsx +7 -7
  123. package/dist/kits/blocks/lib/themes.ts +400 -400
  124. package/dist/kits/blocks/lib/utils.ts +6 -9
  125. package/dist/kits/blocks/package-deps.json +40 -28
  126. package/dist/kits/blocks/tsconfig.json +11 -0
  127. package/dist/kits/blocks/tsconfig.tsbuildinfo +1 -0
  128. package/dist/utils/file-operations.d.ts +3 -1
  129. package/dist/utils/file-operations.d.ts.map +1 -1
  130. package/dist/utils/file-operations.js +84 -12
  131. package/dist/utils/file-operations.js.map +1 -1
  132. package/dist/utils/installation-tracker.d.ts +2 -2
  133. package/dist/utils/installation-tracker.d.ts.map +1 -1
  134. package/dist/utils/installation-tracker.js +11 -11
  135. package/dist/utils/installation-tracker.js.map +1 -1
  136. package/dist/utils/package-manager.d.ts +6 -0
  137. package/dist/utils/package-manager.d.ts.map +1 -0
  138. package/dist/utils/package-manager.js +58 -0
  139. package/dist/utils/package-manager.js.map +1 -0
  140. package/dist/utils/yarn-pnp.d.ts +6 -0
  141. package/dist/utils/yarn-pnp.d.ts.map +1 -0
  142. package/dist/utils/yarn-pnp.js +39 -0
  143. package/dist/utils/yarn-pnp.js.map +1 -0
  144. package/package.json +5 -2
  145. package/dist/kits/blocks/notes/THEME_GUIDE.md +0 -29
@@ -0,0 +1,262 @@
1
+ export type ProductDemoStatusTone =
2
+ | "neutral"
3
+ | "info"
4
+ | "success"
5
+ | "warning"
6
+ | "danger";
7
+
8
+ export type ProductDemoHighlightTone =
9
+ | ProductDemoStatusTone
10
+ | "accent"
11
+ | "muted";
12
+
13
+ export type ProductDemoWindowKey =
14
+ | "taskList"
15
+ | "workflowStudio"
16
+ | "runConsole"
17
+ | "approvalInbox"
18
+ | "knowledgePanel";
19
+
20
+ export interface ProductDemoWindowStatus {
21
+ label: string;
22
+ tone?: ProductDemoStatusTone;
23
+ }
24
+
25
+ export interface ProductDemoWindowLayoutHint {
26
+ x?: number;
27
+ y?: number;
28
+ width?: number;
29
+ height?: number;
30
+ zIndex?: number;
31
+ rotateDeg?: number;
32
+ }
33
+
34
+ export interface ProductDemoWindowMeta {
35
+ key: ProductDemoWindowKey;
36
+ title: string;
37
+ subtitle?: string;
38
+ status?: ProductDemoWindowStatus;
39
+ badge?: string;
40
+ layoutHint?: ProductDemoWindowLayoutHint;
41
+ }
42
+
43
+ export interface ProductDemoHighlightTarget {
44
+ id: string;
45
+ label?: string;
46
+ tone?: ProductDemoHighlightTone;
47
+ }
48
+
49
+ export interface ProductDemoWorkflowNode {
50
+ id: string;
51
+ label: string;
52
+ description?: string;
53
+ type?: string;
54
+ status?: ProductDemoStatusTone;
55
+ active?: boolean;
56
+ emphasized?: boolean;
57
+ metadata?: string;
58
+ }
59
+
60
+ export interface ProductDemoWorkflowBranch {
61
+ id: string;
62
+ fromNodeId: string;
63
+ toNodeId: string;
64
+ label?: string;
65
+ status?: ProductDemoStatusTone;
66
+ active?: boolean;
67
+ }
68
+
69
+ export interface ProductDemoWorkflowRegion {
70
+ id: string;
71
+ label: string;
72
+ description?: string;
73
+ status?: ProductDemoStatusTone;
74
+ nodeIds?: string[];
75
+ active?: boolean;
76
+ highlighted?: boolean;
77
+ }
78
+
79
+ export interface ProductDemoTaskItem {
80
+ id: string;
81
+ title: string;
82
+ description?: string;
83
+ meta?: string;
84
+ }
85
+
86
+ export interface ProductDemoTaskListState {
87
+ window: ProductDemoWindowMeta;
88
+ title?: string;
89
+ subtitle?: string;
90
+ items: ProductDemoTaskItem[];
91
+ activeItemId?: string;
92
+ }
93
+
94
+ export interface ProductDemoWorkflowTranscriptEntry {
95
+ id: string;
96
+ kind?: "title" | "prompt" | "activity" | "thought" | "message" | "file";
97
+ text: string;
98
+ path?: string;
99
+ added?: number;
100
+ removed?: number;
101
+ tone?: ProductDemoStatusTone;
102
+ }
103
+
104
+ export interface ProductDemoWorkflowComposerState {
105
+ placeholder?: string;
106
+ modeLabel?: string;
107
+ modelLabel?: string;
108
+ }
109
+
110
+ export interface ProductDemoPlaybackTimeline {
111
+ playbackMs?: number;
112
+ playbackStepDurationsMs?: number[];
113
+ playbackResetDelayMs?: number;
114
+ }
115
+
116
+ export interface ProductDemoWorkflowPlaybackConfig extends ProductDemoPlaybackTimeline {}
117
+
118
+ export interface ProductDemoRunConsolePlaybackConfig extends ProductDemoPlaybackTimeline {
119
+ playbackStepEntryIndices?: number[];
120
+ playbackStepVisibleLineCounts?: number[];
121
+ }
122
+
123
+ export interface ProductDemoScenarioPlayback {
124
+ workflowStudio?: ProductDemoWorkflowPlaybackConfig;
125
+ runConsole?: ProductDemoRunConsolePlaybackConfig;
126
+ }
127
+
128
+ export interface ProductDemoWorkflowStudioState {
129
+ window: ProductDemoWindowMeta;
130
+ title?: string;
131
+ subtitle?: string;
132
+ nodes: ProductDemoWorkflowNode[];
133
+ branches?: ProductDemoWorkflowBranch[];
134
+ regions?: ProductDemoWorkflowRegion[];
135
+ activeNodeId?: string;
136
+ activeRegionId?: string;
137
+ highlights?: ProductDemoHighlightTarget[];
138
+ transcript?: Array<string | ProductDemoWorkflowTranscriptEntry>;
139
+ composer?: ProductDemoWorkflowComposerState;
140
+ playbackMs?: number;
141
+ playbackStep?: number;
142
+ playbackStepDurationsMs?: number[];
143
+ playbackResetDelayMs?: number;
144
+ }
145
+
146
+ export interface ProductDemoRunConsoleEntry {
147
+ id: string;
148
+ message: string;
149
+ timestamp?: string;
150
+ source?: string;
151
+ status?: ProductDemoStatusTone;
152
+ detail?: string;
153
+ lineNumber?: string;
154
+ code?: string[];
155
+ highlighted?: boolean;
156
+ }
157
+
158
+ export interface ProductDemoRunConsoleMetric {
159
+ id: string;
160
+ label: string;
161
+ value: string;
162
+ tone?: ProductDemoStatusTone;
163
+ }
164
+
165
+ export interface ProductDemoRunConsoleState {
166
+ window: ProductDemoWindowMeta;
167
+ title?: string;
168
+ subtitle?: string;
169
+ statusLabel?: string;
170
+ progressLabel?: string;
171
+ entries: ProductDemoRunConsoleEntry[];
172
+ metrics?: ProductDemoRunConsoleMetric[];
173
+ progressPercent?: number;
174
+ activeEntryId?: string;
175
+ editorTabLabel?: string;
176
+ editorLanguage?: string;
177
+ editorSummary?: string;
178
+ highlights?: ProductDemoHighlightTarget[];
179
+ playbackMs?: number;
180
+ playbackStep?: number;
181
+ playbackStepDurationsMs?: number[];
182
+ playbackResetDelayMs?: number;
183
+ playbackStepEntryIndices?: number[];
184
+ playbackStepVisibleLineCounts?: number[];
185
+ }
186
+
187
+ export interface ProductDemoApprovalAction {
188
+ id: string;
189
+ label: string;
190
+ tone?: ProductDemoStatusTone;
191
+ }
192
+
193
+ export interface ProductDemoApprovalItem {
194
+ id: string;
195
+ title: string;
196
+ description?: string;
197
+ requester?: string;
198
+ status?: ProductDemoStatusTone;
199
+ priorityLabel?: string;
200
+ dueLabel?: string;
201
+ actions?: ProductDemoApprovalAction[];
202
+ highlighted?: boolean;
203
+ }
204
+
205
+ export interface ProductDemoApprovalInboxState {
206
+ window: ProductDemoWindowMeta;
207
+ title?: string;
208
+ subtitle?: string;
209
+ counts?: Array<{
210
+ id: string;
211
+ label: string;
212
+ value: string;
213
+ tone?: ProductDemoStatusTone;
214
+ }>;
215
+ items: ProductDemoApprovalItem[];
216
+ activeItemId?: string;
217
+ highlights?: ProductDemoHighlightTarget[];
218
+ }
219
+
220
+ export interface ProductDemoKnowledgeSource {
221
+ id: string;
222
+ label: string;
223
+ kind?: string;
224
+ status?: ProductDemoStatusTone;
225
+ }
226
+
227
+ export interface ProductDemoKnowledgeSnippet {
228
+ id: string;
229
+ title: string;
230
+ content: string;
231
+ sourceId?: string;
232
+ confidence?: string;
233
+ excerptLabel?: string;
234
+ tags?: string[];
235
+ highlighted?: boolean;
236
+ }
237
+
238
+ export interface ProductDemoKnowledgePanelState {
239
+ window: ProductDemoWindowMeta;
240
+ title?: string;
241
+ subtitle?: string;
242
+ query?: string;
243
+ summary?: string;
244
+ sources?: ProductDemoKnowledgeSource[];
245
+ snippets: ProductDemoKnowledgeSnippet[];
246
+ activeSnippetId?: string;
247
+ highlights?: ProductDemoHighlightTarget[];
248
+ }
249
+
250
+ export interface ProductDemoScenario {
251
+ key: string;
252
+ label?: string;
253
+ description?: string;
254
+ taskList: ProductDemoTaskListState;
255
+ workflowStudio: ProductDemoWorkflowStudioState;
256
+ runConsole: ProductDemoRunConsoleState;
257
+ approvalInbox: ProductDemoApprovalInboxState;
258
+ knowledgePanel: ProductDemoKnowledgePanelState;
259
+ playback?: ProductDemoScenarioPlayback;
260
+ activeWindow?: ProductDemoWindowKey;
261
+ highlights?: ProductDemoHighlightTarget[];
262
+ }
@@ -1,34 +1 @@
1
- export { ThemeProvider } from "@nextworks/blocks-core";
2
-
3
- // "use client";
4
-
5
- // import * as React from "react";
6
- // import { ThemeProvider as NextThemesProvider } from "next-themes";
7
- // import type { ThemeProviderProps as NextThemesProviderProps } from "next-themes";
8
-
9
- // interface ThemeProviderProps {
10
- // children: React.ReactNode;
11
- // attribute?: NextThemesProviderProps["attribute"];
12
- // defaultTheme?: NextThemesProviderProps["defaultTheme"];
13
- // enableSystem?: NextThemesProviderProps["enableSystem"];
14
- // disableTransitionOnChange?: NextThemesProviderProps["disableTransitionOnChange"];
15
- // }
16
-
17
- // export function ThemeProvider({
18
- // children,
19
- // attribute = "class",
20
- // defaultTheme = "system",
21
- // enableSystem = true,
22
- // disableTransitionOnChange = false,
23
- // }: ThemeProviderProps) {
24
- // return (
25
- // <NextThemesProvider
26
- // attribute={attribute}
27
- // defaultTheme={defaultTheme}
28
- // enableSystem={enableSystem}
29
- // disableTransitionOnChange={disableTransitionOnChange}
30
- // >
31
- // {children}
32
- // </NextThemesProvider>
33
- // );
34
- // }
1
+ export { ThemeProvider } from "@nextworks/blocks-core";
@@ -1,134 +1,134 @@
1
- "use client";
2
-
3
- import * as React from "react";
4
- import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
5
- import { cn } from "@/lib/utils";
6
-
7
- const AlertDialog = AlertDialogPrimitive.Root;
8
- const AlertDialogTrigger = AlertDialogPrimitive.Trigger;
9
- const AlertDialogPortal = AlertDialogPrimitive.Portal;
10
- const AlertDialogOverlay = React.forwardRef<
11
- React.ElementRef<typeof AlertDialogPrimitive.Overlay>,
12
- React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>
13
- >(({ className, ...props }, ref) => (
14
- <AlertDialogPrimitive.Overlay
15
- ref={ref}
16
- className={cn("fixed inset-0 z-50 bg-black/50 backdrop-blur-sm", className)}
17
- {...props}
18
- />
19
- ));
20
- AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
21
-
22
- const AlertDialogContent = React.forwardRef<
23
- React.ElementRef<typeof AlertDialogPrimitive.Content>,
24
- React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>
25
- >(({ className, ...props }, ref) => (
26
- <AlertDialogPortal>
27
- <AlertDialogOverlay />
28
- <AlertDialogPrimitive.Content
29
- ref={ref}
30
- className={cn(
31
- "bg-background fixed top-1/2 left-1/2 z-50 grid w-full max-w-md -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg border p-6 shadow-lg",
32
- className,
33
- )}
34
- {...props}
35
- />
36
- </AlertDialogPortal>
37
- ));
38
- AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
39
-
40
- function AlertDialogHeader({
41
- className,
42
- ...props
43
- }: React.HTMLAttributes<HTMLDivElement>) {
44
- return (
45
- <div
46
- className={cn("flex flex-col space-y-1 text-center", className)}
47
- {...props}
48
- />
49
- );
50
- }
51
-
52
- function AlertDialogFooter({
53
- className,
54
- ...props
55
- }: React.HTMLAttributes<HTMLDivElement>) {
56
- return (
57
- <div
58
- className={cn(
59
- "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
60
- className,
61
- )}
62
- {...props}
63
- />
64
- );
65
- }
66
-
67
- const AlertDialogTitle = React.forwardRef<
68
- React.ElementRef<typeof AlertDialogPrimitive.Title>,
69
- React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>
70
- >(({ className, ...props }, ref) => (
71
- <AlertDialogPrimitive.Title
72
- ref={ref}
73
- className={cn("text-lg font-semibold", className)}
74
- {...props}
75
- />
76
- ));
77
- AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
78
-
79
- const AlertDialogDescription = React.forwardRef<
80
- React.ElementRef<typeof AlertDialogPrimitive.Description>,
81
- React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>
82
- >(({ className, ...props }, ref) => (
83
- <AlertDialogPrimitive.Description
84
- ref={ref}
85
- className={cn("text-muted-foreground text-sm", className)}
86
- {...props}
87
- />
88
- ));
89
- AlertDialogDescription.displayName =
90
- AlertDialogPrimitive.Description.displayName;
91
-
92
- const AlertDialogAction = React.forwardRef<
93
- React.ElementRef<typeof AlertDialogPrimitive.Action>,
94
- React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>
95
- >(({ className, ...props }, ref) => (
96
- <AlertDialogPrimitive.Action
97
- ref={ref}
98
- className={cn(
99
- "bg-destructive text-destructive-foreground inline-flex h-9 items-center justify-center rounded-md px-4 text-sm font-medium shadow transition-colors hover:opacity-90 focus:outline-none",
100
- className,
101
- )}
102
- {...props}
103
- />
104
- ));
105
- AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
106
-
107
- const AlertDialogCancel = React.forwardRef<
108
- React.ElementRef<typeof AlertDialogPrimitive.Cancel>,
109
- React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>
110
- >(({ className, ...props }, ref) => (
111
- <AlertDialogPrimitive.Cancel
112
- ref={ref}
113
- className={cn(
114
- "bg-background hover:bg-muted inline-flex h-9 items-center justify-center rounded-md border px-4 text-sm font-medium shadow focus:outline-none",
115
- className,
116
- )}
117
- {...props}
118
- />
119
- ));
120
- AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
121
-
122
- export {
123
- AlertDialog,
124
- AlertDialogAction,
125
- AlertDialogCancel,
126
- AlertDialogContent,
127
- AlertDialogDescription,
128
- AlertDialogFooter,
129
- AlertDialogHeader,
130
- AlertDialogOverlay,
131
- AlertDialogPortal,
132
- AlertDialogTitle,
133
- AlertDialogTrigger,
134
- };
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+ import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
5
+ import { cn } from "@/lib/utils";
6
+
7
+ const AlertDialog = AlertDialogPrimitive.Root;
8
+ const AlertDialogTrigger = AlertDialogPrimitive.Trigger;
9
+ const AlertDialogPortal = AlertDialogPrimitive.Portal;
10
+ const AlertDialogOverlay = React.forwardRef<
11
+ React.ElementRef<typeof AlertDialogPrimitive.Overlay>,
12
+ React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>
13
+ >(({ className, ...props }, ref) => (
14
+ <AlertDialogPrimitive.Overlay
15
+ ref={ref}
16
+ className={cn("fixed inset-0 z-50 bg-black/50 backdrop-blur-sm", className)}
17
+ {...props}
18
+ />
19
+ ));
20
+ AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
21
+
22
+ const AlertDialogContent = React.forwardRef<
23
+ React.ElementRef<typeof AlertDialogPrimitive.Content>,
24
+ React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>
25
+ >(({ className, ...props }, ref) => (
26
+ <AlertDialogPortal>
27
+ <AlertDialogOverlay />
28
+ <AlertDialogPrimitive.Content
29
+ ref={ref}
30
+ className={cn(
31
+ "bg-background fixed top-1/2 left-1/2 z-50 grid w-full max-w-md -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg border p-6 shadow-lg",
32
+ className,
33
+ )}
34
+ {...props}
35
+ />
36
+ </AlertDialogPortal>
37
+ ));
38
+ AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
39
+
40
+ function AlertDialogHeader({
41
+ className,
42
+ ...props
43
+ }: React.HTMLAttributes<HTMLDivElement>) {
44
+ return (
45
+ <div
46
+ className={cn("flex flex-col space-y-1 text-center", className)}
47
+ {...props}
48
+ />
49
+ );
50
+ }
51
+
52
+ function AlertDialogFooter({
53
+ className,
54
+ ...props
55
+ }: React.HTMLAttributes<HTMLDivElement>) {
56
+ return (
57
+ <div
58
+ className={cn(
59
+ "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
60
+ className,
61
+ )}
62
+ {...props}
63
+ />
64
+ );
65
+ }
66
+
67
+ const AlertDialogTitle = React.forwardRef<
68
+ React.ElementRef<typeof AlertDialogPrimitive.Title>,
69
+ React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>
70
+ >(({ className, ...props }, ref) => (
71
+ <AlertDialogPrimitive.Title
72
+ ref={ref}
73
+ className={cn("text-lg font-semibold", className)}
74
+ {...props}
75
+ />
76
+ ));
77
+ AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
78
+
79
+ const AlertDialogDescription = React.forwardRef<
80
+ React.ElementRef<typeof AlertDialogPrimitive.Description>,
81
+ React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>
82
+ >(({ className, ...props }, ref) => (
83
+ <AlertDialogPrimitive.Description
84
+ ref={ref}
85
+ className={cn("text-muted-foreground text-sm", className)}
86
+ {...props}
87
+ />
88
+ ));
89
+ AlertDialogDescription.displayName =
90
+ AlertDialogPrimitive.Description.displayName;
91
+
92
+ const AlertDialogAction = React.forwardRef<
93
+ React.ElementRef<typeof AlertDialogPrimitive.Action>,
94
+ React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>
95
+ >(({ className, ...props }, ref) => (
96
+ <AlertDialogPrimitive.Action
97
+ ref={ref}
98
+ className={cn(
99
+ "bg-destructive text-destructive-foreground inline-flex h-9 items-center justify-center rounded-md px-4 text-sm font-medium shadow transition-colors hover:opacity-90 focus:outline-none",
100
+ className,
101
+ )}
102
+ {...props}
103
+ />
104
+ ));
105
+ AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
106
+
107
+ const AlertDialogCancel = React.forwardRef<
108
+ React.ElementRef<typeof AlertDialogPrimitive.Cancel>,
109
+ React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>
110
+ >(({ className, ...props }, ref) => (
111
+ <AlertDialogPrimitive.Cancel
112
+ ref={ref}
113
+ className={cn(
114
+ "bg-background hover:bg-muted inline-flex h-9 items-center justify-center rounded-md border px-4 text-sm font-medium shadow focus:outline-none",
115
+ className,
116
+ )}
117
+ {...props}
118
+ />
119
+ ));
120
+ AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
121
+
122
+ export {
123
+ AlertDialog,
124
+ AlertDialogAction,
125
+ AlertDialogCancel,
126
+ AlertDialogContent,
127
+ AlertDialogDescription,
128
+ AlertDialogFooter,
129
+ AlertDialogHeader,
130
+ AlertDialogOverlay,
131
+ AlertDialogPortal,
132
+ AlertDialogTitle,
133
+ AlertDialogTrigger,
134
+ };