fulldev-ui 0.12.0 → 0.13.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 (130) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/package.json +24 -20
  3. package/public/r/accordion.json +1 -1
  4. package/public/r/alert-dialog.json +1 -1
  5. package/public/r/aspect-ratio.json +23 -0
  6. package/public/r/attachment.json +66 -0
  7. package/public/r/button-group.json +41 -0
  8. package/public/r/carousel.json +8 -8
  9. package/public/r/collapsible.json +1 -1
  10. package/public/r/combobox.json +4 -4
  11. package/public/r/command.json +2 -2
  12. package/public/r/components.json +8 -0
  13. package/public/r/dialog.json +1 -1
  14. package/public/r/doc-1.json +1 -1
  15. package/public/r/drawer.json +109 -0
  16. package/public/r/dropdown-menu.json +1 -1
  17. package/public/r/hover-card.json +2 -2
  18. package/public/r/init.json +1 -1
  19. package/public/r/navigation-menu.json +2 -2
  20. package/public/r/pagination.json +59 -0
  21. package/public/r/popover.json +1 -1
  22. package/public/r/radio-group.json +1 -1
  23. package/public/r/registry.json +414 -24
  24. package/public/r/resizable.json +36 -0
  25. package/public/r/reviews-3.json +1 -1
  26. package/public/r/select.json +1 -1
  27. package/public/r/sheet.json +1 -1
  28. package/public/r/sidebar.json +1 -1
  29. package/public/r/slider.json +2 -2
  30. package/public/r/switch.json +1 -1
  31. package/public/r/tabs.json +1 -1
  32. package/public/r/toast.json +80 -0
  33. package/public/r/toggle-group.json +34 -0
  34. package/public/r/toggle.json +1 -1
  35. package/public/r/tooltip.json +1 -1
  36. package/public/r/typography.json +21 -16
  37. package/registry/init/global.css +2 -0
  38. package/registry.json +375 -24
  39. package/src/components/blocks/doc-1.astro +76 -0
  40. package/src/components/blocks/reviews-3.astro +1 -1
  41. package/src/components/ui/aspect-ratio/aspect-ratio.astro +25 -0
  42. package/src/components/ui/aspect-ratio/index.ts +1 -0
  43. package/src/components/ui/attachment/attachment-action.astro +20 -0
  44. package/src/components/ui/attachment/attachment-actions.astro +20 -0
  45. package/src/components/ui/attachment/attachment-content.astro +20 -0
  46. package/src/components/ui/attachment/attachment-description.astro +20 -0
  47. package/src/components/ui/attachment/attachment-group.astro +20 -0
  48. package/src/components/ui/attachment/attachment-media.astro +36 -0
  49. package/src/components/ui/attachment/attachment-title.astro +20 -0
  50. package/src/components/ui/attachment/attachment-trigger.astro +24 -0
  51. package/src/components/ui/attachment/attachment.astro +52 -0
  52. package/src/components/ui/attachment/index.ts +9 -0
  53. package/src/components/ui/button-group/button-group-separator.astro +29 -0
  54. package/src/components/ui/button-group/button-group-text.astro +20 -0
  55. package/src/components/ui/button-group/button-group-variants.ts +20 -0
  56. package/src/components/ui/button-group/button-group.astro +30 -0
  57. package/src/components/ui/button-group/index.ts +7 -0
  58. package/src/components/ui/carousel/carousel-content.astro +11 -13
  59. package/src/components/ui/carousel/carousel-item.astro +2 -5
  60. package/src/components/ui/carousel/carousel-next.astro +0 -3
  61. package/src/components/ui/carousel/carousel-previous.astro +0 -3
  62. package/src/components/ui/carousel/carousel.astro +19 -219
  63. package/src/components/ui/carousel/index.ts +1 -5
  64. package/src/components/ui/combobox/combobox-input.astro +11 -4
  65. package/src/components/ui/combobox/combobox-trigger.astro +7 -7
  66. package/src/components/ui/drawer/drawer-close.astro +13 -0
  67. package/src/components/ui/drawer/drawer-content.astro +43 -0
  68. package/src/components/ui/drawer/drawer-description.astro +17 -0
  69. package/src/components/ui/drawer/drawer-footer.astro +17 -0
  70. package/src/components/ui/drawer/drawer-header.astro +17 -0
  71. package/src/components/ui/drawer/drawer-indent-background.astro +11 -0
  72. package/src/components/ui/drawer/drawer-indent.astro +11 -0
  73. package/src/components/ui/drawer/drawer-overlay.astro +21 -0
  74. package/src/components/ui/drawer/drawer-popup.astro +36 -0
  75. package/src/components/ui/drawer/drawer-portal.astro +27 -0
  76. package/src/components/ui/drawer/drawer-provider.astro +11 -0
  77. package/src/components/ui/drawer/drawer-swipe-handle.astro +20 -0
  78. package/src/components/ui/drawer/drawer-title.astro +17 -0
  79. package/src/components/ui/drawer/drawer-trigger.astro +21 -0
  80. package/src/components/ui/drawer/drawer-viewport.astro +21 -0
  81. package/src/components/ui/drawer/drawer-virtual-keyboard-provider.astro +11 -0
  82. package/src/components/ui/drawer/drawer.astro +60 -0
  83. package/src/components/ui/drawer/index.ts +28 -0
  84. package/src/components/ui/navigation-menu/navigation-menu.astro +2 -2
  85. package/src/components/ui/pagination/index.ts +7 -0
  86. package/src/components/ui/pagination/pagination-content.astro +17 -0
  87. package/src/components/ui/pagination/pagination-ellipsis.astro +22 -0
  88. package/src/components/ui/pagination/pagination-item.astro +11 -0
  89. package/src/components/ui/pagination/pagination-link.astro +41 -0
  90. package/src/components/ui/pagination/pagination-next.astro +27 -0
  91. package/src/components/ui/pagination/pagination-previous.astro +27 -0
  92. package/src/components/ui/pagination/pagination.astro +19 -0
  93. package/src/components/ui/resizable/index.ts +4 -0
  94. package/src/components/ui/resizable/resizable-handle.astro +32 -0
  95. package/src/components/ui/resizable/resizable-panel.astro +36 -0
  96. package/src/components/ui/resizable/resizable.astro +43 -0
  97. package/src/components/ui/slider/slider.astro +1 -1
  98. package/src/components/ui/toast/index.ts +26 -0
  99. package/src/components/ui/toast/toast-action.astro +25 -0
  100. package/src/components/ui/toast/toast-close.astro +27 -0
  101. package/src/components/ui/toast/toast-content.astro +20 -0
  102. package/src/components/ui/toast/toast-description.astro +18 -0
  103. package/src/components/ui/toast/toast-icon.astro +37 -0
  104. package/src/components/ui/toast/toast-item.astro +28 -0
  105. package/src/components/ui/toast/toast-template.astro +11 -0
  106. package/src/components/ui/toast/toast-title.astro +17 -0
  107. package/src/components/ui/toast/toast-viewport.astro +20 -0
  108. package/src/components/ui/toast/toast.astro +51 -0
  109. package/src/components/ui/toast/toaster.astro +37 -0
  110. package/src/components/ui/toggle-group/index.ts +2 -0
  111. package/src/components/ui/toggle-group/toggle-group-item.astro +44 -0
  112. package/src/components/ui/toggle-group/toggle-group.astro +74 -0
  113. package/src/components/ui/typography/typeset.css +441 -0
  114. package/src/components/ui/typography/typography-a.astro +13 -22
  115. package/src/components/ui/typography/typography-blockquote.astro +4 -23
  116. package/src/components/ui/typography/typography-h1.astro +13 -26
  117. package/src/components/ui/typography/typography-h2.astro +13 -31
  118. package/src/components/ui/typography/typography-h3.astro +9 -26
  119. package/src/components/ui/typography/typography-h4.astro +9 -26
  120. package/src/components/ui/typography/typography-inline-code.astro +8 -27
  121. package/src/components/ui/typography/typography-lead.astro +4 -26
  122. package/src/components/ui/typography/typography-list-item.astro +4 -24
  123. package/src/components/ui/typography/typography-list.astro +10 -40
  124. package/src/components/ui/typography/typography-p.astro +9 -28
  125. package/src/components/ui/typography/typography-table-cell.astro +9 -40
  126. package/src/components/ui/typography/typography-table-head.astro +9 -35
  127. package/src/components/ui/typography/typography-table-row.astro +4 -23
  128. package/src/components/ui/typography/typography-table.astro +8 -28
  129. package/src/components/ui/typography/typography.astro +10 -283
  130. package/src/styles/global.css +2 -0
