@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,102 +0,0 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cv } from "css-variants";
4
-
5
- type Props = HTMLAttributes<"div"> & {
6
- /**
7
- * Side of the popover
8
- * @default bottom
9
- */
10
- side?: "top" | "bottom" | "left" | "right";
11
- /**
12
- * Alignment of the popover
13
- * @default center
14
- */
15
- align?: "start" | "center" | "end";
16
- /**
17
- * Offset distance in pixels
18
- * @default 4
19
- */
20
- sideOffset?: number;
21
- /**
22
- * Open and close animation duration in milliseconds
23
- * @default 150
24
- */
25
- animationDuration?: number;
26
- /**
27
- * Accessible name for the dialog when a PopoverTitle is not present.
28
- * If neither aria-label nor aria-labelledby is provided, a fallback label is applied.
29
- */
30
- "aria-label"?: string;
31
- };
32
-
33
- export const popoverContent = cv({
34
- base: [
35
- "starwind-popover-content",
36
- "bg-popover text-popover-foreground z-50 flex w-72 flex-col gap-2xl overflow-x-hidden overflow-y-auto rounded-lg b p-2xl shadow-md",
37
- "data-[state=open]:animate-in fade-in zoom-in-95",
38
- "data-[state=closed]:animate-out data-[state=closed]:fill-mode-forwards fade-out zoom-out-95",
39
- "fixed isolate will-change-transform",
40
- ],
41
- variants: {
42
- side: {
43
- bottom: "slide-in-from-top-2 slide-out-to-top-2",
44
- top: "slide-in-from-bottom-2 slide-out-to-bottom-2",
45
- right: "slide-in-from-left-2 slide-out-to-left-2",
46
- left: "slide-in-from-right-2 slide-out-to-right-2",
47
- },
48
- align: {
49
- start: "",
50
- center: "",
51
- end: "",
52
- },
53
- },
54
- compoundVariants: [
55
- {
56
- side: ["top", "bottom"],
57
- align: "start",
58
- className: "slide-in-from-left-1 slide-out-to-left-1",
59
- },
60
- {
61
- side: ["top", "bottom"],
62
- align: "end",
63
- className: "slide-in-from-right-1 slide-out-to-right-1",
64
- },
65
- ],
66
- defaultVariants: {
67
- side: "bottom",
68
- align: "center",
69
- },
70
- });
71
-
72
- const {
73
- class: className,
74
- side = "bottom",
75
- align = "center",
76
- sideOffset = 4,
77
- animationDuration = 150,
78
- "aria-label": ariaLabel,
79
- "aria-labelledby": ariaLabelledBy,
80
- ...rest
81
- } = Astro.props;
82
- ---
83
-
84
- <div
85
- class:list={[popoverContent({ side, align }), className]}
86
- data-side={side}
87
- data-align={align}
88
- data-side-offset={sideOffset}
89
- data-state="closed"
90
- role="dialog"
91
- aria-label={ariaLabel ?? (ariaLabelledBy ? undefined : "Popover dialog")}
92
- aria-labelledby={ariaLabelledBy}
93
- tabindex="-1"
94
- style={{
95
- display: "none",
96
- animationDuration: `${animationDuration}ms`,
97
- }}
98
- {...rest}
99
- data-slot="popover-content"
100
- >
101
- <slot />
102
- </div>
@@ -1,14 +0,0 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cv } from "css-variants";
4
-
5
- type Props = HTMLAttributes<"p">;
6
-
7
- export const popoverDescription = cv({ base: "text-muted-foreground" });
8
-
9
- const { class: className, ...rest } = Astro.props;
10
- ---
11
-
12
- <p class:list={[popoverDescription(), className]} {...rest} data-slot="popover-description">
13
- <slot />
14
- </p>
@@ -1,14 +0,0 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cv } from "css-variants";
4
-
5
- type Props = HTMLAttributes<"div">;
6
-
7
- export const popoverHeader = cv({ base: "flex flex-col gap-2xs" });
8
-
9
- const { class: className, ...rest } = Astro.props;
10
- ---
11
-
12
- <div class:list={[popoverHeader(), className]} {...rest} data-slot="popover-header">
13
- <slot />
14
- </div>
@@ -1,14 +0,0 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cv } from "css-variants";
4
-
5
- type Props = HTMLAttributes<"h3">;
6
-
7
- export const popoverTitle = cv({ base: "font-medium" });
8
-
9
- const { class: className, ...rest } = Astro.props;
10
- ---
11
-
12
- <h3 class:list={[popoverTitle(), className]} {...rest} data-slot="popover-title">
13
- <slot />
14
- </h3>
@@ -1,51 +0,0 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cv } from "css-variants";
4
-
5
- type Props = Omit<HTMLAttributes<"button">, "role" | "type"> & {
6
- /**
7
- * When true, the component will render its child element with a simple wrapper instead of a button component
8
- */
9
- asChild?: boolean;
10
- };
11
-
12
- export const popoverTrigger = cv({
13
- base: [
14
- "starwind-popover-trigger",
15
- "inline-flex items-center justify-center",
16
- "focus-visible:ring-outline/50 transition-[color,box-shadow] outline-none focus-visible:ring-3",
17
- "disabled:pointer-events-none",
18
- ],
19
- });
20
-
21
- const { class: className, asChild = false, ...rest } = Astro.props;
22
-
23
- let hasChildren = false;
24
- if (Astro.slots.has("default")) {
25
- hasChildren = true;
26
- }
27
- ---
28
-
29
- {
30
- asChild && hasChildren ? (
31
- <div
32
- class:list={["starwind-popover-trigger", className]}
33
- data-slot="popover-trigger"
34
- data-as-child
35
- >
36
- <slot />
37
- </div>
38
- ) : (
39
- <button
40
- class:list={[popoverTrigger(), className]}
41
- type="button"
42
- aria-haspopup="dialog"
43
- aria-expanded="false"
44
- data-state="closed"
45
- {...rest}
46
- data-slot="popover-trigger"
47
- >
48
- <slot />
49
- </button>
50
- )
51
- }
@@ -1,154 +0,0 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cv } from "css-variants";
4
-
5
- type Props = HTMLAttributes<"div"> & {
6
- /**
7
- * Current value of the progress bar (omit for indeterminate state)
8
- */
9
- value?: number;
10
- /**
11
- * Maximum value for the progress bar (default: 100)
12
- */
13
- max?: number;
14
- /**
15
- * Color variant for the progress indicator (default: default)
16
- */
17
- variant?: "default" | "primary" | "secondary" | "info" | "success" | "warning" | "error";
18
- };
19
-
20
- const { class: className, value, max = 100, variant = "default", ...rest } = Astro.props;
21
-
22
- const isIndeterminate = value == null;
23
- const valuePercent = isIndeterminate ? undefined : Math.round((value / max) * 100);
24
- const valueText = isIndeterminate ? undefined : `${valuePercent}%`;
25
-
26
- export const progress = cv({
27
- base: ["starwind-progress-bar", "bg-muted h-5xs w-full overflow-hidden rounded-full"],
28
- variants: {
29
- variant: {
30
- indeterminate: "relative",
31
- },
32
- },
33
- });
34
-
35
- export const progressIndicator = cv({
36
- base: ["starwind-progress-indicator", "h-full w-full flex-1 transition-transform"],
37
- variants: {
38
- variant: {
39
- indeterminate: "absolute inset-y-0 start-0 w-3/4",
40
- },
41
- color: {
42
- primary: "bg-primary",
43
- secondary: "bg-secondary",
44
- default: "bg-foreground",
45
- info: "bg-info",
46
- success: "bg-success",
47
- warning: "bg-warning",
48
- error: "bg-error",
49
- },
50
- },
51
- defaultVariants: {
52
- color: "primary",
53
- },
54
- });
55
-
56
- const indicator = progressIndicator;
57
-
58
- const progressClasses = progress({
59
- variant: isIndeterminate ? "indeterminate" : undefined,
60
- });
61
-
62
- const indicatorClasses = indicator({
63
- variant: isIndeterminate ? "indeterminate" : undefined,
64
- color: variant,
65
- });
66
-
67
- const indicatorStyle = isIndeterminate
68
- ? ""
69
- : `transform: translateX(-${100 - (valuePercent ?? 0)}%);`;
70
- ---
71
-
72
- <div
73
- role="progressbar"
74
- aria-valuemin={0}
75
- aria-valuemax={max}
76
- aria-valuenow={isIndeterminate ? undefined : value}
77
- aria-valuetext={valueText}
78
- class:list={[progressClasses, className]}
79
- data-value={value}
80
- data-max={max}
81
- data-indeterminate={isIndeterminate}
82
- {...rest}
83
- data-slot="progress"
84
- >
85
- <div class:list={[indicatorClasses]} style={indicatorStyle}></div>
86
- </div>
87
-
88
- <script>
89
- class ProgressHandler {
90
- private progressElement: HTMLElement;
91
- private observer!: MutationObserver;
92
-
93
- constructor(progressElement: HTMLElement) {
94
- this.progressElement = progressElement;
95
- this.setupMutationObserver();
96
- this.updateProgress(); // Initial update
97
- }
98
-
99
- private setupMutationObserver(): void {
100
- // Create a MutationObserver to watch for data-value attribute changes
101
- this.observer = new MutationObserver((mutations) => {
102
- mutations.forEach((mutation) => {
103
- if (mutation.attributeName === "data-value" || mutation.attributeName === "data-max") {
104
- this.updateProgress();
105
- }
106
- });
107
- });
108
-
109
- // Start observing
110
- this.observer.observe(this.progressElement, { attributes: true });
111
- }
112
-
113
- private updateProgress(): void {
114
- const value = Number(this.progressElement.getAttribute("data-value"));
115
- const max = Number(this.progressElement.getAttribute("data-max") || 100);
116
- const isIndeterminate = this.progressElement.hasAttribute("data-indeterminate")
117
- ? this.progressElement.getAttribute("data-indeterminate") === "true"
118
- : value == null;
119
-
120
- // Update ARIA attributes
121
- if (!isIndeterminate) {
122
- const valuePercent = Math.round((value / max) * 100);
123
- this.progressElement.setAttribute("aria-valuenow", String(value));
124
- this.progressElement.setAttribute("aria-valuetext", `${valuePercent}%`);
125
-
126
- // Update indicator position
127
- const indicator = this.progressElement.querySelector("div");
128
- if (indicator) {
129
- indicator.style.transform = `translateX(-${100 - valuePercent}%)`;
130
- }
131
- }
132
- }
133
-
134
- // Clean up method to disconnect observer
135
- public destroy(): void {
136
- this.observer.disconnect();
137
- }
138
- }
139
-
140
- // Store instances in a WeakMap to avoid memory leaks
141
- const progressInstances = new WeakMap<HTMLElement, ProgressHandler>();
142
-
143
- const setupProgressBars = () => {
144
- document.querySelectorAll<HTMLElement>(".starwind-progress-bar").forEach((progressElement) => {
145
- if (!progressInstances.has(progressElement)) {
146
- progressInstances.set(progressElement, new ProgressHandler(progressElement));
147
- }
148
- });
149
- };
150
-
151
- setupProgressBars();
152
- document.addEventListener("astro:after-swap", setupProgressBars);
153
- document.addEventListener("starwind:init", setupProgressBars);
154
- </script>