ഉള്ളടക്കത്തിലേക്ക് പോകുക
ബീറ്റ · പരീക്ഷണാത്മകംReact 19പിയർ ഡിപൻഡൻസികളില്ല

കാർഡ്

ബന്ധപ്പെട്ട ഉള്ളടക്കം ഗ്രൂപ്പ് ചെയ്യുന്ന ഒരു സർഫേസ്, ഹെഡർ, ബോഡി, ഫൂട്ടർ എന്നിവയോടെ, കൂടാതെ ഒരൊറ്റ കണക്കും അതിന്റെ ട്രെൻഡും കാണിക്കാൻ Stat.

ബീറ്റ കമ്പോണന്റുകൾ മാറാൻ സാധ്യതയുണ്ട്; അവ നിങ്ങളുടെ കോഡ് തകരാറിലാക്കിയേക്കാം. സ്വന്തം ഉത്തരവാദിത്തത്തിൽ ഉപയോഗിക്കുക, ബഗ് ട്രാക്കർ വഴി അഭിപ്രായം അറിയിക്കുക.

ഈ പേജിൽ

ഇൻസ്റ്റലേഷൻ

npx gbs-add-block@latest -a Card -beta

എല്ലാ കമ്പോണന്റുകളും ഇംപോർട്ട് ചെയ്യുന്ന ചെറിയ shared ഫോൾഡറിനൊപ്പം, card ഫോൾഡർ ഈ ബ്ലോക്ക് നിങ്ങളുടെ പ്രോജക്ടിലേക്ക് കോപ്പി ചെയ്യുന്നു. കോഡ് നിങ്ങളുടേതാണ്, സ്വതന്ത്രമായി മാറ്റം വരുത്താം. React അല്ലാതെ peer dependencies ഒന്നും ഇല്ല.

ആവശ്യകതകൾ

  • React 19-ഉം @types/react 19-ഉം
  • TypeScript ടാർഗെറ്റ് ES2022 അല്ലെങ്കിൽ അതിനു ശേഷമുള്ളത്, "jsx": "react-jsx" എന്നതോടെ
  • 2024-നു ശേഷമുള്ള ബ്രൗസറുകൾ (സ്റ്റൈലുകൾ light-dark(), color-mix() ഉപയോഗിക്കുന്നു)

സ്റ്റൈൽഷീറ്റ് ഒരു തവണ ഇംപോർട്ട് ചെയ്യുക, ഉദാഹരണത്തിന് നിങ്ങളുടെ ഗ്ലോബൽ CSS-ൽ:

css
@import "../components/card/styles.css";

അല്ലെങ്കിൽ നിങ്ങളുടെ റൂട്ട് ലേഔട്ട് / എൻട്രി ഫയലിൽ:

ts
import "@/components/card/styles.css";

പരസ്പരം ബന്ധപ്പെട്ടവയെ ഒരു കാർഡ് ഗ്രൂപ്പ് ചെയ്യുകയും അവയ്ക്ക് ഒരു എഡ്ജ് നൽകുകയും ചെയ്യുന്നു. ഡാഷ്ബോർഡിന്റെ മറുപകുതിയാണ് Stat: ഒരു കണക്ക്, അതിന്റെ ലേബൽ, അത് എങ്ങനെ മാറിയിരിക്കുന്നു എന്നത്.

എല്ലാ കമ്പോണന്റുകളും ഒരുമിച്ച് തീം ചെയ്യാൻ :root-ൽ --gbs-* വേരിയബിളുകൾ സെറ്റ് ചെയ്യുക, ഗ്രിഡ് ഉൾപ്പെടെ. ഓരോ കമ്പോണന്റിന്റെയും സ്വന്തം വേരിയബിളുകൾ ഇവയിലേക്കും, പിന്നീട് ബിൽറ്റ്-ഇൻ പാലറ്റിലേക്കും ഫാൾബാക്ക് ചെയ്യുന്നു, അതിനാൽ ഡിഫോൾട്ടായി കമ്പോണന്റുകൾ ഒരേ പോലെ കാണപ്പെടുന്നു.

ഡിഫോൾട്ട്

Live preview

ക്വിക്ക് സ്റ്റാർട്ട്

tsx
import {
  Card,
  CardHeader,
  CardBody,
  CardFooter,
  Stat,
  trendDirection,
} from "@/components/card";
import "@/components/card/styles.css";
 
<Card>
  <CardHeader
    title={<h3>Revenue</h3>}
    description="Billed this month"
    actions={
      <Menu
        trigger={
          <Button variant="ghost" size="sm">
            Options
          </Button>
        }
      >

      </Menu>
    }
  />
  <CardBody>
    <Stat
      label="This month"
      value="£48,120"
      trend={{
        direction: trendDirection(12.4),
        label: "12.4%",
        description: "vs last month",
      }}
    />
  </CardBody>
  <CardFooter>
    <Button variant="ghost" size="sm">
      View invoices
    </Button>
  </CardFooter>
