@rimelight/ui 0.0.1

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 (301) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +30 -0
  3. package/i18n-data.json +186 -0
  4. package/package.json +49 -0
  5. package/src/components/FormattedDate.astro +22 -0
  6. package/src/components/HeaderLink.astro +24 -0
  7. package/src/components/HttpObservatory.astro +103 -0
  8. package/src/components/LighthouseScores.astro +204 -0
  9. package/src/components/MissingTranslationBanner.astro +39 -0
  10. package/src/components/TableOfContents.astro +106 -0
  11. package/src/components/ThemeToggle.astro +71 -0
  12. package/src/components/accordion/Accordion.astro +257 -0
  13. package/src/components/accordion/AccordionContent.astro +34 -0
  14. package/src/components/accordion/AccordionItem.astro +29 -0
  15. package/src/components/accordion/AccordionTrigger.astro +33 -0
  16. package/src/components/alert/Alert.astro +34 -0
  17. package/src/components/alert/AlertDescription.astro +15 -0
  18. package/src/components/alert/AlertTitle.astro +17 -0
  19. package/src/components/alert-dialog/AlertDialog.astro +275 -0
  20. package/src/components/alert-dialog/AlertDialogAction.astro +46 -0
  21. package/src/components/alert-dialog/AlertDialogCancel.astro +46 -0
  22. package/src/components/alert-dialog/AlertDialogContent.astro +52 -0
  23. package/src/components/alert-dialog/AlertDialogDescription.astro +18 -0
  24. package/src/components/alert-dialog/AlertDialogFooter.astro +16 -0
  25. package/src/components/alert-dialog/AlertDialogHeader.astro +14 -0
  26. package/src/components/alert-dialog/AlertDialogTitle.astro +20 -0
  27. package/src/components/alert-dialog/AlertDialogTrigger.astro +47 -0
  28. package/src/components/aspect-ratio/AspectRatio.astro +32 -0
  29. package/src/components/avatar/Avatar.astro +29 -0
  30. package/src/components/avatar/AvatarFallback.astro +18 -0
  31. package/src/components/avatar/AvatarImage.astro +66 -0
  32. package/src/components/badge/Badge.astro +57 -0
  33. package/src/components/breadcrumb/Breadcrumb.astro +12 -0
  34. package/src/components/breadcrumb/BreadcrumbEllipsis.astro +29 -0
  35. package/src/components/breadcrumb/BreadcrumbItem.astro +15 -0
  36. package/src/components/breadcrumb/BreadcrumbLink.astro +24 -0
  37. package/src/components/breadcrumb/BreadcrumbList.astro +17 -0
  38. package/src/components/breadcrumb/BreadcrumbPage.astro +22 -0
  39. package/src/components/breadcrumb/BreadcrumbSeparator.astro +24 -0
  40. package/src/components/button/Button.astro +58 -0
  41. package/src/components/button-group/ButtonGroup.astro +64 -0
  42. package/src/components/button-group/ButtonGroupSeparator.astro +20 -0
  43. package/src/components/button-group/ButtonGroupText.astro +19 -0
  44. package/src/components/card/Card.astro +36 -0
  45. package/src/components/card/CardAction.astro +16 -0
  46. package/src/components/card/CardContent.astro +16 -0
  47. package/src/components/card/CardDescription.astro +16 -0
  48. package/src/components/card/CardFooter.astro +16 -0
  49. package/src/components/card/CardHeader.astro +19 -0
  50. package/src/components/card/CardTitle.astro +16 -0
  51. package/src/components/carousel/Carousel.astro +55 -0
  52. package/src/components/carousel/CarouselContent.astro +26 -0
  53. package/src/components/carousel/CarouselItem.astro +26 -0
  54. package/src/components/carousel/CarouselNext.astro +39 -0
  55. package/src/components/carousel/CarouselPrevious.astro +41 -0
  56. package/src/components/carousel/carousel-script.ts +188 -0
  57. package/src/components/carousel/index.ts +1 -0
  58. package/src/components/checkbox/Checkbox.astro +133 -0
  59. package/src/components/collapsible/Collapsible.astro +161 -0
  60. package/src/components/collapsible/CollapsibleContent.astro +22 -0
  61. package/src/components/collapsible/CollapsibleTrigger.astro +44 -0
  62. package/src/components/dialog/Dialog.astro +389 -0
  63. package/src/components/dialog/DialogClose.astro +35 -0
  64. package/src/components/dialog/DialogContent.astro +78 -0
  65. package/src/components/dialog/DialogDescription.astro +14 -0
  66. package/src/components/dialog/DialogFooter.astro +14 -0
  67. package/src/components/dialog/DialogHeader.astro +14 -0
  68. package/src/components/dialog/DialogTitle.astro +18 -0
  69. package/src/components/dialog/DialogTrigger.astro +47 -0
  70. package/src/components/dropdown/Dropdown.astro +604 -0
  71. package/src/components/dropdown/DropdownContent.astro +118 -0
  72. package/src/components/dropdown/DropdownItem.astro +48 -0
  73. package/src/components/dropdown/DropdownLabel.astro +29 -0
  74. package/src/components/dropdown/DropdownSeparator.astro +21 -0
  75. package/src/components/dropdown/DropdownShortcut.astro +17 -0
  76. package/src/components/dropdown/DropdownSub.astro +15 -0
  77. package/src/components/dropdown/DropdownSubContent.astro +39 -0
  78. package/src/components/dropdown/DropdownSubTrigger.astro +34 -0
  79. package/src/components/dropdown/DropdownTrigger.astro +52 -0
  80. package/src/components/dropzone/Dropzone.astro +236 -0
  81. package/src/components/dropzone/DropzoneFilesList.astro +26 -0
  82. package/src/components/dropzone/DropzoneLoadingIndicator.astro +10 -0
  83. package/src/components/dropzone/DropzoneUploadIndicator.astro +10 -0
  84. package/src/components/embeds/YoutubeEmbed.astro +94 -0
  85. package/src/components/hero/Hero.astro +166 -0
  86. package/src/components/icons/Flag.astro +62 -0
  87. package/src/components/image/ExtendedImage.astro +46 -0
  88. package/src/components/image/Image.astro +25 -0
  89. package/src/components/input/Input.astro +27 -0
  90. package/src/components/input-group/InputGroup.astro +28 -0
  91. package/src/components/input-group/InputGroupAddon.astro +76 -0
  92. package/src/components/input-group/InputGroupButton.astro +36 -0
  93. package/src/components/input-group/InputGroupInput.astro +18 -0
  94. package/src/components/input-group/InputGroupText.astro +17 -0
  95. package/src/components/input-group/InputGroupTextarea.astro +22 -0
  96. package/src/components/input-otp/InputOtp.astro +352 -0
  97. package/src/components/input-otp/InputOtpGroup.astro +16 -0
  98. package/src/components/input-otp/InputOtpSeparator.astro +25 -0
  99. package/src/components/input-otp/InputOtpSlot.astro +50 -0
  100. package/src/components/input-otp/InputOtpTypes.ts +6 -0
  101. package/src/components/item/Item.astro +52 -0
  102. package/src/components/item/ItemActions.astro +16 -0
  103. package/src/components/item/ItemContent.astro +16 -0
  104. package/src/components/item/ItemDescription.astro +19 -0
  105. package/src/components/item/ItemFooter.astro +16 -0
  106. package/src/components/item/ItemGroup.astro +16 -0
  107. package/src/components/item/ItemHeader.astro +16 -0
  108. package/src/components/item/ItemMedia.astro +40 -0
  109. package/src/components/item/ItemSeparator.astro +23 -0
  110. package/src/components/item/ItemTitle.astro +16 -0
  111. package/src/components/kbd/Kbd.astro +21 -0
  112. package/src/components/kbd/KbdGroup.astro +16 -0
  113. package/src/components/label/Label.astro +24 -0
  114. package/src/components/marquee/Marquee.astro +73 -0
  115. package/src/components/native-select/NativeSelect.astro +68 -0
  116. package/src/components/native-select/NativeSelectOptGroup.astro +15 -0
  117. package/src/components/native-select/NativeSelectOption.astro +15 -0
  118. package/src/components/pagination/Pagination.astro +20 -0
  119. package/src/components/pagination/PaginationContent.astro +16 -0
  120. package/src/components/pagination/PaginationEllipsis.astro +37 -0
  121. package/src/components/pagination/PaginationItem.astro +16 -0
  122. package/src/components/pagination/PaginationLink.astro +27 -0
  123. package/src/components/pagination/PaginationNext.astro +33 -0
  124. package/src/components/pagination/PaginationPrevious.astro +33 -0
  125. package/src/components/popover/Popover.astro +717 -0
  126. package/src/components/popover/PopoverContent.astro +102 -0
  127. package/src/components/popover/PopoverDescription.astro +14 -0
  128. package/src/components/popover/PopoverHeader.astro +14 -0
  129. package/src/components/popover/PopoverTitle.astro +14 -0
  130. package/src/components/popover/PopoverTrigger.astro +51 -0
  131. package/src/components/progress/Progress.astro +154 -0
  132. package/src/components/prose/Prose.astro +619 -0
  133. package/src/components/radio-group/RadioGroup.astro +162 -0
  134. package/src/components/radio-group/RadioGroupItem.astro +133 -0
  135. package/src/components/radio-group/RadioGroupTypes.ts +6 -0
  136. package/src/components/section/Section.astro +167 -0
  137. package/src/components/select/Select.astro +752 -0
  138. package/src/components/select/SelectContent.astro +94 -0
  139. package/src/components/select/SelectGroup.astro +9 -0
  140. package/src/components/select/SelectItem.astro +51 -0
  141. package/src/components/select/SelectLabel.astro +14 -0
  142. package/src/components/select/SelectSearch.astro +49 -0
  143. package/src/components/select/SelectSeparator.astro +12 -0
  144. package/src/components/select/SelectTrigger.astro +56 -0
  145. package/src/components/select/SelectTypes.ts +13 -0
  146. package/src/components/select/SelectValue.astro +19 -0
  147. package/src/components/separator/Separator.astro +36 -0
  148. package/src/components/sheet/Sheet.astro +15 -0
  149. package/src/components/sheet/SheetClose.astro +15 -0
  150. package/src/components/sheet/SheetContent.astro +89 -0
  151. package/src/components/sheet/SheetDescription.astro +16 -0
  152. package/src/components/sheet/SheetFooter.astro +16 -0
  153. package/src/components/sheet/SheetHeader.astro +16 -0
  154. package/src/components/sheet/SheetTitle.astro +16 -0
  155. package/src/components/sheet/SheetTrigger.astro +15 -0
  156. package/src/components/sidebar/Sidebar.astro +231 -0
  157. package/src/components/sidebar/SidebarContent.astro +25 -0
  158. package/src/components/sidebar/SidebarFooter.astro +22 -0
  159. package/src/components/sidebar/SidebarGroup.astro +22 -0
  160. package/src/components/sidebar/SidebarGroupContent.astro +22 -0
  161. package/src/components/sidebar/SidebarGroupLabel.astro +53 -0
  162. package/src/components/sidebar/SidebarHeader.astro +22 -0
  163. package/src/components/sidebar/SidebarInput.astro +24 -0
  164. package/src/components/sidebar/SidebarInset.astro +22 -0
  165. package/src/components/sidebar/SidebarMenu.astro +22 -0
  166. package/src/components/sidebar/SidebarMenuAction.astro +63 -0
  167. package/src/components/sidebar/SidebarMenuBadge.astro +31 -0
  168. package/src/components/sidebar/SidebarMenuButton.astro +124 -0
  169. package/src/components/sidebar/SidebarMenuItem.astro +22 -0
  170. package/src/components/sidebar/SidebarMenuSkeleton.astro +43 -0
  171. package/src/components/sidebar/SidebarMenuSub.astro +25 -0
  172. package/src/components/sidebar/SidebarMenuSubButton.astro +52 -0
  173. package/src/components/sidebar/SidebarMenuSubItem.astro +17 -0
  174. package/src/components/sidebar/SidebarProvider.astro +215 -0
  175. package/src/components/sidebar/SidebarRail.astro +72 -0
  176. package/src/components/sidebar/SidebarSeparator.astro +25 -0
  177. package/src/components/sidebar/SidebarTrigger.astro +69 -0
  178. package/src/components/skeleton/Skeleton.astro +14 -0
  179. package/src/components/slider/Slider.astro +425 -0
  180. package/src/components/spinner/Spinner.astro +23 -0
  181. package/src/components/switch/Switch.astro +192 -0
  182. package/src/components/switch/SwitchTypes.ts +6 -0
  183. package/src/components/table/Table.astro +20 -0
  184. package/src/components/table/TableBody.astro +18 -0
  185. package/src/components/table/TableCaption.astro +18 -0
  186. package/src/components/table/TableCell.astro +18 -0
  187. package/src/components/table/TableFoot.astro +18 -0
  188. package/src/components/table/TableHead.astro +18 -0
  189. package/src/components/table/TableHeader.astro +18 -0
  190. package/src/components/table/TableRow.astro +17 -0
  191. package/src/components/tabs/Tabs.astro +270 -0
  192. package/src/components/tabs/TabsContent.astro +28 -0
  193. package/src/components/tabs/TabsList.astro +23 -0
  194. package/src/components/tabs/TabsTrigger.astro +34 -0
  195. package/src/components/textarea/Textarea.astro +31 -0
  196. package/src/components/toast/ToastDescription.astro +22 -0
  197. package/src/components/toast/ToastItem.astro +56 -0
  198. package/src/components/toast/ToastTemplate.astro +27 -0
  199. package/src/components/toast/ToastTitle.astro +59 -0
  200. package/src/components/toast/Toaster.astro +981 -0
  201. package/src/components/toast/index.ts +1 -0
  202. package/src/components/toast/toast-manager.ts +234 -0
  203. package/src/components/toggle/Toggle.astro +174 -0
  204. package/src/components/toggle/ToggleTypes.ts +14 -0
  205. package/src/components/tooltip/Tooltip.astro +422 -0
  206. package/src/components/tooltip/TooltipContent.astro +83 -0
  207. package/src/components/tooltip/TooltipTrigger.astro +13 -0
  208. package/src/components/video/Video.astro +121 -0
  209. package/src/config/cookies.ts +5 -0
  210. package/src/config/index.ts +3 -0
  211. package/src/config/links.ts +4 -0
  212. package/src/config/site.config.ts +45 -0
  213. package/src/domain/cms/index.ts +1 -0
  214. package/src/domain/cms/types.ts +20 -0
  215. package/src/domain/i18n/constants.ts +21 -0
  216. package/src/domain/i18n/cookie-storage.ts +13 -0
  217. package/src/domain/i18n/country-to-locale-map.ts +67 -0
  218. package/src/domain/i18n/fallbacks.generated.ts +230 -0
  219. package/src/domain/i18n/fetcher.ts +268 -0
  220. package/src/domain/i18n/flags.ts +16 -0
  221. package/src/domain/i18n/format.ts +90 -0
  222. package/src/domain/i18n/index.ts +10 -0
  223. package/src/domain/i18n/middleware/i18n.ts +160 -0
  224. package/src/domain/i18n/resolve-locale.ts +55 -0
  225. package/src/domain/i18n/runtime-constants.ts +14 -0
  226. package/src/domain/i18n/schema.ts +29 -0
  227. package/src/domain/index.ts +4 -0
  228. package/src/domain/seo/constants.ts +20 -0
  229. package/src/domain/seo/index.ts +3 -0
  230. package/src/domain/seo/services/index.ts +3 -0
  231. package/src/domain/seo/services/llms.ts +53 -0
  232. package/src/domain/seo/services/robots.ts +12 -0
  233. package/src/domain/seo/services/sitemap.ts +56 -0
  234. package/src/domain/seo/utils.ts +37 -0
  235. package/src/domain/theme/constants.ts +6 -0
  236. package/src/domain/theme/index.ts +2 -0
  237. package/src/domain/theme/schema.ts +10 -0
  238. package/src/env.d.ts +49 -0
  239. package/src/i18n.generated.d.ts +202 -0
  240. package/src/lib/component-preview.ts +73 -0
  241. package/src/lib/index.ts +6 -0
  242. package/src/lib/remark/remark-modified-time.ts +13 -0
  243. package/src/lib/showcase-preview-elements.ts +408 -0
  244. package/src/lib/showcase-renderer.ts +218 -0
  245. package/src/lib/showcase-utils.ts +189 -0
  246. package/src/lib/turnstile.ts +35 -0
  247. package/src/lib/utils/starwind/positioning.ts +318 -0
  248. package/src/locales/de/blog.json +9 -0
  249. package/src/locales/de/common.json +19 -0
  250. package/src/locales/de/errors.json +6 -0
  251. package/src/locales/de/home.json +20 -0
  252. package/src/locales/de/messages.json +8 -0
  253. package/src/locales/de/nav.json +13 -0
  254. package/src/locales/de/projects.json +9 -0
  255. package/src/locales/de/services.json +43 -0
  256. package/src/locales/en/blog.json +9 -0
  257. package/src/locales/en/chat.json +29 -0
  258. package/src/locales/en/common.json +19 -0
  259. package/src/locales/en/cookie_notice.json +11 -0
  260. package/src/locales/en/editor.json +24 -0
  261. package/src/locales/en/errors.json +6 -0
  262. package/src/locales/en/home.json +20 -0
  263. package/src/locales/en/messages.json +8 -0
  264. package/src/locales/en/nav.json +13 -0
  265. package/src/locales/en/projects.json +9 -0
  266. package/src/locales/en/services.json +43 -0
  267. package/src/locales/es/blog.json +9 -0
  268. package/src/locales/es/common.json +19 -0
  269. package/src/locales/es/errors.json +6 -0
  270. package/src/locales/es/home.json +20 -0
  271. package/src/locales/es/messages.json +8 -0
  272. package/src/locales/es/nav.json +13 -0
  273. package/src/locales/es/projects.json +9 -0
  274. package/src/locales/es/services.json +43 -0
  275. package/src/locales/ja/blog.json +9 -0
  276. package/src/locales/ja/common.json +19 -0
  277. package/src/locales/ja/errors.json +6 -0
  278. package/src/locales/ja/home.json +20 -0
  279. package/src/locales/ja/messages.json +8 -0
  280. package/src/locales/ja/nav.json +13 -0
  281. package/src/locales/ja/projects.json +9 -0
  282. package/src/locales/ja/services.json +43 -0
  283. package/src/locales/pt/blog.json +9 -0
  284. package/src/locales/pt/chat.json +29 -0
  285. package/src/locales/pt/common.json +19 -0
  286. package/src/locales/pt/cookie_notice.json +11 -0
  287. package/src/locales/pt/editor.json +24 -0
  288. package/src/locales/pt/errors.json +6 -0
  289. package/src/locales/pt/home.json +20 -0
  290. package/src/locales/pt/messages.json +8 -0
  291. package/src/locales/pt/nav.json +13 -0
  292. package/src/locales/pt/projects.json +9 -0
  293. package/src/locales/pt/services.json +43 -0
  294. package/src/utils/index.ts +2 -0
  295. package/src/utils/server/cookies.ts +98 -0
  296. package/src/utils/server/index.ts +1 -0
  297. package/src/utils/shared/deep-merge.ts +36 -0
  298. package/src/utils/shared/embed.ts +105 -0
  299. package/src/utils/shared/index.ts +3 -0
  300. package/src/utils/shared/parse-boolean.ts +14 -0
  301. package/worker-configuration.d.ts +14791 -0
