fulldev-ui 0.9.2 → 0.10.0

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 (255) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +100 -16
  3. package/package.json +3 -2
  4. package/public/r/accordion.json +3 -5
  5. package/public/r/alert-dialog.json +1 -1
  6. package/public/r/alert.json +0 -5
  7. package/public/r/article-1.json +1 -1
  8. package/public/r/article-2.json +1 -1
  9. package/public/r/articles-1.json +1 -1
  10. package/public/r/articles-2.json +1 -1
  11. package/public/r/articles-3.json +1 -1
  12. package/public/r/avatar.json +1 -16
  13. package/public/r/badge.json +1 -1
  14. package/public/r/banner-1.json +5 -3
  15. package/public/r/banner-2.json +1 -1
  16. package/public/r/banner.json +5 -3
  17. package/public/r/blocks-1.json +6 -3
  18. package/public/r/breadcrumb.json +4 -4
  19. package/public/r/button.json +1 -1
  20. package/public/r/card.json +4 -4
  21. package/public/r/carousel.json +5 -5
  22. package/public/r/checkbox.json +1 -1
  23. package/public/r/combobox.json +8 -8
  24. package/public/r/command.json +6 -6
  25. package/public/r/components.json +1 -6
  26. package/public/r/contact-1.json +4 -2
  27. package/public/r/contact-2.json +4 -2
  28. package/public/r/contact-3.json +11 -3
  29. package/public/r/content-1.json +11 -3
  30. package/public/r/content-2.json +11 -3
  31. package/public/r/content-3.json +7 -1
  32. package/public/r/content-4.json +11 -3
  33. package/public/r/cta-2.json +7 -1
  34. package/public/r/cta-4.json +7 -1
  35. package/public/r/cta-5.json +11 -3
  36. package/public/r/cta-6.json +7 -1
  37. package/public/r/dialog.json +6 -6
  38. package/public/r/doc-1.json +6 -3
  39. package/public/r/dropdown-menu.json +9 -11
  40. package/public/r/features-1.json +5 -3
  41. package/public/r/features-2.json +5 -3
  42. package/public/r/features-4.json +5 -3
  43. package/public/r/features-5.json +4 -2
  44. package/public/r/field.json +2 -7
  45. package/public/r/footer-1.json +5 -3
  46. package/public/r/footer-2.json +5 -3
  47. package/public/r/footer-3.json +5 -3
  48. package/public/r/header-1.json +1 -1
  49. package/public/r/header.json +3 -0
  50. package/public/r/hero-13.json +1 -1
  51. package/public/r/hero-4.json +5 -3
  52. package/public/r/hero-5.json +5 -3
  53. package/public/r/hero-6.json +5 -3
  54. package/public/r/hero-7.json +5 -3
  55. package/public/r/hero-8.json +1 -1
  56. package/public/r/hero-9.json +5 -3
  57. package/public/r/hover-card.json +2 -2
  58. package/public/r/icon.json +1 -1
  59. package/public/r/input-group.json +1 -1
  60. package/public/r/item.json +2 -20
  61. package/public/r/kbd.json +2 -2
  62. package/public/r/layout.json +4 -7
  63. package/public/r/links-2.json +5 -3
  64. package/public/r/marquee.json +1 -1
  65. package/public/r/native-select.json +3 -3
  66. package/public/r/navigation-menu.json +6 -8
  67. package/public/r/page.json +17 -0
  68. package/public/r/popover.json +1 -1
  69. package/public/r/pricing-1.json +5 -3
  70. package/public/r/pricing-2.json +5 -3
  71. package/public/r/pricing-3.json +5 -3
  72. package/public/r/products-1.json +1 -1
  73. package/public/r/products-4.json +1 -1
  74. package/public/r/products-5.json +1 -1
  75. package/public/r/radio-group.json +1 -1
  76. package/public/r/rating.json +3 -3
  77. package/public/r/registry.json +186 -440
  78. package/public/r/reviews-1.json +5 -3
  79. package/public/r/reviews-2.json +5 -3
  80. package/public/r/reviews-3.json +5 -3
  81. package/public/r/reviews-4.json +1 -1
  82. package/public/r/reviews-5.json +5 -3
  83. package/public/r/select.json +6 -8
  84. package/public/r/services-1.json +11 -3
  85. package/public/r/services-2.json +7 -1
  86. package/public/r/services-3.json +7 -1
  87. package/public/r/services-4.json +11 -3
  88. package/public/r/services-5.json +5 -3
  89. package/public/r/services-6.json +11 -3
  90. package/public/r/services-7.json +11 -3
  91. package/public/r/sheet.json +6 -3
  92. package/public/r/sidebar-1.json +4 -2
  93. package/public/r/sidebar.json +10 -7
  94. package/public/r/slider.json +1 -1
  95. package/public/r/spinner.json +3 -3
  96. package/public/r/switch.json +1 -1
  97. package/public/r/theme-toggle.json +5 -3
  98. package/public/r/tooltip.json +1 -1
  99. package/public/r/typography.json +16 -16
  100. package/public/r/video.json +1 -1
  101. package/registry.json +186 -440
  102. package/src/components/blocks/article-1.astro +1 -1
  103. package/src/components/blocks/article-2.astro +1 -1
  104. package/src/components/blocks/articles-1.astro +1 -1
  105. package/src/components/blocks/articles-2.astro +2 -2
  106. package/src/components/blocks/articles-3.astro +1 -1
  107. package/src/components/blocks/banner-1.astro +3 -5
  108. package/src/components/blocks/banner-2.astro +1 -1
  109. package/src/components/blocks/blocks-1.astro +25 -37
  110. package/src/components/blocks/contact-3.astro +4 -3
  111. package/src/components/blocks/content-1.astro +5 -4
  112. package/src/components/blocks/content-2.astro +6 -5
  113. package/src/components/blocks/content-3.astro +9 -2
  114. package/src/components/blocks/content-4.astro +6 -5
  115. package/src/components/blocks/cta-2.astro +4 -3
  116. package/src/components/blocks/cta-4.astro +3 -2
  117. package/src/components/blocks/cta-5.astro +6 -5
  118. package/src/components/blocks/cta-6.astro +4 -3
  119. package/src/components/blocks/doc-1.astro +28 -56
  120. package/src/components/blocks/features-1.astro +3 -1
  121. package/src/components/blocks/features-2.astro +4 -2
  122. package/src/components/blocks/features-4.astro +3 -1
  123. package/src/components/blocks/footer-1.astro +26 -12
  124. package/src/components/blocks/footer-2.astro +24 -12
  125. package/src/components/blocks/footer-3.astro +26 -12
  126. package/src/components/blocks/header-1.astro +2 -3
  127. package/src/components/blocks/hero-13.astro +1 -1
  128. package/src/components/blocks/hero-4.astro +2 -2
  129. package/src/components/blocks/hero-5.astro +3 -3
  130. package/src/components/blocks/hero-6.astro +3 -3
  131. package/src/components/blocks/hero-7.astro +3 -3
  132. package/src/components/blocks/hero-8.astro +1 -1
  133. package/src/components/blocks/hero-9.astro +2 -2
  134. package/src/components/blocks/links-2.astro +3 -5
  135. package/src/components/blocks/pricing-1.astro +3 -2
  136. package/src/components/blocks/pricing-2.astro +3 -2
  137. package/src/components/blocks/pricing-3.astro +3 -2
  138. package/src/components/blocks/products-1.astro +1 -1
  139. package/src/components/blocks/products-4.astro +2 -2
  140. package/src/components/blocks/products-5.astro +4 -4
  141. package/src/components/blocks/reviews-1.astro +2 -2
  142. package/src/components/blocks/reviews-2.astro +2 -2
  143. package/src/components/blocks/reviews-3.astro +2 -2
  144. package/src/components/blocks/reviews-4.astro +4 -4
  145. package/src/components/blocks/reviews-5.astro +16 -25
  146. package/src/components/blocks/services-1.astro +7 -9
  147. package/src/components/blocks/services-2.astro +5 -4
  148. package/src/components/blocks/services-3.astro +6 -5
  149. package/src/components/blocks/services-4.astro +7 -9
  150. package/src/components/blocks/services-5.astro +3 -4
  151. package/src/components/blocks/services-6.astro +7 -6
  152. package/src/components/blocks/services-7.astro +7 -9
  153. package/src/components/blocks/sidebar-1.astro +42 -97
  154. package/src/components/ui/accordion/accordion-trigger.astro +7 -8
  155. package/src/components/ui/alert-dialog/alert-dialog.astro +23 -3
  156. package/src/components/ui/avatar/avatar.astro +1 -1
  157. package/src/components/ui/badge/badge.astro +1 -0
  158. package/src/components/ui/banner/banner-container.astro +3 -3
  159. package/src/components/ui/breadcrumb/breadcrumb-ellipsis.astro +2 -2
  160. package/src/components/ui/breadcrumb/breadcrumb-separator.astro +2 -2
  161. package/src/components/ui/button/button-variants.ts +8 -7
  162. package/src/components/ui/card/card-content.astro +1 -1
  163. package/src/components/ui/card/card-footer.astro +1 -1
  164. package/src/components/ui/card/card-header.astro +1 -1
  165. package/src/components/ui/card/card.astro +1 -1
  166. package/src/components/ui/carousel/carousel-next.astro +3 -3
  167. package/src/components/ui/carousel/carousel-previous.astro +3 -3
  168. package/src/components/ui/checkbox/checkbox.astro +1 -1
  169. package/src/components/ui/combobox/combobox-input.astro +2 -2
  170. package/src/components/ui/combobox/combobox-item.astro +4 -4
  171. package/src/components/ui/combobox/combobox-list.astro +1 -1
  172. package/src/components/ui/combobox/combobox-trigger.astro +2 -5
  173. package/src/components/ui/combobox/combobox.astro +3 -0
  174. package/src/components/ui/command/command-dialog.astro +10 -10
  175. package/src/components/ui/command/command-input.astro +2 -2
  176. package/src/components/ui/command/command-item.astro +4 -5
  177. package/src/components/ui/dialog/dialog-close.astro +2 -2
  178. package/src/components/ui/dialog/dialog-content.astro +2 -2
  179. package/src/components/ui/dialog/dialog.astro +26 -3
  180. package/src/components/ui/dropdown-menu/dropdown-menu-checkbox-item.astro +4 -5
  181. package/src/components/ui/dropdown-menu/dropdown-menu-content.astro +4 -4
  182. package/src/components/ui/dropdown-menu/dropdown-menu-item.astro +1 -1
  183. package/src/components/ui/dropdown-menu/dropdown-menu-label.astro +1 -1
  184. package/src/components/ui/dropdown-menu/dropdown-menu-radio-item.astro +4 -5
  185. package/src/components/ui/dropdown-menu/dropdown-menu-shortcut.astro +1 -1
  186. package/src/components/ui/dropdown-menu/dropdown-menu.astro +3 -0
  187. package/src/components/ui/field/field-label.astro +1 -1
  188. package/src/components/ui/field/field-title.astro +1 -1
  189. package/src/components/ui/hover-card/hover-card-content.astro +4 -4
  190. package/src/components/ui/hover-card/hover-card.astro +2 -2
  191. package/src/components/ui/icon/icon.astro +7 -10
  192. package/src/components/ui/input-group/input-group-button.astro +0 -1
  193. package/src/components/ui/item/item-media.astro +1 -1
  194. package/src/components/ui/item/item.astro +0 -18
  195. package/src/components/ui/kbd/kbd-group.astro +1 -1
  196. package/src/components/ui/kbd/kbd.astro +1 -1
  197. package/src/components/ui/layout/layout-body.astro +1 -1
  198. package/src/components/ui/layout/layout-head.astro +3 -2
  199. package/src/components/ui/layout/layout-main.astro +1 -1
  200. package/src/components/ui/layout/layout.astro +4 -0
  201. package/src/components/ui/marquee/marquee.astro +49 -68
  202. package/src/components/ui/native-select/native-select.astro +2 -3
  203. package/src/components/ui/navigation-menu/navigation-menu-content.astro +1 -1
  204. package/src/components/ui/navigation-menu/navigation-menu-list.astro +1 -1
  205. package/src/components/ui/navigation-menu/navigation-menu-trigger.astro +2 -3
  206. package/src/components/ui/navigation-menu/navigation-menu.astro +1 -1
  207. package/src/components/ui/popover/popover-content.astro +1 -1
  208. package/src/components/ui/radio-group/radio-group-item.astro +3 -3
  209. package/src/components/ui/rating/rating.astro +3 -3
  210. package/src/components/ui/select/select-content.astro +1 -1
  211. package/src/components/ui/select/select-item.astro +4 -4
  212. package/src/components/ui/select/select-trigger.astro +3 -6
  213. package/src/components/ui/select/select.astro +6 -0
  214. package/src/components/ui/sheet/sheet-content.astro +4 -5
  215. package/src/components/ui/sidebar/sidebar-menu-button.astro +13 -10
  216. package/src/components/ui/sidebar/sidebar-menu-sub-button.astro +10 -8
  217. package/src/components/ui/sidebar/sidebar-provider.astro +1 -13
  218. package/src/components/ui/sidebar/sidebar-rail.astro +1 -1
  219. package/src/components/ui/sidebar/sidebar-trigger.astro +3 -3
  220. package/src/components/ui/sidebar/sidebar.astro +1 -1
  221. package/src/components/ui/slider/slider.astro +6 -4
  222. package/src/components/ui/spinner/spinner.astro +4 -4
  223. package/src/components/ui/switch/switch.astro +1 -1
  224. package/src/components/ui/theme-toggle/theme-toggle.astro +4 -3
  225. package/src/components/ui/tooltip/tooltip-content.astro +1 -1
  226. package/src/components/ui/typography/typography-a.astro +19 -4
  227. package/src/components/ui/typography/typography-blockquote.astro +26 -6
  228. package/src/components/ui/typography/typography-h1.astro +7 -9
  229. package/src/components/ui/typography/typography-h2.astro +12 -9
  230. package/src/components/ui/typography/typography-h3.astro +7 -9
  231. package/src/components/ui/typography/typography-h4.astro +7 -9
  232. package/src/components/ui/typography/typography-inline-code.astro +28 -12
  233. package/src/components/ui/typography/typography-lead.astro +29 -4
  234. package/src/components/ui/typography/typography-list-item.astro +25 -9
  235. package/src/components/ui/typography/typography-list.astro +29 -11
  236. package/src/components/ui/typography/typography-p.astro +26 -6
  237. package/src/components/ui/typography/typography-table-cell.astro +32 -13
  238. package/src/components/ui/typography/typography-table-head.astro +27 -13
  239. package/src/components/ui/typography/typography-table-row.astro +23 -13
  240. package/src/components/ui/typography/typography-table.astro +29 -20
  241. package/src/components/ui/typography/typography.astro +172 -46
  242. package/src/components/ui/video/video.astro +11 -27
  243. package/src/styles/global.css +2 -15
  244. package/public/r/beta-repo-setup.json +0 -131
  245. package/public/r/blocks.json +0 -91
  246. package/public/r/content-5.json +0 -17
  247. package/public/r/content-6.json +0 -17
  248. package/public/r/init.json +0 -23
  249. package/public/r/tile.json +0 -27
  250. package/src/components/blocks/content-5.astro +0 -115
  251. package/src/components/blocks/content-6.astro +0 -91
  252. package/src/components/ui/tile/index.ts +0 -3
  253. package/src/components/ui/tile/tile-content.astro +0 -17
  254. package/src/components/ui/tile/tile-group.astro +0 -76
  255. package/src/components/ui/tile/tile.astro +0 -46