@@ -0,0 +1,109 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "drawer",
4
+ "title": "Drawer",
5
+ "description": "A swipeable panel that opens from an edge of the screen.",
6
+ "dependencies": [
7
+ "@data-slot/drawer@^1.0.2"
8
+ ],
9
+ "registryDependencies": [
10
+ "@fulldev/button"
11
+ ],
12
+ "files": [
13
+ {
14
+ "path": "src/components/ui/drawer/drawer-close.astro",
15
+ "content": "---\nimport type { ComponentProps } from \"astro/types\"\n\nimport { Button } from \"@/components/ui/button\"\n\ntype Props = ComponentProps<typeof Button>\n\nconst { ...props } = Astro.props\n---\n\n<Button data-slot=\"drawer-close\" {...props}>\n <slot />\n</Button>\n",
16
+ "type": "registry:ui"
17
+ },
18
+ {
19
+ "path": "src/components/ui/drawer/drawer-content.astro",
20
+ "content": "---\nimport type { ComponentProps } from \"astro/types\"\n\nimport DrawerOverlay from \"./drawer-overlay.astro\"\nimport DrawerPopup from \"./drawer-popup.astro\"\nimport DrawerPortal from \"./drawer-portal.astro\"\nimport DrawerSwipeHandle from \"./drawer-swipe-handle.astro\"\nimport DrawerViewport from \"./drawer-viewport.astro\"\n\ntype Props = ComponentProps<typeof DrawerPopup> & {\n showOverlay?: boolean\n showSwipeHandle?: boolean\n container?: string\n keepMounted?: boolean\n overlayClass?: string\n viewportClass?: string\n}\n\nconst {\n showOverlay = true,\n showSwipeHandle = false,\n container,\n keepMounted,\n overlayClass,\n viewportClass,\n ...props\n} = Astro.props\n---\n\n<DrawerPortal container={container} keepMounted={keepMounted}>\n {showOverlay && <DrawerOverlay class={overlayClass} />}\n <DrawerViewport class={viewportClass}>\n <DrawerPopup {...props}>\n {showSwipeHandle && <DrawerSwipeHandle />}\n <div\n data-slot=\"drawer-content\"\n class=\"flex min-h-0 flex-1 flex-col overflow-y-auto overscroll-contain rounded-[inherit] transition-opacity duration-300 select-text group-data-nested-drawer-open/drawer-popup:opacity-0 group-data-nested-swiping/drawer-popup:opacity-100 group-data-swiping/drawer-popup:select-none\"\n >\n <slot />\n </div>\n </DrawerPopup>\n </DrawerViewport>\n</DrawerPortal>\n",
21
+ "type": "registry:ui"
22
+ },
23
+ {
24
+ "path": "src/components/ui/drawer/drawer-description.astro",
25
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"p\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<p\n data-slot=\"drawer-description\"\n class={cn(\"text-muted-foreground text-sm text-balance\", className)}\n {...props}\n>\n <slot />\n</p>\n",
26
+ "type": "registry:ui"
27
+ },
28
+ {
29
+ "path": "src/components/ui/drawer/drawer-footer.astro",
30
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<div\n data-slot=\"drawer-footer\"\n class={cn(\"mt-auto flex shrink-0 flex-col gap-2 p-4 pt-0\", className)}\n {...props}\n>\n <slot />\n</div>\n",
31
+ "type": "registry:ui"
32
+ },
33
+ {
34
+ "path": "src/components/ui/drawer/drawer-header.astro",
35
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<div\n data-slot=\"drawer-header\"\n class={cn(\"flex shrink-0 flex-col gap-1.5 p-4 pb-0\", className)}\n {...props}\n>\n <slot />\n</div>\n",
36
+ "type": "registry:ui"
37
+ },
38
+ {
39
+ "path": "src/components/ui/drawer/drawer-indent-background.astro",
40
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<div data-slot=\"drawer-indent-background\" class={className} {...props}>\n <slot />\n</div>\n",
41
+ "type": "registry:ui"
42
+ },
43
+ {
44
+ "path": "src/components/ui/drawer/drawer-indent.astro",
45
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<div data-slot=\"drawer-indent\" class={className} {...props}>\n <slot />\n</div>\n",
46
+ "type": "registry:ui"
47
+ },
48
+ {
49
+ "path": "src/components/ui/drawer/drawer-overlay.astro",
50
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, hidden = true, ...props } = Astro.props\n---\n\n<div\n data-slot=\"drawer-backdrop\"\n hidden={hidden}\n class={cn(\n \"fixed inset-0 z-50 min-h-dvh bg-black/10 opacity-[calc(1-var(--drawer-swipe-progress,0))] transition-opacity duration-300 ease-[cubic-bezier(0.32,0.72,0,1)] select-none data-ending-style:pointer-events-none data-ending-style:opacity-0 data-starting-style:opacity-0 data-swiping:duration-0 supports-backdrop-filter:backdrop-blur-xs\",\n className\n )}\n {...props}\n>\n <slot />\n</div>\n",
51
+ "type": "registry:ui"
52
+ },
53
+ {
54
+ "path": "src/components/ui/drawer/drawer-popup.astro",
55
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n initialFocus?: boolean | string\n finalFocus?: boolean | string\n}\n\nconst {\n class: className,\n initialFocus,\n finalFocus,\n hidden = true,\n ...props\n} = Astro.props\n---\n\n<div\n data-slot=\"drawer-popup\"\n data-initial-focus={initialFocus}\n data-final-focus={finalFocus}\n hidden={hidden}\n class={cn(\n \"group/drawer-popup bg-popover text-popover-foreground pointer-events-auto fixed z-50 flex min-h-0 transform-gpu flex-col text-sm shadow-lg transition-[transform,height,opacity,filter] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] will-change-transform outline-none select-none data-ending-style:duration-[calc(var(--drawer-swipe-strength,1)*400ms)] data-nested-drawer-open:overflow-hidden data-nested-drawer-open:brightness-95 data-swiping:duration-0\",\n \"data-[swipe-direction=down]:inset-x-0 data-[swipe-direction=down]:bottom-0 data-[swipe-direction=down]:max-h-[calc(100dvh-3rem)] data-[swipe-direction=down]:[transform:translate3d(0,calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-amount-y,0px)),0)] data-[swipe-direction=down]:rounded-t-xl data-[swipe-direction=down]:border-t data-[swipe-direction=down]:data-ending-style:[transform:translate3d(0,calc(100%+2px),0)] data-[swipe-direction=down]:data-starting-style:[transform:translate3d(0,calc(100%+2px),0)]\",\n \"data-[swipe-direction=up]:inset-x-0 data-[swipe-direction=up]:top-0 data-[swipe-direction=up]:max-h-[calc(100dvh-3rem)] data-[swipe-direction=up]:[transform:translate3d(0,calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-amount-y,0px)),0)] data-[swipe-direction=up]:rounded-b-xl data-[swipe-direction=up]:border-b data-[swipe-direction=up]:data-ending-style:[transform:translate3d(0,calc(-100%-2px),0)] data-[swipe-direction=up]:data-starting-style:[transform:translate3d(0,calc(-100%-2px),0)]\",\n \"data-[swipe-direction=left]:inset-y-0 data-[swipe-direction=left]:left-0 data-[swipe-direction=left]:h-full data-[swipe-direction=left]:w-3/4 data-[swipe-direction=left]:max-w-sm data-[swipe-direction=left]:[transform:translate3d(calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-amount-x,0px)),0,0)] data-[swipe-direction=left]:flex-row data-[swipe-direction=left]:rounded-r-xl data-[swipe-direction=left]:border-r data-[swipe-direction=left]:data-ending-style:[transform:translate3d(calc(-100%-2px),0,0)] data-[swipe-direction=left]:data-starting-style:[transform:translate3d(calc(-100%-2px),0,0)]\",\n \"data-[swipe-direction=right]:inset-y-0 data-[swipe-direction=right]:right-0 data-[swipe-direction=right]:h-full data-[swipe-direction=right]:w-3/4 data-[swipe-direction=right]:max-w-sm data-[swipe-direction=right]:[transform:translate3d(calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-amount-x,0px)),0,0)] data-[swipe-direction=right]:flex-row data-[swipe-direction=right]:rounded-l-xl data-[swipe-direction=right]:border-l data-[swipe-direction=right]:data-ending-style:[transform:translate3d(calc(100%+2px),0,0)] data-[swipe-direction=right]:data-starting-style:[transform:translate3d(calc(100%+2px),0,0)]\",\n className\n )}\n {...props}\n>\n <slot />\n</div>\n",
56
+ "type": "registry:ui"
57
+ },
58
+ {
59
+ "path": "src/components/ui/drawer/drawer-portal.astro",
60
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n container?: string\n keepMounted?: boolean\n}\n\nconst {\n class: className,\n container,\n keepMounted,\n hidden = true,\n ...props\n} = Astro.props\n---\n\n<div\n data-slot=\"drawer-portal\"\n data-container={container}\n data-keep-mounted={keepMounted}\n class={className}\n hidden={hidden}\n {...props}\n>\n <slot />\n</div>\n",
61
+ "type": "registry:ui"
62
+ },
63
+ {
64
+ "path": "src/components/ui/drawer/drawer-provider.astro",
65
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<div data-slot=\"drawer-provider\" class={className} {...props}>\n <slot />\n</div>\n",
66
+ "type": "registry:ui"
67
+ },
68
+ {
69
+ "path": "src/components/ui/drawer/drawer-swipe-handle.astro",
70
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<div\n data-slot=\"drawer-handle\"\n aria-hidden=\"true\"\n class={cn(\n \"after:bg-muted relative z-10 flex shrink-0 cursor-grab transition-opacity duration-200 group-data-nested-drawer-open/drawer-popup:opacity-0 group-data-nested-swiping/drawer-popup:opacity-100 group-data-[swipe-direction=down]/drawer-popup:h-3 group-data-[swipe-direction=down]/drawer-popup:w-full group-data-[swipe-direction=down]/drawer-popup:items-end group-data-[swipe-direction=down]/drawer-popup:justify-center group-data-[swipe-direction=left]/drawer-popup:order-last group-data-[swipe-direction=left]/drawer-popup:h-full group-data-[swipe-direction=left]/drawer-popup:w-3 group-data-[swipe-direction=left]/drawer-popup:items-center group-data-[swipe-direction=left]/drawer-popup:justify-start group-data-[swipe-direction=right]/drawer-popup:h-full group-data-[swipe-direction=right]/drawer-popup:w-3 group-data-[swipe-direction=right]/drawer-popup:items-center group-data-[swipe-direction=right]/drawer-popup:justify-end group-data-[swipe-direction=up]/drawer-popup:order-last group-data-[swipe-direction=up]/drawer-popup:h-3 group-data-[swipe-direction=up]/drawer-popup:w-full group-data-[swipe-direction=up]/drawer-popup:items-start group-data-[swipe-direction=up]/drawer-popup:justify-center after:block after:shrink-0 after:rounded-full group-data-[swipe-direction=down]/drawer-popup:after:h-1.5 group-data-[swipe-direction=down]/drawer-popup:after:w-24 group-data-[swipe-direction=left]/drawer-popup:after:h-24 group-data-[swipe-direction=left]/drawer-popup:after:w-1.5 group-data-[swipe-direction=right]/drawer-popup:after:h-24 group-data-[swipe-direction=right]/drawer-popup:after:w-1.5 group-data-[swipe-direction=up]/drawer-popup:after:h-1.5 group-data-[swipe-direction=up]/drawer-popup:after:w-24 active:cursor-grabbing\",\n className\n )}\n {...props}\n>\n</div>\n",
71
+ "type": "registry:ui"
72
+ },
73
+ {
74
+ "path": "src/components/ui/drawer/drawer-title.astro",
75
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"h2\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<h2\n data-slot=\"drawer-title\"\n class={cn(\"text-foreground font-medium\", className)}\n {...props}\n>\n <slot />\n</h2>\n",
76
+ "type": "registry:ui"
77
+ },
78
+ {
79
+ "path": "src/components/ui/drawer/drawer-trigger.astro",
80
+ "content": "---\nimport type { ComponentProps } from \"astro/types\"\n\nimport { Button } from \"@/components/ui/button\"\n\ntype Props = ComponentProps<typeof Button> & {\n drawerTarget?: string\n payload?: string\n}\n\nconst { drawerTarget, payload, ...props } = Astro.props\n---\n\n<Button\n data-slot=\"drawer-trigger\"\n data-drawer-target={drawerTarget}\n data-payload={payload}\n {...props}\n>\n <slot />\n</Button>\n",
81
+ "type": "registry:ui"
82
+ },
83
+ {
84
+ "path": "src/components/ui/drawer/drawer-viewport.astro",
85
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, hidden = true, ...props } = Astro.props\n---\n\n<div\n data-slot=\"drawer-viewport\"\n hidden={hidden}\n class={cn(\n \"pointer-events-none fixed inset-0 z-50 min-h-dvh select-none\",\n className\n )}\n {...props}\n>\n <slot />\n</div>\n",
86
+ "type": "registry:ui"
87
+ },
88
+ {
89
+ "path": "src/components/ui/drawer/drawer-virtual-keyboard-provider.astro",
90
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<div data-slot=\"drawer-virtual-keyboard-provider\" class={className} {...props}>\n <slot />\n</div>\n",
91
+ "type": "registry:ui"
92
+ },
93
+ {
94
+ "path": "src/components/ui/drawer/drawer.astro",
95
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport type { DrawerSnapPoint, DrawerSwipeDirection } from \"@data-slot/drawer\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n defaultOpen?: boolean\n modal?: boolean | \"trap-focus\"\n disablePointerDismissal?: boolean\n closeOnEscape?: boolean\n swipeDirection?: DrawerSwipeDirection\n snapPoint?: DrawerSnapPoint | null\n defaultSnapPoint?: DrawerSnapPoint | null\n triggerId?: string | null\n defaultTriggerId?: string | null\n}\n\nconst {\n class: className,\n defaultOpen,\n modal,\n disablePointerDismissal,\n closeOnEscape,\n swipeDirection,\n snapPoint,\n defaultSnapPoint,\n triggerId,\n defaultTriggerId,\n ...props\n} = Astro.props\n---\n\n<div\n data-slot=\"drawer\"\n data-default-open={defaultOpen}\n data-modal={modal}\n data-disable-pointer-dismissal={disablePointerDismissal}\n data-close-on-escape={closeOnEscape}\n data-swipe-direction={swipeDirection}\n data-snap-point={snapPoint}\n data-default-snap-point={defaultSnapPoint}\n data-trigger-id={triggerId}\n data-default-trigger-id={defaultTriggerId}\n class={className}\n {...props}\n>\n <slot />\n</div>\n\n<script>\n import { create } from \"@data-slot/drawer\"\n\n const controllers: ReturnType<typeof create> = []\n const initialize = () => controllers.push(...create())\n initialize()\n document.addEventListener(\"astro:page-load\", initialize)\n document.addEventListener(\"astro:before-swap\", () => {\n for (const controller of controllers) controller.destroy()\n controllers.length = 0\n })\n</script>\n",
96
+ "type": "registry:ui"
97
+ },
98
+ {
99
+ "path": "src/components/ui/drawer/index.ts",
100
+ "content": "export { default as Drawer } from \"./drawer.astro\"\nexport { default as DrawerTrigger } from \"./drawer-trigger.astro\"\nexport { default as DrawerClose } from \"./drawer-close.astro\"\nexport { default as DrawerPortal } from \"./drawer-portal.astro\"\nexport { default as DrawerOverlay } from \"./drawer-overlay.astro\"\nexport { default as DrawerBackdrop } from \"./drawer-overlay.astro\"\nexport { default as DrawerViewport } from \"./drawer-viewport.astro\"\nexport { default as DrawerPopup } from \"./drawer-popup.astro\"\nexport { default as DrawerContent } from \"./drawer-content.astro\"\nexport { default as DrawerSwipeHandle } from \"./drawer-swipe-handle.astro\"\nexport { default as DrawerHeader } from \"./drawer-header.astro\"\nexport { default as DrawerFooter } from \"./drawer-footer.astro\"\nexport { default as DrawerTitle } from \"./drawer-title.astro\"\nexport { default as DrawerDescription } from \"./drawer-description.astro\"\nexport { default as DrawerProvider } from \"./drawer-provider.astro\"\nexport { default as DrawerIndent } from \"./drawer-indent.astro\"\nexport { default as DrawerIndentBackground } from \"./drawer-indent-background.astro\"\nexport { default as DrawerVirtualKeyboardProvider } from \"./drawer-virtual-keyboard-provider.astro\"\n\nexport type {\n DrawerChangeDetails,\n DrawerChangeReason,\n DrawerController,\n DrawerOptions,\n DrawerSnapChangeDetails,\n DrawerSnapPoint,\n DrawerSwipeDirection,\n} from \"@data-slot/drawer\"\n",
101
+ "type": "registry:ui"
102
+ }
103
+ ],
104
+ "docs": "https://ui.full.dev/components/drawer/",
105
+ "categories": [
106
+ "ui"
107
+ ],
108
+ "type": "registry:ui"
109
+ }
@@ -4,7 +4,7 @@
4
4
  "title": "Dropdown Menu",
