Repository navigation
Expand file tree
/
Copy pathComponentRegistry.cs
More file actions
579 lines (564 loc) · 31 KB
/
Copy pathComponentRegistry.cs
File metadata and controls
579 lines (564 loc) · 31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
using ShellUI.Core.Models;
using ShellUI.Templates.Templates;
namespace ShellUI.Templates;
public static class ComponentRegistry
{
public static readonly Dictionary<string, ComponentMetadata> Components = new()
{
{ "shell", ShellTemplate.Metadata },
{ "shellui-js", ShellUIJsTemplate.Metadata },
{ "button", ButtonTemplate.Metadata },
{ "button-variants", ButtonVariantsTemplate.Metadata },
{ "input-variants", InputVariantsTemplate.Metadata },
{ "textarea-variants", TextareaVariantsTemplate.Metadata },
{ "theme-toggle", ThemeToggleTemplate.Metadata },
{ "input", InputTemplate.Metadata },
{ "card", CardTemplate.Metadata },
{ "card-header", CardHeaderTemplate.Metadata },
{ "card-title", CardTitleTemplate.Metadata },
{ "card-description", CardDescriptionTemplate.Metadata },
{ "card-content", CardContentTemplate.Metadata },
{ "card-footer", CardFooterTemplate.Metadata },
{ "alert", AlertTemplate.Metadata },
{ "badge", BadgeTemplate.Metadata },
{ "label", LabelTemplate.Metadata },
{ "textarea", TextareaTemplate.Metadata },
{ "dialog", DialogTemplate.Metadata },
{ "dialog-trigger", DialogTriggerTemplate.Metadata },
{ "dialog-content", DialogContentTemplate.Metadata },
{ "dialog-header", DialogHeaderTemplate.Metadata },
{ "dialog-footer", DialogFooterTemplate.Metadata },
{ "dialog-title", DialogTitleTemplate.Metadata },
{ "dialog-description", DialogDescriptionTemplate.Metadata },
{ "dialog-close", DialogCloseTemplate.Metadata },
{ "skeleton", SkeletonTemplate.Metadata },
{ "progress", ProgressTemplate.Metadata },
{ "separator", SeparatorTemplate.Metadata },
{ "select", SelectTemplate.Metadata },
{ "typed-select", TypedSelectTemplate.Metadata },
{ "select-trigger", SelectTriggerTemplate.Metadata },
{ "select-content", SelectContentTemplate.Metadata },
{ "select-item", SelectItemTemplate.Metadata },
{ "checkbox", CheckboxTemplate.Metadata },
{ "switch", SwitchTemplate.Metadata },
{ "tabs", TabsTemplate.Metadata },
{ "tabs-list", TabsListTemplate.Metadata },
{ "tabs-trigger", TabsTriggerTemplate.Metadata },
{ "tabs-content", TabsContentTemplate.Metadata },
{ "tab-models", TabModelsTemplate.Metadata },
{ "navbar", NavbarTemplate.Metadata },
{ "sidebar", SidebarTemplate.Metadata },
{ "sidebar-models", SidebarModelsTemplate.Metadata },
{ "sidebar-js", SidebarJsTemplate.Metadata },
{ "sidebar-provider", SidebarProviderTemplate.Metadata },
{ "sidebar-header", SidebarHeaderTemplate.Metadata },
{ "sidebar-content", SidebarContentTemplate.Metadata },
{ "sidebar-footer", SidebarFooterTemplate.Metadata },
{ "sidebar-group", SidebarGroupTemplate.Metadata },
{ "sidebar-group-label", SidebarGroupLabelTemplate.Metadata },
{ "sidebar-group-content", SidebarGroupContentTemplate.Metadata },
{ "sidebar-menu", SidebarMenuTemplate.Metadata },
{ "sidebar-menu-item", SidebarMenuItemTemplate.Metadata },
{ "sidebar-menu-button", SidebarMenuButtonTemplate.Metadata },
{ "sidebar-menu-sub", SidebarMenuSubTemplate.Metadata },
{ "sidebar-menu-sub-item", SidebarMenuSubItemTemplate.Metadata },
{ "sidebar-menu-sub-button", SidebarMenuSubButtonTemplate.Metadata },
{ "sidebar-menu-action", SidebarMenuActionTemplate.Metadata },
{ "sidebar-menu-badge", SidebarMenuBadgeTemplate.Metadata },
{ "sidebar-separator", SidebarSeparatorTemplate.Metadata },
{ "sidebar-trigger", SidebarTriggerTemplate.Metadata },
{ "sidebar-inset", SidebarInsetTemplate.Metadata },
{ "sidebar-rail", SidebarRailTemplate.Metadata },
{ "app-sidebar", AppSidebarTemplate.Metadata },
{ "sidebar-account", SidebarAccountTemplate.Metadata },
{ "dashboard-01", DashboardLayout01Template.Metadata },
{ "dashboard-02", DashboardLayout02Template.Metadata },
{ "auth-01", AuthLayout01Template.Metadata },
{ "auth-02", AuthLayout02Template.Metadata },
{ "auth-03", AuthLayout03Template.Metadata },
{ "dropdown", DropdownTemplate.Metadata },
{ "dropdown-trigger", DropdownTriggerTemplate.Metadata },
{ "dropdown-content", DropdownContentTemplate.Metadata },
{ "dropdown-item", DropdownItemTemplate.Metadata },
{ "radio-group", RadioGroupTemplate.Metadata },
{ "radio-group-item", RadioGroupItemTemplate.Metadata },
{ "slider", SliderTemplate.Metadata },
{ "toggle", ToggleTemplate.Metadata },
{ "accordion", AccordionTemplate.Metadata },
{ "accordion-type", AccordionTypeTemplate.Metadata },
{ "accordion-item", AccordionItemTemplate.Metadata },
{ "accordion-trigger", AccordionTriggerTemplate.Metadata },
{ "accordion-content", AccordionContentTemplate.Metadata },
{ "breadcrumb", BreadcrumbTemplate.Metadata },
{ "breadcrumb-ellipsis", BreadcrumbEllipsisTemplate.Metadata },
{ "breadcrumb-separator", BreadcrumbSeparatorTemplate.Metadata },
{ "breadcrumb-page", BreadcrumbPageTemplate.Metadata },
{ "breadcrumb-link", BreadcrumbLinkTemplate.Metadata },
{ "breadcrumb-list", BreadcrumbListTemplate.Metadata },
{ "breadcrumb-item", BreadcrumbItemTemplate.Metadata },
{ "toast", ToastTemplate.Metadata },
{ "sonner", SonnerTemplate.Metadata },
{ "sonner-service", SonnerServiceTemplate.Metadata },
{ "sonner-variants", SonnerVariantsTemplate.Metadata },
{ "tooltip", TooltipTemplate.Metadata },
{ "popover", PopoverTemplate.Metadata },
{ "popover-trigger", PopoverTriggerTemplate.Metadata },
{ "popover-content", PopoverContentTemplate.Metadata },
{ "avatar", AvatarTemplate.Metadata },
{ "avatar-variants", AvatarVariantsTemplate.Metadata },
{ "badge-variants", BadgeVariantsTemplate.Metadata },
{ "alert-variants", AlertVariantsTemplate.Metadata },
{ "toggle-variants", ToggleVariantsTemplate.Metadata },
{ "table", TableTemplate.Metadata },
{ "table-header", TableHeaderTemplate.Metadata },
{ "table-body", TableBodyTemplate.Metadata },
{ "table-row", TableRowTemplate.Metadata },
{ "table-head", TableHeadTemplate.Metadata },
{ "table-cell", TableCellTemplate.Metadata },
{ "form", FormTemplate.Metadata },
{ "form-message", FormMessageTemplate.Metadata },
{ "form-description", FormDescriptionTemplate.Metadata },
{ "form-control", FormControlTemplate.Metadata },
{ "form-label", FormLabelTemplate.Metadata },
{ "form-item", FormItemTemplate.Metadata },
{ "form-field", FormFieldTemplate.Metadata },
{ "input-otp", InputOTPTemplate.Metadata },
{ "combobox", ComboboxTemplate.Metadata },
{ "date-picker", DatePickerTemplate.Metadata },
{ "date-range-picker", DateRangePickerTemplate.Metadata },
{ "time-picker", TimePickerTemplate.Metadata },
{ "navigation-menu", NavigationMenuTemplate.Metadata },
{ "nav-list", NavListTemplate.Metadata },
{ "nav-item", NavItemTemplate.Metadata },
{ "nav-trigger", NavTriggerTemplate.Metadata },
{ "nav-content", NavContentTemplate.Metadata },
{ "navigation-menu-item", NavigationMenuItemTemplate.Metadata },
{ "menubar", MenubarTemplate.Metadata },
{ "menubar-separator", MenubarSeparatorTemplate.Metadata },
{ "menubar-content", MenubarContentTemplate.Metadata },
{ "menubar-trigger", MenubarTriggerTemplate.Metadata },
{ "menubar-menu", MenubarMenuTemplate.Metadata },
{ "menubar-item", MenubarItemTemplate.Metadata },
{ "pagination", PaginationTemplate.Metadata },
{ "pagination-ellipsis", PaginationEllipsisTemplate.Metadata },
{ "pagination-next", PaginationNextTemplate.Metadata },
{ "pagination-previous", PaginationPreviousTemplate.Metadata },
{ "pagination-link", PaginationLinkTemplate.Metadata },
{ "pagination-item", PaginationItemTemplate.Metadata },
{ "pagination-content", PaginationContentTemplate.Metadata },
{ "scroll-area", ScrollAreaTemplate.Metadata },
{ "resizable", ResizableTemplate.Metadata },
{ "sheet", SheetTemplate.Metadata },
{ "sheet-close", SheetCloseTemplate.Metadata },
{ "sheet-footer", SheetFooterTemplate.Metadata },
{ "sheet-description", SheetDescriptionTemplate.Metadata },
{ "sheet-title", SheetTitleTemplate.Metadata },
{ "sheet-header", SheetHeaderTemplate.Metadata },
{ "sheet-trigger", SheetTriggerTemplate.Metadata },
{ "sheet-content", SheetContentTemplate.Metadata },
{ "sheet-variants", SheetVariantsTemplate.Metadata },
{ "drawer", DrawerTemplate.Metadata },
{ "drawer-close", DrawerCloseTemplate.Metadata },
{ "drawer-footer", DrawerFooterTemplate.Metadata },
{ "drawer-description", DrawerDescriptionTemplate.Metadata },
{ "drawer-title", DrawerTitleTemplate.Metadata },
{ "drawer-header", DrawerHeaderTemplate.Metadata },
{ "drawer-trigger", DrawerTriggerTemplate.Metadata },
{ "drawer-content", DrawerContentTemplate.Metadata },
{ "drawer-variants", DrawerVariantsTemplate.Metadata },
{ "collapsible", CollapsibleTemplate.Metadata },
{ "collapsible-trigger", CollapsibleTriggerTemplate.Metadata },
{ "collapsible-content", CollapsibleContentTemplate.Metadata },
{ "data-table", DataTableTemplate.Metadata },
{ "data-table-models", DataTableModelsTemplate.Metadata },
{ "alert-dialog", AlertDialogTemplate.Metadata },
{ "alert-dialog-cancel", AlertDialogCancelTemplate.Metadata },
{ "alert-dialog-action", AlertDialogActionTemplate.Metadata },
{ "alert-dialog-footer", AlertDialogFooterTemplate.Metadata },
{ "alert-dialog-description", AlertDialogDescriptionTemplate.Metadata },
{ "alert-dialog-title", AlertDialogTitleTemplate.Metadata },
{ "alert-dialog-header", AlertDialogHeaderTemplate.Metadata },
{ "alert-dialog-content", AlertDialogContentTemplate.Metadata },
{ "alert-dialog-trigger", AlertDialogTriggerTemplate.Metadata },
{ "calendar", CalendarTemplate.Metadata },
{ "loading", LoadingTemplate.Metadata },
{ "hover-card", HoverCardTemplate.Metadata },
{ "hover-card-trigger", HoverCardTriggerTemplate.Metadata },
{ "hover-card-content", HoverCardContentTemplate.Metadata },
{ "command", CommandTemplate.Metadata },
{ "command-separator", CommandSeparatorTemplate.Metadata },
{ "command-empty", CommandEmptyTemplate.Metadata },
{ "command-option", CommandOptionTemplate.Metadata },
{ "command-group", CommandGroupTemplate.Metadata },
{ "command-list", CommandListTemplate.Metadata },
{ "command-input", CommandInputTemplate.Metadata },
{ "command-palette", CommandPaletteTemplate.Metadata },
{ "data-picker", DataPickerTemplate.Metadata },
{ "multi-select", MultiSelectTemplate.Metadata },
{ "tag-input", TagInputTemplate.Metadata },
{ "context-menu", ContextMenuTemplate.Metadata },
{ "context-menu-trigger", ContextMenuTriggerTemplate.Metadata },
{ "context-menu-content", ContextMenuContentTemplate.Metadata },
{ "context-menu-option", ContextMenuOptionTemplate.Metadata },
{ "context-menu-models", ContextMenuModelsTemplate.Metadata },
{ "empty-state", EmptyStateTemplate.Metadata },
{ "stepper", StepperTemplate.Metadata },
{ "stepper-list", StepperListTemplate.Metadata },
{ "stepper-step", StepperStepTemplate.Metadata },
{ "stepper-content", StepperContentTemplate.Metadata },
{ "carousel", CarouselTemplate.Metadata },
{ "carousel-list", CarouselListTemplate.Metadata },
{ "carousel-slide", CarouselSlideTemplate.Metadata },
{ "carousel-item", CarouselItemTemplate.Metadata },
{ "carousel-content", CarouselContentTemplate.Metadata },
{ "carousel-previous", CarouselPreviousTemplate.Metadata },
{ "carousel-next", CarouselNextTemplate.Metadata },
{ "carousel-dots", CarouselDotsTemplate.Metadata },
{ "file-upload", FileUploadTemplate.Metadata },
{ "chart-variants", ChartVariantsTemplate.Metadata },
{ "chart-styles", ChartStylesTemplate.Metadata },
{ "chart", ChartTemplate.Metadata },
{ "bar-chart", BarChartTemplate.Metadata },
{ "line-chart", LineChartTemplate.Metadata },
{ "pie-chart", PieChartTemplate.Metadata },
{ "donut-chart", DonutChartTemplate.Metadata },
{ "radar-chart", RadarChartTemplate.Metadata },
{ "radial-chart", RadialChartTemplate.Metadata },
{ "area-chart", AreaChartTemplate.Metadata },
{ "multi-series-chart", MultiSeriesChartTemplate.Metadata },
{ "chart-series", ChartSeriesTemplate.Metadata },
{ "copy-button", CopyButtonTemplate.Metadata },
{ "callout-variants", CalloutVariantsTemplate.Metadata },
{ "callout", CalloutTemplate.Metadata },
{ "link-card", LinkCardTemplate.Metadata },
{ "prev-next-nav", PrevNextNavTemplate.Metadata },
{ "kbd", KbdTemplate.Metadata },
{ "aspect-ratio", AspectRatioTemplate.Metadata },
{ "button-group", ButtonGroupTemplate.Metadata },
{ "toggle-group", ToggleGroupTemplate.Metadata },
{ "toggle-group-item", ToggleGroupItemTemplate.Metadata },
{ "input-group", InputGroupTemplate.Metadata },
{ "number-input", NumberInputTemplate.Metadata },
{ "stat-card", StatCardTemplate.Metadata },
{ "timeline", TimelineTemplate.Metadata },
{ "timeline-item", TimelineItemTemplate.Metadata },
{ "tree-view", TreeViewTemplate.Metadata },
{ "tree-view-item", TreeViewItemTemplate.Metadata },
{ "qr-code", QrCodeTemplate.Metadata },
{ "image-viewer", ImageViewerTemplate.Metadata },
{ "chat-message", ChatMessageTemplate.Metadata },
{ "chat-input", ChatInputTemplate.Metadata },
{ "chat", ChatTemplate.Metadata },
{ "command-models", CommandModelsTemplate.Metadata },
{ "stepper-models", StepperModelsTemplate.Metadata },
};
public static string? GetComponentContent(string componentName)
{
return componentName.ToLower() switch
{
"shell" => ShellTemplate.Content,
"shellui-js" => ShellUIJsTemplate.Content,
"button" => ButtonTemplate.Content,
"button-variants" => ButtonVariantsTemplate.Content,
"input-variants" => InputVariantsTemplate.Content,
"textarea-variants" => TextareaVariantsTemplate.Content,
"theme-toggle" => ThemeToggleTemplate.Content,
"input" => InputTemplate.Content,
"card" => CardTemplate.Content,
"card-header" => CardHeaderTemplate.Content,
"card-title" => CardTitleTemplate.Content,
"card-description" => CardDescriptionTemplate.Content,
"card-content" => CardContentTemplate.Content,
"card-footer" => CardFooterTemplate.Content,
"alert" => AlertTemplate.Content,
"badge" => BadgeTemplate.Content,
"label" => LabelTemplate.Content,
"textarea" => TextareaTemplate.Content,
"dialog" => DialogTemplate.Content,
"dialog-trigger" => DialogTriggerTemplate.Content,
"dialog-content" => DialogContentTemplate.Content,
"dialog-header" => DialogHeaderTemplate.Content,
"dialog-footer" => DialogFooterTemplate.Content,
"dialog-title" => DialogTitleTemplate.Content,
"dialog-description" => DialogDescriptionTemplate.Content,
"dialog-close" => DialogCloseTemplate.Content,
"skeleton" => SkeletonTemplate.Content,
"progress" => ProgressTemplate.Content,
"separator" => SeparatorTemplate.Content,
"select" => SelectTemplate.Content,
"typed-select" => TypedSelectTemplate.Content,
"select-trigger" => SelectTriggerTemplate.Content,
"select-content" => SelectContentTemplate.Content,
"select-item" => SelectItemTemplate.Content,
"checkbox" => CheckboxTemplate.Content,
"switch" => SwitchTemplate.Content,
"tabs" => TabsTemplate.Content,
"tabs-list" => TabsListTemplate.Content,
"tabs-trigger" => TabsTriggerTemplate.Content,
"tabs-content" => TabsContentTemplate.Content,
"tab-models" => TabModelsTemplate.Content,
"navbar" => NavbarTemplate.Content,
"sidebar" => SidebarTemplate.Content,
"sidebar-models" => SidebarModelsTemplate.Content,
"sidebar-js" => SidebarJsTemplate.Content,
"sidebar-provider" => SidebarProviderTemplate.Content,
"sidebar-header" => SidebarHeaderTemplate.Content,
"sidebar-content" => SidebarContentTemplate.Content,
"sidebar-footer" => SidebarFooterTemplate.Content,
"sidebar-group" => SidebarGroupTemplate.Content,
"sidebar-group-label" => SidebarGroupLabelTemplate.Content,
"sidebar-group-content" => SidebarGroupContentTemplate.Content,
"sidebar-menu" => SidebarMenuTemplate.Content,
"sidebar-menu-item" => SidebarMenuItemTemplate.Content,
"sidebar-menu-button" => SidebarMenuButtonTemplate.Content,
"sidebar-menu-sub" => SidebarMenuSubTemplate.Content,
"sidebar-menu-sub-item" => SidebarMenuSubItemTemplate.Content,
"sidebar-menu-sub-button" => SidebarMenuSubButtonTemplate.Content,
"sidebar-menu-action" => SidebarMenuActionTemplate.Content,
"sidebar-menu-badge" => SidebarMenuBadgeTemplate.Content,
"sidebar-separator" => SidebarSeparatorTemplate.Content,
"sidebar-trigger" => SidebarTriggerTemplate.Content,
"sidebar-inset" => SidebarInsetTemplate.Content,
"sidebar-rail" => SidebarRailTemplate.Content,
"app-sidebar" => AppSidebarTemplate.Content,
"sidebar-account" => SidebarAccountTemplate.Content,
"dashboard-01" => DashboardLayout01Template.Content,
"dashboard-02" => DashboardLayout02Template.Content,
"auth-01" => AuthLayout01Template.Content,
"auth-02" => AuthLayout02Template.Content,
"auth-03" => AuthLayout03Template.Content,
"dropdown" => DropdownTemplate.Content,
"dropdown-trigger" => DropdownTriggerTemplate.Content,
"dropdown-content" => DropdownContentTemplate.Content,
"dropdown-item" => DropdownItemTemplate.Content,
"radio-group" => RadioGroupTemplate.Content,
"radio-group-item" => RadioGroupItemTemplate.Content,
"slider" => SliderTemplate.Content,
"toggle" => ToggleTemplate.Content,
"accordion" => AccordionTemplate.Content,
"accordion-type" => AccordionTypeTemplate.Content,
"accordion-item" => AccordionItemTemplate.Content,
"accordion-trigger" => AccordionTriggerTemplate.Content,
"accordion-content" => AccordionContentTemplate.Content,
"breadcrumb" => BreadcrumbTemplate.Content,
"breadcrumb-ellipsis" => BreadcrumbEllipsisTemplate.Content,
"breadcrumb-separator" => BreadcrumbSeparatorTemplate.Content,
"breadcrumb-page" => BreadcrumbPageTemplate.Content,
"breadcrumb-link" => BreadcrumbLinkTemplate.Content,
"breadcrumb-list" => BreadcrumbListTemplate.Content,
"breadcrumb-item" => BreadcrumbItemTemplate.Content,
"toast" => ToastTemplate.Content,
"sonner" => SonnerTemplate.Content,
"sonner-service" => SonnerServiceTemplate.Content,
"sonner-variants" => SonnerVariantsTemplate.Content,
"tooltip" => TooltipTemplate.Content,
"popover" => PopoverTemplate.Content,
"popover-trigger" => PopoverTriggerTemplate.Content,
"popover-content" => PopoverContentTemplate.Content,
"avatar" => AvatarTemplate.Content,
"avatar-variants" => AvatarVariantsTemplate.Content,
"badge-variants" => BadgeVariantsTemplate.Content,
"alert-variants" => AlertVariantsTemplate.Content,
"toggle-variants" => ToggleVariantsTemplate.Content,
"table" => TableTemplate.Content,
"table-header" => TableHeaderTemplate.Content,
"table-body" => TableBodyTemplate.Content,
"table-row" => TableRowTemplate.Content,
"table-head" => TableHeadTemplate.Content,
"table-cell" => TableCellTemplate.Content,
"form" => FormTemplate.Content,
"form-message" => FormMessageTemplate.Content,
"form-description" => FormDescriptionTemplate.Content,
"form-control" => FormControlTemplate.Content,
"form-label" => FormLabelTemplate.Content,
"form-item" => FormItemTemplate.Content,
"form-field" => FormFieldTemplate.Content,
"input-otp" => InputOTPTemplate.Content,
"combobox" => ComboboxTemplate.Content,
"date-picker" => DatePickerTemplate.Content,
"date-range-picker" => DateRangePickerTemplate.Content,
"time-picker" => TimePickerTemplate.Content,
"navigation-menu" => NavigationMenuTemplate.Content,
"nav-list" => NavListTemplate.Content,
"nav-item" => NavItemTemplate.Content,
"nav-trigger" => NavTriggerTemplate.Content,
"nav-content" => NavContentTemplate.Content,
"navigation-menu-item" => NavigationMenuItemTemplate.Content,
"menubar" => MenubarTemplate.Content,
"menubar-separator" => MenubarSeparatorTemplate.Content,
"menubar-content" => MenubarContentTemplate.Content,
"menubar-trigger" => MenubarTriggerTemplate.Content,
"menubar-menu" => MenubarMenuTemplate.Content,
"menubar-item" => MenubarItemTemplate.Content,
"pagination" => PaginationTemplate.Content,
"pagination-ellipsis" => PaginationEllipsisTemplate.Content,
"pagination-next" => PaginationNextTemplate.Content,
"pagination-previous" => PaginationPreviousTemplate.Content,
"pagination-link" => PaginationLinkTemplate.Content,
"pagination-item" => PaginationItemTemplate.Content,
"pagination-content" => PaginationContentTemplate.Content,
"scroll-area" => ScrollAreaTemplate.Content,
"resizable" => ResizableTemplate.Content,
"sheet" => SheetTemplate.Content,
"sheet-close" => SheetCloseTemplate.Content,
"sheet-footer" => SheetFooterTemplate.Content,
"sheet-description" => SheetDescriptionTemplate.Content,
"sheet-title" => SheetTitleTemplate.Content,
"sheet-header" => SheetHeaderTemplate.Content,
"sheet-trigger" => SheetTriggerTemplate.Content,
"sheet-content" => SheetContentTemplate.Content,
"sheet-variants" => SheetVariantsTemplate.Content,
"drawer" => DrawerTemplate.Content,
"drawer-close" => DrawerCloseTemplate.Content,
"drawer-footer" => DrawerFooterTemplate.Content,
"drawer-description" => DrawerDescriptionTemplate.Content,
"drawer-title" => DrawerTitleTemplate.Content,
"drawer-header" => DrawerHeaderTemplate.Content,
"drawer-trigger" => DrawerTriggerTemplate.Content,
"drawer-content" => DrawerContentTemplate.Content,
"drawer-variants" => DrawerVariantsTemplate.Content,
"collapsible" => CollapsibleTemplate.Content,
"collapsible-trigger" => CollapsibleTriggerTemplate.Content,
"collapsible-content" => CollapsibleContentTemplate.Content,
"data-table" => DataTableTemplate.Content,
"data-table-models" => DataTableModelsTemplate.Content,
"alert-dialog" => AlertDialogTemplate.Content,
"alert-dialog-cancel" => AlertDialogCancelTemplate.Content,
"alert-dialog-action" => AlertDialogActionTemplate.Content,
"alert-dialog-footer" => AlertDialogFooterTemplate.Content,
"alert-dialog-description" => AlertDialogDescriptionTemplate.Content,
"alert-dialog-title" => AlertDialogTitleTemplate.Content,
"alert-dialog-header" => AlertDialogHeaderTemplate.Content,
"alert-dialog-content" => AlertDialogContentTemplate.Content,
"alert-dialog-trigger" => AlertDialogTriggerTemplate.Content,
"calendar" => CalendarTemplate.Content,
"loading" => LoadingTemplate.Content,
"hover-card" => HoverCardTemplate.Content,
"hover-card-trigger" => HoverCardTriggerTemplate.Content,
"hover-card-content" => HoverCardContentTemplate.Content,
"command" => CommandTemplate.Content,
"command-separator" => CommandSeparatorTemplate.Content,
"command-empty" => CommandEmptyTemplate.Content,
"command-option" => CommandOptionTemplate.Content,
"command-group" => CommandGroupTemplate.Content,
"command-list" => CommandListTemplate.Content,
"command-input" => CommandInputTemplate.Content,
"command-palette" => CommandPaletteTemplate.Content,
"data-picker" => DataPickerTemplate.Content,
"multi-select" => MultiSelectTemplate.Content,
"tag-input" => TagInputTemplate.Content,
"context-menu" => ContextMenuTemplate.Content,
"context-menu-trigger" => ContextMenuTriggerTemplate.Content,
"context-menu-content" => ContextMenuContentTemplate.Content,
"context-menu-option" => ContextMenuOptionTemplate.Content,
"context-menu-models" => ContextMenuModelsTemplate.Content,
"empty-state" => EmptyStateTemplate.Content,
"stepper" => StepperTemplate.Content,
"stepper-list" => StepperListTemplate.Content,
"stepper-step" => StepperStepTemplate.Content,
"stepper-content" => StepperContentTemplate.Content,
"carousel" => CarouselTemplate.Content,
"carousel-list" => CarouselListTemplate.Content,
"carousel-slide" => CarouselSlideTemplate.Content,
"carousel-item" => CarouselItemTemplate.Content,
"carousel-content" => CarouselContentTemplate.Content,
"carousel-previous" => CarouselPreviousTemplate.Content,
"carousel-next" => CarouselNextTemplate.Content,
"carousel-dots" => CarouselDotsTemplate.Content,
"file-upload" => FileUploadTemplate.Content,
"chart-variants" => ChartVariantsTemplate.Content,
"chart-styles" => ChartStylesTemplate.Content,
"chart" => ChartTemplate.Content,
"bar-chart" => BarChartTemplate.Content,
"line-chart" => LineChartTemplate.Content,
"pie-chart" => PieChartTemplate.Content,
"donut-chart" => DonutChartTemplate.Content,
"radar-chart" => RadarChartTemplate.Content,
"radial-chart" => RadialChartTemplate.Content,
"area-chart" => AreaChartTemplate.Content,
"multi-series-chart" => MultiSeriesChartTemplate.Content,
"chart-series" => ChartSeriesTemplate.Content,
"copy-button" => CopyButtonTemplate.Content,
"callout-variants" => CalloutVariantsTemplate.Content,
"callout" => CalloutTemplate.Content,
"link-card" => LinkCardTemplate.Content,
"prev-next-nav" => PrevNextNavTemplate.Content,
"kbd" => KbdTemplate.Content,
"aspect-ratio" => AspectRatioTemplate.Content,
"button-group" => ButtonGroupTemplate.Content,
"toggle-group" => ToggleGroupTemplate.Content,
"toggle-group-item" => ToggleGroupItemTemplate.Content,
"input-group" => InputGroupTemplate.Content,
"number-input" => NumberInputTemplate.Content,
"stat-card" => StatCardTemplate.Content,
"timeline" => TimelineTemplate.Content,
"timeline-item" => TimelineItemTemplate.Content,
"tree-view" => TreeViewTemplate.Content,
"tree-view-item" => TreeViewItemTemplate.Content,
"qr-code" => QrCodeTemplate.Content,
"image-viewer" => ImageViewerTemplate.Content,
"chat-message" => ChatMessageTemplate.Content,
"chat-input" => ChatInputTemplate.Content,
"chat" => ChatTemplate.Content,
"command-models" => CommandModelsTemplate.Content,
"stepper-models" => StepperModelsTemplate.Content,
_ => null
};
}
public static IEnumerable<ComponentMetadata> GetByCategory(ComponentCategory category)
{
return Components.Values.Where(c => c.Category == category);
}
public static IEnumerable<ComponentMetadata> SearchByTag(string tag)
{
return Components.Values.Where(c => c.Tags.Contains(tag, StringComparer.OrdinalIgnoreCase));
}
public static ComponentMetadata? GetMetadata(string componentName)
{
return Components.TryGetValue(componentName.ToLower(), out var metadata) ? metadata : null;
}
public static bool Exists(string componentName)
{
return Components.ContainsKey(componentName.ToLower());
}
// Closest installable name within edit distance 3, for "did you mean" hints.
public static string? FindClosestMatch(string query)
{
var lower = query.ToLowerInvariant();
string? best = null;
var bestDistance = int.MaxValue;
foreach (var (name, metadata) in Components)
{
if (!metadata.IsAvailable) continue;
var d = LevenshteinDistance(lower, name);
if (d == 0 || d > 3) continue;
if (d < bestDistance || (d == bestDistance && string.CompareOrdinal(name, best) < 0))
{
best = name;
bestDistance = d;
}
}
return best;
}
private static int LevenshteinDistance(string a, string b)
{
if (a.Length == 0) return b.Length;
if (b.Length == 0) return a.Length;
var prev = new int[b.Length + 1];
var curr = new int[b.Length + 1];
for (var j = 0; j <= b.Length; j++) prev[j] = j;
for (var i = 1; i <= a.Length; i++)
{
curr[0] = i;
for (var j = 1; j <= b.Length; j++)
{
var cost = a[i - 1] == b[j - 1] ? 0 : 1;
curr[j] = Math.Min(
Math.Min(curr[j - 1] + 1, prev[j] + 1),
prev[j - 1] + cost);
}
(prev, curr) = (curr, prev);
}
return prev[b.Length];
}
}