মূল বিষয়ে যান
মেনু
ভাষা, এখন বাংলা
EnglishGaeilge简体中文Españolहिन्दीPortuguêsবাংলাРусский日本語廣東話Tiếng Việtالعربية

rastrillo ডিজাইন সিস্টেম

ডিজাইন সিস্টেম যা কিছু দেয়, তার সংক্ষিপ্ত পরিচয়। থিম: day। ভাষা: বাংলা

UI প্রিমিটিভ

যেসব আকার কোনও কম্পোনেন্ট হতে পারে না, কারণ সেগুলি এমন একটি দেহ ঘিরে রাখে যা কেবল আহ্বানকারীই জানে: সেকশন কার্ড, ডেটা গ্রিড, ডিসক্লোজার মেনু, আর শেলগুলির নিজস্ব কাঠামো। tokens.css ক্লাস দেয়, আর অ্যাপ মার্কআপ লেখে। নিচের সবটাই ঠিক সেই নমুনা যা ui.Styleguide ফেরত দেয়, আর সেই নমুনাই ui-এর পরীক্ষাগুলি tokens.css-এর বিপরীতে ধরে রাখে।

এখানকার লিংকগুলি নিষ্ক্রিয়

লিংক নিষ্ক্রিয়, নমুনার সোর্স আলাদা করে দেওয়া আছে।

box

প্যাডিংযুক্ত বিভাগের কার্ড, আর যে শিরোনামটি তার বাইরে বসে।

কোন কার্ড কোনটি

rst-list আর rst-card-এ ইচ্ছে করেই কোনো প্যাডিং নেই: এরা সারির একটি ধারা ধরে রাখে, আর প্রতিটি সারি নিজেই নিজের প্যাডিং দেয়। এদের ভিতরে সরাসরি কোনো ফর্ম, অনুচ্ছেদ, লিঙ্কের সারি বা সারি নয় এমন কিছু রাখলে তা সীমানার গায়ে লেগে বসবে — কিনারা ছুঁয়ে থাকা লেখাই সেই লক্ষণ। যেকোনো বিষয়বস্তুর জন্য প্যাডিংযুক্ত কার্ডটি rst-box, আর তার শিরোনাম আসে আগে, সহোদর rst-box-head হিসেবে।

প্রিভিউ
<div rst-box-head><h2>Payout</h2><a rst-btn href="/payout/edit">Edit</a></div>
<section rst-box><p>Everything on a screen sits inside boxes.</p><div rst-box-foot>Last updated 2 hours ago</div></section>

dropdown

হেডারের বাড়তি মেনু আর তালিকা বারের ফিল্টারের পিছনে থাকা details/summary মেনু, সঙ্গে প্রয়োগ করা ফিল্টার একটি সরানো-যায় এমন চিপ হিসেবে।

প্রিভিউ
<details rst-dropdown name="rst-menus">
  <summary>Filter<span rst-caret aria-hidden="true"><svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg></span><span class="rst-sr-only">Filter orders: Paid</span></summary>
  <div rst-dropdown-menu>
    <a aria-current="true" href="/orders?status=paid">Paid</a>
    <details rst-menu-group name="rst-menus-price" open><summary>Price</summary><div><a href="/orders?price=free">Free</a></div></details>
  </div>
</details>
<span rst-ftok><span rst-ftok-k>Paid</span><a href="/orders" aria-label="Remove filter Paid">✕</a></span>

form-layout

যে অ্যাট্রিবিউটগুলো ফর্মকে তার ছন্দ আর সংরক্ষণের পট্টি দেয়। কোনো পার্শিয়াল এগুলো বের করে না — এরা ব্যবহারকারীর নিজের সাজানো ফিল্ডের সারিকে ঘিরে রাখে।