5
5
  "description": "Displays a menu to the user, such as a set of actions or functions, triggered by a button.",
6
6
  "dependencies": [
7
- "@data-slot/dropdown-menu@^1.0.1",
7
+ "@data-slot/dropdown-menu@^1.0.2",
8
8
  "@lucide/astro"
9
9
  ],
10
10
  "files": [
@@ -4,8 +4,8 @@
4
4
  "title": "Hover Card",
5
5
  "description": "For sighted users to preview content available behind a link.",
6
6
  "dependencies": [
7
- "@data-slot/hover-card@^1.0.1",
8
- "@data-slot/core@^1.0.1"
7
+ "@data-slot/hover-card@^1.0.2",
8
+ "@data-slot/core@^1.0.2"
9
9
  ],
10
10
  "files": [
11
11
  {
@@ -18,7 +18,7 @@
18
18
  },
19
19
  {
20
20
  "path": "registry/init/global.css",
21
- "content": "@import \"tailwindcss\";\n@import \"tw-animate-css\";\n@import \"shadcn/tailwind.css\";\n\n@custom-variant dark (&:where(.dark, .dark *));\n\n:root {\n --background: oklch(1 0 0);\n --foreground: oklch(0.145 0 0);\n --card: oklch(1 0 0);\n --card-foreground: oklch(0.145 0 0);\n --popover: oklch(1 0 0);\n --popover-foreground: oklch(0.145 0 0);\n --primary: oklch(0.5488 0.2498 261.783);\n --primary-foreground: oklch(1 0 0);\n --secondary: oklch(0.97 0 0);\n --secondary-foreground: oklch(0.205 0 0);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: oklch(0.97 0 0);\n --accent-foreground: oklch(0.205 0 0);\n --destructive: oklch(0.577 0.245 27.325);\n --destructive-foreground: oklch(1 0 0);\n --border: oklch(0.922 0 0);\n --input: oklch(0.922 0 0);\n --ring: oklch(0.708 0 0);\n --chart-1: oklch(0.81 0.1 252);\n --chart-2: oklch(0.62 0.19 260);\n --chart-3: oklch(0.55 0.22 263);\n --chart-4: oklch(0.49 0.22 264);\n --chart-5: oklch(0.42 0.18 266);\n --sidebar: oklch(0.985 0 0);\n --sidebar-foreground: oklch(0.145 0 0);\n --sidebar-primary: oklch(0.5488 0.2498 261.783);\n --sidebar-primary-foreground: oklch(1 0 0);\n --sidebar-accent: oklch(0.97 0 0);\n --sidebar-accent-foreground: oklch(0.205 0 0);\n --sidebar-border: oklch(0.922 0 0);\n --sidebar-ring: oklch(0.708 0 0);\n --radius: 0.625rem;\n --shadow-x: 0;\n --shadow-y: 1px;\n --shadow-blur: 3px;\n --shadow-spread: 0px;\n --shadow-opacity: 0.1;\n --shadow-color: oklch(0 0 0);\n --shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);\n --shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);\n --shadow-sm:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);\n --shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);\n --shadow-md:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 2px 4px -1px hsl(0 0% 0% / 0.1);\n --shadow-lg:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 4px 6px -1px hsl(0 0% 0% / 0.1);\n --shadow-xl:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 8px 10px -1px hsl(0 0% 0% / 0.1);\n --shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);\n --tracking-normal: 0em;\n --spacing: 0.25rem;\n}\n\n.dark {\n --background: oklch(0.145 0 0);\n --foreground: oklch(0.985 0 0);\n --card: oklch(0.205 0 0);\n --card-foreground: oklch(0.985 0 0);\n --popover: oklch(0.269 0 0);\n --popover-foreground: oklch(0.985 0 0);\n --primary: oklch(0.686 0.2105 41.139);\n --primary-foreground: oklch(1 0 0);\n --secondary: oklch(0.269 0 0);\n --secondary-foreground: oklch(0.985 0 0);\n --muted: oklch(0.269 0 0);\n --muted-foreground: oklch(0.708 0 0);\n --accent: oklch(0.371 0 0);\n --accent-foreground: oklch(0.985 0 0);\n --destructive: oklch(0.704 0.191 22.216);\n --destructive-foreground: oklch(0.985 0 0);\n --border: oklch(0.275 0 0);\n --input: oklch(0.325 0 0);\n --ring: oklch(0.556 0 0);\n --chart-1: oklch(0.81 0.1 252);\n --chart-2: oklch(0.62 0.19 260);\n --chart-3: oklch(0.55 0.22 263);\n --chart-4: oklch(0.49 0.22 264);\n --chart-5: oklch(0.42 0.18 266);\n --sidebar: oklch(0.205 0 0);\n --sidebar-foreground: oklch(0.985 0 0);\n --sidebar-primary: oklch(0.686 0.2105 41.139);\n --sidebar-primary-foreground: oklch(1 0 0);\n --sidebar-accent: oklch(0.269 0 0);\n --sidebar-accent-foreground: oklch(0.985 0 0);\n --sidebar-border: oklch(0.275 0 0);\n --sidebar-ring: oklch(0.439 0 0);\n --radius: 0.625rem;\n --shadow-x: 0;\n --shadow-y: 1px;\n --shadow-blur: 3px;\n --shadow-spread: 0px;\n --shadow-opacity: 0.1;\n --shadow-color: oklch(0 0 0);\n --shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);\n --shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);\n --shadow-sm:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);\n --shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);\n --shadow-md:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 2px 4px -1px hsl(0 0% 0% / 0.1);\n --shadow-lg:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 4px 6px -1px hsl(0 0% 0% / 0.1);\n --shadow-xl:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 8px 10px -1px hsl(0 0% 0% / 0.1);\n --shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);\n}\n\n@theme inline {\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-destructive-foreground: var(--destructive-foreground);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-ring: var(--ring);\n --color-chart-1: var(--chart-1);\n --color-chart-2: var(--chart-2);\n --color-chart-3: var(--chart-3);\n --color-chart-4: var(--chart-4);\n --color-chart-5: var(--chart-5);\n --color-sidebar: var(--sidebar);\n --color-sidebar-foreground: var(--sidebar-foreground);\n --color-sidebar-primary: var(--sidebar-primary);\n --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n --color-sidebar-accent: var(--sidebar-accent);\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n --color-sidebar-border: var(--sidebar-border);\n --color-sidebar-ring: var(--sidebar-ring);\n\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n\n --shadow-2xs: var(--shadow-2xs);\n --shadow-xs: var(--shadow-xs);\n --shadow-sm: var(--shadow-sm);\n --shadow: var(--shadow);\n --shadow-md: var(--shadow-md);\n --shadow-lg: var(--shadow-lg);\n --shadow-xl: var(--shadow-xl);\n --shadow-2xl: var(--shadow-2xl);\n}\n\n@layer base {\n * {\n @apply border-border outline-ring/50;\n }\n html {\n @apply font-sans;\n }\n body {\n @apply bg-background text-foreground font-sans;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n *,\n ::before,\n ::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n",
21
+ "content": "@import \"tailwindcss\";\n@import \"tw-animate-css\";\n@import \"shadcn/tailwind.css\";\n\n@custom-variant dark (&:where(.dark, .dark *));\n\n:root {\n --background: oklch(1 0 0);\n --foreground: oklch(0.145 0 0);\n --card: oklch(1 0 0);\n --card-foreground: oklch(0.145 0 0);\n --popover: oklch(1 0 0);\n --popover-foreground: oklch(0.145 0 0);\n --primary: oklch(0.5488 0.2498 261.783);\n --primary-foreground: oklch(1 0 0);\n --secondary: oklch(0.97 0 0);\n --secondary-foreground: oklch(0.205 0 0);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: oklch(0.97 0 0);\n --accent-foreground: oklch(0.205 0 0);\n --destructive: oklch(0.577 0.245 27.325);\n --destructive-foreground: oklch(1 0 0);\n --border: oklch(0.922 0 0);\n --input: oklch(0.922 0 0);\n --ring: oklch(0.708 0 0);\n --chart-1: oklch(0.81 0.1 252);\n --chart-2: oklch(0.62 0.19 260);\n --chart-3: oklch(0.55 0.22 263);\n --chart-4: oklch(0.49 0.22 264);\n --chart-5: oklch(0.42 0.18 266);\n --sidebar: oklch(0.985 0 0);\n --sidebar-foreground: oklch(0.145 0 0);\n --sidebar-primary: oklch(0.5488 0.2498 261.783);\n --sidebar-primary-foreground: oklch(1 0 0);\n --sidebar-accent: oklch(0.97 0 0);\n --sidebar-accent-foreground: oklch(0.205 0 0);\n --sidebar-border: oklch(0.922 0 0);\n --sidebar-ring: oklch(0.708 0 0);\n --radius: 0.625rem;\n --shadow-x: 0;\n --shadow-y: 1px;\n --shadow-blur: 3px;\n --shadow-spread: 0px;\n --shadow-opacity: 0.1;\n --shadow-color: oklch(0 0 0);\n --shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);\n --shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);\n --shadow-sm:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);\n --shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);\n --shadow-md:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 2px 4px -1px hsl(0 0% 0% / 0.1);\n --shadow-lg:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 4px 6px -1px hsl(0 0% 0% / 0.1);\n --shadow-xl:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 8px 10px -1px hsl(0 0% 0% / 0.1);\n --shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);\n --tracking-normal: 0em;\n --spacing: 0.25rem;\n}\n\n.dark {\n --background: oklch(0.145 0 0);\n --foreground: oklch(0.985 0 0);\n --card: oklch(0.205 0 0);\n --card-foreground: oklch(0.985 0 0);\n --popover: oklch(0.269 0 0);\n --popover-foreground: oklch(0.985 0 0);\n --primary: oklch(0.686 0.2105 41.139);\n --primary-foreground: oklch(1 0 0);\n --secondary: oklch(0.269 0 0);\n --secondary-foreground: oklch(0.985 0 0);\n --muted: oklch(0.269 0 0);\n --muted-foreground: oklch(0.708 0 0);\n --accent: oklch(0.371 0 0);\n --accent-foreground: oklch(0.985 0 0);\n --destructive: oklch(0.704 0.191 22.216);\n --destructive-foreground: oklch(0.985 0 0);\n --border: oklch(0.275 0 0);\n --input: oklch(0.325 0 0);\n --ring: oklch(0.556 0 0);\n --chart-1: oklch(0.81 0.1 252);\n --chart-2: oklch(0.62 0.19 260);\n --chart-3: oklch(0.55 0.22 263);\n --chart-4: oklch(0.49 0.22 264);\n --chart-5: oklch(0.42 0.18 266);\n --sidebar: oklch(0.205 0 0);\n --sidebar-foreground: oklch(0.985 0 0);\n --sidebar-primary: oklch(0.686 0.2105 41.139);\n --sidebar-primary-foreground: oklch(1 0 0);\n --sidebar-accent: oklch(0.269 0 0);\n --sidebar-accent-foreground: oklch(0.985 0 0);\n --sidebar-border: oklch(0.275 0 0);\n --sidebar-ring: oklch(0.439 0 0);\n --radius: 0.625rem;\n --shadow-x: 0;\n --shadow-y: 1px;\n --shadow-blur: 3px;\n --shadow-spread: 0px;\n --shadow-opacity: 0.1;\n --shadow-color: oklch(0 0 0);\n --shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);\n --shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);\n --shadow-sm:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);\n --shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);\n --shadow-md:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 2px 4px -1px hsl(0 0% 0% / 0.1);\n --shadow-lg:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 4px 6px -1px hsl(0 0% 0% / 0.1);\n --shadow-xl:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 8px 10px -1px hsl(0 0% 0% / 0.1);\n --shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);\n}\n\n@theme inline {\n --font-heading: var(--font-sans);\n\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-destructive-foreground: var(--destructive-foreground);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-ring: var(--ring);\n --color-chart-1: var(--chart-1);\n --color-chart-2: var(--chart-2);\n --color-chart-3: var(--chart-3);\n --color-chart-4: var(--chart-4);\n --color-chart-5: var(--chart-5);\n --color-sidebar: var(--sidebar);\n --color-sidebar-foreground: var(--sidebar-foreground);\n --color-sidebar-primary: var(--sidebar-primary);\n --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n --color-sidebar-accent: var(--sidebar-accent);\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n --color-sidebar-border: var(--sidebar-border);\n --color-sidebar-ring: var(--sidebar-ring);\n\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n\n --shadow-2xs: var(--shadow-2xs);\n --shadow-xs: var(--shadow-xs);\n --shadow-sm: var(--shadow-sm);\n --shadow: var(--shadow);\n --shadow-md: var(--shadow-md);\n --shadow-lg: var(--shadow-lg);\n --shadow-xl: var(--shadow-xl);\n --shadow-2xl: var(--shadow-2xl);\n}\n\n@layer base {\n * {\n @apply border-border outline-ring/50;\n }\n html {\n @apply font-sans;\n }\n body {\n @apply bg-background text-foreground font-sans;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n *,\n ::before,\n ::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n",
22
22
  "type": "registry:style",
23
23
  "target": "src/styles/global.css"
24
24
  }
@@ -4,13 +4,13 @@
4
4
  "title": "Navigation Menu",
5
5
  "description": "A collection of links for navigating websites.",
6
6
  "dependencies": [
7
- "@data-slot/navigation-menu@^1.0.1",
7
+ "@data-slot/navigation-menu@^1.0.2",
8
8
  "@lucide/astro"
9
9
  ],
10
10
  "files": [
11
11
  {
12
12
  "path": "src/components/ui/navigation-menu/navigation-menu.astro",
13
- "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport NavigationMenuPositioner from \"./navigation-menu-positioner.astro\"\n\ntype Props = HTMLAttributes<\"nav\"> & {\n mountStrategy?: \"lazy\" | \"eager\"\n delayOpen?: number\n delayClose?: number\n openOnFocus?: boolean\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n align?: \"start\" | \"center\" | \"end\"\n sideOffset?: number\n alignOffset?: number\n positionMethod?: \"absolute\" | \"fixed\"\n safeTriangle?: boolean\n debugSafeTriangle?: boolean\n}\n\nconst {\n mountStrategy,\n class: className = \"\",\n delayOpen = 0,\n delayClose = 0,\n openOnFocus,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 0,\n alignOffset = 0,\n positionMethod = \"absolute\",\n safeTriangle,\n debugSafeTriangle,\n ...props\n} = Astro.props\n---\n\n<nav\n {...props}\n data-slot=\"navigation-menu\"\n data-mount-strategy={mountStrategy}\n data-delay-open={delayOpen}\n data-delay-close={delayClose}\n data-open-on-focus={openOnFocus}\n data-side={side}\n data-align={align}\n data-side-offset={sideOffset}\n data-align-offset={alignOffset}\n data-position-method={positionMethod}\n data-safe-triangle={safeTriangle}\n data-debug-safe-triangle={debugSafeTriangle}\n class={cn(\n \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n className\n )}\n>\n <slot />\n <NavigationMenuPositioner align={align} />\n</nav>\n\n<script>\n import { create } from \"@data-slot/navigation-menu\"\n\n const controllers: ReturnType<typeof create> = []\n const initialize = () => controllers.push(...create())\n initialize()\n document.addEventListener(\"astro:page-load\", initialize)\n document.addEventListener(\"astro:before-swap\", () => {\n for (const controller of controllers) controller.destroy()\n controllers.length = 0\n })\n</script>\n",
13
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport NavigationMenuPositioner from \"./navigation-menu-positioner.astro\"\n\ntype Props = HTMLAttributes<\"nav\"> & {\n mountStrategy?: \"lazy\" | \"eager\"\n delayOpen?: number\n delayClose?: number\n openOnFocus?: boolean\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n align?: \"start\" | \"center\" | \"end\"\n sideOffset?: number\n alignOffset?: number\n positionMethod?: \"absolute\" | \"fixed\"\n safeTriangle?: boolean\n debugSafeTriangle?: boolean\n}\n\nconst {\n mountStrategy,\n class: className = \"\",\n delayOpen = 0,\n delayClose = 0,\n openOnFocus,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 8,\n alignOffset = 0,\n positionMethod = \"absolute\",\n safeTriangle,\n debugSafeTriangle,\n ...props\n} = Astro.props\n---\n\n<nav\n {...props}\n data-slot=\"navigation-menu\"\n data-mount-strategy={mountStrategy}\n data-delay-open={delayOpen}\n data-delay-close={delayClose}\n data-open-on-focus={openOnFocus}\n data-side={side}\n data-align={align}\n data-side-offset={sideOffset}\n data-align-offset={alignOffset}\n data-position-method={positionMethod}\n data-safe-triangle={safeTriangle}\n data-debug-safe-triangle={debugSafeTriangle}\n class={cn(\n \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n className\n )}\n>\n <slot />\n <NavigationMenuPositioner {side} {sideOffset} {align} {alignOffset} />\n</nav>\n\n<script>\n import { create } from \"@data-slot/navigation-menu\"\n\n const controllers: ReturnType<typeof create> = []\n const initialize = () => controllers.push(...create())\n initialize()\n document.addEventListener(\"astro:page-load\", initialize)\n document.addEventListener(\"astro:before-swap\", () => {\n for (const controller of controllers) controller.destroy()\n controllers.length = 0\n })\n</script>\n",
14
14
  "type": "registry:ui"
15
15
  },
16
16
  {
@@ -0,0 +1,59 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "pagination",
4
+ "title": "Pagination",
5
+ "description": "Page navigation with previous, next, numbered, and overflow links.",
6
+ "dependencies": [
7
+ "@lucide/astro"
8
+ ],
9
+ "registryDependencies": [
10
+ "@fulldev/button"
11
+ ],
12
+ "files": [
13
+ {
14
+ "path": "src/components/ui/pagination/index.ts",
15
+ "content": "export { default as Pagination } from \"./pagination.astro\"\nexport { default as PaginationContent } from \"./pagination-content.astro\"\nexport { default as PaginationEllipsis } from \"./pagination-ellipsis.astro\"\nexport { default as PaginationItem } from \"./pagination-item.astro\"\nexport { default as PaginationLink } from \"./pagination-link.astro\"\nexport { default as PaginationNext } from \"./pagination-next.astro\"\nexport { default as PaginationPrevious } from \"./pagination-previous.astro\"\n",
16
+ "type": "registry:ui"
17
+ },
18
+ {
19
+ "path": "src/components/ui/pagination/pagination-content.astro",
20
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"ul\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<ul\n data-slot=\"pagination-content\"\n class={cn(\"flex items-center gap-1\", className)}\n {...props}\n>\n <slot />\n</ul>\n",
21
+ "type": "registry:ui"
22
+ },
23
+ {
24
+ "path": "src/components/ui/pagination/pagination-ellipsis.astro",
25
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport EllipsisIcon from \"@lucide/astro/icons/ellipsis\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"span\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<span\n data-slot=\"pagination-ellipsis\"\n class={cn(\n \"flex size-9 items-center justify-center [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n>\n <EllipsisIcon aria-hidden=\"true\" />\n <span class=\"sr-only\">More pages</span>\n</span>\n",
26
+ "type": "registry:ui"
27
+ },
28
+ {
29
+ "path": "src/components/ui/pagination/pagination-item.astro",
30
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\ntype Props = HTMLAttributes<\"li\">\n\nconst { ...props } = Astro.props\n---\n\n<li data-slot=\"pagination-item\" {...props}>\n <slot />\n</li>\n",
31
+ "type": "registry:ui"
32
+ },
33
+ {
34
+ "path": "src/components/ui/pagination/pagination-link.astro",
35
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, type ButtonVariantProps } from \"@/components/ui/button\"\n\ntype Props = HTMLAttributes<\"a\"> & {\n isActive?: boolean\n disabled?: boolean\n size?: ButtonVariantProps[\"size\"]\n}\n\nconst {\n class: className,\n href,\n isActive,\n disabled,\n size = \"icon\",\n tabindex,\n ...props\n} = Astro.props\n---\n\n<Button\n as=\"a\"\n data-slot=\"pagination-link\"\n data-active={isActive ? \"true\" : undefined}\n href={disabled ? undefined : href}\n aria-current={isActive ? \"page\" : undefined}\n aria-disabled={disabled ? \"true\" : undefined}\n tabindex={disabled ? -1 : tabindex}\n variant={isActive ? \"outline\" : \"ghost\"}\n size={size}\n class={cn(\n \"aria-disabled:pointer-events-none aria-disabled:opacity-50\",\n className\n )}\n {...props}\n>\n <slot />\n</Button>\n",
36
+ "type": "registry:ui"
37
+ },
38
+ {
39
+ "path": "src/components/ui/pagination/pagination-next.astro",
40
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ChevronRightIcon from \"@lucide/astro/icons/chevron-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport type { ButtonVariantProps } from \"@/components/ui/button\"\n\nimport PaginationLink from \"./pagination-link.astro\"\n\ntype Props = HTMLAttributes<\"a\"> & {\n text?: string\n disabled?: boolean\n size?: ButtonVariantProps[\"size\"]\n}\n\nconst { class: className, text = \"Next\", ...props } = Astro.props\n---\n\n<PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n class={cn(\"pr-2!\", className)}\n {...props}\n>\n <span class=\"hidden sm:block\">{text}</span>\n <ChevronRightIcon data-icon=\"inline-end\" class=\"rtl:rotate-180\" />\n</PaginationLink>\n",
41
+ "type": "registry:ui"
42
+ },
43
+ {
44
+ "path": "src/components/ui/pagination/pagination-previous.astro",
45
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ChevronLeftIcon from \"@lucide/astro/icons/chevron-left\"\n\nimport { cn } from \"@/lib/utils\"\nimport type { ButtonVariantProps } from \"@/components/ui/button\"\n\nimport PaginationLink from \"./pagination-link.astro\"\n\ntype Props = HTMLAttributes<\"a\"> & {\n text?: string\n disabled?: boolean\n size?: ButtonVariantProps[\"size\"]\n}\n\nconst { class: className, text = \"Previous\", ...props } = Astro.props\n---\n\n<PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n class={cn(\"pl-2!\", className)}\n {...props}\n>\n <ChevronLeftIcon data-icon=\"inline-start\" class=\"rtl:rotate-180\" />\n <span class=\"hidden sm:block\">{text}</span>\n</PaginationLink>\n",
46
+ "type": "registry:ui"
47
+ },
48
+ {
49
+ "path": "src/components/ui/pagination/pagination.astro",
50
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"nav\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<nav\n role=\"navigation\"\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n class={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n>\n <slot />\n</nav>\n",
51
+ "type": "registry:ui"
52
+ }
53
+ ],
54
+ "docs": "https://ui.full.dev/components/pagination/",
55
+ "categories": [
56
+ "ui"
57
+ ],
58
+ "type": "registry:ui"
59
+ }
@@ -4,7 +4,7 @@
4
4
  "title": "Popover",
5
5
  "description": "Displays rich content in a floating layer, triggered by a button.",
6
6
  "dependencies": [
7
- "@data-slot/popover@^1.0.1"
7
+ "@data-slot/popover@^1.0.2"
8
8
  ],
9
9
  "files": [
10
10
  {
@@ -4,7 +4,7 @@
4
4
  "title": "Radio Group",
5
5
  "description": "A set of checkable buttons, known as radio buttons, where no more than one of the buttons can be checked at a time.",
6
6
  "dependencies": [
7
- "@data-slot/radio-group@^1.0.1"
7
+ "@data-slot/radio-group@^1.0.2"
8
8
  ],
9
9
  "files": [
10
10
  {