@@ -47,14 +47,16 @@ const thumbCount = Array.isArray(defaultValue) ? defaultValue.length : 1
47
47
  data-thumb-alignment={thumbAlignment}
48
48
  data-disabled={disabled}
49
49
  class={cn(
50
- "relative flex touch-none items-center select-none data-disabled:opacity-50 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-40 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",
50
+ "data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full",
51
51
  className
52
52
  )}
53
53
  {...props}
54
54
  >
55
55
  <div
56
56
  data-slot="slider-control"
57
- class="relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-40 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col"
57
+ data-orientation={orientation}
58
+ data-disabled={disabled}
59
+ class="relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-40 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col"
58
60
  >
59
61
  <div
60
62
  data-slot="slider-track"
@@ -62,7 +64,7 @@ const thumbCount = Array.isArray(defaultValue) ? defaultValue.length : 1
62
64
  >
63
65
  <div
64
66
  data-slot="slider-range"
65
- class="bg-primary rounded-full select-none data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full"
67
+ class="bg-primary select-none data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full"
66
68
  >
67
69
  </div>
68
70
  </div>
@@ -70,7 +72,7 @@ const thumbCount = Array.isArray(defaultValue) ? defaultValue.length : 1
70
72
  Array.from({ length: thumbCount }).map(() => (
71
73
  <div
72
74
  data-slot="slider-thumb"
73
- class="border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] select-none hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden data-disabled:pointer-events-none data-disabled:opacity-50"
75
+ class="border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] select-none hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden data-[disabled]:pointer-events-none data-[disabled]:opacity-50"
74
76
  />
75
77
  ))
