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
@@ -28,18 +28,18 @@ const {
28
28
  <DialogContent
29
29
  class:list={[
30
30
  "top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0",
31
- "**:data-[slot=command]:border-0",
32
- "**:data-[slot=command]:bg-transparent",
33
- "**:data-[slot=command-input-wrapper]:h-12",
31
+ "[&_[data-slot=command]]:border-0",
32
+ "[&_[data-slot=command]]:bg-transparent",
33
+ "[&_[data-slot=command-input-wrapper]]:h-12",
34
34
  "[&_[data-slot=command-input-wrapper]_svg]:size-5",
35
- "**:data-[slot=command-input]:h-12",
36
- "**:data-[slot=command-item]:px-2",
37
- "**:data-[slot=command-item]:py-3",
35
+ "[&_[data-slot=command-input]]:h-12",
36
+ "[&_[data-slot=command-item]]:px-2",
37
+ "[&_[data-slot=command-item]]:py-3",
38
38
  "[&_[data-slot=command-item]_svg]:size-5",
39
- "**:data-[slot=command-group-heading]:text-muted-foreground",
40
- "**:data-[slot=command-group-heading]:px-2",
41
- "**:data-[slot=command-group-heading]:font-medium",
42
- "**:data-[slot=command-group]:px-2",
39
+ "[&_[data-slot=command-group-heading]]:text-muted-foreground",
40
+ "[&_[data-slot=command-group-heading]]:px-2",
41
+ "[&_[data-slot=command-group-heading]]:font-medium",
42
+ "[&_[data-slot=command-group]]:px-2",
43
43
  "[&_[data-slot=command-group]:not([hidden])_~[data-slot=command-group]]:pt-0",
44
44
  contentClass,
45
45
  ]}
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  import type { HTMLAttributes } from "astro/types"
3
+ import SearchIcon from "@lucide/astro/icons/search"
3
4
 
4
5
  import { cn } from "@/lib/utils"
5
- import { Icon } from "@/components/ui/icon"
6
6
 
7
7
  type Props = HTMLAttributes<"input"> & {
8
8
  wrapperClass?: string
@@ -16,7 +16,7 @@ const { class: className, wrapperClass, ...props } = Astro.props
16
16
  class="border-input/30 bg-input/30 flex h-8! items-center rounded-lg! border shadow-none!"
17
17
  >
18
18
  <div class="flex items-center pl-2">
19
- <Icon name="search" class="size-4 shrink-0 opacity-50" />
19
+ <SearchIcon class="size-4 shrink-0 opacity-50" />
20
20
  </div>
21
21
  <input
22
22
  type="text"
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  import type { HTMLAttributes } from "astro/types"
3
+ import CheckIcon from "@lucide/astro/icons/check"
3
4
 
4
5
  import { cn } from "@/lib/utils"
5
- import { Icon } from "@/components/ui/icon"
6
6
 
7
7
  type Props = HTMLAttributes<"a"> & {
8
8
  disabled?: boolean
@@ -37,14 +37,13 @@ const keywordsValue = Array.isArray(keywords) ? keywords.join(", ") : keywords
37
37
  data-force-mount={forceMount ? "true" : undefined}
38
38
  href={href}
39
39
  class={cn(
40
- "group/command-item data-selected:bg-accent data-selected:text-accent-foreground data-selected:**:[svg]:text-accent-foreground href:cursor-pointer href:no-underline relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
40
+ "group/command-item data-selected:bg-muted data-selected:text-foreground data-selected:**:[svg]:text-foreground href:cursor-pointer href:no-underline relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
41
41
  className
42
42
  )}
43
43
  {...props}
44
44
  >
45
45
  <slot />
46
- <Icon
47
- name="check"
48
- class="ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100"
46
+ <CheckIcon
47
+ class="ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-selected/command-item:opacity-100"
49
48
  />
50
49
  </Tag>
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  import type { ComponentProps } from "astro/types"
3
+ import X from "@lucide/astro/icons/x"
3
4
 
4
5
  import { cn } from "@/lib/utils"
5
6
  import { Button } from "@/components/ui/button"
6
- import { Icon } from "@/components/ui/icon"
7
7
 
8
8
  type Props = ComponentProps<typeof Button>
9
9
 
@@ -12,6 +12,6 @@ const { class: className, ...props } = Astro.props
12
12
 
13
13
  <Button class={cn(className)} data-slot="dialog-close" {...props}>
14
14
  <slot>
15
- <Icon name="x" />
15
+ <X />
16
16
  </slot>
17
17
  </Button>
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  import type { HTMLAttributes } from "astro/types"
3
+ import XIcon from "@lucide/astro/icons/x"
3
4
 
4
5
  import { cn } from "@/lib/utils"
5
6
  import { Button } from "@/components/ui/button"
6
7
  import DialogOverlay from "@/components/ui/dialog/dialog-overlay.astro"
7
8
  import DialogPortal from "@/components/ui/dialog/dialog-portal.astro"
8
- import { Icon } from "@/components/ui/icon"
9
9
 
10
10
  type Props = HTMLAttributes<"div"> & {
11
11
  showCloseButton?: boolean
@@ -40,7 +40,7 @@ const {
40
40
  size="icon-sm"
41
41
  class="absolute top-4 right-4"
42
42
  >
43
- <Icon name="x" class="size-4" />
43
+ <XIcon />
44
44
  <span class="sr-only">Close</span>
45
45
  </Button>
46
46
  )
@@ -1,12 +1,35 @@
1
1
  ---
2
2
  import type { HTMLAttributes } from "astro/types"
3
3
 
4
- type Props = HTMLAttributes<"div">
4
+ type Props = HTMLAttributes<"div"> & {
5
+ defaultOpen?: boolean
6
+ closeOnClickOutside?: boolean
7
+ closeOnEscape?: boolean
8
+ lockScroll?: boolean
9
+ alertDialog?: boolean
10
+ }
5
11
 
6
- const { class: className, ...props } = Astro.props
12
+ const {
13
+ class: className,
14
+ defaultOpen,
15
+ closeOnClickOutside,
16
+ closeOnEscape,
17
+ lockScroll,
18
+ alertDialog,
19
+ ...props
20
+ } = Astro.props
7
21
  ---
8
22
 
9
- <div data-slot="dialog" class={className} {...props}>
23
+ <div
24
+ data-slot="dialog"
25
+ data-default-open={defaultOpen}
26
+ data-close-on-click-outside={closeOnClickOutside}
27
+ data-close-on-escape={closeOnEscape}
28
+ data-lock-scroll={lockScroll}
29
+ data-alert-dialog={alertDialog}
30
+ class={className}
31
+ {...props}
32
+ >
10
33
  <slot />
11
34
  </div>
12
35
 
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  import type { HTMLAttributes } from "astro/types"
3
+ import CheckIcon from "@lucide/astro/icons/check"
3
4
 
4
5
  import { cn } from "@/lib/utils"
5
- import { Icon } from "@/components/ui/icon"
6
6
 
7
7
  type Props = HTMLAttributes<"button"> & {
8
8
  value: string
@@ -34,7 +34,7 @@ const {
34
34
  disabled={disabled ? true : undefined}
35
35
  type={type}
36
36
  class={cn(
37
- "group/dropdown-menu-checkbox-item data-highlighted:bg-accent data-highlighted:text-accent-foreground data-highlighted:**:text-accent-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-none select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
37
+ "group/dropdown-menu-checkbox-item data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[highlighted]:**:text-accent-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
38
38
  className
39
39
  )}
40
40
  {...props}
@@ -43,9 +43,8 @@ const {
43
43
  data-slot="dropdown-menu-checkbox-item-indicator"
44
44
  class="pointer-events-none absolute right-2 flex items-center justify-center"
45
45
  >
46
- <Icon
47
- name="check"
48
- class="size-4 opacity-0 group-data-checked/dropdown-menu-checkbox-item:opacity-100"
46
+ <CheckIcon
47
+ class="opacity-0 group-data-[checked]/dropdown-menu-checkbox-item:opacity-100"
49
48
  />
50
49
  </span>
51
50
  <slot />
@@ -16,10 +16,10 @@ type Props = HTMLAttributes<"div"> & {
16
16
  const {
17
17
  class: className,
18
18
  hidden = true,
19
- side = "bottom",
20
- align = "start",
21
- sideOffset = 4,
22
- alignOffset = 0,
19
+ side,
20
+ align,
21
+ sideOffset,
22
+ alignOffset,
23
23
  avoidCollisions,
24
24
  collisionPadding,
25
25
  ...props
@@ -27,7 +27,7 @@ const {
27
27
  disabled={disabled ? true : undefined}
28
28
  type={type}
29
29
  class={cn(
30
- "group/dropdown-menu-item data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:data-highlighted:bg-destructive/10 data-[variant=destructive]:data-highlighted:text-destructive data-[variant=destructive]:*:[svg]:text-destructive relative flex w-full cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
30
+ "group/dropdown-menu-item data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground not-data-[variant=destructive]:data-[highlighted]:**:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:data-[highlighted]:bg-destructive/10 data-[variant=destructive]:data-[highlighted]:text-destructive dark:data-[variant=destructive]:data-[highlighted]:bg-destructive/20 data-[variant=destructive]:*:[svg]:text-destructive relative flex w-full cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
31
31
  className
32
32
  )}
33
33
  {...props}
@@ -14,7 +14,7 @@ const { class: className, inset, ...props } = Astro.props
14
14
  data-slot="dropdown-menu-label"
15
15
  data-inset={inset}
16
16
  class={cn(
17
- "text-muted-foreground px-2 py-1.5 text-xs font-medium data-inset:pl-8",
17
+ "text-muted-foreground px-2 py-1.5 text-xs font-medium data-[inset]:pl-8",
18
18
  className
19
19
  )}
20
20
  {...props}
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  import type { HTMLAttributes } from "astro/types"
3
+ import CheckIcon from "@lucide/astro/icons/check"
3
4
 
4
5
  import { cn } from "@/lib/utils"
5
- import { Icon } from "@/components/ui/icon"
6
6
 
7
7
  type Props = HTMLAttributes<"button"> & {
8
8
  value: string
@@ -34,7 +34,7 @@ const {
34
34
  disabled={disabled ? true : undefined}
35
35
  type={type}
36
36
  class={cn(
37
- "group/dropdown-menu-radio-item data-highlighted:bg-accent data-highlighted:text-accent-foreground data-highlighted:**:text-accent-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-none select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
37
+ "group/dropdown-menu-radio-item data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[highlighted]:**:text-accent-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
38
38
  className
39
39
  )}
40
40
  {...props}
@@ -43,9 +43,8 @@ const {
43
43
  data-slot="dropdown-menu-radio-item-indicator"
44
44
  class="pointer-events-none absolute right-2 flex items-center justify-center"
45
45
  >
46
- <Icon
47
- name="check"
48
- class="size-4 opacity-0 group-data-checked/dropdown-menu-radio-item:opacity-100"
46
+ <CheckIcon
47
+ class="opacity-0 group-data-[checked]/dropdown-menu-radio-item:opacity-100"
49
48
  />
50
49
  </span>
51
50
  <slot />
@@ -11,7 +11,7 @@ const { class: className, ...props } = Astro.props
11
11
  <span
12
12
  data-slot="dropdown-menu-shortcut"
13
13
  class={cn(
14
- "text-muted-foreground group-data-highlighted/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest",
14
+ "text-muted-foreground group-data-[highlighted]/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest",
15
15
  className
16
16
  )}
17
17
  {...props}
@@ -16,6 +16,7 @@ type Props = HTMLAttributes<"div"> & {
16
16
  alignOffset?: number
17
17
  avoidCollisions?: boolean
18
18
  collisionPadding?: number
19
+ lockScroll?: boolean
19
20
  }
20
21
 
21
22
  const {
@@ -33,6 +34,7 @@ const {
33
34
  alignOffset,
34
35
  avoidCollisions,
35
36
  collisionPadding,
37
+ lockScroll,
36
38
  ...props
37
39
  } = Astro.props
38
40
 
@@ -55,6 +57,7 @@ const defaultValuesAttr =
55
57
  data-align-offset={alignOffset}
56
58
  data-avoid-collisions={avoidCollisions}
57
59
  data-collision-padding={collisionPadding}
60
+ data-lock-scroll={lockScroll}
58
61
  class={className}
59
62
  {...props}
60
63
  >
@@ -12,7 +12,7 @@ const { class: className, ...props } = Astro.props
12
12
  <Label
13
13
  data-slot="field-label"
14
14
  class={cn(
15
- "has-data-checked:bg-primary/5 has-data-checked:border-primary/30 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10 group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border *:data-[slot=field]:p-3",
15
+ "has-data-checked:bg-primary/5 has-data-checked:border-primary/30 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10 group/field-label peer/field-label has-[>[data-slot=field]]:not-has-[:disabled,[data-disabled]]:hover:bg-muted/50 has-[>[data-slot=field]]:has-[:focus-visible]:border-ring has-[>[data-slot=field]]:has-[:focus-visible]:ring-ring/50 flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border has-[>[data-slot=field]]:has-[:focus-visible]:ring-3 *:data-[slot=field]:p-3",
16
16
  "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col",
17
17
  className
18
18
  )}
@@ -11,7 +11,7 @@ const { class: className, ...props } = Astro.props
11
11
  <div
12
12
  data-slot="field-label"
13
13
  class={cn(
14
- "flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50",
14
+ "flex w-fit items-center gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50",
15
15
  className
16
16
  )}
17
17
  {...props}
@@ -15,10 +15,10 @@ type Props = HTMLAttributes<"div"> & {
15
15
  const {
16
16
  class: className,
17
17
  hidden = true,
18
- side = "bottom",
19
- align = "center",
20
- sideOffset = 4,
21
- alignOffset = 4,
18
+ side,
19
+ align,
20
+ sideOffset,
21
+ alignOffset,
22
22
  avoidCollisions,
23
23
  collisionPadding,
24
24
  ...props
@@ -24,13 +24,13 @@ const {
24
24
  class: className,
25
25
  defaultOpen,
26
26
  open,
27
- delay = 300,
27
+ delay = 700,
28
28
  skipDelayDuration = 300,
29
29
  closeDelay = 300,
30
30
  side = "bottom",
31
31
  align = "center",
32
32
  sideOffset = 4,
33
- alignOffset = 4,
33
+ alignOffset = 0,
34
34
  avoidCollisions = true,
35
35
  collisionPadding = 8,
36
36
  portal = true,
@@ -3,7 +3,7 @@ import type { HTMLAttributes } from "astro/types"
3
3
 
4
4
  type Props = Omit<HTMLAttributes<"svg">, "name" | "href"> & {
5
5
  href?: HTMLAttributes<"a">["href"]
6
- name?: string | number | null
6
+ name?: string | number
7
7
  }
8
8
 
9
9
  const { name, href, ...props } = Astro.props
@@ -37,13 +37,10 @@ const hrefMap = {
37
37
  linkedin: "linkedin",
38
38
  } as const
39
39
 
40
- const icons = import.meta.glob(
41
- [
42
- "/node_modules/lucide-static/icons/*.svg",
43
- "/node_modules/simple-icons/icons/*.svg",
44
- ],
45
- { eager: true }
46
- ) as Record<string, { default: any }>
40
+ const icons = import.meta.glob([
41
+ "node_modules/lucide-static/icons/*.svg",
42
+ "node_modules/simple-icons/icons/*.svg",
43
+ ])
47
44
 
48
45
  const foundPath = () => {
49
46
  let foundPath: string | undefined = undefined
@@ -66,8 +63,8 @@ const foundPath = () => {
66
63
  return foundPath
67
64
  }
68
65
 
69
- const iconPath = foundPath()
70
- const module = iconPath ? icons[iconPath] : undefined
66
+ const foundModule = foundPath() && icons[foundPath() as keyof typeof icons]
67
+ const module = foundModule && ((await foundModule()) as any)
71
68
  const Comp = module?.default
72
69
  ---
73
70
 
@@ -41,7 +41,6 @@ const isLink = "href" in Astro.props
41
41
  data-size={size}
42
42
  type={isLink ? undefined : type}
43
43
  variant={variant}
44
- size={size}
45
44
  class={cn(variants({ size }), className)}
46
45
  {...props}
47
46
  >
@@ -23,7 +23,7 @@ const variants = cva(
23
23
 
24
24
  type Props = HTMLAttributes<"div"> & VariantProps<typeof variants>
25
25
 
26
- const { class: className, variant, ...props } = Astro.props
26
+ const { class: className, variant = "default", ...props } = Astro.props
27
27
  ---
28
28
 
29
29
  <div
@@ -14,7 +14,6 @@ const variants = cva(
14
14
  variants: {
15
15
  variant: {
16
16
  default: "border-transparent",
17
- inset: "border-transparent",
18
17
  outline: "border-border",
19
18
  muted: "bg-muted/50 border-transparent",
20
19
  },
@@ -24,23 +23,6 @@ const variants = cva(
24
23
  xs: "gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0",
25
24
  },
26
25
  },
27
- compoundVariants: [
28
- {
29
- variant: "inset",
30
- size: "default",
31
- class: "-mx-4",
32
- },
33
- {
34
- variant: "inset",
35
- size: "sm",
36
- class: "-mx-3",
37
- },
38
- {
39
- variant: "inset",
40
- size: "xs",
41
- class: "-mx-2.5",
42
- },
43
- ],
44
26
  defaultVariants: {
45
27
  variant: "default",
46
28
  size: "default",
@@ -10,7 +10,7 @@ const { class: className, ...props } = Astro.props
10
10
 
11
11
  <div
12
12
  data-slot="kbd-group"
13
- class={cn("inline-flex items-center gap-1 leading-none", className)}
13
+ class={cn("inline-flex items-center gap-1", className)}
14
14
  {...props}
15
15
  >
16
16
  <slot />
@@ -11,7 +11,7 @@ const { class: className, ...props } = Astro.props
11
11
  <kbd
12
12
  data-slot="kbd"
13
13
  class={cn(
14
- "bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm px-1 font-sans text-xs leading-none font-medium select-none [&_svg:not([class*='size-'])]:size-3",
14
+ "bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm px-1 font-sans text-xs font-medium select-none [&_svg:not([class*='size-'])]:size-3",
15
15
  className
16
16
  )}
17
17
  {...props}
@@ -21,6 +21,6 @@ const { class: className, ...props } = Astro.props
21
21
 
22
22
  <style is:global>
23
23
  body {
24
- font-family: var(--font-sans), ui-sans-serif, system-ui, sans-serif;
24
+ font-family: var(--font-sans);
25
25
  }
26
26
  </style>
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  import type { ImageMetadata } from "astro"
3
- import { getImage } from "astro:assets"
3
+ import { Font, getImage } from "astro:assets"
4
4
  import { AstroSeo } from "@lexingtonthemes/seo"
5
5
 
6
6
  type Props = {
@@ -73,6 +73,8 @@ const openGraphImage =
73
73
  <meta name="viewport" content="width=device-width, initial-scale=1" />
74
74
  <meta name="generator" content={Astro.generator} />
75
75
  <meta charset="utf-8" />
76
+ <Font cssVariable="--font-sans" />
77
+ <Font cssVariable="--font-mono" />
76
78
  <AstroSeo
77
79
  title={title}
78
80
  description={description}
@@ -95,6 +97,5 @@ const openGraphImage =
95
97
  }),
96
98
  }}
97
99
  />
98
- <slot name="head" />
99
100
  <slot />
100
101
  </head>
@@ -11,7 +11,7 @@ const { class: className, ...props } = Astro.props
11
11
  <main
12
12
  data-slot="layout-main"
13
13
  class={cn(
14
- "@container flex flex-col in-data-[slot=sidebar-inset]:rounded-[inherit]",
14
+ "@container flex flex-col in-[[data-slot=sidebar-inset]]:rounded-[inherit]",
15
15
  className
16
16
  )}
17
17
  {...props}
@@ -31,4 +31,8 @@ const { class: className, lang, ...props } = Astro.props
31
31
  .dark {
32
32
  color-scheme: dark;
33
33
  }
34
+
35
+ @view-transition {
36
+ navigation: auto;
37
+ }
34
38
  </style>