@rimelight/ui 0.0.5 → 0.0.6

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 (308) hide show
  1. package/package.json +17 -8
  2. package/src/components/BlogPost.astro +181 -0
  3. package/src/components/DynamicShowcase.astro +681 -0
  4. package/src/components/ExtendedCarousel.astro +107 -0
  5. package/src/components/Head.astro +150 -0
  6. package/src/components/LanguageSwitcher.astro +128 -0
  7. package/src/components/ProjectPost.astro +183 -0
  8. package/src/components/RLHead.astro +3 -0
  9. package/src/components/ThemeToggle.astro +30 -42
  10. package/src/components/astro/RLAButton.astro +32 -42
  11. package/src/components/astro/RLAHeader.astro +75 -0
  12. package/src/components/vue/RLVButton.vue +50 -37
  13. package/src/components/vue/RLVHeader.vue +78 -0
  14. package/src/composables/index.ts +1 -1
  15. package/src/composables/{useComponentUI.ts → useUi.ts} +2 -2
  16. package/src/config/index.ts +0 -2
  17. package/src/config/site.config.ts +1 -1
  18. package/src/integrations/ui.ts +6 -0
  19. package/src/themes/button.theme.ts +350 -34
  20. package/src/themes/header.theme.ts +33 -0
  21. package/src/themes/index.ts +3 -1
  22. package/src/utils/index.ts +3 -2
  23. package/i18n-data.json +0 -186
  24. package/src/components/accordion/Accordion.astro +0 -257
  25. package/src/components/accordion/AccordionContent.astro +0 -34
  26. package/src/components/accordion/AccordionItem.astro +0 -29
  27. package/src/components/accordion/AccordionTrigger.astro +0 -33
  28. package/src/components/alert/Alert.astro +0 -34
  29. package/src/components/alert/AlertDescription.astro +0 -15
  30. package/src/components/alert/AlertTitle.astro +0 -17
  31. package/src/components/alert-dialog/AlertDialog.astro +0 -275
  32. package/src/components/alert-dialog/AlertDialogAction.astro +0 -46
  33. package/src/components/alert-dialog/AlertDialogCancel.astro +0 -46
  34. package/src/components/alert-dialog/AlertDialogContent.astro +0 -52
  35. package/src/components/alert-dialog/AlertDialogDescription.astro +0 -18
  36. package/src/components/alert-dialog/AlertDialogFooter.astro +0 -16
  37. package/src/components/alert-dialog/AlertDialogHeader.astro +0 -14
  38. package/src/components/alert-dialog/AlertDialogTitle.astro +0 -20
  39. package/src/components/alert-dialog/AlertDialogTrigger.astro +0 -47
  40. package/src/components/aspect-ratio/AspectRatio.astro +0 -32
  41. package/src/components/avatar/Avatar.astro +0 -29
  42. package/src/components/avatar/AvatarFallback.astro +0 -18
  43. package/src/components/avatar/AvatarImage.astro +0 -66
  44. package/src/components/badge/Badge.astro +0 -57
  45. package/src/components/breadcrumb/Breadcrumb.astro +0 -12
  46. package/src/components/breadcrumb/BreadcrumbEllipsis.astro +0 -29
  47. package/src/components/breadcrumb/BreadcrumbItem.astro +0 -15
  48. package/src/components/breadcrumb/BreadcrumbLink.astro +0 -24
  49. package/src/components/breadcrumb/BreadcrumbList.astro +0 -17
  50. package/src/components/breadcrumb/BreadcrumbPage.astro +0 -22
  51. package/src/components/breadcrumb/BreadcrumbSeparator.astro +0 -24
  52. package/src/components/button/Button.astro +0 -58
  53. package/src/components/button-group/ButtonGroup.astro +0 -64
  54. package/src/components/button-group/ButtonGroupSeparator.astro +0 -20
  55. package/src/components/button-group/ButtonGroupText.astro +0 -19
  56. package/src/components/card/Card.astro +0 -36
  57. package/src/components/card/CardAction.astro +0 -16
  58. package/src/components/card/CardContent.astro +0 -16
  59. package/src/components/card/CardDescription.astro +0 -16
  60. package/src/components/card/CardFooter.astro +0 -16
  61. package/src/components/card/CardHeader.astro +0 -19
  62. package/src/components/card/CardTitle.astro +0 -16
  63. package/src/components/carousel/Carousel.astro +0 -55
  64. package/src/components/carousel/CarouselContent.astro +0 -26
  65. package/src/components/carousel/CarouselItem.astro +0 -26
  66. package/src/components/carousel/CarouselNext.astro +0 -39
  67. package/src/components/carousel/CarouselPrevious.astro +0 -41
  68. package/src/components/carousel/carousel-script.ts +0 -188
  69. package/src/components/carousel/index.ts +0 -1
  70. package/src/components/checkbox/Checkbox.astro +0 -133
  71. package/src/components/collapsible/Collapsible.astro +0 -161
  72. package/src/components/collapsible/CollapsibleContent.astro +0 -22
  73. package/src/components/collapsible/CollapsibleTrigger.astro +0 -44
  74. package/src/components/dialog/Dialog.astro +0 -389
  75. package/src/components/dialog/DialogClose.astro +0 -35
  76. package/src/components/dialog/DialogContent.astro +0 -78
  77. package/src/components/dialog/DialogDescription.astro +0 -14
  78. package/src/components/dialog/DialogFooter.astro +0 -14
  79. package/src/components/dialog/DialogHeader.astro +0 -14
  80. package/src/components/dialog/DialogTitle.astro +0 -18
  81. package/src/components/dialog/DialogTrigger.astro +0 -47
  82. package/src/components/dropdown/Dropdown.astro +0 -604
  83. package/src/components/dropdown/DropdownContent.astro +0 -118
  84. package/src/components/dropdown/DropdownItem.astro +0 -48
  85. package/src/components/dropdown/DropdownLabel.astro +0 -29
  86. package/src/components/dropdown/DropdownSeparator.astro +0 -21
  87. package/src/components/dropdown/DropdownShortcut.astro +0 -17
  88. package/src/components/dropdown/DropdownSub.astro +0 -15
  89. package/src/components/dropdown/DropdownSubContent.astro +0 -39
  90. package/src/components/dropdown/DropdownSubTrigger.astro +0 -34
  91. package/src/components/dropdown/DropdownTrigger.astro +0 -52
  92. package/src/components/dropzone/Dropzone.astro +0 -236
  93. package/src/components/dropzone/DropzoneFilesList.astro +0 -26
  94. package/src/components/dropzone/DropzoneLoadingIndicator.astro +0 -10
  95. package/src/components/dropzone/DropzoneUploadIndicator.astro +0 -10
  96. package/src/components/embeds/YoutubeEmbed.astro +0 -94
  97. package/src/components/hero/Hero.astro +0 -166
  98. package/src/components/icons/Flag.astro +0 -62
  99. package/src/components/image/ExtendedImage.astro +0 -46
  100. package/src/components/image/Image.astro +0 -25
  101. package/src/components/input/Input.astro +0 -27
  102. package/src/components/input-group/InputGroup.astro +0 -28
  103. package/src/components/input-group/InputGroupAddon.astro +0 -76
  104. package/src/components/input-group/InputGroupButton.astro +0 -36
  105. package/src/components/input-group/InputGroupInput.astro +0 -18
  106. package/src/components/input-group/InputGroupText.astro +0 -17
  107. package/src/components/input-group/InputGroupTextarea.astro +0 -22
  108. package/src/components/input-otp/InputOtp.astro +0 -352
  109. package/src/components/input-otp/InputOtpGroup.astro +0 -16
  110. package/src/components/input-otp/InputOtpSeparator.astro +0 -25
  111. package/src/components/input-otp/InputOtpSlot.astro +0 -50
  112. package/src/components/input-otp/InputOtpTypes.ts +0 -6
  113. package/src/components/item/Item.astro +0 -52
  114. package/src/components/item/ItemActions.astro +0 -16
  115. package/src/components/item/ItemContent.astro +0 -16
  116. package/src/components/item/ItemDescription.astro +0 -19
  117. package/src/components/item/ItemFooter.astro +0 -16
  118. package/src/components/item/ItemGroup.astro +0 -16
  119. package/src/components/item/ItemHeader.astro +0 -16
  120. package/src/components/item/ItemMedia.astro +0 -40
  121. package/src/components/item/ItemSeparator.astro +0 -23
  122. package/src/components/item/ItemTitle.astro +0 -16
  123. package/src/components/kbd/Kbd.astro +0 -21
  124. package/src/components/kbd/KbdGroup.astro +0 -16
  125. package/src/components/label/Label.astro +0 -24
  126. package/src/components/marquee/Marquee.astro +0 -73
  127. package/src/components/native-select/NativeSelect.astro +0 -68
  128. package/src/components/native-select/NativeSelectOptGroup.astro +0 -15
  129. package/src/components/native-select/NativeSelectOption.astro +0 -15
  130. package/src/components/pagination/Pagination.astro +0 -20
  131. package/src/components/pagination/PaginationContent.astro +0 -16
  132. package/src/components/pagination/PaginationEllipsis.astro +0 -37
  133. package/src/components/pagination/PaginationItem.astro +0 -16
  134. package/src/components/pagination/PaginationLink.astro +0 -27
  135. package/src/components/pagination/PaginationNext.astro +0 -33
  136. package/src/components/pagination/PaginationPrevious.astro +0 -33
  137. package/src/components/popover/Popover.astro +0 -717
  138. package/src/components/popover/PopoverContent.astro +0 -102
  139. package/src/components/popover/PopoverDescription.astro +0 -14
  140. package/src/components/popover/PopoverHeader.astro +0 -14
  141. package/src/components/popover/PopoverTitle.astro +0 -14
  142. package/src/components/popover/PopoverTrigger.astro +0 -51
  143. package/src/components/progress/Progress.astro +0 -154
  144. package/src/components/prose/Prose.astro +0 -619
  145. package/src/components/radio-group/RadioGroup.astro +0 -162
  146. package/src/components/radio-group/RadioGroupItem.astro +0 -133
  147. package/src/components/radio-group/RadioGroupTypes.ts +0 -6
  148. package/src/components/section/Section.astro +0 -167
  149. package/src/components/select/Select.astro +0 -752
  150. package/src/components/select/SelectContent.astro +0 -94
  151. package/src/components/select/SelectGroup.astro +0 -9
  152. package/src/components/select/SelectItem.astro +0 -51
  153. package/src/components/select/SelectLabel.astro +0 -14
  154. package/src/components/select/SelectSearch.astro +0 -49
  155. package/src/components/select/SelectSeparator.astro +0 -12
  156. package/src/components/select/SelectTrigger.astro +0 -56
  157. package/src/components/select/SelectTypes.ts +0 -13
  158. package/src/components/select/SelectValue.astro +0 -19
  159. package/src/components/separator/Separator.astro +0 -36
  160. package/src/components/sheet/Sheet.astro +0 -15
  161. package/src/components/sheet/SheetClose.astro +0 -15
  162. package/src/components/sheet/SheetContent.astro +0 -89
  163. package/src/components/sheet/SheetDescription.astro +0 -16
  164. package/src/components/sheet/SheetFooter.astro +0 -16
  165. package/src/components/sheet/SheetHeader.astro +0 -16
  166. package/src/components/sheet/SheetTitle.astro +0 -16
  167. package/src/components/sheet/SheetTrigger.astro +0 -15
  168. package/src/components/sidebar/Sidebar.astro +0 -231
  169. package/src/components/sidebar/SidebarContent.astro +0 -25
  170. package/src/components/sidebar/SidebarFooter.astro +0 -22
  171. package/src/components/sidebar/SidebarGroup.astro +0 -22
  172. package/src/components/sidebar/SidebarGroupContent.astro +0 -22
  173. package/src/components/sidebar/SidebarGroupLabel.astro +0 -53
  174. package/src/components/sidebar/SidebarHeader.astro +0 -22
  175. package/src/components/sidebar/SidebarInput.astro +0 -24
  176. package/src/components/sidebar/SidebarInset.astro +0 -22
  177. package/src/components/sidebar/SidebarMenu.astro +0 -22
  178. package/src/components/sidebar/SidebarMenuAction.astro +0 -63
  179. package/src/components/sidebar/SidebarMenuBadge.astro +0 -31
  180. package/src/components/sidebar/SidebarMenuButton.astro +0 -124
  181. package/src/components/sidebar/SidebarMenuItem.astro +0 -22
  182. package/src/components/sidebar/SidebarMenuSkeleton.astro +0 -43
  183. package/src/components/sidebar/SidebarMenuSub.astro +0 -25
  184. package/src/components/sidebar/SidebarMenuSubButton.astro +0 -52
  185. package/src/components/sidebar/SidebarMenuSubItem.astro +0 -17
  186. package/src/components/sidebar/SidebarProvider.astro +0 -215
  187. package/src/components/sidebar/SidebarRail.astro +0 -72
  188. package/src/components/sidebar/SidebarSeparator.astro +0 -25
  189. package/src/components/sidebar/SidebarTrigger.astro +0 -69
  190. package/src/components/skeleton/Skeleton.astro +0 -14
  191. package/src/components/slider/Slider.astro +0 -425
  192. package/src/components/spinner/Spinner.astro +0 -23
  193. package/src/components/switch/Switch.astro +0 -192
  194. package/src/components/switch/SwitchTypes.ts +0 -6
  195. package/src/components/table/Table.astro +0 -20
  196. package/src/components/table/TableBody.astro +0 -18
  197. package/src/components/table/TableCaption.astro +0 -18
  198. package/src/components/table/TableCell.astro +0 -18
  199. package/src/components/table/TableFoot.astro +0 -18
  200. package/src/components/table/TableHead.astro +0 -18
  201. package/src/components/table/TableHeader.astro +0 -18
  202. package/src/components/table/TableRow.astro +0 -17
  203. package/src/components/tabs/Tabs.astro +0 -270
  204. package/src/components/tabs/TabsContent.astro +0 -28
  205. package/src/components/tabs/TabsList.astro +0 -23
  206. package/src/components/tabs/TabsTrigger.astro +0 -34
  207. package/src/components/textarea/Textarea.astro +0 -31
  208. package/src/components/toast/ToastDescription.astro +0 -22
  209. package/src/components/toast/ToastItem.astro +0 -56
  210. package/src/components/toast/ToastTemplate.astro +0 -27
  211. package/src/components/toast/ToastTitle.astro +0 -59
  212. package/src/components/toast/Toaster.astro +0 -981
  213. package/src/components/toast/index.ts +0 -1
  214. package/src/components/toast/toast-manager.ts +0 -234
  215. package/src/components/toggle/Toggle.astro +0 -174
  216. package/src/components/toggle/ToggleTypes.ts +0 -14
  217. package/src/components/tooltip/Tooltip.astro +0 -422
  218. package/src/components/tooltip/TooltipContent.astro +0 -83
  219. package/src/components/tooltip/TooltipTrigger.astro +0 -13
  220. package/src/components/video/Video.astro +0 -121
  221. package/src/config/cookies.ts +0 -5
  222. package/src/config/links.ts +0 -4
  223. package/src/domain/cms/index.ts +0 -1
  224. package/src/domain/cms/types.ts +0 -20
  225. package/src/domain/i18n/constants.ts +0 -21
  226. package/src/domain/i18n/cookie-storage.ts +0 -13
  227. package/src/domain/i18n/country-to-locale-map.ts +0 -67
  228. package/src/domain/i18n/fallbacks.generated.ts +0 -230
  229. package/src/domain/i18n/fetcher.ts +0 -278
  230. package/src/domain/i18n/flags.ts +0 -16
  231. package/src/domain/i18n/format.ts +0 -90
  232. package/src/domain/i18n/index.ts +0 -10
  233. package/src/domain/i18n/middleware/i18n.ts +0 -161
  234. package/src/domain/i18n/resolve-locale.ts +0 -55
  235. package/src/domain/i18n/runtime-constants.ts +0 -14
  236. package/src/domain/i18n/schema.ts +0 -29
  237. package/src/domain/index.ts +0 -4
  238. package/src/domain/seo/constants.ts +0 -6
  239. package/src/domain/seo/index.ts +0 -3
  240. package/src/domain/seo/services/index.ts +0 -3
  241. package/src/domain/seo/services/llms.ts +0 -56
  242. package/src/domain/seo/services/robots.ts +0 -12
  243. package/src/domain/seo/services/sitemap.ts +0 -56
  244. package/src/domain/seo/utils.ts +0 -36
  245. package/src/domain/theme/constants.ts +0 -6
  246. package/src/domain/theme/index.ts +0 -2
  247. package/src/domain/theme/schema.ts +0 -10
  248. package/src/i18n.generated.d.ts +0 -202
  249. package/src/lib/component-preview.ts +0 -73
  250. package/src/lib/index.ts +0 -6
  251. package/src/lib/remark/remark-modified-time.ts +0 -13
  252. package/src/lib/showcase-preview-elements.ts +0 -408
  253. package/src/lib/showcase-renderer.ts +0 -218
  254. package/src/lib/showcase-utils.ts +0 -189
  255. package/src/lib/turnstile.ts +0 -35
  256. package/src/lib/utils/starwind/positioning.ts +0 -318
  257. package/src/locales/de/blog.json +0 -9
  258. package/src/locales/de/common.json +0 -19
  259. package/src/locales/de/errors.json +0 -6
  260. package/src/locales/de/home.json +0 -20
  261. package/src/locales/de/messages.json +0 -8
  262. package/src/locales/de/nav.json +0 -13
  263. package/src/locales/de/projects.json +0 -9
  264. package/src/locales/de/services.json +0 -43
  265. package/src/locales/en/blog.json +0 -9
  266. package/src/locales/en/chat.json +0 -29
  267. package/src/locales/en/common.json +0 -19
  268. package/src/locales/en/cookie_notice.json +0 -11
  269. package/src/locales/en/editor.json +0 -24
  270. package/src/locales/en/errors.json +0 -6
  271. package/src/locales/en/home.json +0 -20
  272. package/src/locales/en/messages.json +0 -8
  273. package/src/locales/en/nav.json +0 -13
  274. package/src/locales/en/projects.json +0 -9
  275. package/src/locales/en/services.json +0 -43
  276. package/src/locales/es/blog.json +0 -9
  277. package/src/locales/es/common.json +0 -19
  278. package/src/locales/es/errors.json +0 -6
  279. package/src/locales/es/home.json +0 -20
  280. package/src/locales/es/messages.json +0 -8
  281. package/src/locales/es/nav.json +0 -13
  282. package/src/locales/es/projects.json +0 -9
  283. package/src/locales/es/services.json +0 -43
  284. package/src/locales/ja/blog.json +0 -9
  285. package/src/locales/ja/common.json +0 -19
  286. package/src/locales/ja/errors.json +0 -6
  287. package/src/locales/ja/home.json +0 -20
  288. package/src/locales/ja/messages.json +0 -8
  289. package/src/locales/ja/nav.json +0 -13
  290. package/src/locales/ja/projects.json +0 -9
  291. package/src/locales/ja/services.json +0 -43
  292. package/src/locales/pt/blog.json +0 -9
  293. package/src/locales/pt/chat.json +0 -29
  294. package/src/locales/pt/common.json +0 -19
  295. package/src/locales/pt/cookie_notice.json +0 -11
  296. package/src/locales/pt/editor.json +0 -24
  297. package/src/locales/pt/errors.json +0 -6
  298. package/src/locales/pt/home.json +0 -20
  299. package/src/locales/pt/messages.json +0 -8
  300. package/src/locales/pt/nav.json +0 -13
  301. package/src/locales/pt/projects.json +0 -9
  302. package/src/locales/pt/services.json +0 -43
  303. package/src/utils/server/cookies.ts +0 -98
  304. package/src/utils/server/index.ts +0 -1
  305. package/src/utils/shared/index.ts +0 -3
  306. /package/src/utils/{shared/deep-merge.ts → deep-merge.ts} +0 -0
  307. /package/src/utils/{shared/embed.ts → embed.ts} +0 -0
  308. /package/src/utils/{shared/parse-boolean.ts → parse-boolean.ts} +0 -0