76
78
  }
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  import type { HTMLAttributes } from "astro/types"
3
+ import LoaderCircle from "@lucide/astro/icons/loader-circle"
3
4
 
4
5
  import { cn } from "@/lib/utils"
5
- import { Icon } from "@/components/ui/icon"
6
6
 
7
7
  type Props = HTMLAttributes<"svg"> & {
8
8
  color?: string
@@ -15,10 +15,10 @@ type Props = HTMLAttributes<"svg"> & {
15
15
  const { class: className, ...props } = Astro.props
16
16
  ---
17
17
 
18
- <Icon
19
- {...props}
18
+ <LoaderCircle
19
+ data-slot="spinner"
20
20
  role="status"
21
21
  aria-label="Loading"
22
- name="loader-circle"
23
22
  class={cn("size-4 animate-spin", className)}
23
+ {...props}
24
24
  />
@@ -29,7 +29,7 @@ const {
29
29
 
30
30
  const initialChecked = defaultChecked === true
31
31
  const switchStyle =
32
- "peer group/switch focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 relative inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:ring-3 aria-invalid:ring-3 data-disabled:cursor-not-allowed data-disabled:opacity-50 data-readonly:cursor-default"
32
+ "peer group/switch focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 relative inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none group-has-[:focus-visible]/field-label:border-transparent group-has-[:focus-visible]/field-label:ring-0 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:ring-3 aria-invalid:ring-3 data-disabled:cursor-not-allowed data-disabled:opacity-50 data-readonly:cursor-default"
33
33
  const switchSizeStyle = {
34
34
  sm: "h-[14px] w-[24px]",
35
35
  default: "h-[18.4px] w-[32px]",
@@ -1,9 +1,10 @@
1
1
  ---
2
2
  import type { ComponentProps } from "astro/types"
3
+ import Moon from "@lucide/astro/icons/moon"
4
+ import Sun from "@lucide/astro/icons/sun"
3
5
 
4
6
  import { cn } from "@/lib/utils"
5
7
  import { Button } from "@/components/ui/button"
6
- import { Icon } from "@/components/ui/icon"
7
8
 
8
9
  type Props = ComponentProps<typeof Button>
9
10
 
@@ -23,8 +24,8 @@ const {
23
24
  class={cn("relative", className)}
24
25
  {...props}
25
26
  >
26
- <Icon name="sun" class="dark:hidden" />
27
- <Icon name="moon" class="hidden dark:block" />
27
+ <Sun class="dark:hidden" />
28
+ <Moon class="hidden dark:block" />
28
29
  <span class="sr-only">Toggle theme</span>
29
30
  </Button>
30
31
 
@@ -35,7 +35,7 @@ const {
35
35
  data-align-offset={alignOffset}
36
36
  data-avoid-collisions={avoidCollisions}
37
37
  data-collision-padding={collisionPadding}
38
- class="z-50"
38
+ class="isolate z-50"
39
39
  >
40
40
  <div
41
41
  data-slot="tooltip-content"
@@ -3,12 +3,15 @@ import type { HTMLAttributes } from "astro/types"
3
3
 
4
4
  import { cn } from "@/lib/utils"
5
5
 
6
- type Props = HTMLAttributes<"a">
6
+ type Size = "sm" | "default" | "lg"
7
+ type Props = HTMLAttributes<"a"> & {
8
+ size?: Size
9
+ }
7
10
 
8
- const { class: className, ...props } = Astro.props
11
+ const { class: className, size = "default", ...props } = Astro.props
9
12
  ---
10
13
 
11
- <a data-slot="typography-a" class={cn(className)} {...props}>
14
+ <a data-slot="typography-a" data-size={size} class={cn(className)} {...props}>
12
15
  <slot />
13
16
  </a>
14
17
 
@@ -16,7 +19,19 @@ const { class: className, ...props } = Astro.props
16
19
  @reference "@/styles/global.css";
17
20
 
18
21
  [data-slot="typography-a"],
19
- [data-slot="typography"] a:not(.no-typography):not(.no-typography *) {
22
+ [data-slot="typography"] > a:not([data-slot]) {
20
23
  @apply text-primary font-medium underline underline-offset-4;
21
24
  }
25
+
26
+ [data-slot="typography-a"][data-size="sm"] {
27
+ @apply text-sm;
28
+ }
29
+
30
+ [data-slot="typography-a"][data-size="default"] {
31
+ @apply text-base;
32
+ }
33
+
34
+ [data-slot="typography-a"][data-size="lg"] {
35
+ @apply text-lg;
36
+ }
22
37
  </style>
@@ -3,12 +3,20 @@ import type { HTMLAttributes } from "astro/types"
3
3
 
4
4
  import { cn } from "@/lib/utils"
5
5
 
6
- type Props = HTMLAttributes<"blockquote">
6
+ type Size = "sm" | "default" | "lg"
7
+ type Props = HTMLAttributes<"blockquote"> & {
8
+ size?: Size
9
+ }
7
10
 
8
- const { class: className, ...props } = Astro.props
11
+ const { class: className, size = "default", ...props } = Astro.props
9
12
  ---
10
13
 
11
- <blockquote data-slot="typography-blockquote" class={cn(className)} {...props}>
14
+ <blockquote
15
+ data-slot="typography-blockquote"
16
+ data-size={size}
17
+ class={cn(className)}
18
+ {...props}
19
+ >
12
20
  <slot />
13
21
  </blockquote>
14
22
 
@@ -16,8 +24,20 @@ const { class: className, ...props } = Astro.props
16
24
  @reference "@/styles/global.css";
17
25
 
18
26
  [data-slot="typography-blockquote"],
19
- [data-slot="typography"]
20
- blockquote:not(.no-typography):not(.no-typography *) {
21
- @apply border-l-2 pl-6 text-base italic;
27
+ [data-slot="typography"] > blockquote {
28
+ @apply mt-6 border-l-2 pl-6 italic;
29
+ }
30
+
31
+ [data-slot="typography-blockquote"][data-size="sm"] {
32
+ @apply text-sm;
33
+ }
34
+
35
+ [data-slot="typography-blockquote"][data-size="default"],
36
+ [data-slot="typography"] > blockquote {
37
+ @apply text-base;
38
+ }
39
+
40
+ [data-slot="typography-blockquote"][data-size="lg"] {
41
+ @apply text-lg;
22
42
  }
23
43
  </style>
@@ -3,8 +3,9 @@ import type { HTMLAttributes } from "astro/types"
3
3
 
4
4
  import { cn } from "@/lib/utils"
5
5
 
6
+ type Size = "sm" | "default" | "lg"
6
7
  type Props = HTMLAttributes<"h1"> & {
7
- size?: "sm" | "default" | "lg"
8
+ size?: Size
8
9
  }
9
10
 
10
11
  const { class: className, size = "default", ...props } = Astro.props
@@ -18,26 +19,23 @@ const { class: className, size = "default", ...props } = Astro.props
18
19
  @reference "@/styles/global.css";
19
20
 
20
21
  [data-slot="typography-h1"],
21
- [data-slot="typography"] h1:not(.no-typography):not(.no-typography *) {
22
+ [data-slot="typography"] > h1 {
22
23
  @apply scroll-m-20 font-semibold tracking-tight text-balance;
23
24
  }
24
25
 
25
26
  [data-slot="typography-h1"][data-size="sm"],
26
- [data-slot="typography"][data-size="sm"]
27
- h1:not(.no-typography):not(.no-typography *) {
27
+ [data-slot="typography"][data-size="sm"] > h1 {
28
28
  @apply text-3xl;
29
29
  }
30
30
 
31
31
  [data-slot="typography-h1"][data-size="default"],
32
- [data-slot="typography"] h1:not(.no-typography):not(.no-typography *),
33
- [data-slot="typography"][data-size="default"]
34
- h1:not(.no-typography):not(.no-typography *) {
32
+ [data-slot="typography"] > h1,
33
+ [data-slot="typography"][data-size="default"] > h1 {
35
34
  @apply text-4xl;
36
35
  }
37
36
 
38
37
  [data-slot="typography-h1"][data-size="lg"],
39
- [data-slot="typography"][data-size="lg"]
40
- h1:not(.no-typography):not(.no-typography *) {
38
+ [data-slot="typography"][data-size="lg"] > h1 {
41
39
  @apply text-5xl;
42
40
  }
43
41
  </style>
@@ -3,8 +3,9 @@ import type { HTMLAttributes } from "astro/types"
3
3
 
4
4
  import { cn } from "@/lib/utils"
5
5
 
6
+ type Size = "sm" | "default" | "lg"
6
7
  type Props = HTMLAttributes<"h2"> & {
7
- size?: "sm" | "default" | "lg"
8
+ size?: Size
8
9
  }
9
10
 
10
11
  const { class: className, size = "default", ...props } = Astro.props
@@ -18,26 +19,28 @@ const { class: className, size = "default", ...props } = Astro.props
18
19
  @reference "@/styles/global.css";
19
20
 
20
21
  [data-slot="typography-h2"],
21
- [data-slot="typography"] h2:not(.no-typography):not(.no-typography *) {
22
+ [data-slot="typography"] > h2 {
22
23
  @apply scroll-m-20 font-semibold tracking-tight;
23
24
  }
24
25
 
25
26
  [data-slot="typography-h2"][data-size="sm"],
26
- [data-slot="typography"][data-size="sm"]
27
- h2:not(.no-typography):not(.no-typography *) {
27
+ [data-slot="typography"][data-size="sm"] > h2 {
28
28
  @apply text-2xl;
29
29
  }
30
30
 
31
31
  [data-slot="typography-h2"][data-size="default"],
32
- [data-slot="typography"] h2:not(.no-typography):not(.no-typography *),
33
- [data-slot="typography"][data-size="default"]
34
- h2:not(.no-typography):not(.no-typography *) {
32
+ [data-slot="typography"] > h2,
33
+ [data-slot="typography"][data-size="default"] > h2 {
35
34
  @apply text-3xl;
36
35
  }
37
36
 
38
37
  [data-slot="typography-h2"][data-size="lg"],
39
- [data-slot="typography"][data-size="lg"]
40
- h2:not(.no-typography):not(.no-typography *) {
38
+ [data-slot="typography"][data-size="lg"] > h2 {
41
39
  @apply text-4xl;
42
40
  }
41
+
42
+ [data-slot="typography-h2"]:first-child,
43
+ [data-slot="typography"] > h2:first-child {
44
+ @apply mt-0;
45
+ }
43
46
  </style>
@@ -3,8 +3,9 @@ import type { HTMLAttributes } from "astro/types"
3
3
 
4
4
  import { cn } from "@/lib/utils"
5
5
 
6
+ type Size = "sm" | "default" | "lg"
6
7
  type Props = HTMLAttributes<"h3"> & {
7
- size?: "sm" | "default" | "lg"
8
+ size?: Size
8
9
  }
9
10
 
10
11
  const { class: className, size = "default", ...props } = Astro.props
@@ -18,26 +19,23 @@ const { class: className, size = "default", ...props } = Astro.props
18
19
  @reference "@/styles/global.css";
19
20
 
20
21
  [data-slot="typography-h3"],
21
- [data-slot="typography"] h3:not(.no-typography):not(.no-typography *) {
22
+ [data-slot="typography"] > h3 {
22
23
  @apply scroll-m-20 font-semibold tracking-tight;
23
24
  }
24
25
 
25
26
  [data-slot="typography-h3"][data-size="sm"],
26
- [data-slot="typography"][data-size="sm"]
27
- h3:not(.no-typography):not(.no-typography *) {
27
+ [data-slot="typography"][data-size="sm"] > h3 {
28
28
  @apply text-xl;
29
29
  }
30
30
 
31
31
  [data-slot="typography-h3"][data-size="default"],
32
- [data-slot="typography"] h3:not(.no-typography):not(.no-typography *),
33
- [data-slot="typography"][data-size="default"]
34
- h3:not(.no-typography):not(.no-typography *) {
32
+ [data-slot="typography"] > h3,
33
+ [data-slot="typography"][data-size="default"] > h3 {
35
34
  @apply text-2xl;
36
35
  }
37
36
 
38
37
  [data-slot="typography-h3"][data-size="lg"],
39
- [data-slot="typography"][data-size="lg"]
40
- h3:not(.no-typography):not(.no-typography *) {
38
+ [data-slot="typography"][data-size="lg"] > h3 {
41
39
  @apply text-3xl;
42
40
  }
43
41
  </style>
@@ -3,8 +3,9 @@ import type { HTMLAttributes } from "astro/types"
3
3
 
4
4
  import { cn } from "@/lib/utils"
5
5
 
6
+ type Size = "sm" | "default" | "lg"
6
7
  type Props = HTMLAttributes<"h4"> & {
7
- size?: "sm" | "default" | "lg"
8
+ size?: Size
8
9
  }
9
10
 
10
11
  const { class: className, size = "default", ...props } = Astro.props
@@ -18,26 +19,23 @@ const { class: className, size = "default", ...props } = Astro.props
18
19
  @reference "@/styles/global.css";
19
20
 
20
21
  [data-slot="typography-h4"],
21
- [data-slot="typography"] h4:not(.no-typography):not(.no-typography *) {
22
+ [data-slot="typography"] > h4 {
22
23
  @apply scroll-m-20 font-semibold tracking-tight;
23
24
  }
24
25
 
25
26
  [data-slot="typography-h4"][data-size="sm"],
26
- [data-slot="typography"][data-size="sm"]
27
- h4:not(.no-typography):not(.no-typography *) {
27
+ [data-slot="typography"][data-size="sm"] > h4 {
28
28
  @apply text-lg;
29
29
  }
30
30
 
31
31
  [data-slot="typography-h4"][data-size="default"],
32
- [data-slot="typography"] h4:not(.no-typography):not(.no-typography *),
33
- [data-slot="typography"][data-size="default"]
34
- h4:not(.no-typography):not(.no-typography *) {
32
+ [data-slot="typography"] > h4,
33
+ [data-slot="typography"][data-size="default"] > h4 {
35
34
  @apply text-xl;
36
35
  }
37
36
 
38
37
  [data-slot="typography-h4"][data-size="lg"],
39
- [data-slot="typography"][data-size="lg"]
40
- h4:not(.no-typography):not(.no-typography *) {
38
+ [data-slot="typography"][data-size="lg"] > h4 {
41
39
  @apply text-2xl;
42
40
  }
43
41
  </style>
@@ -3,12 +3,20 @@ import type { HTMLAttributes } from "astro/types"
3
3
 
4
4
  import { cn } from "@/lib/utils"
5
5
 
6
- type Props = HTMLAttributes<"code">
6
+ type Size = "sm" | "default" | "lg"
7
+ type Props = HTMLAttributes<"code"> & {
8
+ size?: Size
9
+ }
7
10
 
8
- const { class: className, ...props } = Astro.props
11
+ const { class: className, size = "default", ...props } = Astro.props
9
12
  ---
10
13
 
11
- <code data-slot="typography-inline-code" class={cn(className)} {...props}>
14
+ <code
15
+ data-slot="typography-inline-code"
16
+ data-size={size}
17
+ class={cn(className)}
18
+ {...props}
19
+ >
12
20
  <slot />
13
21
  </code>
14
22
 
@@ -16,16 +24,24 @@ const { class: className, ...props } = Astro.props
16
24
  @reference "@/styles/global.css";
17
25
 
18
26
  [data-slot="typography-inline-code"],
19
- [data-slot="typography"]
20
- :not(pre)
21
- > code:not(.no-typography):not(.no-typography *) {
22
- @apply bg-muted relative rounded px-[0.3rem] py-[0.2rem] font-mono text-sm;
27
+ [data-slot="typography"] :not(pre) > code {
28
+ @apply bg-muted relative rounded px-[0.3rem] py-[0.2rem] font-mono font-semibold;
23
29
  }
24
30
 
25
- [data-slot="typography"]
26
- table:not(.no-typography):not(.no-typography *)
27
- :not(pre)
28
- > code:not(.no-typography):not(.no-typography *) {
29
- @apply rounded-md text-sm leading-5;
31
+ [data-slot="typography-inline-code"][data-size="sm"] {
32
+ @apply text-xs;
33
+ }
34
+
35
+ [data-slot="typography-inline-code"][data-size="default"],
36
+ [data-slot="typography"] :not(pre) > code {
37
+ @apply text-sm;
38
+ }
39
+
40
+ [data-slot="typography-inline-code"][data-size="lg"] {
41
+ @apply text-base;
42
+ }
43
+
44
+ [data-slot="typography"] > table :not(pre) > code {
45
+ @apply rounded-md text-sm leading-5 font-normal;
30
46
  }
31
47
  </style>
@@ -3,12 +3,20 @@ import type { HTMLAttributes } from "astro/types"
3
3
 
4
4
  import { cn } from "@/lib/utils"
5
5
 
6
- type Props = HTMLAttributes<"p">
6
+ type Size = "sm" | "default" | "lg"
7
+ type Props = HTMLAttributes<"p"> & {
8
+ size?: Size
9
+ }
7
10
 
8
- const { class: className, ...props } = Astro.props
11
+ const { class: className, size = "default", ...props } = Astro.props
9
12
  ---
10
13
 
11
- <p data-slot="typography-lead" class={cn(className)} {...props}>
14
+ <p
15
+ data-slot="typography-lead"
16
+ data-size={size}
17
+ class={cn(className)}
18
+ {...props}
19
+ >
12
20
  <slot />
13
21
  </p>
14
22
 
@@ -16,6 +24,23 @@ const { class: className, ...props } = Astro.props
16
24
  @reference "@/styles/global.css";
17
25
 
18
26
  [data-slot="typography-lead"] {
19
- @apply text-muted-foreground text-lg;
27
+ @apply text-muted-foreground;
28
+ }
29
+
30
+ [data-slot="typography-lead"][data-size="sm"],
31
+ [data-slot="typography"][data-size="sm"] > [data-slot="typography-lead"] {
32
+ @apply text-base;
33
+ }
34
+
35
+ [data-slot="typography-lead"][data-size="default"],
36
+ [data-slot="typography"] > [data-slot="typography-lead"],
37
+ [data-slot="typography"][data-size="default"]
38
+ > [data-slot="typography-lead"] {
39
+ @apply text-lg;
40
+ }
41
+
42
+ [data-slot="typography-lead"][data-size="lg"],
43
+ [data-slot="typography"][data-size="lg"] > [data-slot="typography-lead"] {
44
+ @apply text-xl;
20
45
  }
21
46
  </style>
@@ -3,12 +3,20 @@ import type { HTMLAttributes } from "astro/types"
3
3
 
4
4
  import { cn } from "@/lib/utils"
5
5
 
6
- type Props = HTMLAttributes<"li">
6
+ type Size = "sm" | "default" | "lg"
7
+ type Props = HTMLAttributes<"li"> & {
8
+ size?: Size
9
+ }
7
10
 
8
- const { class: className, ...props } = Astro.props
11
+ const { class: className, size = "default", ...props } = Astro.props
9
12
  ---
10
13
 
11
- <li data-slot="typography-list-item" class={cn(className)} {...props}>
14
+ <li
15
+ data-slot="typography-list-item"
16
+ data-size={size}
17
+ class={cn(className)}
18
+ {...props}
19
+ >
12
20
  <slot />
13
21
  </li>
14
22
 
@@ -17,12 +25,20 @@ const { class: className, ...props } = Astro.props
17
25
 
18
26
  [data-slot="typography-list-item"],
19
27
  [data-slot="typography-list"] > li,
20
- [data-slot="typography"]
21
- ul:not(.no-typography):not(.no-typography *)
22
- > li:not(.no-typography):not(.no-typography *),
23
- [data-slot="typography"]
24
- ol:not(.no-typography):not(.no-typography *)
25
- > li:not(.no-typography):not(.no-typography *) {
28
+ [data-slot="typography"] > ul > li,
29
+ [data-slot="typography"] > ol > li {
26
30
  @apply mt-2;
27
31
  }
32
+
33
+ [data-slot="typography-list-item"][data-size="sm"] {
34
+ @apply text-sm;
35
+ }
36
+
37
+ [data-slot="typography-list-item"][data-size="default"] {
38
+ @apply text-base;
39
+ }
40
+
41
+ [data-slot="typography-list-item"][data-size="lg"] {
42
+ @apply text-lg;
43
+ }
28
44
  </style>
@@ -1,18 +1,22 @@
1
1
  ---
2
- import type { HTMLAttributes } from "astro/types"
2
+ import type { HTMLTag, Polymorphic } from "astro/types"
3
3
 
4
4
  import { cn } from "@/lib/utils"
5
5
 
6
- type Props = HTMLAttributes<"ul"> &
7
- HTMLAttributes<"ol"> & {
8
- as?: "ul" | "ol"
9
- }
6
+ type Size = "sm" | "default" | "lg"
7
+ type Props<Tag extends "ul" | "ol"> = Polymorphic<{ as: Tag; size?: Size }>
10
8
 
11
- const { as: Tag = "ul", class: className, ...props } = Astro.props
9
+ const {
10
+ as: Tag = "ul",
11
+ class: className,
12
+ size = "default",
13
+ ...props
14
+ } = Astro.props
12
15
  ---
13
16
 
14
17
  <Tag
15
18
  data-slot="typography-list"
19
+ data-size={size}
16
20
  data-ordered={Tag === "ol" ? "" : undefined}
17
21
  class={cn(className)}
18
22
  {...props}
@@ -24,18 +28,32 @@ const { as: Tag = "ul", class: className, ...props } = Astro.props
24
28
  @reference "@/styles/global.css";
25
29
 
26
30
  [data-slot="typography-list"],
27
- [data-slot="typography"] ul:not(.no-typography):not(.no-typography *),
28
- [data-slot="typography"] ol:not(.no-typography):not(.no-typography *) {
29
- @apply ml-6 text-base;
31
+ [data-slot="typography"] > ul,
32
+ [data-slot="typography"] > ol {
33
+ @apply my-6 ml-6;
34
+ }
35
+
36
+ [data-slot="typography-list"][data-size="sm"] {
37
+ @apply text-sm;
38
+ }
39
+
40
+ [data-slot="typography-list"][data-size="default"],
41
+ [data-slot="typography"] > ul,
42
+ [data-slot="typography"] > ol {
43
+ @apply text-base;
44
+ }
45
+
46
+ [data-slot="typography-list"][data-size="lg"] {
47
+ @apply text-lg;
30
48
  }
31
49
 
32
50
  [data-slot="typography-list"]:not([data-ordered]),
33
- [data-slot="typography"] ul:not(.no-typography):not(.no-typography *) {
51
+ [data-slot="typography"] > ul {
34
52
  @apply list-disc;
35
53
  }
36
54
 
37
55
  [data-slot="typography-list"][data-ordered],
38
- [data-slot="typography"] ol:not(.no-typography):not(.no-typography *) {
56
+ [data-slot="typography"] > ol {
39
57
  @apply list-decimal;
40
58
  }
41
59
 
@@ -3,12 +3,15 @@ import type { HTMLAttributes } from "astro/types"
3
3
 
4
4
  import { cn } from "@/lib/utils"
5
5
 
6
- type Props = HTMLAttributes<"p">
6
+ type Size = "sm" | "default" | "lg"
7
+ type Props = HTMLAttributes<"p"> & {
8
+ size?: Size
9
+ }
7
10
 
8
- const { class: className, ...props } = Astro.props
11
+ const { class: className, size = "default", ...props } = Astro.props
9
12
  ---
10
13
 
11
- <p data-slot="typography-p" class={cn(className)} {...props}>
14
+ <p data-slot="typography-p" data-size={size} class={cn(className)} {...props}>
12
15
  <slot />
13
16
  </p>
14
17
 
@@ -16,8 +19,25 @@ const { class: className, ...props } = Astro.props
16
19
  @reference "@/styles/global.css";
17
20
 
18
21
  [data-slot="typography-p"],
19
- [data-slot="typography"]
20
- p:not([data-slot]):not(.no-typography):not(.no-typography *) {
21
- @apply text-base leading-7;
22
+ [data-slot="typography"] > p {
23
+ @apply leading-7;
24
+ }
25
+
26
+ [data-slot="typography-p"][data-size="sm"] {
27
+ @apply text-sm;
28
+ }
29
+
30
+ [data-slot="typography-p"][data-size="default"],
31
+ [data-slot="typography"] > p {
32
+ @apply text-base;
33
+ }
34
+
35
+ [data-slot="typography-p"][data-size="lg"] {
36
+ @apply text-lg;
37
+ }
38
+
39
+ [data-slot="typography-p"]:not(:first-child),
40
+ [data-slot="typography"] > p:not(:first-child) {
41
+ @apply mt-6;
22
42
  }
23
43
  </style>