Home / File/ input-group-button.tsx — ui Source File

input-group-button.tsx — ui Source File

Architecture documentation for input-group-button.tsx, a tsx file in the ui codebase. 6 imports, 1 dependents.

File tsx Internationalization Dictionary 6 imports 1 dependents 1 functions

Entity Profile

Dependency Diagram

graph LR
  2b11067e_2247_7775_9a4a_87a2ae75b8b6["input-group-button.tsx"]
  1d141819_425e_b5fd_4c8e_32f7c6a42cf2["react"]
  2b11067e_2247_7775_9a4a_87a2ae75b8b6 --> 1d141819_425e_b5fd_4c8e_32f7c6a42cf2
  5a7da2d0_5f0c_be7c_cec3_d1c492aa50f7["input-group"]
  2b11067e_2247_7775_9a4a_87a2ae75b8b6 --> 5a7da2d0_5f0c_be7c_cec3_d1c492aa50f7
  7ef314f6_7093_dcb4_c528_ee12b9a57e00["label"]
  2b11067e_2247_7775_9a4a_87a2ae75b8b6 --> 7ef314f6_7093_dcb4_c528_ee12b9a57e00
  4e2008eb_827c_ac2f_bc4f_01dc295f094e["popover"]
  2b11067e_2247_7775_9a4a_87a2ae75b8b6 --> 4e2008eb_827c_ac2f_bc4f_01dc295f094e
  39a0d62e_8e7d_d097_eb95_91d2bca361f7["icons-react"]
  2b11067e_2247_7775_9a4a_87a2ae75b8b6 --> 39a0d62e_8e7d_d097_eb95_91d2bca361f7
  2c1404ab_bf28_6225_f9a0_b9e29400c66c["language-selector"]
  2b11067e_2247_7775_9a4a_87a2ae75b8b6 --> 2c1404ab_bf28_6225_f9a0_b9e29400c66c
  a20493d4_39f4_bced_97b9_027078a02a91["index.tsx"]
  a20493d4_39f4_bced_97b9_027078a02a91 --> 2b11067e_2247_7775_9a4a_87a2ae75b8b6
  style 2b11067e_2247_7775_9a4a_87a2ae75b8b6 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"use client"

import * as React from "react"
import {
  InputGroup,
  InputGroupAddon,
  InputGroupButton,
  InputGroupInput,
} from "@/examples/base/ui-rtl/input-group"
import { Label } from "@/examples/base/ui-rtl/label"
import {
  Popover,
  PopoverContent,
  PopoverTrigger,
} from "@/examples/base/ui-rtl/popover"
import { IconInfoCircle, IconStar } from "@tabler/icons-react"

import { useLanguageContext } from "@/components/language-selector"

const translations = {
  ar: {
    dir: "rtl" as const,
    inputLabel: "السعر",
    info: "معلومات",
    priceInfo: "أدخل السعر بالريال السعودي.",
    priceDescription: "سيتم تحويل السعر تلقائياً.",
    favorite: "مفضل",
    currency: "ر.س",
  },
  he: {
    dir: "rtl" as const,
    inputLabel: "מחיר",
    info: "מידע",
    priceInfo: "הזן את המחיר בשקלים.",
    priceDescription: "המחיר יומר אוטומטית.",
    favorite: "מועדף",
    currency: "₪",
  },
}

export function InputGroupButtonExample() {
  const context = useLanguageContext()
  const lang = context?.language === "he" ? "he" : "ar"
  const t = translations[lang]
  const [isFavorite, setIsFavorite] = React.useState(false)

  return (
    <div dir={t.dir} className="grid w-full max-w-sm gap-6">
      <Label htmlFor="input-secure-rtl" className="sr-only">
        {t.inputLabel}
      </Label>
      <InputGroup className="[--radius:9999px]">
        <InputGroupInput id="input-secure-rtl" className="!pr-0.5" />
        <InputGroupAddon>
          <Popover>
            <PopoverTrigger
              render={
                <InputGroupButton
                  variant="secondary"
                  size="icon-xs"
                  aria-label={t.info}
                />
              }
            >
              <IconInfoCircle />
            </PopoverTrigger>
            <PopoverContent
              align="end"
              alignOffset={10}
              className="flex flex-col gap-1 rounded-xl text-sm"
              data-lang={lang}
              dir={t.dir}
            >
              <p className="font-medium">{t.priceInfo}</p>
              <p>{t.priceDescription}</p>
            </PopoverContent>
          </Popover>
        </InputGroupAddon>
        <InputGroupAddon className="text-muted-foreground">
          {t.currency}
        </InputGroupAddon>
        <InputGroupAddon align="inline-end">
          <InputGroupButton
            onClick={() => setIsFavorite(!isFavorite)}
            size="icon-xs"
            aria-label={t.favorite}
          >
            <IconStar
              data-favorite={isFavorite}
              className="data-[favorite=true]:fill-primary data-[favorite=true]:stroke-primary"
            />
          </InputGroupButton>
        </InputGroupAddon>
      </InputGroup>
    </div>
  )
}

Subdomains

Dependencies

  • icons-react
  • input-group
  • label
  • language-selector
  • popover
  • react

Frequently Asked Questions

What does input-group-button.tsx do?
input-group-button.tsx is a source file in the ui codebase, written in tsx. It belongs to the Internationalization domain, Dictionary subdomain.
What functions are defined in input-group-button.tsx?
input-group-button.tsx defines 1 function(s): InputGroupButtonExample.
What does input-group-button.tsx depend on?
input-group-button.tsx imports 6 module(s): icons-react, input-group, label, language-selector, popover, react.
What files import input-group-button.tsx?
input-group-button.tsx is imported by 1 file(s): index.tsx.
Where is input-group-button.tsx in the architecture?
input-group-button.tsx is located at apps/v4/app/(app)/examples/rtl/components/input-group-button.tsx (domain: Internationalization, subdomain: Dictionary, directory: apps/v4/app/(app)/examples/rtl/components).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free