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

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

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

File tsx Internationalization Dictionary 7 imports 1 dependents 1 functions

Entity Profile

Dependency Diagram

graph LR
  eaab3f2c_aa35_2a4c_12ab_b6a1cc24ec11["button-group-input-group.tsx"]
  1d141819_425e_b5fd_4c8e_32f7c6a42cf2["react"]
  eaab3f2c_aa35_2a4c_12ab_b6a1cc24ec11 --> 1d141819_425e_b5fd_4c8e_32f7c6a42cf2
  43bb9fc1_6eab_13df_a99b_981eb13b9ec1["button"]
  eaab3f2c_aa35_2a4c_12ab_b6a1cc24ec11 --> 43bb9fc1_6eab_13df_a99b_981eb13b9ec1
  fd230760_a26a_f030_5144_d7a206420114["button-group"]
  eaab3f2c_aa35_2a4c_12ab_b6a1cc24ec11 --> fd230760_a26a_f030_5144_d7a206420114
  5a7da2d0_5f0c_be7c_cec3_d1c492aa50f7["input-group"]
  eaab3f2c_aa35_2a4c_12ab_b6a1cc24ec11 --> 5a7da2d0_5f0c_be7c_cec3_d1c492aa50f7
  6544c2c5_b5c4_9182_1e6a_d512018c1eb1["tooltip"]
  eaab3f2c_aa35_2a4c_12ab_b6a1cc24ec11 --> 6544c2c5_b5c4_9182_1e6a_d512018c1eb1
  d39cd1e4_1b2d_9aa2_1d29_fd0b4bfb61c3["lucide-react"]
  eaab3f2c_aa35_2a4c_12ab_b6a1cc24ec11 --> d39cd1e4_1b2d_9aa2_1d29_fd0b4bfb61c3
  2c1404ab_bf28_6225_f9a0_b9e29400c66c["language-selector"]
  eaab3f2c_aa35_2a4c_12ab_b6a1cc24ec11 --> 2c1404ab_bf28_6225_f9a0_b9e29400c66c
  a20493d4_39f4_bced_97b9_027078a02a91["index.tsx"]
  a20493d4_39f4_bced_97b9_027078a02a91 --> eaab3f2c_aa35_2a4c_12ab_b6a1cc24ec11
  style eaab3f2c_aa35_2a4c_12ab_b6a1cc24ec11 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"use client"

import * as React from "react"
import { Button } from "@/examples/base/ui-rtl/button"
import { ButtonGroup } from "@/examples/base/ui-rtl/button-group"
import {
  InputGroup,
  InputGroupAddon,
  InputGroupButton,
  InputGroupInput,
} from "@/examples/base/ui-rtl/input-group"
import {
  Tooltip,
  TooltipContent,
  TooltipTrigger,
} from "@/examples/base/ui-rtl/tooltip"
import { AudioLinesIcon, PlusIcon } from "lucide-react"

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

const translations = {
  ar: {
    dir: "rtl" as const,
    add: "إضافة",
    voicePlaceholder: "سجل وأرسل صوتًا...",
    messagePlaceholder: "أرسل رسالة...",
    voiceMode: "الوضع الصوتي",
  },
  he: {
    dir: "rtl" as const,
    add: "הוסף",
    voicePlaceholder: "הקלט ושלח אודיו...",
    messagePlaceholder: "שלח הודעה...",
    voiceMode: "מצב קולי",
  },
}

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

  return (
    <ButtonGroup dir={t.dir}>
      <ButtonGroup>
        <Button variant="outline" size="icon" aria-label={t.add}>
          <PlusIcon />
        </Button>
      </ButtonGroup>
      <ButtonGroup className="flex-1">
        <InputGroup>
          <InputGroupInput
            placeholder={
              voiceEnabled ? t.voicePlaceholder : t.messagePlaceholder
            }
            disabled={voiceEnabled}
          />
          <InputGroupAddon align="inline-end">
            <Tooltip>
              <TooltipTrigger
                render={
                  <InputGroupButton
                    onClick={() => setVoiceEnabled(!voiceEnabled)}
                    data-active={voiceEnabled}
                    className="data-[active=true]:bg-primary data-[active=true]:text-primary-foreground"
                    aria-pressed={voiceEnabled}
                    size="icon-xs"
                    aria-label={t.voiceMode}
                  />
                }
              >
                <AudioLinesIcon />
              </TooltipTrigger>
              <TooltipContent>{t.voiceMode}</TooltipContent>
            </Tooltip>
          </InputGroupAddon>
        </InputGroup>
      </ButtonGroup>
    </ButtonGroup>
  )
}

Subdomains

Dependencies

  • button
  • button-group
  • input-group
  • language-selector
  • lucide-react
  • react
  • tooltip

Frequently Asked Questions

What does button-group-input-group.tsx do?
button-group-input-group.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 button-group-input-group.tsx?
button-group-input-group.tsx defines 1 function(s): ButtonGroupInputGroup.
What does button-group-input-group.tsx depend on?
button-group-input-group.tsx imports 7 module(s): button, button-group, input-group, language-selector, lucide-react, react, tooltip.
What files import button-group-input-group.tsx?
button-group-input-group.tsx is imported by 1 file(s): index.tsx.
Where is button-group-input-group.tsx in the architecture?
button-group-input-group.tsx is located at apps/v4/app/(app)/examples/rtl/components/button-group-input-group.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