</Card>;

പ്രോപ്സ് ടേബിൾ

Card

PropTypeDefaultDescription
variant"outlined" | "elevated" | "plain"outlinedഎഡ്ജ് എങ്ങനെ വരയ്ക്കുന്നു.
padding"none" | "sm" | "md" | "lg"mdഹെഡർ, ബോഡി, ഫൂട്ടർ എന്നിവയ്ക്ക് ബാധകം.
href, target, relstringമുഴുവൻ കാർഡിനെയും ഒരു ലിങ്കാക്കുന്നു.
interactivebooleanfalseമറ്റൊരു വിധത്തിൽ ക്ലിക്ക് ചെയ്യാവുന്ന ഒരു കാർഡിനുള്ള ഹോവർ, ഫോക്കസ് സ്റ്റൈലുകൾ.
className, classNames, styleസ്ലോട്ടുകൾ: root, header, title, description, actions, body, footer.
refRef<HTMLElement>റൂട്ട് എലമെന്റ്.

CardHeader-ന് title, description, actions, ചിൽഡ്രൻ എന്നിവ ലഭിക്കുന്നു. CardBody-ക്കും CardFooter-നും ചിൽഡ്രനും ഒരു className-ഉം ലഭിക്കുന്നു.

Stat

PropTypeDescription
labelReactNodeകണക്ക് എന്താണെന്ന്. എപ്പോഴും കാണിക്കുന്നു.
valueReactNodeഇതിനകം ഫോർമാറ്റ് ചെയ്ത കണക്ക്.
trend{ direction, label, invert?, description? }അത് എങ്ങനെ മാറിയിരിക്കുന്നു.
helpReactNodeകണക്കിനു താഴെയുള്ള ഒരു കുറിപ്പ്.
iconReactNodeലേബലിനടുത്ത് വരച്ചത്.
loadingboolean"Loading" എന്ന് അറിയിക്കപ്പെടുന്ന പ്ലേസ്‌ഹോൾഡർ ബാറുകൾ.
className, classNames, styleസ്ലോട്ടുകൾ: root, label, value, trend, help, icon.

ഹെഡിംഗുകൾ പേജിന്റേതാണ്

നിങ്ങൾക്കായി ഒരു ഹെഡിംഗ് ലെവൽ തിരഞ്ഞെടുക്കുന്നതിനു പകരം, നിങ്ങൾ എന്ത് നൽകുന്നോ അത് title ആയി CardHeader സ്വീകരിക്കുന്നു:

tsx
<CardHeader title={<h3>Revenue</h3>} />

ഒരു കാർഡ് ഒരു പേജിലെ പ്രധാന കാര്യമോ, ഒരു ഗ്രിഡിലെ പന്ത്രണ്ട് ടൈലുകളിൽ ഒന്നോ ആകാം, കൂടാതെ ഓരോന്നിലും ശരിയായ ലെവൽ വ്യത്യസ്തമാണ്. നിങ്ങളുടെ സ്വന്തം എലമെന്റ് കൈമാറുന്നത് ഡോക്യുമെന്റ് ഔട്ട്‌ലൈൻ നിങ്ങളുടേതായി തന്നെ നിലനിർത്തുന്നു.

നിറത്തെ ആശ്രയിക്കാതെയുള്ള ട്രെൻഡുകൾ

tsx
<Stat
  label="Churn"
  value="2.1%"
  trend={{ direction: trendDirection(0.6), label: "0.6pp", invert: true }}
/>

താഴേക്കാണ് നല്ല ഫലം എന്നുള്ള കണക്കുകൾക്കാണ് invert — ചേൺ (churn), റീഫണ്ടുകൾ, പിശക് നിരക്കുകൾ, പേജ് ഭാരം. ഇത് നിറം മാത്രമേ മാറ്റുന്നുള്ളൂ: അമ്പടയാളം ഇപ്പോഴും സംഖ്യ നീങ്ങിയ ദിശ ചൂണ്ടിക്കാണിക്കുന്നു, കാരണം അമ്പടയാളം വസ്തുത അറിയിക്കുന്നു, നിറം വിലയിരുത്തലും.

ദിശ സ്ക്രീൻ റീഡറുകൾക്കായി എഴുതിയും കാണിക്കുന്നു ("Up", "Down", "No change"), അതിനാൽ അർത്ഥം ഒരിക്കലും നിറത്തിൽ മാത്രം ആശ്രയിക്കുന്നില്ല. direction: "flat"-ന് ഒരു നിറവും ലഭിക്കുന്നില്ല.

ലിങ്കുകളായ കാർഡുകൾ

tsx
<Card href="/invoices/1043">
  <CardBody>INV-1043 · £2,400</CardBody>
</Card>

