Radio
Basic
// Package radio holds the site's example gsx components for ui/radio.
package radio
import (
"github.com/gsxhq/gsxui/ui"
)
// Basic groups three Radio inputs by a shared name — native radio grouping,
// no wrapper component needed.
component Basic() {
<div class="flex flex-col gap-2">
<div class="flex items-center gap-2">
<ui.Radio id="radio-basic-card" name="radio-basic-plan" checked/>
<ui.Label for="radio-basic-card">Card</ui.Label>
</div>
<div class="flex items-center gap-2">
<ui.Radio id="radio-basic-paypal" name="radio-basic-plan"/>
<ui.Label for="radio-basic-paypal">PayPal</ui.Label>
</div>
</div>
}
States
package radio
import (
"github.com/gsxhq/gsxui/ui"
)
// States adds a disabled option to the group — disabled is a bare boolean
// attribute forwarded through Radio's { attrs... } spread.
component States() {
<div class="flex flex-col gap-2">
<div class="flex items-center gap-2">
<ui.Radio id="radio-states-monthly" name="radio-states-billing" checked/>
<ui.Label for="radio-states-monthly">Monthly</ui.Label>
</div>
<div class="flex items-center gap-2">
<ui.Radio id="radio-states-yearly" name="radio-states-billing" aria-invalid="true"/>
<ui.Label for="radio-states-yearly">Yearly</ui.Label>
</div>
<div class="flex items-center gap-2">
<ui.Radio id="radio-states-lifetime" name="radio-states-billing" disabled/>
<ui.Label for="radio-states-lifetime">Lifetime (unavailable)</ui.Label>
</div>
</div>
}
RTL
تباعد قياسي لمعظم حالات الاستخدام.
مساحة أكبر بين العناصر.
تباعد أدنى للتخطيطات الكثيفة.
// Package radio holds the site's example gsx components for ui/radio.
package radio
import (
"github.com/gsxhq/gsxui/ui"
)
// Rtl mirrors shadcn's own radio-group-rtl demo: three Field rows (default,
// comfortable — checked, compact), each pairing a Radio with a
// FieldLabel/FieldDescription via FieldContent, translated to Arabic and
// wrapped in dir="rtl".
component Rtl() {
<ui.FieldGroup dir="rtl" lang="ar" class="w-fit">
<ui.Field orientation="horizontal">
<ui.Radio id="radio-rtl-default" name="radio-rtl-spacing"/>
<ui.FieldContent>
<ui.FieldLabel for="radio-rtl-default">افتراضي</ui.FieldLabel>
<ui.FieldDescription>تباعد قياسي لمعظم حالات الاستخدام.</ui.FieldDescription>
</ui.FieldContent>
</ui.Field>
<ui.Field orientation="horizontal">
<ui.Radio id="radio-rtl-comfortable" name="radio-rtl-spacing" checked/>
<ui.FieldContent>
<ui.FieldLabel for="radio-rtl-comfortable">مريح</ui.FieldLabel>
<ui.FieldDescription>مساحة أكبر بين العناصر.</ui.FieldDescription>
</ui.FieldContent>
</ui.Field>
<ui.Field orientation="horizontal">
<ui.Radio id="radio-rtl-compact" name="radio-rtl-spacing"/>
<ui.FieldContent>
<ui.FieldLabel for="radio-rtl-compact">مضغوط</ui.FieldLabel>
<ui.FieldDescription>تباعد أدنى للتخطيطات الكثيفة.</ui.FieldDescription>
</ui.FieldContent>
</ui.Field>
</ui.FieldGroup>
}