diff --git a/.changeset/data-slot-catalog-typeset.md b/.changeset/data-slot-catalog-typeset.md new file mode 100644 index 000000000..498f91cd8 --- /dev/null +++ b/.changeset/data-slot-catalog-typeset.md @@ -0,0 +1,11 @@ +--- +"fulldev-ui": minor +--- + +Complete Data Slot component coverage with Drawer, Toast, Toggle Group and Resizable, and upgrade all Data Slot packages to 1.0.2. Add Attachment, Button Group, Pagination and Aspect Ratio as Astro components without their own client scripts. + +Replace the Embla Carousel with Data Slot's native scrolling carousel. This is a breaking change: replace `opts` with `defaultIndex`, `orientation`, `drag` and `loop`; use `CarouselController` and `CarouselOptions` instead of Embla types; replace `carousel:init` and `carousel:select` with `carousel:change` and `carousel:set`. Carousel now displays one full-width slide at a time. Remove fractional slide widths and the old content/item spacing pattern. Examples and the reviews block use the new API. + +Adopt shadcn Typeset for rendered prose while preserving the existing Typography component exports. Typography sizes now control the prose rhythm, with updated heading spacing, nested content styling and semantic tables. Keep docs-specific code controls out of installable Typography styles. + +Improve Combobox trigger and clear focus styling, align Select popper placement and Slider thumb positioning with shadcn, and use a consistent 8px default Navigation Menu gap. diff --git a/astro.config.ts b/astro.config.ts index 9a58f5551..f2c12801b 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -57,6 +57,6 @@ export default defineConfig({ liveCode({ layout: "/src/components/live-code.astro", }), - mdx(), + mdx({ gfm: true }), ], }) diff --git a/package.json b/package.json index 678a69a6c..d9870a134 100644 --- a/package.json +++ b/package.json @@ -73,24 +73,29 @@ "dependencies": { "@astrojs/mdx": "^5.0.6", "@astrojs/sitemap": "^3.7.3", - "@data-slot/accordion": "^1.0.1", - "@data-slot/alert-dialog": "^1.0.1", - "@data-slot/collapsible": "^1.0.1", - "@data-slot/combobox": "^1.0.1", - "@data-slot/command": "^1.0.1", - "@data-slot/core": "^1.0.1", - "@data-slot/dialog": "^1.0.1", - "@data-slot/dropdown-menu": "^1.0.1", - "@data-slot/hover-card": "^1.0.1", - "@data-slot/navigation-menu": "^1.0.1", - "@data-slot/popover": "^1.0.1", - "@data-slot/radio-group": "^1.0.1", - "@data-slot/select": "^1.0.1", - "@data-slot/slider": "^1.0.1", - "@data-slot/switch": "^1.0.1", - "@data-slot/tabs": "^1.0.1", - "@data-slot/toggle": "^1.0.1", - "@data-slot/tooltip": "^1.0.1", + "@data-slot/accordion": "^1.0.2", + "@data-slot/alert-dialog": "^1.0.2", + "@data-slot/carousel": "^1.0.2", + "@data-slot/collapsible": "^1.0.2", + "@data-slot/combobox": "^1.0.2", + "@data-slot/command": "^1.0.2", + "@data-slot/core": "^1.0.2", + "@data-slot/dialog": "^1.0.2", + "@data-slot/drawer": "^1.0.2", + "@data-slot/dropdown-menu": "^1.0.2", + "@data-slot/hover-card": "^1.0.2", + "@data-slot/navigation-menu": "^1.0.2", + "@data-slot/popover": "^1.0.2", + "@data-slot/radio-group": "^1.0.2", + "@data-slot/resizable": "^1.0.2", + "@data-slot/select": "^1.0.2", + "@data-slot/slider": "^1.0.2", + "@data-slot/switch": "^1.0.2", + "@data-slot/tabs": "^1.0.2", + "@data-slot/toast": "^1.0.2", + "@data-slot/toggle": "^1.0.2", + "@data-slot/toggle-group": "^1.0.2", + "@data-slot/tooltip": "^1.0.2", "@fontsource-variable/geist": "^5.2.9", "@fontsource-variable/geist-mono": "^5.2.8", "@lexingtonthemes/seo": "^0.2.0", @@ -102,7 +107,6 @@ "astro-robots-txt": "^1.0.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "embla-carousel": "^8.6.0", "lucide-static": "^1.22.0", "shadcn": "^4.12.0", "simple-icons": "^16.24.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac67d3077..7f988a8e8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,59 +15,74 @@ importers: specifier: ^3.7.3 version: 3.7.3 '@data-slot/accordion': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 '@data-slot/alert-dialog': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 + '@data-slot/carousel': + specifier: ^1.0.2 + version: 1.0.2 '@data-slot/collapsible': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 '@data-slot/combobox': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 '@data-slot/command': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 '@data-slot/core': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 '@data-slot/dialog': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 + '@data-slot/drawer': + specifier: ^1.0.2 + version: 1.0.2 '@data-slot/dropdown-menu': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 '@data-slot/hover-card': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 '@data-slot/navigation-menu': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 '@data-slot/popover': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 '@data-slot/radio-group': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 + '@data-slot/resizable': + specifier: ^1.0.2 + version: 1.0.2 '@data-slot/select': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 '@data-slot/slider': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 '@data-slot/switch': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 '@data-slot/tabs': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 + '@data-slot/toast': + specifier: ^1.0.2 + version: 1.0.2 '@data-slot/toggle': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 + '@data-slot/toggle-group': + specifier: ^1.0.2 + version: 1.0.2 '@data-slot/tooltip': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^1.0.2 + version: 1.0.2 '@fontsource-variable/geist': specifier: ^5.2.9 version: 5.3.0 @@ -101,9 +116,6 @@ importers: clsx: specifier: ^2.1.1 version: 2.1.1 - embla-carousel: - specifier: ^8.6.0 - version: 8.6.0 lucide-static: specifier: ^1.22.0 version: 1.34.0 @@ -444,59 +456,74 @@ packages: resolution: {integrity: sha512-GgcWwRCs/xPtaqlMy8qRhPnZf9vlWcWZNHAitnVQ3yk7JmSralSiq5q07yaffYE8SogtDm7zFeKccx1QNVARpw==} engines: {node: '>= 20.12.0'} - '@data-slot/accordion@1.0.1': - resolution: {integrity: sha512-gmg671YTOia+c3zM42FAikylWLpDd84UN0/fg2JvTD821bspm8t7Du+ILX2aJlWoGZEkxk6At/aqOpMEsQMajA==} + '@data-slot/accordion@1.0.2': + resolution: {integrity: sha512-SOs0DBMdU5l8amuRu1MAEGXORmTFhK3wMLrbl12Rj3hdzIQ6DYsoPvRvVUEs2FZ1RB+gT0PB/JWB1vvzAvBiKA==} - '@data-slot/alert-dialog@1.0.1': - resolution: {integrity: sha512-+3oTGvS9gVb35XcAJZRf6yAM5P7Pb/3r9TS4t++DkX0KLSnKjJ21WG8aUS1A42qNDc+twUlqcc3CLGDxtKIl2w==} + '@data-slot/alert-dialog@1.0.2': + resolution: {integrity: sha512-muBiDNPYF3EXvNTC0nMK3qff95vaPdndGARaHsYFKx0tUI++6wkncIOPD0/PbSFng4wpIssVf4Ila7+VeXCxzg==} - '@data-slot/collapsible@1.0.1': - resolution: {integrity: sha512-y0ugQ7+nvB9qWYcwP4fNRew+W0MJYMa+dgqbPZLB9Ga3eGu0KLC7wfA5iGxg592rGN2xjohl5ixGNuhaWvObng==} + '@data-slot/carousel@1.0.2': + resolution: {integrity: sha512-6ElknTlUM8rKp0sk5TN7gamQgXtmQo/9DIpAChOUXsmwa9Rp27sNO2N9OxMV+FSa3qfL7mImt7idJbYNZHe82g==} - '@data-slot/combobox@1.0.1': - resolution: {integrity: sha512-GefwzKOn849DA32laG4QttII1rVdJ+I1sqTi4vAeyHhaK4DnJfJq85T563DCIR1TGTEefSsFZTzxjFlniwZgbg==} + '@data-slot/collapsible@1.0.2': + resolution: {integrity: sha512-aqBQpbbZBfA+1dQJ5MMMpd17pTCdiphqG77KbAuyctVCIUcT0QCtJ8XT/aw2mOrlAzFPuuTYuvQNhqauRyM+9Q==} - '@data-slot/command@1.0.1': - resolution: {integrity: sha512-vkgJvBr4HjSIsILOObtzuXz2A0YujzEqfRJe0dZsbDuSnMxSTVfTk5UuDNMOB3n65Q2dEthKrSYX280x0Q/u0A==} + '@data-slot/combobox@1.0.2': + resolution: {integrity: sha512-Es4k9oe0K5DyccOm/9dVGz4NVlsYo0/3TkJLRC1VplItpfU0nORF71Ze3udMbznz+pz1i7mjpRvkh+SVkOHRWg==} - '@data-slot/core@1.0.1': - resolution: {integrity: sha512-hR5970E+ANJoawzd2LSCxnMYl+pe0VMj1IZVWYlG1UDTS+n55QrvuITMwj35+gLOCCbABhD5IMBnIJp3aVZoJA==} + '@data-slot/command@1.0.2': + resolution: {integrity: sha512-ONZ1HNJBp/fxmiW7AGCb4Samrb0GynFMQyIv4Be2okHwMlfwFfN1VIe9+JxXv8tLWSdjB2GsOQrNQyijLt9QXQ==} - '@data-slot/dialog@1.0.1': - resolution: {integrity: sha512-0xtsy0p3m4082rVK8IBgJjPcav5pXYYemj7VxfTR/1OGcqXL8wu2m05HH+fKYANEPd4iHsULjX5AWbEC9l9Z7A==} + '@data-slot/core@1.0.2': + resolution: {integrity: sha512-x48OCoPuPpZviCBi9tGJXRX05mB/XPb+//2MVlQU6x3kQQVexSZONNfyv791+4WJz+nxi7oxjryiLmTLCFNVEw==} - '@data-slot/dropdown-menu@1.0.1': - resolution: {integrity: sha512-JpB7ZXxpaOrG9rN7Q76xkBJwpToe9b1nc7QMbJpgmDbog03pfpyTUBQFhHjqOEK+sNUkabG3JfVAnGG0xwm75g==} + '@data-slot/dialog@1.0.2': + resolution: {integrity: sha512-Xke0TXqQHYlsW1SGcY/t/bX1Gr3doTq1+fHTngNJ16QThz7xr96VzAXZkTKGJo/bTe4NmO87qpILRSq4QiZfZA==} - '@data-slot/hover-card@1.0.1': - resolution: {integrity: sha512-WQMXfc6RxYmc3t7R0N/Gjz3LkLeWSJqcBQuE4c+SgM4xaVXmoFxc7PEis1BE+JlmMwbLywrGubCWQo1n05yWjg==} + '@data-slot/drawer@1.0.2': + resolution: {integrity: sha512-nCje+U7gCX3OVxrNxvE0VGEOnNWKeGgaq1JSnJ9kwvA5+7K1Ag+P3IYrRFaQaFbYRU2GKE60PlrzY7TaaoEaZA==} - '@data-slot/navigation-menu@1.0.1': - resolution: {integrity: sha512-qSFqHpUN93dui/VPKYgFlHp7s9pNPrEoXofJVPFkZMHnaa9+HAmfoQbPHWn6xHfHplGF6AUIUccEOm3qtpUkZg==} + '@data-slot/dropdown-menu@1.0.2': + resolution: {integrity: sha512-YUQuIRoapwBPlS/2oqES9gsMxyJiRugWRHlvfdtqFKTPUJCBbndsLCO+vJ4t2KDZhWrHqxyhcDMr85WbxiSmdA==} - '@data-slot/popover@1.0.1': - resolution: {integrity: sha512-4/FhCz5w6MRhXVB8hquZO0W5uyrwNTDu/UdUsavzWfNVK9pmFt4Rc7xjK6KH/uMqIu8gvxAYAsVDaFaOFsflHA==} + '@data-slot/hover-card@1.0.2': + resolution: {integrity: sha512-Itf7MvxLVrmXScg+8NG3V0QY+28YPyhmhOlnRLw35d0mKwMBtxkyYFMMpBMxYRxV3WXuv0ZFyhFjzscjDFhgFg==} - '@data-slot/radio-group@1.0.1': - resolution: {integrity: sha512-HCAmwdjBHY69R/q6V1k6Xc88lzfUP4idXQoOUkWwwKqqlP2DXH2NEuk9/p0zSBXDKerY8qg8UI0Ldvff/ydnIA==} + '@data-slot/navigation-menu@1.0.2': + resolution: {integrity: sha512-duGcIWtwjFwurSZZsgUrrbIGgxUVext81cpOIIo2DIVuC/JhtcW5xD+AllPDqXvbyhhsv9fKcLx76WRF2koIIA==} - '@data-slot/select@1.0.1': - resolution: {integrity: sha512-megYWB6aa1OupAFmQeTiRLO0cKmXyvJvS6Tht6P/gc59ioduxGLdU1SjIZS1XVK6ejN2FfXKOgx4dSsqZLwzpA==} + '@data-slot/popover@1.0.2': + resolution: {integrity: sha512-eVDSmfiXHrUlwVdQ0yO0LPkbZJL0R1ygrieAC/LOzsi+ODhCgilnbT2azKlDuKJoPNMOaMOft2FkRz7HIMF4/A==} - '@data-slot/slider@1.0.1': - resolution: {integrity: sha512-1h41stz/cZXk2HStHgAqzH/ymaiNAg6tN51HS62WnL0m4y3MJ3OvKhXKp8hdd8PgXpg5CPxrPj5k57eVzMvF1g==} + '@data-slot/radio-group@1.0.2': + resolution: {integrity: sha512-Pp2clfsNDm2g1JdLhRs3a7c9t2k4gYtEndxBkQ6E9wwcHLs0fXiUiG3JMyenGPGdTdNkAlfq3Y9yY+z73AXycg==} - '@data-slot/switch@1.0.1': - resolution: {integrity: sha512-q5Y0vwuKTro/FbZAjf67CcFK+Bl7MZoA4TOyvPPtlIeRcNmblx1Bn1OQxwpwtAE5nObNCo7l3ily3OcssAk5pw==} + '@data-slot/resizable@1.0.2': + resolution: {integrity: sha512-bEqPmnuD2wNqkuqM+uaku09kw5/0wSBbvtEQb8YM785pxQEa8Rs54hK6whLpP5RZmxH8h5OdT7anRQaftmlHQw==} - '@data-slot/tabs@1.0.1': - resolution: {integrity: sha512-hnr1PJhVbX+yKEAbGgo+/ITAY/Ibegxqb6G5+IFTfukQ5zJOapxrlHr4M0ERlmAKy/nNQGs830DbI5JQbBTNaA==} + '@data-slot/select@1.0.2': + resolution: {integrity: sha512-JWI1G14HsdS6HoTlLqfjqyaMwkfoWKVjwjp1If96UTqFnlyee65pRvVi4h1qEJm/GlRbUR9l4bh9YPvdzUZKow==} - '@data-slot/toggle@1.0.1': - resolution: {integrity: sha512-ktkHGv/E3razY5+LGXyVC9hAwnNHZkXViBE3uyWEaO4leW/0ui4le7Fepg37J6PmK4hQTqhTMDKC1Gfs1ccHTQ==} + '@data-slot/slider@1.0.2': + resolution: {integrity: sha512-NBOsXVtg7l5SDJPK/LFc9WO88P642fGhdfz7edUXPu5VpcKXHkb+TRt4YGcsnNREYKm+2nWgFIzki9Bifn35oQ==} - '@data-slot/tooltip@1.0.1': - resolution: {integrity: sha512-Fmv/KqjnaoreUAbOMy1QsZnwGEFTh5eVFuWtOrp/a7J6NFi2oQNyzuqq3ZTx9lVJqSuSAkjPFk+FID3RDdyVUw==} + '@data-slot/switch@1.0.2': + resolution: {integrity: sha512-m6GUA8XoCWVw08W8GXqo5NGi9qi/1hMxwFcCXFYlHSQnmtvDCIX2U0tr/gFnkP7+y9I7g1Mm1KVKAX+1Rw6Gwg==} + + '@data-slot/tabs@1.0.2': + resolution: {integrity: sha512-2Oc13RY/sMtXTKX3TuUhCJbh+q/g1GjuNOC7wGHC82X2rmJK6Xc+CXd9eIS1imzcRp7hpjJigGichstJ0vVGkw==} + + '@data-slot/toast@1.0.2': + resolution: {integrity: sha512-WOUXTlmFC1j5EwBgo6AAjaEs09HKUOhUFo2vDXBGwgpOIRZo4hOH49B9LvGusMVp43+1rHBv2EfWWvrM21008w==} + + '@data-slot/toggle-group@1.0.2': + resolution: {integrity: sha512-/poEuONG6GM4HkTzvYyWBvwFMR2KLeIVQfOofuFz+hAKw09CY4WkuLqiBOdKjZKmLgA5H+AoHyKVQ5LPYA/EMA==} + + '@data-slot/toggle@1.0.2': + resolution: {integrity: sha512-iJdvqRE1ClFv8uNswUMM7u5edR1uhMkGbnfAO6t3KlB2mAwIxeuX9Y/3seml5qvq89l7CTLZwSaJHYnGHfhlLg==} + + '@data-slot/tooltip@1.0.2': + resolution: {integrity: sha512-B++AfDWpbD8M7TRNs3Md5mF3ztgaDRHvBqBkSVOFti+9dx8xNRBUtficyixnew67Yqdxwu3DXVqEac1342WWnw==} '@dotenvx/dotenvx@1.64.0': resolution: {integrity: sha512-6+xRpZaWuHXEqnhBjae+VmQI9Uaqw5Uzu/ScpO+W7ww9Zp3lHSNBoNjFcUxhrCyc7pRGQzyDjhKzloqrPHERiQ==} @@ -2114,9 +2141,6 @@ packages: electron-to-chromium@1.5.349: resolution: {integrity: sha512-QsWVGyRuY07Aqb234QytTfwd5d9AJlfNIQ5wIOl1L+PZDzI9d9+Fn0FRale/QYlFxt/bUnB0/nLd1jFPGxGK1A==} - embla-carousel@8.6.0: - resolution: {integrity: sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==} - emmet@2.4.11: resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==} @@ -3809,10 +3833,6 @@ packages: tmp-promise@3.0.3: resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} - tmp@0.2.5: - resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} - engines: {node: '>=14.14'} - tmp@0.2.7: resolution: {integrity: sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==} engines: {node: '>=14.14'} @@ -4835,75 +4855,95 @@ snapshots: fast-wrap-ansi: 0.2.0 sisteransi: 1.0.5 - '@data-slot/accordion@1.0.1': + '@data-slot/accordion@1.0.2': + dependencies: + '@data-slot/core': 1.0.2 + + '@data-slot/alert-dialog@1.0.2': + dependencies: + '@data-slot/core': 1.0.2 + + '@data-slot/carousel@1.0.2': + dependencies: + '@data-slot/core': 1.0.2 + + '@data-slot/collapsible@1.0.2': dependencies: - '@data-slot/core': 1.0.1 + '@data-slot/core': 1.0.2 - '@data-slot/alert-dialog@1.0.1': + '@data-slot/combobox@1.0.2': dependencies: - '@data-slot/core': 1.0.1 + '@data-slot/core': 1.0.2 - '@data-slot/collapsible@1.0.1': + '@data-slot/command@1.0.2': dependencies: - '@data-slot/core': 1.0.1 + '@data-slot/core': 1.0.2 - '@data-slot/combobox@1.0.1': + '@data-slot/core@1.0.2': {} + + '@data-slot/dialog@1.0.2': dependencies: - '@data-slot/core': 1.0.1 + '@data-slot/core': 1.0.2 - '@data-slot/command@1.0.1': + '@data-slot/drawer@1.0.2': dependencies: - '@data-slot/core': 1.0.1 + '@data-slot/core': 1.0.2 - '@data-slot/core@1.0.1': {} + '@data-slot/dropdown-menu@1.0.2': + dependencies: + '@data-slot/core': 1.0.2 - '@data-slot/dialog@1.0.1': + '@data-slot/hover-card@1.0.2': dependencies: - '@data-slot/core': 1.0.1 + '@data-slot/core': 1.0.2 - '@data-slot/dropdown-menu@1.0.1': + '@data-slot/navigation-menu@1.0.2': dependencies: - '@data-slot/core': 1.0.1 + '@data-slot/core': 1.0.2 - '@data-slot/hover-card@1.0.1': + '@data-slot/popover@1.0.2': dependencies: - '@data-slot/core': 1.0.1 + '@data-slot/core': 1.0.2 - '@data-slot/navigation-menu@1.0.1': + '@data-slot/radio-group@1.0.2': dependencies: - '@data-slot/core': 1.0.1 + '@data-slot/core': 1.0.2 - '@data-slot/popover@1.0.1': + '@data-slot/resizable@1.0.2': dependencies: - '@data-slot/core': 1.0.1 + '@data-slot/core': 1.0.2 - '@data-slot/radio-group@1.0.1': + '@data-slot/select@1.0.2': dependencies: - '@data-slot/core': 1.0.1 + '@data-slot/core': 1.0.2 - '@data-slot/select@1.0.1': + '@data-slot/slider@1.0.2': dependencies: - '@data-slot/core': 1.0.1 + '@data-slot/core': 1.0.2 - '@data-slot/slider@1.0.1': + '@data-slot/switch@1.0.2': dependencies: - '@data-slot/core': 1.0.1 + '@data-slot/core': 1.0.2 - '@data-slot/switch@1.0.1': + '@data-slot/tabs@1.0.2': dependencies: - '@data-slot/core': 1.0.1 + '@data-slot/core': 1.0.2 - '@data-slot/tabs@1.0.1': + '@data-slot/toast@1.0.2': dependencies: - '@data-slot/core': 1.0.1 + '@data-slot/core': 1.0.2 - '@data-slot/toggle@1.0.1': + '@data-slot/toggle-group@1.0.2': dependencies: - '@data-slot/core': 1.0.1 + '@data-slot/core': 1.0.2 - '@data-slot/tooltip@1.0.1': + '@data-slot/toggle@1.0.2': dependencies: - '@data-slot/core': 1.0.1 + '@data-slot/core': 1.0.2 + + '@data-slot/tooltip@1.0.2': + dependencies: + '@data-slot/core': 1.0.2 '@dotenvx/dotenvx@1.64.0': dependencies: @@ -6440,8 +6480,6 @@ snapshots: electron-to-chromium@1.5.349: {} - embla-carousel@8.6.0: {} - emmet@2.4.11: dependencies: '@emmetio/abbreviation': 2.3.3 @@ -8602,10 +8640,7 @@ snapshots: tmp-promise@3.0.3: dependencies: - tmp: 0.2.5 - optional: true - - tmp@0.2.5: + tmp: 0.2.7 optional: true tmp@0.2.7: {} diff --git a/public/r/accordion.json b/public/r/accordion.json index 1304ffd9c..ac4f81d3a 100644 --- a/public/r/accordion.json +++ b/public/r/accordion.json @@ -4,7 +4,7 @@ "title": "Accordion", "description": "A vertically stacked set of interactive headings that each reveal a section of content.", "dependencies": [ - "@data-slot/accordion@^1.0.1", + "@data-slot/accordion@^1.0.2", "@lucide/astro" ], "files": [ diff --git a/public/r/alert-dialog.json b/public/r/alert-dialog.json index e0fa792c0..3d5694549 100644 --- a/public/r/alert-dialog.json +++ b/public/r/alert-dialog.json @@ -4,7 +4,7 @@ "title": "Alert Dialog", "description": "A modal dialog for important confirmations that expects a response.", "dependencies": [ - "@data-slot/alert-dialog@^1.0.1" + "@data-slot/alert-dialog@^1.0.2" ], "registryDependencies": [ "@fulldev/button" diff --git a/public/r/aspect-ratio.json b/public/r/aspect-ratio.json new file mode 100644 index 000000000..bfdeee85b --- /dev/null +++ b/public/r/aspect-ratio.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "aspect-ratio", + "title": "Aspect Ratio", + "description": "Displays content within a desired ratio.", + "files": [ + { + "path": "src/components/ui/aspect-ratio/aspect-ratio.astro", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n ratio: number\n}\n\nconst { class: className, ratio, style, ...props } = Astro.props\n\nconst resolvedStyle =\n typeof style === \"string\"\n ? `--ratio: ${ratio}; ${style}`\n : { \"--ratio\": ratio, ...(style ?? {}) }\n---\n\n\n \n\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/aspect-ratio/index.ts", + "content": "export { default as AspectRatio } from \"./aspect-ratio.astro\"\n", + "type": "registry:ui" + } + ], + "docs": "https://ui.full.dev/components/aspect-ratio/", + "categories": [ + "ui" + ], + "type": "registry:ui" +} \ No newline at end of file diff --git a/public/r/attachment.json b/public/r/attachment.json new file mode 100644 index 000000000..bfbfdb1a5 --- /dev/null +++ b/public/r/attachment.json @@ -0,0 +1,66 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "attachment", + "title": "Attachment", + "description": "Displays a file or image attachment with media, metadata, state, and actions.", + "registryDependencies": [ + "@fulldev/button" + ], + "files": [ + { + "path": "src/components/ui/attachment/attachment-action.astro", + "content": "---\nimport type { HTMLTag, Polymorphic } from \"astro/types\"\n\nimport { Button, type ButtonVariantProps } from \"@/components/ui/button\"\n\ntype Props = Polymorphic<{ as: Tag }> &\n ButtonVariantProps\n\nconst { as, variant = \"ghost\", size = \"icon-xs\", ...props } = Astro.props\n---\n\n\n \n\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/attachment/attachment-actions.astro", + "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\n \n\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/attachment/attachment-content.astro", + "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\n \n\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/attachment/attachment-description.astro", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"span\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n\n \n\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/attachment/attachment-group.astro", + "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\n \n\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/attachment/attachment-media.astro", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst attachmentMediaVariants = cva(\n \"bg-muted text-foreground group-data-[state=error]/attachment:bg-destructive/10 group-data-[state=error]/attachment:text-destructive relative flex aspect-square w-10 shrink-0 items-center justify-center overflow-hidden rounded-lg group-data-[orientation=vertical]/attachment:w-full group-data-[size=sm]/attachment:w-8 group-data-[size=xs]/attachment:w-7 group-data-[size=xs]/attachment:rounded-md group-data-[orientation=vertical]/attachment:*:data-[slot=spinner]:size-6! [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 group-data-[orientation=vertical]/attachment:[&_svg:not([class*='size-'])]:size-6 group-data-[size=xs]/attachment:[&_svg:not([class*='size-'])]:size-3.5\",\n {\n variants: {\n variant: {\n icon: \"\",\n image:\n \"opacity-60 group-data-[state=done]/attachment:opacity-100 group-data-[state=idle]/attachment:opacity-100 *:[img]:aspect-square *:[img]:w-full *:[img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"icon\",\n },\n }\n)\n\ntype Props = HTMLAttributes<\"div\"> &\n VariantProps\n\nconst { class: className, variant = \"icon\", ...props } = Astro.props\n---\n\n\n \n\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/attachment/attachment-title.astro", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"span\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n\n \n\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/attachment/attachment-trigger.astro", + "content": "---\nimport type { HTMLTag, Polymorphic } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = Polymorphic<{ as: Tag }>\n\nconst {\n as: Tag = \"href\" in Astro.props ? \"a\" : \"button\",\n class: className,\n ...props\n} = Astro.props\n\nconst attributes: Record = { ...props }\nif (Tag === \"button\") attributes.type ??= \"button\"\n---\n\n\n \n\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/attachment/attachment.astro", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst attachmentVariants = cva(\n \"group/attachment bg-card text-card-foreground focus-within:ring-ring/50 has-[>a,>button]:hover:bg-muted/50 data-[state=error]:border-destructive/30 relative flex w-fit max-w-full min-w-0 shrink-0 flex-wrap rounded-xl border transition-colors focus-within:ring-1 data-[state=idle]:border-dashed\",\n {\n variants: {\n size: {\n default:\n \"gap-2 text-sm has-data-[slot=attachment-content]:px-2.5 has-data-[slot=attachment-content]:py-2 has-data-[slot=attachment-media]:p-2\",\n sm: \"gap-2.5 text-xs has-data-[slot=attachment-content]:px-2 has-data-[slot=attachment-content]:py-1.5 has-data-[slot=attachment-media]:p-1.5\",\n xs: \"gap-1.5 rounded-lg text-xs has-data-[slot=attachment-content]:px-1.5 has-data-[slot=attachment-content]:py-1 has-data-[slot=attachment-media]:p-1\",\n },\n orientation: {\n horizontal: \"min-w-40 items-center\",\n vertical: \"w-24 flex-col has-data-[slot=attachment-content]:w-30\",\n },\n },\n defaultVariants: {\n size: \"default\",\n orientation: \"horizontal\",\n },\n }\n)\n\ntype Props = HTMLAttributes<\"div\"> &\n VariantProps & {\n state?: \"idle\" | \"uploading\" | \"processing\" | \"error\" | \"done\"\n }\n\nconst {\n class: className,\n state = \"done\",\n size = \"default\",\n orientation = \"horizontal\",\n ...props\n} = Astro.props\n---\n\n\n \n\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/attachment/index.ts", + "content": "export { default as Attachment } from \"./attachment.astro\"\nexport { default as AttachmentAction } from \"./attachment-action.astro\"\nexport { default as AttachmentActions } from \"./attachment-actions.astro\"\nexport { default as AttachmentContent } from \"./attachment-content.astro\"\nexport { default as AttachmentDescription } from \"./attachment-description.astro\"\nexport { default as AttachmentGroup } from \"./attachment-group.astro\"\nexport { default as AttachmentMedia } from \"./attachment-media.astro\"\nexport { default as AttachmentTitle } from \"./attachment-title.astro\"\nexport { default as AttachmentTrigger } from \"./attachment-trigger.astro\"\n", + "type": "registry:ui" + } + ], + "docs": "https://ui.full.dev/components/attachment/", + "categories": [ + "ui" + ], + "type": "registry:ui" +} \ No newline at end of file diff --git a/public/r/button-group.json b/public/r/button-group.json new file mode 100644 index 000000000..706a31d1c --- /dev/null +++ b/public/r/button-group.json @@ -0,0 +1,41 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-group", + "title": "Button Group", + "description": "Groups related controls with connected edges and consistent focus behavior.", + "registryDependencies": [ + "@fulldev/separator" + ], + "files": [ + { + "path": "src/components/ui/button-group/button-group-separator.astro", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n orientation?: \"horizontal\" | \"vertical\"\n decorative?: boolean\n}\n\nconst {\n class: className,\n orientation = \"vertical\",\n decorative = true,\n ...props\n} = Astro.props\n---\n\n\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/button-group/button-group-text.astro", + "content": "---\nimport type { HTMLTag, Polymorphic } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = Polymorphic<{ as: Tag }>\n\nconst { as: Tag = \"div\", class: className, ...props } = Astro.props\n---\n\n\n \n\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/button-group/button-group-variants.ts", + "content": "import { cva, type VariantProps } from \"class-variance-authority\"\n\nexport const buttonGroupVariants = cva(\n \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"*:data-slot:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-md! [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0\",\n vertical:\n \"flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\nexport type ButtonGroupVariantProps = VariantProps\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/button-group/button-group.astro", + "content": "---\nimport type { HTMLTag, Polymorphic } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport {\n buttonGroupVariants,\n type ButtonGroupVariantProps,\n} from \"./button-group-variants\"\n\ntype Props = Polymorphic<{ as: Tag }> &\n ButtonGroupVariantProps\n\nconst {\n as: Tag = \"div\",\n class: className,\n orientation = \"horizontal\",\n ...props\n} = Astro.props\n---\n\n\n \n\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/button-group/index.ts", + "content": "export { default as ButtonGroup } from \"./button-group.astro\"\nexport { default as ButtonGroupSeparator } from \"./button-group-separator.astro\"\nexport { default as ButtonGroupText } from \"./button-group-text.astro\"\nexport {\n buttonGroupVariants,\n type ButtonGroupVariantProps,\n} from \"./button-group-variants\"\n", + "type": "registry:ui" + } + ], + "docs": "https://ui.full.dev/components/button-group/", + "categories": [ + "ui" + ], + "type": "registry:ui" +} \ No newline at end of file diff --git a/public/r/carousel.json b/public/r/carousel.json index ae6989572..8586df5fd 100644 --- a/public/r/carousel.json +++ b/public/r/carousel.json @@ -2,9 +2,9 @@ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "carousel", "title": "Carousel", - "description": "A carousel with motion and swipe built using Embla.", + "description": "An accessible carousel built on native scrolling with Data Slot.", "dependencies": [ - "embla-carousel", + "@data-slot/carousel@^1.0.2", "@lucide/astro" ], "registryDependencies": [ @@ -13,32 +13,32 @@ "files": [ { "path": "src/components/ui/carousel/carousel.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport type { EmblaOptionsType } from \"embla-carousel\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n opts?: EmblaOptionsType\n orientation?: \"horizontal\" | \"vertical\"\n}\n\nconst {\n class: className,\n opts,\n orientation = \"horizontal\",\n ...props\n} = Astro.props\n\nconst resolvedOpts: EmblaOptionsType = {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n}\n---\n\n\n \n\n\n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n defaultIndex?: number\n orientation?: \"horizontal\" | \"vertical\"\n drag?: boolean\n loop?: boolean\n}\n\nconst {\n class: className,\n defaultIndex,\n orientation = \"horizontal\",\n drag,\n loop,\n ...props\n} = Astro.props\n---\n\n\n \n\n\n\n", "type": "registry:ui" }, { "path": "src/components/ui/carousel/carousel-content.astro", - "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
\n \n \n
\n\n", + "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\n \n\n", "type": "registry:ui" }, { "path": "src/components/ui/carousel/carousel-item.astro", - "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\n \n\n", + "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\n \n\n", "type": "registry:ui" }, { "path": "src/components/ui/carousel/carousel-next.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ChevronRightIcon from \"@lucide/astro/icons/chevron-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants, type ButtonVariantProps } from \"@/components/ui/button\"\n\ntype Props = Omit, \"type\"> & ButtonVariantProps\n\nconst {\n class: className,\n variant = \"outline\",\n size = \"icon-sm\",\n disabled,\n ...props\n} = Astro.props\n---\n\n\n \n \n Next slide\n \n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ChevronRightIcon from \"@lucide/astro/icons/chevron-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants, type ButtonVariantProps } from \"@/components/ui/button\"\n\ntype Props = Omit, \"type\"> & ButtonVariantProps\n\nconst {\n class: className,\n variant = \"outline\",\n size = \"icon-sm\",\n ...props\n} = Astro.props\n---\n\n\n \n \n Next slide\n \n\n", "type": "registry:ui" }, { "path": "src/components/ui/carousel/carousel-previous.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ChevronLeftIcon from \"@lucide/astro/icons/chevron-left\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants, type ButtonVariantProps } from \"@/components/ui/button\"\n\ntype Props = Omit, \"type\"> & ButtonVariantProps\n\nconst {\n class: className,\n variant = \"outline\",\n size = \"icon-sm\",\n disabled,\n ...props\n} = Astro.props\n---\n\n\n \n \n Previous slide\n \n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ChevronLeftIcon from \"@lucide/astro/icons/chevron-left\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants, type ButtonVariantProps } from \"@/components/ui/button\"\n\ntype Props = Omit, \"type\"> & ButtonVariantProps\n\nconst {\n class: className,\n variant = \"outline\",\n size = \"icon-sm\",\n ...props\n} = Astro.props\n---\n\n\n \n \n Previous slide\n \n\n", "type": "registry:ui" }, { "path": "src/components/ui/carousel/index.ts", - "content": "export type {\n EmblaCarouselType as CarouselApi,\n EmblaOptionsType as CarouselOptions,\n EmblaPluginType as CarouselPlugin,\n} from \"embla-carousel\"\n\nexport { default as Carousel } from \"./carousel.astro\"\nexport { default as CarouselContent } from \"./carousel-content.astro\"\nexport { default as CarouselItem } from \"./carousel-item.astro\"\nexport { default as CarouselPrevious } from \"./carousel-previous.astro\"\nexport { default as CarouselNext } from \"./carousel-next.astro\"\n", + "content": "export type { CarouselController, CarouselOptions } from \"@data-slot/carousel\"\n\nexport { default as Carousel } from \"./carousel.astro\"\nexport { default as CarouselContent } from \"./carousel-content.astro\"\nexport { default as CarouselItem } from \"./carousel-item.astro\"\nexport { default as CarouselPrevious } from \"./carousel-previous.astro\"\nexport { default as CarouselNext } from \"./carousel-next.astro\"\n", "type": "registry:ui" } ], diff --git a/public/r/collapsible.json b/public/r/collapsible.json index e1cc26faf..2377a7429 100644 --- a/public/r/collapsible.json +++ b/public/r/collapsible.json @@ -4,7 +4,7 @@ "title": "Collapsible", "description": "An interactive component which expands/collapses a panel.", "dependencies": [ - "@data-slot/collapsible@^1.0.1" + "@data-slot/collapsible@^1.0.2" ], "files": [ { diff --git a/public/r/combobox.json b/public/r/combobox.json index 779c7f22c..f00b41e8b 100644 --- a/public/r/combobox.json +++ b/public/r/combobox.json @@ -4,8 +4,8 @@ "title": "Combobox", "description": "Autocomplete input with a list of suggestions.", "dependencies": [ - "@data-slot/combobox@^1.0.1", - "@data-slot/core@^1.0.1", + "@data-slot/combobox@^1.0.2", + "@data-slot/core@^1.0.2", "@lucide/astro" ], "registryDependencies": [ @@ -34,7 +34,7 @@ }, { "path": "src/components/ui/combobox/combobox-input.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport XIcon from \"@lucide/astro/icons/x\"\n\nimport { cn } from \"@/lib/utils\"\nimport InputGroupAddon from \"@/components/ui/input-group/input-group-addon.astro\"\nimport InputGroupInput from \"@/components/ui/input-group/input-group-input.astro\"\nimport InputGroup from \"@/components/ui/input-group/input-group.astro\"\n\nimport ComboboxTrigger from \"./combobox-trigger.astro\"\n\ntype Props = HTMLAttributes<\"input\"> & {\n showTrigger?: boolean\n showClear?: boolean\n}\n\nconst {\n class: className,\n type = \"text\",\n disabled = false,\n showTrigger = true,\n showClear = false,\n ...props\n} = Astro.props\n---\n\n\n \n \n {\n showTrigger && (\n \n )\n }\n {\n showClear && (\n \n \n \n )\n }\n \n \n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport XIcon from \"@lucide/astro/icons/x\"\n\nimport { cn } from \"@/lib/utils\"\nimport InputGroupAddon from \"@/components/ui/input-group/input-group-addon.astro\"\nimport InputGroupButton from \"@/components/ui/input-group/input-group-button.astro\"\nimport InputGroupInput from \"@/components/ui/input-group/input-group-input.astro\"\nimport InputGroup from \"@/components/ui/input-group/input-group.astro\"\n\nimport ComboboxTrigger from \"./combobox-trigger.astro\"\n\ntype Props = HTMLAttributes<\"input\"> & {\n showTrigger?: boolean\n showClear?: boolean\n}\n\nconst {\n class: className,\n type = \"text\",\n disabled = false,\n showTrigger = true,\n showClear = false,\n ...props\n} = Astro.props\n---\n\n\n \n \n {\n showTrigger && (\n \n )\n }\n {\n showClear && (\n \n \n \n )\n }\n \n \n\n", "type": "registry:ui" }, { @@ -59,7 +59,7 @@ }, { "path": "src/components/ui/combobox/combobox-trigger.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ChevronDownIcon from \"@lucide/astro/icons/chevron-down\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"button\"> & {\n showIcon?: boolean\n}\n\nconst {\n class: className,\n type = \"button\",\n showIcon = true,\n ...props\n} = Astro.props\n---\n\n\n \n {\n showIcon && (\n \n )\n }\n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ChevronDownIcon from \"@lucide/astro/icons/chevron-down\"\n\nimport { cn } from \"@/lib/utils\"\nimport InputGroupButton from \"@/components/ui/input-group/input-group-button.astro\"\n\ntype Props = HTMLAttributes<\"button\"> & {\n showIcon?: boolean\n}\n\nconst {\n class: className,\n type = \"button\",\n showIcon = true,\n ...props\n} = Astro.props\n---\n\n\n \n {\n showIcon && (\n \n )\n }\n\n", "type": "registry:ui" }, { diff --git a/public/r/command.json b/public/r/command.json index 7c998ba23..be0a872ee 100644 --- a/public/r/command.json +++ b/public/r/command.json @@ -4,9 +4,9 @@ "title": "Command", "description": "Command menu for search and quick actions.", "dependencies": [ - "@data-slot/command@^1.0.1", + "@data-slot/command@^1.0.2", "@lucide/astro", - "@data-slot/core@^1.0.1" + "@data-slot/core@^1.0.2" ], "registryDependencies": [ "@fulldev/dialog" diff --git a/public/r/components.json b/public/r/components.json index 4d4050ca0..90872f412 100644 --- a/public/r/components.json +++ b/public/r/components.json @@ -7,11 +7,14 @@ "@fulldev/accordion", "@fulldev/alert", "@fulldev/alert-dialog", + "@fulldev/aspect-ratio", + "@fulldev/attachment", "@fulldev/avatar", "@fulldev/badge", "@fulldev/banner", "@fulldev/breadcrumb", "@fulldev/button", + "@fulldev/button-group", "@fulldev/card", "@fulldev/carousel", "@fulldev/checkbox", @@ -19,6 +22,7 @@ "@fulldev/combobox", "@fulldev/command", "@fulldev/dialog", + "@fulldev/drawer", "@fulldev/dropdown-menu", "@fulldev/empty", "@fulldev/field", @@ -36,10 +40,12 @@ "@fulldev/marquee", "@fulldev/native-select", "@fulldev/navigation-menu", + "@fulldev/pagination", "@fulldev/popover", "@fulldev/price", "@fulldev/radio-group", "@fulldev/rating", + "@fulldev/resizable", "@fulldev/section", "@fulldev/select", "@fulldev/separator", @@ -53,8 +59,10 @@ "@fulldev/tabs", "@fulldev/textarea", "@fulldev/theme-toggle", + "@fulldev/toast", "@fulldev/toc", "@fulldev/toggle", + "@fulldev/toggle-group", "@fulldev/tooltip", "@fulldev/typography", "@fulldev/video" diff --git a/public/r/dialog.json b/public/r/dialog.json index 7efc1928a..3db40b95f 100644 --- a/public/r/dialog.json +++ b/public/r/dialog.json @@ -4,7 +4,7 @@ "title": "Dialog", "description": "A window overlaid on either the primary window or another dialog window, rendering the content underneath inert.", "dependencies": [ - "@data-slot/dialog@^1.0.1", + "@data-slot/dialog@^1.0.2", "@lucide/astro" ], "registryDependencies": [ diff --git a/public/r/doc-1.json b/public/r/doc-1.json index c83d79bea..1a40cc41f 100644 --- a/public/r/doc-1.json +++ b/public/r/doc-1.json @@ -18,7 +18,7 @@ "files": [ { "path": "src/components/blocks/doc-1.astro", - "content": "---\nimport ArrowLeft from \"@lucide/astro/icons/arrow-left\"\nimport ArrowRight from \"@lucide/astro/icons/arrow-right\"\nimport Check from \"@lucide/astro/icons/check\"\nimport ChevronDown from \"@lucide/astro/icons/chevron-down\"\nimport Copy from \"@lucide/astro/icons/copy\"\nimport ExternalLink from \"@lucide/astro/icons/external-link\"\nimport Claude from \"simple-icons-astro/Claude\"\nimport Cursor from \"simple-icons-astro/Cursor\"\nimport Markdown from \"simple-icons-astro/Markdown\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { buttonVariants } from \"@/components/ui/button/button-variants\"\nimport {\n Card,\n CardDescription,\n CardFooter,\n CardHeader,\n} from \"@/components/ui/card\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { SectionContainer } from \"@/components/ui/section\"\nimport {\n Toc,\n TocMenu,\n TocMenuItem,\n TocMenuLink,\n TocTitle,\n} from \"@/components/ui/toc\"\nimport {\n Typography,\n TypographyH1,\n TypographyLead,\n} from \"@/components/ui/typography\"\n\ntype Props = {\n class?: string\n title: string\n description?: string\n copyButton?: {\n id: string\n source: string\n }\n markdownUrl?: string\n tocItems: {\n depth: number\n href: string\n label: string\n }[]\n callout?: {\n description: string\n button: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }\n }\n previousPage?: {\n href: string\n title: string\n }\n nextPage?: {\n href: string\n title: string\n }\n labels: {\n copyMarkdown: string\n openIn: string\n openInMarkdown: string\n openInChatGPT: string\n openInClaude: string\n openInCursor: string\n pagination: {\n previous: string\n next: string\n ariaLabel: string\n }\n toc: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n copyButton,\n markdownUrl,\n tocItems,\n callout,\n previousPage,\n nextPage,\n labels,\n} = Astro.props\nconst showCopyButton = Boolean(copyButton)\nconst showOpenButton = Boolean(markdownUrl)\nconst showPagination = Boolean(previousPage || nextPage)\nconst assistantPrompt = markdownUrl\n ? `Read ${new URL(markdownUrl, Astro.site ?? Astro.url.origin).href}, I want to ask questions about it.`\n : \"\"\nconst openLinks = markdownUrl\n ? [\n {\n label: labels.openInMarkdown,\n href: markdownUrl,\n icon: \"markdown\",\n },\n {\n label: labels.openInChatGPT,\n href: `https://chatgpt.com/?hints=search&q=${encodeURIComponent(assistantPrompt)}`,\n icon: \"chatgpt\",\n },\n {\n label: labels.openInClaude,\n href: `https://claude.ai/new?q=${encodeURIComponent(assistantPrompt)}`,\n icon: \"claude\",\n },\n {\n label: labels.openInCursor,\n href: `https://cursor.com/link/prompt?text=${encodeURIComponent(assistantPrompt)}`,\n icon: \"cursor\",\n },\n ]\n : []\n---\n\n\n
\n \n
\n \n {title}\n \n {\n description && (\n \n {description}\n \n )\n }\n
\n
\n {\n showCopyButton && (\n \n \n
\n \n\n \n \n \n\n {\n showPagination && (\n \n {previousPage ? (\n \n \n \n {previousPage.title}\n \n \n ) : (\n
\n )}\n\n {nextPage ? (\n \n {nextPage.title}\n \n \n ) : (\n
\n )}\n \n )\n }\n
\n\n {\n (tocItems.length > 0 || callout) && (\n \n )\n }\n\n\n\n", + "content": "---\nimport ArrowLeft from \"@lucide/astro/icons/arrow-left\"\nimport ArrowRight from \"@lucide/astro/icons/arrow-right\"\nimport Check from \"@lucide/astro/icons/check\"\nimport ChevronDown from \"@lucide/astro/icons/chevron-down\"\nimport Copy from \"@lucide/astro/icons/copy\"\nimport ExternalLink from \"@lucide/astro/icons/external-link\"\nimport Claude from \"simple-icons-astro/Claude\"\nimport Cursor from \"simple-icons-astro/Cursor\"\nimport Markdown from \"simple-icons-astro/Markdown\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { buttonVariants } from \"@/components/ui/button/button-variants\"\nimport {\n Card,\n CardDescription,\n CardFooter,\n CardHeader,\n} from \"@/components/ui/card\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { SectionContainer } from \"@/components/ui/section\"\nimport {\n Toc,\n TocMenu,\n TocMenuItem,\n TocMenuLink,\n TocTitle,\n} from \"@/components/ui/toc\"\nimport {\n Typography,\n TypographyH1,\n TypographyLead,\n} from \"@/components/ui/typography\"\n\ntype Props = {\n class?: string\n title: string\n description?: string\n copyButton?: {\n id: string\n source: string\n }\n markdownUrl?: string\n tocItems: {\n depth: number\n href: string\n label: string\n }[]\n callout?: {\n description: string\n button: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }\n }\n previousPage?: {\n href: string\n title: string\n }\n nextPage?: {\n href: string\n title: string\n }\n labels: {\n copyMarkdown: string\n openIn: string\n openInMarkdown: string\n openInChatGPT: string\n openInClaude: string\n openInCursor: string\n pagination: {\n previous: string\n next: string\n ariaLabel: string\n }\n toc: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n copyButton,\n markdownUrl,\n tocItems,\n callout,\n previousPage,\n nextPage,\n labels,\n} = Astro.props\nconst showCopyButton = Boolean(copyButton)\nconst showOpenButton = Boolean(markdownUrl)\nconst showPagination = Boolean(previousPage || nextPage)\nconst assistantPrompt = markdownUrl\n ? `Read ${new URL(markdownUrl, Astro.site ?? Astro.url.origin).href}, I want to ask questions about it.`\n : \"\"\nconst openLinks = markdownUrl\n ? [\n {\n label: labels.openInMarkdown,\n href: markdownUrl,\n icon: \"markdown\",\n },\n {\n label: labels.openInChatGPT,\n href: `https://chatgpt.com/?hints=search&q=${encodeURIComponent(assistantPrompt)}`,\n icon: \"chatgpt\",\n },\n {\n label: labels.openInClaude,\n href: `https://claude.ai/new?q=${encodeURIComponent(assistantPrompt)}`,\n icon: \"claude\",\n },\n {\n label: labels.openInCursor,\n href: `https://cursor.com/link/prompt?text=${encodeURIComponent(assistantPrompt)}`,\n icon: \"cursor\",\n },\n ]\n : []\n---\n\n\n
\n \n
\n \n {title}\n \n {\n description && (\n \n {description}\n \n )\n }\n
\n
\n {\n showCopyButton && (\n \n \n
\n \n\n \n \n \n\n {\n showPagination && (\n \n {previousPage ? (\n \n \n \n {previousPage.title}\n \n \n ) : (\n
\n )}\n\n {nextPage ? (\n \n {nextPage.title}\n \n \n ) : (\n
\n )}\n \n )\n }\n
\n\n {\n (tocItems.length > 0 || callout) && (\n \n )\n }\n\n\n\n\n\n", "type": "registry:block" } ], diff --git a/public/r/drawer.json b/public/r/drawer.json new file mode 100644 index 000000000..192ba35f7 --- /dev/null +++ b/public/r/drawer.json @@ -0,0 +1,109 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "drawer", + "title": "Drawer", + "description": "A swipeable panel that opens from an edge of the screen.", + "dependencies": [ + "@data-slot/drawer@^1.0.2" + ], + "registryDependencies": [ + "@fulldev/button" + ], + "files": [ + { + "path": "src/components/ui/drawer/drawer-close.astro", + "content": "---\nimport type { ComponentProps } from \"astro/types\"\n\nimport { Button } from \"@/components/ui/button\"\n\ntype Props = ComponentProps\n\nconst { ...props } = Astro.props\n---\n\n\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/drawer/drawer-content.astro", + "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 & {\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\n {showOverlay && }\n \n \n {showSwipeHandle && }\n \n \n
\n \n \n\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/drawer/drawer-description.astro", + "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\n \n

\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/drawer/drawer-footer.astro", + "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\n \n
\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/drawer/drawer-header.astro", + "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\n \n
\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/drawer/drawer-indent-background.astro", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n
\n \n
\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/drawer/drawer-indent.astro", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n
\n \n
\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/drawer/drawer-overlay.astro", + "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
\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/drawer/drawer-popup.astro", + "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