@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,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
-