href-നൊപ്പം കാർഡ് ഒരു <a> ആയി റെൻഡർ ചെയ്യുന്നു. മറ്റ് ലിങ്കുകളും ബട്ടണുകളും അതിൽ നിന്ന് അകറ്റി നിർത്തുക: ഇന്ററാക്ടീവ് എലമെന്റുകൾ നെസ്റ്റ് ചെയ്യുന്നത് അസാധുവായ HTML ആണ്, കൂടാതെ കീബോർഡിനെ കുഴപ്പത്തിലാക്കുന്നു. ഒരു കാർഡിന് ഒരു പ്രധാന ലിങ്കും അതിന്റേതായ ബട്ടണുകളും വേണ്ടിവരുമ്പോൾ, നിങ്ങളുടെ സ്വന്തം ഹാൻഡ്‌ലറോടെ interactive ഉപയോഗിക്കുക, അല്ലെങ്കിൽ ലിങ്ക് ടൈറ്റിലിൽ വെക്കുക.

സ്റ്റൈലിംഗും തീമിംഗും

എല്ലാ റൂളുകളും CSS components ലെയറിലാണ്, അതിനാൽ className / classNames വഴി കടന്നുപോകുന്ന യൂട്ടിലിറ്റി ക്ലാസുകൾ അവയെ ഓവർറൈഡ് ചെയ്യുന്നു.

CSS വേരിയബിളുകൾ

VariableUsed for
--cd-bg, --cd-fgകാർഡ് സർഫേസും ടെക്സ്റ്റും.
--cd-mutedവിവരണങ്ങൾ, ലേബലുകൾ, ഹെൽപ്പ് ടെക്സ്റ്റ്.
--cd-borderഔട്ട്‌ലൈനും ഫൂട്ടർ റൂളും.
--cd-hoverഇന്ററാക്ടീവ് കാർഡുകൾ, കൂടാതെ Stat പ്ലേസ്‌ഹോൾഡർ ബാറുകൾ.
--cd-focusഒരു ഇന്ററാക്ടീവ് കാർഡിലെ ഫോക്കസ് റിംഗ്.
--cd-success, --cd-dangerട്രെൻഡ് നിറങ്ങൾ.
--cd-shadow, --cd-radius, --cd-font-sizeകാർഡിന്റെ ആകൃതി.
--cd-pxpadding പ്രോപ്പ് സെറ്റ് ചെയ്യുന്ന പാഡിംഗ്.

.cd-root-ലോ, :root-ലോ, അല്ലെങ്കിൽ style-ലൂടെയോ ഇവ ഓവർറൈഡ് ചെയ്യുക. ഓരോ വേരിയബിളും അതേ പേരിലുള്ള ഷെയേർഡ് --gbs-*-ലേക്ക് ഫാൾബാക്ക് ചെയ്യുന്നു, പിന്നീട് ആ സ്റ്റൈൽഷീറ്റ് ലോഡ് ചെയ്തിട്ടുണ്ടെങ്കിൽ DataGrid-ന്റെ --dg-*-ലേക്കും, അവസാനം ബിൽറ്റ്-ഇൻ പാലറ്റിലേക്കും.

ഡാറ്റ ആട്രിബ്യൂട്ടുകൾ

ElementAttributes
Root (.cd-root)data-variant, data-padding, data-interactive
Stat (.st-root)data-loading
Trend (.st-trend)data-direction, data-positive

ഹെഡ്‌ലെസ് ഉപയോഗം

core/trend.ts ഫ്രെയിംവർക്ക്-രഹിതമാണ്:

ts
import { trendDirection, isPositive, percentChange } from "@/components/card";
 
trendDirection(12.4); // "up"
trendDirection(0.4, 0.5); // "flat" — under the threshold
isPositive("down", true); // true  — down is good for churn
percentChange(200, 250); // 25
percentChange(0, 10); // null — growth from zero is not a percentage

Next.js

Card-ഉം Stat-ഉം ഇവന്റ് ഹാൻഡ്‌ലറുകളും ref-കളും സ്വീകരിക്കുന്നതിനാൽ "use client" എന്ന് അടയാളപ്പെടുത്തിയിരിക്കുന്നു. അവയെ ഒരു സെർവർ കമ്പോണന്റിൽ നിന്ന് റെൻഡർ ചെയ്യുന്നത് നിങ്ങളെ ഒന്നും തടയുന്നില്ല — ഡാറ്റ പ്രോപ്‌സായി കൈമാറുക.

കുറിപ്പുകൾ

  • എലവേഷൻ തന്ത്രങ്ങൾ ഒന്നുമില്ലാത്ത ഒരു ലളിതമായ സർഫേസ് ആണ് കാർഡ്: ഒരു ബോർഡർ, ഒരു ഓപ്ഷണൽ ഷാഡോ.
  • Stat-ന്റെ കണക്കുകൾ ടാബുലാർ അക്കങ്ങൾ (tabular numerals) ഉപയോഗിക്കുന്നു, അതിനാൽ അവയുടെ ഒരു കോളം വരിവരിയായി വരുന്നു.