@@ -0,0 +1,619 @@
1
+ ---
2
+ import type { HTMLAttributes } from "astro/types";
3
+ import { cv } from "css-variants";
4
+
5
+ export const prose = cv({
6
+ base: "sw-prose max-w-[65ch]",
7
+ });
8
+
9
+ type Props = HTMLAttributes<"div">;
10
+
11
+ const { class: className, ...rest } = Astro.props;
12
+ ---
13
+
14
+ <div class:list={[prose(), className]} {...rest} data-slot="prose">
15
+ <slot />
16
+ </div>
17
+
18
+ <style is:global>
19
+ /* ==========================================================================
20
+ * Starwind Prose - Typography styles for markdown content
21
+ * Inspired by Tailwind Typography and Astro Starlight
22
+ * ========================================================================== */
23
+
24
+ /* **************************************************************************
25
+ * CSS Custom Properties
26
+ *
27
+ * Sizing is em-based, so it scales with the inherited font-size.
28
+ * Control overall size via Tailwind text utilities: text-sm md:text-base
29
+ *
30
+ * Override specific values using CSS variables (supports responsive):
31
+ * class="[--prose-spacing:1.5em] md:[--prose-spacing:1.25em]"
32
+ *
33
+ * Or set on a parent element:
34
+ * <div style="--prose-h1-size: 3em;"><Prose>...</Prose></div>
35
+ * ************************************************************************** */
36
+
37
+ .sw-prose {
38
+ /* ===================
39
+ * Typography & Spacing
40
+ * =================== */
41
+ --sw-prose-line-height: var(--prose-line-height, 1.6);
42
+ --sw-prose-spacing: var(--prose-spacing, 1.25em);
43
+ --sw-prose-heading-spacing: var(--prose-heading-spacing, 1.5em);
44
+ --sw-prose-code-size: var(--prose-code-size, 0.875em);
45
+ --sw-prose-list-indent: var(--prose-list-indent, 1.625em);
46
+
47
+ /* ===================
48
+ * Colors
49
+ * =================== */
50
+ --sw-prose-color: var(--prose-color, --alpha(var(--color-foreground) / 80%));
51
+ --sw-prose-heading-color: var(--prose-heading-color, var(--color-foreground));
52
+ --sw-prose-list-marker-color: var(--prose-list-marker-color, var(--color-muted-foreground));
53
+
54
+ /* ===================
55
+ * Headings
56
+ * =================== */
57
+ --sw-prose-heading-font: var(--prose-heading-font, var(--font-heading, inherit));
58
+ --sw-prose-heading-weight: var(--prose-heading-weight, 600);
59
+ --sw-prose-heading-line-height: var(--prose-heading-line-height, 1.25);
60
+ --sw-prose-h1-size: var(--prose-h1-size, 2.25em);
61
+ --sw-prose-h1-weight: var(--prose-h1-weight, var(--sw-prose-heading-weight));
62
+ --sw-prose-h2-size: var(--prose-h2-size, 1.5em);
63
+ --sw-prose-h2-weight: var(--prose-h2-weight, var(--sw-prose-heading-weight));
64
+ --sw-prose-h3-size: var(--prose-h3-size, 1.25em);
65
+ --sw-prose-h3-weight: var(--prose-h3-weight, var(--sw-prose-heading-weight));
66
+ --sw-prose-h4-size: var(--prose-h4-size, 1em);
67
+ --sw-prose-h4-weight: var(--prose-h4-weight, var(--sw-prose-heading-weight));
68
+
69
+ /* ===================
70
+ * Links
71
+ * =================== */
72
+ --sw-prose-link-color: var(--prose-link-color, var(--color-foreground));
73
+ --sw-prose-link-decoration-color: var(
74
+ --prose-link-decoration-color,
75
+ var(--color-primary-accent)
76
+ );
77
+ --sw-prose-link-hover-color: var(--prose-link-hover-color, var(--color-primary-accent));
78
+
79
+ /* ===================
80
+ * Strong/Bold
81
+ * =================== */
82
+ --sw-prose-strong-color: var(--prose-strong-color, var(--color-foreground));
83
+ --sw-prose-strong-weight: var(--prose-strong-weight, 600);
84
+
85
+ /* ===================
86
+ * Blockquote
87
+ * =================== */
88
+ --sw-prose-blockquote-color: var(--prose-blockquote-color, var(--color-foreground));
89
+ --sw-prose-blockquote-border-color: var(--prose-blockquote-border-color, var(--color-border));
90
+ --sw-prose-blockquote-border-width: var(--prose-blockquote-border-width, 4px);
91
+
92
+ /* ===================
93
+ * Inline Code
94
+ * =================== */
95
+ --sw-prose-code-bg: var(--prose-code-bg, var(--color-muted));
96
+ --sw-prose-code-color: var(--prose-code-color, var(--color-foreground));
97
+ --sw-prose-code-weight: var(--prose-code-weight, 500);
98
+ --sw-prose-code-radius: var(--prose-code-radius, var(--radius-sm));
99
+
100
+ /* ===================
101
+ * Pre / Code Blocks
102
+ * =================== */
103
+ --sw-prose-pre-border-color: var(--prose-pre-border-color, var(--color-border));
104
+ --sw-prose-pre-border-radius: var(--prose-pre-border-radius, var(--radius-md));
105
+
106
+ /* ===================
107
+ * Tables
108
+ * =================== */
109
+ --sw-prose-table-heading-color: var(--prose-table-heading-color, var(--color-foreground));
110
+ --sw-prose-table-border-color: var(--prose-table-border-color, var(--color-border));
111
+
112
+ /* ===================
113
+ * Media (images, video, etc.)
114
+ * =================== */
115
+ --sw-prose-media-border-width: var(--prose-media-border-width, 0px);
116
+ --sw-prose-media-border-color: var(--prose-media-border-color, var(--color-border));
117
+ --sw-prose-media-border-radius: var(--prose-media-border-radius, 0);
118
+
119
+ /* ===================
120
+ * Mark/Highlight
121
+ * =================== */
122
+ --sw-prose-highlight-color: var(--prose-highlight-color, var(--color-foreground));
123
+ --sw-prose-highlight-bg-color: var(
124
+ --prose-highlight-bg-color,
125
+ --alpha(var(--color-warning) / 30%)
126
+ );
127
+
128
+ /* ===================
129
+ * Base styles
130
+ * =================== */
131
+ line-height: var(--sw-prose-line-height);
132
+ color: var(--sw-prose-color);
133
+ }
134
+
135
+ /* Vertical rhythm - spacing between block elements */
136
+ .sw-prose
137
+ :not(a, strong, em, del, span, input, code, br, kbd)
138
+ + :not(a, strong, em, del, span, input, code, br, kbd, :where(.not-sw-prose *)) {
139
+ margin-top: var(--sw-prose-spacing);
140
+ }
141
+
142
+ /* Headings after non-headings have more spacing */
143
+ .sw-prose
144
+ :not(h1, h2, h3, h4, h5, h6)
145
+ + :is(h1, h2, h3, h4, h5, h6):not(:where(.not-sw-prose *)) {
146
+ margin-top: var(--sw-prose-heading-spacing);
147
+ }
148
+
149
+ /* First/last child margin reset */
150
+ .sw-prose > :first-child:not(:where(.not-sw-prose *)) {
151
+ margin-top: 0;
152
+ }
153
+ .sw-prose > :last-child:not(:where(.not-sw-prose *)) {
154
+ margin-bottom: 0;
155
+ }
156
+
157
+ /* **************************************************************************
158
+ * Headings
159
+ * ************************************************************************** */
160
+
161
+ .sw-prose :is(h1, h2, h3, h4, h5, h6):not(:where(.not-sw-prose *)) {
162
+ color: var(--sw-prose-heading-color);
163
+ font-family: var(--sw-prose-heading-font);
164
+ font-weight: var(--sw-prose-heading-weight);
165
+ line-height: var(--sw-prose-heading-line-height);
166
+ }
167
+
168
+ .sw-prose h1:not(:where(.not-sw-prose *)) {
169
+ font-size: var(--sw-prose-h1-size);
170
+ font-weight: var(--sw-prose-h1-weight);
171
+ margin-bottom: 0.889em;
172
+ }
173
+
174
+ .sw-prose h2:not(:where(.not-sw-prose *)) {
175
+ font-size: var(--sw-prose-h2-size);
176
+ font-weight: var(--sw-prose-h2-weight);
177
+ margin-bottom: 0.667em;
178
+ }
179
+
180
+ .sw-prose h3:not(:where(.not-sw-prose *)) {
181
+ font-size: var(--sw-prose-h3-size);
182
+ font-weight: var(--sw-prose-h3-weight);
183
+ margin-bottom: 0.6em;
184
+ }
185
+
186
+ .sw-prose h4:not(:where(.not-sw-prose *)) {
187
+ font-size: var(--sw-prose-h4-size);
188
+ font-weight: var(--sw-prose-h4-weight);
189
+ margin-bottom: 0.5em;
190
+ }
191
+
192
+ .sw-prose h5:not(:where(.not-sw-prose *)),
193
+ .sw-prose h6:not(:where(.not-sw-prose *)) {
194
+ font-size: inherit;
195
+ font-weight: var(--sw-prose-heading-weight);
196
+ margin-bottom: 0.5em;
197
+ }
198
+
199
+ /* Reset margin-top after headings */
200
+ .sw-prose :is(h1, h2, h3, h4, h5, h6) + *:not(:where(.not-sw-prose *)) {
201
+ margin-top: 0;
202
+ }
203
+
204
+ /* **************************************************************************
205
+ * Paragraphs
206
+ * ************************************************************************** */
207
+
208
+ .sw-prose p:not(:where(.not-sw-prose *)) {
209
+ margin-top: var(--sw-prose-spacing);
210
+ margin-bottom: var(--sw-prose-spacing);
211
+ }
212
+
213
+ /* **************************************************************************
214
+ * Links
215
+ * ************************************************************************** */
216
+
217
+ .sw-prose a:not(:where(.not-sw-prose *)) {
218
+ color: var(--sw-prose-link-color);
219
+ text-decoration: underline;
220
+ text-decoration-color: var(--sw-prose-link-decoration-color);
221
+ text-underline-offset: 0.15em;
222
+ font-weight: 500;
223
+ transition-property: color;
224
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
225
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
226
+ }
227
+
228
+ .sw-prose a:hover:not(:where(.not-sw-prose *)) {
229
+ color: var(--sw-prose-link-hover-color);
230
+ }
231
+
232
+ /* **************************************************************************
233
+ * Strong, Bold, Emphasis
234
+ * ************************************************************************** */
235
+
236
+ .sw-prose strong:not(:where(.not-sw-prose *)) {
237
+ color: var(--sw-prose-strong-color);
238
+ font-weight: var(--sw-prose-strong-weight);
239
+ }
240
+
241
+ .sw-prose :is(a, blockquote, thead th) strong:not(:where(.not-sw-prose *)) {
242
+ color: inherit;
243
+ }
244
+
245
+ /* **************************************************************************
246
+ * Lists
247
+ * ************************************************************************** */
248
+
249
+ .sw-prose :is(ul, ol):not(:where(.not-sw-prose *)) {
250
+ padding-inline-start: var(--sw-prose-list-indent);
251
+ margin-top: var(--sw-prose-spacing);
252
+ margin-bottom: var(--sw-prose-spacing);
253
+ }
254
+
255
+ .sw-prose ul:not(:where(.not-sw-prose *)) {
256
+ list-style-type: disc;
257
+ }
258
+
259
+ .sw-prose ol:not(:where(.not-sw-prose *)) {
260
+ list-style-type: decimal;
261
+ }
262
+
263
+ .sw-prose li:not(:where(.not-sw-prose *)) {
264
+ margin-top: 0.5em;
265
+ margin-bottom: 0.5em;
266
+ padding-inline-start: 0.375em;
267
+ overflow-wrap: anywhere;
268
+ }
269
+
270
+ .sw-prose li + li:not(:where(.not-sw-prose *)) {
271
+ margin-top: 0.25rem;
272
+ }
273
+
274
+ .sw-prose :is(ul, ol) :is(ul, ol):not(:where(.not-sw-prose *)) {
275
+ margin-top: 0.75em;
276
+ margin-bottom: 0.75em;
277
+ }
278
+
279
+ .sw-prose ol > li:not(:where(.not-sw-prose *))::marker {
280
+ font-weight: 400;
281
+ color: var(--sw-prose-list-marker-color);
282
+ }
283
+
284
+ .sw-prose ul > li:not(:where(.not-sw-prose *))::marker {
285
+ color: var(--sw-prose-list-marker-color);
286
+ }
287
+
288
+ /* Definition lists */
289
+ .sw-prose dl:not(:where(.not-sw-prose *)) {
290
+ margin-top: var(--sw-prose-spacing);
291
+ margin-bottom: var(--sw-prose-spacing);
292
+ }
293
+
294
+ .sw-prose dt:not(:where(.not-sw-prose *)) {
295
+ color: var(--color-foreground);
296
+ font-weight: 600;
297
+ margin-top: var(--sw-prose-spacing);
298
+ opacity: 1;
299
+ }
300
+
301
+ .sw-prose dd:not(:where(.not-sw-prose *)) {
302
+ margin-top: 0.25rem;
303
+ padding-inline-start: var(--sw-prose-list-indent);
304
+ }
305
+
306
+ .sw-prose dt + dt:not(:where(.not-sw-prose *)),
307
+ .sw-prose dt + dd:not(:where(.not-sw-prose *)),
308
+ .sw-prose dd + dd:not(:where(.not-sw-prose *)) {
309
+ margin-top: 0.25rem;
310
+ }
311
+
312
+ /* **************************************************************************
313
+ * Blockquotes
314
+ * ************************************************************************** */
315
+
316
+ .sw-prose blockquote:not(:where(.not-sw-prose *)) {
317
+ font-style: italic;
318
+ color: var(--sw-prose-blockquote-color);
319
+ border-inline-start: var(--sw-prose-blockquote-border-width) solid
320
+ var(--sw-prose-blockquote-border-color);
321
+ padding-inline-start: 1rem;
322
+ margin-top: var(--sw-prose-spacing);
323
+ margin-bottom: var(--sw-prose-spacing);
324
+ }
325
+
326
+ .sw-prose blockquote p:first-of-type:not(:where(.not-sw-prose *))::before {
327
+ content: open-quote;
328
+ }
329
+
330
+ .sw-prose blockquote p:last-of-type:not(:where(.not-sw-prose *))::after {
331
+ content: close-quote;
332
+ }
333
+
334
+ /* **************************************************************************
335
+ * Code (inline)
336
+ * ************************************************************************** */
337
+
338
+ .sw-prose code:not(:where(.not-sw-prose *)) {
339
+ background-color: var(--sw-prose-code-bg);
340
+ color: var(--sw-prose-code-color);
341
+ font-size: var(--sw-prose-code-size);
342
+ font-weight: var(--sw-prose-code-weight);
343
+ /* padding: 0.125rem 0.375rem; */
344
+ padding: calc(var(--spacing) / 2) calc(var(--spacing) * 1.25);
345
+ border-radius: var(--sw-prose-code-radius);
346
+ }
347
+
348
+ .sw-prose :is(h1, h2, h3, h4, h5, h6) code:not(:where(.not-sw-prose *)) {
349
+ font-size: inherit;
350
+ }
351
+
352
+ .sw-prose a code:not(:where(.not-sw-prose *)) {
353
+ color: inherit;
354
+ }
355
+
356
+ /* **************************************************************************
357
+ * Pre / Code blocks
358
+ * ************************************************************************** */
359
+
360
+ .sw-prose pre:not(:where(.not-sw-prose *)) {
361
+ border: 1px solid var(--sw-prose-pre-border-color);
362
+ border-radius: var(--sw-prose-pre-border-radius);
363
+ padding: 0.75rem 1rem;
364
+ font-size: var(--sw-prose-code-size);
365
+ line-height: 1.714;
366
+ overflow-x: auto;
367
+ tab-size: 2;
368
+ margin-top: var(--sw-prose-spacing);
369
+ margin-bottom: var(--sw-prose-spacing);
370
+ }
371
+
372
+ .sw-prose pre code:not(:where(.not-sw-prose *)) {
373
+ all: unset;
374
+ font-family: var(--font-mono);
375
+ }
376
+
377
+ /* **************************************************************************
378
+ * Horizontal Rules
379
+ * ************************************************************************** */
380
+
381
+ .sw-prose hr:not(:where(.not-sw-prose *)) {
382
+ border: 0;
383
+ border-top: 1px solid var(--color-border);
384
+ margin-top: 3em;
385
+ margin-bottom: 3em;
386
+ }
387
+
388
+ .sw-prose hr + *:not(:where(.not-sw-prose *)) {
389
+ margin-top: 0;
390
+ }
391
+
392
+ /* **************************************************************************
393
+ * Images and Media
394
+ * ************************************************************************** */
395
+
396
+ .sw-prose :is(img, picture, video, canvas, svg, iframe):not(:where(.not-sw-prose *)) {
397
+ display: block;
398
+ max-width: 100%;
399
+ height: auto;
400
+ border: var(--sw-prose-media-border-width) solid var(--sw-prose-media-border-color);
401
+ border-radius: var(--sw-prose-media-border-radius);
402
+ margin-top: var(--sw-prose-spacing);
403
+ margin-bottom: var(--sw-prose-spacing);
404
+ }
405
+
406
+ .sw-prose picture > img:not(:where(.not-sw-prose *)) {
407
+ margin-top: 0;
408
+ margin-bottom: 0;
409
+ }
410
+
411
+ /* **************************************************************************
412
+ * Figures and Captions
413
+ * ************************************************************************** */
414
+
415
+ .sw-prose figure:not(:where(.not-sw-prose *)) {
416
+ margin-top: var(--sw-prose-spacing);
417
+ margin-bottom: var(--sw-prose-spacing);
418
+ }
419
+
420
+ .sw-prose figure > *:not(:where(.not-sw-prose *)) {
421
+ margin-top: 0;
422
+ margin-bottom: 0;
423
+ }
424
+
425
+ .sw-prose figcaption:not(:where(.not-sw-prose *)) {
426
+ color: var(--color-muted-foreground);
427
+ font-size: var(--sw-prose-code-size);
428
+ margin-top: 0.857em;
429
+ }
430
+
431
+ /* **************************************************************************
432
+ * Tables
433
+ * ************************************************************************** */
434
+
435
+ .sw-prose table:not(:where(.not-sw-prose *)) {
436
+ width: 100%;
437
+ table-layout: auto;
438
+ margin-top: var(--sw-prose-spacing);
439
+ margin-bottom: var(--sw-prose-spacing);
440
+ font-size: var(--sw-prose-code-size);
441
+ line-height: 1.714;
442
+ }
443
+
444
+ .sw-prose thead:not(:where(.not-sw-prose *)) {
445
+ border-bottom: 1px solid var(--sw-prose-table-border-color);
446
+ }
447
+
448
+ .sw-prose thead th:not(:where(.not-sw-prose *)) {
449
+ color: var(--sw-prose-table-heading-color);
450
+ font-weight: 600;
451
+ vertical-align: bottom;
452
+ padding-inline-end: 0.571em;
453
+ padding-bottom: 0.571em;
454
+ padding-inline-start: 0.571em;
455
+ text-align: start;
456
+ opacity: 1;
457
+ }
458
+
459
+ .sw-prose thead th:first-child:not(:where(.not-sw-prose *)) {
460
+ padding-inline-start: 0;
461
+ }
462
+
463
+ .sw-prose thead th:last-child:not(:where(.not-sw-prose *)) {
464
+ padding-inline-end: 0;
465
+ }
466
+
467
+ .sw-prose tbody tr:not(:where(.not-sw-prose *)) {
468
+ border-bottom: 1px solid var(--sw-prose-table-border-color);
469
+ }
470
+
471
+ .sw-prose tbody tr:last-child:not(:where(.not-sw-prose *)) {
472
+ border-bottom-width: 0;
473
+ }
474
+
475
+ .sw-prose :is(td, th):not(:where(.not-sw-prose *)) {
476
+ vertical-align: baseline;
477
+ padding: 0.571em;
478
+ }
479
+
480
+ .sw-prose :is(td:first-child, th:first-child):not(:where(.not-sw-prose *)) {
481
+ padding-inline-start: 0;
482
+ }
483
+
484
+ .sw-prose :is(td:last-child, th:last-child):not(:where(.not-sw-prose *)) {
485
+ padding-inline-end: 0;
486
+ }
487
+
488
+ .sw-prose tfoot:not(:where(.not-sw-prose *)) {
489
+ border-top: 1px solid var(--sw-prose-table-border-color);
490
+ }
491
+
492
+ .sw-prose tfoot td:not(:where(.not-sw-prose *)) {
493
+ vertical-align: top;
494
+ }
495
+
496
+ /* **************************************************************************
497
+ * Keyboard Input
498
+ * ************************************************************************** */
499
+
500
+ .sw-prose kbd:not(:where(.not-sw-prose *)) {
501
+ font-weight: 500;
502
+ font-family: inherit;
503
+ font-size: var(--sw-prose-code-size);
504
+ width: fit-content;
505
+ display: inline-flex;
506
+ justify-content: center;
507
+ align-items: center;
508
+ gap: var(--spacing);
509
+ min-width: calc(var(--spacing) * 5);
510
+ color: var(--color-muted-foreground);
511
+ background-color: var(--color-muted);
512
+ padding: calc(var(--spacing) / 2) calc(var(--spacing) * 1.25);
513
+ border-radius: var(--radius-sm);
514
+ /* box-shadow:
515
+ 0 0 0 1px color-mix(in srgb, var(--color-foreground) 10%, transparent),
516
+ 0 2px 0 color-mix(in srgb, var(--color-foreground) 10%, transparent); */
517
+ }
518
+
519
+ /* **************************************************************************
520
+ * Details / Summary (Starlight-inspired)
521
+ * ************************************************************************** */
522
+
523
+ .sw-prose details:not(:where(.not-sw-prose *)) {
524
+ --sw-details-border-color: var(--color-border);
525
+ --sw-details-border-color-hover: var(--color-primary-accent);
526
+
527
+ border-inline-start: 2px solid var(--sw-details-border-color);
528
+ padding-inline-start: 1rem;
529
+ margin-top: var(--sw-prose-spacing);
530
+ margin-bottom: var(--sw-prose-spacing);
531
+ transition-property: border-color;
532
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
533
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
534
+ }
535
+
536
+ .sw-prose details:not([open]):hover:not(:where(.not-sw-prose *)),
537
+ .sw-prose details:has(> summary:hover):not(:where(.not-sw-prose *)) {
538
+ border-color: var(--sw-details-border-color-hover);
539
+ }
540
+
541
+ .sw-prose summary:not(:where(.not-sw-prose *)) {
542
+ color: var(--color-foreground);
543
+ cursor: pointer;
544
+ display: block;
545
+ font-weight: 600;
546
+ margin-inline-start: -0.5rem;
547
+ padding-inline-start: 0.5rem;
548
+ opacity: 1;
549
+ }
550
+
551
+ .sw-prose details[open] > summary:not(:where(.not-sw-prose *)) {
552
+ margin-bottom: 1rem;
553
+ }
554
+
555
+ /* Summary marker styles */
556
+ .sw-prose summary:not(:where(.not-sw-prose *))::marker,
557
+ .sw-prose summary:not(:where(.not-sw-prose *))::-webkit-details-marker {
558
+ display: none;
559
+ }
560
+
561
+ .sw-prose summary:not(:where(.not-sw-prose *))::before {
562
+ --sw-details-marker-size: 1.25rem;
563
+
564
+ background-color: currentColor;
565
+ content: "";
566
+ display: inline-block;
567
+ height: var(--sw-details-marker-size);
568
+ width: var(--sw-details-marker-size);
569
+ margin-inline: calc((var(--sw-details-marker-size) / 4) * -1) 0.25rem;
570
+ vertical-align: middle;
571
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14.8 11.3 10.6 7a1 1 0 1 0-1.4 1.5l3.5 3.5-3.5 3.5a1 1 0 0 0 0 1.4 1 1 0 0 0 .7.3 1 1 0 0 0 .7-.3l4.2-4.2a1 1 0 0 0 0-1.4Z'/%3E%3C/svg%3E%0A");
572
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14.8 11.3 10.6 7a1 1 0 1 0-1.4 1.5l3.5 3.5-3.5 3.5a1 1 0 0 0 0 1.4 1 1 0 0 0 .7.3 1 1 0 0 0 .7-.3l4.2-4.2a1 1 0 0 0 0-1.4Z'/%3E%3C/svg%3E%0A");
573
+ -webkit-mask-repeat: no-repeat;
574
+ mask-repeat: no-repeat;
575
+ }
576
+
577
+ @media (prefers-reduced-motion: no-preference) {
578
+ .sw-prose summary:not(:where(.not-sw-prose *))::before {
579
+ transition: transform 0.2s ease-in-out;
580
+ }
581
+ }
582
+
583
+ .sw-prose details[open] > summary:not(:where(.not-sw-prose *))::before {
584
+ transform: rotateZ(90deg);
585
+ }
586
+
587
+ [dir="rtl"] .sw-prose summary:not(:where(.not-sw-prose *))::before,
588
+ .sw-prose [dir="rtl"] summary:not(:where(.not-sw-prose *))::before {
589
+ transform: rotateZ(180deg);
590
+ }
591
+
592
+ /* Summary with only a paragraph (MDX) */
593
+ .sw-prose summary:not(:where(.not-sw-prose *)) p:only-child {
594
+ display: inline;
595
+ }
596
+
597
+ /* **************************************************************************
598
+ * Miscellaneous
599
+ * ************************************************************************** */
600
+
601
+ /* Abbreviations */
602
+ .sw-prose abbr[title]:not(:where(.not-sw-prose *)) {
603
+ text-decoration: underline dotted;
604
+ cursor: help;
605
+ }
606
+
607
+ /* Mark/Highlight */
608
+ .sw-prose mark:not(:where(.not-sw-prose *)) {
609
+ background-color: var(--sw-prose-highlight-bg-color);
610
+ color: var(--sw-prose-highlight-color);
611
+ padding: calc(var(--spacing) / 2) var(--spacing);
612
+ border-radius: calc(var(--radius) / 4);
613
+ }
614
+
615
+ /* Subscript and Superscript */
616
+ .sw-prose :is(sub, sup):not(:where(.not-sw-prose *)) {
617
+ font-size: 0.75em;
618
+ }
619
+ </style>