Button
Basic
// Package button holds the site's example gsx components for ui/button.
package button
import "github.com/gsxhq/gsxui/ui"
// Basic renders the default Button.
component Basic() {
<ui.Button>Button</ui.Button>
}
Variants
package button
import "github.com/gsxhq/gsxui/ui"
// Variants renders every Button variant side by side.
component Variants() {
<div class="flex flex-wrap items-center gap-3">
<ui.Button>Default</ui.Button>
<ui.Button variant="secondary">Secondary</ui.Button>
<ui.Button variant="destructive">Destructive</ui.Button>
<ui.Button variant="outline">Outline</ui.Button>
<ui.Button variant="ghost">Ghost</ui.Button>
<ui.Button variant="link">Link</ui.Button>
<ui.Button size="lg">Large</ui.Button>
<ui.Button size="icon-sm" aria-label="Small icon"><span>+</span></ui.Button>
<ui.Button size="icon-lg" aria-label="Large icon"><span>+</span></ui.Button>
<ui.Button aria-invalid="true">Invalid</ui.Button>
</div>
}
RTL
package button
import (
"github.com/gsxhq/gsxui/ui"
uiicon "github.com/gsxhq/gsxui/ui/icon"
)
// Rtl mirrors shadcn's own button-rtl demo: outline, destructive, an
// outline button with a trailing arrow that flips via rtl:rotate-180, an
// icon-only button, and a disabled secondary button with a loading
// spinner — translated to Arabic, wrapped in dir="rtl".
component Rtl() {
<div dir="rtl" lang="ar" class="flex flex-wrap items-center gap-2">
<ui.Button variant="outline">زر</ui.Button>
<ui.Button variant="destructive">حذف</ui.Button>
<ui.Button variant="outline">
إرسال
<uiicon.ArrowRight class="rtl:rotate-180"/>
</ui.Button>
<ui.Button variant="outline" size="icon" aria-label="Add">
<uiicon.Plus/>
</ui.Button>
<ui.Button variant="secondary" disabled>
<ui.Spinner/>
جاري التحميل
</ui.Button>
</div>
}