@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,162 +0,0 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cv } from "css-variants";
4
-
5
- type Props = HTMLAttributes<"fieldset"> & {
6
- /**
7
- * Value for the radio group
8
- */
9
- value?: string;
10
- /**
11
- * Default value for the radio group
12
- */
13
- defaultValue?: string;
14
- /**
15
- * Legend for the radio group
16
- */
17
- legend?: string;
18
- /**
19
- * Whether the radio group is disabled
20
- */
21
- disabled?: boolean;
22
- /**
23
- * Orientation of the radio group
24
- */
25
- orientation?: "horizontal" | "vertical";
26
- };
27
-
28
- export const radioGroup = cv({
29
- base: "starwind-radio-group disabled:cursor-not-allowed disabled:op-70",
30
- variants: {
31
- orientation: {
32
- vertical: "grid gap-4xs",
33
- horizontal: "flex flex-row items-center gap-4xs",
34
- },
35
- },
36
- defaultVariants: {
37
- orientation: "vertical",
38
- },
39
- });
40
-
41
- const {
42
- class: className,
43
- value,
44
- defaultValue,
45
- legend,
46
- disabled = false,
47
- orientation = "vertical",
48
- ...rest
49
- } = Astro.props;
50
- ---
51
-
52
- <fieldset
53
- class:list={[radioGroup({ orientation, className })]}
54
- data-value={value || defaultValue}
55
- disabled={disabled}
56
- {...rest}
57
- data-slot="radio-group"
58
- >
59
- {legend && <legend class="sr-only">{legend}</legend>}
60
- <slot />
61
- </fieldset>
62
-
63
- <script>
64
- import type { RadioGroupChangeEvent } from "./RadioGroupTypes";
65
-
66
- class RadioGroupHandler {
67
- private radioGroup: HTMLFieldSetElement;
68
- private radioInputs: NodeListOf<HTMLInputElement> | undefined;
69
- private radioGroupId: string;
70
-
71
- constructor(radioGroup: HTMLFieldSetElement, idx: number) {
72
- this.radioGroup = radioGroup;
73
- this.radioGroupId = radioGroup.id || `starwind-radio-group-${idx}`;
74
- this.radioInputs = radioGroup.querySelectorAll<HTMLInputElement>('input[type="radio"]');
75
- this.init();
76
- }
77
-
78
- private init() {
79
- // Initialize checked state based on data-value
80
- this.syncWithDataValue();
81
-
82
- // Setup event listeners
83
- this.setupEvents();
84
- }
85
-
86
- private syncWithDataValue() {
87
- const initialValue = this.radioGroup.dataset.value;
88
- if (!initialValue || !this.radioInputs) return;
89
-
90
- // Find the radio input with the matching value and check it
91
- this.radioInputs.forEach((input) => {
92
- if (input.value === initialValue) {
93
- input.checked = true;
94
- } else {
95
- input.checked = false;
96
- }
97
- });
98
- }
99
-
100
- private setupEvents() {
101
- // Listen for changes to update the fieldset's data-value attribute
102
- this.radioGroup.addEventListener("change", this.handleChange.bind(this));
103
- }
104
-
105
- private handleChange(e: Event) {
106
- const target = e.target as HTMLInputElement;
107
- // console.log("target", target);
108
- if (target.type !== "radio") return;
109
-
110
- // Update the data-value attribute
111
- this.radioGroup.dataset.value = target.value;
112
-
113
- // Ensure all other radio buttons in the group are unchecked
114
- if (this.radioInputs) {
115
- this.radioInputs.forEach((radio) => {
116
- if (radio !== target) {
117
- radio.checked = false;
118
- }
119
- });
120
- }
121
-
122
- // Explicitly mark the clicked radio as checked
123
- target.checked = true;
124
-
125
- // Dispatch custom event for external listeners
126
- this.dispatchChangeEvent(target.value);
127
- }
128
-
129
- private dispatchChangeEvent(value: string) {
130
- const event = new CustomEvent<RadioGroupChangeEvent["detail"]>("starwind:value-change", {
131
- bubbles: true,
132
- detail: {
133
- value: value,
134
- radioGroupId: this.radioGroupId,
135
- },
136
- });
137
- this.radioGroup.dispatchEvent(event);
138
- }
139
- }
140
-
141
- // Store instances in a WeakMap to avoid memory leaks
142
- const radioGroupInstances = new WeakMap<HTMLElement, RadioGroupHandler>();
143
- let radioGroupCounter = 0;
144
-
145
- const setupRadioGroups = () => {
146
- document
147
- .querySelectorAll<HTMLFieldSetElement>(".starwind-radio-group")
148
- .forEach((radioGroup) => {
149
- if (!radioGroupInstances.has(radioGroup)) {
150
- radioGroupInstances.set(
151
- radioGroup,
152
- new RadioGroupHandler(radioGroup, radioGroupCounter++),
153
- );
154
- }
155
- });
156
- };
157
-
158
- // Initialize on page load and after Astro view transitions
159
- setupRadioGroups();
160
- document.addEventListener("astro:after-swap", setupRadioGroups);
161
- document.addEventListener("starwind:init", setupRadioGroups);
162
- </script>
@@ -1,133 +0,0 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cv } from "css-variants";
4
- import IconCircleDot from "~icons/lucide/circle-dot";
5
-
6
- type VariantProps<T extends (...args: any) => any> = NonNullable<Parameters<T>[0]>;
7
-
8
- type Props = HTMLAttributes<"input"> &
9
- VariantProps<typeof radioWrapper> &
10
- VariantProps<typeof radioControl> & {
11
- /**
12
- * Value of the radio item
13
- */
14
- value: string;
15
- /**
16
- * Whether the radio is disabled
17
- */
18
- disabled?: boolean;
19
- /**
20
- * Optional ID for the radio item
21
- */
22
- id?: string;
23
- /**
24
- * Name to group radio inputs
25
- */
26
- name?: string;
27
- /**
28
- * Whether the radio is checked (only for initial state)
29
- */
30
- checked?: boolean;
31
- };
32
-
33
- export const radioWrapper = cv({
34
- base: "relative isolate flex shrink-0",
35
- variants: {
36
- size: {
37
- sm: "size-4",
38
- md: "size-5",
39
- lg: "size-6",
40
- },
41
- },
42
- defaultVariants: {
43
- size: "md",
44
- },
45
- });
46
-
47
- export const radioItem = cv({
48
- base: [
49
- "starwind-radio-item peer z-10 h-full w-full",
50
- "absolute inset-0 cursor-pointer op-0 outline-none focus:outline-none focus-visible:outline-none",
51
- "disabled:cursor-not-allowed",
52
- ],
53
- });
54
-
55
- export const radioControl = cv({
56
- base: [
57
- "starwind-radio-control",
58
- "border-input bg-background dark:bg-input/30",
59
- "outline-none peer-focus-visible:ring-3",
60
- "absolute inset-0 rounded-full b shadow-xs",
61
- "transition-[color,box-shadow] peer-checked:[&>svg]:op-100",
62
- "peer-disabled:cursor-not-allowed peer-disabled:op-50",
63
- "peer-aria-invalid:border-error peer-focus-visible:peer-aria-invalid:ring-error/40",
64
- "flex items-center justify-center",
65
- ],
66
- variants: {
67
- variant: {
68
- default:
69
- "peer-checked:border-foreground [&>svg]:fill-foreground peer-focus-visible:ring-outline/50",
70
- primary:
71
- "peer-checked:border-primary [&>svg]:fill-primary peer-focus-visible:ring-primary/50",
72
- secondary:
73
- "peer-checked:border-secondary [&>svg]:fill-secondary peer-focus-visible:ring-secondary/50",
74
- info: "peer-checked:border-info [&>svg]:fill-info peer-focus-visible:ring-info/50",
75
- success:
76
- "peer-checked:border-success [&>svg]:fill-success peer-focus-visible:ring-success/50",
77
- warning:
78
- "peer-checked:border-warning [&>svg]:fill-warning peer-focus-visible:ring-warning/50",
79
- error: "peer-checked:border-error [&>svg]:fill-error peer-focus-visible:ring-error/50",
80
- },
81
- },
82
- defaultVariants: {
83
- variant: "primary",
84
- },
85
- });
86
-
87
- export const radioIndicator = cv({
88
- base: ["starwind-radio-indicator", "op-0 transition-op"],
89
- variants: {
90
- size: {
91
- sm: "size-2",
92
- md: "size-3",
93
- lg: "size-4",
94
- },
95
- },
96
- defaultVariants: {
97
- size: "md",
98
- },
99
- });
100
-
101
- const {
102
- value,
103
- name,
104
- disabled = false,
105
- checked = false,
106
- id,
107
- class: className,
108
- size = "md",
109
- variant = "default",
110
- ...rest
111
- } = Astro.props;
112
- ---
113
-
114
- <div class={radioWrapper({ size })} data-slot="radio-group-item-wrapper">
115
- <input
116
- type="radio"
117
- class={radioItem()}
118
- name={name}
119
- id={id}
120
- value={value}
121
- checked={checked}
122
- disabled={disabled}
123
- {...rest}
124
- data-slot="radio-group-item"
125
- />
126
- <span class:list={[radioControl({ variant }), className]} data-slot="radio-group-item-control">
127
- <slot name="icon">
128
- <span class={radioIndicator({ size })}>
129
- <IconCircleDot />
130
- </span>
131
- </slot>
132
- </span>
133
- </div>
@@ -1,6 +0,0 @@
1
- export interface RadioGroupChangeEvent extends CustomEvent {
2
- detail: {
3
- value: string
4
- radioGroupId?: string
5
- }
6
- }
@@ -1,167 +0,0 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types";
3
- import { cv } from "css-variants";
4
-
5
- import type { button } from "../button/Button.astro";
6
- import Button from "../button/Button.astro";
7
-
8
- export interface SectionAction {
9
- text: string;
10
- href: string;
11
- variant?: NonNullable<Parameters<typeof button>[0]>["variant"];
12
- icon?: any;
13
- }
14
-
15
- export interface SectionProps extends HTMLAttributes<"section">, NonNullable<Parameters<typeof sectionVariants>[0]> {
16
- /** Main title text */
17
- title?: string;
18
- /** Description text */
19
- description?: string;
20
- /** Action buttons */
21
- actions?: SectionAction[];
22
- }
23
-
24
- type Props = SectionProps;
25
-
26
- const sectionVariants = cv({
27
- base: "container py-5xl",
28
-
29
- variants: {
30
- orientation: {
31
- vertical: "flex flex-col gap-4xl",
32
- horizontal: "flex flex-col gap-3xl items-center lg:grid lg:grid-cols-2 lg:items-center lg:gap-5xl",
33
- },
34
- alignment: {
35
- left: "text-start items-start",
36
- center: "text-center items-center",
37
- right: "text-end items-end",
38
- },
39
- inverted: {
40
- true: "",
41
- false: "",
42
- },
43
- },
44
- compoundVariants: [
45
- {
46
- orientation: "vertical",
47
- inverted: true,
48
- className: "flex-col-reverse",
49
- },
50
- {
51
- orientation: "vertical",
52
- inverted: false,
53
- className: "flex-col",
54
- },
55
- {
56
- orientation: "horizontal",
57
- inverted: false,
58
- className: "lg:[&_.section-content]:order-1 lg:[&_.section-image]:order-2",
59
- },
60
- {
61
- orientation: "horizontal",
62
- inverted: true,
63
- className: "lg:[&_.section-image]:order-1 lg:[&_.section-content]:order-2",
64
- },
65
- {
66
- orientation: "horizontal",
67
- className: "[&_.section-content]:text-start [&_.section-content]:items-start lg:text-start lg:items-start",
68
- },
69
- ],
70
- defaultVariants: {
71
- orientation: "vertical",
72
- alignment: "center",
73
- inverted: false,
74
- },
75
- });
76
-
77
- const {
78
- title,
79
- description,
80
- actions = [],
81
- orientation = "vertical",
82
- alignment = "center",
83
- inverted = false,
84
- class: className,
85
- ...rest
86
- } = Astro.props;
87
-
88
- const effectiveAlignment = orientation === "horizontal" ? "left" : alignment;
89
- ---
90
-
91
- <section class="relative w-full overflow-hidden" {...rest}>
92
- <div class="absolute inset-0 -z-10" aria-hidden="true">
93
- <slot name="bg" />
94
- </div>
95
-
96
- <div class:list={[sectionVariants({ orientation, alignment, inverted }), className]}>
97
- <div
98
- class:list={[
99
- "section-content flex flex-col w-full",
100
- orientation === "vertical" && [
101
- effectiveAlignment === "center" && "mx-auto",
102
- effectiveAlignment === "left" && "mr-auto",
103
- effectiveAlignment === "right" && "ml-auto",
104
- ],
105
- effectiveAlignment === "center" && "text-center items-center",
106
- effectiveAlignment === "left" && "text-start items-start",
107
- effectiveAlignment === "right" && "text-end items-end",
108
- ]}
109
- data-slot="content"
110
- >
111
- {
112
- title && (
113
- <h2 class="font-heading text-4xl font-bold tracking-tight text-pretty lg:text-5xl xl:text-6xl">
114
- {title}
115
- </h2>
116
- )
117
- }
118
- {
119
- description && (
120
- <p class="text-muted-foreground mt-2xl text-pretty lg:text-lg">
121
- {description}
122
- </p>
123
- )
124
- }
125
- {
126
- actions.length > 0 && (
127
- <div
128
- class:list={[
129
- "mt-3xl flex w-full flex-wrap gap-3xs md:w-fit",
130
- effectiveAlignment === "center" && "justify-center mx-auto",
131
- effectiveAlignment === "left" && "justify-start",
132
- effectiveAlignment === "right" && "justify-end md:ml-auto",
133
- ]}
134
- >
135
- {actions.map(({ text, href, variant, icon: Icon }) => (
136
- <Button variant={variant} class="group w-full md:w-auto" href={href}>
137
- {text}
138
- {Icon && (
139
- <Icon class="transition-transform group-hover:translate-x-5xs" />
140
- )}
141
- </Button>
142
- ))}
143
- </div>
144
- )
145
- }
146
- </div>
147
-
148
- <div class="section-image w-full">
149
- <slot />
150
- </div>
151
-
152
- {Astro.slots.has("image") && (
153
- <div
154
- class:list={[
155
- "section-image w-full flex",
156
- effectiveAlignment === "center" && "justify-center",
157
- effectiveAlignment === "left" && "justify-start",
158
- effectiveAlignment === "right" && "justify-end",
159
- ]}
160
- data-slot="image"
161
- >
162
- <slot name="image" />
163
- </div>
164
- )}
165
- </div>
166
- </section>
167
-