هویت بصری

کامپوننت‌ها

کامپوننت‌های مشترک آریوسنس؛ اجزای آماده‌ای که در تمام صفحه‌ها به یک شکل رفتار می‌کنند. هر کامپوننت یک بار ساخته می‌شود تا رنگ، اندازه و حرکتش همه‌جا یکسان بماند و تجربه‌ی کاربر در طول مسیر نشکند.

دکمه رول — RollButton

دکمه‌ی اصلی اقدام در آریوسنس. با هاور، برچسب دکمه به سمت بالا می‌چرخد و وجه دوم از پایین جای آن را می‌گیرد؛ هر دو وجه در یک خانه قرار دارند تا عرض دکمه وسط حرکت تغییر نکند.

وجه دوم جایی است که این حرکت معنا پیدا می‌کند: یک آیکن یا برچسب کامل‌تر بگذارید. اگر همان متن اول تکرار شود، حرکت به‌جای «آشکار شدن»، شبیه یک پرش بی‌دلیل خوانده می‌شود.

دانلودنشانگر را روی دکمه ببرید

حالت‌های رنگی

نارنجی فقط برای اقدام اصلی هر صفحه است. در یک نما بیش از یک دکمه‌ی solid نگذارید؛ اقدام‌های کناری outline و اقدام‌های کم‌اهمیت ghost می‌گیرند.

solid — اقدام اصلی
outline — اقدام کناری
ghost — اقدام کم‌اهمیت

اندازه‌ها

sm برای نوارها و ردیف‌های فشرده، md پیش‌فرضِ هدر و کارت‌ها، و lg برای اقدام اصلی در هیرو و صفحه‌ی دانلود.

sm
md
lg

کد و ویژگی‌ها

import { RollButton } from "@/components/ui/roll-button";
import { TbDownload } from "react-icons/tb";

<RollButton
  href="/download"
  rollLabel={<>دانلود <TbDownload /></>}
>
  دانلود
</RollButton>
ویژگینوعتوضیح
childrenReactNodeوجه اول دکمه؛ همان چیزی که در حالت عادی دیده می‌شود.
rollLabelReactNodeوجهی که با هاور بالا می‌آید. اگر تعیین نشود، همان children تکرار می‌شود.
hrefstringاگر داده شود دکمه به‌صورت Link رندر می‌شود، در غیر این‌صورت یک button است.
tonesolid | outline | ghostپیش‌فرض solid؛ نارنجی پُر برای اقدام اصلی صفحه.
sizesm | md | lgارتفاع ۳۶، ۴۰ و ۵۲ پیکسل. پیش‌فرض md.
  • اگر کاربر «حرکت کمتر» را در سیستم‌عاملش فعال کرده باشد، چرخش حذف می‌شود و فقط تغییر رنگ می‌ماند.
  • متن دکمه با نتیجه‌اش یکی بماند: دکمه‌ی «دانلود» باید به دانلود برسد، نه به صفحه‌ای دیگر.
  • کلاس‌های چیدمان (مثل حاشیه یا نمایش در بریک‌پوینت) از طریق className داده می‌شوند؛ رنگ و اندازه از tone و size.

قالب صفحه — HeaderFooterWrapper

راه رسیدن به هدر و فوتر، به‌جای صدا زدن جداگانه‌ی آن‌ها. هر سه جزء ثابت صفحه — هدر، فوتر و دکمه‌ی بازگشت به بالا — را با هم و همیشه به یک ترتیب می‌گذارد. صفحه‌ی تازه فقط محتوای خودش را می‌نویسد.

import HeaderFooterWrapper from "@/components/HeaderFooterWrapper";

export default function Page() {
  return (
    <HeaderFooterWrapper>
      <main>...</main>
    </HeaderFooterWrapper>
  );
}