প্রিভিউ
<form rst-form-flow method="post" action="/settings">
  <div rst-field>
    <label rst-field-label for="name">Name</label>
    <input rst-input type="text" id="name" name="name">
  </div>
  <div rst-field>
    <label rst-field-label for="email">Email</label>
    <input rst-input type="email" id="email" name="email">
  </div>
  <div rst-field-row>
    <div class="rst-grow" rst-field>
      <label rst-field-label for="city">City</label>
      <input rst-input type="text" id="city" name="city">
    </div>
    <div rst-field>
      <label rst-field-label for="zip">ZIP</label>
      <input rst-input="short" type="text" id="zip" name="zip">
    </div>
  </div>
  <div rst-form-bar>
    <span rst-form-bar-note>Changes save immediately.</span>
    <div rst-form-actions>
      <a rst-btn href="/settings">Cancel</a>
      <button rst-btn="primary" type="submit">Save</button>
    </div>
  </div>
</form>

help

সীমানাযুক্ত একটি প্রশ্নচিহ্ন, যা সহায়তা নিবন্ধে নিয়ে যায়। এর CSS টুলটিপ কেবল সাজসজ্জা; লিঙ্কটি নিজের পূর্ণ বাক্যের লেবেল বহন করে।

প্রিভিউ
<a rst-help rst-tip href="/help/orders" target="_blank" rel="noopener" aria-label="Help: orders" data-tip="About orders"><svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><path d="M12 17h.01"/></svg></a>

list-grid

ডেটা টেবিলের আসল শব্দভান্ডার: কার্ড একবারেই তার কলাম ঠিক করে, সারিরা কেবল ঘর বেছে নেয়।

পর্দাগুলো উপর-নিচে সাজে

একটি স্ক্রিন হলো একটি কলাম: page-header, তারপর section-header + কার্ড, তারপর পরের section-header + কার্ড, পড়ার ক্রমে। আনুভূমিক বিন্যাস কেবল সেই প্রকরণগুলোর জন্য যেগুলো তা নিয়েই আসে: rst-box-head, rst-field-row, rst-lbar, rst-lrow ঘর, rst-seg-tabs।

প্রিভিউ
<div rst-card style="--rst-cols: 2fr 110px 32px">
  <div rst-lrow="head"><span>Order</span><span class="rst-m-hide">Status</span><span></span></div>
  <div rst-lrow>
    <a class="rst-nm" href="/orders/AB3PX"><bdi>Grace Hopper</bdi><small>AB3PX · <bdi>grace@example.com</bdi></small></a>
    <span class="rst-m-hide rst-cell-mut">Paid</span>
    <details rst-row-menu name="rst-menus"><summary aria-label="Actions for order AB3PX"><svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="1"/><circle cx="12" cy="5" r="1"/><circle cx="12" cy="19" r="1"/></svg></summary>
      <div rst-row-menu-panel><a href="/orders/AB3PX">View</a><hr><button type="submit" class="rst-danger">Refund order…</button></div>
    </details>
  </div>
  <p rst-no-match>No orders match. <a href="/orders">Clear filters</a></p>
</div>
<p rst-count-line>Displaying <strong>1–20</strong> of <strong>412</strong></p>

modal

মোডালের নিজস্ব একটি URL থাকে, এটি ক্লায়েন্টের অবস্থা নয়: নিচের পাতাটি inert চিহ্নিত, তার উপরে প্যানেল, আর বন্ধ করার জন্য একটি সাধারণ লিঙ্ক।

প্রিভিউ
<div rst-backdrop inert>
  <div rst-page><h1>Settings</h1></div>
</div>
<div rst-modal-overlay>
  <dialog rst-modal-panel open aria-labelledby="modal-title">
    <nav>
      <a href="/settings/profile" aria-current="page">Profile</a>
      <a href="/settings/billing">Billing</a>
      <a href="/settings/notifications">Notifications</a>
    </nav>
    <section>
      <a rst-modal-close href="/settings" aria-label="Close settings">✕</a>
      <h2 id="modal-title">Profile</h2>
      <p>Update the name and photo shown across the account.</p>
    </section>
  </dialog>
</div>

যে URL-এ এর থাকার কথা, সেখানেই একে চলতে দেখুন (নতুন ট্যাবে খোলে).

selbox