@@ -1,218 +0,0 @@
1
- /**
2
- * Dynamic Component Renderer for Showcase
3
- *
4
- * This module handles runtime prop updates for Astro components in the showcase. It works by
5
- * re-rendering the component with updated props using Astro's client:only components.
6
- */
7
-
8
- export interface PropState {
9
- value: any
10
- omitted: boolean
11
- }
12
-
13
- export interface PropDefinition {
14
- name: string
15
- type: string
16
- default?: any
17
- description?: string
18
- kind: "string" | "number" | "boolean" | "enum" | "array" | "object" | "function"
19
- enumValues?: string[]
20
- }
21
-
22
- function makePropDefinition(
23
- name: string,
24
- type: string,
25
- kind: PropDefinition["kind"],
26
- defaultValue: any,
27
- description: string | undefined,
28
- enumValues: string[] | undefined
29
- ): PropDefinition {
30
- const result: PropDefinition = {
31
- name,
32
- type,
33
- kind
34
- }
35
- if (defaultValue !== undefined) result.default = defaultValue
36
- if (description !== undefined) result.description = description
37
- if (enumValues !== undefined) result.enumValues = enumValues
38
- return result
39
- }
40
-
41
- function assertPropInfo(
42
- obj: unknown
43
- ): asserts obj is { type?: string; default?: unknown; description?: string } {
44
- if (!obj || typeof obj !== "object") throw new Error("Expected prop info")
45
- }
46
-
47
- /**
48
- * Parse a component's props from its exported interface or default export This is a helper to
49
- * extract prop metadata at build time
50
- */
51
- export function parseComponentProps(_componentModule: any): PropDefinition[] {
52
- const props: PropDefinition[] = []
53
-
54
- // Try to get props from component's default export or metadata
55
- if (_componentModule?.metadata?.props) {
56
- const metadataProps = _componentModule.metadata.props
57
- for (const [name, info] of Object.entries(metadataProps)) {
58
- assertPropInfo(info)
59
- const propInfo = info
60
- props.push(
61
- makePropDefinition(
62
- name,
63
- propInfo.type || "unknown",
64
- inferPropKind(propInfo.type || "unknown"),
65
- propInfo.default,
66
- propInfo.description,
67
- extractEnumValues(propInfo.type || "")
68
- )
69
- )
70
- }
71
- }
72
-
73
- return props
74
- }
75
-
76
- /**
77
- * Infer the prop kind from TypeScript type string
78
- */
79
- function inferPropKind(typeString: string): PropDefinition["kind"] {
80
- if (!typeString) return "string"
81
-
82
- const type = typeString.toLowerCase()
83
-
84
- if (type === "boolean") return "boolean"
85
- if (type === "number") return "number"
86
- if (type === "string") return "string"
87
- if (type.includes("[]") || type === "array") return "array"
88
- if (type.includes("|") && !type.includes("=>")) {
89
- // Union type - likely an enum
90
- return "enum"
91
- }
92
- if (type.includes("=>")) return "function"
93
- if (type.startsWith("{") || type === "object" || type === "record") return "object"
94
-
95
- return "string"
96
- }
97
-
98
- /**
99
- * Extract enum values from a union type string
100
- */
101
- function extractEnumValues(typeString: string): string[] | undefined {
102
- if (!typeString || !typeString.includes("|")) return undefined
103
-
104
- // Parse union types like: "'default' | 'primary' | 'secondary'"
105
- const matches = typeString.match(/'([^']+)'|"([^"]+)"/g)
106
- if (matches) {
107
- return matches.map((m) => m.replace(/['"]/g, ""))
108
- }
109
-
110
- return undefined
111
- }
112
-
113
- /**
114
- * Generate default prop definitions for common component patterns
115
- */
116
- export function generatePropDefinitions(
117
- _componentName: string,
118
- options: {
119
- stringProps?: string[]
120
- booleanProps?: string[]
121
- enumProps?: Record<string, string[]>
122
- defaultProps?: Record<string, any>
123
- descriptions?: Record<string, string>
124
- } = {}
125
- ): PropDefinition[] {
126
- const props: PropDefinition[] = []
127
-
128
- // Add string props
129
- options.stringProps?.forEach((name) => {
130
- props.push(
131
- makePropDefinition(
132
- name,
133
- "string",
134
- "string",
135
- options.defaultProps?.[name],
136
- options.descriptions?.[name],
137
- undefined
138
- )
139
- )
140
- })
141
-
142
- // Add boolean props
143
- options.booleanProps?.forEach((name) => {
144
- props.push(
145
- makePropDefinition(
146
- name,
147
- "boolean",
148
- "boolean",
149
- options.defaultProps?.[name],
150
- options.descriptions?.[name],
151
- undefined
152
- )
153
- )
154
- })
155
-
156
- // Add enum props
157
- if (options.enumProps) {
158
- Object.entries(options.enumProps).forEach(([name, values]) => {
159
- props.push(
160
- makePropDefinition(
161
- name,
162
- values.map((v) => `'${v}'`).join(" | "),
163
- "enum",
164
- options.defaultProps?.[name],
165
- options.descriptions?.[name],
166
- values
167
- )
168
- )
169
- })
170
- }
171
-
172
- return props
173
- }
174
-
175
- /**
176
- * Create a render function for a component This returns HTML string that can be injected into the
177
- * preview container
178
- */
179
- export function createRenderer(_componentModule: any) {
180
- return function render(_props: Record<string, any>): string {
181
- // For Astro components, we need to use their rendering mechanism
182
- // This is a placeholder - actual implementation depends on how components are structured
183
- return `<div data-component-render="true" data-props="${encodeURIComponent(JSON.stringify(_props))}"></div>`
184
- }
185
- }
186
-
187
- /**
188
- * Helper to build common prop configurations
189
- */
190
- export const PropConfigs = {
191
- /**
192
- * Standard variant/size props for UI components
193
- */
194
- ui: {
195
- variant: {
196
- values: ["default", "primary", "secondary", "outline", "ghost"] as string[],
197
- default: "default"
198
- },
199
- size: {
200
- values: ["sm", "md", "lg"] as string[],
201
- default: "md"
202
- }
203
- },
204
-
205
- /**
206
- * Layout props
207
- */
208
- layout: {
209
- orientation: {
210
- values: ["vertical", "horizontal"] as string[],
211
- default: "vertical"
212
- },
213
- alignment: {
214
- values: ["left", "center", "right"] as string[],
215
- default: "center"
216
- }
217
- }
218
- }
@@ -1,189 +0,0 @@
1
- /**
2
- * Showcase Utilities
3
- *
4
- * Helper functions for defining component prop configurations
5
- */
6
-
7
- export interface PropDef {
8
- name: string
9
- type: string
10
- default?: any
11
- description?: string
12
- }
13
-
14
- function makePropDef(
15
- name: string,
16
- type: string,
17
- defaultValue: any,
18
- description: string | undefined
19
- ): PropDef {
20
- const result: PropDef = {
21
- name,
22
- type
23
- }
24
- if (defaultValue !== undefined) result.default = defaultValue
25
- if (description !== undefined) result.description = description
26
- return result
27
- }
28
-
29
- /**
30
- * Create prop definitions for string props
31
- */
32
- export function stringProp(
33
- name: string,
34
- options: {
35
- default?: string
36
- description?: string
37
- } = {}
38
- ): PropDef {
39
- return makePropDef(name, "string", options.default, options.description)
40
- }
41
-
42
- /**
43
- * Create prop definitions for boolean props
44
- */
45
- export function booleanProp(
46
- name: string,
47
- options: {
48
- default?: boolean
49
- description?: string
50
- } = {}
51
- ): PropDef {
52
- return makePropDef(name, "boolean", options.default, options.description)
53
- }
54
-
55
- /**
56
- * Create prop definitions for number props
57
- */
58
- export function numberProp(
59
- name: string,
60
- options: {
61
- default?: number
62
- description?: string
63
- } = {}
64
- ): PropDef {
65
- return makePropDef(name, "number", options.default, options.description)
66
- }
67
-
68
- /**
69
- * Create prop definitions for enum (union type) props
70
- */
71
- export function enumProp(
72
- name: string,
73
- values: string[],
74
- options: {
75
- default?: string
76
- description?: string
77
- } = {}
78
- ): PropDef {
79
- return makePropDef(
80
- name,
81
- values.map((v) => `'${v}'`).join(" | "),
82
- options.default,
83
- options.description
84
- )
85
- }
86
-
87
- /**
88
- * Create prop definitions for array props
89
- */
90
- export function arrayProp(
91
- name: string,
92
- options: {
93
- default?: any[]
94
- description?: string
95
- } = {}
96
- ): PropDef {
97
- return makePropDef(name, "array", options.default, options.description)
98
- }
99
-
100
- /**
101
- * Create prop definitions for object props
102
- */
103
- export function objectProp(
104
- name: string,
105
- options: {
106
- default?: Record<string, any>
107
- description?: string
108
- } = {}
109
- ): PropDef {
110
- return makePropDef(name, "object", options.default, options.description)
111
- }
112
-
113
- /**
114
- * Build common UI component props (variant, size)
115
- */
116
- export function uiProps(
117
- options: {
118
- variantValues?: string[]
119
- sizeValues?: string[]
120
- defaultVariant?: string
121
- defaultSize?: string
122
- } = {}
123
- ): PropDef[] {
124
- const props: PropDef[] = []
125
-
126
- if (options.variantValues) {
127
- props.push(
128
- enumProp("variant", options.variantValues, {
129
- default: options.defaultVariant ?? "default",
130
- description: "The visual style variant of the component."
131
- })
132
- )
133
- }
134
-
135
- if (options.sizeValues) {
136
- props.push(
137
- enumProp("size", options.sizeValues, {
138
- default: options.defaultSize ?? "md",
139
- description: "The size of the component."
140
- })
141
- )
142
- }
143
-
144
- return props
145
- }
146
-
147
- /**
148
- * Build common layout props (orientation, alignment, inverted)
149
- */
150
- export function layoutProps(
151
- options: {
152
- orientationValues?: string[]
153
- alignmentValues?: string[]
154
- defaultOrientation?: string
155
- defaultAlignment?: string
156
- includeInverted?: boolean
157
- } = {}
158
- ): PropDef[] {
159
- const props: PropDef[] = []
160
-
161
- if (options.orientationValues) {
162
- props.push(
163
- enumProp("orientation", options.orientationValues, {
164
- default: options.defaultOrientation ?? "vertical",
165
- description: "The layout orientation of the component."
166
- })
167
- )
168
- }
169
-
170
- if (options.alignmentValues) {
171
- props.push(
172
- enumProp("alignment", options.alignmentValues, {
173
- default: options.defaultAlignment ?? "center",
174
- description: "The content alignment."
175
- })
176
- )
177
- }
178
-
179
- if (options.includeInverted) {
180
- props.push(
181
- booleanProp("inverted", {
182
- default: false,
183
- description: "Inverts the order of content."
184
- })
185
- )
186
- }
187
-
188
- return props
189
- }
@@ -1,35 +0,0 @@
1
- interface TurnstileResponse {
2
- "success": boolean
3
- "challenge_ts"?: string
4
- "hostname"?: string
5
- "error-codes"?: string[]
6
- "action"?: string
7
- "cdata"?: string
8
- }
9
-
10
- /**
11
- * Verify a Turnstile token with Cloudflare's API
12
- */
13
- export async function verifyTurnstileToken(
14
- token: string,
15
- secretKey: string,
16
- remoteIP?: string
17
- ): Promise<TurnstileResponse> {
18
- const response = await fetch("https://challenges.cloudflare.com/turnstile/v0/siteverify", {
19
- method: "POST",
20
- headers: {
21
- "Content-Type": "application/json"
22
- },
23
- body: JSON.stringify({
24
- secret: secretKey,
25
- response: token,
26
- remoteip: remoteIP
27
- })
28
- })
29
-
30
- if (!response.ok) {
31
- throw new Error(`Turnstile API error: ${response.status}`)
32
- }
33
-
34
- return response.json()
35
- }