Components & Composables

Complete catalog of UI components and composables

Components & Composables

UI Components

Reusable UI primitives in components/ui/:

AppButton

Versatile button/link component with variants and sizes.

<!-- Primary (green) button -->
<AppButton @click="handleClick">Get Started</AppButton>

<!-- Ghost variant link -->
<AppButton href="/auth/login" variant="ghost" size="sm">Sign In</AppButton>

<!-- Outline variant -->
<AppButton variant="outline" size="lg">Learn More</AppButton>
PropTypeDefaultOptions
variantStringprimaryprimary, secondary, ghost, outline
sizeStringmdsm, md, lg
hrefStringRenders as <NuxtLink> if provided
disabledBooleanfalseDisables the button

AppInput

Text input with label, error message, and required indicator.

<AppInput
  v-model="email"
  label="Email"
  type="email"
  :error="emailError"
  required
/>

AppBadge

Small badge for status labels and tags.

GO-MVP logo in three sizes (sm, md, lg).

Auth Components

Components in components/auth/:

ComponentPurpose
LoginFormEmail/password login with social login
RegisterFormRegistration form with validation
ForgotPasswordFormEmail input for password reset
ResetPasswordFormNew password form with token validation
SocialLoginButtonFirebase Google OAuth button

Landing Components

Components in components/landing/:

ComponentPurpose
HeroSectionMain value proposition
ProblemSectionProblems GO-MVP solves
ApproachSectionThe GO-MVP approach
FeaturesSectionCore features grid
AiSectionAI-assisted development highlight
StackSectionTech stack overview
UseCasesSectionSaaS, marketplace, internal tools
PricingSectionDynamic pricing from Stripe
FaqSectionInteractive FAQ accordion
CtaSectionFinal call-to-action

Profile Components

Components in components/profile/:

ComponentPurpose
UserProfileCardUser info (name, email, verification)
SubscriptionCardSubscription plan and status
ChangePasswordFormPassword change form

Composables

All composables in composables/:

useApi

Generic API client with automatic token injection and 401 retry.

const api = useApi()
const data = await api('/api/v1/user/profile', { method: 'GET' })

Automatically adds Authorization: Bearer <token> header. On 401, attempts a single token refresh and retries.

useAuth

Authentication flows: register, login, socialLogin, logout, forgotPassword, resetPassword, refreshToken.

useCheckout

Stripe Checkout session creation. Returns isProcessing and error refs.

usePlans

Fetches pricing plans from the backend. Returns plans, oneTimePlans, isLoading, error.

useProfile

User profile fetching and password changes. Returns fetchProfile, changePassword, isLoading, error.

useScrollspy

Scroll position tracking for navbar background transitions. Used by TheNavbar.

useSubscription

Subscription status fetching. Returns subscription, fetchSubscription, isLoading, error. Handles 404 gracefully for users without subscriptions.