@rimelight/ui 0.0.5 → 0.0.7

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