"use client"; import { Button } from "@/components/ui/buttons/button"; import { CloseButton } from "@/components/ui/buttons/close-button"; import { ComboboxControl, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxRoot, } from "@/components/ui/collections/combobox"; import { ListboxContent, ListboxItem, ListboxItemText, ListboxLabel, ListboxRoot, } from "@/components/ui/collections/listbox"; import { TreeViewBranchControl, TreeViewBranchIndentGuide, TreeViewBranchText, TreeViewItem, TreeViewItemText, TreeViewLabel, TreeViewNode, TreeViewRoot, TreeViewTree, } from "@/components/ui/collections/treeview"; import { Alert } from "@/components/ui/feedback/alert"; import { EmptyState } from "@/components/ui/feedback/empty-state"; import { ProgressBar, ProgressLabel, ProgressRoot, } from "@/components/ui/feedback/progress"; import { Status } from "@/components/ui/feedback/status"; import { ProgressCircleRing, ProgressCircleRoot, ProgressCircleValueText, } from "@/components/ui/feedback/progress-circle"; import { SkeletonCircle, SkeletonText, } from "@/components/ui/feedback/skeleton"; import { Checkbox } from "@/components/ui/forms/checkbox"; import { CheckboxCard } from "@/components/ui/forms/checkbox-card"; import { ColorPickerArea, ColorPickerChannelSliders, ColorPickerContent, ColorPickerControl, ColorPickerEyeDropper, ColorPickerInput, ColorPickerLabel, ColorPickerRoot, ColorPickerSliders, ColorPickerSwatchGroup, ColorPickerSwatchTrigger, ColorPickerTrigger, ColorPickerValueText, } from "@/components/ui/forms/color-picker"; import { Field } from "@/components/ui/forms/field"; import { FileUploadClearTrigger, FileUploadDropzone, FileUploadFileText, FileUploadLabel, FileUploadList, FileUploadRoot, FileUploadTrigger, } from "@/components/ui/forms/file-upload"; import { InputGroup } from "@/components/ui/forms/input-group"; import { NativeSelectField, NativeSelectRoot, } from "@/components/ui/forms/native-select"; import { NumberInputField, NumberInputRoot, } from "@/components/ui/forms/number-input"; import { PasswordInput, PasswordStrengthMeter, } from "@/components/ui/forms/password-input"; import { PinInput } from "@/components/ui/forms/pin-input"; import { Radio, RadioGroup } from "@/components/ui/forms/radio"; import { RadioCardItem, RadioCardLabel, RadioCardRoot, } from "@/components/ui/forms/radio-card"; import { Rating } from "@/components/ui/forms/rating"; import { SegmentedControl } from "@/components/ui/forms/segmented-control"; import { Slider } from "@/components/ui/forms/slider"; import { Switch } from "@/components/ui/forms/switch"; import { ActionBarContent, ActionBarRoot, ActionBarSelectionTrigger, ActionBarSeparator, } from "@/components/ui/overlays/action-bar"; import { DialogActionTrigger, DialogBody, DialogCloseTrigger, DialogContent, DialogFooter, DialogHeader, DialogRoot, DialogTitle, DialogTrigger, } from "@/components/ui/overlays/dialog"; import { DrawerActionTrigger, DrawerBody, DrawerCloseTrigger, DrawerContent, DrawerFooter, DrawerHeader, DrawerRoot, DrawerTitle, DrawerTrigger, } from "@/components/ui/overlays/drawer"; import { HoverCardArrow, HoverCardContent, HoverCardRoot, HoverCardTrigger, } from "@/components/ui/overlays/hover-card"; import { MenuContent, MenuItem, MenuItemCommand, MenuItemText, MenuRadioItem, MenuRadioItemGroup, MenuRoot, MenuTrigger, MenuTriggerItem, } from "@/components/ui/overlays/menu"; import { PopoverBody, PopoverContent, PopoverFooter, PopoverHeader, PopoverRoot, PopoverTitle, PopoverTrigger, } from "@/components/ui/overlays/popover"; import { InfoTip } from "@/components/ui/overlays/toggle-tip"; import { Tooltip } from "@/components/ui/overlays/tooltip"; import { Blockquote, BlockquoteIcon, } from "@/components/ui/typography/blockquote"; import { accordionItems, alertStatuses, alignments, boxData, breadcrumbItems, colorPalettes, countries, fontSizes, formats, frameworks, headings, images, items, itemsTabs, justifications, marks, MAX_FILES, placements, radioCardItems, radioCardItems2, radioItems, rootNode, stats, steps, swatches, variants, } from "@/data/constants"; import { AbsoluteCenter, Badge, Box, ButtonGroup, Card, Center, Checkmark, Circle, ClientOnly, Code, Collapsible, ColorPickerFormatSelect, ColorPickerPositioner, ComboboxContent, createListCollection, createTreeCollection, DownloadTrigger, Flex, Float, For, FormatByte, FormatNumber, Grid, GridItem, Heading, Highlight, HStack, Icon, IconButton, Image, Input, Kbd, Mark, parseColor, Portal, ProgressValueText, ScrollArea, Separator, SimpleGrid, Span, Spinner, Square, Stack, StackSeparator, Strong, Table, Tabs, Text, Textarea, TreeView, useFilter, useHighlight, useListboxItemContext, useListCollection, useTreeViewContext, VStack, Wrap, } from "@chakra-ui/react"; import React from "react"; import { Fragment } from "react"; import { FaBell, FaMoon, FaReact, FaSearch, FaSun } from "react-icons/fa"; import { FaCartShopping } from "react-icons/fa6"; import { HiCheck, HiColorSwatch, HiShieldCheck, HiSortAscending, HiStar, HiUpload, HiX, } from "react-icons/hi"; import { IoHeart } from "react-icons/io5"; import { LuCheck, LuChevronRight, LuFile, LuFileUp, LuFolder, LuImageDown, LuPackage, LuPen, LuPercent, LuPhone, LuPhoneForwarded, LuPlus, LuShare, LuShip, LuSquareCheck, LuSquareMinus, LuSquarePlus, LuTrash, LuTrash2, LuUser, LuVoicemail, LuX, } from "react-icons/lu"; import { Md123, Md3dRotation, MdGraphicEq, MdMail } from "react-icons/md"; import { toaster } from "@/components/ui/feedback/toaster"; import { Avatar, AvatarGroup } from "@/components/ui/data-display/avatar"; import { ClipboardButton, ClipboardIconButton, ClipboardInput, ClipboardRoot, } from "@/components/ui/data-display/clipboard"; import { DataListItem, DataListRoot, } from "@/components/ui/data-display/data-list"; import { QrCode } from "@/components/ui/data-display/qr-code"; import { GiSnake } from "react-icons/gi"; import { StatDownTrend, StatHelpText, StatLabel, StatRoot, StatUpTrend, StatValueText, } from "@/components/ui/data-display/stat"; import { PaginationItems, PaginationNextTrigger, PaginationPageText, PaginationPrevTrigger, PaginationRoot, } from "@/components/ui/disclosure/pagination"; import { Tag } from "@/components/ui/data-display/tag"; import { TimelineConnector, TimelineContent, TimelineDescription, TimelineItem, TimelineRoot, TimelineTitle, } from "@/components/ui/data-display/timeline"; import { AccordionItem, AccordionItemContent, AccordionItemTrigger, AccordionRoot, } from "@/components/ui/disclosure/accordion"; import { BreadcrumbLink, BreadcrumbRoot, } from "@/components/ui/disclosure/breadcrumb"; import { LiaSlashSolid } from "react-icons/lia"; import { StepsCompletedContent, StepsContent, StepsItem, StepsList, StepsNextTrigger, StepsPrevTrigger, StepsRoot, } from "@/components/ui/disclosure/steps"; import { PiSmileyNervous, PiSmileyWink } from "react-icons/pi"; interface Node { id: string; name: string; children?: Node[]; childrenCount?: number; } interface TreeNodeProps extends TreeView.NodeProviderProps { onRemove?: (props: TreeView.NodeProviderProps) => void; onAdd?: (props: TreeView.NodeProviderProps) => void; } type ErrorLevel = "L" | "M" | "Q" | "H"; interface Item { id: string; title: string; content: React.ReactNode; } function HomeCard() { const contentRef = React.useRef(null); const [selectedSkills, setSelectedSkills] = React.useState([]); const [selectedImage, setSelectedImage] = React.useState("mountains"); const [checked, setChecked] = React.useState(false); const [radioItemValue, setRadioItemValue] = React.useState("asc"); const [loading, setLoading] = React.useState(true); const [errorLevel, setErrorLevel] = React.useState("L"); const chunks = useHighlight({ text: "Endless scale, powered by real humans.", query: ["Endless", "real humans."], }); const downloadData = async () => { const res = await fetch("https://picsum.photos/200/300"); return res.blob(); }; const { contains, startsWith } = useFilter({ sensitivity: "base" }); const { collection: frameworkCollection, filter: frameworkFilter } = useListCollection({ initialItems: frameworks, filter: contains, }); const { collection: countryCollection, filter: countryFilter } = useListCollection({ initialItems: countries, filter: startsWith, limit: 10, }); const listboxCollection = createListCollection({ items: frameworks }); const imagesCollection = createListCollection({ items: images }); const currentImage = imagesCollection.items.find( (img) => img.value === selectedImage ); const nodeCollection = createTreeCollection({ nodeToValue: (node) => node.id, nodeToString: (node) => node.name, rootNode: rootNode, }); const [tabs, setTabs] = React.useState(itemsTabs); const [selectedTab, setSelectedTab] = React.useState( itemsTabs[0].id ); const uuid = () => { return Math.random().toString(36).substring(2, 15); }; const addTab = () => { const newTabs = [...tabs]; const uid = uuid(); newTabs.push({ id: uid, title: `Tab`, content: `Tab Body`, }); setTabs(newTabs); setSelectedTab(newTabs[newTabs.length - 1].id); }; const removeTab = (id: string) => { if (tabs.length >= 1) { const newTabs = [...tabs].filter((tab) => tab.id !== id); setTabs(newTabs); } }; const [collection, setCollection] = React.useState(nodeCollection); const [selection, setSelection] = React.useState([]); const hasSelection = selection.length > 0; const indeterminate = hasSelection && selection.length < items.length; const removeNode = (props: TreeNodeProps) => { setCollection(collection.remove([props.indexPath])); }; const addNode = (props: TreeNodeProps) => { const { node, indexPath } = props; if (!collection.isBranchNode(node)) { return; } const children = [ { id: `untitled-${Date.now()}`, name: `untitled-${node.children?.length}.tsx`, }, ...(node.children || []), ]; setCollection(collection.replace(indexPath, { ...node, children })); }; const handleSelectionChange = (details: { value: string[] }) => { if (details.value.length > 0) { setSelectedImage(details.value[0]); } }; const ListboxItemCheckmark = () => { const itemState = useListboxItemContext(); return ( ); }; const TreeNodeActions = (props: TreeNodeProps) => { const { onRemove, onAdd, node } = props; const tree = useTreeViewContext(); const isBranch = tree.collection.isBranchNode(node); return ( { e.stopPropagation(); onRemove?.(props); }} > {isBranch && ( { e.stopPropagation(); onAdd?.(props); tree.expand([node.id]); }} > )} ); }; return ( {/* Font sizes */} {(fontSize, index) => ( Text {fontSize as string} )} {/* Buttons */} Primary (teal): {(palette, index) => ( {palette as string}: {(variant, innerIndex) => ( )} )} Close Button: IconButton: {(variant) => ( {variant} )} {/* Box */} Box This is a box This is a box with pseudo props This is a disabled box {boxData.imageAlt} Superhost {boxData.rating} ({boxData.reviewCount}) {boxData.title} {boxData.formattedPrice} • {boxData.beds} beds {/* Absolute Center, Center, Square, Circle */} Absolute Center, Center, Square, Circle Absolute Center
1
{/* Flex */} {/* Flex Align */} Flex Align {alignments.map((align) => (
{align}
))} {/* Flex Justify */} Flex Justify {justifications.map((justify) => (
{justify}
))}
{/* Float */} Float {placements.map((placement, index) => (

{placement}

{++index}
))}
{/* Grid */} Grid
Sol içerik
Sağ içerik
Alt içerik
{/* Simple Grid */} Simple Grid
Box1
Box2
Box3
Box4
{/* Scroll Area */} Scroll Area {(variant) => ( {`variant="${variant}"`} Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur ratione quaerat nulla autem. Rerum, deserunt eius illo sed quas aperiam ad sit tempora ea voluptatum nemo, expedita facere sunt. Accusantium! Laudantium maxime numquam et laboriosam dolore tenetur obcaecati amet aliquid veritatis excepturi sapiente vitae quae beatae sit exercitationem nam praesentium nobis expedita, atque explicabo. Consequatur, nostrum numquam. Iste, perferendis suscipit? Sequi cumque alias nisi deleniti quam perferendis doloremque ducimus facere, officiis tempora, illum laborum accusantium id, autem saepe repellendus. Quos veniam rerum provident officiis libero minima autem, dolor porro eaque. Alias esse quibusdam ratione quas quod, modi aperiam praesentium quam porro consectetur sed unde soluta quo neque quae delectus accusamus fugiat exercitationem, eligendi nobis animi nulla nisi. Similique, enim. Consequatur! )} {Array.from({ length: 12 }, (_, i) => (
Item {i + 1}
))}
{/* Separator */} Separator xs sm md lg Label (start) Label (end) Label (center) {/* Stack */} Stack }>
HStack
VStack
{/* Blockquote */} Blockquote
Lorem ipsum dolor, sit amet consectetur adipisicing elit.
} > Türk milletinin istidadı ve kati kararı medeniyet yolunda durmadan, yılmadan ilerlemektir.{" "}
{/* Code */} Code {`console.log("Hello, world!")`} {`console.log("Hello, world!")`} {`console.log("Hello, world!")`} {`console.log("Hello, world!")`} {/* Heading */} Heading {(size, index) => ( Heading ({size}) )} {/* Highlight & Mark */} Highlight & Mark With the Highlight component, you can spotlight, emphasize and accentuate words. {(variant) => ( The design system is a collection of UI elements )} {chunks.map((chunk, index) => { return chunk.match ? ( {chunk.text} ) : ( {chunk.text} ); })} {/* Kbd */} Kbd ctrl+shift+del Raised Outline Subtle Plain {/* Checkbox & Checkbox Card */} Checkbox & Checkbox Card {(variant) => ( {variant} Checkbox )} } addon={ Some supporting text New } /> {/* Color Picker */} Color Picker Basic Color Picker Color Picker + Eye Dropper + Swatches {swatches.map((item) => ( ))} Swatch Only Color: {swatches.map((item) => ( ))} Channel Sliders {(format, index) => ( )} {/* Fields, Input, Select, Textarea, Number Input */} Fields, Input, Select, Textarea } endElement={} >