@rimelight/ui 0.0.4 → 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 (310) hide show
  1. package/package.json +36 -6
  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 +85 -0
  11. package/src/components/astro/RLAHeader.astro +75 -0
  12. package/src/components/vue/RLVButton.vue +90 -0
  13. package/src/components/vue/RLVHeader.vue +78 -0
  14. package/src/composables/index.ts +1 -0
  15. package/src/composables/useUi.ts +27 -0
  16. package/src/config/index.ts +0 -2
  17. package/src/config/site.config.ts +1 -1
  18. package/src/env.d.ts +9 -42
  19. package/src/integrations/index.ts +2 -0
  20. package/src/integrations/ui.ts +87 -0
  21. package/src/themes/button.theme.ts +361 -0
  22. package/src/themes/header.theme.ts +33 -0
  23. package/src/themes/index.ts +13 -0
  24. package/src/utils/index.ts +3 -2
  25. package/i18n-data.json +0 -186
  26. package/src/components/accordion/Accordion.astro +0 -257
  27. package/src/components/accordion/AccordionContent.astro +0 -34
  28. package/src/components/accordion/AccordionItem.astro +0 -29
  29. package/src/components/accordion/AccordionTrigger.astro +0 -33
  30. package/src/components/alert/Alert.astro +0 -34
  31. package/src/components/alert/AlertDescription.astro +0 -15
  32. package/src/components/alert/AlertTitle.astro +0 -17
  33. package/src/components/alert-dialog/AlertDialog.astro +0 -275
  34. package/src/components/alert-dialog/AlertDialogAction.astro +0 -46
  35. package/src/components/alert-dialog/AlertDialogCancel.astro +0 -46
  36. package/src/components/alert-dialog/AlertDialogContent.astro +0 -52
  37. package/src/components/alert-dialog/AlertDialogDescription.astro +0 -18
  38. package/src/components/alert-dialog/AlertDialogFooter.astro +0 -16
  39. package/src/components/alert-dialog/AlertDialogHeader.astro +0 -14
  40. package/src/components/alert-dialog/AlertDialogTitle.astro +0 -20
  41. package/src/components/alert-dialog/AlertDialogTrigger.astro +0 -47
  42. package/src/components/aspect-ratio/AspectRatio.astro +0 -32
  43. package/src/components/avatar/Avatar.astro +0 -29
  44. package/src/components/avatar/AvatarFallback.astro +0 -18
  45. package/src/components/avatar/AvatarImage.astro +0 -66
  46. package/src/components/badge/Badge.astro +0 -57
  47. package/src/components/breadcrumb/Breadcrumb.astro +0 -12
  48. package/src/components/breadcrumb/BreadcrumbEllipsis.astro +0 -29
  49. package/src/components/breadcrumb/BreadcrumbItem.astro +0 -15
  50. package/src/components/breadcrumb/BreadcrumbLink.astro +0 -24
  51. package/src/components/breadcrumb/BreadcrumbList.astro +0 -17
  52. package/src/components/breadcrumb/BreadcrumbPage.astro +0 -22
  53. package/src/components/breadcrumb/BreadcrumbSeparator.astro +0 -24
  54. package/src/components/button/Button.astro +0 -58
  55. package/src/components/button-group/ButtonGroup.astro +0 -64
  56. package/src/components/button-group/ButtonGroupSeparator.astro +0 -20
  57. package/src/components/button-group/ButtonGroupText.astro +0 -19
  58. package/src/components/card/Card.astro +0 -36
  59. package/src/components/card/CardAction.astro +0 -16
  60. package/src/components/card/CardContent.astro +0 -16
  61. package/src/components/card/CardDescription.astro +0 -16
  62. package/src/components/card/CardFooter.astro +0 -16
  63. package/src/components/card/CardHeader.astro +0 -19
  64. package/src/components/card/CardTitle.astro +0 -16
  65. package/src/components/carousel/Carousel.astro +0 -55
  66. package/src/components/carousel/CarouselContent.astro +0 -26
  67. package/src/components/carousel/CarouselItem.astro +0 -26
  68. package/src/components/carousel/CarouselNext.astro +0 -39
  69. package/src/components/carousel/CarouselPrevious.astro +0 -41
  70. package/src/components/carousel/carousel-script.ts +0 -188
  71. package/src/components/carousel/index.ts +0 -1
  72. package/src/components/checkbox/Checkbox.astro +0 -133
  73. package/src/components/collapsible/Collapsible.astro +0 -161
  74. package/src/components/collapsible/CollapsibleContent.astro +0 -22
  75. package/src/components/collapsible/CollapsibleTrigger.astro +0 -44
  76. package/src/components/dialog/Dialog.astro +0 -389
  77. package/src/components/dialog/DialogClose.astro +0 -35
  78. package/src/components/dialog/DialogContent.astro +0 -78
  79. package/src/components/dialog/DialogDescription.astro +0 -14
  80. package/src/components/dialog/DialogFooter.astro +0 -14
  81. package/src/components/dialog/DialogHeader.astro +0 -14
  82. package/src/components/dialog/DialogTitle.astro +0 -18
  83. package/src/components/dialog/DialogTrigger.astro +0 -47
  84. package/src/components/dropdown/Dropdown.astro +0 -604
  85. package/src/components/dropdown/DropdownContent.astro +0 -118
  86. package/src/components/dropdown/DropdownItem.astro +0 -48
  87. package/src/components/dropdown/DropdownLabel.astro +0 -29
  88. package/src/components/dropdown/DropdownSeparator.astro +0 -21
  89. package/src/components/dropdown/DropdownShortcut.astro +0 -17
  90. package/src/components/dropdown/DropdownSub.astro +0 -15
  91. package/src/components/dropdown/DropdownSubContent.astro +0 -39
  92. package/src/components/dropdown/DropdownSubTrigger.astro +0 -34
  93. package/src/components/dropdown/DropdownTrigger.astro +0 -52
  94. package/src/components/dropzone/Dropzone.astro +0 -236
  95. package/src/components/dropzone/DropzoneFilesList.astro +0 -26
  96. package/src/components/dropzone/DropzoneLoadingIndicator.astro +0 -10
  97. package/src/components/dropzone/DropzoneUploadIndicator.astro +0 -10
  98. package/src/components/embeds/YoutubeEmbed.astro +0 -94
  99. package/src/components/hero/Hero.astro +0 -166
  100. package/src/components/icons/Flag.astro +0 -62
  101. package/src/components/image/ExtendedImage.astro +0 -46
  102. package/src/components/image/Image.astro +0 -25
  103. package/src/components/input/Input.astro +0 -27
  104. package/src/components/input-group/InputGroup.astro +0 -28
  105. package/src/components/input-group/InputGroupAddon.astro +0 -76
  106. package/src/components/input-group/InputGroupButton.astro +0 -36
  107. package/src/components/input-group/InputGroupInput.astro +0 -18
  108. package/src/components/input-group/InputGroupText.astro +0 -17
  109. package/src/components/input-group/InputGroupTextarea.astro +0 -22
  110. package/src/components/input-otp/InputOtp.astro +0 -352
  111. package/src/components/input-otp/InputOtpGroup.astro +0 -16
  112. package/src/components/input-otp/InputOtpSeparator.astro +0 -25
  113. package/src/components/input-otp/InputOtpSlot.astro +0 -50
  114. package/src/components/input-otp/InputOtpTypes.ts +0 -6
  115. package/src/components/item/Item.astro +0 -52
  116. package/src/components/item/ItemActions.astro +0 -16
  117. package/src/components/item/ItemContent.astro +0 -16
  118. package/src/components/item/ItemDescription.astro +0 -19
  119. package/src/components/item/ItemFooter.astro +0 -16
  120. package/src/components/item/ItemGroup.astro +0 -16
  121. package/src/components/item/ItemHeader.astro +0 -16
  122. package/src/components/item/ItemMedia.astro +0 -40
  123. package/src/components/item/ItemSeparator.astro +0 -23
  124. package/src/components/item/ItemTitle.astro +0 -16
  125. package/src/components/kbd/Kbd.astro +0 -21
  126. package/src/components/kbd/KbdGroup.astro +0 -16
  127. package/src/components/label/Label.astro +0 -24
  128. package/src/components/marquee/Marquee.astro +0 -73
  129. package/src/components/native-select/NativeSelect.astro +0 -68
  130. package/src/components/native-select/NativeSelectOptGroup.astro +0 -15
  131. package/src/components/native-select/NativeSelectOption.astro +0 -15
  132. package/src/components/pagination/Pagination.astro +0 -20
  133. package/src/components/pagination/PaginationContent.astro +0 -16
  134. package/src/components/pagination/PaginationEllipsis.astro +0 -37
  135. package/src/components/pagination/PaginationItem.astro +0 -16
  136. package/src/components/pagination/PaginationLink.astro +0 -27
  137. package/src/components/pagination/PaginationNext.astro +0 -33
  138. package/src/components/pagination/PaginationPrevious.astro +0 -33
  139. package/src/components/popover/Popover.astro +0 -717
  140. package/src/components/popover/PopoverContent.astro +0 -102
  141. package/src/components/popover/PopoverDescription.astro +0 -14
  142. package/src/components/popover/PopoverHeader.astro +0 -14
  143. package/src/components/popover/PopoverTitle.astro +0 -14
  144. package/src/components/popover/PopoverTrigger.astro +0 -51
  145. package/src/components/progress/Progress.astro +0 -154
  146. package/src/components/prose/Prose.astro +0 -619
  147. package/src/components/radio-group/RadioGroup.astro +0 -162
  148. package/src/components/radio-group/RadioGroupItem.astro +0 -133
  149. package/src/components/radio-group/RadioGroupTypes.ts +0 -6
  150. package/src/components/section/Section.astro +0 -167
  151. package/src/components/select/Select.astro +0 -752
  152. package/src/components/select/SelectContent.astro +0 -94
  153. package/src/components/select/SelectGroup.astro +0 -9
  154. package/src/components/select/SelectItem.astro +0 -51
  155. package/src/components/select/SelectLabel.astro +0 -14
  156. package/src/components/select/SelectSearch.astro +0 -49
  157. package/src/components/select/SelectSeparator.astro +0 -12
  158. package/src/components/select/SelectTrigger.astro +0 -56
  159. package/src/components/select/SelectTypes.ts +0 -13
  160. package/src/components/select/SelectValue.astro +0 -19
  161. package/src/components/separator/Separator.astro +0 -36
  162. package/src/components/sheet/Sheet.astro +0 -15
  163. package/src/components/sheet/SheetClose.astro +0 -15
  164. package/src/components/sheet/SheetContent.astro +0 -89
  165. package/src/components/sheet/SheetDescription.astro +0 -16
  166. package/src/components/sheet/SheetFooter.astro +0 -16
  167. package/src/components/sheet/SheetHeader.astro +0 -16
  168. package/src/components/sheet/SheetTitle.astro +0 -16
  169. package/src/components/sheet/SheetTrigger.astro +0 -15
  170. package/src/components/sidebar/Sidebar.astro +0 -231
  171. package/src/components/sidebar/SidebarContent.astro +0 -25
  172. package/src/components/sidebar/SidebarFooter.astro +0 -22
  173. package/src/components/sidebar/SidebarGroup.astro +0 -22
  174. package/src/components/sidebar/SidebarGroupContent.astro +0 -22
  175. package/src/components/sidebar/SidebarGroupLabel.astro +0 -53
  176. package/src/components/sidebar/SidebarHeader.astro +0 -22
  177. package/src/components/sidebar/SidebarInput.astro +0 -24
  178. package/src/components/sidebar/SidebarInset.astro +0 -22
  179. package/src/components/sidebar/SidebarMenu.astro +0 -22
  180. package/src/components/sidebar/SidebarMenuAction.astro +0 -63
  181. package/src/components/sidebar/SidebarMenuBadge.astro +0 -31
  182. package/src/components/sidebar/SidebarMenuButton.astro +0 -124
  183. package/src/components/sidebar/SidebarMenuItem.astro +0 -22
  184. package/src/components/sidebar/SidebarMenuSkeleton.astro +0 -43
  185. package/src/components/sidebar/SidebarMenuSub.astro +0 -25
  186. package/src/components/sidebar/SidebarMenuSubButton.astro +0 -52
  187. package/src/components/sidebar/SidebarMenuSubItem.astro +0 -17
  188. package/src/components/sidebar/SidebarProvider.astro +0 -215
  189. package/src/components/sidebar/SidebarRail.astro +0 -72
  190. package/src/components/sidebar/SidebarSeparator.astro +0 -25
  191. package/src/components/sidebar/SidebarTrigger.astro +0 -69
  192. package/src/components/skeleton/Skeleton.astro +0 -14
  193. package/src/components/slider/Slider.astro +0 -425
  194. package/src/components/spinner/Spinner.astro +0 -23
  195. package/src/components/switch/Switch.astro +0 -192
  196. package/src/components/switch/SwitchTypes.ts +0 -6
  197. package/src/components/table/Table.astro +0 -20
  198. package/src/components/table/TableBody.astro +0 -18
  199. package/src/components/table/TableCaption.astro +0 -18
  200. package/src/components/table/TableCell.astro +0 -18
  201. package/src/components/table/TableFoot.astro +0 -18
  202. package/src/components/table/TableHead.astro +0 -18
  203. package/src/components/table/TableHeader.astro +0 -18
  204. package/src/components/table/TableRow.astro +0 -17
  205. package/src/components/tabs/Tabs.astro +0 -270
  206. package/src/components/tabs/TabsContent.astro +0 -28
  207. package/src/components/tabs/TabsList.astro +0 -23
  208. package/src/components/tabs/TabsTrigger.astro +0 -34
  209. package/src/components/textarea/Textarea.astro +0 -31
  210. package/src/components/toast/ToastDescription.astro +0 -22
  211. package/src/components/toast/ToastItem.astro +0 -56
  212. package/src/components/toast/ToastTemplate.astro +0 -27
  213. package/src/components/toast/ToastTitle.astro +0 -59
  214. package/src/components/toast/Toaster.astro +0 -981
  215. package/src/components/toast/index.ts +0 -1
  216. package/src/components/toast/toast-manager.ts +0 -234
  217. package/src/components/toggle/Toggle.astro +0 -174
  218. package/src/components/toggle/ToggleTypes.ts +0 -14
  219. package/src/components/tooltip/Tooltip.astro +0 -422
  220. package/src/components/tooltip/TooltipContent.astro +0 -83
  221. package/src/components/tooltip/TooltipTrigger.astro +0 -13
  222. package/src/components/video/Video.astro +0 -121
  223. package/src/config/cookies.ts +0 -5
  224. package/src/config/links.ts +0 -4
  225. package/src/domain/cms/index.ts +0 -1
  226. package/src/domain/cms/types.ts +0 -20
  227. package/src/domain/i18n/constants.ts +0 -21
  228. package/src/domain/i18n/cookie-storage.ts +0 -13
  229. package/src/domain/i18n/country-to-locale-map.ts +0 -67
  230. package/src/domain/i18n/fallbacks.generated.ts +0 -230
  231. package/src/domain/i18n/fetcher.ts +0 -278
  232. package/src/domain/i18n/flags.ts +0 -16
  233. package/src/domain/i18n/format.ts +0 -90
  234. package/src/domain/i18n/index.ts +0 -10
  235. package/src/domain/i18n/middleware/i18n.ts +0 -161
  236. package/src/domain/i18n/resolve-locale.ts +0 -55
  237. package/src/domain/i18n/runtime-constants.ts +0 -14
  238. package/src/domain/i18n/schema.ts +0 -29
  239. package/src/domain/index.ts +0 -4
  240. package/src/domain/seo/constants.ts +0 -6
  241. package/src/domain/seo/index.ts +0 -3
  242. package/src/domain/seo/services/index.ts +0 -3
  243. package/src/domain/seo/services/llms.ts +0 -56
  244. package/src/domain/seo/services/robots.ts +0 -12
  245. package/src/domain/seo/services/sitemap.ts +0 -56
  246. package/src/domain/seo/utils.ts +0 -36
  247. package/src/domain/theme/constants.ts +0 -6
  248. package/src/domain/theme/index.ts +0 -2
  249. package/src/domain/theme/schema.ts +0 -10
  250. package/src/i18n.generated.d.ts +0 -202
  251. package/src/lib/component-preview.ts +0 -73
  252. package/src/lib/index.ts +0 -6
  253. package/src/lib/remark/remark-modified-time.ts +0 -13
  254. package/src/lib/showcase-preview-elements.ts +0 -408
  255. package/src/lib/showcase-renderer.ts +0 -218
  256. package/src/lib/showcase-utils.ts +0 -189
  257. package/src/lib/turnstile.ts +0 -35
  258. package/src/lib/utils/starwind/positioning.ts +0 -318
  259. package/src/locales/de/blog.json +0 -9
  260. package/src/locales/de/common.json +0 -19
  261. package/src/locales/de/errors.json +0 -6
  262. package/src/locales/de/home.json +0 -20
  263. package/src/locales/de/messages.json +0 -8
  264. package/src/locales/de/nav.json +0 -13
  265. package/src/locales/de/projects.json +0 -9
  266. package/src/locales/de/services.json +0 -43
  267. package/src/locales/en/blog.json +0 -9
  268. package/src/locales/en/chat.json +0 -29
  269. package/src/locales/en/common.json +0 -19
  270. package/src/locales/en/cookie_notice.json +0 -11
  271. package/src/locales/en/editor.json +0 -24
  272. package/src/locales/en/errors.json +0 -6
  273. package/src/locales/en/home.json +0 -20
  274. package/src/locales/en/messages.json +0 -8
  275. package/src/locales/en/nav.json +0 -13
  276. package/src/locales/en/projects.json +0 -9
  277. package/src/locales/en/services.json +0 -43
  278. package/src/locales/es/blog.json +0 -9
  279. package/src/locales/es/common.json +0 -19
  280. package/src/locales/es/errors.json +0 -6
  281. package/src/locales/es/home.json +0 -20
  282. package/src/locales/es/messages.json +0 -8
  283. package/src/locales/es/nav.json +0 -13
  284. package/src/locales/es/projects.json +0 -9
  285. package/src/locales/es/services.json +0 -43
  286. package/src/locales/ja/blog.json +0 -9
  287. package/src/locales/ja/common.json +0 -19
  288. package/src/locales/ja/errors.json +0 -6
  289. package/src/locales/ja/home.json +0 -20
  290. package/src/locales/ja/messages.json +0 -8
  291. package/src/locales/ja/nav.json +0 -13
  292. package/src/locales/ja/projects.json +0 -9
  293. package/src/locales/ja/services.json +0 -43
  294. package/src/locales/pt/blog.json +0 -9
  295. package/src/locales/pt/chat.json +0 -29
  296. package/src/locales/pt/common.json +0 -19
  297. package/src/locales/pt/cookie_notice.json +0 -11
  298. package/src/locales/pt/editor.json +0 -24
  299. package/src/locales/pt/errors.json +0 -6
  300. package/src/locales/pt/home.json +0 -20
  301. package/src/locales/pt/messages.json +0 -8
  302. package/src/locales/pt/nav.json +0 -13
  303. package/src/locales/pt/projects.json +0 -9
  304. package/src/locales/pt/services.json +0 -43
  305. package/src/utils/server/cookies.ts +0 -98
  306. package/src/utils/server/index.ts +0 -1
  307. package/src/utils/shared/index.ts +0 -3
  308. /package/src/utils/{shared/deep-merge.ts → deep-merge.ts} +0 -0
  309. /package/src/utils/{shared/embed.ts → embed.ts} +0 -0
  310. /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
- }