domify-ui 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -819,6 +819,20 @@ CurrencyInput.displayName = "CurrencyInput";
819
819
  // src/logo.tsx
820
820
  var React10 = __toESM(require("react"));
821
821
  var import_image = __toESM(require("next/image"));
822
+
823
+ // src/assets/logo_blue.png
824
+ var logo_blue_default = "./logo_blue-W6N7LJME.png";
825
+
826
+ // src/assets/logo_orange.png
827
+ var logo_orange_default = "./logo_orange-3J2OZLUQ.png";
828
+
829
+ // src/assets/logo_white.png
830
+ var logo_white_default = "./logo_white-ORMUB2SG.png";
831
+
832
+ // src/assets/logo_black.png
833
+ var logo_black_default = "./logo_black-27BSTZJS.png";
834
+
835
+ // src/logo.tsx
822
836
  var import_jsx_runtime12 = require("react/jsx-runtime");
823
837
  var sizeClasses = {
824
838
  sm: { width: 100, height: 30 },
@@ -829,13 +843,12 @@ var sizeClasses = {
829
843
  var DomifyLogo = React10.forwardRef(
830
844
  ({ className, size = "md", showTagline = false, variant = "orange", ...props }, ref) => {
831
845
  const taglineColor = variant === "orange" ? "text-[#FF7A00]" : "text-gray-300";
832
- const logoSrc = `/assets/logo_${variant}.svg`;
833
846
  const dimensions = sizeClasses[size];
834
847
  return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { ref, className: cn("inline-block", className), ...props, children: [
835
848
  /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
836
849
  import_image.default,
837
850
  {
838
- src: logoSrc,
851
+ src: variant === "orange" ? logo_orange_default : variant === "blue" ? logo_blue_default : variant === "white" ? logo_white_default : logo_black_default,
839
852
  alt: "Domify",
840
853
  width: dimensions.width,
841
854
  height: dimensions.height,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/button.tsx","../src/utils.ts","../src/input.tsx","../src/select.tsx","../src/textarea.tsx","../src/checkbox.tsx","../src/switch.tsx","../src/tabs.tsx","../src/pagination.tsx","../src/skeleton.tsx","../src/searchable-select.tsx","../src/currency-input.tsx","../src/masks.ts","../src/logo.tsx"],"sourcesContent":["export * from \"./button\";\nexport * from \"./input\";\nexport * from \"./select\";\nexport * from \"./textarea\";\nexport * from \"./checkbox\";\nexport * from \"./switch\";\nexport * from \"./tabs\";\nexport * from \"./pagination\";\nexport * from \"./skeleton\";\nexport * from \"./searchable-select\";\nexport * from \"./currency-input\";\nexport * from \"./logo\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\";\n size?: \"default\" | \"sm\" | \"lg\";\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant = \"default\", size = \"default\", ...props }, ref) => {\n return (\n <button\n className={cn(\n \"inline-flex items-center justify-center text-sm transition-all\",\n \"font-medium rounded-[10px]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[#0052CC]\",\n \"disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed\",\n {\n \"bg-[#0052CC] text-white hover:bg-[#003d99] active:bg-[#002d73] shadow-sm hover:shadow-md\":\n variant === \"default\",\n \"bg-[#FF7A00] text-white hover:bg-[#e66d00] active:bg-[#cc6000] shadow-sm hover:shadow-md\":\n variant === \"secondary\",\n \"bg-red-600 text-white hover:bg-red-700 active:bg-red-800 shadow-sm hover:shadow-md\":\n variant === \"destructive\",\n \"border-2 border-[#0052CC] bg-white text-[#0052CC] hover:bg-[#f0f5ff] hover:border-[#003d99]\":\n variant === \"outline\",\n \"text-[#4A4A4A] hover:bg-gray-100 active:bg-gray-200\":\n variant === \"ghost\",\n },\n {\n \"h-11 px-5 py-2.5\": size === \"default\",\n \"h-9 px-3 py-2 text-xs\": size === \"sm\",\n \"h-12 px-8 py-3\": size === \"lg\",\n },\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nButton.displayName = \"Button\";\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-11 w-full rounded-lg border-2 border-gray-300 bg-white px-4 py-2.5 text-sm text-[#0B2346] placeholder:text-[#888888] transition-all\",\n \"hover:border-gray-400\",\n \"focus:outline-none focus:ring-2 focus:ring-[#0052CC] focus:border-[#0052CC]\",\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-gray-50\",\n className,\n )}\n style={{ fontFamily: \"Inter, sans-serif\" }}\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nInput.displayName = \"Input\";\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport type SelectProps = React.SelectHTMLAttributes<HTMLSelectElement>;\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n ({ className, ...props }, ref) => {\n return (\n <select\n className={cn(\n \"flex h-11 w-full rounded-lg border-2 border-gray-300 bg-white px-4 py-2.5 text-sm text-gray-900 transition-all\",\n \"hover:border-gray-400\",\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500\",\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-gray-50\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nSelect.displayName = \"Select\";\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[100px] w-full rounded-lg border-2 border-gray-300 bg-white px-4 py-3 text-sm text-gray-900 placeholder:text-gray-500 transition-all\",\n \"hover:border-gray-400\",\n \"focus:outline-none focus:ring-2 focus:ring-[#0052CC] focus:border-[#0052CC]\",\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-gray-50\",\n \"resize-y\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nTextarea.displayName = \"Textarea\";\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport interface CheckboxProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, label, ...props }, ref) => {\n return (\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"checkbox\"\n className={cn(\n \"w-5 h-5 rounded border-2 border-gray-300 text-blue-600 transition-all\",\n \"hover:border-gray-400\",\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"cursor-pointer\",\n className,\n )}\n ref={ref}\n {...props}\n />\n {label ? (\n <span className=\"text-sm font-medium text-gray-700 select-none\">\n {label}\n </span>\n ) : null}\n </label>\n );\n },\n);\n\nCheckbox.displayName = \"Checkbox\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport interface SwitchProps {\n id?: string;\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n disabled?: boolean;\n className?: string;\n}\n\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n (\n { id, checked = false, onCheckedChange, disabled = false, className },\n ref,\n ) => {\n const handleClick = () => {\n if (!disabled && onCheckedChange) {\n onCheckedChange(!checked);\n }\n };\n\n return (\n <button\n type=\"button\"\n id={id}\n role=\"switch\"\n aria-checked={checked}\n disabled={disabled}\n onClick={handleClick}\n ref={ref}\n className={cn(\n \"relative inline-flex h-6 w-11 items-center rounded-full transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n checked ? \"bg-[#0052CC]\" : \"bg-gray-300\",\n className,\n )}\n >\n <span\n className={cn(\n \"inline-block h-5 w-5 transform rounded-full bg-white shadow-sm transition-transform\",\n checked ? \"translate-x-6\" : \"translate-x-0.5\",\n )}\n />\n </button>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\ninterface TabsContextValue {\n value: string;\n onValueChange: (value: string) => void;\n}\n\nconst TabsContext = React.createContext<TabsContextValue | undefined>(undefined);\n\nfunction useTabsContext() {\n const context = React.useContext(TabsContext);\n if (!context) {\n throw new Error(\"Tabs components must be used within a Tabs component\");\n }\n return context;\n}\n\ninterface TabsProps extends React.HTMLAttributes<HTMLDivElement> {\n defaultValue: string;\n onValueChange?: (value: string) => void;\n}\n\nexport function Tabs({\n defaultValue,\n onValueChange,\n children,\n className,\n ...props\n}: TabsProps) {\n const [value, setValue] = React.useState(defaultValue);\n\n const handleValueChange = React.useCallback(\n (newValue: string) => {\n setValue(newValue);\n onValueChange?.(newValue);\n },\n [onValueChange],\n );\n\n return (\n <TabsContext.Provider value={{ value, onValueChange: handleValueChange }}>\n <div className={cn(\"w-full\", className)} {...props}>\n {children}\n </div>\n </TabsContext.Provider>\n );\n}\n\ntype TabsListProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport function TabsList({ children, className, ...props }: TabsListProps) {\n return (\n <div\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-lg bg-gray-100 p-1 text-gray-500\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\ninterface TabsTriggerProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string;\n}\n\nexport function TabsTrigger({\n value,\n children,\n className,\n ...props\n}: TabsTriggerProps) {\n const { value: selectedValue, onValueChange } = useTabsContext();\n const isSelected = value === selectedValue;\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n onClick={() => onValueChange(value)}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1.5 text-sm font-medium transition-all\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n isSelected\n ? \"bg-white text-gray-900 shadow-sm\"\n : \"text-gray-600 hover:bg-gray-50 hover:text-gray-900\",\n className,\n )}\n {...props}\n >\n {children}\n </button>\n );\n}\n\ninterface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string;\n}\n\nexport function TabsContent({\n value,\n children,\n className,\n ...props\n}: TabsContentProps) {\n const { value: selectedValue } = useTabsContext();\n\n if (value !== selectedValue) return null;\n\n return (\n <div role=\"tabpanel\" className={cn(\"mt-2\", className)} {...props}>\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from \"lucide-react\";\nimport { Button } from \"./button\";\n\ninterface PaginationProps {\n currentPage: number;\n totalPages: number;\n totalItems: number;\n perPage: number;\n onPageChange: (page: number) => void;\n className?: string;\n}\n\nexport function Pagination({\n currentPage,\n totalPages,\n totalItems,\n perPage,\n onPageChange,\n className = \"\",\n}: PaginationProps) {\n const startItem = (currentPage - 1) * perPage + 1;\n const endItem = Math.min(currentPage * perPage, totalItems);\n\n const getPageNumbers = () => {\n const pages: (number | string)[] = [];\n const maxVisiblePages = 5;\n\n if (totalPages <= maxVisiblePages) {\n for (let i = 1; i <= totalPages; i++) pages.push(i);\n return pages;\n }\n\n pages.push(1);\n if (currentPage > 3) pages.push(\"...\");\n\n const start = Math.max(2, currentPage - 1);\n const end = Math.min(totalPages - 1, currentPage + 1);\n for (let i = start; i <= end; i++) {\n if (!pages.includes(i)) pages.push(i);\n }\n\n if (currentPage < totalPages - 2) pages.push(\"...\");\n if (!pages.includes(totalPages)) pages.push(totalPages);\n\n return pages;\n };\n\n if (totalPages <= 1) {\n return (\n <div className={`flex items-center justify-center text-sm text-[#888888] ${className}`}>\n Mostrando {totalItems} de {totalItems} {totalItems === 1 ? \"item\" : \"itens\"}\n </div>\n );\n }\n\n return (\n <div className={`flex flex-col sm:flex-row items-center justify-between gap-4 ${className}`}>\n <div className=\"text-sm text-[#888888]\" style={{ fontFamily: \"Inter\" }}>\n Mostrando {startItem} a {endItem} de {totalItems} {totalItems === 1 ? \"item\" : \"itens\"}\n </div>\n\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(1)}\n disabled={currentPage === 1}\n className=\"hidden sm:flex\"\n >\n <ChevronsLeft size={16} />\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage === 1}\n >\n <ChevronLeft size={16} />\n </Button>\n\n <div className=\"flex items-center gap-1\">\n {getPageNumbers().map((page, index) =>\n page === \"...\" ? (\n <span key={`ellipsis-${index}`} className=\"px-2 text-[#888888]\">\n ...\n </span>\n ) : (\n <Button\n key={page}\n variant={currentPage === page ? \"default\" : \"outline\"}\n size=\"sm\"\n onClick={() => onPageChange(page as number)}\n className=\"min-w-[36px]\"\n >\n {page}\n </Button>\n ),\n )}\n </div>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n >\n <ChevronRight size={16} />\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(totalPages)}\n disabled={currentPage === totalPages}\n className=\"hidden sm:flex\"\n >\n <ChevronsRight size={16} />\n </Button>\n </div>\n </div>\n );\n}\n\nexport function PaginationCompact({\n currentPage,\n totalPages,\n onPageChange,\n}: Pick<PaginationProps, \"currentPage\" | \"totalPages\" | \"onPageChange\">) {\n if (totalPages <= 1) return null;\n\n return (\n <div className=\"flex items-center justify-center gap-4\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage === 1}\n >\n <ChevronLeft size={16} />\n Anterior\n </Button>\n\n <span className=\"text-sm text-[#888888]\" style={{ fontFamily: \"Inter\" }}>\n Pagina {currentPage} de {totalPages}\n </span>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n >\n Proxima\n <ChevronRight size={16} />\n </Button>\n </div>\n );\n}\n","\"use client\";\n\nimport { cn } from \"./utils\";\n\ninterface SkeletonProps {\n className?: string;\n}\n\nexport function Skeleton({ className }: SkeletonProps) {\n return <div className={cn(\"animate-pulse rounded-md bg-gray-200\", className)} />;\n}\n\nexport function PropertyCardSkeleton() {\n return (\n <div className=\"bg-white rounded-lg shadow overflow-hidden\">\n <Skeleton className=\"h-48 w-full rounded-none\" />\n <div className=\"p-4 space-y-3\">\n <Skeleton className=\"h-4 w-1/4\" />\n <Skeleton className=\"h-6 w-3/4\" />\n <Skeleton className=\"h-4 w-1/2\" />\n <div className=\"flex gap-4 pt-2\">\n <Skeleton className=\"h-4 w-16\" />\n <Skeleton className=\"h-4 w-16\" />\n <Skeleton className=\"h-4 w-16\" />\n </div>\n <div className=\"flex justify-between pt-4\">\n <Skeleton className=\"h-6 w-24\" />\n <Skeleton className=\"h-8 w-20\" />\n </div>\n </div>\n </div>\n );\n}\n\nexport function TableRowSkeleton({ columns = 5 }: { columns?: number }) {\n return (\n <tr className=\"border-b border-gray-100\">\n {Array.from({ length: columns }).map((_, i) => (\n <td key={i} className=\"px-4 py-3\">\n <Skeleton className=\"h-4 w-full\" />\n </td>\n ))}\n </tr>\n );\n}\n\nexport function TableSkeleton({\n rows = 5,\n columns = 5,\n}: {\n rows?: number;\n columns?: number;\n}) {\n return (\n <div className=\"bg-white rounded-lg shadow overflow-hidden\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full\">\n <thead className=\"bg-gray-50\">\n <tr>\n {Array.from({ length: columns }).map((_, i) => (\n <th key={i} className=\"px-4 py-3 text-left\">\n <Skeleton className=\"h-4 w-20\" />\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {Array.from({ length: rows }).map((_, i) => (\n <TableRowSkeleton key={i} columns={columns} />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n\nexport function ListItemSkeleton() {\n return (\n <div className=\"flex items-center gap-4 p-4 bg-white rounded-lg shadow\">\n <Skeleton className=\"h-12 w-12 rounded-full\" />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-4 w-1/3\" />\n <Skeleton className=\"h-3 w-1/2\" />\n </div>\n <Skeleton className=\"h-8 w-20\" />\n </div>\n );\n}\n\nexport function StatsCardSkeleton() {\n return (\n <div className=\"bg-white rounded-lg shadow p-6\">\n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-2\">\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-8 w-16\" />\n </div>\n <Skeleton className=\"h-12 w-12 rounded-full\" />\n </div>\n </div>\n );\n}\n\nexport function FormSkeleton({ fields = 4 }: { fields?: number }) {\n return (\n <div className=\"bg-white rounded-lg shadow p-6 space-y-6\">\n {Array.from({ length: fields }).map((_, i) => (\n <div key={i} className=\"space-y-2\">\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-10 w-full\" />\n </div>\n ))}\n <div className=\"flex justify-end gap-4 pt-4\">\n <Skeleton className=\"h-10 w-24\" />\n <Skeleton className=\"h-10 w-32\" />\n </div>\n </div>\n );\n}\n\nexport function DetailPageSkeleton() {\n return (\n <div className=\"space-y-6\">\n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-2\">\n <Skeleton className=\"h-8 w-48\" />\n <Skeleton className=\"h-4 w-32\" />\n </div>\n <div className=\"flex gap-2\">\n <Skeleton className=\"h-10 w-24\" />\n <Skeleton className=\"h-10 w-24\" />\n </div>\n </div>\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n <div className=\"lg:col-span-2 space-y-6\">\n <div className=\"bg-white rounded-lg shadow p-6 space-y-4\">\n <Skeleton className=\"h-6 w-32\" />\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-3/4\" />\n </div>\n <div className=\"bg-white rounded-lg shadow p-6 space-y-4\">\n <Skeleton className=\"h-6 w-32\" />\n <div className=\"grid grid-cols-2 gap-4\">\n {Array.from({ length: 6 }).map((_, i) => (\n <div key={i} className=\"space-y-1\">\n <Skeleton className=\"h-4 w-20\" />\n <Skeleton className=\"h-4 w-28\" />\n </div>\n ))}\n </div>\n </div>\n </div>\n <div className=\"space-y-6\">\n <div className=\"bg-white rounded-lg shadow p-6 space-y-4\">\n <Skeleton className=\"h-6 w-24\" />\n <Skeleton className=\"h-8 w-full\" />\n <Skeleton className=\"h-4 w-full\" />\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport function DashboardSkeleton() {\n return (\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4\">\n {Array.from({ length: 4 }).map((_, i) => (\n <StatsCardSkeleton key={i} />\n ))}\n </div>\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n <div className=\"bg-white rounded-lg shadow p-6\">\n <Skeleton className=\"h-6 w-32 mb-4\" />\n <Skeleton className=\"h-64 w-full\" />\n </div>\n <div className=\"bg-white rounded-lg shadow p-6\">\n <Skeleton className=\"h-6 w-32 mb-4\" />\n <div className=\"space-y-4\">\n {Array.from({ length: 5 }).map((_, i) => (\n <ListItemSkeleton key={i} />\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Search, ChevronDown } from \"lucide-react\";\nimport { cn } from \"./utils\";\n\nexport interface SearchableSelectOption {\n id: number | string;\n label: string;\n [key: string]: unknown;\n}\n\nexport interface SearchableSelectProps {\n options: SearchableSelectOption[];\n value?: number | string | null;\n onChange?: (value: number | string | null) => void;\n onBlur?: () => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n getOptionLabel?: (option: SearchableSelectOption) => string;\n filterFunction?: (option: SearchableSelectOption, searchTerm: string) => boolean;\n emptyMessage?: string;\n name?: string;\n}\n\nexport const SearchableSelect = React.forwardRef<\n HTMLInputElement,\n SearchableSelectProps\n>(\n (\n {\n options,\n value,\n onChange,\n onBlur,\n placeholder = \"Selecione uma opcao...\",\n disabled = false,\n className,\n getOptionLabel = (option) => option.label,\n filterFunction,\n emptyMessage = \"Nenhuma opcao encontrada\",\n name,\n },\n ref,\n ) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [searchTerm, setSearchTerm] = React.useState(\"\");\n const containerRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLUListElement>(null);\n\n const selectedOption = React.useMemo(\n () => options.find((opt) => opt.id === value) || null,\n [options, value],\n );\n\n const filteredOptions = React.useMemo(() => {\n if (!searchTerm.trim()) return options;\n const term = searchTerm.toLowerCase().trim();\n if (filterFunction) return options.filter((option) => filterFunction(option, term));\n return options.filter((option) => getOptionLabel(option).toLowerCase().includes(term));\n }, [options, searchTerm, getOptionLabel, filterFunction]);\n\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n setSearchTerm(\"\");\n }\n };\n\n if (!isOpen) return;\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isOpen]);\n\n React.useEffect(() => {\n if (!isOpen || !listRef.current || !selectedOption) return;\n const selectedIndex = filteredOptions.findIndex((opt) => opt.id === selectedOption.id);\n if (selectedIndex < 0) return;\n const selectedElement = listRef.current.children[selectedIndex] as HTMLElement;\n selectedElement?.scrollIntoView({ block: \"nearest\" });\n }, [isOpen, selectedOption, filteredOptions]);\n\n const handleSelect = (option: SearchableSelectOption) => {\n onChange?.(option.id);\n setIsOpen(false);\n setSearchTerm(\"\");\n onBlur?.();\n };\n\n const handleToggle = () => {\n if (disabled) return;\n setIsOpen((prev) => !prev);\n setTimeout(() => inputRef.current?.focus(), 0);\n };\n\n const displayValue = selectedOption ? getOptionLabel(selectedOption) : \"\";\n\n return (\n <div ref={containerRef} className={cn(\"relative w-full\", className)}>\n <div\n className={cn(\n \"flex h-11 w-full rounded-lg border-2 bg-white px-4 py-2.5 text-sm text-gray-900 transition-all cursor-pointer\",\n \"hover:border-gray-400\",\n \"focus-within:outline-none focus-within:ring-2 focus-within:ring-blue-500 focus-within:border-blue-500\",\n disabled && \"cursor-not-allowed opacity-50 bg-gray-50 hover:border-gray-300\",\n !isOpen && \"border-gray-300\",\n )}\n onClick={handleToggle}\n >\n <div className=\"flex items-center flex-1 min-w-0\">\n {!isOpen && !displayValue ? <span className=\"text-gray-500\">{placeholder}</span> : null}\n {!isOpen && displayValue ? <span className=\"truncate\">{displayValue}</span> : null}\n {isOpen ? (\n <input\n ref={inputRef}\n type=\"text\"\n value={searchTerm}\n onChange={(e) => {\n if (disabled) return;\n setSearchTerm(e.target.value);\n setIsOpen(true);\n }}\n placeholder={placeholder}\n className=\"flex-1 outline-none bg-transparent text-gray-900 placeholder:text-gray-500\"\n onClick={(e) => e.stopPropagation()}\n disabled={disabled}\n />\n ) : null}\n </div>\n\n <div className=\"flex items-center gap-2 ml-2\">\n <Search size={18} className={cn(\"text-gray-500 transition-transform\", isOpen && \"rotate-90\")} />\n <ChevronDown\n size={18}\n className={cn(\"text-gray-500 transition-transform\", isOpen && \"rotate-180\")}\n />\n </div>\n </div>\n\n {isOpen ? (\n <div className=\"absolute z-50 w-full mt-1 bg-white border-2 border-gray-300 rounded-lg shadow-lg max-h-60 overflow-hidden\">\n <ul ref={listRef} className=\"overflow-y-auto max-h-60 py-1\" role=\"listbox\">\n {filteredOptions.length === 0 ? (\n <li className=\"px-4 py-3 text-sm text-gray-500 text-center\">{emptyMessage}</li>\n ) : (\n filteredOptions.map((option) => {\n const isSelected = option.id === value;\n const label = getOptionLabel(option);\n return (\n <li\n key={option.id}\n role=\"option\"\n aria-selected={isSelected}\n className={cn(\n \"px-4 py-2 cursor-pointer text-sm transition-colors\",\n \"hover:bg-blue-50 hover:text-blue-900\",\n isSelected && \"bg-blue-100 text-blue-900 font-medium\",\n )}\n onClick={() => handleSelect(option)}\n >\n {label}\n </li>\n );\n })\n )}\n </ul>\n </div>\n ) : null}\n\n {name ? <input ref={ref} type=\"hidden\" name={name} value={value || \"\"} readOnly /> : null}\n </div>\n );\n },\n);\n\nSearchableSelect.displayName = \"SearchableSelect\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Input, InputProps } from \"./input\";\nimport { cn } from \"./utils\";\nimport { maskCurrency, unmaskCurrency } from \"./masks\";\n\ninterface CurrencyInputProps extends Omit<InputProps, \"type\" | \"value\" | \"onChange\"> {\n value?: number | string;\n onChange?: (value: number) => void;\n error?: boolean;\n}\n\nexport const CurrencyInput = React.forwardRef<HTMLInputElement, CurrencyInputProps>(\n ({ className, value, onChange, error, ...props }, ref) => {\n const [displayValue, setDisplayValue] = React.useState<string>(\"\");\n\n React.useEffect(() => {\n if (value === undefined || value === null || value === \"\" || value === 0) {\n setDisplayValue(\"\");\n return;\n }\n const numValue = typeof value === \"string\" ? parseFloat(value) : value;\n setDisplayValue(!isNaN(numValue) && numValue > 0 ? maskCurrency(numValue) : \"\");\n }, [value]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n const cleaned = inputValue.replace(/[^\\d,.-]/g, \"\");\n\n if (cleaned === \"\" || cleaned.replace(/\\D/g, \"\") === \"\") {\n setDisplayValue(\"\");\n onChange?.(0);\n return;\n }\n\n setDisplayValue(cleaned);\n onChange?.(unmaskCurrency(cleaned));\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n const cleaned = e.target.value.replace(/[^\\d,.-]/g, \"\");\n if (cleaned === \"\" || cleaned.replace(/\\D/g, \"\") === \"\") {\n setDisplayValue(\"\");\n onChange?.(0);\n } else {\n const numericValue = unmaskCurrency(cleaned);\n setDisplayValue(maskCurrency(numericValue));\n onChange?.(numericValue);\n }\n props.onBlur?.(e);\n };\n\n return (\n <div className=\"relative\">\n <span className=\"absolute left-4 top-1/2 -translate-y-1/2 text-gray-500 text-sm\">R$</span>\n <Input\n {...props}\n ref={ref}\n type=\"text\"\n value={displayValue}\n onChange={handleChange}\n onBlur={handleBlur}\n className={cn(\"pl-10\", error && \"border-red-500 focus:ring-red-500 focus:border-red-500\", className)}\n placeholder=\"0,00\"\n />\n </div>\n );\n },\n);\n\nCurrencyInput.displayName = \"CurrencyInput\";\n","export function maskCurrency(value: string | number): string {\n const numValue =\n typeof value === \"string\"\n ? parseFloat(value.replace(/\\D/g, \"\")) / 100\n : typeof value === \"number\"\n ? value\n : 0;\n\n if (isNaN(numValue) || numValue === 0) return \"\";\n\n return new Intl.NumberFormat(\"pt-BR\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(numValue);\n}\n\nexport function unmaskCurrency(value: string): number {\n if (!value || value.trim() === \"\") return 0;\n\n const cleaned = value.replace(/[^\\d,.-]/g, \"\");\n if (cleaned === \"\") return 0;\n\n if (cleaned.includes(\",\")) {\n const normalized = cleaned.replace(/\\./g, \"\").replace(\",\", \".\");\n const numValue = parseFloat(normalized);\n return isNaN(numValue) ? 0 : numValue;\n }\n\n const parts = cleaned.split(\".\");\n if (parts.length === 2 && parts[1].length <= 2) {\n return parseFloat(cleaned) || 0;\n }\n if (parts.length > 1) {\n return parseFloat(cleaned.replace(/\\./g, \"\")) || 0;\n }\n\n return parseFloat(cleaned) || 0;\n}\n","import * as React from \"react\";\nimport Image from \"next/image\";\nimport { cn } from \"./utils\";\n\nexport interface LogoProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n showTagline?: boolean;\n variant?: \"blue\" | \"orange\" | \"white\" | \"black\";\n}\n\nconst sizeClasses = {\n sm: { width: 100, height: 30 },\n md: { width: 140, height: 42 },\n lg: { width: 180, height: 54 },\n xl: { width: 220, height: 66 },\n};\n\nexport const DomifyLogo = React.forwardRef<HTMLDivElement, LogoProps>(\n ({ className, size = \"md\", showTagline = false, variant = \"orange\", ...props }, ref) => {\n const taglineColor = variant === \"orange\" ? \"text-[#FF7A00]\" : \"text-gray-300\";\n const logoSrc = `/assets/logo_${variant}.svg`;\n const dimensions = sizeClasses[size];\n\n return (\n <div ref={ref} className={cn(\"inline-block\", className)} {...props}>\n <Image\n src={logoSrc}\n alt=\"Domify\"\n width={dimensions.width}\n height={dimensions.height}\n priority\n className=\"object-contain\"\n style={{ width: \"auto\", height: \"auto\" }}\n />\n {showTagline ? (\n <p\n className={cn(\"text-xs mt-1\", taglineColor, {\n \"mt-0.5\": size === \"sm\",\n })}\n style={{ fontFamily: \"Inter\", fontWeight: 300 }}\n >\n Gestao Inteligente de Imoveis\n </p>\n ) : null}\n </div>\n );\n },\n);\n\nDomifyLogo.displayName = \"DomifyLogo\";\n"],"mappings":"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","names":["React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","Image"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/button.tsx","../src/utils.ts","../src/input.tsx","../src/select.tsx","../src/textarea.tsx","../src/checkbox.tsx","../src/switch.tsx","../src/tabs.tsx","../src/pagination.tsx","../src/skeleton.tsx","../src/searchable-select.tsx","../src/currency-input.tsx","../src/masks.ts","../src/logo.tsx"],"sourcesContent":["export * from \"./button\";\nexport * from \"./input\";\nexport * from \"./select\";\nexport * from \"./textarea\";\nexport * from \"./checkbox\";\nexport * from \"./switch\";\nexport * from \"./tabs\";\nexport * from \"./pagination\";\nexport * from \"./skeleton\";\nexport * from \"./searchable-select\";\nexport * from \"./currency-input\";\nexport * from \"./logo\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\";\n size?: \"default\" | \"sm\" | \"lg\";\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant = \"default\", size = \"default\", ...props }, ref) => {\n return (\n <button\n className={cn(\n \"inline-flex items-center justify-center text-sm transition-all\",\n \"font-medium rounded-[10px]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[#0052CC]\",\n \"disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed\",\n {\n \"bg-[#0052CC] text-white hover:bg-[#003d99] active:bg-[#002d73] shadow-sm hover:shadow-md\":\n variant === \"default\",\n \"bg-[#FF7A00] text-white hover:bg-[#e66d00] active:bg-[#cc6000] shadow-sm hover:shadow-md\":\n variant === \"secondary\",\n \"bg-red-600 text-white hover:bg-red-700 active:bg-red-800 shadow-sm hover:shadow-md\":\n variant === \"destructive\",\n \"border-2 border-[#0052CC] bg-white text-[#0052CC] hover:bg-[#f0f5ff] hover:border-[#003d99]\":\n variant === \"outline\",\n \"text-[#4A4A4A] hover:bg-gray-100 active:bg-gray-200\":\n variant === \"ghost\",\n },\n {\n \"h-11 px-5 py-2.5\": size === \"default\",\n \"h-9 px-3 py-2 text-xs\": size === \"sm\",\n \"h-12 px-8 py-3\": size === \"lg\",\n },\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nButton.displayName = \"Button\";\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-11 w-full rounded-lg border-2 border-gray-300 bg-white px-4 py-2.5 text-sm text-[#0B2346] placeholder:text-[#888888] transition-all\",\n \"hover:border-gray-400\",\n \"focus:outline-none focus:ring-2 focus:ring-[#0052CC] focus:border-[#0052CC]\",\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-gray-50\",\n className,\n )}\n style={{ fontFamily: \"Inter, sans-serif\" }}\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nInput.displayName = \"Input\";\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport type SelectProps = React.SelectHTMLAttributes<HTMLSelectElement>;\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n ({ className, ...props }, ref) => {\n return (\n <select\n className={cn(\n \"flex h-11 w-full rounded-lg border-2 border-gray-300 bg-white px-4 py-2.5 text-sm text-gray-900 transition-all\",\n \"hover:border-gray-400\",\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500\",\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-gray-50\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nSelect.displayName = \"Select\";\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[100px] w-full rounded-lg border-2 border-gray-300 bg-white px-4 py-3 text-sm text-gray-900 placeholder:text-gray-500 transition-all\",\n \"hover:border-gray-400\",\n \"focus:outline-none focus:ring-2 focus:ring-[#0052CC] focus:border-[#0052CC]\",\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-gray-50\",\n \"resize-y\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nTextarea.displayName = \"Textarea\";\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport interface CheckboxProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, label, ...props }, ref) => {\n return (\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"checkbox\"\n className={cn(\n \"w-5 h-5 rounded border-2 border-gray-300 text-blue-600 transition-all\",\n \"hover:border-gray-400\",\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"cursor-pointer\",\n className,\n )}\n ref={ref}\n {...props}\n />\n {label ? (\n <span className=\"text-sm font-medium text-gray-700 select-none\">\n {label}\n </span>\n ) : null}\n </label>\n );\n },\n);\n\nCheckbox.displayName = \"Checkbox\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport interface SwitchProps {\n id?: string;\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n disabled?: boolean;\n className?: string;\n}\n\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n (\n { id, checked = false, onCheckedChange, disabled = false, className },\n ref,\n ) => {\n const handleClick = () => {\n if (!disabled && onCheckedChange) {\n onCheckedChange(!checked);\n }\n };\n\n return (\n <button\n type=\"button\"\n id={id}\n role=\"switch\"\n aria-checked={checked}\n disabled={disabled}\n onClick={handleClick}\n ref={ref}\n className={cn(\n \"relative inline-flex h-6 w-11 items-center rounded-full transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n checked ? \"bg-[#0052CC]\" : \"bg-gray-300\",\n className,\n )}\n >\n <span\n className={cn(\n \"inline-block h-5 w-5 transform rounded-full bg-white shadow-sm transition-transform\",\n checked ? \"translate-x-6\" : \"translate-x-0.5\",\n )}\n />\n </button>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\ninterface TabsContextValue {\n value: string;\n onValueChange: (value: string) => void;\n}\n\nconst TabsContext = React.createContext<TabsContextValue | undefined>(undefined);\n\nfunction useTabsContext() {\n const context = React.useContext(TabsContext);\n if (!context) {\n throw new Error(\"Tabs components must be used within a Tabs component\");\n }\n return context;\n}\n\ninterface TabsProps extends React.HTMLAttributes<HTMLDivElement> {\n defaultValue: string;\n onValueChange?: (value: string) => void;\n}\n\nexport function Tabs({\n defaultValue,\n onValueChange,\n children,\n className,\n ...props\n}: TabsProps) {\n const [value, setValue] = React.useState(defaultValue);\n\n const handleValueChange = React.useCallback(\n (newValue: string) => {\n setValue(newValue);\n onValueChange?.(newValue);\n },\n [onValueChange],\n );\n\n return (\n <TabsContext.Provider value={{ value, onValueChange: handleValueChange }}>\n <div className={cn(\"w-full\", className)} {...props}>\n {children}\n </div>\n </TabsContext.Provider>\n );\n}\n\ntype TabsListProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport function TabsList({ children, className, ...props }: TabsListProps) {\n return (\n <div\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-lg bg-gray-100 p-1 text-gray-500\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\ninterface TabsTriggerProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string;\n}\n\nexport function TabsTrigger({\n value,\n children,\n className,\n ...props\n}: TabsTriggerProps) {\n const { value: selectedValue, onValueChange } = useTabsContext();\n const isSelected = value === selectedValue;\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n onClick={() => onValueChange(value)}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1.5 text-sm font-medium transition-all\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n isSelected\n ? \"bg-white text-gray-900 shadow-sm\"\n : \"text-gray-600 hover:bg-gray-50 hover:text-gray-900\",\n className,\n )}\n {...props}\n >\n {children}\n </button>\n );\n}\n\ninterface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string;\n}\n\nexport function TabsContent({\n value,\n children,\n className,\n ...props\n}: TabsContentProps) {\n const { value: selectedValue } = useTabsContext();\n\n if (value !== selectedValue) return null;\n\n return (\n <div role=\"tabpanel\" className={cn(\"mt-2\", className)} {...props}>\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from \"lucide-react\";\nimport { Button } from \"./button\";\n\ninterface PaginationProps {\n currentPage: number;\n totalPages: number;\n totalItems: number;\n perPage: number;\n onPageChange: (page: number) => void;\n className?: string;\n}\n\nexport function Pagination({\n currentPage,\n totalPages,\n totalItems,\n perPage,\n onPageChange,\n className = \"\",\n}: PaginationProps) {\n const startItem = (currentPage - 1) * perPage + 1;\n const endItem = Math.min(currentPage * perPage, totalItems);\n\n const getPageNumbers = () => {\n const pages: (number | string)[] = [];\n const maxVisiblePages = 5;\n\n if (totalPages <= maxVisiblePages) {\n for (let i = 1; i <= totalPages; i++) pages.push(i);\n return pages;\n }\n\n pages.push(1);\n if (currentPage > 3) pages.push(\"...\");\n\n const start = Math.max(2, currentPage - 1);\n const end = Math.min(totalPages - 1, currentPage + 1);\n for (let i = start; i <= end; i++) {\n if (!pages.includes(i)) pages.push(i);\n }\n\n if (currentPage < totalPages - 2) pages.push(\"...\");\n if (!pages.includes(totalPages)) pages.push(totalPages);\n\n return pages;\n };\n\n if (totalPages <= 1) {\n return (\n <div className={`flex items-center justify-center text-sm text-[#888888] ${className}`}>\n Mostrando {totalItems} de {totalItems} {totalItems === 1 ? \"item\" : \"itens\"}\n </div>\n );\n }\n\n return (\n <div className={`flex flex-col sm:flex-row items-center justify-between gap-4 ${className}`}>\n <div className=\"text-sm text-[#888888]\" style={{ fontFamily: \"Inter\" }}>\n Mostrando {startItem} a {endItem} de {totalItems} {totalItems === 1 ? \"item\" : \"itens\"}\n </div>\n\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(1)}\n disabled={currentPage === 1}\n className=\"hidden sm:flex\"\n >\n <ChevronsLeft size={16} />\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage === 1}\n >\n <ChevronLeft size={16} />\n </Button>\n\n <div className=\"flex items-center gap-1\">\n {getPageNumbers().map((page, index) =>\n page === \"...\" ? (\n <span key={`ellipsis-${index}`} className=\"px-2 text-[#888888]\">\n ...\n </span>\n ) : (\n <Button\n key={page}\n variant={currentPage === page ? \"default\" : \"outline\"}\n size=\"sm\"\n onClick={() => onPageChange(page as number)}\n className=\"min-w-[36px]\"\n >\n {page}\n </Button>\n ),\n )}\n </div>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n >\n <ChevronRight size={16} />\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(totalPages)}\n disabled={currentPage === totalPages}\n className=\"hidden sm:flex\"\n >\n <ChevronsRight size={16} />\n </Button>\n </div>\n </div>\n );\n}\n\nexport function PaginationCompact({\n currentPage,\n totalPages,\n onPageChange,\n}: Pick<PaginationProps, \"currentPage\" | \"totalPages\" | \"onPageChange\">) {\n if (totalPages <= 1) return null;\n\n return (\n <div className=\"flex items-center justify-center gap-4\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage === 1}\n >\n <ChevronLeft size={16} />\n Anterior\n </Button>\n\n <span className=\"text-sm text-[#888888]\" style={{ fontFamily: \"Inter\" }}>\n Pagina {currentPage} de {totalPages}\n </span>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n >\n Proxima\n <ChevronRight size={16} />\n </Button>\n </div>\n );\n}\n","\"use client\";\n\nimport { cn } from \"./utils\";\n\ninterface SkeletonProps {\n className?: string;\n}\n\nexport function Skeleton({ className }: SkeletonProps) {\n return <div className={cn(\"animate-pulse rounded-md bg-gray-200\", className)} />;\n}\n\nexport function PropertyCardSkeleton() {\n return (\n <div className=\"bg-white rounded-lg shadow overflow-hidden\">\n <Skeleton className=\"h-48 w-full rounded-none\" />\n <div className=\"p-4 space-y-3\">\n <Skeleton className=\"h-4 w-1/4\" />\n <Skeleton className=\"h-6 w-3/4\" />\n <Skeleton className=\"h-4 w-1/2\" />\n <div className=\"flex gap-4 pt-2\">\n <Skeleton className=\"h-4 w-16\" />\n <Skeleton className=\"h-4 w-16\" />\n <Skeleton className=\"h-4 w-16\" />\n </div>\n <div className=\"flex justify-between pt-4\">\n <Skeleton className=\"h-6 w-24\" />\n <Skeleton className=\"h-8 w-20\" />\n </div>\n </div>\n </div>\n );\n}\n\nexport function TableRowSkeleton({ columns = 5 }: { columns?: number }) {\n return (\n <tr className=\"border-b border-gray-100\">\n {Array.from({ length: columns }).map((_, i) => (\n <td key={i} className=\"px-4 py-3\">\n <Skeleton className=\"h-4 w-full\" />\n </td>\n ))}\n </tr>\n );\n}\n\nexport function TableSkeleton({\n rows = 5,\n columns = 5,\n}: {\n rows?: number;\n columns?: number;\n}) {\n return (\n <div className=\"bg-white rounded-lg shadow overflow-hidden\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full\">\n <thead className=\"bg-gray-50\">\n <tr>\n {Array.from({ length: columns }).map((_, i) => (\n <th key={i} className=\"px-4 py-3 text-left\">\n <Skeleton className=\"h-4 w-20\" />\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {Array.from({ length: rows }).map((_, i) => (\n <TableRowSkeleton key={i} columns={columns} />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n\nexport function ListItemSkeleton() {\n return (\n <div className=\"flex items-center gap-4 p-4 bg-white rounded-lg shadow\">\n <Skeleton className=\"h-12 w-12 rounded-full\" />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-4 w-1/3\" />\n <Skeleton className=\"h-3 w-1/2\" />\n </div>\n <Skeleton className=\"h-8 w-20\" />\n </div>\n );\n}\n\nexport function StatsCardSkeleton() {\n return (\n <div className=\"bg-white rounded-lg shadow p-6\">\n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-2\">\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-8 w-16\" />\n </div>\n <Skeleton className=\"h-12 w-12 rounded-full\" />\n </div>\n </div>\n );\n}\n\nexport function FormSkeleton({ fields = 4 }: { fields?: number }) {\n return (\n <div className=\"bg-white rounded-lg shadow p-6 space-y-6\">\n {Array.from({ length: fields }).map((_, i) => (\n <div key={i} className=\"space-y-2\">\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-10 w-full\" />\n </div>\n ))}\n <div className=\"flex justify-end gap-4 pt-4\">\n <Skeleton className=\"h-10 w-24\" />\n <Skeleton className=\"h-10 w-32\" />\n </div>\n </div>\n );\n}\n\nexport function DetailPageSkeleton() {\n return (\n <div className=\"space-y-6\">\n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-2\">\n <Skeleton className=\"h-8 w-48\" />\n <Skeleton className=\"h-4 w-32\" />\n </div>\n <div className=\"flex gap-2\">\n <Skeleton className=\"h-10 w-24\" />\n <Skeleton className=\"h-10 w-24\" />\n </div>\n </div>\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n <div className=\"lg:col-span-2 space-y-6\">\n <div className=\"bg-white rounded-lg shadow p-6 space-y-4\">\n <Skeleton className=\"h-6 w-32\" />\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-3/4\" />\n </div>\n <div className=\"bg-white rounded-lg shadow p-6 space-y-4\">\n <Skeleton className=\"h-6 w-32\" />\n <div className=\"grid grid-cols-2 gap-4\">\n {Array.from({ length: 6 }).map((_, i) => (\n <div key={i} className=\"space-y-1\">\n <Skeleton className=\"h-4 w-20\" />\n <Skeleton className=\"h-4 w-28\" />\n </div>\n ))}\n </div>\n </div>\n </div>\n <div className=\"space-y-6\">\n <div className=\"bg-white rounded-lg shadow p-6 space-y-4\">\n <Skeleton className=\"h-6 w-24\" />\n <Skeleton className=\"h-8 w-full\" />\n <Skeleton className=\"h-4 w-full\" />\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport function DashboardSkeleton() {\n return (\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4\">\n {Array.from({ length: 4 }).map((_, i) => (\n <StatsCardSkeleton key={i} />\n ))}\n </div>\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n <div className=\"bg-white rounded-lg shadow p-6\">\n <Skeleton className=\"h-6 w-32 mb-4\" />\n <Skeleton className=\"h-64 w-full\" />\n </div>\n <div className=\"bg-white rounded-lg shadow p-6\">\n <Skeleton className=\"h-6 w-32 mb-4\" />\n <div className=\"space-y-4\">\n {Array.from({ length: 5 }).map((_, i) => (\n <ListItemSkeleton key={i} />\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Search, ChevronDown } from \"lucide-react\";\nimport { cn } from \"./utils\";\n\nexport interface SearchableSelectOption {\n id: number | string;\n label: string;\n [key: string]: unknown;\n}\n\nexport interface SearchableSelectProps {\n options: SearchableSelectOption[];\n value?: number | string | null;\n onChange?: (value: number | string | null) => void;\n onBlur?: () => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n getOptionLabel?: (option: SearchableSelectOption) => string;\n filterFunction?: (option: SearchableSelectOption, searchTerm: string) => boolean;\n emptyMessage?: string;\n name?: string;\n}\n\nexport const SearchableSelect = React.forwardRef<\n HTMLInputElement,\n SearchableSelectProps\n>(\n (\n {\n options,\n value,\n onChange,\n onBlur,\n placeholder = \"Selecione uma opcao...\",\n disabled = false,\n className,\n getOptionLabel = (option) => option.label,\n filterFunction,\n emptyMessage = \"Nenhuma opcao encontrada\",\n name,\n },\n ref,\n ) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [searchTerm, setSearchTerm] = React.useState(\"\");\n const containerRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLUListElement>(null);\n\n const selectedOption = React.useMemo(\n () => options.find((opt) => opt.id === value) || null,\n [options, value],\n );\n\n const filteredOptions = React.useMemo(() => {\n if (!searchTerm.trim()) return options;\n const term = searchTerm.toLowerCase().trim();\n if (filterFunction) return options.filter((option) => filterFunction(option, term));\n return options.filter((option) => getOptionLabel(option).toLowerCase().includes(term));\n }, [options, searchTerm, getOptionLabel, filterFunction]);\n\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n setSearchTerm(\"\");\n }\n };\n\n if (!isOpen) return;\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isOpen]);\n\n React.useEffect(() => {\n if (!isOpen || !listRef.current || !selectedOption) return;\n const selectedIndex = filteredOptions.findIndex((opt) => opt.id === selectedOption.id);\n if (selectedIndex < 0) return;\n const selectedElement = listRef.current.children[selectedIndex] as HTMLElement;\n selectedElement?.scrollIntoView({ block: \"nearest\" });\n }, [isOpen, selectedOption, filteredOptions]);\n\n const handleSelect = (option: SearchableSelectOption) => {\n onChange?.(option.id);\n setIsOpen(false);\n setSearchTerm(\"\");\n onBlur?.();\n };\n\n const handleToggle = () => {\n if (disabled) return;\n setIsOpen((prev) => !prev);\n setTimeout(() => inputRef.current?.focus(), 0);\n };\n\n const displayValue = selectedOption ? getOptionLabel(selectedOption) : \"\";\n\n return (\n <div ref={containerRef} className={cn(\"relative w-full\", className)}>\n <div\n className={cn(\n \"flex h-11 w-full rounded-lg border-2 bg-white px-4 py-2.5 text-sm text-gray-900 transition-all cursor-pointer\",\n \"hover:border-gray-400\",\n \"focus-within:outline-none focus-within:ring-2 focus-within:ring-blue-500 focus-within:border-blue-500\",\n disabled && \"cursor-not-allowed opacity-50 bg-gray-50 hover:border-gray-300\",\n !isOpen && \"border-gray-300\",\n )}\n onClick={handleToggle}\n >\n <div className=\"flex items-center flex-1 min-w-0\">\n {!isOpen && !displayValue ? <span className=\"text-gray-500\">{placeholder}</span> : null}\n {!isOpen && displayValue ? <span className=\"truncate\">{displayValue}</span> : null}\n {isOpen ? (\n <input\n ref={inputRef}\n type=\"text\"\n value={searchTerm}\n onChange={(e) => {\n if (disabled) return;\n setSearchTerm(e.target.value);\n setIsOpen(true);\n }}\n placeholder={placeholder}\n className=\"flex-1 outline-none bg-transparent text-gray-900 placeholder:text-gray-500\"\n onClick={(e) => e.stopPropagation()}\n disabled={disabled}\n />\n ) : null}\n </div>\n\n <div className=\"flex items-center gap-2 ml-2\">\n <Search size={18} className={cn(\"text-gray-500 transition-transform\", isOpen && \"rotate-90\")} />\n <ChevronDown\n size={18}\n className={cn(\"text-gray-500 transition-transform\", isOpen && \"rotate-180\")}\n />\n </div>\n </div>\n\n {isOpen ? (\n <div className=\"absolute z-50 w-full mt-1 bg-white border-2 border-gray-300 rounded-lg shadow-lg max-h-60 overflow-hidden\">\n <ul ref={listRef} className=\"overflow-y-auto max-h-60 py-1\" role=\"listbox\">\n {filteredOptions.length === 0 ? (\n <li className=\"px-4 py-3 text-sm text-gray-500 text-center\">{emptyMessage}</li>\n ) : (\n filteredOptions.map((option) => {\n const isSelected = option.id === value;\n const label = getOptionLabel(option);\n return (\n <li\n key={option.id}\n role=\"option\"\n aria-selected={isSelected}\n className={cn(\n \"px-4 py-2 cursor-pointer text-sm transition-colors\",\n \"hover:bg-blue-50 hover:text-blue-900\",\n isSelected && \"bg-blue-100 text-blue-900 font-medium\",\n )}\n onClick={() => handleSelect(option)}\n >\n {label}\n </li>\n );\n })\n )}\n </ul>\n </div>\n ) : null}\n\n {name ? <input ref={ref} type=\"hidden\" name={name} value={value || \"\"} readOnly /> : null}\n </div>\n );\n },\n);\n\nSearchableSelect.displayName = \"SearchableSelect\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Input, InputProps } from \"./input\";\nimport { cn } from \"./utils\";\nimport { maskCurrency, unmaskCurrency } from \"./masks\";\n\ninterface CurrencyInputProps extends Omit<InputProps, \"type\" | \"value\" | \"onChange\"> {\n value?: number | string;\n onChange?: (value: number) => void;\n error?: boolean;\n}\n\nexport const CurrencyInput = React.forwardRef<HTMLInputElement, CurrencyInputProps>(\n ({ className, value, onChange, error, ...props }, ref) => {\n const [displayValue, setDisplayValue] = React.useState<string>(\"\");\n\n React.useEffect(() => {\n if (value === undefined || value === null || value === \"\" || value === 0) {\n setDisplayValue(\"\");\n return;\n }\n const numValue = typeof value === \"string\" ? parseFloat(value) : value;\n setDisplayValue(!isNaN(numValue) && numValue > 0 ? maskCurrency(numValue) : \"\");\n }, [value]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n const cleaned = inputValue.replace(/[^\\d,.-]/g, \"\");\n\n if (cleaned === \"\" || cleaned.replace(/\\D/g, \"\") === \"\") {\n setDisplayValue(\"\");\n onChange?.(0);\n return;\n }\n\n setDisplayValue(cleaned);\n onChange?.(unmaskCurrency(cleaned));\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n const cleaned = e.target.value.replace(/[^\\d,.-]/g, \"\");\n if (cleaned === \"\" || cleaned.replace(/\\D/g, \"\") === \"\") {\n setDisplayValue(\"\");\n onChange?.(0);\n } else {\n const numericValue = unmaskCurrency(cleaned);\n setDisplayValue(maskCurrency(numericValue));\n onChange?.(numericValue);\n }\n props.onBlur?.(e);\n };\n\n return (\n <div className=\"relative\">\n <span className=\"absolute left-4 top-1/2 -translate-y-1/2 text-gray-500 text-sm\">R$</span>\n <Input\n {...props}\n ref={ref}\n type=\"text\"\n value={displayValue}\n onChange={handleChange}\n onBlur={handleBlur}\n className={cn(\"pl-10\", error && \"border-red-500 focus:ring-red-500 focus:border-red-500\", className)}\n placeholder=\"0,00\"\n />\n </div>\n );\n },\n);\n\nCurrencyInput.displayName = \"CurrencyInput\";\n","export function maskCurrency(value: string | number): string {\n const numValue =\n typeof value === \"string\"\n ? parseFloat(value.replace(/\\D/g, \"\")) / 100\n : typeof value === \"number\"\n ? value\n : 0;\n\n if (isNaN(numValue) || numValue === 0) return \"\";\n\n return new Intl.NumberFormat(\"pt-BR\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(numValue);\n}\n\nexport function unmaskCurrency(value: string): number {\n if (!value || value.trim() === \"\") return 0;\n\n const cleaned = value.replace(/[^\\d,.-]/g, \"\");\n if (cleaned === \"\") return 0;\n\n if (cleaned.includes(\",\")) {\n const normalized = cleaned.replace(/\\./g, \"\").replace(\",\", \".\");\n const numValue = parseFloat(normalized);\n return isNaN(numValue) ? 0 : numValue;\n }\n\n const parts = cleaned.split(\".\");\n if (parts.length === 2 && parts[1].length <= 2) {\n return parseFloat(cleaned) || 0;\n }\n if (parts.length > 1) {\n return parseFloat(cleaned.replace(/\\./g, \"\")) || 0;\n }\n\n return parseFloat(cleaned) || 0;\n}\n","import * as React from \"react\";\nimport Image from \"next/image\";\nimport { cn } from \"./utils\";\nimport logoBlue from \"./assets/logo_blue.png\";\nimport logoOrange from \"./assets/logo_orange.png\";\nimport logoWhite from \"./assets/logo_white.png\";\nimport logoBlack from \"./assets/logo_black.png\";\n\nexport interface LogoProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n showTagline?: boolean;\n variant?: \"blue\" | \"orange\" | \"white\" | \"black\";\n}\n\nconst sizeClasses = {\n sm: { width: 100, height: 30 },\n md: { width: 140, height: 42 },\n lg: { width: 180, height: 54 },\n xl: { width: 220, height: 66 },\n};\n\n\n\nexport const DomifyLogo = React.forwardRef<HTMLDivElement, LogoProps>(\n ({ className, size = \"md\", showTagline = false, variant = \"orange\", ...props }, ref) => {\n const taglineColor = variant === \"orange\" ? \"text-[#FF7A00]\" : \"text-gray-300\";\n const dimensions = sizeClasses[size];\n\n return (\n <div ref={ref} className={cn(\"inline-block\", className)} {...props}>\n <Image\n src={variant === \"orange\" ? logoOrange : variant === \"blue\" ? logoBlue : variant === \"white\" ? logoWhite : logoBlack}\n alt=\"Domify\"\n width={dimensions.width}\n height={dimensions.height}\n priority\n className=\"object-contain\"\n style={{ width: \"auto\", height: \"auto\" }}\n />\n {showTagline ? (\n <p\n className={cn(\"text-xs mt-1\", taglineColor, {\n \"mt-0.5\": size === \"sm\",\n })}\n style={{ fontFamily: \"Inter\", fontWeight: 300 }}\n >\n Gestao Inteligente de Imoveis\n </p>\n ) : null}\n </div>\n );\n },\n);\n\nDomifyLogo.displayName = \"DomifyLogo\";\n"],"mappings":"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","names":["React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","Image"]}
package/dist/index.js CHANGED
@@ -760,6 +760,20 @@ CurrencyInput.displayName = "CurrencyInput";
760
760
  // src/logo.tsx
761
761
  import * as React10 from "react";
762
762
  import Image from "next/image";
763
+
764
+ // src/assets/logo_blue.png
765
+ var logo_blue_default = "./logo_blue-W6N7LJME.png";
766
+
767
+ // src/assets/logo_orange.png
768
+ var logo_orange_default = "./logo_orange-3J2OZLUQ.png";
769
+
770
+ // src/assets/logo_white.png
771
+ var logo_white_default = "./logo_white-ORMUB2SG.png";
772
+
773
+ // src/assets/logo_black.png
774
+ var logo_black_default = "./logo_black-27BSTZJS.png";
775
+
776
+ // src/logo.tsx
763
777
  import { jsx as jsx12, jsxs as jsxs6 } from "react/jsx-runtime";
764
778
  var sizeClasses = {
765
779
  sm: { width: 100, height: 30 },
@@ -770,13 +784,12 @@ var sizeClasses = {
770
784
  var DomifyLogo = React10.forwardRef(
771
785
  ({ className, size = "md", showTagline = false, variant = "orange", ...props }, ref) => {
772
786
  const taglineColor = variant === "orange" ? "text-[#FF7A00]" : "text-gray-300";
773
- const logoSrc = `/assets/logo_${variant}.svg`;
774
787
  const dimensions = sizeClasses[size];
775
788
  return /* @__PURE__ */ jsxs6("div", { ref, className: cn("inline-block", className), ...props, children: [
776
789
  /* @__PURE__ */ jsx12(
777
790
  Image,
778
791
  {
779
- src: logoSrc,
792
+ src: variant === "orange" ? logo_orange_default : variant === "blue" ? logo_blue_default : variant === "white" ? logo_white_default : logo_black_default,
780
793
  alt: "Domify",
781
794
  width: dimensions.width,
782
795
  height: dimensions.height,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/button.tsx","../src/utils.ts","../src/input.tsx","../src/select.tsx","../src/textarea.tsx","../src/checkbox.tsx","../src/switch.tsx","../src/tabs.tsx","../src/pagination.tsx","../src/skeleton.tsx","../src/searchable-select.tsx","../src/currency-input.tsx","../src/masks.ts","../src/logo.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\";\n size?: \"default\" | \"sm\" | \"lg\";\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant = \"default\", size = \"default\", ...props }, ref) => {\n return (\n <button\n className={cn(\n \"inline-flex items-center justify-center text-sm transition-all\",\n \"font-medium rounded-[10px]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[#0052CC]\",\n \"disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed\",\n {\n \"bg-[#0052CC] text-white hover:bg-[#003d99] active:bg-[#002d73] shadow-sm hover:shadow-md\":\n variant === \"default\",\n \"bg-[#FF7A00] text-white hover:bg-[#e66d00] active:bg-[#cc6000] shadow-sm hover:shadow-md\":\n variant === \"secondary\",\n \"bg-red-600 text-white hover:bg-red-700 active:bg-red-800 shadow-sm hover:shadow-md\":\n variant === \"destructive\",\n \"border-2 border-[#0052CC] bg-white text-[#0052CC] hover:bg-[#f0f5ff] hover:border-[#003d99]\":\n variant === \"outline\",\n \"text-[#4A4A4A] hover:bg-gray-100 active:bg-gray-200\":\n variant === \"ghost\",\n },\n {\n \"h-11 px-5 py-2.5\": size === \"default\",\n \"h-9 px-3 py-2 text-xs\": size === \"sm\",\n \"h-12 px-8 py-3\": size === \"lg\",\n },\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nButton.displayName = \"Button\";\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-11 w-full rounded-lg border-2 border-gray-300 bg-white px-4 py-2.5 text-sm text-[#0B2346] placeholder:text-[#888888] transition-all\",\n \"hover:border-gray-400\",\n \"focus:outline-none focus:ring-2 focus:ring-[#0052CC] focus:border-[#0052CC]\",\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-gray-50\",\n className,\n )}\n style={{ fontFamily: \"Inter, sans-serif\" }}\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nInput.displayName = \"Input\";\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport type SelectProps = React.SelectHTMLAttributes<HTMLSelectElement>;\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n ({ className, ...props }, ref) => {\n return (\n <select\n className={cn(\n \"flex h-11 w-full rounded-lg border-2 border-gray-300 bg-white px-4 py-2.5 text-sm text-gray-900 transition-all\",\n \"hover:border-gray-400\",\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500\",\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-gray-50\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nSelect.displayName = \"Select\";\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[100px] w-full rounded-lg border-2 border-gray-300 bg-white px-4 py-3 text-sm text-gray-900 placeholder:text-gray-500 transition-all\",\n \"hover:border-gray-400\",\n \"focus:outline-none focus:ring-2 focus:ring-[#0052CC] focus:border-[#0052CC]\",\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-gray-50\",\n \"resize-y\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nTextarea.displayName = \"Textarea\";\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport interface CheckboxProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, label, ...props }, ref) => {\n return (\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"checkbox\"\n className={cn(\n \"w-5 h-5 rounded border-2 border-gray-300 text-blue-600 transition-all\",\n \"hover:border-gray-400\",\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"cursor-pointer\",\n className,\n )}\n ref={ref}\n {...props}\n />\n {label ? (\n <span className=\"text-sm font-medium text-gray-700 select-none\">\n {label}\n </span>\n ) : null}\n </label>\n );\n },\n);\n\nCheckbox.displayName = \"Checkbox\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport interface SwitchProps {\n id?: string;\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n disabled?: boolean;\n className?: string;\n}\n\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n (\n { id, checked = false, onCheckedChange, disabled = false, className },\n ref,\n ) => {\n const handleClick = () => {\n if (!disabled && onCheckedChange) {\n onCheckedChange(!checked);\n }\n };\n\n return (\n <button\n type=\"button\"\n id={id}\n role=\"switch\"\n aria-checked={checked}\n disabled={disabled}\n onClick={handleClick}\n ref={ref}\n className={cn(\n \"relative inline-flex h-6 w-11 items-center rounded-full transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n checked ? \"bg-[#0052CC]\" : \"bg-gray-300\",\n className,\n )}\n >\n <span\n className={cn(\n \"inline-block h-5 w-5 transform rounded-full bg-white shadow-sm transition-transform\",\n checked ? \"translate-x-6\" : \"translate-x-0.5\",\n )}\n />\n </button>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\ninterface TabsContextValue {\n value: string;\n onValueChange: (value: string) => void;\n}\n\nconst TabsContext = React.createContext<TabsContextValue | undefined>(undefined);\n\nfunction useTabsContext() {\n const context = React.useContext(TabsContext);\n if (!context) {\n throw new Error(\"Tabs components must be used within a Tabs component\");\n }\n return context;\n}\n\ninterface TabsProps extends React.HTMLAttributes<HTMLDivElement> {\n defaultValue: string;\n onValueChange?: (value: string) => void;\n}\n\nexport function Tabs({\n defaultValue,\n onValueChange,\n children,\n className,\n ...props\n}: TabsProps) {\n const [value, setValue] = React.useState(defaultValue);\n\n const handleValueChange = React.useCallback(\n (newValue: string) => {\n setValue(newValue);\n onValueChange?.(newValue);\n },\n [onValueChange],\n );\n\n return (\n <TabsContext.Provider value={{ value, onValueChange: handleValueChange }}>\n <div className={cn(\"w-full\", className)} {...props}>\n {children}\n </div>\n </TabsContext.Provider>\n );\n}\n\ntype TabsListProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport function TabsList({ children, className, ...props }: TabsListProps) {\n return (\n <div\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-lg bg-gray-100 p-1 text-gray-500\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\ninterface TabsTriggerProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string;\n}\n\nexport function TabsTrigger({\n value,\n children,\n className,\n ...props\n}: TabsTriggerProps) {\n const { value: selectedValue, onValueChange } = useTabsContext();\n const isSelected = value === selectedValue;\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n onClick={() => onValueChange(value)}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1.5 text-sm font-medium transition-all\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n isSelected\n ? \"bg-white text-gray-900 shadow-sm\"\n : \"text-gray-600 hover:bg-gray-50 hover:text-gray-900\",\n className,\n )}\n {...props}\n >\n {children}\n </button>\n );\n}\n\ninterface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string;\n}\n\nexport function TabsContent({\n value,\n children,\n className,\n ...props\n}: TabsContentProps) {\n const { value: selectedValue } = useTabsContext();\n\n if (value !== selectedValue) return null;\n\n return (\n <div role=\"tabpanel\" className={cn(\"mt-2\", className)} {...props}>\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from \"lucide-react\";\nimport { Button } from \"./button\";\n\ninterface PaginationProps {\n currentPage: number;\n totalPages: number;\n totalItems: number;\n perPage: number;\n onPageChange: (page: number) => void;\n className?: string;\n}\n\nexport function Pagination({\n currentPage,\n totalPages,\n totalItems,\n perPage,\n onPageChange,\n className = \"\",\n}: PaginationProps) {\n const startItem = (currentPage - 1) * perPage + 1;\n const endItem = Math.min(currentPage * perPage, totalItems);\n\n const getPageNumbers = () => {\n const pages: (number | string)[] = [];\n const maxVisiblePages = 5;\n\n if (totalPages <= maxVisiblePages) {\n for (let i = 1; i <= totalPages; i++) pages.push(i);\n return pages;\n }\n\n pages.push(1);\n if (currentPage > 3) pages.push(\"...\");\n\n const start = Math.max(2, currentPage - 1);\n const end = Math.min(totalPages - 1, currentPage + 1);\n for (let i = start; i <= end; i++) {\n if (!pages.includes(i)) pages.push(i);\n }\n\n if (currentPage < totalPages - 2) pages.push(\"...\");\n if (!pages.includes(totalPages)) pages.push(totalPages);\n\n return pages;\n };\n\n if (totalPages <= 1) {\n return (\n <div className={`flex items-center justify-center text-sm text-[#888888] ${className}`}>\n Mostrando {totalItems} de {totalItems} {totalItems === 1 ? \"item\" : \"itens\"}\n </div>\n );\n }\n\n return (\n <div className={`flex flex-col sm:flex-row items-center justify-between gap-4 ${className}`}>\n <div className=\"text-sm text-[#888888]\" style={{ fontFamily: \"Inter\" }}>\n Mostrando {startItem} a {endItem} de {totalItems} {totalItems === 1 ? \"item\" : \"itens\"}\n </div>\n\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(1)}\n disabled={currentPage === 1}\n className=\"hidden sm:flex\"\n >\n <ChevronsLeft size={16} />\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage === 1}\n >\n <ChevronLeft size={16} />\n </Button>\n\n <div className=\"flex items-center gap-1\">\n {getPageNumbers().map((page, index) =>\n page === \"...\" ? (\n <span key={`ellipsis-${index}`} className=\"px-2 text-[#888888]\">\n ...\n </span>\n ) : (\n <Button\n key={page}\n variant={currentPage === page ? \"default\" : \"outline\"}\n size=\"sm\"\n onClick={() => onPageChange(page as number)}\n className=\"min-w-[36px]\"\n >\n {page}\n </Button>\n ),\n )}\n </div>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n >\n <ChevronRight size={16} />\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(totalPages)}\n disabled={currentPage === totalPages}\n className=\"hidden sm:flex\"\n >\n <ChevronsRight size={16} />\n </Button>\n </div>\n </div>\n );\n}\n\nexport function PaginationCompact({\n currentPage,\n totalPages,\n onPageChange,\n}: Pick<PaginationProps, \"currentPage\" | \"totalPages\" | \"onPageChange\">) {\n if (totalPages <= 1) return null;\n\n return (\n <div className=\"flex items-center justify-center gap-4\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage === 1}\n >\n <ChevronLeft size={16} />\n Anterior\n </Button>\n\n <span className=\"text-sm text-[#888888]\" style={{ fontFamily: \"Inter\" }}>\n Pagina {currentPage} de {totalPages}\n </span>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n >\n Proxima\n <ChevronRight size={16} />\n </Button>\n </div>\n );\n}\n","\"use client\";\n\nimport { cn } from \"./utils\";\n\ninterface SkeletonProps {\n className?: string;\n}\n\nexport function Skeleton({ className }: SkeletonProps) {\n return <div className={cn(\"animate-pulse rounded-md bg-gray-200\", className)} />;\n}\n\nexport function PropertyCardSkeleton() {\n return (\n <div className=\"bg-white rounded-lg shadow overflow-hidden\">\n <Skeleton className=\"h-48 w-full rounded-none\" />\n <div className=\"p-4 space-y-3\">\n <Skeleton className=\"h-4 w-1/4\" />\n <Skeleton className=\"h-6 w-3/4\" />\n <Skeleton className=\"h-4 w-1/2\" />\n <div className=\"flex gap-4 pt-2\">\n <Skeleton className=\"h-4 w-16\" />\n <Skeleton className=\"h-4 w-16\" />\n <Skeleton className=\"h-4 w-16\" />\n </div>\n <div className=\"flex justify-between pt-4\">\n <Skeleton className=\"h-6 w-24\" />\n <Skeleton className=\"h-8 w-20\" />\n </div>\n </div>\n </div>\n );\n}\n\nexport function TableRowSkeleton({ columns = 5 }: { columns?: number }) {\n return (\n <tr className=\"border-b border-gray-100\">\n {Array.from({ length: columns }).map((_, i) => (\n <td key={i} className=\"px-4 py-3\">\n <Skeleton className=\"h-4 w-full\" />\n </td>\n ))}\n </tr>\n );\n}\n\nexport function TableSkeleton({\n rows = 5,\n columns = 5,\n}: {\n rows?: number;\n columns?: number;\n}) {\n return (\n <div className=\"bg-white rounded-lg shadow overflow-hidden\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full\">\n <thead className=\"bg-gray-50\">\n <tr>\n {Array.from({ length: columns }).map((_, i) => (\n <th key={i} className=\"px-4 py-3 text-left\">\n <Skeleton className=\"h-4 w-20\" />\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {Array.from({ length: rows }).map((_, i) => (\n <TableRowSkeleton key={i} columns={columns} />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n\nexport function ListItemSkeleton() {\n return (\n <div className=\"flex items-center gap-4 p-4 bg-white rounded-lg shadow\">\n <Skeleton className=\"h-12 w-12 rounded-full\" />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-4 w-1/3\" />\n <Skeleton className=\"h-3 w-1/2\" />\n </div>\n <Skeleton className=\"h-8 w-20\" />\n </div>\n );\n}\n\nexport function StatsCardSkeleton() {\n return (\n <div className=\"bg-white rounded-lg shadow p-6\">\n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-2\">\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-8 w-16\" />\n </div>\n <Skeleton className=\"h-12 w-12 rounded-full\" />\n </div>\n </div>\n );\n}\n\nexport function FormSkeleton({ fields = 4 }: { fields?: number }) {\n return (\n <div className=\"bg-white rounded-lg shadow p-6 space-y-6\">\n {Array.from({ length: fields }).map((_, i) => (\n <div key={i} className=\"space-y-2\">\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-10 w-full\" />\n </div>\n ))}\n <div className=\"flex justify-end gap-4 pt-4\">\n <Skeleton className=\"h-10 w-24\" />\n <Skeleton className=\"h-10 w-32\" />\n </div>\n </div>\n );\n}\n\nexport function DetailPageSkeleton() {\n return (\n <div className=\"space-y-6\">\n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-2\">\n <Skeleton className=\"h-8 w-48\" />\n <Skeleton className=\"h-4 w-32\" />\n </div>\n <div className=\"flex gap-2\">\n <Skeleton className=\"h-10 w-24\" />\n <Skeleton className=\"h-10 w-24\" />\n </div>\n </div>\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n <div className=\"lg:col-span-2 space-y-6\">\n <div className=\"bg-white rounded-lg shadow p-6 space-y-4\">\n <Skeleton className=\"h-6 w-32\" />\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-3/4\" />\n </div>\n <div className=\"bg-white rounded-lg shadow p-6 space-y-4\">\n <Skeleton className=\"h-6 w-32\" />\n <div className=\"grid grid-cols-2 gap-4\">\n {Array.from({ length: 6 }).map((_, i) => (\n <div key={i} className=\"space-y-1\">\n <Skeleton className=\"h-4 w-20\" />\n <Skeleton className=\"h-4 w-28\" />\n </div>\n ))}\n </div>\n </div>\n </div>\n <div className=\"space-y-6\">\n <div className=\"bg-white rounded-lg shadow p-6 space-y-4\">\n <Skeleton className=\"h-6 w-24\" />\n <Skeleton className=\"h-8 w-full\" />\n <Skeleton className=\"h-4 w-full\" />\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport function DashboardSkeleton() {\n return (\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4\">\n {Array.from({ length: 4 }).map((_, i) => (\n <StatsCardSkeleton key={i} />\n ))}\n </div>\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n <div className=\"bg-white rounded-lg shadow p-6\">\n <Skeleton className=\"h-6 w-32 mb-4\" />\n <Skeleton className=\"h-64 w-full\" />\n </div>\n <div className=\"bg-white rounded-lg shadow p-6\">\n <Skeleton className=\"h-6 w-32 mb-4\" />\n <div className=\"space-y-4\">\n {Array.from({ length: 5 }).map((_, i) => (\n <ListItemSkeleton key={i} />\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Search, ChevronDown } from \"lucide-react\";\nimport { cn } from \"./utils\";\n\nexport interface SearchableSelectOption {\n id: number | string;\n label: string;\n [key: string]: unknown;\n}\n\nexport interface SearchableSelectProps {\n options: SearchableSelectOption[];\n value?: number | string | null;\n onChange?: (value: number | string | null) => void;\n onBlur?: () => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n getOptionLabel?: (option: SearchableSelectOption) => string;\n filterFunction?: (option: SearchableSelectOption, searchTerm: string) => boolean;\n emptyMessage?: string;\n name?: string;\n}\n\nexport const SearchableSelect = React.forwardRef<\n HTMLInputElement,\n SearchableSelectProps\n>(\n (\n {\n options,\n value,\n onChange,\n onBlur,\n placeholder = \"Selecione uma opcao...\",\n disabled = false,\n className,\n getOptionLabel = (option) => option.label,\n filterFunction,\n emptyMessage = \"Nenhuma opcao encontrada\",\n name,\n },\n ref,\n ) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [searchTerm, setSearchTerm] = React.useState(\"\");\n const containerRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLUListElement>(null);\n\n const selectedOption = React.useMemo(\n () => options.find((opt) => opt.id === value) || null,\n [options, value],\n );\n\n const filteredOptions = React.useMemo(() => {\n if (!searchTerm.trim()) return options;\n const term = searchTerm.toLowerCase().trim();\n if (filterFunction) return options.filter((option) => filterFunction(option, term));\n return options.filter((option) => getOptionLabel(option).toLowerCase().includes(term));\n }, [options, searchTerm, getOptionLabel, filterFunction]);\n\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n setSearchTerm(\"\");\n }\n };\n\n if (!isOpen) return;\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isOpen]);\n\n React.useEffect(() => {\n if (!isOpen || !listRef.current || !selectedOption) return;\n const selectedIndex = filteredOptions.findIndex((opt) => opt.id === selectedOption.id);\n if (selectedIndex < 0) return;\n const selectedElement = listRef.current.children[selectedIndex] as HTMLElement;\n selectedElement?.scrollIntoView({ block: \"nearest\" });\n }, [isOpen, selectedOption, filteredOptions]);\n\n const handleSelect = (option: SearchableSelectOption) => {\n onChange?.(option.id);\n setIsOpen(false);\n setSearchTerm(\"\");\n onBlur?.();\n };\n\n const handleToggle = () => {\n if (disabled) return;\n setIsOpen((prev) => !prev);\n setTimeout(() => inputRef.current?.focus(), 0);\n };\n\n const displayValue = selectedOption ? getOptionLabel(selectedOption) : \"\";\n\n return (\n <div ref={containerRef} className={cn(\"relative w-full\", className)}>\n <div\n className={cn(\n \"flex h-11 w-full rounded-lg border-2 bg-white px-4 py-2.5 text-sm text-gray-900 transition-all cursor-pointer\",\n \"hover:border-gray-400\",\n \"focus-within:outline-none focus-within:ring-2 focus-within:ring-blue-500 focus-within:border-blue-500\",\n disabled && \"cursor-not-allowed opacity-50 bg-gray-50 hover:border-gray-300\",\n !isOpen && \"border-gray-300\",\n )}\n onClick={handleToggle}\n >\n <div className=\"flex items-center flex-1 min-w-0\">\n {!isOpen && !displayValue ? <span className=\"text-gray-500\">{placeholder}</span> : null}\n {!isOpen && displayValue ? <span className=\"truncate\">{displayValue}</span> : null}\n {isOpen ? (\n <input\n ref={inputRef}\n type=\"text\"\n value={searchTerm}\n onChange={(e) => {\n if (disabled) return;\n setSearchTerm(e.target.value);\n setIsOpen(true);\n }}\n placeholder={placeholder}\n className=\"flex-1 outline-none bg-transparent text-gray-900 placeholder:text-gray-500\"\n onClick={(e) => e.stopPropagation()}\n disabled={disabled}\n />\n ) : null}\n </div>\n\n <div className=\"flex items-center gap-2 ml-2\">\n <Search size={18} className={cn(\"text-gray-500 transition-transform\", isOpen && \"rotate-90\")} />\n <ChevronDown\n size={18}\n className={cn(\"text-gray-500 transition-transform\", isOpen && \"rotate-180\")}\n />\n </div>\n </div>\n\n {isOpen ? (\n <div className=\"absolute z-50 w-full mt-1 bg-white border-2 border-gray-300 rounded-lg shadow-lg max-h-60 overflow-hidden\">\n <ul ref={listRef} className=\"overflow-y-auto max-h-60 py-1\" role=\"listbox\">\n {filteredOptions.length === 0 ? (\n <li className=\"px-4 py-3 text-sm text-gray-500 text-center\">{emptyMessage}</li>\n ) : (\n filteredOptions.map((option) => {\n const isSelected = option.id === value;\n const label = getOptionLabel(option);\n return (\n <li\n key={option.id}\n role=\"option\"\n aria-selected={isSelected}\n className={cn(\n \"px-4 py-2 cursor-pointer text-sm transition-colors\",\n \"hover:bg-blue-50 hover:text-blue-900\",\n isSelected && \"bg-blue-100 text-blue-900 font-medium\",\n )}\n onClick={() => handleSelect(option)}\n >\n {label}\n </li>\n );\n })\n )}\n </ul>\n </div>\n ) : null}\n\n {name ? <input ref={ref} type=\"hidden\" name={name} value={value || \"\"} readOnly /> : null}\n </div>\n );\n },\n);\n\nSearchableSelect.displayName = \"SearchableSelect\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Input, InputProps } from \"./input\";\nimport { cn } from \"./utils\";\nimport { maskCurrency, unmaskCurrency } from \"./masks\";\n\ninterface CurrencyInputProps extends Omit<InputProps, \"type\" | \"value\" | \"onChange\"> {\n value?: number | string;\n onChange?: (value: number) => void;\n error?: boolean;\n}\n\nexport const CurrencyInput = React.forwardRef<HTMLInputElement, CurrencyInputProps>(\n ({ className, value, onChange, error, ...props }, ref) => {\n const [displayValue, setDisplayValue] = React.useState<string>(\"\");\n\n React.useEffect(() => {\n if (value === undefined || value === null || value === \"\" || value === 0) {\n setDisplayValue(\"\");\n return;\n }\n const numValue = typeof value === \"string\" ? parseFloat(value) : value;\n setDisplayValue(!isNaN(numValue) && numValue > 0 ? maskCurrency(numValue) : \"\");\n }, [value]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n const cleaned = inputValue.replace(/[^\\d,.-]/g, \"\");\n\n if (cleaned === \"\" || cleaned.replace(/\\D/g, \"\") === \"\") {\n setDisplayValue(\"\");\n onChange?.(0);\n return;\n }\n\n setDisplayValue(cleaned);\n onChange?.(unmaskCurrency(cleaned));\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n const cleaned = e.target.value.replace(/[^\\d,.-]/g, \"\");\n if (cleaned === \"\" || cleaned.replace(/\\D/g, \"\") === \"\") {\n setDisplayValue(\"\");\n onChange?.(0);\n } else {\n const numericValue = unmaskCurrency(cleaned);\n setDisplayValue(maskCurrency(numericValue));\n onChange?.(numericValue);\n }\n props.onBlur?.(e);\n };\n\n return (\n <div className=\"relative\">\n <span className=\"absolute left-4 top-1/2 -translate-y-1/2 text-gray-500 text-sm\">R$</span>\n <Input\n {...props}\n ref={ref}\n type=\"text\"\n value={displayValue}\n onChange={handleChange}\n onBlur={handleBlur}\n className={cn(\"pl-10\", error && \"border-red-500 focus:ring-red-500 focus:border-red-500\", className)}\n placeholder=\"0,00\"\n />\n </div>\n );\n },\n);\n\nCurrencyInput.displayName = \"CurrencyInput\";\n","export function maskCurrency(value: string | number): string {\n const numValue =\n typeof value === \"string\"\n ? parseFloat(value.replace(/\\D/g, \"\")) / 100\n : typeof value === \"number\"\n ? value\n : 0;\n\n if (isNaN(numValue) || numValue === 0) return \"\";\n\n return new Intl.NumberFormat(\"pt-BR\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(numValue);\n}\n\nexport function unmaskCurrency(value: string): number {\n if (!value || value.trim() === \"\") return 0;\n\n const cleaned = value.replace(/[^\\d,.-]/g, \"\");\n if (cleaned === \"\") return 0;\n\n if (cleaned.includes(\",\")) {\n const normalized = cleaned.replace(/\\./g, \"\").replace(\",\", \".\");\n const numValue = parseFloat(normalized);\n return isNaN(numValue) ? 0 : numValue;\n }\n\n const parts = cleaned.split(\".\");\n if (parts.length === 2 && parts[1].length <= 2) {\n return parseFloat(cleaned) || 0;\n }\n if (parts.length > 1) {\n return parseFloat(cleaned.replace(/\\./g, \"\")) || 0;\n }\n\n return parseFloat(cleaned) || 0;\n}\n","import * as React from \"react\";\nimport Image from \"next/image\";\nimport { cn } from \"./utils\";\n\nexport interface LogoProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n showTagline?: boolean;\n variant?: \"blue\" | \"orange\" | \"white\" | \"black\";\n}\n\nconst sizeClasses = {\n sm: { width: 100, height: 30 },\n md: { width: 140, height: 42 },\n lg: { width: 180, height: 54 },\n xl: { width: 220, height: 66 },\n};\n\nexport const DomifyLogo = React.forwardRef<HTMLDivElement, LogoProps>(\n ({ className, size = \"md\", showTagline = false, variant = \"orange\", ...props }, ref) => {\n const taglineColor = variant === \"orange\" ? \"text-[#FF7A00]\" : \"text-gray-300\";\n const logoSrc = `/assets/logo_${variant}.svg`;\n const dimensions = sizeClasses[size];\n\n return (\n <div ref={ref} className={cn(\"inline-block\", className)} {...props}>\n <Image\n src={logoSrc}\n alt=\"Domify\"\n width={dimensions.width}\n height={dimensions.height}\n priority\n className=\"object-contain\"\n style={{ width: \"auto\", height: \"auto\" }}\n />\n {showTagline ? (\n <p\n className={cn(\"text-xs mt-1\", taglineColor, {\n \"mt-0.5\": size === \"sm\",\n })}\n style={{ fontFamily: \"Inter\", fontWeight: 300 }}\n >\n Gestao Inteligente de Imoveis\n </p>\n ) : null}\n </div>\n );\n },\n);\n\nDomifyLogo.displayName = \"DomifyLogo\";\n"],"mappings":"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","names":["React","jsx","React","jsx","React","jsx","React","jsx","React","jsx","React","jsx","jsx","jsxs","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs"]}
1
+ {"version":3,"sources":["../src/button.tsx","../src/utils.ts","../src/input.tsx","../src/select.tsx","../src/textarea.tsx","../src/checkbox.tsx","../src/switch.tsx","../src/tabs.tsx","../src/pagination.tsx","../src/skeleton.tsx","../src/searchable-select.tsx","../src/currency-input.tsx","../src/masks.ts","../src/logo.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\";\n size?: \"default\" | \"sm\" | \"lg\";\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant = \"default\", size = \"default\", ...props }, ref) => {\n return (\n <button\n className={cn(\n \"inline-flex items-center justify-center text-sm transition-all\",\n \"font-medium rounded-[10px]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[#0052CC]\",\n \"disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed\",\n {\n \"bg-[#0052CC] text-white hover:bg-[#003d99] active:bg-[#002d73] shadow-sm hover:shadow-md\":\n variant === \"default\",\n \"bg-[#FF7A00] text-white hover:bg-[#e66d00] active:bg-[#cc6000] shadow-sm hover:shadow-md\":\n variant === \"secondary\",\n \"bg-red-600 text-white hover:bg-red-700 active:bg-red-800 shadow-sm hover:shadow-md\":\n variant === \"destructive\",\n \"border-2 border-[#0052CC] bg-white text-[#0052CC] hover:bg-[#f0f5ff] hover:border-[#003d99]\":\n variant === \"outline\",\n \"text-[#4A4A4A] hover:bg-gray-100 active:bg-gray-200\":\n variant === \"ghost\",\n },\n {\n \"h-11 px-5 py-2.5\": size === \"default\",\n \"h-9 px-3 py-2 text-xs\": size === \"sm\",\n \"h-12 px-8 py-3\": size === \"lg\",\n },\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nButton.displayName = \"Button\";\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-11 w-full rounded-lg border-2 border-gray-300 bg-white px-4 py-2.5 text-sm text-[#0B2346] placeholder:text-[#888888] transition-all\",\n \"hover:border-gray-400\",\n \"focus:outline-none focus:ring-2 focus:ring-[#0052CC] focus:border-[#0052CC]\",\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-gray-50\",\n className,\n )}\n style={{ fontFamily: \"Inter, sans-serif\" }}\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nInput.displayName = \"Input\";\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport type SelectProps = React.SelectHTMLAttributes<HTMLSelectElement>;\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n ({ className, ...props }, ref) => {\n return (\n <select\n className={cn(\n \"flex h-11 w-full rounded-lg border-2 border-gray-300 bg-white px-4 py-2.5 text-sm text-gray-900 transition-all\",\n \"hover:border-gray-400\",\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500\",\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-gray-50\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nSelect.displayName = \"Select\";\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[100px] w-full rounded-lg border-2 border-gray-300 bg-white px-4 py-3 text-sm text-gray-900 placeholder:text-gray-500 transition-all\",\n \"hover:border-gray-400\",\n \"focus:outline-none focus:ring-2 focus:ring-[#0052CC] focus:border-[#0052CC]\",\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-gray-50\",\n \"resize-y\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nTextarea.displayName = \"Textarea\";\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport interface CheckboxProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, label, ...props }, ref) => {\n return (\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"checkbox\"\n className={cn(\n \"w-5 h-5 rounded border-2 border-gray-300 text-blue-600 transition-all\",\n \"hover:border-gray-400\",\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"cursor-pointer\",\n className,\n )}\n ref={ref}\n {...props}\n />\n {label ? (\n <span className=\"text-sm font-medium text-gray-700 select-none\">\n {label}\n </span>\n ) : null}\n </label>\n );\n },\n);\n\nCheckbox.displayName = \"Checkbox\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"./utils\";\n\nexport interface SwitchProps {\n id?: string;\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n disabled?: boolean;\n className?: string;\n}\n\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n (\n { id, checked = false, onCheckedChange, disabled = false, className },\n ref,\n ) => {\n const handleClick = () => {\n if (!disabled && onCheckedChange) {\n onCheckedChange(!checked);\n }\n };\n\n return (\n <button\n type=\"button\"\n id={id}\n role=\"switch\"\n aria-checked={checked}\n disabled={disabled}\n onClick={handleClick}\n ref={ref}\n className={cn(\n \"relative inline-flex h-6 w-11 items-center rounded-full transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n checked ? \"bg-[#0052CC]\" : \"bg-gray-300\",\n className,\n )}\n >\n <span\n className={cn(\n \"inline-block h-5 w-5 transform rounded-full bg-white shadow-sm transition-transform\",\n checked ? \"translate-x-6\" : \"translate-x-0.5\",\n )}\n />\n </button>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\n","import * as React from \"react\";\nimport { cn } from \"./utils\";\n\ninterface TabsContextValue {\n value: string;\n onValueChange: (value: string) => void;\n}\n\nconst TabsContext = React.createContext<TabsContextValue | undefined>(undefined);\n\nfunction useTabsContext() {\n const context = React.useContext(TabsContext);\n if (!context) {\n throw new Error(\"Tabs components must be used within a Tabs component\");\n }\n return context;\n}\n\ninterface TabsProps extends React.HTMLAttributes<HTMLDivElement> {\n defaultValue: string;\n onValueChange?: (value: string) => void;\n}\n\nexport function Tabs({\n defaultValue,\n onValueChange,\n children,\n className,\n ...props\n}: TabsProps) {\n const [value, setValue] = React.useState(defaultValue);\n\n const handleValueChange = React.useCallback(\n (newValue: string) => {\n setValue(newValue);\n onValueChange?.(newValue);\n },\n [onValueChange],\n );\n\n return (\n <TabsContext.Provider value={{ value, onValueChange: handleValueChange }}>\n <div className={cn(\"w-full\", className)} {...props}>\n {children}\n </div>\n </TabsContext.Provider>\n );\n}\n\ntype TabsListProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport function TabsList({ children, className, ...props }: TabsListProps) {\n return (\n <div\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-lg bg-gray-100 p-1 text-gray-500\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\ninterface TabsTriggerProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string;\n}\n\nexport function TabsTrigger({\n value,\n children,\n className,\n ...props\n}: TabsTriggerProps) {\n const { value: selectedValue, onValueChange } = useTabsContext();\n const isSelected = value === selectedValue;\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n onClick={() => onValueChange(value)}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1.5 text-sm font-medium transition-all\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n isSelected\n ? \"bg-white text-gray-900 shadow-sm\"\n : \"text-gray-600 hover:bg-gray-50 hover:text-gray-900\",\n className,\n )}\n {...props}\n >\n {children}\n </button>\n );\n}\n\ninterface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string;\n}\n\nexport function TabsContent({\n value,\n children,\n className,\n ...props\n}: TabsContentProps) {\n const { value: selectedValue } = useTabsContext();\n\n if (value !== selectedValue) return null;\n\n return (\n <div role=\"tabpanel\" className={cn(\"mt-2\", className)} {...props}>\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from \"lucide-react\";\nimport { Button } from \"./button\";\n\ninterface PaginationProps {\n currentPage: number;\n totalPages: number;\n totalItems: number;\n perPage: number;\n onPageChange: (page: number) => void;\n className?: string;\n}\n\nexport function Pagination({\n currentPage,\n totalPages,\n totalItems,\n perPage,\n onPageChange,\n className = \"\",\n}: PaginationProps) {\n const startItem = (currentPage - 1) * perPage + 1;\n const endItem = Math.min(currentPage * perPage, totalItems);\n\n const getPageNumbers = () => {\n const pages: (number | string)[] = [];\n const maxVisiblePages = 5;\n\n if (totalPages <= maxVisiblePages) {\n for (let i = 1; i <= totalPages; i++) pages.push(i);\n return pages;\n }\n\n pages.push(1);\n if (currentPage > 3) pages.push(\"...\");\n\n const start = Math.max(2, currentPage - 1);\n const end = Math.min(totalPages - 1, currentPage + 1);\n for (let i = start; i <= end; i++) {\n if (!pages.includes(i)) pages.push(i);\n }\n\n if (currentPage < totalPages - 2) pages.push(\"...\");\n if (!pages.includes(totalPages)) pages.push(totalPages);\n\n return pages;\n };\n\n if (totalPages <= 1) {\n return (\n <div className={`flex items-center justify-center text-sm text-[#888888] ${className}`}>\n Mostrando {totalItems} de {totalItems} {totalItems === 1 ? \"item\" : \"itens\"}\n </div>\n );\n }\n\n return (\n <div className={`flex flex-col sm:flex-row items-center justify-between gap-4 ${className}`}>\n <div className=\"text-sm text-[#888888]\" style={{ fontFamily: \"Inter\" }}>\n Mostrando {startItem} a {endItem} de {totalItems} {totalItems === 1 ? \"item\" : \"itens\"}\n </div>\n\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(1)}\n disabled={currentPage === 1}\n className=\"hidden sm:flex\"\n >\n <ChevronsLeft size={16} />\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage === 1}\n >\n <ChevronLeft size={16} />\n </Button>\n\n <div className=\"flex items-center gap-1\">\n {getPageNumbers().map((page, index) =>\n page === \"...\" ? (\n <span key={`ellipsis-${index}`} className=\"px-2 text-[#888888]\">\n ...\n </span>\n ) : (\n <Button\n key={page}\n variant={currentPage === page ? \"default\" : \"outline\"}\n size=\"sm\"\n onClick={() => onPageChange(page as number)}\n className=\"min-w-[36px]\"\n >\n {page}\n </Button>\n ),\n )}\n </div>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n >\n <ChevronRight size={16} />\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(totalPages)}\n disabled={currentPage === totalPages}\n className=\"hidden sm:flex\"\n >\n <ChevronsRight size={16} />\n </Button>\n </div>\n </div>\n );\n}\n\nexport function PaginationCompact({\n currentPage,\n totalPages,\n onPageChange,\n}: Pick<PaginationProps, \"currentPage\" | \"totalPages\" | \"onPageChange\">) {\n if (totalPages <= 1) return null;\n\n return (\n <div className=\"flex items-center justify-center gap-4\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage === 1}\n >\n <ChevronLeft size={16} />\n Anterior\n </Button>\n\n <span className=\"text-sm text-[#888888]\" style={{ fontFamily: \"Inter\" }}>\n Pagina {currentPage} de {totalPages}\n </span>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n >\n Proxima\n <ChevronRight size={16} />\n </Button>\n </div>\n );\n}\n","\"use client\";\n\nimport { cn } from \"./utils\";\n\ninterface SkeletonProps {\n className?: string;\n}\n\nexport function Skeleton({ className }: SkeletonProps) {\n return <div className={cn(\"animate-pulse rounded-md bg-gray-200\", className)} />;\n}\n\nexport function PropertyCardSkeleton() {\n return (\n <div className=\"bg-white rounded-lg shadow overflow-hidden\">\n <Skeleton className=\"h-48 w-full rounded-none\" />\n <div className=\"p-4 space-y-3\">\n <Skeleton className=\"h-4 w-1/4\" />\n <Skeleton className=\"h-6 w-3/4\" />\n <Skeleton className=\"h-4 w-1/2\" />\n <div className=\"flex gap-4 pt-2\">\n <Skeleton className=\"h-4 w-16\" />\n <Skeleton className=\"h-4 w-16\" />\n <Skeleton className=\"h-4 w-16\" />\n </div>\n <div className=\"flex justify-between pt-4\">\n <Skeleton className=\"h-6 w-24\" />\n <Skeleton className=\"h-8 w-20\" />\n </div>\n </div>\n </div>\n );\n}\n\nexport function TableRowSkeleton({ columns = 5 }: { columns?: number }) {\n return (\n <tr className=\"border-b border-gray-100\">\n {Array.from({ length: columns }).map((_, i) => (\n <td key={i} className=\"px-4 py-3\">\n <Skeleton className=\"h-4 w-full\" />\n </td>\n ))}\n </tr>\n );\n}\n\nexport function TableSkeleton({\n rows = 5,\n columns = 5,\n}: {\n rows?: number;\n columns?: number;\n}) {\n return (\n <div className=\"bg-white rounded-lg shadow overflow-hidden\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full\">\n <thead className=\"bg-gray-50\">\n <tr>\n {Array.from({ length: columns }).map((_, i) => (\n <th key={i} className=\"px-4 py-3 text-left\">\n <Skeleton className=\"h-4 w-20\" />\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {Array.from({ length: rows }).map((_, i) => (\n <TableRowSkeleton key={i} columns={columns} />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n\nexport function ListItemSkeleton() {\n return (\n <div className=\"flex items-center gap-4 p-4 bg-white rounded-lg shadow\">\n <Skeleton className=\"h-12 w-12 rounded-full\" />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-4 w-1/3\" />\n <Skeleton className=\"h-3 w-1/2\" />\n </div>\n <Skeleton className=\"h-8 w-20\" />\n </div>\n );\n}\n\nexport function StatsCardSkeleton() {\n return (\n <div className=\"bg-white rounded-lg shadow p-6\">\n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-2\">\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-8 w-16\" />\n </div>\n <Skeleton className=\"h-12 w-12 rounded-full\" />\n </div>\n </div>\n );\n}\n\nexport function FormSkeleton({ fields = 4 }: { fields?: number }) {\n return (\n <div className=\"bg-white rounded-lg shadow p-6 space-y-6\">\n {Array.from({ length: fields }).map((_, i) => (\n <div key={i} className=\"space-y-2\">\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-10 w-full\" />\n </div>\n ))}\n <div className=\"flex justify-end gap-4 pt-4\">\n <Skeleton className=\"h-10 w-24\" />\n <Skeleton className=\"h-10 w-32\" />\n </div>\n </div>\n );\n}\n\nexport function DetailPageSkeleton() {\n return (\n <div className=\"space-y-6\">\n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-2\">\n <Skeleton className=\"h-8 w-48\" />\n <Skeleton className=\"h-4 w-32\" />\n </div>\n <div className=\"flex gap-2\">\n <Skeleton className=\"h-10 w-24\" />\n <Skeleton className=\"h-10 w-24\" />\n </div>\n </div>\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n <div className=\"lg:col-span-2 space-y-6\">\n <div className=\"bg-white rounded-lg shadow p-6 space-y-4\">\n <Skeleton className=\"h-6 w-32\" />\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-3/4\" />\n </div>\n <div className=\"bg-white rounded-lg shadow p-6 space-y-4\">\n <Skeleton className=\"h-6 w-32\" />\n <div className=\"grid grid-cols-2 gap-4\">\n {Array.from({ length: 6 }).map((_, i) => (\n <div key={i} className=\"space-y-1\">\n <Skeleton className=\"h-4 w-20\" />\n <Skeleton className=\"h-4 w-28\" />\n </div>\n ))}\n </div>\n </div>\n </div>\n <div className=\"space-y-6\">\n <div className=\"bg-white rounded-lg shadow p-6 space-y-4\">\n <Skeleton className=\"h-6 w-24\" />\n <Skeleton className=\"h-8 w-full\" />\n <Skeleton className=\"h-4 w-full\" />\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport function DashboardSkeleton() {\n return (\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4\">\n {Array.from({ length: 4 }).map((_, i) => (\n <StatsCardSkeleton key={i} />\n ))}\n </div>\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n <div className=\"bg-white rounded-lg shadow p-6\">\n <Skeleton className=\"h-6 w-32 mb-4\" />\n <Skeleton className=\"h-64 w-full\" />\n </div>\n <div className=\"bg-white rounded-lg shadow p-6\">\n <Skeleton className=\"h-6 w-32 mb-4\" />\n <div className=\"space-y-4\">\n {Array.from({ length: 5 }).map((_, i) => (\n <ListItemSkeleton key={i} />\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Search, ChevronDown } from \"lucide-react\";\nimport { cn } from \"./utils\";\n\nexport interface SearchableSelectOption {\n id: number | string;\n label: string;\n [key: string]: unknown;\n}\n\nexport interface SearchableSelectProps {\n options: SearchableSelectOption[];\n value?: number | string | null;\n onChange?: (value: number | string | null) => void;\n onBlur?: () => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n getOptionLabel?: (option: SearchableSelectOption) => string;\n filterFunction?: (option: SearchableSelectOption, searchTerm: string) => boolean;\n emptyMessage?: string;\n name?: string;\n}\n\nexport const SearchableSelect = React.forwardRef<\n HTMLInputElement,\n SearchableSelectProps\n>(\n (\n {\n options,\n value,\n onChange,\n onBlur,\n placeholder = \"Selecione uma opcao...\",\n disabled = false,\n className,\n getOptionLabel = (option) => option.label,\n filterFunction,\n emptyMessage = \"Nenhuma opcao encontrada\",\n name,\n },\n ref,\n ) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [searchTerm, setSearchTerm] = React.useState(\"\");\n const containerRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLUListElement>(null);\n\n const selectedOption = React.useMemo(\n () => options.find((opt) => opt.id === value) || null,\n [options, value],\n );\n\n const filteredOptions = React.useMemo(() => {\n if (!searchTerm.trim()) return options;\n const term = searchTerm.toLowerCase().trim();\n if (filterFunction) return options.filter((option) => filterFunction(option, term));\n return options.filter((option) => getOptionLabel(option).toLowerCase().includes(term));\n }, [options, searchTerm, getOptionLabel, filterFunction]);\n\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n setSearchTerm(\"\");\n }\n };\n\n if (!isOpen) return;\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isOpen]);\n\n React.useEffect(() => {\n if (!isOpen || !listRef.current || !selectedOption) return;\n const selectedIndex = filteredOptions.findIndex((opt) => opt.id === selectedOption.id);\n if (selectedIndex < 0) return;\n const selectedElement = listRef.current.children[selectedIndex] as HTMLElement;\n selectedElement?.scrollIntoView({ block: \"nearest\" });\n }, [isOpen, selectedOption, filteredOptions]);\n\n const handleSelect = (option: SearchableSelectOption) => {\n onChange?.(option.id);\n setIsOpen(false);\n setSearchTerm(\"\");\n onBlur?.();\n };\n\n const handleToggle = () => {\n if (disabled) return;\n setIsOpen((prev) => !prev);\n setTimeout(() => inputRef.current?.focus(), 0);\n };\n\n const displayValue = selectedOption ? getOptionLabel(selectedOption) : \"\";\n\n return (\n <div ref={containerRef} className={cn(\"relative w-full\", className)}>\n <div\n className={cn(\n \"flex h-11 w-full rounded-lg border-2 bg-white px-4 py-2.5 text-sm text-gray-900 transition-all cursor-pointer\",\n \"hover:border-gray-400\",\n \"focus-within:outline-none focus-within:ring-2 focus-within:ring-blue-500 focus-within:border-blue-500\",\n disabled && \"cursor-not-allowed opacity-50 bg-gray-50 hover:border-gray-300\",\n !isOpen && \"border-gray-300\",\n )}\n onClick={handleToggle}\n >\n <div className=\"flex items-center flex-1 min-w-0\">\n {!isOpen && !displayValue ? <span className=\"text-gray-500\">{placeholder}</span> : null}\n {!isOpen && displayValue ? <span className=\"truncate\">{displayValue}</span> : null}\n {isOpen ? (\n <input\n ref={inputRef}\n type=\"text\"\n value={searchTerm}\n onChange={(e) => {\n if (disabled) return;\n setSearchTerm(e.target.value);\n setIsOpen(true);\n }}\n placeholder={placeholder}\n className=\"flex-1 outline-none bg-transparent text-gray-900 placeholder:text-gray-500\"\n onClick={(e) => e.stopPropagation()}\n disabled={disabled}\n />\n ) : null}\n </div>\n\n <div className=\"flex items-center gap-2 ml-2\">\n <Search size={18} className={cn(\"text-gray-500 transition-transform\", isOpen && \"rotate-90\")} />\n <ChevronDown\n size={18}\n className={cn(\"text-gray-500 transition-transform\", isOpen && \"rotate-180\")}\n />\n </div>\n </div>\n\n {isOpen ? (\n <div className=\"absolute z-50 w-full mt-1 bg-white border-2 border-gray-300 rounded-lg shadow-lg max-h-60 overflow-hidden\">\n <ul ref={listRef} className=\"overflow-y-auto max-h-60 py-1\" role=\"listbox\">\n {filteredOptions.length === 0 ? (\n <li className=\"px-4 py-3 text-sm text-gray-500 text-center\">{emptyMessage}</li>\n ) : (\n filteredOptions.map((option) => {\n const isSelected = option.id === value;\n const label = getOptionLabel(option);\n return (\n <li\n key={option.id}\n role=\"option\"\n aria-selected={isSelected}\n className={cn(\n \"px-4 py-2 cursor-pointer text-sm transition-colors\",\n \"hover:bg-blue-50 hover:text-blue-900\",\n isSelected && \"bg-blue-100 text-blue-900 font-medium\",\n )}\n onClick={() => handleSelect(option)}\n >\n {label}\n </li>\n );\n })\n )}\n </ul>\n </div>\n ) : null}\n\n {name ? <input ref={ref} type=\"hidden\" name={name} value={value || \"\"} readOnly /> : null}\n </div>\n );\n },\n);\n\nSearchableSelect.displayName = \"SearchableSelect\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Input, InputProps } from \"./input\";\nimport { cn } from \"./utils\";\nimport { maskCurrency, unmaskCurrency } from \"./masks\";\n\ninterface CurrencyInputProps extends Omit<InputProps, \"type\" | \"value\" | \"onChange\"> {\n value?: number | string;\n onChange?: (value: number) => void;\n error?: boolean;\n}\n\nexport const CurrencyInput = React.forwardRef<HTMLInputElement, CurrencyInputProps>(\n ({ className, value, onChange, error, ...props }, ref) => {\n const [displayValue, setDisplayValue] = React.useState<string>(\"\");\n\n React.useEffect(() => {\n if (value === undefined || value === null || value === \"\" || value === 0) {\n setDisplayValue(\"\");\n return;\n }\n const numValue = typeof value === \"string\" ? parseFloat(value) : value;\n setDisplayValue(!isNaN(numValue) && numValue > 0 ? maskCurrency(numValue) : \"\");\n }, [value]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n const cleaned = inputValue.replace(/[^\\d,.-]/g, \"\");\n\n if (cleaned === \"\" || cleaned.replace(/\\D/g, \"\") === \"\") {\n setDisplayValue(\"\");\n onChange?.(0);\n return;\n }\n\n setDisplayValue(cleaned);\n onChange?.(unmaskCurrency(cleaned));\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n const cleaned = e.target.value.replace(/[^\\d,.-]/g, \"\");\n if (cleaned === \"\" || cleaned.replace(/\\D/g, \"\") === \"\") {\n setDisplayValue(\"\");\n onChange?.(0);\n } else {\n const numericValue = unmaskCurrency(cleaned);\n setDisplayValue(maskCurrency(numericValue));\n onChange?.(numericValue);\n }\n props.onBlur?.(e);\n };\n\n return (\n <div className=\"relative\">\n <span className=\"absolute left-4 top-1/2 -translate-y-1/2 text-gray-500 text-sm\">R$</span>\n <Input\n {...props}\n ref={ref}\n type=\"text\"\n value={displayValue}\n onChange={handleChange}\n onBlur={handleBlur}\n className={cn(\"pl-10\", error && \"border-red-500 focus:ring-red-500 focus:border-red-500\", className)}\n placeholder=\"0,00\"\n />\n </div>\n );\n },\n);\n\nCurrencyInput.displayName = \"CurrencyInput\";\n","export function maskCurrency(value: string | number): string {\n const numValue =\n typeof value === \"string\"\n ? parseFloat(value.replace(/\\D/g, \"\")) / 100\n : typeof value === \"number\"\n ? value\n : 0;\n\n if (isNaN(numValue) || numValue === 0) return \"\";\n\n return new Intl.NumberFormat(\"pt-BR\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(numValue);\n}\n\nexport function unmaskCurrency(value: string): number {\n if (!value || value.trim() === \"\") return 0;\n\n const cleaned = value.replace(/[^\\d,.-]/g, \"\");\n if (cleaned === \"\") return 0;\n\n if (cleaned.includes(\",\")) {\n const normalized = cleaned.replace(/\\./g, \"\").replace(\",\", \".\");\n const numValue = parseFloat(normalized);\n return isNaN(numValue) ? 0 : numValue;\n }\n\n const parts = cleaned.split(\".\");\n if (parts.length === 2 && parts[1].length <= 2) {\n return parseFloat(cleaned) || 0;\n }\n if (parts.length > 1) {\n return parseFloat(cleaned.replace(/\\./g, \"\")) || 0;\n }\n\n return parseFloat(cleaned) || 0;\n}\n","import * as React from \"react\";\nimport Image from \"next/image\";\nimport { cn } from \"./utils\";\nimport logoBlue from \"./assets/logo_blue.png\";\nimport logoOrange from \"./assets/logo_orange.png\";\nimport logoWhite from \"./assets/logo_white.png\";\nimport logoBlack from \"./assets/logo_black.png\";\n\nexport interface LogoProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n showTagline?: boolean;\n variant?: \"blue\" | \"orange\" | \"white\" | \"black\";\n}\n\nconst sizeClasses = {\n sm: { width: 100, height: 30 },\n md: { width: 140, height: 42 },\n lg: { width: 180, height: 54 },\n xl: { width: 220, height: 66 },\n};\n\n\n\nexport const DomifyLogo = React.forwardRef<HTMLDivElement, LogoProps>(\n ({ className, size = \"md\", showTagline = false, variant = \"orange\", ...props }, ref) => {\n const taglineColor = variant === \"orange\" ? \"text-[#FF7A00]\" : \"text-gray-300\";\n const dimensions = sizeClasses[size];\n\n return (\n <div ref={ref} className={cn(\"inline-block\", className)} {...props}>\n <Image\n src={variant === \"orange\" ? logoOrange : variant === \"blue\" ? logoBlue : variant === \"white\" ? logoWhite : logoBlack}\n alt=\"Domify\"\n width={dimensions.width}\n height={dimensions.height}\n priority\n className=\"object-contain\"\n style={{ width: \"auto\", height: \"auto\" }}\n />\n {showTagline ? (\n <p\n className={cn(\"text-xs mt-1\", taglineColor, {\n \"mt-0.5\": size === \"sm\",\n })}\n style={{ fontFamily: \"Inter\", fontWeight: 300 }}\n >\n Gestao Inteligente de Imoveis\n </p>\n ) : null}\n </div>\n );\n },\n);\n\nDomifyLogo.displayName = \"DomifyLogo\";\n"],"mappings":"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","names":["React","jsx","React","jsx","React","jsx","React","jsx","React","jsx","React","jsx","jsx","jsxs","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs"]}
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "domify-ui",
3
- "version": "1.0.5",
3
+ "version": "1.0.6",
4
4
  "private": false,
5
5
  "description": "Domify - Shared UI Library",
6
6
  "author": "Hilthermann Viegas",
@@ -10,8 +10,16 @@
10
10
  "ui",
11
11
  "library"
12
12
  ],
13
- "main": "./dist/index.js",
13
+ "main": "./dist/index.cjs",
14
+ "module": "./dist/index.js",
14
15
  "types": "./dist/index.d.ts",
16
+ "exports": {
17
+ ".": {
18
+ "types": "./dist/index.d.ts",
19
+ "import": "./dist/index.js",
20
+ "require": "./dist/index.cjs"
21
+ }
22
+ },
15
23
  "files": [
16
24
  "dist",
17
25
  "README.md"
@@ -29,7 +37,8 @@
29
37
  "scripts": {
30
38
  "build": "tsup",
31
39
  "dev": "tsup --watch",
32
- "type-check": "tsc --noEmit"
40
+ "type-check": "tsc --noEmit",
41
+ "prepublishOnly": "npm run build"
33
42
  },
34
43
  "devDependencies": {
35
44
  "@types/react": "^19.0.0",