নির্বাচন মোডে তালিকার সারি যে চেকবক্সটি পরে। এর লেবেল সারিটির পরিচয় আবার বলে দেয়।

প্রিভিউ
<label rst-selbox><input type="checkbox" aria-label="Select order AB3PX"></label>

shell-sidebar

sidebar শেলের নিজস্ব কাঠামো, যা 800px-এর নিচে গুটিয়ে details ডিসক্লোজারে পরিণত হয়।

প্রিভিউ
<div rst-shell-sidebar>
  <a rst-skip href="#main">Skip to content</a>
  <details rst-shell-chrome><summary><svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 12h16"/><path d="M4 6h16"/><path d="M4 18h16"/></svg>Menu</summary></details>
  <aside rst-shell-rail><a rst-shell-brand href="/">Notes</a>
    <nav rst-shell-nav><span rst-shell-group>Work</span><a href="/" aria-current="page">Dashboard</a><a href="/reports">Reports</a></nav>
  </aside>
  <main rst-shell-main id="main"><div rst-page>Content.</div></main>
</div>

সাইডবার শেলের ডেমো খুলুন, একটি আলাদা প্রিভিউ। (নতুন ট্যাবে খোলে).

shell-topbar

টপবার শেলের নিজস্ব কাঠামো, মার্কআপ হিসেবে। Layout এটিকে একটি পূর্ণ টেমপ্লেট হিসেবে দেয়।

প্রিভিউ
<div rst-shell-topbar>
  <a rst-skip href="#main">Skip to content</a>
  <header rst-shell-bar><a rst-shell-brand href="/">Notes</a>
    <details rst-shell-menu name="rst-shell-menu"><summary><svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 12h16"/><path d="M4 6h16"/><path d="M4 18h16"/></svg>Menu</summary></details>
    <div rst-shell-tail>
    <nav rst-shell-nav><a href="/" aria-current="page">Home</a><a href="/archive">Archive</a></nav>
    <details rst-dropdown rst-shell-account name="rst-menus"><summary>Account<span rst-caret aria-hidden="true"><svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg></span></summary>
      <div rst-dropdown-menu><a href="/settings">Settings</a></div></details>
    </div>
  </header>
  <main rst-page id="main">Content.</main>
  <footer rst-shell-foot>Made with rastrillo</footer>
</div>

টপবার শেলের ডেমো খুলুন, এর নিজস্ব একটি প্রিভিউ। (নতুন ট্যাবে খোলে).

stat-band

ড্যাশবোর্ডের উপরে পরিসংখ্যানের একটি সারি।

প্রিভিউ
<div rst-stats>
  <div rst-stat="lead"><span rst-stat-label>Revenue this month</span><span rst-stat-num>&euro;48,210</span><span rst-stat-delta rst-tone="positive">+12%</span><span rst-stat-note>vs. last month</span></div>
  <div rst-stat><span rst-stat-label>Orders today</span><span rst-stat-num>318</span></div>
  <div rst-stat><span rst-stat-label>Average basket</span><span rst-stat-num>&euro;41.20</span><span rst-stat-delta rst-tone="negative">&minus;3%</span></div>
  <div rst-stat><span rst-stat-label>Refunds</span><span rst-stat-num>7</span></div>
</div>

tblock

সীমানাযুক্ত একটি কার্ড, যার ভিতরের অংশ :has() দিয়ে কেবল সুইচ চালু থাকলেই দেখা যায়। সুইচই আসল অবস্থা; দেখানোটা কেবল সুবিধা।

প্রিভিউ
<div rst-tblock>
  <label rst-tblock-head><input type="checkbox" name="notify" checked>
    <span rst-switch-track aria-hidden="true"></span>
    <span><span rst-tblock-title>Email notifications</span><span rst-tblock-desc>Sent for every reply to a thread you're in.</span></span>
  </label>
  <div rst-tblock-body>
    <div rst-field>
      <label rst-field-label for="notify-freq">Frequency</label>
      <input rst-input type="text" id="notify-freq" name="notify_freq" value="Daily digest">
    </div>
  </div>
</div>