Headless UI v1.0 – Tailwind CSS

پاییز گذشته، Headless UI را معرفی کردیم، کتابخانهای از اجزای رابط کاربری کاملاً بدون سبک و کاملاً در دسترس که برای جفت شدن کامل با Tailwind CSS طراحی شدهاند.
امروز ما بسیار هیجانزده هستیم که Headless UI نسخه 1.0 را منتشر کنیم که تعداد اجزای React و Vue را بیش از دو برابر میکند.
ما چهار مؤلفه جدید به کتابخانه React و پنج مؤلفه جدید برای Vue اضافه کردهایم.
گفتگو (مدال)
رابط کاربری Headless اکنون شامل یک پیادهسازی گفتگوی قوی است که میتوانید از آن برای ایجاد دیالوگهای مدال سنتی، منوهای کشویی موبایل یا هر رابط کاربری دیگری که نیاز به تمرکز بر کل صفحه دارد استفاده کنید.
import { useState } from "react";import { Dialog } from "@headlessui/react";function MyDialog() { let [isOpen, setIsOpen] = useState(true); return ( Dialog open={isOpen} onClose={setIsOpen}> Dialog.Overlay /> Dialog.Title>Deactivate accountDialog.Title> Dialog.Description>This will permanently deactivate your accountDialog.Description> p> Are you sure you want to deactivate your account? All of your data will be permanently removed. This action cannot be undone. p> button onClick={() => setIsOpen(false)}>Deactivatebutton> button onClick={() => setIsOpen(false)}>Cancelbutton> Dialog> );}
افشای
ما یک مورد جدید اضافه کردیم Disclosure مؤلفه ای که نمایش/پنهان کردن محتوای تعبیه شده در دسترس را تسهیل می کند. این برای مواردی مانند سؤالات متداول تاشو، رابطهای «نمایش بیشتر» یا حتی منوهای همبرگر که بقیه محتوای صفحه را باز میکنند و فشار میآورند مفید است.
template> Disclosure> DisclosureButton> Is team pricing available? DisclosureButton> DisclosurePanel> Yes! You can purchase a license that you can share with your entire team. DisclosurePanel> Disclosure>template>script> import { Disclosure, DisclosureButton, DisclosurePanel } from "@headlessui/vue"; export default { components: { Disclosure, DisclosureButton, DisclosurePanel }, };script>
گروه رادیویی
اکنون یک وجود دارد RadioGroup مؤلفهای که میتوانید برای ایجاد رابطهای کاربری دکمههای رادیویی کاملاً سفارشی استفاده کنید، برای مثال زمانی که میخواهید به جای یک دایره رادیویی کوچک ساده از کارتهای فانتزی یا چیزی شبیه به آن استفاده کنید.
import { useState } from "react";import { RadioGroup } from "@headlessui/react";function MyRadioGroup() { let [plan, setPlan] = useState("startup"); return ( RadioGroup value={plan} onChange={setPlan}> RadioGroup.Label>PlanRadioGroup.Label> RadioGroup.Option value="startup"> {({ checked }) => span className={checked ? "bg-blue-200" : ""}>Startupspan>} RadioGroup.Option> RadioGroup.Option value="business"> {({ checked }) => span className={checked ? "bg-blue-200" : ""}>Businessspan>} RadioGroup.Option> RadioGroup.Option value="enterprise"> {({ checked }) => span className={checked ? "bg-blue-200" : ""}>Enterprisespan>} RadioGroup.Option> RadioGroup> );}
پاپاور
جدید Popover کامپوننت به شما امکان میدهد رابطهای کاربری کشویی سفارشی ایجاد کنید که مانند موارد معمولی محدودیت محتوایی ندارند Menu جزء خواهد بود. عالی برای پل هوایی در سایت های بازاریابی، بازشوهایی که فیلدهای فرم در آنها وجود دارد و موارد دیگر.
template> Popover class="relative"> PopoverButton>SolutionsPopoverButton> PopoverPanel class="absolute z-10"> div> a href="/analytics">Analyticsa> a href="/engagement">Engagementa> a href="/security">Securitya> a href="/integrations">Integrationsa> div> img src="/solutions.jpg" alt="" /> PopoverPanel> Popover>template>script> import { Popover, PopoverButton, PopoverPanel } from "@headlessui/vue"; export default { components: { Popover, PopoverButton, PopoverPanel }, };script>
TransitionRoot و TransitionChild (برای Vue)
UI Headless قبلاً آنجا بود Transition کامپوننت برای React، اما ما همیشه نسخه بومی را توصیه کردهایم که قبلاً با Vue برای کاربران Vue ارسال می شود. با این حال، برخی محدودیتها برای انتقال طبیعی وجود دارد، و زمانی که میخواهید انتقالهای تودرتو را که باید به صورت موازی اجرا شوند، هماهنگ کنید، اوضاع میتواند پیچیده شود.
Headless UI v1.0 React ما را به ارمغان می آورد Transition جزء به Vue نیز هست، که پورت کردن مواردی مانند دیالوگ های مدال را بسیار آسان تر می کند.
template> TransitionRoot :show="isOpen"> TransitionChild enter="transition-opacity" ease-linear duration-300" enter-from="opacity-0" enter-to="opacity-100" leave="transition-opacity" ease-linear duration-300" leave-from="opacity-100" leave-to="opacity-0" > TransitionChild> TransitionChild enter="transition" ease-in-out duration-300 transform" enter-from="-translate-x-full" enter-to="translate-x-0" leave="transition" ease-in-out duration-300 transform" leave-from="translate-x-0" leave-to="-translate-x-full" > TransitionChild> TransitionRoot>template>script>import { ref } from "vue";import { Transition, TransitionChild } from "@headlessui/vue";export default { components: { TransitionRoot: Transition, TransitionChild }, setup() { const isShowing = ref(true); return { isShowing, }; },};script>
به وبسایت مستندات جدید ما سر بزنید تا UI Headless را در پروژههای خود بگنجانید و با آن بازی کنید! دارای مجوز MIT و منبع باز است، بنابراین اگر میخواهید نگاهی به کد بیندازید یا باید مشکلی را گزارش کنید، از مخزن GitHub دیدن کنید.
می خواهید آن را امتحان کنید؟ از وب سایت Headless UI → دیدن کنید


