@moontra/moonui 2.0.3 → 2.0.5
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.css +4 -0
- package/dist/index.js +2981 -8190
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2866 -8049
- package/dist/index.mjs.map +1 -1
- package/package.json +19 -11
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/accordion.tsx","../src/lib/utils.ts","../src/components/ui/alert.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/avatar.tsx","../src/components/ui/badge.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/button.tsx","../src/components/ui/calendar.tsx","../../../node_modules/date-fns/constants.js","../../../node_modules/date-fns/constructFrom.js","../../../node_modules/date-fns/toDate.js","../../../node_modules/date-fns/addMonths.js","../../../node_modules/date-fns/_lib/defaultOptions.js","../../../node_modules/date-fns/startOfWeek.js","../../../node_modules/date-fns/startOfISOWeek.js","../../../node_modules/date-fns/getISOWeekYear.js","../../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../../../node_modules/date-fns/_lib/normalizeDates.js","../../../node_modules/date-fns/startOfDay.js","../../../node_modules/date-fns/differenceInCalendarDays.js","../../../node_modules/date-fns/startOfISOWeekYear.js","../../../node_modules/date-fns/constructNow.js","../../../node_modules/date-fns/isSameDay.js","../../../node_modules/date-fns/isDate.js","../../../node_modules/date-fns/isValid.js","../../../node_modules/date-fns/endOfMonth.js","../../../node_modules/date-fns/_lib/normalizeInterval.js","../../../node_modules/date-fns/eachDayOfInterval.js","../../../node_modules/date-fns/startOfMonth.js","../../../node_modules/date-fns/startOfYear.js","../../../node_modules/date-fns/endOfWeek.js","../../../node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../../../node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../../../node_modules/date-fns/locale/en-US/_lib/formatLong.js","../../../node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../../../node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../../../node_modules/date-fns/locale/en-US/_lib/localize.js","../../../node_modules/date-fns/locale/_lib/buildMatchFn.js","../../../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../../../node_modules/date-fns/locale/en-US/_lib/match.js","../../../node_modules/date-fns/locale/en-US.js","../../../node_modules/date-fns/getDayOfYear.js","../../../node_modules/date-fns/getISOWeek.js","../../../node_modules/date-fns/getWeekYear.js","../../../node_modules/date-fns/startOfWeekYear.js","../../../node_modules/date-fns/getWeek.js","../../../node_modules/date-fns/_lib/addLeadingZeros.js","../../../node_modules/date-fns/_lib/format/lightFormatters.js","../../../node_modules/date-fns/_lib/format/formatters.js","../../../node_modules/date-fns/_lib/format/longFormatters.js","../../../node_modules/date-fns/_lib/protectedTokens.js","../../../node_modules/date-fns/format.js","../../../node_modules/date-fns/getDay.js","../../../node_modules/date-fns/isSameMonth.js","../../../node_modules/date-fns/isToday.js","../../../node_modules/date-fns/subMonths.js","../src/components/ui/card.tsx","../src/lib/micro-interactions.ts","../src/components/ui/checkbox.tsx","../src/components/ui/collapsible.tsx","../node_modules/@radix-ui/react-collapsible/src/collapsible.tsx","../node_modules/@radix-ui/primitive/src/primitive.tsx","../node_modules/@radix-ui/react-context/src/create-context.tsx","../node_modules/@radix-ui/react-use-controllable-state/src/use-controllable-state.tsx","../node_modules/@radix-ui/react-use-layout-effect/src/use-layout-effect.tsx","../node_modules/@radix-ui/react-use-controllable-state/src/use-controllable-state-reducer.tsx","../node_modules/@radix-ui/react-compose-refs/src/compose-refs.tsx","../node_modules/@radix-ui/react-primitive/src/primitive.tsx","../node_modules/@radix-ui/react-presence/src/presence.tsx","../node_modules/@radix-ui/react-presence/src/use-state-machine.tsx","../node_modules/@radix-ui/react-id/src/id.tsx","../src/components/ui/color-picker.tsx","../src/components/ui/input.tsx","../src/components/ui/label.tsx","../src/components/ui/popover.tsx","../src/components/ui/tabs.tsx","../src/components/ui/slider.tsx","../src/components/ui/command.tsx","../../../node_modules/cmdk/dist/chunk-NZJY6EH4.mjs","../../../node_modules/cmdk/dist/index.mjs","../../../node_modules/@radix-ui/react-primitive/src/primitive.tsx","../../../node_modules/@radix-ui/react-id/src/id.tsx","../../../node_modules/@radix-ui/react-use-layout-effect/src/use-layout-effect.tsx","../../../node_modules/@radix-ui/react-compose-refs/src/compose-refs.tsx","../src/components/ui/dialog.tsx","../src/components/ui/data-table.tsx","../../../node_modules/@tanstack/table-core/src/utils.ts","../../../node_modules/@tanstack/table-core/src/core/cell.ts","../../../node_modules/@tanstack/table-core/src/core/column.ts","../../../node_modules/@tanstack/table-core/src/core/headers.ts","../../../node_modules/@tanstack/table-core/src/core/row.ts","../../../node_modules/@tanstack/table-core/src/features/ColumnFaceting.ts","../../../node_modules/@tanstack/table-core/src/filterFns.ts","../../../node_modules/@tanstack/table-core/src/features/ColumnFiltering.ts","../../../node_modules/@tanstack/table-core/src/aggregationFns.ts","../../../node_modules/@tanstack/table-core/src/features/ColumnGrouping.ts","../../../node_modules/@tanstack/table-core/src/features/ColumnOrdering.ts","../../../node_modules/@tanstack/table-core/src/features/ColumnPinning.ts","../../../node_modules/@tanstack/table-core/src/utils/document.ts","../../../node_modules/@tanstack/table-core/src/features/ColumnSizing.ts","../../../node_modules/@tanstack/table-core/src/features/ColumnVisibility.ts","../../../node_modules/@tanstack/table-core/src/features/GlobalFaceting.ts","../../../node_modules/@tanstack/table-core/src/features/GlobalFiltering.ts","../../../node_modules/@tanstack/table-core/src/features/RowExpanding.ts","../../../node_modules/@tanstack/table-core/src/features/RowPagination.ts","../../../node_modules/@tanstack/table-core/src/features/RowPinning.ts","../../../node_modules/@tanstack/table-core/src/features/RowSelection.ts","../../../node_modules/@tanstack/table-core/src/sortingFns.ts","../../../node_modules/@tanstack/table-core/src/features/RowSorting.ts","../../../node_modules/@tanstack/table-core/src/core/table.ts","../../../node_modules/@tanstack/table-core/src/utils/getCoreRowModel.ts","../../../node_modules/@tanstack/table-core/src/utils/getExpandedRowModel.ts","../../../node_modules/@tanstack/table-core/src/utils/filterRowsUtils.ts","../../../node_modules/@tanstack/table-core/src/utils/getFacetedRowModel.ts","../../../node_modules/@tanstack/table-core/src/utils/getFacetedUniqueValues.ts","../../../node_modules/@tanstack/table-core/src/utils/getFilteredRowModel.ts","../../../node_modules/@tanstack/table-core/src/utils/getPaginationRowModel.ts","../../../node_modules/@tanstack/table-core/src/utils/getSortedRowModel.ts","../../../node_modules/@tanstack/react-table/src/index.tsx","../src/components/ui/table.tsx","../src/components/ui/select.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/date-picker.tsx","../src/components/ui/file-upload.tsx","../src/components/ui/progress.tsx","../src/components/ui/github-stars.tsx","../src/components/ui/moon-logo.tsx","../src/components/ui/pagination.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/separator.tsx","../src/components/ui/simple-editor.tsx","../src/components/ui/toggle.tsx","../../../node_modules/@radix-ui/react-toggle/src/toggle.tsx","../../../node_modules/@radix-ui/primitive/src/primitive.tsx","../../../node_modules/@radix-ui/react-use-controllable-state/src/use-controllable-state.tsx","../../../node_modules/@radix-ui/react-use-controllable-state/src/use-controllable-state-reducer.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/switch.tsx","../src/components/ui/textarea.tsx","../src/components/ui/toast.tsx"],"names":["text","React","jsx","jsxs","Icon","cva","ChevronRight","defaultOptions","count","format","localize","formatLong","days","Check","createContext","Provider","useContext","createScope","nextScopes","useLayoutEffect","value","node","useId","Root","Trigger","Content","ChevronDown","Collapsible","CollapsibleTrigger","CollapsibleContent","Loader2","Fragment","min","max","motion","Palette","Pipette","p","q","t","X","P","T","L","N","ReactDOM","createSlot","NODES","Primitive","useReactId","useLayoutEffect2","setRef","composeRefs","Y","K","u","m","$","k","J","W","U","B","functionalUpdate","updater","input","makeStateUpdater","key","instance","setState","old","isFunction","d","Function","isNumberArray","Array","isArray","every","val","flattenBy","arr","getChildren","flat","recurse","subArr","forEach","item","push","children","length","memo","getDeps","fn","opts","deps","result","depArgs","depTime","debug","Date","now","newDeps","depsChanged","some","dep","index","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","getMemoOptions","tableOptions","debugLevel","_tableOptions$debugAl","debugAll","process","env","NODE_ENV","createCell","table","row","column","columnId","getRenderValue","_cell$getValue","cell","getValue","options","renderFallbackValue","id","renderValue","getContext","_features","feature","createColumn","columnDef","depth","parent","_ref","_resolvedColumnDef$id","defaultColumn","_getDefaultColumnDef","resolvedColumnDef","accessorKey","prototype","replaceAll","replace","undefined","header","accessorFn","includes","originalRow","split","_result","warn","Error","columns","getFlatColumns","_column$columns","flatMap","getLeafColumns","_getOrderColumnsFn","orderColumns","_column$columns2","leafColumns","createHeader","_options$id","isPlaceholder","placeholderId","subHeaders","colSpan","rowSpan","headerGroup","getLeafHeaders","leafHeaders","recurseHeader","h","map","Headers","createTable","getHeaderGroups","getAllColumns","getVisibleLeafColumns","getState","columnPinning","left","right","allColumns","_left$map$filter","_right$map$filter","leftColumns","find","filter","Boolean","rightColumns","centerColumns","headerGroups","buildHeaderGroups","getCenterHeaderGroups","getLeftHeaderGroups","_left$map$filter2","orderedLeafColumns","getRightHeaderGroups","_right$map$filter2","getFooterGroups","reverse","getLeftFooterGroups","getCenterFooterGroups","getRightFooterGroups","getFlatHeaders","headers","getLeftFlatHeaders","getCenterFlatHeaders","getRightFlatHeaders","getCenterLeafHeaders","flatHeaders","_header$subHeaders","getLeftLeafHeaders","_header$subHeaders2","getRightLeafHeaders","_header$subHeaders3","center","_left$0$headers","_left$","_center$0$headers","_center$","_right$0$headers","_right$","columnsToGroup","headerFamily","_headerGroups$0$heade","_headerGroups$","maxDepth","findMaxDepth","getIsVisible","createHeaderGroup","headersToGroup","join","pendingParentHeaders","headerToGroup","latestPendingParentHeader","isLeafHeader","bottomHeaders","recurseHeadersForSpans","filteredHeaders","childRowSpans","childColSpan","childRowSpan","minChildRowSpan","createRow","original","rowIndex","subRows","parentId","_valuesCache","_uniqueValuesCache","hasOwnProperty","getColumn","getUniqueValues","_row$getValue","getLeafRows","getParentRow","getRow","getParentRows","parentRows","currentRow","parentRow","getAllCells","getAllLeafColumns","_getAllCellsByColumnId","allCells","reduce","acc","i","ColumnFaceting","_getFacetedRowModel","getFacetedRowModel","getPreFilteredRowModel","_getFacetedUniqueValues","getFacetedUniqueValues","Map","_getFacetedMinMaxValues","getFacetedMinMaxValues","includesString","filterValue","_filterValue$toString","search","toString","toLowerCase","autoRemove","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","rowValue","resolveFilterValue","unsafeMin","unsafeMax","parsedMin","parseFloat","parsedMax","Number","isNaN","Infinity","temp","filterFns","ColumnFiltering","getDefaultColumnDef","filterFn","getInitialState","state","columnFilters","getDefaultOptions","onColumnFiltersChange","filterFromLeafRows","maxLeafRowFilterDepth","getAutoFilterFn","firstRow","getCoreRowModel","flatRows","getFilterFn","_table$options$filter","_table$options$filter2","getCanFilter","_column$columnDef$ena","_table$options$enable","_table$options$enable2","enableColumnFilter","enableColumnFilters","enableFilters","getIsFiltered","getFilterIndex","getFilterValue","_table$getState$colum","_table$getState$colum2","_table$getState$colum3","findIndex","setFilterValue","setColumnFilters","previousFilter","newFilter","shouldAutoRemoveFilter","_old$filter","newFilterObj","_old$map","_table","columnFiltersMeta","updateFn","_functionalUpdate","resetColumnFilters","defaultState","_table$initialState$c","_table$initialState","initialState","getFilteredRowModel","_getFilteredRowModel","manualFiltering","sum","_leafRows","childRows","next","nextValue","extent","mean","leafRows","median","values","mid","floor","nums","sort","a","b","unique","from","Set","uniqueCount","size","_columnId","aggregationFns","ColumnGrouping","aggregatedCell","props","_toString","_props$getValue","aggregationFn","grouping","onGroupingChange","groupedColumnMode","toggleGrouping","setGrouping","getCanGroup","enableGrouping","getGroupingValue","getIsGrouped","_table$getState$group","getGroupedIndex","_table$getState$group2","indexOf","getToggleGroupingHandler","canGroup","getAutoAggregationFn","Object","call","getAggregationFn","_table$options$aggreg","_table$options$aggreg2","resetGrouping","_table$initialState$g","getPreGroupedRowModel","getGroupedRowModel","_getGroupedRowModel","manualGrouping","groupingColumnId","_groupingValuesCache","getIsPlaceholder","getIsAggregated","_row$subRows","nonGroupingColumns","col","groupingColumns","g","ColumnOrdering","columnOrder","onColumnOrderChange","getIndex","position","_getVisibleLeafColumns","getIsFirstColumn","_columns$","getIsLastColumn","_columns","setColumnOrder","resetColumnOrder","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","shift","foundIndex","splice","getDefaultColumnPinningState","ColumnPinning","onColumnPinningChange","pin","columnIds","setColumnPinning","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","getCanPin","_d$columnDef$enablePi","enablePinning","enableColumnPinning","getIsPinned","leafColumnIds","isLeft","isRight","getPinnedIndex","getCenterVisibleCells","_getAllVisibleCells","leftAndRight","getLeftVisibleCells","cells","getRightVisibleCells","resetColumnPinning","getIsSomeColumnsPinned","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","getLeftLeafColumns","getRightLeafColumns","getCenterLeafColumns","safelyAccessDocument","_document","document","defaultColumnSizing","minSize","maxSize","MAX_SAFE_INTEGER","getDefaultColumnSizingInfoState","startOffset","startSize","deltaOffset","deltaPercentage","isResizingColumn","columnSizingStart","ColumnSizing","columnSizing","columnSizingInfo","columnResizeMode","columnResizeDirection","onColumnSizingChange","onColumnSizingInfoChange","getSize","_column$columnDef$min","_column$columnDef$max","columnSize","getStart","slice","getAfter","resetSize","setColumnSizing","_ref2","_","rest","getCanResize","enableResizing","enableColumnResizing","getIsResizing","_header$column$getSiz","prevSiblingHeader","getResizeHandler","_contextDocument","canResize","e","persist","isTouchStartEvent","touches","clientX","newColumnSizing","updateOffset","eventType","clientXPos","setColumnSizingInfo","_old$startOffset","_old$startSize","deltaDirection","_ref3","headerSize","onMove","onEnd","contextDocument","mouseEvents","moveHandler","upHandler","removeEventListener","touchEvents","cancelable","preventDefault","stopPropagation","_e$touches$","passiveIfSupported","passiveEventSupported","passive","addEventListener","resetColumnSizing","resetHeaderSizeInfo","_table$initialState$c2","getTotalSize","_table$getHeaderGroup","_table$getHeaderGroup2","getLeftTotalSize","_table$getLeftHeaderG","_table$getLeftHeaderG2","getCenterTotalSize","_table$getCenterHeade","_table$getCenterHeade2","getRightTotalSize","_table$getRightHeader","_table$getRightHeader2","passiveSupported","supported","noop","window","err","type","ColumnVisibility","columnVisibility","onColumnVisibilityChange","toggleVisibility","getCanHide","setColumnVisibility","childColumns","c","enableHiding","getToggleVisibilityHandler","target","checked","getVisibleCells","makeVisibleColumnsMethod","getColumns","getVisibleFlatColumns","getAllFlatColumns","getLeftVisibleLeafColumns","getRightVisibleLeafColumns","getCenterVisibleLeafColumns","resetColumnVisibility","toggleAllColumnsVisible","_value","getIsAllColumnsVisible","obj","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityHandler","_target","GlobalFaceting","_getGlobalFacetedRowModel","getGlobalFacetedRowModel","_getGlobalFacetedUniqueValues","getGlobalFacetedUniqueValues","_getGlobalFacetedMinMaxValues","getGlobalFacetedMinMaxValues","GlobalFiltering","globalFilter","onGlobalFilterChange","globalFilterFn","getColumnCanGlobalFilter","_table$getCoreRowMode","getCanGlobalFilter","_table$options$getCol","enableGlobalFilter","getGlobalAutoFilterFn","getGlobalFilterFn","setGlobalFilter","resetGlobalFilter","RowExpanding","expanded","onExpandedChange","paginateExpandedRows","registered","queued","_autoResetExpanded","_table$options$autoRe","_queue","autoResetAll","autoResetExpanded","manualExpanding","resetExpanded","setExpanded","toggleAllRowsExpanded","getIsAllRowsExpanded","_table$initialState$e","getCanSomeRowsExpand","getPrePaginationRowModel","getCanExpand","getToggleAllRowsExpandedHandler","getIsSomeRowsExpanded","keys","getRowModel","getIsExpanded","getExpandedDepth","rowIds","rowsById","splitId","getPreExpandedRowModel","getSortedRowModel","getExpandedRowModel","_getExpandedRowModel","toggleExpanded","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","getIsRowExpanded","_table$options$getRow","getRowCanExpand","enableExpanding","getIsAllParentsExpanded","isFullyExpanded","getToggleExpandedHandler","canExpand","defaultPageIndex","defaultPageSize","getDefaultPaginationState","pageIndex","pageSize","RowPagination","pagination","onPaginationChange","_autoResetPageIndex","autoResetPageIndex","manualPagination","resetPageIndex","setPagination","safeUpdater","newState","resetPagination","_table$initialState$p","setPageIndex","maxPageIndex","pageCount","_table$initialState$p2","resetPageSize","_table$initialState$p3","_table$initialState2","setPageSize","topRowIndex","setPageCount","_table$options$pageCo","newPageCount","getPageOptions","getPageCount","pageOptions","fill","getCanPreviousPage","getCanNextPage","previousPage","nextPage","firstPage","lastPage","getPaginationRowModel","_getPaginationRowModel","_table$options$pageCo2","ceil","getRowCount","_table$options$rowCou","rowCount","rows","getDefaultRowPinningState","top","bottom","RowPinning","rowPinning","onRowPinningChange","includeLeafRows","includeParentRows","leafRowIds","parentRowIds","setRowPinning","_old$top3","_old$bottom3","_old$top","_old$bottom","has","_old$top2","_old$bottom2","enableRowPinning","isTop","isBottom","_ref4","_visiblePinnedRowIds$","visiblePinnedRowIds","getTopRows","getBottomRows","_ref5","resetRowPinning","_table$initialState$r","getIsSomeRowsPinned","_pinningState$top","_pinningState$bottom","_getPinnedRows","visibleRows","pinnedRowIds","_table$options$keepPi","keepPinnedRows","allRows","topPinnedRowIds","bottomPinnedRowIds","getCenterRows","topAndBottom","RowSelection","rowSelection","onRowSelectionChange","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","setRowSelection","resetRowSelection","toggleAllRowsSelected","getIsAllRowsSelected","preGroupedFlatRows","getCanSelect","toggleAllPageRowsSelected","resolvedValue","getIsAllPageRowsSelected","mutateRowIsSelected","getPreSelectedRowModel","getSelectedRowModel","rowModel","selectRowsFn","getFilteredSelectedRowModel","getGroupedSelectedRowModel","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","getIsSomeRowsSelected","_table$getState$rowSe","totalSelected","getIsSomePageRowsSelected","getIsSelected","getIsSomeSelected","getToggleAllRowsSelectedHandler","getToggleAllPageRowsSelectedHandler","toggleSelected","isSelected","_opts$selectChildren","selectedRowIds","selectChildren","isRowSelected","isSubRowSelected","getIsAllSubRowsSelected","getCanSelectSubRows","getCanMultiSelect","_table$options$enable3","getToggleSelectedHandler","canSelect","includeChildren","newSelectedFlatRows","newSelectedRowsById","recurseRows","_row$subRows2","selection","_selection$row$id","_row$subRows3","allChildrenSelected","someSelected","subRow","subRowChildrenSelected","reSplitAlphaNumeric","alphanumeric","rowA","rowB","compareAlphanumeric","alphanumericCaseSensitive","compareBasic","textCaseSensitive","datetime","basic","aStr","bStr","aa","bb","an","parseInt","bn","combo","sortingFns","RowSorting","sorting","sortingFn","sortUndefined","onSortingChange","isMultiSortEvent","shiftKey","getAutoSortingFn","firstRows","isString","getAutoSortDir","getSortingFn","_table$options$sortin","_table$options$sortin2","toggleSorting","desc","multi","nextSortingOrder","getNextSortingOrder","hasManualValue","setSorting","existingSorting","existingIndex","newSorting","sortAction","nextDesc","getCanMultiSort","_table$options$maxMul","maxMultiSortColCount","getFirstSortDir","_column$columnDef$sor","sortDescFirst","firstSortDirection","isSorted","getIsSorted","enableSortingRemoval","enableMultiRemove","getCanSort","enableSorting","_column$columnDef$ena2","enableMultiSort","_table$getState$sorti","columnSort","getSortIndex","_table$getState$sorti2","_table$getState$sorti3","clearSorting","getToggleSortingHandler","canSort","resetSorting","_table$initialState$s","getPreSortedRowModel","_getSortedRowModel","manualSorting","builtInFeatures","_options$_features","_options$initialState","debugTable","assign","mergeOptions","coreInitialState","_feature$getInitialSt","queuedTimeout","coreInstance","cb","Promise","resolve","then","catch","error","setTimeout","reset","setOptions","newOptions","onStateChange","_getRowId","getRowId","_getCoreRowModel","searchAll","_defaultColumn","_props$renderValue$to","_props$renderValue","_getColumnDefs","columnDefs","recurseColumns","groupingColumnDef","_getAllFlatColumnsById","flatColumns","data","accessRows","originalRows","getSubRows","_row$originalSubRows","originalSubRows","expandRows","expandedRows","handleRow","filterRows","filterRowImpl","filterRowModelFromLeafs","filterRowModelFromRoot","rowsToFilter","filterRow","_table$options$maxLea","newFilteredFlatRows","newFilteredRowsById","recurseFilterRows","newRow","_table$options$maxLea2","pass","preRowModel","filterableIds","filterRowsImpl","_table$getColumn","facetedRowModel","facetedUniqueValues","j","_facetedUniqueValues$","set","get","resolvedColumnFilters","resolvedGlobalFilters","_filterFn$resolveFilt","globallyFilterableColumns","_globalFilterFn$resol","currentColumnFilter","currentGlobalFilter","filterMeta","__global__","pageStart","pageEnd","paginatedRowModel","sortingState","sortedFlatRows","availableSorting","columnInfoById","sortEntry","invertSorting","sortData","sortedData","_sortEntry$desc","columnInfo","isDesc","sortInt","aValue","bValue","aUndefined","bUndefined","flexRender","Comp","isReactComponent","createElement","component","isClassComponent","isExoticComponent","proto","getPrototypeOf","$$typeof","description","useReactTable","resolvedOptions","tableRef","useState","current","prev","ChevronLeft","Search","AnimatePresence","useCallback","AlertCircle","useEffect","MoreHorizontal","Circle","RadioGroup","Separator","composeEventHandlers","useInsertionEffect","useControllableState","useUncontrolledState","SYNC_STATE","Toggle","List","ImageIcon","Eye","ColorPicker","toast"],"mappings":"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","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b border-gray-200 dark:border-gray-800\", className)}\n {...props}\n />\n))\nAccordionItem.displayName = \"AccordionItem\"\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 font-medium transition-all dark:text-gray-100\",\n \"hover:underline hover:text-primary dark:hover:text-primary-400\",\n \"[&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200 opacity-70 group-hover:opacity-100\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className={cn(\n \"overflow-hidden text-sm text-gray-700 dark:text-gray-300 transition-all\", \n \"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\",\n className\n )}\n {...props}\n >\n <div className=\"pb-4 pt-0\">{children}</div>\n </AccordionPrimitive.Content>\n))\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n// Utility function using clsx and tailwind-merge\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\n// Date formatting utility\nexport function formatDate(date: Date): string {\n if (isNaN(date.getTime())) {\n return 'Invalid Date'\n }\n return date.toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric'\n })\n}\n\n// Currency formatting utility\nexport function formatCurrency(amount: number): string {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD'\n }).format(amount)\n}\n\n// Text truncation utility\nexport function truncateText(text: string, maxLength: number): string {\n if (text.length <= maxLength) {\n return text\n }\n return text.slice(0, maxLength) + '...'\n}\n\n// ID generation utility\nexport function generateId(length: number = 8): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n let result = ''\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length))\n }\n return result\n}\n\n// Get client IP address from request\nexport function getClientIP(request: Request): string {\n // Check various headers for IP address\n const forwarded = request.headers.get('x-forwarded-for')\n const realIP = request.headers.get('x-real-ip')\n const remoteAddr = request.headers.get('x-remote-addr')\n \n if (forwarded) {\n // x-forwarded-for can contain multiple IPs, take the first one\n return forwarded.split(',')[0].trim()\n }\n \n if (realIP) {\n return realIP\n }\n \n if (remoteAddr) {\n return remoteAddr\n }\n \n // Fallback to a default IP if none found\n return '127.0.0.1'\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { AlertCircle, AlertTriangle, Info, Check, X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Alert Component\n *\n * Yüksek kaliteli, özelleştirilebilir ve erişilebilir alert bileşeni.\n * Bildirim, uyarı ve dikkat çekmek gereken içerikler için kullanılır.\n */\n\nconst alertVariants = cva(\n \"relative w-full flex items-center gap-3 p-4 border text-foreground [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground border-border\",\n primary: \"bg-primary/10 text-primary border-primary/30\",\n success: \"bg-success/10 text-success border-success/30\",\n warning: \"bg-warning/10 text-warning border-warning/30\",\n error: \"bg-destructive/10 text-destructive border-destructive/30\",\n info: \"bg-blue-500/10 text-blue-500 border-blue-500/30\",\n },\n size: {\n sm: \"py-2 text-xs\",\n default: \"py-3 text-sm\",\n lg: \"py-4 text-base\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n default: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n },\n withClose: {\n true: \"pr-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n withClose: false,\n },\n }\n);\n\nexport interface AlertProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {\n /** Alert ikonunu gizler */\n hideIcon?: boolean;\n /** Kapatma butonu ekler */\n closable?: boolean;\n /** Kapatma butonu tıklandığında çalışacak fonksiyon */\n onClose?: () => void;\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n ({ className, variant = \"default\", size, radius, hideIcon = false, closable = false, onClose, children, ...props }, ref) => {\n // Alert türüne göre ikon belirleme\n const Icon = React.useMemo(() => {\n switch (variant) {\n case \"success\":\n return Check;\n case \"warning\":\n return AlertTriangle;\n case \"error\":\n return AlertCircle;\n case \"info\":\n return Info;\n default:\n return Info;\n }\n }, [variant]);\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant, size, radius, withClose: closable }), className)}\n {...props}\n >\n {!hideIcon && <Icon className=\"h-5 w-5\" />}\n <div className=\"flex-1\">{children}</div>\n {closable && onClose && (\n <button\n onClick={onClose}\n className=\"absolute right-3 top-3 inline-flex h-6 w-6 items-center justify-center rounded-full opacity-70 transition-opacity hover:opacity-100\"\n aria-label=\"Kapat\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n );\n }\n);\nAlert.displayName = \"Alert\";\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"font-semibold leading-tight tracking-tight mb-1\", className)}\n {...props}\n />\n));\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm leading-5 text-muted-foreground\", className)}\n {...props}\n />\n));\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertTitle, AlertDescription };\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n/**\n * Aspect Ratio Component\n * \n * A component that maintains a specific aspect ratio for content.\n * Particularly useful for images, videos, and media content in responsive designs.\n * Fully integrated with the theme system, accessible and customizable.\n */\n\nconst aspectRatioVariants = cva(\n \"relative overflow-hidden\",\n {\n variants: {\n variant: {\n default: \"rounded-md bg-muted/10\",\n ghost: \"bg-transparent\",\n outline: \"rounded-md border border-border\",\n card: \"rounded-md bg-card shadow-sm\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\ninterface AspectRatioProps \n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof aspectRatioVariants> {\n /**\n * Aspect ratio (width/height). For example 16/9, 4/3, 1/1 etc.\n * @default 16/9\n */\n ratio?: number\n}\n\nconst AspectRatio = React.forwardRef<\n HTMLDivElement,\n AspectRatioProps\n>(({ className, variant, radius, ratio = 16 / 9, style, children, ...props }, ref) => (\n <div\n ref={ref} \n className={cn(aspectRatioVariants({ variant, radius }), className)}\n style={{\n position: \"relative\",\n paddingBottom: `${(1 / ratio) * 100}%`,\n ...style\n }}\n {...props}\n >\n <div className=\"absolute inset-0\">\n {children}\n </div>\n </div>\n))\nAspectRatio.displayName = \"AspectRatio\"\n\nexport { AspectRatio, aspectRatioVariants }\nexport type { AspectRatioProps }\n","import * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst avatarVariants = cva(\n \"relative flex shrink-0 overflow-hidden\",\n {\n variants: {\n size: {\n default: \"h-10 w-10\",\n xs: \"h-6 w-6\",\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-12 w-12\",\n xl: \"h-16 w-16\",\n \"2xl\": \"h-20 w-20\",\n },\n radius: {\n default: \"rounded-full\",\n sm: \"rounded-md\",\n lg: \"rounded-xl\",\n full: \"rounded-full\",\n none: \"rounded-none\",\n },\n variant: {\n default: \"\",\n ring: \"ring-2 ring-gray-300 dark:ring-gray-600\",\n ringOffset: \"ring-2 ring-gray-300 dark:ring-gray-600 ring-offset-2 ring-offset-background dark:ring-offset-gray-950\",\n border: \"border-2 border-gray-200 dark:border-gray-800\"\n }\n },\n defaultVariants: {\n size: \"default\",\n radius: \"default\",\n variant: \"default\"\n },\n }\n);\n\nexport interface AvatarProps \n extends React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>,\n VariantProps<typeof avatarVariants> {}\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n AvatarProps\n>(({ className, size, radius, variant, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(avatarVariants({ size, radius, variant }), className)}\n {...props}\n />\n));\nAvatar.displayName = AvatarPrimitive.Root.displayName;\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square h-full w-full\", className)}\n {...props}\n />\n));\nAvatarImage.displayName = AvatarPrimitive.Image.displayName;\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center bg-muted\",\n className\n )}\n {...props}\n />\n));\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;\n\n// Avatar Group Component for displaying multiple avatars\ninterface AvatarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n limit?: number;\n avatars: React.ReactNode[];\n overlapOffset?: number;\n}\n\nconst AvatarGroup = React.forwardRef<HTMLDivElement, AvatarGroupProps>(\n ({ className, limit, avatars, overlapOffset = -8, ...props }, ref) => {\n const visibleAvatars = limit ? avatars.slice(0, limit) : avatars;\n const remainingCount = limit ? Math.max(0, avatars.length - limit) : 0;\n\n return (\n <div\n ref={ref}\n className={cn(\"flex items-center\", className)}\n {...props}\n >\n <div className=\"flex\">\n {visibleAvatars.map((avatar, index) => (\n <div \n key={index} \n className=\"relative\"\n style={{ \n marginLeft: index === 0 ? 0 : `${overlapOffset}px`,\n zIndex: visibleAvatars.length - index \n }}\n >\n {avatar}\n </div>\n ))}\n {remainingCount > 0 && (\n <div \n className=\"relative z-0\"\n style={{ marginLeft: `${overlapOffset}px` }}\n >\n <Avatar variant=\"border\">\n <AvatarFallback>\n +{remainingCount}\n </AvatarFallback>\n </Avatar>\n </div>\n )}\n </div>\n </div>\n );\n }\n);\nAvatarGroup.displayName = \"AvatarGroup\";\n\nexport { Avatar, AvatarImage, AvatarFallback, AvatarGroup };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Premium Badge Component\n * \n * Durum, kategori ve etiketleme için yüksek kaliteli badge bileşeni.\n * Dark ve light modda uyumlu, erişilebilir ve çeşitli varyantlar sunar.\n */\n\nconst badgeVariants = cva(\n [\"inline-flex items-center gap-1.5\", \n \"font-medium transition-colors duration-200\", \n \"border focus:outline-none\",\n \"focus-visible:ring-2 focus-visible:ring-offset-1\"],\n {\n variants: {\n variant: {\n primary: [\n \"border-transparent bg-primary text-primary-foreground\",\n \"hover:bg-primary-hover dark:hover:bg-primary/90\",\n \"focus-visible:ring-primary/30 dark:focus-visible:ring-primary/40\",\n \"dark:bg-primary/90 dark:text-white dark:shadow-inner dark:shadow-primary/10\",\n ],\n secondary: [\n \"border-transparent bg-secondary text-secondary-foreground\",\n \"hover:bg-gray-200 dark:hover:bg-gray-700/90\",\n \"focus-visible:ring-gray-400/30 dark:focus-visible:ring-gray-500/40\",\n \"dark:bg-gray-800 dark:text-gray-100 dark:shadow-inner dark:shadow-gray-950/10\",\n ],\n outline: [\n \"border-gray-200 dark:border-gray-700\",\n \"bg-transparent text-foreground\",\n \"hover:border-gray-300 dark:hover:border-gray-600\",\n \"focus-visible:ring-gray-400/30 dark:focus-visible:ring-gray-500/40\",\n \"dark:text-gray-200 dark:bg-transparent dark:backdrop-blur-sm\",\n ],\n destructive: [\n \"border-transparent bg-error text-white\",\n \"hover:bg-error/90 dark:hover:bg-error/80\",\n \"focus-visible:ring-error/30 dark:focus-visible:ring-error/25\",\n \"dark:bg-error/90 dark:text-white dark:shadow-inner dark:shadow-error/10\",\n ],\n success: [\n \"border-transparent bg-success text-white\",\n \"hover:bg-success/90 dark:hover:bg-success/80\",\n \"focus-visible:ring-success/30 dark:focus-visible:ring-success/25\",\n \"dark:bg-success/90 dark:text-white dark:shadow-inner dark:shadow-success/10\",\n ],\n warning: [\n \"border-transparent bg-warning text-white\",\n \"hover:bg-warning/90 dark:hover:bg-warning/80\",\n \"focus-visible:ring-warning/30 dark:focus-visible:ring-warning/25\",\n \"dark:bg-warning/90 dark:text-gray-900 dark:shadow-inner dark:shadow-warning/10\",\n ],\n ghost: [\n \"border-transparent bg-transparent text-foreground\",\n \"hover:bg-gray-100 dark:hover:bg-gray-800/80\",\n \"focus-visible:ring-gray-400/30 dark:focus-visible:ring-gray-500/40\",\n \"dark:text-gray-200 dark:backdrop-blur-sm\",\n \"transition-colors duration-200\",\n ],\n pro: [\n \"border-transparent bg-gradient-to-r from-purple-600 to-pink-600 text-white\",\n \"hover:from-purple-700 hover:to-pink-700\",\n \"focus-visible:ring-purple-400/30 dark:focus-visible:ring-purple-500/40\",\n \"shadow-md dark:shadow-lg dark:shadow-purple-500/10\",\n ],\n admin: [\n \"border-transparent bg-gradient-to-r from-purple-600 to-pink-600 text-white\",\n \"hover:from-purple-700 hover:to-pink-700\", \n \"focus-visible:ring-purple-400/30 dark:focus-visible:ring-purple-500/40\",\n \"shadow-md dark:shadow-lg dark:shadow-purple-500/10\",\n ],\n },\n size: {\n sm: \"h-5 px-2 text-xs\",\n md: \"h-6 px-3 text-sm\",\n lg: \"h-8 px-4 text-base\",\n },\n radius: {\n default: \"rounded-full\",\n sm: \"rounded-md\",\n lg: \"rounded-xl\",\n none: \"rounded-none\",\n }\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n radius: \"default\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<VariantProps<typeof badgeVariants>, 'variant'> {\n withDot?: boolean;\n dotColor?: string;\n removable?: boolean;\n onRemove?: () => void;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n variant?: 'primary' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning' | 'ghost' | 'pro' | 'admin';\n}\n\n/**\n * Premium Badge Component\n * \n * @param props - Badge bileşeni özellikleri\n * @param props.variant - Badgenin görsel varyantı\n * @param props.size - Badge boyutu\n * @param props.radius - Köşe yuvarlama stili\n * @param props.withDot - Başında nokta gösterimi\n * @param props.dotColor - Noktanın rengi (özel)\n * @param props.removable - Kaldırılabilir badge (X simgesi ile)\n * @param props.onRemove - Kaldırma işlevi\n * @param props.leftIcon - Badge'in solunda görüntülenecek ikon\n * @param props.rightIcon - Badge'in sağında görüntülenecek ikon\n */\nfunction Badge({\n className,\n variant,\n size,\n radius,\n withDot,\n dotColor,\n removable,\n onRemove,\n leftIcon,\n rightIcon,\n children,\n ...props\n}: BadgeProps) {\n // Auto-assign icons and content for special variants\n let autoLeftIcon = leftIcon;\n let autoChildren = children;\n \n if (variant === 'pro') {\n // Auto Sparkles icon for pro\n autoLeftIcon = leftIcon || (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"w-3 h-3\">\n <path d=\"M12 0L13.09 8.26L22 9L13.09 9.74L12 18L10.91 9.74L2 9L10.91 8.26L12 0Z\" fill=\"currentColor\"/>\n <path d=\"M19 5L19.5 7L21 7.5L19.5 8L19 10L18.5 8L17 7.5L18.5 7L19 5Z\" fill=\"currentColor\"/>\n <path d=\"M19 15L19.5 17L21 17.5L19.5 18L19 20L18.5 18L17 17.5L18.5 17L19 15Z\" fill=\"currentColor\"/>\n </svg>\n );\n autoChildren = children || 'Pro';\n }\n \n if (variant === 'admin') {\n // Auto CheckCircle icon for admin\n autoLeftIcon = leftIcon || (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"w-3 h-3\">\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\" fill=\"currentColor\"/>\n </svg>\n );\n autoChildren = children || 'Admin Pro';\n }\n\n return (\n <div \n className={cn(badgeVariants({ variant, size, radius }), className)} \n data-removable={removable ? \"\" : undefined}\n {...props}\n >\n {withDot && (\n <span \n className={cn(\n \"h-2 w-2 rounded-full\", \n dotColor || \n (variant === \"destructive\" ? \"bg-white\" :\n variant === \"success\" ? \"bg-white\" :\n variant === \"warning\" ? \"bg-white\" :\n variant === \"secondary\" ? \"bg-secondary-foreground\" :\n variant === \"outline\" ? \"bg-foreground\" :\n variant === \"ghost\" ? \"bg-foreground\" :\n variant === \"pro\" ? \"bg-white\" :\n variant === \"admin\" ? \"bg-white\" :\n \"bg-primary-foreground\")\n )} \n aria-hidden=\"true\"\n />\n )}\n {autoLeftIcon && (\n <span className=\"inline-flex shrink-0\">\n {autoLeftIcon}\n </span>\n )}\n <span className=\"truncate\">{autoChildren}</span>\n {rightIcon && (\n <span className=\"inline-flex shrink-0\">\n {rightIcon}\n </span>\n )}\n {removable && onRemove && (\n <button \n type=\"button\"\n className=\"ml-1 -mr-1 h-3.5 w-3.5 rounded-full inline-flex items-center justify-center hover:bg-black/10 dark:hover:bg-white/10\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n aria-label=\"Remove badge\"\n >\n <svg \n width=\"8\" \n height=\"8\" \n viewBox=\"0 0 8 8\" \n fill=\"none\" \n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"opacity-70\"\n aria-hidden=\"true\"\n >\n <path d=\"M0.799988 7.19999L7.19999 0.799988M0.799988 0.799988L7.19999 7.19999\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n </button>\n )}\n </div>\n );\n}\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst breadcrumbVariants = cva(\n \"flex items-center gap-1.5 text-sm\",\n {\n variants: {\n variant: {\n default: \"dark:text-gray-100 transition-colors\",\n muted: \"text-muted-foreground dark:text-gray-400 transition-colors\",\n ghost: \"text-foreground/60 dark:text-gray-300/60 transition-colors\",\n },\n size: {\n default: \"text-sm\",\n sm: \"text-xs\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\ninterface BreadcrumbProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof breadcrumbVariants> {\n separator?: React.ReactNode;\n showHomeIcon?: boolean;\n}\n\ninterface BreadcrumbListProps extends React.HTMLAttributes<HTMLOListElement> {\n collapsed?: boolean;\n collapsedWidth?: number;\n}\n\ninterface BreadcrumbItemProps extends React.HTMLAttributes<HTMLLIElement> {\n isCurrent?: boolean;\n href?: string;\n asChild?: boolean;\n}\n\ninterface BreadcrumbSeparatorProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Custom separator icon or text */\n icon?: React.ReactNode;\n}\n\ninterface BreadcrumbEllipsisProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Custom ellipsis icon */\n icon?: React.ReactNode;\n}\n\nconst Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(\n ({ className, variant, size, ...props }, ref) => (\n <nav\n ref={ref}\n className={cn(breadcrumbVariants({ variant, size }), className)}\n aria-label=\"breadcrumb\"\n {...props}\n />\n )\n);\nBreadcrumb.displayName = \"Breadcrumb\";\n\nconst BreadcrumbList = React.forwardRef<HTMLOListElement, BreadcrumbListProps>(\n ({ className, collapsed, collapsedWidth = 3, ...props }, ref) => {\n const childrenArray = React.Children.toArray(props.children).filter(Boolean);\n const childCount = childrenArray.length;\n\n if (collapsed && childCount > collapsedWidth) {\n const firstItem = childrenArray[0];\n // const middleItems = childrenArray.slice(1, -2); // Uncomment when needed\n const lastTwoItems = childrenArray.slice(-2);\n\n return (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 sm:gap-2.5\",\n className\n )}\n {...props}\n >\n {firstItem}\n <BreadcrumbEllipsis />\n {lastTwoItems}\n </ol>\n );\n }\n\n return (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 sm:gap-2.5\",\n className\n )}\n {...props}\n />\n );\n }\n);\nBreadcrumbList.displayName = \"BreadcrumbList\";\n\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, BreadcrumbItemProps>(\n ({ className, isCurrent, href, asChild = false, ...props }, ref) => {\n const Comp = asChild ? React.Fragment : href ? \"a\" : \"span\";\n const itemProps = asChild ? {} : href ? { href } : {};\n\n return (\n <li\n ref={ref}\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n aria-current={isCurrent ? \"page\" : undefined}\n {...props}\n >\n <Comp \n className={cn(\n \"transition-colors duration-200 hover:text-foreground\",\n isCurrent \n ? \"font-medium text-foreground dark:text-white dark:text-opacity-95\" \n : \"text-muted-foreground hover:text-foreground dark:text-gray-400 dark:hover:text-gray-200 dark:hover:text-opacity-95 hover:underline hover:underline-offset-4 hover:decoration-gray-300/30\"\n )}\n {...itemProps}\n >\n {props.children}\n </Comp>\n </li>\n );\n }\n);\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: BreadcrumbSeparatorProps) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"text-muted-foreground dark:text-gray-500 opacity-70\", className)}\n {...props}\n >\n {children || <ChevronRight className=\"h-3.5 w-3.5\" />}\n </span>\n);\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\n\nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: BreadcrumbEllipsisProps) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex items-center text-muted-foreground dark:text-gray-500 dark:hover:text-gray-400 transition-colors duration-200\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n);\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\";\n\nconst BreadcrumbLink = React.forwardRef<HTMLAnchorElement, React.AnchorHTMLAttributes<HTMLAnchorElement>>(\n ({ className, href, ...props }, ref) => (\n <a\n ref={ref}\n href={href}\n className={cn(\n \"transition-colors duration-200 hover:text-foreground text-muted-foreground hover:underline hover:underline-offset-4 hover:decoration-gray-300/30 dark:text-gray-400 dark:hover:text-gray-200\",\n className\n )}\n {...props}\n />\n )\n);\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\n\nconst BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.HTMLAttributes<HTMLSpanElement>>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\n \"font-medium text-foreground dark:text-white dark:text-opacity-95\",\n className\n )}\n {...props}\n />\n )\n);\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n};\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Loader2 } from \"lucide-react\";\n\n/**\n * Premium Button Component\n * \n * A world-class, accessible, and versatile button component.\n * Pixel-perfect design with extensive variants and states.\n */\nconst buttonVariants = cva(\n [\"inline-flex items-center justify-center gap-2 whitespace-nowrap\",\n \"font-medium relative\",\n \"transition-all duration-200 ease-out\",\n \"premium-hover\", /* Standart premium hover efekti */\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n \"disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none\"],\n {\n variants: {\n variant: {\n primary: [\n \"bg-primary text-primary-foreground\",\n \"hover:bg-primary-hover dark:hover:bg-primary/90\",\n \"active:bg-primary-active dark:active:bg-primary/80\",\n \"shadow-sm dark:shadow-primary/20 dark:shadow-md\",\n \"focus-visible:ring-primary/50 dark:focus-visible:ring-primary/30\",\n \"dark:bg-primary dark:text-white\",\n \"transition-all duration-200\",\n ],\n secondary: [\n \"bg-secondary text-secondary-foreground\",\n \"hover:bg-gray-200 dark:hover:bg-gray-700/90\",\n \"active:bg-gray-300 dark:active:bg-gray-600/90\",\n \"border border-transparent dark:border-gray-700\",\n \"focus-visible:ring-gray-400/30 dark:focus-visible:ring-gray-500/40\",\n \"dark:bg-gray-800 dark:text-gray-100\",\n \"dark:shadow-sm dark:shadow-gray-900/20\",\n ],\n outline: [\n \"bg-background text-foreground\",\n \"border border-gray-300 dark:border-gray-700\",\n \"hover:border-gray-400 dark:hover:border-gray-500\",\n \"hover:bg-gray-50 dark:hover:bg-gray-800/80\",\n \"active:bg-gray-100 dark:active:bg-gray-800/90\",\n \"focus-visible:ring-gray-400/30 dark:focus-visible:ring-gray-500/40\",\n \"dark:text-gray-200 dark:bg-gray-900/50\",\n \"dark:shadow-sm dark:shadow-gray-950/10\",\n ],\n ghost: [\n \"text-foreground\",\n \"hover:bg-gray-100 dark:hover:bg-gray-800/90\",\n \"active:bg-gray-200 dark:active:bg-gray-700/90\",\n \"focus-visible:ring-gray-400/30 dark:focus-visible:ring-gray-500/40\",\n \"dark:text-gray-200\",\n \"transition-colors duration-200\",\n ],\n destructive: [\n \"bg-error text-white\",\n \"hover:bg-error/90 dark:hover:bg-error/80\",\n \"active:bg-error/80 dark:active:bg-error/70\",\n \"shadow-sm dark:shadow-error/10 dark:shadow-md\",\n \"focus-visible:ring-error/50 dark:focus-visible:ring-error/30\",\n \"dark:text-white dark:border-error/20\",\n \"transition-colors duration-200\",\n ],\n success: [\n \"bg-success text-white\",\n \"hover:bg-success/90 dark:hover:bg-success/80\",\n \"active:bg-success/80 dark:active:bg-success/70\",\n \"shadow-sm dark:shadow-success/10 dark:shadow-md\", \n \"focus-visible:ring-success/50 dark:focus-visible:ring-success/30\",\n \"dark:text-white dark:border-success/20\",\n \"transition-colors duration-200\",\n ],\n link: [\n \"text-primary bg-transparent\",\n \"underline-offset-4 hover:underline\",\n \"hover:text-primary-hover active:text-primary-active\",\n \"p-0 h-auto\",\n \"dark:text-blue-400 dark:hover:text-blue-300\",\n \"dark:active:text-blue-500\",\n \"transition-colors duration-200\",\n ],\n gradient: [\n \"bg-gradient-to-r from-blue-600 to-purple-600 text-white\",\n \"hover:from-blue-700 hover:to-purple-700\",\n \"active:from-blue-800 active:to-purple-800\",\n \"shadow-lg shadow-purple-500/25\",\n \"focus-visible:ring-purple-500/50\",\n \"transition-all duration-300\",\n ],\n glow: [\n \"bg-primary text-primary-foreground\",\n \"shadow-lg shadow-primary/50\",\n \"hover:shadow-xl hover:shadow-primary/60\",\n \"active:shadow-md active:shadow-primary/40\",\n \"focus-visible:ring-primary/50\",\n \"transition-all duration-300\",\n ],\n soft: [\n \"bg-primary/10 text-primary\",\n \"hover:bg-primary/20\",\n \"active:bg-primary/30\",\n \"focus-visible:ring-primary/50\",\n \"dark:bg-primary/20 dark:text-primary-foreground\",\n \"dark:hover:bg-primary/30 dark:active:bg-primary/40\",\n \"transition-colors duration-200\",\n ],\n glass: [\n \"bg-white/10 backdrop-blur-md text-foreground\",\n \"border border-white/20\",\n \"hover:bg-white/20 hover:border-white/30\",\n \"active:bg-white/30\",\n \"shadow-lg\",\n \"focus-visible:ring-white/50\",\n \"dark:bg-gray-800/10 dark:border-gray-700/20\",\n \"dark:hover:bg-gray-800/20 dark:hover:border-gray-700/30\",\n \"transition-all duration-200\",\n ],\n neon: [\n \"bg-transparent text-primary\",\n \"border-2 border-primary\",\n \"hover:bg-primary hover:text-primary-foreground\",\n \"hover:shadow-[0_0_20px_rgba(var(--primary),0.5)]\",\n \"active:shadow-[0_0_10px_rgba(var(--primary),0.3)]\",\n \"focus-visible:ring-primary/50\",\n \"transition-all duration-300\",\n ],\n },\n size: {\n xs: \"h-7 px-2.5 text-xs rounded\",\n sm: \"h-8 px-3 text-sm rounded\",\n md: \"h-10 px-4 text-base rounded-md\",\n lg: \"h-12 px-6 text-lg rounded-lg\",\n xl: \"h-14 px-8 text-xl rounded-lg\",\n icon: \"h-10 w-10 p-2 rounded-md\",\n \"icon-sm\": \"h-8 w-8 p-1.5 rounded\",\n \"icon-lg\": \"h-12 w-12 p-3 rounded-lg\",\n },\n rounded: {\n default: \"\",\n full: \"rounded-full\",\n none: \"rounded-none\",\n },\n fullWidth: {\n true: \"w-full\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n rounded: \"default\",\n fullWidth: false,\n },\n }\n);\n\n// Button component props\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n loading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n}\n\n/**\n * Premium Button Component\n * \n * @param props - Button component properties\n * @param props.variant - Visual variant (primary, secondary, ghost, etc.)\n * @param props.size - Button size (xs, sm, md, lg, xl)\n * @param props.loading - Loading state display\n * @param props.leftIcon - Icon on the left side\n * @param props.rightIcon - Icon on the right side\n * @param props.fullWidth - Full width display\n * @param props.rounded - Corner rounding style (default, full, none)\n * @param props.asChild - For Radix UI polymorphic component\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ \n className, \n variant, \n size, \n rounded, \n fullWidth,\n asChild = false,\n loading = false,\n leftIcon,\n rightIcon,\n children,\n disabled,\n ...props \n }, ref) => {\n // Radix UI'ın asChild pattern'i için - \"as\" prop yerine\n const Comp = asChild ? \"button\" : \"button\";\n \n return (\n <Comp\n className={cn(buttonVariants({ variant, size, rounded, fullWidth, className }))}\n ref={ref}\n disabled={disabled || loading}\n data-loading={loading ? \"\" : undefined}\n {...props}\n >\n {loading && (\n <Loader2 className=\"w-4 h-4 animate-spin\" aria-hidden=\"true\" />\n )}\n {!loading && leftIcon}\n {children}\n {!loading && rightIcon}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { buttonVariants } from \"./button\";\nimport { \n format, \n startOfMonth, \n endOfMonth, \n eachDayOfInterval, \n getDay, \n isSameMonth, \n isSameDay,\n isToday,\n addMonths,\n subMonths,\n startOfWeek,\n endOfWeek\n} from \"date-fns\";\n\nexport interface CalendarProps {\n mode?: \"single\" | \"range\" | \"multiple\";\n selected?: Date | Date[] | { from?: Date; to?: Date } | undefined;\n onSelect?: (date: Date | Date[] | { from?: Date; to?: Date } | undefined) => void;\n disabled?: (date: Date) => boolean;\n showOutsideDays?: boolean;\n className?: string;\n classNames?: Record<string, string>;\n numberOfMonths?: number;\n defaultMonth?: Date;\n initialFocus?: boolean;\n}\n\nfunction Calendar({\n mode = \"single\",\n selected,\n onSelect,\n disabled,\n showOutsideDays = false,\n className,\n classNames,\n numberOfMonths = 1,\n defaultMonth,\n ...props\n}: CalendarProps) {\n const [currentMonth, setCurrentMonth] = React.useState(\n defaultMonth || (selected && (selected as Date)) || new Date()\n );\n\n const weekDays = [\n { short: \"S\", full: \"Sunday\" },\n { short: \"M\", full: \"Monday\" },\n { short: \"T\", full: \"Tuesday\" },\n { short: \"W\", full: \"Wednesday\" },\n { short: \"T\", full: \"Thursday\" },\n { short: \"F\", full: \"Friday\" },\n { short: \"S\", full: \"Saturday\" }\n ];\n\n const handlePreviousMonth = () => {\n setCurrentMonth(subMonths(currentMonth, 1));\n };\n\n const handleNextMonth = () => {\n setCurrentMonth(addMonths(currentMonth, 1));\n };\n\n const handleDateClick = (date: Date) => {\n if (disabled?.(date)) return;\n\n if (mode === \"single\") {\n onSelect?.(date);\n } else if (mode === \"range\") {\n const currentSelection = selected as { from?: Date; to?: Date } | undefined;\n if (!currentSelection?.from || (currentSelection.from && currentSelection.to)) {\n onSelect?.({ from: date, to: undefined });\n } else {\n if (date < currentSelection.from) {\n onSelect?.({ from: date, to: currentSelection.from });\n } else {\n onSelect?.({ from: currentSelection.from, to: date });\n }\n }\n }\n };\n\n const isDateSelected = (date: Date) => {\n if (!selected) return false;\n \n if (mode === \"single\") {\n return isSameDay(date, selected as Date);\n } else if (mode === \"range\") {\n const range = selected as { from?: Date; to?: Date };\n if (range.from && range.to) {\n return date >= range.from && date <= range.to;\n }\n return range.from ? isSameDay(date, range.from) : false;\n }\n return false;\n };\n\n const isRangeStart = (date: Date) => {\n if (mode !== \"range\" || !selected) return false;\n const range = selected as { from?: Date; to?: Date };\n return range.from ? isSameDay(date, range.from) : false;\n };\n\n const isRangeEnd = (date: Date) => {\n if (mode !== \"range\" || !selected) return false;\n const range = selected as { from?: Date; to?: Date };\n return range.to ? isSameDay(date, range.to) : false;\n };\n\n const isRangeMiddle = (date: Date) => {\n if (mode !== \"range\" || !selected) return false;\n const range = selected as { from?: Date; to?: Date };\n if (!range.from || !range.to) return false;\n return date > range.from && date < range.to;\n };\n\n const getDaysInMonth = () => {\n const start = startOfMonth(currentMonth);\n const end = endOfMonth(currentMonth);\n const days = eachDayOfInterval({ start, end });\n \n // Get days from previous month to fill the first week\n const firstDayOfWeek = getDay(start);\n const previousMonthDays = [];\n if (firstDayOfWeek > 0 && showOutsideDays) {\n const previousMonthStart = startOfWeek(start);\n const previousMonthEnd = new Date(start);\n previousMonthEnd.setDate(previousMonthEnd.getDate() - 1);\n previousMonthDays.push(...eachDayOfInterval({ \n start: previousMonthStart, \n end: previousMonthEnd \n }));\n }\n \n // Get days from next month to fill the last week\n const lastDayOfWeek = getDay(end);\n const nextMonthDays = [];\n if (lastDayOfWeek < 6 && showOutsideDays) {\n const nextMonthStart = new Date(end);\n nextMonthStart.setDate(nextMonthStart.getDate() + 1);\n const nextMonthEnd = endOfWeek(end);\n nextMonthDays.push(...eachDayOfInterval({ \n start: nextMonthStart, \n end: nextMonthEnd \n }));\n }\n \n // Add empty cells for the first week if not showing outside days\n const emptyCells = [];\n if (!showOutsideDays && firstDayOfWeek > 0) {\n for (let i = 0; i < firstDayOfWeek; i++) {\n emptyCells.push(null);\n }\n }\n \n return [...previousMonthDays, ...emptyCells, ...days, ...nextMonthDays];\n };\n\n const days = getDaysInMonth();\n\n return (\n <div className={cn(\"p-0\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between px-6 py-4\">\n <button\n onClick={handlePreviousMonth}\n className={cn(\n \"h-10 w-10 bg-transparent p-0 rounded-lg\",\n \"hover:bg-muted transition-colors\",\n \"inline-flex items-center justify-center\"\n )}\n type=\"button\"\n >\n <ChevronLeft className=\"h-5 w-5\" />\n </button>\n \n <h2 className=\"text-base font-medium\">\n {format(currentMonth, \"MMMM yyyy\")}\n </h2>\n \n <button\n onClick={handleNextMonth}\n className={cn(\n \"h-10 w-10 bg-transparent p-0 rounded-lg\",\n \"hover:bg-muted transition-colors\",\n \"inline-flex items-center justify-center\"\n )}\n type=\"button\"\n >\n <ChevronRight className=\"h-5 w-5\" />\n </button>\n </div>\n\n {/* Calendar Grid */}\n <div className=\"px-6 pb-4\">\n {/* Week days header */}\n <div className=\"grid grid-cols-7 mb-2\">\n {weekDays.map((day, index) => (\n <div\n key={`weekday-${index}`}\n className=\"text-muted-foreground text-xs font-medium h-10 flex items-center justify-center\"\n title={day.full}\n >\n {day.short}\n </div>\n ))}\n </div>\n\n {/* Days grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {days.map((date, index) => {\n if (!date) {\n return <div key={`empty-${index}`} className=\"h-10 w-10\" />;\n }\n\n const isOutsideMonth = !isSameMonth(date, currentMonth);\n const isDisabled = disabled?.(date) || false;\n const isSelected = isDateSelected(date);\n const isTodayDate = isToday(date);\n const rangeStart = isRangeStart(date);\n const rangeEnd = isRangeEnd(date);\n const rangeMiddle = isRangeMiddle(date);\n\n return (\n <button\n key={date.toISOString()}\n onClick={() => handleDateClick(date)}\n disabled={isDisabled}\n className={cn(\n \"h-10 w-10 p-0 font-normal\",\n \"inline-flex items-center justify-center rounded-lg\",\n \"hover:bg-muted transition-colors text-sm\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n isOutsideMonth && \"text-muted-foreground/50\",\n isDisabled && \"text-muted-foreground/30 cursor-not-allowed hover:bg-transparent\",\n isSelected && !rangeMiddle && \"bg-primary text-primary-foreground font-medium hover:bg-primary hover:text-primary-foreground\",\n isTodayDate && \"font-semibold relative after:absolute after:bottom-1 after:left-1/2 after:-translate-x-1/2 after:h-1 after:w-1 after:rounded-full after:bg-primary\",\n rangeMiddle && \"bg-accent/30 text-accent-foreground rounded-none\",\n rangeStart && \"rounded-r-none\",\n rangeEnd && \"rounded-l-none\"\n )}\n type=\"button\"\n >\n {format(date, \"d\")}\n </button>\n );\n })}\n </div>\n </div>\n\n </div>\n );\n}\n\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMonths} function options.\n */\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n * @param options - The options object\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n const year = getISOWeekYear(date, options);\n const fourthOfJanuary = constructFrom(options?.in || date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name constructNow\n * @category Generic Helpers\n * @summary Constructs a new current date using the passed value constructor.\n * @pure false\n *\n * @description\n * The function constructs a new current date using the constructor from\n * the reference date. It helps to build generic functions that accept date\n * extensions and use the current date.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * @param date - The reference date to take constructor from\n *\n * @returns Current date initialized using the given date constructor\n *\n * @example\n * import { constructNow, isSameDay } from 'date-fns'\n *\n * function isToday<DateType extends Date>(\n * date: DateArg<DateType>,\n * ): boolean {\n * // If we were to use `new Date()` directly, the function would behave\n * // differently in different timezones and return false for the same date.\n * return isSameDay(date, constructNow(date));\n * }\n */\nexport function constructNow(date) {\n return constructFrom(date, Date.now());\n}\n\n// Fallback for modularized imports:\nexport default constructNow;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link isSameDay} function options.\n */\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same day (and year and month)\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport function isSameDay(laterDate, earlierDate, options) {\n const [dateLeft_, dateRight_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return +startOfDay(dateLeft_) === +startOfDay(dateRight_);\n}\n\n// Fallback for modularized imports:\nexport default isSameDay;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMonth} function options.\n */\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n","import { normalizeDates } from \"./normalizeDates.js\";\n\nexport function normalizeInterval(context, interval) {\n const [start, end] = normalizeDates(context, interval.start, interval.end);\n return { start, end };\n}\n","import { normalizeInterval } from \"./_lib/normalizeInterval.js\";\nimport { constructFrom } from \"./constructFrom.js\";\n\n/**\n * The {@link eachDayOfInterval} function options.\n */\n\n/**\n * The {@link eachDayOfInterval} function result type. It resolves the proper data type.\n * It uses the first argument date object type, starting from the date argument,\n * then the start interval date, and finally the end interval date. If\n * a context function is passed, it uses the context function return type.\n */\n\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * @typeParam IntervalType - Interval type.\n * @typeParam Options - Options type.\n *\n * @param interval - The interval.\n * @param options - An object with options.\n *\n * @returns The array with starts of days from the day of the interval start to the day of the interval end\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * const result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\nexport function eachDayOfInterval(interval, options) {\n const { start, end } = normalizeInterval(options?.in, interval);\n\n let reversed = +start > +end;\n const endTime = reversed ? +start : +end;\n const date = reversed ? end : start;\n date.setHours(0, 0, 0, 0);\n\n let step = options?.step ?? 1;\n if (!step) return [];\n if (step < 0) {\n step = -step;\n reversed = !reversed;\n }\n\n const dates = [];\n\n while (+date <= endTime) {\n dates.push(constructFrom(start, date));\n date.setDate(date.getDate() + step);\n date.setHours(0, 0, 0, 0);\n }\n\n return reversed ? dates.reverse() : dates;\n}\n\n// Fallback for modularized imports:\nexport default eachDayOfInterval;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfMonth} function options.\n */\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date. The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments.\n * Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed,\n * or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n _date.setDate(1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setFullYear(date_.getFullYear(), 0, 1);\n date_.setHours(0, 0, 0, 0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfWeek} function options.\n */\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport function endOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\n _date.setDate(_date.getDate() + diff);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfWeek;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (+_date >= +startOfNextYear) {\n return year + 1;\n } else if (+_date >= +startOfThisYear) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(options?.in || date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(+date / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n return addLeadingZeros(+date, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date, options?.in);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDay} function options.\n */\n\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of week, 0 represents Sunday\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport function getDay(date, options) {\n return toDate(date, options?.in).getDay();\n}\n\n// Fallback for modularized imports:\nexport default getDay;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link isSameMonth} function options.\n */\n\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same month (and year)\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport function isSameMonth(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return (\n laterDate_.getFullYear() === earlierDate_.getFullYear() &&\n laterDate_.getMonth() === earlierDate_.getMonth()\n );\n}\n\n// Fallback for modularized imports:\nexport default isSameMonth;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { constructNow } from \"./constructNow.js\";\nimport { isSameDay } from \"./isSameDay.js\";\n\n/**\n * The {@link isToday} function options.\n */\n\n/**\n * @name isToday\n * @category Day Helpers\n * @summary Is the given date today?\n * @pure false\n *\n * @description\n * Is the given date today?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is today\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * const result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\nexport function isToday(date, options) {\n return isSameDay(\n constructFrom(options?.in || date, date),\n constructNow(options?.in || date),\n );\n}\n\n// Fallback for modularized imports:\nexport default isToday;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The subMonths function options.\n */\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function subMonths(date, amount, options) {\n return addMonths(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMonths;\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion, type HTMLMotionProps } from \"framer-motion\";\nimport { cn } from \"../../lib/utils\";\nimport { microInteractionVariants, hoverAnimations, tapAnimations } from \"../../lib/micro-interactions\";\n\nconst cardVariants = cva(\n \"rounded-lg border bg-card text-card-foreground shadow-sm dark:shadow-gray-900/20 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-100 transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"border border-border shadow-none bg-transparent dark:border-gray-700 dark:bg-transparent dark:text-gray-200\",\n filled: \"border-none bg-secondary dark:bg-gray-800 dark:text-gray-100 dark:shadow-inner dark:shadow-gray-950/10\",\n elevated: \"border-none shadow-md dark:shadow-lg dark:shadow-gray-900/30 dark:bg-gray-850 dark:text-gray-100\",\n gradient: \"border-none bg-gradient-to-br from-primary/5 to-primary/10 dark:from-primary/10 dark:to-primary/20\",\n glass: \"border border-white/20 bg-white/10 backdrop-blur-md dark:border-gray-700/30 dark:bg-gray-800/10\",\n },\n size: {\n default: \"p-6\",\n sm: \"p-4\",\n lg: \"p-8\",\n xl: \"p-10\",\n },\n radius: {\n default: \"rounded-lg\",\n sm: \"rounded-md\",\n lg: \"rounded-xl\",\n full: \"rounded-3xl\",\n none: \"rounded-none\",\n },\n interactive: {\n true: \"cursor-pointer hover:shadow-lg hover:border-primary/20 dark:hover:border-primary/30 hover:-translate-y-0.5 active:translate-y-0 active:shadow-sm\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n },\n }\n);\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {\n asChild?: boolean;\n microInteraction?: \"lift\" | \"glow\" | \"scale\" | \"none\";\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, size, radius, interactive, microInteraction = \"lift\", ...props }, ref) => {\n // Interactive özelliği varsa motion.div, yoksa normal div kullan\n if (interactive && microInteraction !== \"none\") {\n const interactionProps = {\n whileHover: microInteraction === \"scale\" ? hoverAnimations.scale : \n microInteraction === \"glow\" ? hoverAnimations.glow : \n hoverAnimations.lift,\n whileTap: tapAnimations.scale,\n };\n \n return (\n <motion.div\n ref={ref}\n className={cn(cardVariants({ variant, size, radius, interactive, className }))}\n {...interactionProps}\n {...props}\n />\n );\n }\n \n // Non-interactive version\n return (\n <div\n ref={ref}\n className={cn(cardVariants({ variant, size, radius, interactive, className }))}\n {...props}\n />\n );\n }\n);\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center pt-4\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","// MoonUI Micro-interactions System\n// Provides consistent hover, focus, and active states across all components\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\n/**\n * Micro-interaction variants for consistent component behavior\n */\nexport const microInteractionVariants = cva(\"\", {\n variants: {\n hover: {\n lift: [\n \"transition-all duration-200 ease-out\",\n \"hover:-translate-y-0.5\",\n \"hover:shadow-md\",\n ],\n glow: [\n \"transition-all duration-300 ease-out\",\n \"hover:shadow-lg\",\n \"hover:shadow-primary/20\",\n ],\n scale: [\n \"transition-transform duration-200 ease-out\",\n \"hover:scale-105\",\n \"active:scale-95\",\n ],\n brightness: [\n \"transition-all duration-200 ease-out\",\n \"hover:brightness-110\",\n \"active:brightness-95\",\n ],\n border: [\n \"transition-all duration-200 ease-out\",\n \"hover:border-primary/50\",\n ],\n },\n focus: {\n ring: [\n \"focus:outline-none\",\n \"focus-visible:ring-2\",\n \"focus-visible:ring-primary/50\",\n \"focus-visible:ring-offset-2\",\n ],\n glow: [\n \"focus:outline-none\",\n \"focus-visible:shadow-lg\",\n \"focus-visible:shadow-primary/30\",\n ],\n border: [\n \"focus:outline-none\",\n \"focus-visible:border-primary\",\n \"focus-visible:border-2\",\n ],\n },\n active: {\n scale: [\n \"active:scale-95\",\n \"transition-transform duration-100\",\n ],\n darken: [\n \"active:brightness-90\",\n \"transition-all duration-100\",\n ],\n depress: [\n \"active:translate-y-0.5\",\n \"active:shadow-sm\",\n \"transition-all duration-100\",\n ],\n },\n cursor: {\n pointer: \"cursor-pointer\",\n grab: \"cursor-grab active:cursor-grabbing\",\n text: \"cursor-text\",\n wait: \"cursor-wait\",\n help: \"cursor-help\",\n notAllowed: \"cursor-not-allowed\",\n },\n },\n defaultVariants: {\n hover: \"lift\",\n focus: \"ring\",\n active: \"scale\",\n cursor: \"pointer\",\n },\n});\n\n/**\n * Spring animation configurations\n */\nexport const springAnimations = {\n // Smooth spring for general use\n smooth: {\n type: \"spring\",\n stiffness: 260,\n damping: 20,\n },\n // Bouncy spring for playful interactions\n bouncy: {\n type: \"spring\",\n stiffness: 300,\n damping: 15,\n },\n // Stiff spring for quick responses\n stiff: {\n type: \"spring\",\n stiffness: 400,\n damping: 25,\n },\n // Gentle spring for subtle movements\n gentle: {\n type: \"spring\",\n stiffness: 150,\n damping: 15,\n },\n};\n\n/**\n * Hover animation presets\n */\nexport const hoverAnimations = {\n lift: {\n y: -2,\n transition: springAnimations.smooth,\n },\n scale: {\n scale: 1.05,\n transition: springAnimations.smooth,\n },\n glow: {\n boxShadow: \"0 0 20px rgba(var(--primary), 0.3)\",\n transition: springAnimations.smooth,\n },\n rotate: {\n rotate: 2,\n transition: springAnimations.bouncy,\n },\n};\n\n/**\n * Tap/Click animation presets\n */\nexport const tapAnimations = {\n scale: {\n scale: 0.95,\n transition: { duration: 0.1 },\n },\n depress: {\n y: 1,\n transition: { duration: 0.1 },\n },\n};\n\n/**\n * Focus animation presets\n */\nexport const focusAnimations = {\n ring: {\n boxShadow: \"0 0 0 2px var(--background), 0 0 0 4px var(--primary)\",\n transition: springAnimations.smooth,\n },\n glow: {\n boxShadow: \"0 0 0 3px rgba(var(--primary), 0.3)\",\n transition: springAnimations.smooth,\n },\n};\n\n/**\n * Stagger animation for lists\n */\nexport const staggerAnimation = {\n container: {\n hidden: { opacity: 0 },\n show: {\n opacity: 1,\n transition: {\n staggerChildren: 0.05,\n },\n },\n },\n item: {\n hidden: { opacity: 0, y: 20 },\n show: { \n opacity: 1, \n y: 0,\n transition: springAnimations.smooth,\n },\n },\n};\n\n/**\n * Page transition animations\n */\nexport const pageTransitions = {\n fadeIn: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n transition: { duration: 0.3 },\n },\n slideUp: {\n initial: { opacity: 0, y: 20 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: -20 },\n transition: springAnimations.smooth,\n },\n slideRight: {\n initial: { opacity: 0, x: -20 },\n animate: { opacity: 1, x: 0 },\n exit: { opacity: 0, x: 20 },\n transition: springAnimations.smooth,\n },\n scale: {\n initial: { opacity: 0, scale: 0.95 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 1.05 },\n transition: springAnimations.smooth,\n },\n};\n\n/**\n * Skeleton loading animation\n */\nexport const skeletonAnimation = {\n initial: { opacity: 0.5 },\n animate: {\n opacity: [0.5, 0.8, 0.5],\n transition: {\n duration: 1.5,\n repeat: Infinity,\n ease: \"easeInOut\",\n },\n },\n};\n\n/**\n * Tooltip animation\n */\nexport const tooltipAnimation = {\n initial: { opacity: 0, scale: 0.95 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 0.95 },\n transition: { duration: 0.15 },\n};\n\n/**\n * Notification animation\n */\nexport const notificationAnimation = {\n initial: { opacity: 0, y: -20, scale: 0.95 },\n animate: { opacity: 1, y: 0, scale: 1 },\n exit: { opacity: 0, scale: 0.95, transition: { duration: 0.15 } },\n transition: springAnimations.bouncy,\n};\n\nexport type MicroInteractionProps = VariantProps<typeof microInteractionVariants>;","\"use client\";\n\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check, Minus } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Checkbox Bileşeni\n *\n * Erişilebilir, özelleştirilebilir ve tema sistemiyle tam entegre checkbox bileşeni.\n * Form elemanları ve seçim listeleri için kullanılır.\n */\n\nconst checkboxVariants = cva(\n \"peer shrink-0 border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:text-primary-foreground\",\n {\n variants: {\n variant: {\n default: \"border-border bg-background data-[state=checked]:bg-primary data-[state=checked]:border-primary\",\n outline: \"border-border bg-transparent data-[state=checked]:bg-primary data-[state=checked]:border-primary\",\n muted: \"border-border bg-accent data-[state=checked]:bg-primary data-[state=checked]:border-primary\",\n ghost: \"border-transparent bg-transparent hover:bg-accent data-[state=checked]:bg-primary data-[state=checked]:border-primary\",\n },\n size: {\n sm: \"h-3.5 w-3.5\",\n default: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n default: \"rounded-sm\",\n md: \"rounded-md\",\n full: \"rounded-full\",\n },\n animation: {\n none: \"\",\n subtle: \"transition-all duration-200\",\n default: \"transition-all duration-200\",\n bounce: \"transition-all duration-200\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n animation: \"default\",\n },\n }\n);\n\nexport interface CheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>,\n VariantProps<typeof checkboxVariants> {\n /**\n * İndeterminate durumu - grup seçimlerinde bazı öğeler seçilmişse kullanılır\n */\n indeterminate?: boolean;\n /**\n * Özel ikon komponenti\n */\n icon?: React.ReactNode;\n}\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ \n className, \n variant, \n size, \n radius, \n animation,\n indeterminate = false,\n icon,\n checked,\n ...props \n}, ref) => {\n // Indeterminate state yönetimi\n const [isIndeterminate, setIsIndeterminate] = React.useState(indeterminate);\n \n React.useEffect(() => {\n setIsIndeterminate(indeterminate);\n }, [indeterminate]);\n\n // Checked state override, indeterminate olduğunda\n const effectiveChecked = isIndeterminate ? false : checked;\n \n return (\n <CheckboxPrimitive.Root\n ref={ref}\n checked={effectiveChecked}\n className={cn(checkboxVariants({ variant, size, radius, animation }), className)}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\n \"flex items-center justify-center text-current\",\n animation === \"bounce\" && \"data-[state=checked]:animate-bounce\"\n )}\n >\n {isIndeterminate ? (\n <Minus className=\"h-[65%] w-[65%]\" />\n ) : icon ? (\n icon\n ) : (\n <Check className=\"h-[65%] w-[65%]\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n});\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\n// CheckboxGroup bileşeni\ninterface CheckboxGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Grup içi yerleşim - dikey veya yatay\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * Öğeler arasındaki boşluk (piksel)\n */\n spacing?: number | string;\n /**\n * Alt bileşenler\n */\n children: React.ReactNode;\n}\n\nconst CheckboxGroup = React.forwardRef<HTMLDivElement, CheckboxGroupProps>(\n ({ className, orientation = \"vertical\", spacing = \"1rem\", children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex\",\n orientation === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\",\n className\n )}\n style={{ gap: spacing }}\n role=\"group\"\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nCheckboxGroup.displayName = \"CheckboxGroup\";\n\n// CheckboxLabel bileşeni\ninterface CheckboxLabelProps extends React.HTMLAttributes<HTMLLabelElement> {\n /**\n * Checkbox bileşeni için HTML id\n */\n htmlFor?: string;\n /**\n * Label içeriği\n */\n children: React.ReactNode;\n /**\n * Checkbox öncesi veya sonrası\n */\n position?: \"start\" | \"end\";\n /**\n * Devre dışı durum stili\n */\n disabled?: boolean;\n}\n\nconst CheckboxLabel = React.forwardRef<HTMLLabelElement, CheckboxLabelProps>(\n ({ className, htmlFor, children, position = \"end\", disabled = false, ...props }, ref) => {\n return (\n <label\n ref={ref}\n htmlFor={htmlFor}\n className={cn(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n position === \"start\" ? \"mr-2\" : \"ml-2\",\n disabled && \"cursor-not-allowed opacity-70\",\n className\n )}\n {...props}\n >\n {children}\n </label>\n );\n }\n);\nCheckboxLabel.displayName = \"CheckboxLabel\";\n\n// Checkbox ve Label içeren bileşen\ninterface CheckboxWithLabelProps extends CheckboxProps {\n /**\n * Label içeriği\n */\n label: React.ReactNode;\n /**\n * Label pozisyonu\n */\n labelPosition?: \"start\" | \"end\";\n /**\n * Label için HTML sınıfları\n */\n labelClassName?: string;\n}\n\nconst CheckboxWithLabel = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxWithLabelProps\n>(({ \n id, \n label, \n labelPosition = \"end\", \n labelClassName, \n ...checkboxProps \n}, ref) => {\n const generatedId = React.useId();\n const checkboxId = id || generatedId;\n \n return (\n <div className=\"flex items-center\">\n {labelPosition === \"start\" && (\n <CheckboxLabel \n htmlFor={checkboxId}\n position=\"start\"\n disabled={checkboxProps.disabled}\n className={labelClassName}\n >\n {label}\n </CheckboxLabel>\n )}\n \n <Checkbox ref={ref} id={checkboxId} {...checkboxProps} />\n \n {labelPosition === \"end\" && (\n <CheckboxLabel \n htmlFor={checkboxId}\n position=\"end\"\n disabled={checkboxProps.disabled}\n className={labelClassName}\n >\n {label}\n </CheckboxLabel>\n )}\n </div>\n );\n});\nCheckboxWithLabel.displayName = \"CheckboxWithLabel\";\n\nexport { Checkbox, CheckboxGroup, CheckboxLabel, CheckboxWithLabel };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\n/**\n * Collapsible (Daraltılabilir) Bileşeni\n * \n * İçeriği genişletilip daraltılabilen hafif bir bileşendir.\n * Tema sistemiyle tam entegre, erişilebilir ve özelleştirilebilir.\n */\n\nconst Collapsible = CollapsiblePrimitive.Root\n\nconst collapsibleTriggerVariants = cva(\n \"flex w-full items-center justify-between transition-all\",\n {\n variants: {\n variant: {\n default: \"text-foreground hover:text-primary\",\n ghost: \"text-foreground hover:bg-accent/10 rounded\",\n outline: \"text-foreground border border-border rounded-t-md hover:bg-accent/5\",\n },\n size: {\n sm: \"text-xs py-2 px-3\",\n default: \"text-sm py-3 px-4\",\n md: \"text-base py-4 px-4\",\n lg: \"text-lg py-5 px-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\ninterface CollapsibleTriggerProps \n extends React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Trigger>,\n VariantProps<typeof collapsibleTriggerVariants> {}\n\nconst CollapsibleTrigger = React.forwardRef<\n React.ElementRef<typeof CollapsiblePrimitive.Trigger>,\n CollapsibleTriggerProps\n>(({ className, children, variant, size, asChild, ...props }, ref) => {\n // asChild kullanıldığında otomatik ikon eklemeyi atla\n if (asChild) {\n return (\n <CollapsiblePrimitive.Trigger\n ref={ref}\n className={cn(collapsibleTriggerVariants({ variant, size }), className)}\n asChild={asChild}\n {...props}\n >\n {children}\n </CollapsiblePrimitive.Trigger>\n )\n }\n\n return (\n <CollapsiblePrimitive.Trigger\n ref={ref}\n className={cn(collapsibleTriggerVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 ml-auto transition-transform duration-200 [&[data-state=open]]:rotate-180\" />\n </CollapsiblePrimitive.Trigger>\n )\n})\nCollapsibleTrigger.displayName = CollapsiblePrimitive.Trigger.displayName\n\nconst collapsibleContentVariants = cva(\n \"overflow-hidden transition-all data-[state=closed]:animate-collapse-up data-[state=open]:animate-collapse-down\",\n {\n variants: {\n variant: {\n default: \"text-muted-foreground\",\n ghost: \"text-muted-foreground rounded-b\",\n outline: \"text-muted-foreground border border-t-0 border-border rounded-b-md\",\n },\n size: {\n sm: \"text-xs\",\n default: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\ninterface CollapsibleContentProps \n extends React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Content>,\n VariantProps<typeof collapsibleContentVariants> {}\n\nconst CollapsibleContent = React.forwardRef<\n React.ElementRef<typeof CollapsiblePrimitive.Content>,\n CollapsibleContentProps\n>(({ className, children, variant, size, ...props }, ref) => (\n <CollapsiblePrimitive.Content\n ref={ref}\n className={cn(collapsibleContentVariants({ variant, size }), className)}\n {...props}\n >\n <div className=\"p-4\">{children}</div>\n </CollapsiblePrimitive.Content>\n))\nCollapsibleContent.displayName = CollapsiblePrimitive.Content.displayName\n\nexport {\n Collapsible,\n CollapsibleTrigger,\n CollapsibleContent,\n collapsibleTriggerVariants,\n collapsibleContentVariants,\n}\n\nexport type {\n CollapsibleTriggerProps,\n CollapsibleContentProps\n}\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { Presence } from '@radix-ui/react-presence';\nimport { useId } from '@radix-ui/react-id';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Collapsible\n * -----------------------------------------------------------------------------------------------*/\n\nconst COLLAPSIBLE_NAME = 'Collapsible';\n\ntype ScopedProps<P> = P & { __scopeCollapsible?: Scope };\nconst [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);\n\ntype CollapsibleContextValue = {\n contentId: string;\n disabled?: boolean;\n open: boolean;\n onOpenToggle(): void;\n};\n\nconst [CollapsibleProvider, useCollapsibleContext] =\n createCollapsibleContext<CollapsibleContextValue>(COLLAPSIBLE_NAME);\n\ntype CollapsibleElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface CollapsibleProps extends PrimitiveDivProps {\n defaultOpen?: boolean;\n open?: boolean;\n disabled?: boolean;\n onOpenChange?(open: boolean): void;\n}\n\nconst Collapsible = React.forwardRef<CollapsibleElement, CollapsibleProps>(\n (props: ScopedProps<CollapsibleProps>, forwardedRef) => {\n const {\n __scopeCollapsible,\n open: openProp,\n defaultOpen,\n disabled,\n onOpenChange,\n ...collapsibleProps\n } = props;\n\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: COLLAPSIBLE_NAME,\n });\n\n return (\n <CollapsibleProvider\n scope={__scopeCollapsible}\n disabled={disabled}\n contentId={useId()}\n open={open}\n onOpenToggle={React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen])}\n >\n <Primitive.div\n data-state={getState(open)}\n data-disabled={disabled ? '' : undefined}\n {...collapsibleProps}\n ref={forwardedRef}\n />\n </CollapsibleProvider>\n );\n }\n);\n\nCollapsible.displayName = COLLAPSIBLE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CollapsibleTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'CollapsibleTrigger';\n\ntype CollapsibleTriggerElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface CollapsibleTriggerProps extends PrimitiveButtonProps {}\n\nconst CollapsibleTrigger = React.forwardRef<CollapsibleTriggerElement, CollapsibleTriggerProps>(\n (props: ScopedProps<CollapsibleTriggerProps>, forwardedRef) => {\n const { __scopeCollapsible, ...triggerProps } = props;\n const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);\n return (\n <Primitive.button\n type=\"button\"\n aria-controls={context.contentId}\n aria-expanded={context.open || false}\n data-state={getState(context.open)}\n data-disabled={context.disabled ? '' : undefined}\n disabled={context.disabled}\n {...triggerProps}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, context.onOpenToggle)}\n />\n );\n }\n);\n\nCollapsibleTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CollapsibleContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'CollapsibleContent';\n\ntype CollapsibleContentElement = CollapsibleContentImplElement;\ninterface CollapsibleContentProps extends Omit<CollapsibleContentImplProps, 'present'> {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst CollapsibleContent = React.forwardRef<CollapsibleContentElement, CollapsibleContentProps>(\n (props: ScopedProps<CollapsibleContentProps>, forwardedRef) => {\n const { forceMount, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);\n return (\n <Presence present={forceMount || context.open}>\n {({ present }) => (\n <CollapsibleContentImpl {...contentProps} ref={forwardedRef} present={present} />\n )}\n </Presence>\n );\n }\n);\n\nCollapsibleContent.displayName = CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype CollapsibleContentImplElement = React.ComponentRef<typeof Primitive.div>;\ninterface CollapsibleContentImplProps extends PrimitiveDivProps {\n present: boolean;\n}\n\nconst CollapsibleContentImpl = React.forwardRef<\n CollapsibleContentImplElement,\n CollapsibleContentImplProps\n>((props: ScopedProps<CollapsibleContentImplProps>, forwardedRef) => {\n const { __scopeCollapsible, present, children, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);\n const [isPresent, setIsPresent] = React.useState(present);\n const ref = React.useRef<CollapsibleContentImplElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const heightRef = React.useRef<number | undefined>(0);\n const height = heightRef.current;\n const widthRef = React.useRef<number | undefined>(0);\n const width = widthRef.current;\n // when opening we want it to immediately open to retrieve dimensions\n // when closing we delay `present` to retrieve dimensions before closing\n const isOpen = context.open || isPresent;\n const isMountAnimationPreventedRef = React.useRef(isOpen);\n const originalStylesRef = React.useRef<Record<string, string>>(undefined);\n\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => (isMountAnimationPreventedRef.current = false));\n return () => cancelAnimationFrame(rAF);\n }, []);\n\n useLayoutEffect(() => {\n const node = ref.current;\n if (node) {\n originalStylesRef.current = originalStylesRef.current || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName,\n };\n // block any animations/transitions so the element renders at its full dimensions\n node.style.transitionDuration = '0s';\n node.style.animationName = 'none';\n\n // get width and height from full dimensions\n const rect = node.getBoundingClientRect();\n heightRef.current = rect.height;\n widthRef.current = rect.width;\n\n // kick off any animations/transitions that were originally set up if it isn't the initial mount\n if (!isMountAnimationPreventedRef.current) {\n node.style.transitionDuration = originalStylesRef.current.transitionDuration!;\n node.style.animationName = originalStylesRef.current.animationName!;\n }\n\n setIsPresent(present);\n }\n /**\n * depends on `context.open` because it will change to `false`\n * when a close is triggered but `present` will be `false` on\n * animation end (so when close finishes). This allows us to\n * retrieve the dimensions *before* closing.\n */\n }, [context.open, present]);\n\n return (\n <Primitive.div\n data-state={getState(context.open)}\n data-disabled={context.disabled ? '' : undefined}\n id={context.contentId}\n hidden={!isOpen}\n {...contentProps}\n ref={composedRefs}\n style={{\n [`--radix-collapsible-content-height` as any]: height ? `${height}px` : undefined,\n [`--radix-collapsible-content-width` as any]: width ? `${width}px` : undefined,\n ...props.style,\n }}\n >\n {isOpen && children}\n </Primitive.div>\n );\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getState(open?: boolean) {\n return open ? 'open' : 'closed';\n}\n\nconst Root = Collapsible;\nconst Trigger = CollapsibleTrigger;\nconst Content = CollapsibleContent;\n\nexport {\n createCollapsibleScope,\n //\n Collapsible,\n CollapsibleTrigger,\n CollapsibleContent,\n //\n Root,\n Trigger,\n Content,\n};\nexport type { CollapsibleProps, CollapsibleTriggerProps, CollapsibleContentProps };\n","function composeEventHandlers<E extends { defaultPrevented: boolean }>(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n) {\n return function handleEvent(event: E) {\n originalEventHandler?.(event);\n\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\n\nexport { composeEventHandlers };\n","import * as React from 'react';\n\nfunction createContext<ContextValueType extends object | null>(\n rootComponentName: string,\n defaultContext?: ContextValueType\n) {\n const Context = React.createContext<ContextValueType | undefined>(defaultContext);\n\n const Provider: React.FC<ContextValueType & { children: React.ReactNode }> = (props) => {\n const { children, ...context } = props;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n Provider.displayName = rootComponentName + 'Provider';\n\n function useContext(consumerName: string) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n return [Provider, useContext] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * createContextScope\n * -----------------------------------------------------------------------------------------------*/\n\ntype Scope<C = any> = { [scopeName: string]: React.Context<C>[] } | undefined;\ntype ScopeHook = (scope: Scope) => { [__scopeProp: string]: Scope };\ninterface CreateScope {\n scopeName: string;\n (): ScopeHook;\n}\n\nfunction createContextScope(scopeName: string, createContextScopeDeps: CreateScope[] = []) {\n let defaultContexts: any[] = [];\n\n /* -----------------------------------------------------------------------------------------------\n * createContext\n * ---------------------------------------------------------------------------------------------*/\n\n function createContext<ContextValueType extends object | null>(\n rootComponentName: string,\n defaultContext?: ContextValueType\n ) {\n const BaseContext = React.createContext<ContextValueType | undefined>(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n\n const Provider: React.FC<\n ContextValueType & { scope: Scope<ContextValueType>; children: React.ReactNode }\n > = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n Provider.displayName = rootComponentName + 'Provider';\n\n function useContext(consumerName: string, scope: Scope<ContextValueType | undefined>) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n return [Provider, useContext] as const;\n }\n\n /* -----------------------------------------------------------------------------------------------\n * createScope\n * ---------------------------------------------------------------------------------------------*/\n\n const createScope: CreateScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope: Scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n\n createScope.scopeName = scopeName;\n return [createContext, composeContextScopes(createScope, ...createContextScopeDeps)] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * composeContextScopes\n * -----------------------------------------------------------------------------------------------*/\n\nfunction composeContextScopes(...scopes: CreateScope[]) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n\n const createScope: CreateScope = () => {\n const scopeHooks = scopes.map((createScope) => ({\n useScope: createScope(),\n scopeName: createScope.scopeName,\n }));\n\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes, { useScope, scopeName }) => {\n // We are calling a hook inside a callback which React warns against to avoid inconsistent\n // renders, however, scoping doesn't have render side effects so we ignore the rule.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes, ...currentScope };\n }, {});\n\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nexport { createContext, createContextScope };\nexport type { CreateScope, Scope };\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// Prevent bundlers from trying to optimize the import\nconst useInsertionEffect: typeof useLayoutEffect =\n (React as any)[' useInsertionEffect '.trim().toString()] || useLayoutEffect;\n\ntype ChangeHandler<T> = (state: T) => void;\ntype SetStateFn<T> = React.Dispatch<React.SetStateAction<T>>;\n\ninterface UseControllableStateParams<T> {\n prop?: T | undefined;\n defaultProp: T;\n onChange?: ChangeHandler<T>;\n caller?: string;\n}\n\nexport function useControllableState<T>({\n prop,\n defaultProp,\n onChange = () => {},\n caller,\n}: UseControllableStateParams<T>): [T, SetStateFn<T>] {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange,\n });\n const isControlled = prop !== undefined;\n const value = isControlled ? prop : uncontrolledProp;\n\n // OK to disable conditionally calling hooks here because they will always run\n // consistently in the same environment. Bundlers should be able to remove the\n // code block entirely in production.\n /* eslint-disable react-hooks/rules-of-hooks */\n if (process.env.NODE_ENV !== 'production') {\n const isControlledRef = React.useRef(prop !== undefined);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? 'controlled' : 'uncontrolled';\n const to = isControlled ? 'controlled' : 'uncontrolled';\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n /* eslint-enable react-hooks/rules-of-hooks */\n\n const setValue = React.useCallback<SetStateFn<T>>(\n (nextValue) => {\n if (isControlled) {\n const value = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value !== prop) {\n onChangeRef.current?.(value);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n\n return [value, setValue];\n}\n\nfunction useUncontrolledState<T>({\n defaultProp,\n onChange,\n}: Omit<UseControllableStateParams<T>, 'prop'>): [\n Value: T,\n setValue: React.Dispatch<React.SetStateAction<T>>,\n OnChangeRef: React.RefObject<ChangeHandler<T> | undefined>,\n] {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n\n return [value, setValue, onChangeRef];\n}\n\nfunction isFunction(value: unknown): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n","import * as React from 'react';\n\n/**\n * On the server, React emits a warning when calling `useLayoutEffect`.\n * This is because neither `useLayoutEffect` nor `useEffect` run on the server.\n * We use this safe version which suppresses the warning by replacing it with a noop on the server.\n *\n * See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect\n */\nconst useLayoutEffect = globalThis?.document ? React.useLayoutEffect : () => {};\n\nexport { useLayoutEffect };\n","import * as React from 'react';\nimport { useEffectEvent } from '@radix-ui/react-use-effect-event';\n\ntype ChangeHandler<T> = (state: T) => void;\n\ninterface UseControllableStateParams<T> {\n prop: T | undefined;\n defaultProp: T;\n onChange: ChangeHandler<T> | undefined;\n caller: string;\n}\n\ninterface AnyAction {\n type: string;\n}\n\nconst SYNC_STATE = Symbol('RADIX:SYNC_STATE');\n\ninterface SyncStateAction<T> {\n type: typeof SYNC_STATE;\n state: T;\n}\n\nexport function useControllableStateReducer<T, S extends {}, A extends AnyAction>(\n reducer: (prevState: S & { state: T }, action: A) => S & { state: T },\n userArgs: UseControllableStateParams<T>,\n initialState: S\n): [S & { state: T }, React.Dispatch<A>];\n\nexport function useControllableStateReducer<T, S extends {}, I, A extends AnyAction>(\n reducer: (prevState: S & { state: T }, action: A) => S & { state: T },\n userArgs: UseControllableStateParams<T>,\n initialArg: I,\n init: (i: I & { state: T }) => S\n): [S & { state: T }, React.Dispatch<A>];\n\nexport function useControllableStateReducer<T, S extends {}, A extends AnyAction>(\n reducer: (prevState: S & { state: T }, action: A) => S & { state: T },\n userArgs: UseControllableStateParams<T>,\n initialArg: any,\n init?: (i: any) => Omit<S, 'state'>\n): [S & { state: T }, React.Dispatch<A>] {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== undefined;\n\n const onChange = useEffectEvent(onChangeProp);\n\n // OK to disable conditionally calling hooks here because they will always run\n // consistently in the same environment. Bundlers should be able to remove the\n // code block entirely in production.\n /* eslint-disable react-hooks/rules-of-hooks */\n if (process.env.NODE_ENV !== 'production') {\n const isControlledRef = React.useRef(controlledState !== undefined);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? 'controlled' : 'uncontrolled';\n const to = isControlled ? 'controlled' : 'uncontrolled';\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n /* eslint-enable react-hooks/rules-of-hooks */\n\n type InternalState = S & { state: T };\n const args: [InternalState] = [{ ...initialArg, state: defaultProp }];\n if (init) {\n // @ts-expect-error\n args.push(init);\n }\n\n const [internalState, dispatch] = React.useReducer(\n (state: InternalState, action: A | SyncStateAction<T>): InternalState => {\n if (action.type === SYNC_STATE) {\n return { ...state, state: action.state };\n }\n\n const next = reducer(state, action);\n if (isControlled && !Object.is(next.state, state.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n\n const uncontrolledState = internalState.state;\n const prevValueRef = React.useRef(uncontrolledState);\n React.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n\n const state = React.useMemo(() => {\n const isControlled = controlledState !== undefined;\n if (isControlled) {\n return { ...internalState, state: controlledState };\n }\n\n return internalState;\n }, [internalState, controlledState]);\n\n React.useEffect(() => {\n // Sync internal state for controlled components so that reducer is called\n // with the correct state values\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n\n return [state, dispatch as React.Dispatch<A>];\n}\n","import * as React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n return ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == 'function') {\n hasCleanup = true;\n }\n return cleanup;\n });\n\n // React <19 will log an error to the console if a callback ref returns a\n // value. We don't use ref cleanups internally so this will only happen if a\n // user's ref callback returns a value, which we only expect if they are\n // using the cleanup functionality added in React 19.\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == 'function') {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createSlot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'form',\n 'h2',\n 'h3',\n 'img',\n 'input',\n 'label',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'select',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\ntype Primitives = { [E in (typeof NODES)[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n if (typeof window !== 'undefined') {\n (window as any)[Symbol.for('radix-ui')] = true;\n }\n\n return <Comp {...primitiveProps} ref={forwardedRef} />;\n });\n\n Node.displayName = `Primitive.${node}`;\n\n return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n * - discrete\n * - continuous\n * - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not necessary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n};\nexport type { PrimitivePropsWithRef };\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useStateMachine } from './use-state-machine';\n\ninterface PresenceProps {\n children: React.ReactElement | ((props: { present: boolean }) => React.ReactElement);\n present: boolean;\n}\n\nconst Presence: React.FC<PresenceProps> = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n\n const child = (\n typeof children === 'function'\n ? children({ present: presence.isPresent })\n : React.Children.only(children)\n ) as React.ReactElement<{ ref?: React.Ref<HTMLElement> }>;\n\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === 'function';\n return forceMount || presence.isPresent ? React.cloneElement(child, { ref }) : null;\n};\n\nPresence.displayName = 'Presence';\n\n/* -------------------------------------------------------------------------------------------------\n * usePresence\n * -----------------------------------------------------------------------------------------------*/\n\nfunction usePresence(present: boolean) {\n const [node, setNode] = React.useState<HTMLElement>();\n const stylesRef = React.useRef<CSSStyleDeclaration | null>(null);\n const prevPresentRef = React.useRef(present);\n const prevAnimationNameRef = React.useRef<string>('none');\n const initialState = present ? 'mounted' : 'unmounted';\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: 'unmounted',\n ANIMATION_OUT: 'unmountSuspended',\n },\n unmountSuspended: {\n MOUNT: 'mounted',\n ANIMATION_END: 'unmounted',\n },\n unmounted: {\n MOUNT: 'mounted',\n },\n });\n\n React.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none';\n }, [state]);\n\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n\n if (present) {\n send('MOUNT');\n } else if (currentAnimationName === 'none' || styles?.display === 'none') {\n // If there is no exit animation or the element is hidden, animations won't run\n // so we unmount instantly\n send('UNMOUNT');\n } else {\n /**\n * When `present` changes to `false`, we check changes to animation-name to\n * determine whether an animation has started. We chose this approach (reading\n * computed styles) because there is no `animationrun` event and `animationstart`\n * fires after `animation-delay` has expired which would be too late.\n */\n const isAnimating = prevAnimationName !== currentAnimationName;\n\n if (wasPresent && isAnimating) {\n send('ANIMATION_OUT');\n } else {\n send('UNMOUNT');\n }\n }\n\n prevPresentRef.current = present;\n }\n }, [present, send]);\n\n useLayoutEffect(() => {\n if (node) {\n let timeoutId: number;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n /**\n * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`\n * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we\n * make sure we only trigger ANIMATION_END for the currently active animation.\n */\n const handleAnimationEnd = (event: AnimationEvent) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n if (event.target === node && isCurrentAnimation) {\n // With React 18 concurrency this update is applied a frame after the\n // animation ends, creating a flash of visible content. By setting the\n // animation fill mode to \"forwards\", we force the node to keep the\n // styles of the last keyframe, removing the flash.\n //\n // Previously we flushed the update via ReactDom.flushSync, but with\n // exit animations this resulted in the node being removed from the\n // DOM before the synthetic animationEnd event was dispatched, meaning\n // user-provided event handlers would not be called.\n // https://github.com/radix-ui/primitives/pull/1849\n send('ANIMATION_END');\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = 'forwards';\n // Reset the style after the node had time to unmount (for cases\n // where the component chooses not to unmount). Doing this any\n // sooner than `setTimeout` (e.g. with `requestAnimationFrame`)\n // still causes a flash.\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === 'forwards') {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event: AnimationEvent) => {\n if (event.target === node) {\n // if animation occurred, store its name as the previous animation.\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener('animationstart', handleAnimationStart);\n node.addEventListener('animationcancel', handleAnimationEnd);\n node.addEventListener('animationend', handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener('animationstart', handleAnimationStart);\n node.removeEventListener('animationcancel', handleAnimationEnd);\n node.removeEventListener('animationend', handleAnimationEnd);\n };\n } else {\n // Transition to the unmounted state if the node is removed prematurely.\n // We avoid doing so during cleanup as the node may change but still exist.\n send('ANIMATION_END');\n }\n }, [node, send]);\n\n return {\n isPresent: ['mounted', 'unmountSuspended'].includes(state),\n ref: React.useCallback((node: HTMLElement) => {\n stylesRef.current = node ? getComputedStyle(node) : null;\n setNode(node);\n }, []),\n };\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getAnimationName(styles: CSSStyleDeclaration | null) {\n return styles?.animationName || 'none';\n}\n\n// Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`\n// After React 19 accessing `element.ref` does the opposite.\n// https://github.com/facebook/react/pull/28348\n//\n// Access the ref using the method that doesn't yield a warning.\nfunction getElementRef(element: React.ReactElement<{ ref?: React.Ref<unknown> }>) {\n // React <=18 in DEV\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element as any).ref;\n }\n\n // React 19 in DEV\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n\n // Not DEV\n return element.props.ref || (element as any).ref;\n}\n\nconst Root = Presence;\n\nexport {\n Presence,\n //\n Root,\n};\nexport type { PresenceProps };\n","import * as React from 'react';\n\ntype Machine<S> = { [k: string]: { [k: string]: S } };\ntype MachineState<T> = keyof T;\ntype MachineEvent<T> = keyof UnionToIntersection<T[keyof T]>;\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n ? R\n : never;\n\nexport function useStateMachine<M>(\n initialState: MachineState<M>,\n machine: M & Machine<MachineState<M>>\n) {\n return React.useReducer((state: MachineState<M>, event: MachineEvent<M>): MachineState<M> => {\n const nextState = (machine[state] as any)[event];\n return nextState ?? state;\n }, initialState);\n}\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// We spaces with `.trim().toString()` to prevent bundlers from trying to `import { useId } from 'react';`\nconst useReactId = (React as any)[' useId '.trim().toString()] || (() => undefined);\nlet count = 0;\n\nfunction useId(deterministicId?: string): string {\n const [id, setId] = React.useState<string | undefined>(useReactId());\n // React versions older than 18 will have client-side ids only.\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : '');\n}\n\nexport { useId };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { Label } from \"./label\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"./popover\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"./tabs\";\nimport { Slider } from \"./slider\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { Copy, Check, Palette, Pipette } from \"lucide-react\";\n\n/**\n * ColorPicker Component\n * \n * A comprehensive color picker with multiple input methods\n */\n\nconst colorPickerVariants = cva(\n \"relative inline-flex items-center justify-center\",\n {\n variants: {\n size: {\n default: \"h-10 w-10\",\n sm: \"h-8 w-8\",\n lg: \"h-12 w-12\",\n xl: \"h-16 w-16\",\n },\n shape: {\n square: \"rounded-md\",\n circle: \"rounded-full\",\n rounded: \"rounded-lg\",\n },\n },\n defaultVariants: {\n size: \"default\",\n shape: \"square\",\n },\n }\n);\n\n// Color utilities\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n }\n : null;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n return \"#\" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n}\n\nfunction hexToHsl(hex: string): { h: number; s: number; l: number } | null {\n const rgb = hexToRgb(hex);\n if (!rgb) return null;\n\n const r = rgb.r / 255;\n const g = rgb.g / 255;\n const b = rgb.b / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n break;\n case g:\n h = ((b - r) / d + 2) / 6;\n break;\n case b:\n h = ((r - g) / d + 4) / 6;\n break;\n }\n }\n\n return {\n h: Math.round(h * 360),\n s: Math.round(s * 100),\n l: Math.round(l * 100),\n };\n}\n\nfunction hslToHex(h: number, s: number, l: number): string {\n h = h / 360;\n s = s / 100;\n l = l / 100;\n\n let r, g, b;\n\n if (s === 0) {\n r = g = b = l;\n } else {\n const hue2rgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return rgbToHex(\n Math.round(r * 255),\n Math.round(g * 255),\n Math.round(b * 255)\n );\n}\n\nexport interface ColorPickerProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\" | \"value\">,\n VariantProps<typeof colorPickerVariants> {\n /**\n * Current color value\n */\n value?: string;\n /**\n * Callback when color changes\n */\n onChange?: (color: string) => void;\n /**\n * Show color input\n */\n showInput?: boolean;\n /**\n * Show preset colors\n */\n showPresets?: boolean;\n /**\n * Preset colors\n */\n presets?: string[];\n /**\n * Allow opacity\n */\n allowOpacity?: boolean;\n /**\n * Color format\n */\n format?: \"hex\" | \"rgb\" | \"hsl\";\n /**\n * Disable copy button\n */\n disableCopy?: boolean;\n /**\n * Trigger mode\n */\n triggerMode?: \"click\" | \"hover\";\n}\n\n// Default preset colors\nconst defaultPresets = [\n \"#000000\", \"#ffffff\", \"#ff0000\", \"#00ff00\", \"#0000ff\",\n \"#ffff00\", \"#ff00ff\", \"#00ffff\", \"#ff8800\", \"#8800ff\",\n \"#88ff00\", \"#0088ff\", \"#ff0088\", \"#00ff88\", \"#888888\",\n \"#f87171\", \"#fb923c\", \"#fbbf24\", \"#facc15\", \"#a3e635\",\n \"#4ade80\", \"#34d399\", \"#2dd4bf\", \"#22d3ee\", \"#38bdf8\",\n \"#60a5fa\", \"#818cf8\", \"#a78bfa\", \"#c084fc\", \"#e879f9\",\n \"#f472b6\", \"#fb7185\", \"#f43f5e\", \"#ef4444\", \"#dc2626\",\n];\n\nexport function ColorPicker({\n className,\n size,\n shape,\n value = \"#000000\",\n onChange,\n showInput = true,\n showPresets = true,\n presets = defaultPresets,\n allowOpacity = false,\n format = \"hex\",\n disableCopy = false,\n triggerMode = \"click\",\n disabled,\n ...props\n}: ColorPickerProps) {\n const [open, setOpen] = React.useState(false);\n const [color, setColor] = React.useState(value);\n const [opacity, setOpacity] = React.useState(100);\n const [copied, setCopied] = React.useState(false);\n const [inputValue, setInputValue] = React.useState(value);\n\n // Color components\n const hsl = React.useMemo(() => hexToHsl(color) || { h: 0, s: 0, l: 0 }, [color]);\n const rgb = React.useMemo(() => hexToRgb(color) || { r: 0, g: 0, b: 0 }, [color]);\n\n React.useEffect(() => {\n setColor(value);\n setInputValue(value);\n }, [value]);\n\n const handleColorChange = (newColor: string) => {\n setColor(newColor);\n setInputValue(newColor);\n onChange?.(newColor);\n };\n\n const handleHslChange = (component: \"h\" | \"s\" | \"l\", value: number) => {\n const newHsl = { ...hsl, [component]: value };\n const newColor = hslToHex(newHsl.h, newHsl.s, newHsl.l);\n handleColorChange(newColor);\n };\n\n const handleRgbChange = (component: \"r\" | \"g\" | \"b\", value: number) => {\n const newRgb = { ...rgb, [component]: value };\n const newColor = rgbToHex(newRgb.r, newRgb.g, newRgb.b);\n handleColorChange(newColor);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setInputValue(newValue);\n if (/^#[0-9A-F]{6}$/i.test(newValue)) {\n handleColorChange(newValue);\n }\n };\n\n const copyToClipboard = async () => {\n try {\n let textToCopy = color;\n if (format === \"rgb\") {\n textToCopy = `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`;\n } else if (format === \"hsl\") {\n textToCopy = `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`;\n }\n await navigator.clipboard.writeText(textToCopy);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n console.error(\"Failed to copy:\", err);\n }\n };\n\n const formatDisplay = () => {\n if (format === \"rgb\") return `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`;\n if (format === \"hsl\") return `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`;\n return color;\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n colorPickerVariants({ size, shape }),\n \"p-0 border-2\",\n className\n )}\n style={{ backgroundColor: color }}\n disabled={disabled}\n {...props}\n >\n <span className=\"sr-only\">Pick a color</span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80\" align=\"start\" sideOffset={8}>\n <Tabs defaultValue=\"picker\" className=\"w-full\">\n <TabsList className=\"grid w-full grid-cols-3\">\n <TabsTrigger value=\"picker\">Picker</TabsTrigger>\n <TabsTrigger value=\"sliders\">Sliders</TabsTrigger>\n <TabsTrigger value=\"input\">Input</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"picker\" className=\"space-y-4\">\n {/* Color gradient picker */}\n <div className=\"relative h-48 rounded-md overflow-hidden\">\n <div\n className=\"absolute inset-0\"\n style={{\n background: `linear-gradient(to right, #fff, hsl(${hsl.h}, 100%, 50%))`,\n }}\n />\n <div\n className=\"absolute inset-0\"\n style={{\n background: \"linear-gradient(to bottom, transparent, #000)\",\n }}\n />\n <motion.div\n className=\"absolute w-4 h-4 border-2 border-white rounded-full shadow-md cursor-pointer\"\n drag\n dragConstraints={{\n left: -8,\n right: 280,\n top: -8,\n bottom: 184,\n }}\n dragElastic={0}\n style={{\n backgroundColor: color,\n left: `${(hsl.s / 100) * 280 - 8}px`,\n top: `${(1 - hsl.l / 100) * 192 - 8}px`,\n }}\n />\n </div>\n\n {/* Hue slider */}\n <div className=\"space-y-2\">\n <Label>Hue</Label>\n <div\n className=\"relative h-3 rounded-full\"\n style={{\n background:\n \"linear-gradient(to right, #ff0000, #ffff00, #00ff00, #00ffff, #0000ff, #ff00ff, #ff0000)\",\n }}\n >\n <Slider\n value={[hsl.h]}\n onValueChange={([value]) => handleHslChange(\"h\", value)}\n max={360}\n step={1}\n className=\"absolute inset-0\"\n />\n </div>\n </div>\n\n {/* Opacity slider */}\n {allowOpacity && (\n <div className=\"space-y-2\">\n <Label>Opacity</Label>\n <div className=\"flex items-center gap-3\">\n <Slider\n value={[opacity]}\n onValueChange={([value]) => setOpacity(value)}\n max={100}\n step={1}\n className=\"flex-1\"\n />\n <span className=\"text-sm w-10 text-right\">{opacity}%</span>\n </div>\n </div>\n )}\n </TabsContent>\n\n <TabsContent value=\"sliders\" className=\"space-y-4\">\n {/* RGB Sliders */}\n <div className=\"space-y-3\">\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <Label>Red</Label>\n <span className=\"text-sm text-muted-foreground\">{rgb.r}</span>\n </div>\n <Slider\n value={[rgb.r]}\n onValueChange={([value]) => handleRgbChange(\"r\", value)}\n max={255}\n step={1}\n className=\"[&_[role=slider]]:bg-red-500\"\n />\n </div>\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <Label>Green</Label>\n <span className=\"text-sm text-muted-foreground\">{rgb.g}</span>\n </div>\n <Slider\n value={[rgb.g]}\n onValueChange={([value]) => handleRgbChange(\"g\", value)}\n max={255}\n step={1}\n className=\"[&_[role=slider]]:bg-green-500\"\n />\n </div>\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <Label>Blue</Label>\n <span className=\"text-sm text-muted-foreground\">{rgb.b}</span>\n </div>\n <Slider\n value={[rgb.b]}\n onValueChange={([value]) => handleRgbChange(\"b\", value)}\n max={255}\n step={1}\n className=\"[&_[role=slider]]:bg-blue-500\"\n />\n </div>\n </div>\n\n {/* HSL Info */}\n <div className=\"pt-2 border-t\">\n <div className=\"grid grid-cols-3 gap-2 text-sm\">\n <div>\n <p className=\"text-muted-foreground\">H</p>\n <p className=\"font-medium\">{hsl.h}°</p>\n </div>\n <div>\n <p className=\"text-muted-foreground\">S</p>\n <p className=\"font-medium\">{hsl.s}%</p>\n </div>\n <div>\n <p className=\"text-muted-foreground\">L</p>\n <p className=\"font-medium\">{hsl.l}%</p>\n </div>\n </div>\n </div>\n </TabsContent>\n\n <TabsContent value=\"input\" className=\"space-y-4\">\n <div className=\"space-y-2\">\n <Label>Hex Color</Label>\n <div className=\"flex gap-2\">\n <Input\n value={inputValue}\n onChange={handleInputChange}\n placeholder=\"#000000\"\n className=\"font-mono\"\n />\n <Button\n size=\"icon\"\n variant=\"outline\"\n onClick={() => handleColorChange(inputValue)}\n >\n <Check className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <Label>RGB Values</Label>\n <div className=\"grid grid-cols-3 gap-2\">\n <Input\n type=\"number\"\n value={rgb.r}\n onChange={(e) => handleRgbChange(\"r\", parseInt(e.target.value) || 0)}\n min={0}\n max={255}\n className=\"text-center\"\n />\n <Input\n type=\"number\"\n value={rgb.g}\n onChange={(e) => handleRgbChange(\"g\", parseInt(e.target.value) || 0)}\n min={0}\n max={255}\n className=\"text-center\"\n />\n <Input\n type=\"number\"\n value={rgb.b}\n onChange={(e) => handleRgbChange(\"b\", parseInt(e.target.value) || 0)}\n min={0}\n max={255}\n className=\"text-center\"\n />\n </div>\n </div>\n </TabsContent>\n </Tabs>\n\n {/* Color preview and copy */}\n <div className=\"mt-4 flex items-center justify-between p-3 border rounded-lg\">\n <div className=\"flex items-center gap-3\">\n <div\n className={cn(\n \"h-10 w-10 rounded border-2\",\n colorPickerVariants({ shape })\n )}\n style={{ backgroundColor: color }}\n />\n <div>\n <p className=\"text-sm font-medium\">{formatDisplay()}</p>\n <p className=\"text-xs text-muted-foreground\">Current color</p>\n </div>\n </div>\n {!disableCopy && (\n <Button\n size=\"icon\"\n variant=\"ghost\"\n onClick={copyToClipboard}\n className=\"h-8 w-8\"\n >\n <AnimatePresence mode=\"wait\">\n {copied ? (\n <motion.div\n key=\"check\"\n initial={{ scale: 0 }}\n animate={{ scale: 1 }}\n exit={{ scale: 0 }}\n >\n <Check className=\"h-4 w-4 text-green-600\" />\n </motion.div>\n ) : (\n <motion.div\n key=\"copy\"\n initial={{ scale: 0 }}\n animate={{ scale: 1 }}\n exit={{ scale: 0 }}\n >\n <Copy className=\"h-4 w-4\" />\n </motion.div>\n )}\n </AnimatePresence>\n </Button>\n )}\n </div>\n\n {/* Preset colors */}\n {showPresets && presets.length > 0 && (\n <div className=\"mt-4 space-y-2\">\n <Label>Preset Colors</Label>\n <div className=\"grid grid-cols-10 gap-1\">\n {presets.map((presetColor) => (\n <button\n key={presetColor}\n className={cn(\n \"h-7 w-7 rounded border-2 transition-all hover:scale-110\",\n color === presetColor\n ? \"border-primary\"\n : \"border-transparent\"\n )}\n style={{ backgroundColor: presetColor }}\n onClick={() => handleColorChange(presetColor)}\n />\n ))}\n </div>\n </div>\n )}\n </PopoverContent>\n </Popover>\n );\n}\n\n/**\n * SimpleColorPicker Component\n * \n * A simplified color picker with preset colors only\n */\n\nexport interface SimpleColorPickerProps {\n value?: string;\n onChange?: (color: string) => void;\n colors?: string[];\n className?: string;\n size?: \"sm\" | \"default\" | \"lg\";\n}\n\nexport function SimpleColorPicker({\n value = \"#000000\",\n onChange,\n colors = defaultPresets.slice(0, 10),\n className,\n size = \"default\",\n}: SimpleColorPickerProps) {\n const sizeClasses = {\n sm: \"h-6 w-6\",\n default: \"h-8 w-8\",\n lg: \"h-10 w-10\",\n };\n\n return (\n <div className={cn(\"flex flex-wrap gap-2\", className)}>\n {colors.map((color) => (\n <button\n key={color}\n className={cn(\n \"rounded-full border-2 transition-all hover:scale-110\",\n sizeClasses[size],\n value === color ? \"border-primary ring-2 ring-primary/20\" : \"border-transparent\"\n )}\n style={{ backgroundColor: color }}\n onClick={() => onChange?.(color)}\n />\n ))}\n </div>\n );\n}\n\n/**\n * GradientPicker Component\n * \n * Pick gradient colors\n */\n\nexport interface GradientPickerProps {\n value?: { start: string; end: string; angle?: number };\n onChange?: (gradient: { start: string; end: string; angle: number }) => void;\n className?: string;\n}\n\nexport function GradientPicker({\n value = { start: \"#ff0000\", end: \"#0000ff\", angle: 90 },\n onChange,\n className,\n}: GradientPickerProps) {\n const [gradient, setGradient] = React.useState(value);\n\n const handleChange = (field: \"start\" | \"end\" | \"angle\", newValue: string | number) => {\n const newGradient = { ...gradient, [field]: newValue };\n setGradient(newGradient);\n onChange?.(newGradient as { start: string; end: string; angle: number });\n };\n\n return (\n <div className={cn(\"space-y-4\", className)}>\n <div\n className=\"h-20 rounded-lg border-2\"\n style={{\n background: `linear-gradient(${gradient.angle}deg, ${gradient.start}, ${gradient.end})`,\n }}\n />\n \n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <Label>Start Color</Label>\n <ColorPicker\n value={gradient.start}\n onChange={(color) => handleChange(\"start\", color)}\n size=\"sm\"\n />\n </div>\n <div className=\"space-y-2\">\n <Label>End Color</Label>\n <ColorPicker\n value={gradient.end}\n onChange={(color) => handleChange(\"end\", color)}\n size=\"sm\"\n />\n </div>\n </div>\n \n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <Label>Angle</Label>\n <span className=\"text-sm text-muted-foreground\">{gradient.angle}°</span>\n </div>\n <Slider\n value={[gradient.angle || 90]}\n onValueChange={([value]) => handleChange(\"angle\", value)}\n max={360}\n step={1}\n />\n </div>\n </div>\n );\n}\n\n// Re-export icons used\nexport { Palette, Pipette } from \"lucide-react\";","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Loader2 } from \"lucide-react\";\n\n/**\n * Premium Input Component\n * \n * Erişilebilir, estetik ve işlevsel input bileşeni.\n * İkon desteği, hata gösterimi ve çeşitli varyantlar sunar.\n */\n\nconst inputWrapperVariants = cva(\n \"group relative flex items-center w-full transition-colors\",\n {\n variants: {\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\nconst inputVariants = cva(\n [\n \"w-full bg-background transition-all duration-200\",\n \"text-foreground placeholder:text-muted-foreground dark:placeholder:text-gray-500\", \n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"file:border-0 file:bg-transparent file:font-medium\",\n \"focus-visible:outline-none dark:text-gray-200\"\n ],\n {\n variants: {\n variant: {\n standard: \"border border-gray-300 dark:border-gray-700 rounded-md px-3 py-2 hover:border-gray-400 dark:hover:border-gray-600 focus-visible:ring-2 focus-visible:ring-primary/30 dark:focus-visible:ring-primary/20 focus-visible:border-primary dark:focus-visible:border-primary/80 dark:bg-gray-900/60 dark:shadow-inner dark:shadow-gray-950/10\",\n filled: \"border border-transparent bg-gray-100 dark:bg-gray-800/90 rounded-md px-3 py-2 hover:bg-gray-200 dark:hover:bg-gray-700/90 focus-visible:ring-2 focus-visible:ring-primary/30 dark:focus-visible:ring-primary/20 dark:shadow-inner dark:shadow-gray-950/10\",\n ghost: \"border-none bg-transparent shadow-none px-1 dark:text-gray-300 dark:placeholder:text-gray-500 hover:bg-gray-100/50 dark:hover:bg-gray-800/30 focus-visible:bg-transparent\",\n underline: \"border-t-0 border-l-0 border-r-0 border-b border-gray-300 dark:border-gray-600 rounded-none px-0 py-2 hover:border-gray-400 dark:hover:border-gray-500 focus-visible:ring-0 focus-visible:border-b-2 focus-visible:border-primary dark:focus-visible:border-primary/80 dark:text-gray-300\",\n },\n size: {\n sm: \"h-8 text-xs\",\n md: \"h-10 text-sm\",\n lg: \"h-12 text-base\",\n },\n hasLeftIcon: {\n true: \"pl-10\",\n false: \"\",\n },\n hasRightIcon: {\n true: \"pr-10\",\n false: \"\",\n },\n hasRightButton: {\n true: \"pr-10\",\n false: \"\",\n },\n isError: {\n true: \"border-error focus-visible:ring-error/30 focus-visible:border-error hover:border-error/80 dark:hover:border-error/80\",\n false: \"\",\n },\n isSuccess: {\n true: \"border-success focus-visible:ring-success/30 focus-visible:border-success hover:border-success/80 dark:hover:border-success/80\",\n false: \"\",\n },\n isDisabled: {\n true: \"opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-800/50 pointer-events-none\",\n false: \"\",\n }\n },\n defaultVariants: {\n variant: \"standard\",\n size: \"md\",\n isError: false,\n isSuccess: false,\n isDisabled: false,\n hasLeftIcon: false,\n hasRightIcon: false,\n hasRightButton: false,\n },\n }\n);\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">,\n Omit<VariantProps<typeof inputVariants>, \"isDisabled\" | \"hasLeftIcon\" | \"hasRightIcon\" | \"hasRightButton\"> {\n /** Hata mesajı */\n error?: string;\n /** Başarı mesajı */\n success?: string;\n /** Yükleniyor durumu */\n loading?: boolean;\n /** Sol tarafta gösterilecek ikon */\n leftIcon?: React.ReactNode;\n /** Sağ tarafta gösterilecek ikon */\n rightIcon?: React.ReactNode;\n /** Sağ tarafta gösterilecek buton (password show/hide vb. için) */\n rightButton?: React.ReactNode;\n /** Mesajın görünürlüğü (true: her zaman görünür, false: sadece hata/başarı durumunda) */\n alwaysShowMessage?: boolean;\n /** Input wrapper için ek sınıflar */\n wrapperClassName?: string;\n /** Mesaj için ek sınıflar */\n messageClassName?: string;\n}\n\n/**\n * Premium Input Component\n * \n * @param props - Input bileşeni özellikleri\n * @param props.variant - Görsel varyant (standard, filled, ghost, underline)\n * @param props.size - Boyut (sm, md, lg)\n * @param props.error - Hata mesajı\n * @param props.success - Başarı mesajı\n * @param props.loading - Yükleniyor durumu\n * @param props.leftIcon - Sol tarafta gösterilecek ikon\n * @param props.rightIcon - Sağ tarafta gösterilecek ikon\n * @param props.rightButton - Sağ tarafta gösterilecek buton\n * @param props.alwaysShowMessage - Mesajın her zaman görünür olması\n */\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ \n className, \n wrapperClassName,\n messageClassName,\n variant, \n size, \n isError,\n disabled, \n error,\n success,\n loading,\n leftIcon,\n rightIcon,\n rightButton,\n alwaysShowMessage = false,\n ...props \n }, ref) => {\n // Mesajı göster/gizle\n const showMessage = alwaysShowMessage || error || success;\n const messageType = error ? \"error\" : success ? \"success\" : \"normal\";\n\n return (\n <div className=\"space-y-1.5 w-full\">\n <div className={cn(inputWrapperVariants({ size }), wrapperClassName)}>\n {leftIcon && (\n <div className=\"absolute left-3 text-gray-500 flex items-center justify-center pointer-events-none\">\n {loading ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : leftIcon}\n </div>\n )}\n \n <input\n className={cn(\n inputVariants({ \n variant, \n size, \n isError: !!error || isError, \n isSuccess: !!success,\n isDisabled: disabled || loading,\n hasLeftIcon: !!leftIcon || loading,\n hasRightIcon: !!rightIcon,\n hasRightButton: !!rightButton,\n }),\n className\n )}\n ref={ref}\n disabled={disabled || loading}\n data-loading={loading ? \"\" : undefined}\n data-error={!!error ? \"\" : undefined}\n data-success={!!success ? \"\" : undefined}\n aria-invalid={!!error || !!isError || undefined}\n aria-describedby={error ? `${props.id || ''}-error` : success ? `${props.id || ''}-success` : undefined}\n {...props}\n />\n \n {rightIcon && !loading && (\n <div className=\"absolute right-3 text-gray-500 flex items-center justify-center pointer-events-none\">\n {rightIcon}\n </div>\n )}\n \n {rightButton && (\n <div className=\"absolute right-3\">\n {rightButton}\n </div>\n )}\n \n {loading && !leftIcon && (\n <div className=\"absolute left-3 text-gray-500 flex items-center justify-center pointer-events-none\">\n <Loader2 className=\"h-4 w-4 animate-spin\" aria-hidden=\"true\" />\n </div>\n )}\n </div>\n \n {showMessage && (\n <p \n className={cn(\n \"text-xs transition-all\",\n messageType === \"error\" && \"text-error\",\n messageType === \"success\" && \"text-success\",\n messageType === \"normal\" && \"text-muted-foreground\",\n messageClassName\n )}\n id={error ? `${props.id || ''}-error` : success ? `${props.id || ''}-success` : undefined}\n >\n {error || success || \"\"}\n </p>\n )}\n </div>\n );\n }\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none text-gray-900 dark:text-gray-200 peer-disabled:cursor-not-allowed peer-disabled:opacity-70 dark:peer-disabled:opacity-60 transition-colors duration-200\"\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Popover Bileşeni\n * \n * Tıklanabilir bir öğeden açılan, tema sistemiyle tam entegre bir içerik bileşeni.\n * Filtreler, ayarlar ve diğer içerikler için kullanışlı ve erişilebilir bir arayüz sağlar.\n */\n\nconst popoverContentVariants = cva(\n \"z-50 w-72 rounded-md border border-border bg-background p-4 shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n {\n variants: {\n variant: {\n default: \"\",\n destructive: \"border-destructive bg-destructive/5\",\n outline: \"border-border bg-transparent\",\n subtle: \"border-transparent bg-muted/50\",\n },\n size: {\n sm: \"w-48 p-3\",\n default: \"w-72 p-4\",\n lg: \"w-96 p-5\",\n },\n side: {\n top: \"data-[side=top]:slide-in-from-bottom-2\",\n right: \"data-[side=right]:slide-in-from-left-2\",\n bottom: \"data-[side=bottom]:slide-in-from-top-2\",\n left: \"data-[side=left]:slide-in-from-right-2\",\n },\n position: {\n pointerEventsNone: \"pointer-events-none\",\n default: \"\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n default: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n },\n shadow: {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n default: \"shadow-md\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n xl: \"shadow-xl\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n shadow: \"default\",\n },\n }\n);\n\nconst Popover = PopoverPrimitive.Root;\nconst PopoverTrigger = PopoverPrimitive.Trigger;\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\nexport interface PopoverContentProps \n extends Omit<React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>, 'side'>,\n VariantProps<typeof popoverContentVariants> {\n /**\n * Popover'ın arka plan bulanıklığı etkin mi\n */\n backdrop?: boolean;\n /**\n * Popover'a tıklandığında kapanıp kapanmayacağı\n */\n closeOnInteractOutside?: boolean;\n /**\n * Popover açıkken arka planın karartılması\n */\n overlayBackdrop?: boolean;\n}\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n PopoverContentProps\n>(({\n className,\n variant,\n size,\n side,\n position,\n radius,\n shadow,\n backdrop = false,\n closeOnInteractOutside = true,\n overlayBackdrop = false,\n sideOffset = 4,\n ...props\n}, ref) => (\n <>\n {overlayBackdrop && (\n <div className=\"fixed inset-0 z-40 bg-overlay opacity-30\" />\n )}\n <PopoverPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n collisionPadding={8}\n onInteractOutside={(e) => {\n if (!closeOnInteractOutside) {\n e.preventDefault();\n }\n }}\n className={cn(\n popoverContentVariants({ \n variant, \n size, \n side, \n position,\n radius,\n shadow\n }),\n backdrop && \"backdrop-blur-md bg-opacity-80\",\n className\n )}\n {...props}\n />\n </>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\n/**\n * PopoverClose bileşeni\n */\nconst PopoverClose = PopoverPrimitive.Close;\n\n/**\n * Popover için bölüm ayırıcı\n */\nconst PopoverSeparator = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"my-2 h-px bg-border\", className)}\n {...props}\n />\n);\nPopoverSeparator.displayName = \"PopoverSeparator\";\n\n/**\n * Popover başlık bileşeni\n */\nconst PopoverHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"-mx-4 -mt-4 mb-3 px-4 pt-4 pb-3 border-b border-border\", className)}\n {...props}\n />\n);\nPopoverHeader.displayName = \"PopoverHeader\";\n\n/**\n * Popover footer bileşeni\n */\nconst PopoverFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"-mx-4 -mb-4 mt-3 px-4 pt-3 pb-4 border-t border-border\", className)}\n {...props}\n />\n);\nPopoverFooter.displayName = \"PopoverFooter\";\n\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverAnchor,\n PopoverClose,\n PopoverSeparator,\n PopoverHeader,\n PopoverFooter,\n popoverContentVariants,\n};\n","import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/* -------------------------------------------------------------------------------------------------\n * Tabs Root\n * -----------------------------------------------------------------------------------------------*/\ninterface TabsProps extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> {\n /** Mobil görünümde dikey düzen için */\n vertical?: boolean;\n}\n\nconst Tabs = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Root>,\n TabsProps\n>(({ vertical = false, ...props }, ref) => (\n <TabsPrimitive.Root\n ref={ref}\n orientation={vertical ? \"vertical\" : \"horizontal\"}\n {...props}\n />\n));\n\nTabs.displayName = TabsPrimitive.Root.displayName;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsList\n * -----------------------------------------------------------------------------------------------*/\nconst tabsListVariants = cva(\n \"flex items-center justify-start transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"bg-muted rounded-md p-1 text-muted-foreground dark:bg-gray-800/80 dark:text-gray-400\",\n pills: \"bg-transparent gap-2 p-0 dark:text-gray-400\", \n underline: \"bg-transparent border-b border-border dark:border-gray-700 gap-4 dark:text-gray-400\",\n cards: \"bg-transparent gap-2 p-0 dark:text-gray-400\",\n minimal: \"bg-transparent gap-1 p-0 dark:text-gray-400\",\n },\n orientation: {\n horizontal: \"flex-row\",\n vertical: \"flex-col items-start gap-1\"\n },\n fullWidth: {\n true: \"w-full\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n orientation: \"horizontal\",\n fullWidth: false\n }\n }\n);\n\ninterface TabsListProps \n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>,\n VariantProps<typeof tabsListVariants> {\n /** Dikey düzende göster */\n orientation?: \"horizontal\" | \"vertical\";\n}\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n TabsListProps\n>(({ className, variant, orientation, fullWidth, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(tabsListVariants({ variant, orientation, fullWidth, className }))}\n {...props}\n />\n));\n\nTabsList.displayName = TabsPrimitive.List.displayName;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsTrigger\n * -----------------------------------------------------------------------------------------------*/\nconst tabsTriggerVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap font-medium ring-offset-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"rounded-md data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm dark:data-[state=active]:bg-gray-900 dark:data-[state=active]:text-gray-100 dark:data-[state=active]:shadow-gray-950/10\",\n underline: \"rounded-none border-b-2 border-transparent pb-2 data-[state=active]:border-primary data-[state=active]:bg-transparent data-[state=active]:text-foreground dark:data-[state=active]:border-primary/80 dark:data-[state=active]:text-gray-100\",\n pills: \"rounded-full bg-muted hover:bg-muted/80 data-[state=active]:bg-primary data-[state=active]:text-primary-foreground dark:bg-gray-800 dark:hover:bg-gray-700 dark:data-[state=active]:bg-primary/90 dark:data-[state=active]:text-white\",\n cards: \"rounded-md bg-muted/50 hover:bg-muted data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-md dark:bg-gray-800/50 dark:hover:bg-gray-700/50 dark:data-[state=active]:bg-gray-900 dark:data-[state=active]:text-gray-100 dark:data-[state=active]:shadow-gray-950/20\",\n minimal: \"rounded-sm bg-transparent hover:bg-muted/30 data-[state=active]:bg-transparent data-[state=active]:text-foreground data-[state=active]:underline data-[state=active]:underline-offset-4 dark:hover:bg-gray-800/30 dark:data-[state=active]:text-gray-200\",\n },\n size: {\n sm: \"h-7 px-2 text-xs\",\n md: \"h-9 px-3 py-1.5 text-sm\",\n lg: \"h-10 px-4 py-2 text-base\",\n },\n orientation: {\n horizontal: \"\",\n vertical: \"justify-start w-full text-left\"\n },\n fullWidth: {\n true: \"w-full\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n orientation: \"horizontal\",\n fullWidth: false\n }\n }\n);\n\ninterface TabsTriggerProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>,\n VariantProps<typeof tabsTriggerVariants> {\n /** İkon konumu */\n iconPosition?: \"left\" | \"right\" | \"none\";\n /** İkon */\n icon?: React.ReactNode;\n /** Badge içeriği */\n badge?: React.ReactNode;\n /** Aktif olmayan durumda yarı saydam */\n fadeTabs?: boolean;\n /** Dikey düzende göster */\n orientation?: \"horizontal\" | \"vertical\";\n}\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n TabsTriggerProps\n>(({ \n className, \n variant, \n size, \n icon, \n iconPosition = \"left\", \n badge,\n fadeTabs = false,\n orientation,\n fullWidth,\n children, \n ...props \n}, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n tabsTriggerVariants({ variant, size, orientation, fullWidth }),\n fadeTabs && \"data-[state=inactive]:opacity-60\",\n className\n )}\n {...props}\n >\n {icon && iconPosition === \"left\" && (\n <span className=\"mr-2\">{icon}</span>\n )}\n {children}\n {icon && iconPosition === \"right\" && (\n <span className=\"ml-2\">{icon}</span>\n )}\n {badge && (\n <span className=\"ml-2\">{badge}</span>\n )}\n </TabsPrimitive.Trigger>\n));\n\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsContent\n * -----------------------------------------------------------------------------------------------*/\ninterface TabsContentProps \n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content> {\n /** İçerik animasyonu */\n animated?: boolean;\n}\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n TabsContentProps\n>(({ className, animated = false, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n animated && \"data-[state=active]:animate-fadeIn data-[state=inactive]:animate-fadeOut\",\n className\n )}\n {...props}\n />\n));\n\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n/**\n * Slider Component\n *\n * Accessible, customizable slider component fully integrated with the theme system.\n * Used for value ranges like volume, brightness, price ranges.\n */\n\nconst sliderVariants = cva(\n \"relative flex w-full touch-none select-none items-center\",\n {\n variants: {\n size: {\n sm: \"h-5\",\n default: \"h-6\",\n md: \"h-8\",\n lg: \"h-10\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\nconst sliderTrackVariants = cva(\n \"relative h-1.5 w-full grow overflow-hidden rounded-full\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n primary: \"bg-primary/20\",\n secondary: \"bg-secondary/20\",\n accent: \"bg-accent/20\",\n success: \"bg-success/20\",\n warning: \"bg-warning/20\",\n error: \"bg-error/20\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst sliderRangeVariants = cva(\n \"absolute h-full\",\n {\n variants: {\n variant: {\n default: \"bg-foreground\",\n primary: \"bg-primary\",\n secondary: \"bg-secondary\",\n accent: \"bg-accent\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n error: \"bg-error\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n }\n)\n\nconst sliderThumbVariants = cva(\n \"block rounded-full border-2 ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"border-foreground bg-background\",\n primary: \"border-primary bg-background\",\n secondary: \"border-secondary bg-background\",\n accent: \"border-accent bg-background\",\n success: \"border-success bg-background\",\n warning: \"border-warning bg-background\",\n error: \"border-error bg-background\",\n },\n size: {\n sm: \"h-3 w-3\",\n default: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"default\",\n },\n }\n)\n\n// Custom type definition for component properties\ntype SliderBaseProps = {\n /**\n * Track variant\n */\n trackVariant?: VariantProps<typeof sliderTrackVariants>[\"variant\"];\n /**\n * Range variant\n */\n rangeVariant?: VariantProps<typeof sliderRangeVariants>[\"variant\"];\n /**\n * Thumb variant\n */\n thumbVariant?: VariantProps<typeof sliderThumbVariants>[\"variant\"];\n /**\n * Thumb size\n */\n thumbSize?: VariantProps<typeof sliderThumbVariants>[\"size\"];\n /**\n * Show value label\n */\n showValueLabel?: boolean;\n /**\n * Value label format function\n */\n valueLabelFormat?: (value: number) => string;\n /**\n * Value label class name\n */\n valueLabelClassName?: string;\n /**\n * Slider value\n */\n value?: number[];\n /**\n * Default value\n */\n defaultValue?: number[];\n /**\n * Function called when value changes\n */\n onValueChange?: (value: number[]) => void;\n /**\n * Minimum value\n */\n min?: number;\n /**\n * Maximum value\n */\n max?: number;\n /**\n * Step value\n */\n step?: number;\n /**\n * Slider size\n */\n size?: VariantProps<typeof sliderVariants>[\"size\"];\n /**\n * Disabled state\n */\n disabled?: boolean;\n}\n\n// Merge HTML properties without defaultValue conflicts\ntype SliderProps = SliderBaseProps & Omit<React.HTMLAttributes<HTMLDivElement>, 'defaultValue'>\n\nconst Slider = React.forwardRef<\n HTMLDivElement,\n SliderProps\n>(({\n className,\n size,\n trackVariant,\n rangeVariant,\n thumbVariant,\n thumbSize,\n showValueLabel = false,\n valueLabelFormat,\n valueLabelClassName,\n value,\n defaultValue = [0],\n onValueChange,\n disabled,\n ...props\n}, ref) => {\n // Value management\n const [sliderValue, setSliderValue] = React.useState<number[]>(\n value as number[] || defaultValue as number[] || [0]\n );\n\n React.useEffect(() => {\n if (value !== undefined) {\n setSliderValue(value as number[]);\n }\n }, [value]);\n\n // Format value label with proper precision handling\n const formatValue = (val: number) => {\n if (valueLabelFormat) {\n return valueLabelFormat(val);\n }\n // Round to avoid floating point precision issues\n const roundedValue = Math.round(val * 100) / 100;\n return `${roundedValue}`;\n };\n\n // Calculate percentage for thumb position\n const calculateThumbPercent = (value: number, min: number, max: number) => {\n return ((value - min) / (max - min)) * 100;\n };\n\n // Handle mouse/touch events\n const trackRef = React.useRef<HTMLDivElement>(null);\n \n const min = props.min || 0;\n const max = props.max || 100;\n const step = props.step || 1;\n\n // Handle value change with proper precision\n const handleValueChange = (newValues: number[]) => {\n // Round values to avoid floating point precision issues\n const roundedValues = newValues.map(val => {\n if (step < 1) {\n // For decimal steps, round to appropriate decimal places\n const decimals = step.toString().split('.')[1]?.length || 0;\n return Math.round(val * Math.pow(10, decimals)) / Math.pow(10, decimals);\n }\n return Math.round(val);\n });\n \n setSliderValue(roundedValues);\n if (onValueChange) {\n onValueChange(roundedValues);\n }\n };\n\n // Handle track click\n const handleTrackClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (disabled) return;\n \n const track = trackRef.current;\n if (!track) return;\n\n const rect = track.getBoundingClientRect();\n const percent = (event.clientX - rect.left) / rect.width;\n const rawValue = min + percent * (max - min);\n const steppedValue = Math.round(rawValue / step) * step;\n const boundedValue = Math.max(min, Math.min(max, steppedValue));\n \n const newValues = [...sliderValue];\n // Just update the first thumb for simplicity\n newValues[0] = boundedValue;\n handleValueChange(newValues);\n };\n\n const handleThumbMouseDown = (index: number) => (event: React.MouseEvent) => {\n if (disabled) return;\n event.preventDefault();\n \n const handleMouseMove = (moveEvent: MouseEvent) => {\n const track = trackRef.current;\n if (!track) return;\n\n const rect = track.getBoundingClientRect();\n const percent = (moveEvent.clientX - rect.left) / rect.width;\n const rawValue = min + percent * (max - min);\n const steppedValue = Math.round(rawValue / step) * step;\n const boundedValue = Math.max(min, Math.min(max, steppedValue));\n \n const newValues = [...sliderValue];\n newValues[index] = boundedValue;\n handleValueChange(newValues);\n };\n\n const handleMouseUp = () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n };\n\n return (\n <div className=\"w-full\" ref={ref} {...props}>\n {showValueLabel && (\n <div className={cn(\n \"flex justify-end mb-1 text-sm text-muted-foreground\",\n valueLabelClassName\n )}>\n {sliderValue.length === 1 ? (\n <span>{formatValue(sliderValue[0])}</span>\n ) : (\n <span>{formatValue(sliderValue[0])} - {formatValue(sliderValue[sliderValue.length - 1])}</span>\n )}\n </div>\n )}\n \n <div\n className={cn(sliderVariants({ size }), className)}\n data-disabled={disabled ? true : undefined}\n >\n {/* Track */}\n <div\n ref={trackRef}\n className={cn(sliderTrackVariants({ variant: trackVariant || thumbVariant || \"default\" }))}\n onClick={handleTrackClick}\n >\n {/* Range */}\n <div\n className={cn(sliderRangeVariants({ variant: rangeVariant || thumbVariant || \"primary\" }))}\n style={{\n left: '0%',\n width: `${calculateThumbPercent(sliderValue[0], min, max)}%`,\n }}\n />\n </div>\n\n {/* Thumbs */}\n {sliderValue.map((value, i) => (\n <div\n key={i}\n className={cn(sliderThumbVariants({\n variant: thumbVariant || \"primary\",\n size: thumbSize\n }))}\n style={{\n left: `${calculateThumbPercent(value, min, max)}%`,\n transform: 'translateX(-50%)',\n position: 'absolute',\n top: '50%',\n marginTop: thumbSize === \"sm\" ? '-6px' : thumbSize === \"lg\" ? '-12px' : '-8px',\n cursor: disabled ? 'not-allowed' : 'pointer',\n }}\n onMouseDown={handleThumbMouseDown(i)}\n aria-label={`Thumb ${i + 1}`}\n tabIndex={disabled ? -1 : 0}\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-disabled={disabled}\n />\n ))}\n </div>\n </div>\n )\n})\n\nSlider.displayName = \"Slider\"\n\nexport { Slider }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Search } from \"lucide-react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Dialog, DialogContent, DialogTitle } from \"./dialog\"\n\n/**\n * Command (Komut Paleti) Bileşeni\n * \n * Gerçek command palette işlevselliği ile klavye navigasyonu, arama ve filtreleme.\n * cmdk kütüphanesi üzerine inşa edilmiş, tam özellikli command interface.\n */\n\nconst commandVariants = cva(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-popover text-popover-foreground\",\n glass: \"bg-background/80 text-foreground backdrop-blur-sm\",\n bordered: \"bg-popover text-popover-foreground border border-border\",\n },\n size: {\n sm: \"min-h-[200px]\",\n default: \"min-h-[300px]\",\n lg: \"min-h-[400px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\n// Command bileşeni - cmdk primitive wrapper\ninterface CommandProps \n extends React.ComponentProps<typeof CommandPrimitive>,\n VariantProps<typeof commandVariants> {}\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n CommandProps\n>(({ className, variant, size, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(commandVariants({ variant, size }), className)}\n {...props}\n />\n))\nCommand.displayName = CommandPrimitive.displayName\n\n// CommandDialog bileşeni\ninterface CommandDialogProps extends React.ComponentProps<typeof Dialog> {\n commandClassName?: string\n children?: React.ReactNode\n}\n\nconst CommandDialog = ({ \n children, \n commandClassName,\n ...props \n}: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\" hideCloseButton>\n <DialogTitle className=\"sr-only\">Command Menu</DialogTitle>\n <Command className={cn(\n \"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\",\n commandClassName\n )}>\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\n// CommandInput bileşeni\ninterface CommandInputProps \n extends React.ComponentProps<typeof CommandPrimitive.Input> {}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n CommandInputProps\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n))\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\n// CommandList bileşeni\ninterface CommandListProps \n extends React.ComponentProps<typeof CommandPrimitive.List> {}\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n CommandListProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n))\nCommandList.displayName = CommandPrimitive.List.displayName\n\n// CommandEmpty bileşeni\ninterface CommandEmptyProps \n extends React.ComponentProps<typeof CommandPrimitive.Empty> {}\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n CommandEmptyProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className={cn(\"py-6 text-center text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\n// CommandGroup bileşeni\ninterface CommandGroupProps \n extends React.ComponentProps<typeof CommandPrimitive.Group> {}\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n CommandGroupProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\n// CommandSeparator bileşeni\ninterface CommandSeparatorProps \n extends React.ComponentProps<typeof CommandPrimitive.Separator> {}\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n CommandSeparatorProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\n// CommandItem bileşeni\ninterface CommandItemProps \n extends React.ComponentProps<typeof CommandPrimitive.Item> {}\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n CommandItemProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50\",\n className\n )}\n {...props}\n />\n))\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\n// CommandShortcut bileşeni - utility component\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nCommandShortcut.displayName = \"CommandShortcut\"\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}","var U=1,Y=.9,H=.8,J=.17,p=.1,u=.999,$=.9999;var k=.99,m=/[\\\\\\/_+.#\"@\\[\\(\\{&]/,B=/[\\\\\\/_+.#\"@\\[\\(\\{&]/g,K=/[\\s-]/,X=/[\\s-]/g;function G(_,C,h,P,A,f,O){if(f===C.length)return A===_.length?U:k;var T=`${A},${f}`;if(O[T]!==void 0)return O[T];for(var L=P.charAt(f),c=h.indexOf(L,A),S=0,E,N,R,M;c>=0;)E=G(_,C,h,P,c+1,f+1,O),E>S&&(c===A?E*=U:m.test(_.charAt(c-1))?(E*=H,R=_.slice(A,c-1).match(B),R&&A>0&&(E*=Math.pow(u,R.length))):K.test(_.charAt(c-1))?(E*=Y,M=_.slice(A,c-1).match(X),M&&A>0&&(E*=Math.pow(u,M.length))):(E*=J,A>0&&(E*=Math.pow(u,c-A))),_.charAt(c)!==C.charAt(f)&&(E*=$)),(E<p&&h.charAt(c-1)===P.charAt(f+1)||P.charAt(f+1)===P.charAt(f)&&h.charAt(c-1)!==P.charAt(f))&&(N=G(_,C,h,P,c+1,f+2,O),N*p>E&&(E=N*p)),E>S&&(S=E),c=h.indexOf(L,c+1);return O[T]=S,S}function D(_){return _.toLowerCase().replace(X,\" \")}function W(_,C,h){return _=h&&h.length>0?`${_+\" \"+h.join(\" \")}`:_,G(_,C,D(_),D(C),0,0,{})}export{W as a};\n","\"use client\";import{a as ae}from\"./chunk-NZJY6EH4.mjs\";import*as w from\"@radix-ui/react-dialog\";import*as t from\"react\";import{Primitive as D}from\"@radix-ui/react-primitive\";import{useId as H}from\"@radix-ui/react-id\";import{composeRefs as G}from\"@radix-ui/react-compose-refs\";var N='[cmdk-group=\"\"]',Y='[cmdk-group-items=\"\"]',be='[cmdk-group-heading=\"\"]',le='[cmdk-item=\"\"]',ce=`${le}:not([aria-disabled=\"true\"])`,Z=\"cmdk-item-select\",T=\"data-value\",Re=(r,o,n)=>ae(r,o,n),ue=t.createContext(void 0),K=()=>t.useContext(ue),de=t.createContext(void 0),ee=()=>t.useContext(de),fe=t.createContext(void 0),me=t.forwardRef((r,o)=>{let n=L(()=>{var e,a;return{search:\"\",value:(a=(e=r.value)!=null?e:r.defaultValue)!=null?a:\"\",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),u=L(()=>new Set),c=L(()=>new Map),d=L(()=>new Map),f=L(()=>new Set),p=pe(r),{label:b,children:m,value:R,onValueChange:x,filter:C,shouldFilter:S,loop:A,disablePointerSelection:ge=!1,vimBindings:j=!0,...O}=r,$=H(),q=H(),_=H(),I=t.useRef(null),v=ke();k(()=>{if(R!==void 0){let e=R.trim();n.current.value=e,E.emit()}},[R]),k(()=>{v(6,ne)},[]);let E=t.useMemo(()=>({subscribe:e=>(f.current.add(e),()=>f.current.delete(e)),snapshot:()=>n.current,setState:(e,a,s)=>{var i,l,g,y;if(!Object.is(n.current[e],a)){if(n.current[e]=a,e===\"search\")J(),z(),v(1,W);else if(e===\"value\"){if(document.activeElement.hasAttribute(\"cmdk-input\")||document.activeElement.hasAttribute(\"cmdk-root\")){let h=document.getElementById(_);h?h.focus():(i=document.getElementById($))==null||i.focus()}if(v(7,()=>{var h;n.current.selectedItemId=(h=M())==null?void 0:h.id,E.emit()}),s||v(5,ne),((l=p.current)==null?void 0:l.value)!==void 0){let h=a!=null?a:\"\";(y=(g=p.current).onValueChange)==null||y.call(g,h);return}}E.emit()}},emit:()=>{f.current.forEach(e=>e())}}),[]),U=t.useMemo(()=>({value:(e,a,s)=>{var i;a!==((i=d.current.get(e))==null?void 0:i.value)&&(d.current.set(e,{value:a,keywords:s}),n.current.filtered.items.set(e,te(a,s)),v(2,()=>{z(),E.emit()}))},item:(e,a)=>(u.current.add(e),a&&(c.current.has(a)?c.current.get(a).add(e):c.current.set(a,new Set([e]))),v(3,()=>{J(),z(),n.current.value||W(),E.emit()}),()=>{d.current.delete(e),u.current.delete(e),n.current.filtered.items.delete(e);let s=M();v(4,()=>{J(),(s==null?void 0:s.getAttribute(\"id\"))===e&&W(),E.emit()})}),group:e=>(c.current.has(e)||c.current.set(e,new Set),()=>{d.current.delete(e),c.current.delete(e)}),filter:()=>p.current.shouldFilter,label:b||r[\"aria-label\"],getDisablePointerSelection:()=>p.current.disablePointerSelection,listId:$,inputId:_,labelId:q,listInnerRef:I}),[]);function te(e,a){var i,l;let s=(l=(i=p.current)==null?void 0:i.filter)!=null?l:Re;return e?s(e,n.current.search,a):0}function z(){if(!n.current.search||p.current.shouldFilter===!1)return;let e=n.current.filtered.items,a=[];n.current.filtered.groups.forEach(i=>{let l=c.current.get(i),g=0;l.forEach(y=>{let h=e.get(y);g=Math.max(h,g)}),a.push([i,g])});let s=I.current;V().sort((i,l)=>{var h,F;let g=i.getAttribute(\"id\"),y=l.getAttribute(\"id\");return((h=e.get(y))!=null?h:0)-((F=e.get(g))!=null?F:0)}).forEach(i=>{let l=i.closest(Y);l?l.appendChild(i.parentElement===l?i:i.closest(`${Y} > *`)):s.appendChild(i.parentElement===s?i:i.closest(`${Y} > *`))}),a.sort((i,l)=>l[1]-i[1]).forEach(i=>{var g;let l=(g=I.current)==null?void 0:g.querySelector(`${N}[${T}=\"${encodeURIComponent(i[0])}\"]`);l==null||l.parentElement.appendChild(l)})}function W(){let e=V().find(s=>s.getAttribute(\"aria-disabled\")!==\"true\"),a=e==null?void 0:e.getAttribute(T);E.setState(\"value\",a||void 0)}function J(){var a,s,i,l;if(!n.current.search||p.current.shouldFilter===!1){n.current.filtered.count=u.current.size;return}n.current.filtered.groups=new Set;let e=0;for(let g of u.current){let y=(s=(a=d.current.get(g))==null?void 0:a.value)!=null?s:\"\",h=(l=(i=d.current.get(g))==null?void 0:i.keywords)!=null?l:[],F=te(y,h);n.current.filtered.items.set(g,F),F>0&&e++}for(let[g,y]of c.current)for(let h of y)if(n.current.filtered.items.get(h)>0){n.current.filtered.groups.add(g);break}n.current.filtered.count=e}function ne(){var a,s,i;let e=M();e&&(((a=e.parentElement)==null?void 0:a.firstChild)===e&&((i=(s=e.closest(N))==null?void 0:s.querySelector(be))==null||i.scrollIntoView({block:\"nearest\"})),e.scrollIntoView({block:\"nearest\"}))}function M(){var e;return(e=I.current)==null?void 0:e.querySelector(`${le}[aria-selected=\"true\"]`)}function V(){var e;return Array.from(((e=I.current)==null?void 0:e.querySelectorAll(ce))||[])}function X(e){let s=V()[e];s&&E.setState(\"value\",s.getAttribute(T))}function Q(e){var g;let a=M(),s=V(),i=s.findIndex(y=>y===a),l=s[i+e];(g=p.current)!=null&&g.loop&&(l=i+e<0?s[s.length-1]:i+e===s.length?s[0]:s[i+e]),l&&E.setState(\"value\",l.getAttribute(T))}function re(e){let a=M(),s=a==null?void 0:a.closest(N),i;for(;s&&!i;)s=e>0?we(s,N):De(s,N),i=s==null?void 0:s.querySelector(ce);i?E.setState(\"value\",i.getAttribute(T)):Q(e)}let oe=()=>X(V().length-1),ie=e=>{e.preventDefault(),e.metaKey?oe():e.altKey?re(1):Q(1)},se=e=>{e.preventDefault(),e.metaKey?X(0):e.altKey?re(-1):Q(-1)};return t.createElement(D.div,{ref:o,tabIndex:-1,...O,\"cmdk-root\":\"\",onKeyDown:e=>{var s;(s=O.onKeyDown)==null||s.call(O,e);let a=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||a))switch(e.key){case\"n\":case\"j\":{j&&e.ctrlKey&&ie(e);break}case\"ArrowDown\":{ie(e);break}case\"p\":case\"k\":{j&&e.ctrlKey&&se(e);break}case\"ArrowUp\":{se(e);break}case\"Home\":{e.preventDefault(),X(0);break}case\"End\":{e.preventDefault(),oe();break}case\"Enter\":{e.preventDefault();let i=M();if(i){let l=new Event(Z);i.dispatchEvent(l)}}}}},t.createElement(\"label\",{\"cmdk-label\":\"\",htmlFor:U.inputId,id:U.labelId,style:Te},b),B(r,e=>t.createElement(de.Provider,{value:E},t.createElement(ue.Provider,{value:U},e))))}),he=t.forwardRef((r,o)=>{var _,I;let n=H(),u=t.useRef(null),c=t.useContext(fe),d=K(),f=pe(r),p=(I=(_=f.current)==null?void 0:_.forceMount)!=null?I:c==null?void 0:c.forceMount;k(()=>{if(!p)return d.item(n,c==null?void 0:c.id)},[p]);let b=ve(n,u,[r.value,r.children,u],r.keywords),m=ee(),R=P(v=>v.value&&v.value===b.current),x=P(v=>p||d.filter()===!1?!0:v.search?v.filtered.items.get(n)>0:!0);t.useEffect(()=>{let v=u.current;if(!(!v||r.disabled))return v.addEventListener(Z,C),()=>v.removeEventListener(Z,C)},[x,r.onSelect,r.disabled]);function C(){var v,E;S(),(E=(v=f.current).onSelect)==null||E.call(v,b.current)}function S(){m.setState(\"value\",b.current,!0)}if(!x)return null;let{disabled:A,value:ge,onSelect:j,forceMount:O,keywords:$,...q}=r;return t.createElement(D.div,{ref:G(u,o),...q,id:n,\"cmdk-item\":\"\",role:\"option\",\"aria-disabled\":!!A,\"aria-selected\":!!R,\"data-disabled\":!!A,\"data-selected\":!!R,onPointerMove:A||d.getDisablePointerSelection()?void 0:S,onClick:A?void 0:C},r.children)}),Ee=t.forwardRef((r,o)=>{let{heading:n,children:u,forceMount:c,...d}=r,f=H(),p=t.useRef(null),b=t.useRef(null),m=H(),R=K(),x=P(S=>c||R.filter()===!1?!0:S.search?S.filtered.groups.has(f):!0);k(()=>R.group(f),[]),ve(f,p,[r.value,r.heading,b]);let C=t.useMemo(()=>({id:f,forceMount:c}),[c]);return t.createElement(D.div,{ref:G(p,o),...d,\"cmdk-group\":\"\",role:\"presentation\",hidden:x?void 0:!0},n&&t.createElement(\"div\",{ref:b,\"cmdk-group-heading\":\"\",\"aria-hidden\":!0,id:m},n),B(r,S=>t.createElement(\"div\",{\"cmdk-group-items\":\"\",role:\"group\",\"aria-labelledby\":n?m:void 0},t.createElement(fe.Provider,{value:C},S))))}),ye=t.forwardRef((r,o)=>{let{alwaysRender:n,...u}=r,c=t.useRef(null),d=P(f=>!f.search);return!n&&!d?null:t.createElement(D.div,{ref:G(c,o),...u,\"cmdk-separator\":\"\",role:\"separator\"})}),Se=t.forwardRef((r,o)=>{let{onValueChange:n,...u}=r,c=r.value!=null,d=ee(),f=P(m=>m.search),p=P(m=>m.selectedItemId),b=K();return t.useEffect(()=>{r.value!=null&&d.setState(\"search\",r.value)},[r.value]),t.createElement(D.input,{ref:o,...u,\"cmdk-input\":\"\",autoComplete:\"off\",autoCorrect:\"off\",spellCheck:!1,\"aria-autocomplete\":\"list\",role:\"combobox\",\"aria-expanded\":!0,\"aria-controls\":b.listId,\"aria-labelledby\":b.labelId,\"aria-activedescendant\":p,id:b.inputId,type:\"text\",value:c?r.value:f,onChange:m=>{c||d.setState(\"search\",m.target.value),n==null||n(m.target.value)}})}),Ce=t.forwardRef((r,o)=>{let{children:n,label:u=\"Suggestions\",...c}=r,d=t.useRef(null),f=t.useRef(null),p=P(m=>m.selectedItemId),b=K();return t.useEffect(()=>{if(f.current&&d.current){let m=f.current,R=d.current,x,C=new ResizeObserver(()=>{x=requestAnimationFrame(()=>{let S=m.offsetHeight;R.style.setProperty(\"--cmdk-list-height\",S.toFixed(1)+\"px\")})});return C.observe(m),()=>{cancelAnimationFrame(x),C.unobserve(m)}}},[]),t.createElement(D.div,{ref:G(d,o),...c,\"cmdk-list\":\"\",role:\"listbox\",tabIndex:-1,\"aria-activedescendant\":p,\"aria-label\":u,id:b.listId},B(r,m=>t.createElement(\"div\",{ref:G(f,b.listInnerRef),\"cmdk-list-sizer\":\"\"},m)))}),xe=t.forwardRef((r,o)=>{let{open:n,onOpenChange:u,overlayClassName:c,contentClassName:d,container:f,...p}=r;return t.createElement(w.Root,{open:n,onOpenChange:u},t.createElement(w.Portal,{container:f},t.createElement(w.Overlay,{\"cmdk-overlay\":\"\",className:c}),t.createElement(w.Content,{\"aria-label\":r.label,\"cmdk-dialog\":\"\",className:d},t.createElement(me,{ref:o,...p}))))}),Ie=t.forwardRef((r,o)=>P(u=>u.filtered.count===0)?t.createElement(D.div,{ref:o,...r,\"cmdk-empty\":\"\",role:\"presentation\"}):null),Pe=t.forwardRef((r,o)=>{let{progress:n,children:u,label:c=\"Loading...\",...d}=r;return t.createElement(D.div,{ref:o,...d,\"cmdk-loading\":\"\",role:\"progressbar\",\"aria-valuenow\":n,\"aria-valuemin\":0,\"aria-valuemax\":100,\"aria-label\":c},B(r,f=>t.createElement(\"div\",{\"aria-hidden\":!0},f)))}),_e=Object.assign(me,{List:Ce,Item:he,Input:Se,Group:Ee,Separator:ye,Dialog:xe,Empty:Ie,Loading:Pe});function we(r,o){let n=r.nextElementSibling;for(;n;){if(n.matches(o))return n;n=n.nextElementSibling}}function De(r,o){let n=r.previousElementSibling;for(;n;){if(n.matches(o))return n;n=n.previousElementSibling}}function pe(r){let o=t.useRef(r);return k(()=>{o.current=r}),o}var k=typeof window==\"undefined\"?t.useEffect:t.useLayoutEffect;function L(r){let o=t.useRef();return o.current===void 0&&(o.current=r()),o}function P(r){let o=ee(),n=()=>r(o.snapshot());return t.useSyncExternalStore(o.subscribe,n,n)}function ve(r,o,n,u=[]){let c=t.useRef(),d=K();return k(()=>{var b;let f=(()=>{var m;for(let R of n){if(typeof R==\"string\")return R.trim();if(typeof R==\"object\"&&\"current\"in R)return R.current?(m=R.current.textContent)==null?void 0:m.trim():c.current}})(),p=u.map(m=>m.trim());d.value(r,f,p),(b=o.current)==null||b.setAttribute(T,f),c.current=f}),c}var ke=()=>{let[r,o]=t.useState(),n=L(()=>new Map);return k(()=>{n.current.forEach(u=>u()),n.current=new Map},[r]),(u,c)=>{n.current.set(u,c),o({})}};function Me(r){let o=r.type;return typeof o==\"function\"?o(r.props):\"render\"in o?o.render(r.props):r}function B({asChild:r,children:o},n){return r&&t.isValidElement(o)?t.cloneElement(Me(o),{ref:o.ref},n(o.props.children)):n(o)}var Te={position:\"absolute\",width:\"1px\",height:\"1px\",padding:\"0\",margin:\"-1px\",overflow:\"hidden\",clip:\"rect(0, 0, 0, 0)\",whiteSpace:\"nowrap\",borderWidth:\"0\"};export{_e as Command,xe as CommandDialog,Ie as CommandEmpty,Ee as CommandGroup,Se as CommandInput,he as CommandItem,Ce as CommandList,Pe as CommandLoading,me as CommandRoot,ye as CommandSeparator,Re as defaultFilter,P as useCommandState};\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createSlot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'form',\n 'h2',\n 'h3',\n 'img',\n 'input',\n 'label',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'select',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\ntype Primitives = { [E in (typeof NODES)[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n if (typeof window !== 'undefined') {\n (window as any)[Symbol.for('radix-ui')] = true;\n }\n\n return <Comp {...primitiveProps} ref={forwardedRef} />;\n });\n\n Node.displayName = `Primitive.${node}`;\n\n return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n * - discrete\n * - continuous\n * - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not necessary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n};\nexport type { PrimitivePropsWithRef };\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// We spaces with `.trim().toString()` to prevent bundlers from trying to `import { useId } from 'react';`\nconst useReactId = (React as any)[' useId '.trim().toString()] || (() => undefined);\nlet count = 0;\n\nfunction useId(deterministicId?: string): string {\n const [id, setId] = React.useState<string | undefined>(useReactId());\n // React versions older than 18 will have client-side ids only.\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : '');\n}\n\nexport { useId };\n","import * as React from 'react';\n\n/**\n * On the server, React emits a warning when calling `useLayoutEffect`.\n * This is because neither `useLayoutEffect` nor `useEffect` run on the server.\n * We use this safe version which suppresses the warning by replacing it with a noop on the server.\n *\n * See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect\n */\nconst useLayoutEffect = globalThis?.document ? React.useLayoutEffect : () => {};\n\nexport { useLayoutEffect };\n","import * as React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n return ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == 'function') {\n hasCleanup = true;\n }\n return cleanup;\n });\n\n // React <19 will log an error to the console if a callback ref returns a\n // value. We don't use ref cleanups internally so this will only happen if a\n // user's ref callback returns a value, which we only expect if they are\n // using the cleanup functionality added in React 19.\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == 'function') {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Check, Loader2, X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Premium Dialog Component\n *\n * Modern, accessible and customizable modal dialog component.\n * Enhances user experience with variants, sizes and rich features.\n * Provides a premium appearance with dark and light mode compatibility and fluid animations.\n */\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\nconst DialogClose = DialogPrimitive.Close;\n\nconst overlayVariants = cva(\n \"fixed inset-0 z-50 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n {\n variants: {\n variant: {\n default: \"bg-black/80\",\n subtle: \"bg-black/60\",\n blur: \"bg-black/40 backdrop-blur-md\",\n minimal: \"bg-black/20 backdrop-blur-sm\",\n },\n animation: {\n default: \"duration-200\",\n slow: \"duration-300\",\n fast: \"duration-100\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n animation: \"default\",\n },\n }\n);\n\ninterface DialogOverlayProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>,\n VariantProps<typeof overlayVariants> {}\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n DialogOverlayProps\n>(({ className, variant, animation, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(overlayVariants({ variant, animation }), className)}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst dialogContentVariants = cva(\n \"fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background shadow-lg\",\n {\n variants: {\n variant: {\n default: \"border-gray-200 dark:border-gray-700\",\n primary: \"border-primary/20 dark:border-primary/30\",\n secondary: \"border-gray-300 dark:border-gray-600\",\n ghost: \"border-transparent shadow-xl\",\n destructive: \"border-error/20 dark:border-error/30\",\n },\n size: {\n xs: \"max-w-xs p-4\",\n sm: \"max-w-sm p-5\",\n default: \"max-w-lg p-6\",\n md: \"max-w-md p-6\",\n lg: \"max-w-2xl p-7\",\n xl: \"max-w-4xl p-8\",\n full: \"max-w-[95vw] max-h-[95vh] p-6\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-md\",\n default: \"rounded-lg\",\n lg: \"rounded-xl\",\n xl: \"rounded-2xl\",\n full: \"rounded-3xl\",\n },\n animation: {\n default:\n \"duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n fade: \"duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n zoom: \"duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n slide: \"duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n none: \"\",\n },\n position: {\n default: \"top-[50%]\",\n top: \"top-[5%]\",\n bottom: \"bottom-[5%] top-auto translate-y-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n animation: \"default\",\n position: \"default\",\n },\n }\n);\n\ninterface DialogContentProps\n extends Omit<React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>, 'title'>,\n VariantProps<typeof dialogContentVariants> {\n /** X butonunu gizle */\n hideCloseButton?: boolean;\n /** Overlay varyantı */\n overlayVariant?: VariantProps<typeof overlayVariants>[\"variant\"];\n /** Overlay animasyonu */\n overlayAnimation?: VariantProps<typeof overlayVariants>[\"animation\"];\n /** İçerik başlığı (hızlı kullanım için) */\n title?: React.ReactNode;\n /** İçerik açıklaması (hızlı kullanım için) */\n description?: React.ReactNode;\n /** Başlık ikonu */\n icon?: React.ReactNode;\n /** Yükleniyor durumu */\n loading?: boolean;\n /** Success durumu */\n success?: boolean;\n /** Özel onClose handler */\n onClose?: () => void;\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(\n (\n {\n className,\n children,\n variant,\n size,\n radius,\n animation,\n position,\n overlayVariant = \"default\",\n overlayAnimation = \"default\",\n hideCloseButton = false,\n title,\n description,\n icon,\n loading = false,\n success = false,\n onClose,\n ...props\n },\n ref\n ) => {\n // Capturing the close function through the Radix Dialog API\n const handleClose = () => {\n if (onClose) {\n onClose();\n }\n };\n\n return (\n <DialogPortal>\n <DialogOverlay\n variant={overlayVariant}\n animation={overlayAnimation}\n onClick={hideCloseButton ? undefined : handleClose}\n />\n <DialogPrimitive.Content\n ref={ref}\n onEscapeKeyDown={hideCloseButton ? undefined : handleClose}\n onInteractOutside={\n hideCloseButton ? undefined : handleClose\n }\n className={cn(\n dialogContentVariants({\n variant,\n size,\n radius,\n animation,\n position,\n }),\n \"outline-none\",\n loading && \"pointer-events-none\",\n success && \"border-success/40\",\n className\n )}\n {...props}\n >\n {/* Başlık ve açıklama varsa otomatik olarak DialogHeader oluştur */}\n {(title || description || icon) && (\n <DialogHeader className=\"flex gap-4\">\n {/* İkon veya loading/success durumları */}\n {(icon || loading || success) && (\n <div className=\"flex shrink-0 items-center justify-center\">\n {loading && (\n <Loader2 className=\"h-5 w-5 animate-spin text-primary\" />\n )}\n {success && (\n <Check className=\"h-5 w-5 text-success\" />\n )}\n {!loading && !success && icon && (\n <span className=\"text-primary\">\n {icon}\n </span>\n )}\n </div>\n )}\n <div className=\"flex-1\">\n {title && <DialogTitle>{title}</DialogTitle>}\n {description && (\n <DialogDescription>\n {description}\n </DialogDescription>\n )}\n </div>\n </DialogHeader>\n )}\n\n {/* Main content */}\n {children}\n\n {/* Close button */}\n {!hideCloseButton && (\n <DialogPrimitive.Close\n onClick={handleClose}\n className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-primary/30 focus:ring-offset-2 disabled:pointer-events-none dark:text-gray-300 dark:hover:text-white\"\n >\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n }\n);\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end sm:space-x-2 mt-6\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-xl font-semibold leading-snug tracking-tight dark:text-white\",\n className\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\n \"text-sm text-muted-foreground leading-normal dark:text-gray-400\",\n className\n )}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\n/**\n * Dialog-Form integration for use with form support\n * Used to integrate form submission processes into the modal\n */\nconst DialogForm = React.forwardRef<\n HTMLFormElement,\n React.HTMLAttributes<HTMLFormElement>\n>(({ className, ...props }, ref) => (\n <form\n ref={ref}\n className={cn(\"flex flex-col gap-4\", className)}\n {...props}\n />\n));\nDialogForm.displayName = \"DialogForm\";\n\nexport {\n Dialog,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n DialogClose,\n DialogForm,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n ColumnDef,\n ColumnFiltersState,\n FilterFn,\n SortingState,\n VisibilityState,\n flexRender,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { \n Table, \n TableBody, \n TableCell, \n TableHead, \n TableHeader, \n TableRow \n} from \"./table\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"./select\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"./dropdown-menu\";\nimport { \n ChevronLeft, \n ChevronRight, \n ChevronsLeft, \n ChevronsRight,\n ArrowUpDown,\n ArrowUp,\n ArrowDown,\n Search,\n Filter,\n Columns,\n Download,\n RefreshCw,\n Settings,\n X\n} from \"lucide-react\";\nimport { Badge } from \"./badge\";\nimport { Skeleton } from \"./skeleton\";\nimport { motion, AnimatePresence } from \"framer-motion\";\n\n/**\n * Premium DataTable Component\n * \n * A powerful data table with sorting, filtering, pagination, and more.\n * Built on top of @tanstack/react-table v8.\n */\n\nconst dataTableVariants = cva(\n \"w-full\",\n {\n variants: {\n variant: {\n default: \"\",\n bordered: \"border rounded-lg\",\n striped: \"[&_tbody_tr:nth-child(even)]:bg-muted/50\",\n cards: \"gap-4 [&_tbody]:flex [&_tbody]:flex-col [&_tbody_tr]:rounded-lg [&_tbody_tr]:border [&_tbody_tr]:p-4\",\n },\n size: {\n default: \"\",\n sm: \"text-sm [&_th]:py-2 [&_td]:py-2\",\n lg: \"text-base [&_th]:py-4 [&_td]:py-4\",\n },\n density: {\n default: \"\",\n compact: \"[&_th]:py-1 [&_td]:py-1\",\n comfortable: \"[&_th]:py-6 [&_td]:py-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n density: \"default\",\n },\n }\n);\n\ninterface DataTableProps<TData, TValue>\n extends VariantProps<typeof dataTableVariants> {\n /**\n * The table columns definition\n */\n columns: ColumnDef<TData, TValue>[];\n /**\n * The data to display\n */\n data: TData[];\n /**\n * Enable/disable filtering\n */\n enableFiltering?: boolean;\n /**\n * Enable/disable sorting\n */\n enableSorting?: boolean;\n /**\n * Enable/disable column visibility toggle\n */\n enableColumnVisibility?: boolean;\n /**\n * Enable/disable row selection\n */\n enableRowSelection?: boolean;\n /**\n * Enable/disable pagination\n */\n enablePagination?: boolean;\n /**\n * Rows per page options\n */\n pageSizeOptions?: number[];\n /**\n * Default page size\n */\n defaultPageSize?: number;\n /**\n * Filter placeholder text\n */\n filterPlaceholder?: string;\n /**\n * Filter column key\n */\n filterColumn?: string;\n /**\n * Show loading state\n */\n isLoading?: boolean;\n /**\n * Empty state message\n */\n emptyMessage?: string;\n /**\n * Table title\n */\n title?: string;\n /**\n * Table description\n */\n description?: string;\n /**\n * Enable export functionality\n */\n enableExport?: boolean;\n /**\n * Export handler\n */\n onExport?: (data: TData[]) => void;\n /**\n * Enable refresh functionality\n */\n enableRefresh?: boolean;\n /**\n * Refresh handler\n */\n onRefresh?: () => void;\n /**\n * Additional toolbar actions\n */\n toolbarActions?: React.ReactNode;\n /**\n * Custom filter component\n */\n customFilter?: React.ReactNode;\n /**\n * Row click handler\n */\n onRowClick?: (row: TData) => void;\n /**\n * Class name\n */\n className?: string;\n}\n\nfunction DataTableLoading() {\n return (\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <Skeleton className=\"h-8 w-[250px]\" />\n <div className=\"flex gap-2\">\n <Skeleton className=\"h-8 w-8\" />\n <Skeleton className=\"h-8 w-8\" />\n </div>\n </div>\n <div className=\"rounded-lg border\">\n <div className=\"p-4\">\n <div className=\"flex gap-4\">\n {Array.from({ length: 4 }).map((_, i) => (\n <Skeleton key={i} className=\"h-8 flex-1\" />\n ))}\n </div>\n </div>\n <div className=\"p-4 space-y-2\">\n {Array.from({ length: 5 }).map((_, i) => (\n <Skeleton key={i} className=\"h-12 w-full\" />\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n enableFiltering = true,\n enableSorting = true,\n enableColumnVisibility = true,\n enableRowSelection = false,\n enablePagination = true,\n pageSizeOptions = [10, 20, 30, 50, 100],\n defaultPageSize = 10,\n filterPlaceholder = \"Filter...\",\n filterColumn,\n isLoading = false,\n emptyMessage = \"No results found.\",\n title,\n description,\n enableExport = false,\n onExport,\n enableRefresh = false,\n onRefresh,\n toolbarActions,\n customFilter,\n onRowClick,\n variant,\n size,\n density,\n className,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([]);\n const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([]);\n const [columnVisibility, setColumnVisibility] = React.useState<VisibilityState>({});\n const [rowSelection, setRowSelection] = React.useState({});\n const [globalFilter, setGlobalFilter] = React.useState(\"\");\n\n const table = useReactTable({\n data,\n columns,\n onSortingChange: enableSorting ? setSorting : undefined,\n onColumnFiltersChange: enableFiltering ? setColumnFilters : undefined,\n onColumnVisibilityChange: enableColumnVisibility ? setColumnVisibility : undefined,\n onRowSelectionChange: enableRowSelection ? setRowSelection : undefined,\n onGlobalFilterChange: enableFiltering && !filterColumn ? setGlobalFilter : undefined,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: enablePagination ? getPaginationRowModel() : undefined,\n getSortedRowModel: enableSorting ? getSortedRowModel() : undefined,\n getFilteredRowModel: enableFiltering ? getFilteredRowModel() : undefined,\n getFacetedRowModel: enableFiltering ? getFacetedRowModel() : undefined,\n getFacetedUniqueValues: enableFiltering ? getFacetedUniqueValues() : undefined,\n state: {\n sorting,\n columnFilters,\n columnVisibility,\n rowSelection,\n globalFilter,\n },\n initialState: {\n pagination: {\n pageSize: defaultPageSize,\n },\n },\n });\n\n if (isLoading) {\n return <DataTableLoading />;\n }\n\n const selectedRows = table.getFilteredSelectedRowModel().rows;\n\n return (\n <div className={cn(\"space-y-4\", className)}>\n {/* Header */}\n {(title || description) && (\n <div className=\"space-y-1\">\n {title && <h3 className=\"text-lg font-semibold\">{title}</h3>}\n {description && <p className=\"text-sm text-muted-foreground\">{description}</p>}\n </div>\n )}\n\n {/* Toolbar */}\n <div className=\"flex flex-col gap-4 md:flex-row md:items-center md:justify-between\">\n <div className=\"flex flex-1 items-center gap-2\">\n {/* Search/Filter */}\n {enableFiltering && (\n <>\n {customFilter || (\n <div className=\"relative flex-1 max-w-sm\">\n <Search className=\"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground\" />\n <Input\n placeholder={filterPlaceholder}\n value={\n filterColumn\n ? (table.getColumn(filterColumn)?.getFilterValue() as string) ?? \"\"\n : globalFilter\n }\n onChange={(event) => {\n const value = event.target.value;\n if (filterColumn) {\n table.getColumn(filterColumn)?.setFilterValue(value);\n } else {\n setGlobalFilter(value);\n }\n }}\n className=\"pl-8\"\n />\n {((filterColumn && table.getColumn(filterColumn)?.getFilterValue()) || \n (!filterColumn && globalFilter)) && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute right-0 top-0 h-full px-2\"\n onClick={() => {\n if (filterColumn) {\n table.getColumn(filterColumn)?.setFilterValue(\"\");\n } else {\n setGlobalFilter(\"\");\n }\n }}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n )}\n </>\n )}\n\n {/* Selection info */}\n {enableRowSelection && selectedRows.length > 0 && (\n <Badge variant=\"secondary\" className=\"whitespace-nowrap\">\n {selectedRows.length} selected\n </Badge>\n )}\n </div>\n\n {/* Actions */}\n <div className=\"flex items-center gap-2\">\n {toolbarActions}\n \n {/* Export */}\n {enableExport && onExport && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onExport(table.getFilteredRowModel().rows.map(row => row.original))}\n >\n <Download className=\"mr-2 h-4 w-4\" />\n Export\n </Button>\n )}\n\n {/* Refresh */}\n {enableRefresh && onRefresh && (\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={onRefresh}\n >\n <RefreshCw className=\"h-4 w-4\" />\n </Button>\n )}\n\n {/* Column visibility */}\n {enableColumnVisibility && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"icon\">\n <Columns className=\"h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[180px]\">\n <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter((column) => column.getCanHide())\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"capitalize\"\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n </div>\n\n {/* Table */}\n <div className={cn(\"rounded-lg\", variant === \"bordered\" && \"border\")}>\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n return (\n <TableHead key={header.id}>\n {header.isPlaceholder ? null : (\n <div\n className={cn(\n \"flex items-center gap-2\",\n header.column.getCanSort() && \"cursor-pointer select-none\"\n )}\n onClick={header.column.getToggleSortingHandler()}\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n {enableSorting && header.column.getCanSort() && (\n <div className=\"ml-auto\">\n {header.column.getIsSorted() === \"desc\" ? (\n <ArrowDown className=\"h-4 w-4\" />\n ) : header.column.getIsSorted() === \"asc\" ? (\n <ArrowUp className=\"h-4 w-4\" />\n ) : (\n <ArrowUpDown className=\"h-4 w-4 opacity-50\" />\n )}\n </div>\n )}\n </div>\n )}\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n <AnimatePresence>\n {table.getRowModel().rows.map((row) => (\n <motion.tr\n key={row.id}\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: 10 }}\n transition={{ duration: 0.2 }}\n data-state={row.getIsSelected() && \"selected\"}\n className={cn(\n \"border-b transition-colors\",\n onRowClick && \"cursor-pointer hover:bg-muted/50\",\n row.getIsSelected() && \"bg-muted\"\n )}\n onClick={() => onRowClick?.(row.original)}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </TableCell>\n ))}\n </motion.tr>\n ))}\n </AnimatePresence>\n ) : (\n <TableRow>\n <TableCell\n colSpan={columns.length}\n className=\"h-24 text-center\"\n >\n {emptyMessage}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n\n {/* Pagination */}\n {enablePagination && (\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <span>\n {table.getFilteredRowModel().rows.length} of{\" \"}\n {table.getCoreRowModel().rows.length} row(s)\n </span>\n {enableRowSelection && selectedRows.length > 0 && (\n <span>• {selectedRows.length} selected</span>\n )}\n </div>\n\n <div className=\"flex items-center gap-2\">\n <div className=\"flex items-center gap-2\">\n <p className=\"text-sm\">Rows per page</p>\n <Select\n value={`${table.getState().pagination.pageSize}`}\n onValueChange={(value) => {\n table.setPageSize(Number(value));\n }}\n >\n <SelectTrigger className=\"h-8 w-[70px]\">\n <SelectValue placeholder={table.getState().pagination.pageSize} />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {pageSizeOptions.map((pageSize) => (\n <SelectItem key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n <ChevronsLeft className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <div className=\"flex items-center gap-1 text-sm\">\n <span>Page</span>\n <span className=\"font-medium\">\n {table.getState().pagination.pageIndex + 1} of{\" \"}\n {table.getPageCount()}\n </span>\n </div>\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n <ChevronsRight className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\n/**\n * Column Helper Functions\n */\n\n// Create a sortable header\nexport function createSortableHeader(label: string) {\n return ({ column }: any) => (\n <Button\n variant=\"ghost\"\n className=\"-ml-3 h-8 data-[state=open]:bg-accent\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n >\n {label}\n {column.getIsSorted() === \"desc\" ? (\n <ArrowDown className=\"ml-2 h-4 w-4\" />\n ) : column.getIsSorted() === \"asc\" ? (\n <ArrowUp className=\"ml-2 h-4 w-4\" />\n ) : (\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n )}\n </Button>\n );\n}\n\n// Create a filterable column\nexport function createFilterableColumn<TData, TValue>(\n accessorKey: string,\n header: string,\n filterFn?: FilterFn<TData>\n): ColumnDef<TData, TValue> {\n return {\n accessorKey,\n header: createSortableHeader(header),\n filterFn,\n };\n}\n\n// Export utilities\nexport { type ColumnDef } from \"@tanstack/react-table\";","import { TableOptionsResolved, TableState, Updater } from './types'\n\nexport type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\nexport type RequiredKeys<T, K extends keyof T> = Omit<T, K> &\n Required<Pick<T, K>>\nexport type Overwrite<T, U extends { [TKey in keyof T]?: any }> = Omit<\n T,\n keyof U\n> &\n U\n\nexport type UnionToIntersection<T> = (\n T extends any ? (x: T) => any : never\n) extends (x: infer R) => any\n ? R\n : never\n\nexport type IsAny<T, Y, N> = 1 extends 0 & T ? Y : N\nexport type IsKnown<T, Y, N> = unknown extends T ? N : Y\n\ntype ComputeRange<\n N extends number,\n Result extends Array<unknown> = [],\n> = Result['length'] extends N\n ? Result\n : ComputeRange<N, [...Result, Result['length']]>\ntype Index40 = ComputeRange<40>[number]\n\n// Is this type a tuple?\ntype IsTuple<T> = T extends readonly any[] & { length: infer Length }\n ? Length extends Index40\n ? T\n : never\n : never\n\n// If this type is a tuple, what indices are allowed?\ntype AllowedIndexes<\n Tuple extends ReadonlyArray<any>,\n Keys extends number = never,\n> = Tuple extends readonly []\n ? Keys\n : Tuple extends readonly [infer _, ...infer Tail]\n ? AllowedIndexes<Tail, Keys | Tail['length']>\n : Keys\n\nexport type DeepKeys<T, TDepth extends any[] = []> = TDepth['length'] extends 5\n ? never\n : unknown extends T\n ? string\n : T extends readonly any[] & IsTuple<T>\n ? AllowedIndexes<T> | DeepKeysPrefix<T, AllowedIndexes<T>, TDepth>\n : T extends any[]\n ? DeepKeys<T[number], [...TDepth, any]>\n : T extends Date\n ? never\n : T extends object\n ? (keyof T & string) | DeepKeysPrefix<T, keyof T, TDepth>\n : never\n\ntype DeepKeysPrefix<\n T,\n TPrefix,\n TDepth extends any[],\n> = TPrefix extends keyof T & (number | string)\n ? `${TPrefix}.${DeepKeys<T[TPrefix], [...TDepth, any]> & string}`\n : never\n\nexport type DeepValue<T, TProp> =\n T extends Record<string | number, any>\n ? TProp extends `${infer TBranch}.${infer TDeepProp}`\n ? DeepValue<T[TBranch], TDeepProp>\n : T[TProp & string]\n : never\n\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport type Getter<TValue> = <TTValue = TValue>() => NoInfer<TTValue>\n\n///\n\nexport function functionalUpdate<T>(updater: Updater<T>, input: T): T {\n return typeof updater === 'function'\n ? (updater as (input: T) => T)(input)\n : updater\n}\n\nexport function noop() {\n //\n}\n\nexport function makeStateUpdater<K extends keyof TableState>(\n key: K,\n instance: unknown\n) {\n return (updater: Updater<TableState[K]>) => {\n ;(instance as any).setState(<TTableState>(old: TTableState) => {\n return {\n ...old,\n [key]: functionalUpdate(updater, (old as any)[key]),\n }\n })\n }\n}\n\ntype AnyFunction = (...args: any) => any\n\nexport function isFunction<T extends AnyFunction>(d: any): d is T {\n return d instanceof Function\n}\n\nexport function isNumberArray(d: any): d is number[] {\n return Array.isArray(d) && d.every(val => typeof val === 'number')\n}\n\nexport function flattenBy<TNode>(\n arr: TNode[],\n getChildren: (item: TNode) => TNode[]\n) {\n const flat: TNode[] = []\n\n const recurse = (subArr: TNode[]) => {\n subArr.forEach(item => {\n flat.push(item)\n const children = getChildren(item)\n if (children?.length) {\n recurse(children)\n }\n })\n }\n\n recurse(arr)\n\n return flat\n}\n\nexport function memo<TDeps extends readonly any[], TDepArgs, TResult>(\n getDeps: (depArgs?: TDepArgs) => [...TDeps],\n fn: (...args: NoInfer<[...TDeps]>) => TResult,\n opts: {\n key: any\n debug?: () => any\n onChange?: (result: TResult) => void\n }\n): (depArgs?: TDepArgs) => TResult {\n let deps: any[] = []\n let result: TResult | undefined\n\n return depArgs => {\n let depTime: number\n if (opts.key && opts.debug) depTime = Date.now()\n\n const newDeps = getDeps(depArgs)\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (!depsChanged) {\n return result!\n }\n\n deps = newDeps\n\n let resultTime: number\n if (opts.key && opts.debug) resultTime = Date.now()\n\n result = fn(...newDeps)\n opts?.onChange?.(result)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100\n const resultEndTime = Math.round((Date.now() - resultTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / 16\n\n const pad = (str: number | string, num: number) => {\n str = String(str)\n while (str.length < num) {\n str = ' ' + str\n }\n return str\n }\n\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts?.key\n )\n }\n }\n\n return result!\n }\n}\n\nexport function getMemoOptions(\n tableOptions: Partial<TableOptionsResolved<any>>,\n debugLevel:\n | 'debugAll'\n | 'debugCells'\n | 'debugTable'\n | 'debugColumns'\n | 'debugRows'\n | 'debugHeaders',\n key: string,\n onChange?: (result: any) => void\n) {\n return {\n debug: () => tableOptions?.debugAll ?? tableOptions[debugLevel],\n key: process.env.NODE_ENV === 'development' && key,\n onChange,\n }\n}\n","import { RowData, Cell, Column, Row, Table } from '../types'\nimport { Getter, getMemoOptions, memo } from '../utils'\n\nexport interface CellContext<TData extends RowData, TValue> {\n cell: Cell<TData, TValue>\n column: Column<TData, TValue>\n getValue: Getter<TValue>\n renderValue: Getter<TValue | null>\n row: Row<TData>\n table: Table<TData>\n}\n\nexport interface CoreCell<TData extends RowData, TValue> {\n /**\n * The associated Column object for the cell.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#column)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/cells)\n */\n column: Column<TData, TValue>\n /**\n * Returns the rendering context (or props) for cell-based components like cells and aggregated cells. Use these props with your framework's `flexRender` utility to render these using the template of your choice:\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#getcontext)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/cells)\n */\n getContext: () => CellContext<TData, TValue>\n /**\n * Returns the value for the cell, accessed via the associated column's accessor key or accessor function.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#getvalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/cells)\n */\n getValue: CellContext<TData, TValue>['getValue']\n /**\n * The unique ID for the cell across the entire table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#id)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/cells)\n */\n id: string\n /**\n * Renders the value for a cell the same as `getValue`, but will return the `renderFallbackValue` if no value is found.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#rendervalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/cells)\n */\n renderValue: CellContext<TData, TValue>['renderValue']\n /**\n * The associated Row object for the cell.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#row)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/cells)\n */\n row: Row<TData>\n}\n\nexport function createCell<TData extends RowData, TValue>(\n table: Table<TData>,\n row: Row<TData>,\n column: Column<TData, TValue>,\n columnId: string\n): Cell<TData, TValue> {\n const getRenderValue = () =>\n cell.getValue() ?? table.options.renderFallbackValue\n\n const cell: CoreCell<TData, TValue> = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(\n () => [table, column, row, cell],\n (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell as Cell<TData, TValue>,\n getValue: cell.getValue,\n renderValue: cell.renderValue,\n }),\n getMemoOptions(table.options, 'debugCells', 'cell.getContext')\n ),\n }\n\n table._features.forEach(feature => {\n feature.createCell?.(\n cell as Cell<TData, TValue>,\n column,\n row as Row<TData>,\n table\n )\n }, {})\n\n return cell as Cell<TData, TValue>\n}\n","import {\n Column,\n Table,\n AccessorFn,\n ColumnDef,\n RowData,\n ColumnDefResolved,\n} from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nexport interface CoreColumn<TData extends RowData, TValue> {\n /**\n * The resolved accessor function to use when extracting the value for the column from each row. Will only be defined if the column def has a valid accessor key or function defined.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#accessorfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n accessorFn?: AccessorFn<TData, TValue>\n /**\n * The original column def used to create the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#columndef)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n columnDef: ColumnDef<TData, TValue>\n /**\n * The child column (if the column is a group column). Will be an empty array if the column is not a group column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#columns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n columns: Column<TData, TValue>[]\n /**\n * The depth of the column (if grouped) relative to the root column def array.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#depth)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n depth: number\n /**\n * Returns the flattened array of this column and all child/grand-child columns for this column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#getflatcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n getFlatColumns: () => Column<TData, TValue>[]\n /**\n * Returns an array of all leaf-node columns for this column. If a column has no children, it is considered the only leaf-node column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#getleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n getLeafColumns: () => Column<TData, TValue>[]\n /**\n * The resolved unique identifier for the column resolved in this priority:\n - A manual `id` property from the column def\n - The accessor key from the column def\n - The header string from the column def\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#id)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n id: string\n /**\n * The parent column for this column. Will be undefined if this is a root column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#parent)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n parent?: Column<TData, TValue>\n}\n\nexport function createColumn<TData extends RowData, TValue>(\n table: Table<TData>,\n columnDef: ColumnDef<TData, TValue>,\n depth: number,\n parent?: Column<TData, TValue>\n): Column<TData, TValue> {\n const defaultColumn = table._getDefaultColumnDef()\n\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef,\n } as ColumnDefResolved<TData>\n\n const accessorKey = resolvedColumnDef.accessorKey\n\n let id =\n resolvedColumnDef.id ??\n (accessorKey\n ? typeof String.prototype.replaceAll === 'function'\n ? accessorKey.replaceAll('.', '_')\n : accessorKey.replace(/\\./g, '_')\n : undefined) ??\n (typeof resolvedColumnDef.header === 'string'\n ? resolvedColumnDef.header\n : undefined)\n\n let accessorFn: AccessorFn<TData> | undefined\n\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = (originalRow: TData) => {\n let result = originalRow as Record<string, any>\n\n for (const key of accessorKey.split('.')) {\n result = result?.[key]\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(\n `\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`\n )\n }\n }\n\n return result\n }\n } else {\n accessorFn = (originalRow: TData) =>\n (originalRow as any)[resolvedColumnDef.accessorKey]\n }\n }\n\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n resolvedColumnDef.accessorFn\n ? `Columns require an id when using an accessorFn`\n : `Columns require an id when using a non-string header`\n )\n }\n throw new Error()\n }\n\n let column: CoreColumn<TData, any> = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent as any,\n depth,\n columnDef: resolvedColumnDef as ColumnDef<TData, any>,\n columns: [],\n getFlatColumns: memo(\n () => [true],\n () => {\n return [\n column as Column<TData, TValue>,\n ...column.columns?.flatMap(d => d.getFlatColumns()),\n ]\n },\n getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')\n ),\n getLeafColumns: memo(\n () => [table._getOrderColumnsFn()],\n orderColumns => {\n if (column.columns?.length) {\n let leafColumns = column.columns.flatMap(column =>\n column.getLeafColumns()\n )\n\n return orderColumns(leafColumns)\n }\n\n return [column as Column<TData, TValue>]\n },\n getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns')\n ),\n }\n\n for (const feature of table._features) {\n feature.createColumn?.(column as Column<TData, TValue>, table)\n }\n\n // Yes, we have to convert table to unknown, because we know more than the compiler here.\n return column as Column<TData, TValue>\n}\n","import {\n RowData,\n Column,\n Header,\n HeaderGroup,\n Table,\n TableFeature,\n} from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nconst debug = 'debugHeaders'\n\nexport interface CoreHeaderGroup<TData extends RowData> {\n depth: number\n headers: Header<TData, unknown>[]\n id: string\n}\n\nexport interface HeaderContext<TData, TValue> {\n /**\n * An instance of a column.\n */\n column: Column<TData, TValue>\n /**\n * An instance of a header.\n */\n header: Header<TData, TValue>\n /**\n * The table instance.\n */\n table: Table<TData>\n}\n\nexport interface CoreHeader<TData extends RowData, TValue> {\n /**\n * The col-span for the header.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#colspan)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n colSpan: number\n /**\n * The header's associated column object.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#column)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n column: Column<TData, TValue>\n /**\n * The depth of the header, zero-indexed based.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#depth)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n depth: number\n /**\n * Returns the rendering context (or props) for column-based components like headers, footers and filters.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#getcontext)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getContext: () => HeaderContext<TData, TValue>\n /**\n * Returns the leaf headers hierarchically nested under this header.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#getleafheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getLeafHeaders: () => Header<TData, unknown>[]\n /**\n * The header's associated header group object.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#headergroup)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n headerGroup: HeaderGroup<TData>\n /**\n * The unique identifier for the header.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#id)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n id: string\n /**\n * The index for the header within the header group.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#index)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n index: number\n /**\n * A boolean denoting if the header is a placeholder header.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#isplaceholder)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n isPlaceholder: boolean\n /**\n * If the header is a placeholder header, this will be a unique header ID that does not conflict with any other headers across the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#placeholderid)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n placeholderId?: string\n /**\n * The row-span for the header.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#rowspan)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n rowSpan: number\n /**\n * The header's hierarchical sub/child headers. Will be empty if the header's associated column is a leaf-column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#subheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n subHeaders: Header<TData, TValue>[]\n}\n\nexport interface HeadersInstance<TData extends RowData> {\n /**\n * Returns all header groups for the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getheadergroups)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getHeaderGroups: () => HeaderGroup<TData>[]\n /**\n * If pinning, returns the header groups for the left pinned columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getleftheadergroups)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getLeftHeaderGroups: () => HeaderGroup<TData>[]\n /**\n * If pinning, returns the header groups for columns that are not pinned.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getcenterheadergroups)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getCenterHeaderGroups: () => HeaderGroup<TData>[]\n /**\n * If pinning, returns the header groups for the right pinned columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getrightheadergroups)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getRightHeaderGroups: () => HeaderGroup<TData>[]\n\n /**\n * Returns the footer groups for the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getfootergroups)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getFooterGroups: () => HeaderGroup<TData>[]\n /**\n * If pinning, returns the footer groups for the left pinned columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getleftfootergroups)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getLeftFooterGroups: () => HeaderGroup<TData>[]\n /**\n * If pinning, returns the footer groups for columns that are not pinned.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getcenterfootergroups)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getCenterFooterGroups: () => HeaderGroup<TData>[]\n /**\n * If pinning, returns the footer groups for the right pinned columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getrightfootergroups)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getRightFooterGroups: () => HeaderGroup<TData>[]\n\n /**\n * Returns headers for all columns in the table, including parent headers.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getflatheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getFlatHeaders: () => Header<TData, unknown>[]\n /**\n * If pinning, returns headers for all left pinned columns in the table, including parent headers.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getleftflatheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getLeftFlatHeaders: () => Header<TData, unknown>[]\n /**\n * If pinning, returns headers for all columns that are not pinned, including parent headers.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getcenterflatheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getCenterFlatHeaders: () => Header<TData, unknown>[]\n /**\n * If pinning, returns headers for all right pinned columns in the table, including parent headers.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getrightflatheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getRightFlatHeaders: () => Header<TData, unknown>[]\n\n /**\n * Returns headers for all leaf columns in the table, (not including parent headers).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getleafheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getLeafHeaders: () => Header<TData, unknown>[]\n /**\n * If pinning, returns headers for all left pinned leaf columns in the table, (not including parent headers).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getleftleafheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getLeftLeafHeaders: () => Header<TData, unknown>[]\n /**\n * If pinning, returns headers for all columns that are not pinned, (not including parent headers).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getcenterleafheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getCenterLeafHeaders: () => Header<TData, unknown>[]\n /**\n * If pinning, returns headers for all right pinned leaf columns in the table, (not including parent headers).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/headers#getrightleafheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/headers)\n */\n getRightLeafHeaders: () => Header<TData, unknown>[]\n}\n\n//\n\nfunction createHeader<TData extends RowData, TValue>(\n table: Table<TData>,\n column: Column<TData, TValue>,\n options: {\n id?: string\n isPlaceholder?: boolean\n placeholderId?: string\n index: number\n depth: number\n }\n): Header<TData, TValue> {\n const id = options.id ?? column.id\n\n let header: CoreHeader<TData, TValue> = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null!,\n getLeafHeaders: (): Header<TData, unknown>[] => {\n const leafHeaders: Header<TData, unknown>[] = []\n\n const recurseHeader = (h: CoreHeader<TData, any>) => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader)\n }\n leafHeaders.push(h as Header<TData, unknown>)\n }\n\n recurseHeader(header)\n\n return leafHeaders\n },\n getContext: () => ({\n table,\n header: header as Header<TData, TValue>,\n column,\n }),\n }\n\n table._features.forEach(feature => {\n feature.createHeader?.(header as Header<TData, TValue>, table)\n })\n\n return header as Header<TData, TValue>\n}\n\nexport const Headers: TableFeature = {\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n // Header Groups\n\n table.getHeaderGroups = memo(\n () => [\n table.getAllColumns(),\n table.getVisibleLeafColumns(),\n table.getState().columnPinning.left,\n table.getState().columnPinning.right,\n ],\n (allColumns, leafColumns, left, right) => {\n const leftColumns =\n left\n ?.map(columnId => leafColumns.find(d => d.id === columnId)!)\n .filter(Boolean) ?? []\n\n const rightColumns =\n right\n ?.map(columnId => leafColumns.find(d => d.id === columnId)!)\n .filter(Boolean) ?? []\n\n const centerColumns = leafColumns.filter(\n column => !left?.includes(column.id) && !right?.includes(column.id)\n )\n\n const headerGroups = buildHeaderGroups(\n allColumns,\n [...leftColumns, ...centerColumns, ...rightColumns],\n table\n )\n\n return headerGroups\n },\n getMemoOptions(table.options, debug, 'getHeaderGroups')\n )\n\n table.getCenterHeaderGroups = memo(\n () => [\n table.getAllColumns(),\n table.getVisibleLeafColumns(),\n table.getState().columnPinning.left,\n table.getState().columnPinning.right,\n ],\n (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(\n column => !left?.includes(column.id) && !right?.includes(column.id)\n )\n return buildHeaderGroups(allColumns, leafColumns, table, 'center')\n },\n getMemoOptions(table.options, debug, 'getCenterHeaderGroups')\n )\n\n table.getLeftHeaderGroups = memo(\n () => [\n table.getAllColumns(),\n table.getVisibleLeafColumns(),\n table.getState().columnPinning.left,\n ],\n (allColumns, leafColumns, left) => {\n const orderedLeafColumns =\n left\n ?.map(columnId => leafColumns.find(d => d.id === columnId)!)\n .filter(Boolean) ?? []\n\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left')\n },\n getMemoOptions(table.options, debug, 'getLeftHeaderGroups')\n )\n\n table.getRightHeaderGroups = memo(\n () => [\n table.getAllColumns(),\n table.getVisibleLeafColumns(),\n table.getState().columnPinning.right,\n ],\n (allColumns, leafColumns, right) => {\n const orderedLeafColumns =\n right\n ?.map(columnId => leafColumns.find(d => d.id === columnId)!)\n .filter(Boolean) ?? []\n\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right')\n },\n getMemoOptions(table.options, debug, 'getRightHeaderGroups')\n )\n\n // Footer Groups\n\n table.getFooterGroups = memo(\n () => [table.getHeaderGroups()],\n headerGroups => {\n return [...headerGroups].reverse()\n },\n getMemoOptions(table.options, debug, 'getFooterGroups')\n )\n\n table.getLeftFooterGroups = memo(\n () => [table.getLeftHeaderGroups()],\n headerGroups => {\n return [...headerGroups].reverse()\n },\n getMemoOptions(table.options, debug, 'getLeftFooterGroups')\n )\n\n table.getCenterFooterGroups = memo(\n () => [table.getCenterHeaderGroups()],\n headerGroups => {\n return [...headerGroups].reverse()\n },\n getMemoOptions(table.options, debug, 'getCenterFooterGroups')\n )\n\n table.getRightFooterGroups = memo(\n () => [table.getRightHeaderGroups()],\n headerGroups => {\n return [...headerGroups].reverse()\n },\n getMemoOptions(table.options, debug, 'getRightFooterGroups')\n )\n\n // Flat Headers\n\n table.getFlatHeaders = memo(\n () => [table.getHeaderGroups()],\n headerGroups => {\n return headerGroups\n .map(headerGroup => {\n return headerGroup.headers\n })\n .flat()\n },\n getMemoOptions(table.options, debug, 'getFlatHeaders')\n )\n\n table.getLeftFlatHeaders = memo(\n () => [table.getLeftHeaderGroups()],\n left => {\n return left\n .map(headerGroup => {\n return headerGroup.headers\n })\n .flat()\n },\n getMemoOptions(table.options, debug, 'getLeftFlatHeaders')\n )\n\n table.getCenterFlatHeaders = memo(\n () => [table.getCenterHeaderGroups()],\n left => {\n return left\n .map(headerGroup => {\n return headerGroup.headers\n })\n .flat()\n },\n getMemoOptions(table.options, debug, 'getCenterFlatHeaders')\n )\n\n table.getRightFlatHeaders = memo(\n () => [table.getRightHeaderGroups()],\n left => {\n return left\n .map(headerGroup => {\n return headerGroup.headers\n })\n .flat()\n },\n getMemoOptions(table.options, debug, 'getRightFlatHeaders')\n )\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(\n () => [table.getCenterFlatHeaders()],\n flatHeaders => {\n return flatHeaders.filter(header => !header.subHeaders?.length)\n },\n getMemoOptions(table.options, debug, 'getCenterLeafHeaders')\n )\n\n table.getLeftLeafHeaders = memo(\n () => [table.getLeftFlatHeaders()],\n flatHeaders => {\n return flatHeaders.filter(header => !header.subHeaders?.length)\n },\n getMemoOptions(table.options, debug, 'getLeftLeafHeaders')\n )\n\n table.getRightLeafHeaders = memo(\n () => [table.getRightFlatHeaders()],\n flatHeaders => {\n return flatHeaders.filter(header => !header.subHeaders?.length)\n },\n getMemoOptions(table.options, debug, 'getRightLeafHeaders')\n )\n\n table.getLeafHeaders = memo(\n () => [\n table.getLeftHeaderGroups(),\n table.getCenterHeaderGroups(),\n table.getRightHeaderGroups(),\n ],\n (left, center, right) => {\n return [\n ...(left[0]?.headers ?? []),\n ...(center[0]?.headers ?? []),\n ...(right[0]?.headers ?? []),\n ]\n .map(header => {\n return header.getLeafHeaders()\n })\n .flat()\n },\n getMemoOptions(table.options, debug, 'getLeafHeaders')\n )\n },\n}\n\nexport function buildHeaderGroups<TData extends RowData>(\n allColumns: Column<TData, unknown>[],\n columnsToGroup: Column<TData, unknown>[],\n table: Table<TData>,\n headerFamily?: 'center' | 'left' | 'right'\n) {\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0\n\n const findMaxDepth = (columns: Column<TData, unknown>[], depth = 1) => {\n maxDepth = Math.max(maxDepth, depth)\n\n columns\n .filter(column => column.getIsVisible())\n .forEach(column => {\n if (column.columns?.length) {\n findMaxDepth(column.columns, depth + 1)\n }\n }, 0)\n }\n\n findMaxDepth(allColumns)\n\n let headerGroups: HeaderGroup<TData>[] = []\n\n const createHeaderGroup = (\n headersToGroup: Header<TData, unknown>[],\n depth: number\n ) => {\n // The header group we are creating\n const headerGroup: HeaderGroup<TData> = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: [],\n }\n\n // The parent columns we're going to scan next\n const pendingParentHeaders: Header<TData, unknown>[] = []\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0]\n\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth\n\n let column: Column<TData, unknown>\n let isPlaceholder = false\n\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent\n } else {\n // The parent header is repeated\n column = headerToGroup.column\n isPlaceholder = true\n }\n\n if (\n latestPendingParentHeader &&\n latestPendingParentHeader?.column === column\n ) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup)\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup?.id]\n .filter(Boolean)\n .join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder\n ? `${pendingParentHeaders.filter(d => d.column === column).length}`\n : undefined,\n depth,\n index: pendingParentHeaders.length,\n })\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup)\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header)\n }\n\n headerGroup.headers.push(headerToGroup)\n headerToGroup.headerGroup = headerGroup\n })\n\n headerGroups.push(headerGroup)\n\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1)\n }\n }\n\n const bottomHeaders = columnsToGroup.map((column, index) =>\n createHeader(table, column, {\n depth: maxDepth,\n index,\n })\n )\n\n createHeaderGroup(bottomHeaders, maxDepth - 1)\n\n headerGroups.reverse()\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = (\n headers: Header<TData, unknown>[]\n ): { colSpan: number; rowSpan: number }[] => {\n const filteredHeaders = headers.filter(header =>\n header.column.getIsVisible()\n )\n\n return filteredHeaders.map(header => {\n let colSpan = 0\n let rowSpan = 0\n let childRowSpans = [0]\n\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = []\n\n recurseHeadersForSpans(header.subHeaders).forEach(\n ({ colSpan: childColSpan, rowSpan: childRowSpan }) => {\n colSpan += childColSpan\n childRowSpans.push(childRowSpan)\n }\n )\n } else {\n colSpan = 1\n }\n\n const minChildRowSpan = Math.min(...childRowSpans)\n rowSpan = rowSpan + minChildRowSpan\n\n header.colSpan = colSpan\n header.rowSpan = rowSpan\n\n return { colSpan, rowSpan }\n })\n }\n\n recurseHeadersForSpans(headerGroups[0]?.headers ?? [])\n\n return headerGroups\n}\n","import { RowData, Cell, Row, Table } from '../types'\nimport { flattenBy, getMemoOptions, memo } from '../utils'\nimport { createCell } from './cell'\n\nexport interface CoreRow<TData extends RowData> {\n _getAllCellsByColumnId: () => Record<string, Cell<TData, unknown>>\n _uniqueValuesCache: Record<string, unknown>\n _valuesCache: Record<string, unknown>\n /**\n * The depth of the row (if nested or grouped) relative to the root row array.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#depth)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n depth: number\n /**\n * Returns all of the cells for the row.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#getallcells)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n getAllCells: () => Cell<TData, unknown>[]\n /**\n * Returns the leaf rows for the row, not including any parent rows.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#getleafrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n getLeafRows: () => Row<TData>[]\n /**\n * Returns the parent row for the row, if it exists.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#getparentrow)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n getParentRow: () => Row<TData> | undefined\n /**\n * Returns the parent rows for the row, all the way up to a root row.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#getparentrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n getParentRows: () => Row<TData>[]\n /**\n * Returns a unique array of values from the row for a given columnId.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#getuniquevalues)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n getUniqueValues: <TValue>(columnId: string) => TValue[]\n /**\n * Returns the value from the row for a given columnId.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#getvalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n getValue: <TValue>(columnId: string) => TValue\n /**\n * The resolved unique identifier for the row resolved via the `options.getRowId` option. Defaults to the row's index (or relative index if it is a subRow).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#id)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n id: string\n /**\n * The index of the row within its parent array (or the root data array).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#index)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n index: number\n /**\n * The original row object provided to the table. If the row is a grouped row, the original row object will be the first original in the group.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#original)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n original: TData\n /**\n * An array of the original subRows as returned by the `options.getSubRows` option.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#originalsubrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n originalSubRows?: TData[]\n /**\n * If nested, this row's parent row id.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#parentid)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n parentId?: string\n /**\n * Renders the value for the row in a given columnId the same as `getValue`, but will return the `renderFallbackValue` if no value is found.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#rendervalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n renderValue: <TValue>(columnId: string) => TValue\n /**\n * An array of subRows for the row as returned and created by the `options.getSubRows` option.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/row#subrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/rows)\n */\n subRows: Row<TData>[]\n}\n\nexport const createRow = <TData extends RowData>(\n table: Table<TData>,\n id: string,\n original: TData,\n rowIndex: number,\n depth: number,\n subRows?: Row<TData>[],\n parentId?: string\n): Row<TData> => {\n let row: CoreRow<TData> = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId]\n }\n\n const column = table.getColumn(columnId)\n\n if (!column?.accessorFn) {\n return undefined\n }\n\n row._valuesCache[columnId] = column.accessorFn(\n row.original as TData,\n rowIndex\n )\n\n return row._valuesCache[columnId] as any\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId]\n }\n\n const column = table.getColumn(columnId)\n\n if (!column?.accessorFn) {\n return undefined\n }\n\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)]\n return row._uniqueValuesCache[columnId]\n }\n\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(\n row.original as TData,\n rowIndex\n )\n\n return row._uniqueValuesCache[columnId] as any\n },\n renderValue: columnId =>\n row.getValue(columnId) ?? table.options.renderFallbackValue,\n subRows: subRows ?? [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getParentRow: () =>\n row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows: Row<TData>[] = []\n let currentRow = row\n while (true) {\n const parentRow = currentRow.getParentRow()\n if (!parentRow) break\n parentRows.push(parentRow)\n currentRow = parentRow\n }\n return parentRows.reverse()\n },\n getAllCells: memo(\n () => [table.getAllLeafColumns()],\n leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row as Row<TData>, column, column.id)\n })\n },\n getMemoOptions(table.options, 'debugRows', 'getAllCells')\n ),\n\n _getAllCellsByColumnId: memo(\n () => [row.getAllCells()],\n allCells => {\n return allCells.reduce(\n (acc, cell) => {\n acc[cell.column.id] = cell\n return acc\n },\n {} as Record<string, Cell<TData, unknown>>\n )\n },\n getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId')\n ),\n }\n\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i]\n feature?.createRow?.(row as Row<TData>, table)\n }\n\n return row as Row<TData>\n}\n","import { RowModel } from '..'\nimport { Column, RowData, Table, TableFeature } from '../types'\n\nexport interface FacetedColumn<TData extends RowData> {\n _getFacetedMinMaxValues?: () => undefined | [number, number]\n _getFacetedRowModel?: () => RowModel<TData>\n _getFacetedUniqueValues?: () => Map<any, number>\n /**\n * A function that **computes and returns** a min/max tuple derived from `column.getFacetedRowModel`. Useful for displaying faceted result values.\n * > ⚠️ Requires that you pass a valid `getFacetedMinMaxValues` function to `options.getFacetedMinMaxValues`. A default implementation is provided via the exported `getFacetedMinMaxValues` function.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-faceting#getfacetedminmaxvalues)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-faceting)\n */\n getFacetedMinMaxValues: () => undefined | [number, number]\n /**\n * Returns the row model with all other column filters applied, excluding its own filter. Useful for displaying faceted result counts.\n * > ⚠️ Requires that you pass a valid `getFacetedRowModel` function to `options.facetedRowModel`. A default implementation is provided via the exported `getFacetedRowModel` function.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-faceting#getfacetedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-faceting)\n */\n getFacetedRowModel: () => RowModel<TData>\n /**\n * A function that **computes and returns** a `Map` of unique values and their occurrences derived from `column.getFacetedRowModel`. Useful for displaying faceted result values.\n * > ⚠️ Requires that you pass a valid `getFacetedUniqueValues` function to `options.getFacetedUniqueValues`. A default implementation is provided via the exported `getFacetedUniqueValues` function.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-faceting#getfaceteduniquevalues)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-faceting)\n */\n getFacetedUniqueValues: () => Map<any, number>\n}\n\nexport interface FacetedOptions<TData extends RowData> {\n getFacetedMinMaxValues?: (\n table: Table<TData>,\n columnId: string\n ) => () => undefined | [number, number]\n getFacetedRowModel?: (\n table: Table<TData>,\n columnId: string\n ) => () => RowModel<TData>\n getFacetedUniqueValues?: (\n table: Table<TData>,\n columnId: string\n ) => () => Map<any, number>\n}\n\n//\n\nexport const ColumnFaceting: TableFeature = {\n createColumn: <TData extends RowData>(\n column: Column<TData, unknown>,\n table: Table<TData>\n ): void => {\n column._getFacetedRowModel =\n table.options.getFacetedRowModel &&\n table.options.getFacetedRowModel(table, column.id)\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel()\n }\n\n return column._getFacetedRowModel()\n }\n column._getFacetedUniqueValues =\n table.options.getFacetedUniqueValues &&\n table.options.getFacetedUniqueValues(table, column.id)\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map()\n }\n\n return column._getFacetedUniqueValues()\n }\n column._getFacetedMinMaxValues =\n table.options.getFacetedMinMaxValues &&\n table.options.getFacetedMinMaxValues(table, column.id)\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined\n }\n\n return column._getFacetedMinMaxValues()\n }\n },\n}\n","import { FilterFn } from './features/ColumnFiltering'\n\nconst includesString: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: string\n) => {\n const search = filterValue?.toString()?.toLowerCase()\n return Boolean(\n row\n .getValue<string | null>(columnId)\n ?.toString()\n ?.toLowerCase()\n ?.includes(search)\n )\n}\n\nincludesString.autoRemove = (val: any) => testFalsey(val)\n\nconst includesStringSensitive: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: string\n) => {\n return Boolean(\n row.getValue<string | null>(columnId)?.toString()?.includes(filterValue)\n )\n}\n\nincludesStringSensitive.autoRemove = (val: any) => testFalsey(val)\n\nconst equalsString: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: string\n) => {\n return (\n row.getValue<string | null>(columnId)?.toString()?.toLowerCase() ===\n filterValue?.toLowerCase()\n )\n}\n\nequalsString.autoRemove = (val: any) => testFalsey(val)\n\nconst arrIncludes: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown\n) => {\n return row.getValue<unknown[]>(columnId)?.includes(filterValue)\n}\n\narrIncludes.autoRemove = (val: any) => testFalsey(val)\n\nconst arrIncludesAll: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown[]\n) => {\n return !filterValue.some(\n val => !row.getValue<unknown[]>(columnId)?.includes(val)\n )\n}\n\narrIncludesAll.autoRemove = (val: any) => testFalsey(val) || !val?.length\n\nconst arrIncludesSome: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown[]\n) => {\n return filterValue.some(val =>\n row.getValue<unknown[]>(columnId)?.includes(val)\n )\n}\n\narrIncludesSome.autoRemove = (val: any) => testFalsey(val) || !val?.length\n\nconst equals: FilterFn<any> = (row, columnId: string, filterValue: unknown) => {\n return row.getValue(columnId) === filterValue\n}\n\nequals.autoRemove = (val: any) => testFalsey(val)\n\nconst weakEquals: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown\n) => {\n return row.getValue(columnId) == filterValue\n}\n\nweakEquals.autoRemove = (val: any) => testFalsey(val)\n\nconst inNumberRange: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: [number, number]\n) => {\n let [min, max] = filterValue\n\n const rowValue = row.getValue<number>(columnId)\n return rowValue >= min && rowValue <= max\n}\n\ninNumberRange.resolveFilterValue = (val: [any, any]) => {\n let [unsafeMin, unsafeMax] = val\n\n let parsedMin =\n typeof unsafeMin !== 'number' ? parseFloat(unsafeMin as string) : unsafeMin\n let parsedMax =\n typeof unsafeMax !== 'number' ? parseFloat(unsafeMax as string) : unsafeMax\n\n let min =\n unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax\n\n if (min > max) {\n const temp = min\n min = max\n max = temp\n }\n\n return [min, max] as const\n}\n\ninNumberRange.autoRemove = (val: any) =>\n testFalsey(val) || (testFalsey(val[0]) && testFalsey(val[1]))\n\n// Export\n\nexport const filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange,\n}\n\nexport type BuiltInFilterFn = keyof typeof filterFns\n\n// Utils\n\nfunction testFalsey(val: any) {\n return val === undefined || val === null || val === ''\n}\n","import { RowModel } from '..'\nimport { BuiltInFilterFn, filterFns } from '../filterFns'\nimport {\n Column,\n FilterFns,\n FilterMeta,\n OnChangeFn,\n Row,\n RowData,\n Table,\n TableFeature,\n Updater,\n} from '../types'\nimport { functionalUpdate, isFunction, makeStateUpdater } from '../utils'\n\nexport interface ColumnFiltersTableState {\n columnFilters: ColumnFiltersState\n}\n\nexport type ColumnFiltersState = ColumnFilter[]\n\nexport interface ColumnFilter {\n id: string\n value: unknown\n}\n\nexport interface ResolvedColumnFilter<TData extends RowData> {\n filterFn: FilterFn<TData>\n id: string\n resolvedValue: unknown\n}\n\nexport interface FilterFn<TData extends RowData> {\n (\n row: Row<TData>,\n columnId: string,\n filterValue: any,\n addMeta: (meta: FilterMeta) => void\n ): boolean\n autoRemove?: ColumnFilterAutoRemoveTestFn<TData>\n resolveFilterValue?: TransformFilterValueFn<TData>\n}\n\nexport type TransformFilterValueFn<TData extends RowData> = (\n value: any,\n column?: Column<TData, unknown>\n) => unknown\n\nexport type ColumnFilterAutoRemoveTestFn<TData extends RowData> = (\n value: any,\n column?: Column<TData, unknown>\n) => boolean\n\nexport type CustomFilterFns<TData extends RowData> = Record<\n string,\n FilterFn<TData>\n>\n\nexport type FilterFnOption<TData extends RowData> =\n | 'auto'\n | BuiltInFilterFn\n | keyof FilterFns\n | FilterFn<TData>\n\nexport interface ColumnFiltersColumnDef<TData extends RowData> {\n /**\n * Enables/disables the **column** filter for this column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#enablecolumnfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n enableColumnFilter?: boolean\n /**\n * The filter function to use with this column. Can be the name of a built-in filter function or a custom filter function.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#filterfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n filterFn?: FilterFnOption<TData>\n}\n\nexport interface ColumnFiltersColumn<TData extends RowData> {\n /**\n * Returns an automatically calculated filter function for the column based off of the columns first known value.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#getautofilterfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n getAutoFilterFn: () => FilterFn<TData> | undefined\n /**\n * Returns whether or not the column can be **column** filtered.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#getcanfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n getCanFilter: () => boolean\n /**\n * Returns the filter function (either user-defined or automatic, depending on configuration) for the columnId specified.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#getfilterfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n getFilterFn: () => FilterFn<TData> | undefined\n /**\n * Returns the index (including `-1`) of the column filter in the table's `state.columnFilters` array.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#getfilterindex)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n getFilterIndex: () => number\n /**\n * Returns the current filter value for the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#getfiltervalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n getFilterValue: () => unknown\n /**\n * Returns whether or not the column is currently filtered.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#getisfiltered)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n getIsFiltered: () => boolean\n /**\n * A function that sets the current filter value for the column. You can pass it a value or an updater function for immutability-safe operations on existing values.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#setfiltervalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n setFilterValue: (updater: Updater<any>) => void\n}\n\nexport interface ColumnFiltersRow<TData extends RowData> {\n /**\n * The column filters map for the row. This object tracks whether a row is passing/failing specific filters by their column ID.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#columnfilters)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n columnFilters: Record<string, boolean>\n /**\n * The column filters meta map for the row. This object tracks any filter meta for a row as optionally provided during the filtering process.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#columnfiltersmeta)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n columnFiltersMeta: Record<string, FilterMeta>\n}\n\ninterface ColumnFiltersOptionsBase<TData extends RowData> {\n /**\n * Enables/disables **column** filtering for all columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#enablecolumnfilters)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n enableColumnFilters?: boolean\n /**\n * Enables/disables all filtering for the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#enablefilters)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n enableFilters?: boolean\n /**\n * By default, filtering is done from parent rows down (so if a parent row is filtered out, all of its children will be filtered out as well). Setting this option to `true` will cause filtering to be done from leaf rows up (which means parent rows will be included so long as one of their child or grand-child rows is also included).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#filterfromleafrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n filterFromLeafRows?: boolean\n /**\n * If provided, this function is called **once** per table and should return a **new function** which will calculate and return the row model for the table when it's filtered.\n * - For server-side filtering, this function is unnecessary and can be ignored since the server should already return the filtered row model.\n * - For client-side filtering, this function is required. A default implementation is provided via any table adapter's `{ getFilteredRowModel }` export.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#getfilteredrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n getFilteredRowModel?: (table: Table<any>) => () => RowModel<any>\n /**\n * Disables the `getFilteredRowModel` from being used to filter data. This may be useful if your table needs to dynamically support both client-side and server-side filtering.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#manualfiltering)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n manualFiltering?: boolean\n /**\n * By default, filtering is done for all rows (max depth of 100), no matter if they are root level parent rows or the child leaf rows of a parent row. Setting this option to `0` will cause filtering to only be applied to the root level parent rows, with all sub-rows remaining unfiltered. Similarly, setting this option to `1` will cause filtering to only be applied to child leaf rows 1 level deep, and so on.\n\n * This is useful for situations where you want a row's entire child hierarchy to be visible regardless of the applied filter.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#maxleafrowfilterdepth)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n maxLeafRowFilterDepth?: number\n /**\n * If provided, this function will be called with an `updaterFn` when `state.columnFilters` changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#oncolumnfilterschange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>\n}\n\ntype ResolvedFilterFns = keyof FilterFns extends never\n ? {\n filterFns?: Record<string, FilterFn<any>>\n }\n : {\n filterFns: Record<keyof FilterFns, FilterFn<any>>\n }\n\nexport interface ColumnFiltersOptions<TData extends RowData>\n extends ColumnFiltersOptionsBase<TData>,\n ResolvedFilterFns {}\n\nexport interface ColumnFiltersInstance<TData extends RowData> {\n _getFilteredRowModel?: () => RowModel<TData>\n /**\n * Returns the row model for the table after **column** filtering has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#getfilteredrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n getFilteredRowModel: () => RowModel<TData>\n /**\n * Returns the row model for the table before any **column** filtering has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#getprefilteredrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n getPreFilteredRowModel: () => RowModel<TData>\n /**\n * Resets the **columnFilters** state to `initialState.columnFilters`, or `true` can be passed to force a default blank state reset to `[]`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#resetcolumnfilters)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n resetColumnFilters: (defaultState?: boolean) => void\n /**\n * Resets the **globalFilter** state to `initialState.globalFilter`, or `true` can be passed to force a default blank state reset to `undefined`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#resetglobalfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n resetGlobalFilter: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.columnFilters` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#setcolumnfilters)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n setColumnFilters: (updater: Updater<ColumnFiltersState>) => void\n /**\n * Sets or updates the `state.globalFilter` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#setglobalfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)\n */\n setGlobalFilter: (updater: Updater<any>) => void\n}\n\n//\n\nexport const ColumnFiltering: TableFeature = {\n getDefaultColumnDef: <\n TData extends RowData,\n >(): ColumnFiltersColumnDef<TData> => {\n return {\n filterFn: 'auto',\n }\n },\n\n getInitialState: (state): ColumnFiltersTableState => {\n return {\n columnFilters: [],\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): ColumnFiltersOptions<TData> => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100,\n } as ColumnFiltersOptions<TData>\n },\n\n createColumn: <TData extends RowData>(\n column: Column<TData, unknown>,\n table: Table<TData>\n ): void => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'string') {\n return filterFns.includesString\n }\n\n if (typeof value === 'number') {\n return filterFns.inNumberRange\n }\n\n if (typeof value === 'boolean') {\n return filterFns.equals\n }\n\n if (value !== null && typeof value === 'object') {\n return filterFns.equals\n }\n\n if (Array.isArray(value)) {\n return filterFns.arrIncludes\n }\n\n return filterFns.weakEquals\n }\n column.getFilterFn = () => {\n return isFunction(column.columnDef.filterFn)\n ? column.columnDef.filterFn\n : column.columnDef.filterFn === 'auto'\n ? column.getAutoFilterFn()\n : // @ts-ignore\n table.options.filterFns?.[column.columnDef.filterFn as string] ??\n filterFns[column.columnDef.filterFn as BuiltInFilterFn]\n }\n column.getCanFilter = () => {\n return (\n (column.columnDef.enableColumnFilter ?? true) &&\n (table.options.enableColumnFilters ?? true) &&\n (table.options.enableFilters ?? true) &&\n !!column.accessorFn\n )\n }\n\n column.getIsFiltered = () => column.getFilterIndex() > -1\n\n column.getFilterValue = () =>\n table.getState().columnFilters?.find(d => d.id === column.id)?.value\n\n column.getFilterIndex = () =>\n table.getState().columnFilters?.findIndex(d => d.id === column.id) ?? -1\n\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn()\n const previousFilter = old?.find(d => d.id === column.id)\n\n const newFilter = functionalUpdate(\n value,\n previousFilter ? previousFilter.value : undefined\n )\n\n //\n if (\n shouldAutoRemoveFilter(filterFn as FilterFn<TData>, newFilter, column)\n ) {\n return old?.filter(d => d.id !== column.id) ?? []\n }\n\n const newFilterObj = { id: column.id, value: newFilter }\n\n if (previousFilter) {\n return (\n old?.map(d => {\n if (d.id === column.id) {\n return newFilterObj\n }\n return d\n }) ?? []\n )\n }\n\n if (old?.length) {\n return [...old, newFilterObj]\n }\n\n return [newFilterObj]\n })\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n _table: Table<TData>\n ): void => {\n row.columnFilters = {}\n row.columnFiltersMeta = {}\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table.setColumnFilters = (updater: Updater<ColumnFiltersState>) => {\n const leafColumns = table.getAllLeafColumns()\n\n const updateFn = (old: ColumnFiltersState) => {\n return functionalUpdate(updater, old)?.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id)\n\n if (column) {\n const filterFn = column.getFilterFn()\n\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false\n }\n }\n\n return true\n })\n }\n\n table.options.onColumnFiltersChange?.(updateFn)\n }\n\n table.resetColumnFilters = defaultState => {\n table.setColumnFilters(\n defaultState ? [] : table.initialState?.columnFilters ?? []\n )\n }\n\n table.getPreFilteredRowModel = () => table.getCoreRowModel()\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table)\n }\n\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel()\n }\n\n return table._getFilteredRowModel()\n }\n },\n}\n\nexport function shouldAutoRemoveFilter<TData extends RowData>(\n filterFn?: FilterFn<TData>,\n value?: any,\n column?: Column<TData, unknown>\n) {\n return (\n (filterFn && filterFn.autoRemove\n ? filterFn.autoRemove(value, column)\n : false) ||\n typeof value === 'undefined' ||\n (typeof value === 'string' && !value)\n )\n}\n","import { AggregationFn } from './features/ColumnGrouping'\nimport { isNumberArray } from './utils'\n\nconst sum: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId)\n return sum + (typeof nextValue === 'number' ? nextValue : 0)\n }, 0)\n}\n\nconst min: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let min: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n\n if (\n value != null &&\n (min! > value || (min === undefined && value >= value))\n ) {\n min = value\n }\n })\n\n return min\n}\n\nconst max: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let max: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n if (\n value != null &&\n (max! < value || (max === undefined && value >= value))\n ) {\n max = value\n }\n })\n\n return max\n}\n\nconst extent: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let min: number | undefined\n let max: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value\n } else {\n if (min > value) min = value\n if (max! < value) max = value\n }\n }\n })\n\n return [min, max]\n}\n\nconst mean: AggregationFn<any> = (columnId, leafRows) => {\n let count = 0\n let sum = 0\n\n leafRows.forEach(row => {\n let value = row.getValue<number>(columnId)\n if (value != null && (value = +value) >= value) {\n ++count, (sum += value)\n }\n })\n\n if (count) return sum / count\n\n return\n}\n\nconst median: AggregationFn<any> = (columnId, leafRows) => {\n if (!leafRows.length) {\n return\n }\n\n const values = leafRows.map(row => row.getValue(columnId))\n if (!isNumberArray(values)) {\n return\n }\n if (values.length === 1) {\n return values[0]\n }\n\n const mid = Math.floor(values.length / 2)\n const nums = values.sort((a, b) => a - b)\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1]! + nums[mid]!) / 2\n}\n\nconst unique: AggregationFn<any> = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values())\n}\n\nconst uniqueCount: AggregationFn<any> = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size\n}\n\nconst count: AggregationFn<any> = (_columnId, leafRows) => {\n return leafRows.length\n}\n\nexport const aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count,\n}\n\nexport type BuiltInAggregationFn = keyof typeof aggregationFns\n","import { RowModel } from '..'\nimport { BuiltInAggregationFn, aggregationFns } from '../aggregationFns'\nimport {\n AggregationFns,\n Cell,\n Column,\n ColumnDefTemplate,\n OnChangeFn,\n Row,\n RowData,\n Table,\n TableFeature,\n Updater,\n} from '../types'\nimport { isFunction, makeStateUpdater } from '../utils'\n\nexport type GroupingState = string[]\n\nexport interface GroupingTableState {\n grouping: GroupingState\n}\n\nexport type AggregationFn<TData extends RowData> = (\n columnId: string,\n leafRows: Row<TData>[],\n childRows: Row<TData>[]\n) => any\n\nexport type CustomAggregationFns = Record<string, AggregationFn<any>>\n\nexport type AggregationFnOption<TData extends RowData> =\n | 'auto'\n | keyof AggregationFns\n | BuiltInAggregationFn\n | AggregationFn<TData>\n\nexport interface GroupingColumnDef<TData extends RowData, TValue> {\n /**\n * The cell to display each row for the column if the cell is an aggregate. If a function is passed, it will be passed a props object with the context of the cell and should return the property type for your adapter (the exact type depends on the adapter being used).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#aggregatedcell)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n aggregatedCell?: ColumnDefTemplate<\n ReturnType<Cell<TData, TValue>['getContext']>\n >\n /**\n * The resolved aggregation function for the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#aggregationfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n aggregationFn?: AggregationFnOption<TData>\n /**\n * Enables/disables grouping for this column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#enablegrouping)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n enableGrouping?: boolean\n /**\n * Specify a value to be used for grouping rows on this column. If this option is not specified, the value derived from `accessorKey` / `accessorFn` will be used instead.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getgroupingvalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getGroupingValue?: (row: TData) => any\n}\n\nexport interface GroupingColumn<TData extends RowData> {\n /**\n * Returns the aggregation function for the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getaggregationfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getAggregationFn: () => AggregationFn<TData> | undefined\n /**\n * Returns the automatically inferred aggregation function for the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getautoaggregationfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getAutoAggregationFn: () => AggregationFn<TData> | undefined\n /**\n * Returns whether or not the column can be grouped.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getcangroup)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getCanGroup: () => boolean\n /**\n * Returns the index of the column in the grouping state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getgroupedindex)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getGroupedIndex: () => number\n /**\n * Returns whether or not the column is currently grouped.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getisgrouped)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getIsGrouped: () => boolean\n /**\n * Returns a function that toggles the grouping state of the column. This is useful for passing to the `onClick` prop of a button.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#gettogglegroupinghandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getToggleGroupingHandler: () => () => void\n /**\n * Toggles the grouping state of the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#togglegrouping)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n toggleGrouping: () => void\n}\n\nexport interface GroupingRow {\n _groupingValuesCache: Record<string, any>\n /**\n * Returns the grouping value for any row and column (including leaf rows).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getgroupingvalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getGroupingValue: (columnId: string) => unknown\n /**\n * Returns whether or not the row is currently grouped.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getisgrouped)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getIsGrouped: () => boolean\n /**\n * If this row is grouped, this is the id of the column that this row is grouped by.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#groupingcolumnid)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n groupingColumnId?: string\n /**\n * If this row is grouped, this is the unique/shared value for the `groupingColumnId` for all of the rows in this group.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#groupingvalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n groupingValue?: unknown\n}\n\nexport interface GroupingCell {\n /**\n * Returns whether or not the cell is currently aggregated.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getisaggregated)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getIsAggregated: () => boolean\n /**\n * Returns whether or not the cell is currently grouped.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getisgrouped)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getIsGrouped: () => boolean\n /**\n * Returns whether or not the cell is currently a placeholder cell.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getisplaceholder)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getIsPlaceholder: () => boolean\n}\n\nexport interface ColumnDefaultOptions {\n enableGrouping: boolean\n onGroupingChange: OnChangeFn<GroupingState>\n}\n\ninterface GroupingOptionsBase {\n /**\n * Enables/disables grouping for the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#enablegrouping)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n enableGrouping?: boolean\n /**\n * Returns the row model after grouping has taken place, but no further.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getgroupedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getGroupedRowModel?: (table: Table<any>) => () => RowModel<any>\n /**\n * Grouping columns are automatically reordered by default to the start of the columns list. If you would rather remove them or leave them as-is, set the appropriate mode here.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#groupedcolumnmode)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n groupedColumnMode?: false | 'reorder' | 'remove'\n /**\n * Enables manual grouping. If this option is set to `true`, the table will not automatically group rows using `getGroupedRowModel()` and instead will expect you to manually group the rows before passing them to the table. This is useful if you are doing server-side grouping and aggregation.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#manualgrouping)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n manualGrouping?: boolean\n /**\n * If this function is provided, it will be called when the grouping state changes and you will be expected to manage the state yourself. You can pass the managed state back to the table via the `tableOptions.state.grouping` option.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#ongroupingchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n onGroupingChange?: OnChangeFn<GroupingState>\n}\n\ntype ResolvedAggregationFns = keyof AggregationFns extends never\n ? {\n aggregationFns?: Record<string, AggregationFn<any>>\n }\n : {\n aggregationFns: Record<keyof AggregationFns, AggregationFn<any>>\n }\n\nexport interface GroupingOptions\n extends GroupingOptionsBase,\n ResolvedAggregationFns {}\n\nexport type GroupingColumnMode = false | 'reorder' | 'remove'\n\nexport interface GroupingInstance<TData extends RowData> {\n _getGroupedRowModel?: () => RowModel<TData>\n /**\n * Returns the row model for the table after grouping has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getgroupedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getGroupedRowModel: () => RowModel<TData>\n /**\n * Returns the row model for the table before any grouping has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#getpregroupedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n getPreGroupedRowModel: () => RowModel<TData>\n /**\n * Resets the **grouping** state to `initialState.grouping`, or `true` can be passed to force a default blank state reset to `[]`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#resetgrouping)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n resetGrouping: (defaultState?: boolean) => void\n /**\n * Updates the grouping state of the table via an update function or value.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#setgrouping)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)\n */\n setGrouping: (updater: Updater<GroupingState>) => void\n}\n\n//\n\nexport const ColumnGrouping: TableFeature = {\n getDefaultColumnDef: <TData extends RowData>(): GroupingColumnDef<\n TData,\n unknown\n > => {\n return {\n aggregatedCell: props => (props.getValue() as any)?.toString?.() ?? null,\n aggregationFn: 'auto',\n }\n },\n\n getInitialState: (state): GroupingTableState => {\n return {\n grouping: [],\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): GroupingOptions => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder',\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): void => {\n column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old?.includes(column.id)) {\n return old.filter(d => d !== column.id)\n }\n\n return [...(old ?? []), column.id]\n })\n }\n\n column.getCanGroup = () => {\n return (\n (column.columnDef.enableGrouping ?? true) &&\n (table.options.enableGrouping ?? true) &&\n (!!column.accessorFn || !!column.columnDef.getGroupingValue)\n )\n }\n\n column.getIsGrouped = () => {\n return table.getState().grouping?.includes(column.id)\n }\n\n column.getGroupedIndex = () => table.getState().grouping?.indexOf(column.id)\n\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup()\n\n return () => {\n if (!canGroup) return\n column.toggleGrouping()\n }\n }\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'number') {\n return aggregationFns.sum\n }\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent\n }\n }\n column.getAggregationFn = () => {\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.columnDef.aggregationFn)\n ? column.columnDef.aggregationFn\n : column.columnDef.aggregationFn === 'auto'\n ? column.getAutoAggregationFn()\n : table.options.aggregationFns?.[\n column.columnDef.aggregationFn as string\n ] ??\n aggregationFns[\n column.columnDef.aggregationFn as BuiltInAggregationFn\n ]\n }\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table.setGrouping = updater => table.options.onGroupingChange?.(updater)\n\n table.resetGrouping = defaultState => {\n table.setGrouping(defaultState ? [] : table.initialState?.grouping ?? [])\n }\n\n table.getPreGroupedRowModel = () => table.getFilteredRowModel()\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table)\n }\n\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel()\n }\n\n return table._getGroupedRowModel()\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): void => {\n row.getIsGrouped = () => !!row.groupingColumnId\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n const column = table.getColumn(columnId)\n\n if (!column?.columnDef.getGroupingValue) {\n return row.getValue(columnId)\n }\n\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(\n row.original\n )\n\n return row._groupingValuesCache[columnId]\n }\n row._groupingValuesCache = {}\n },\n\n createCell: <TData extends RowData, TValue>(\n cell: Cell<TData, TValue>,\n column: Column<TData, TValue>,\n row: Row<TData>,\n table: Table<TData>\n ): void => {\n const getRenderValue = () =>\n cell.getValue() ?? table.options.renderFallbackValue\n\n cell.getIsGrouped = () =>\n column.getIsGrouped() && column.id === row.groupingColumnId\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped()\n cell.getIsAggregated = () =>\n !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!row.subRows?.length\n },\n}\n\nexport function orderColumns<TData extends RowData>(\n leafColumns: Column<TData, unknown>[],\n grouping: string[],\n groupedColumnMode?: GroupingColumnMode\n) {\n if (!grouping?.length || !groupedColumnMode) {\n return leafColumns\n }\n\n const nonGroupingColumns = leafColumns.filter(\n col => !grouping.includes(col.id)\n )\n\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns\n }\n\n const groupingColumns = grouping\n .map(g => leafColumns.find(col => col.id === g)!)\n .filter(Boolean)\n\n return [...groupingColumns, ...nonGroupingColumns]\n}\n","import { getMemoOptions, makeStateUpdater, memo } from '../utils'\n\nimport {\n Column,\n OnChangeFn,\n RowData,\n Table,\n TableFeature,\n Updater,\n} from '../types'\n\nimport { orderColumns } from './ColumnGrouping'\nimport { ColumnPinningPosition, _getVisibleLeafColumns } from '..'\n\nexport interface ColumnOrderTableState {\n columnOrder: ColumnOrderState\n}\n\nexport type ColumnOrderState = string[]\n\nexport interface ColumnOrderOptions {\n /**\n * If provided, this function will be called with an `updaterFn` when `state.columnOrder` changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-ordering#oncolumnorderchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-ordering)\n */\n onColumnOrderChange?: OnChangeFn<ColumnOrderState>\n}\n\nexport interface ColumnOrderColumn {\n /**\n * Returns the index of the column in the order of the visible columns. Optionally pass a `position` parameter to get the index of the column in a sub-section of the table\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-ordering#getindex)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-ordering)\n */\n getIndex: (position?: ColumnPinningPosition | 'center') => number\n /**\n * Returns `true` if the column is the first column in the order of the visible columns. Optionally pass a `position` parameter to check if the column is the first in a sub-section of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-ordering#getisfirstcolumn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-ordering)\n */\n getIsFirstColumn: (position?: ColumnPinningPosition | 'center') => boolean\n /**\n * Returns `true` if the column is the last column in the order of the visible columns. Optionally pass a `position` parameter to check if the column is the last in a sub-section of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-ordering#getislastcolumn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-ordering)\n */\n getIsLastColumn: (position?: ColumnPinningPosition | 'center') => boolean\n}\n\nexport interface ColumnOrderDefaultOptions {\n onColumnOrderChange: OnChangeFn<ColumnOrderState>\n}\n\nexport interface ColumnOrderInstance<TData extends RowData> {\n _getOrderColumnsFn: () => (\n columns: Column<TData, unknown>[]\n ) => Column<TData, unknown>[]\n /**\n * Resets the **columnOrder** state to `initialState.columnOrder`, or `true` can be passed to force a default blank state reset to `[]`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-ordering#resetcolumnorder)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-ordering)\n */\n resetColumnOrder: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.columnOrder` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-ordering#setcolumnorder)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-ordering)\n */\n setColumnOrder: (updater: Updater<ColumnOrderState>) => void\n}\n\n//\n\nexport const ColumnOrdering: TableFeature = {\n getInitialState: (state): ColumnOrderTableState => {\n return {\n columnOrder: [],\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): ColumnOrderDefaultOptions => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table),\n }\n },\n\n createColumn: <TData extends RowData>(\n column: Column<TData, unknown>,\n table: Table<TData>\n ): void => {\n column.getIndex = memo(\n position => [_getVisibleLeafColumns(table, position)],\n columns => columns.findIndex(d => d.id === column.id),\n getMemoOptions(table.options, 'debugColumns', 'getIndex')\n )\n column.getIsFirstColumn = position => {\n const columns = _getVisibleLeafColumns(table, position)\n return columns[0]?.id === column.id\n }\n column.getIsLastColumn = position => {\n const columns = _getVisibleLeafColumns(table, position)\n return columns[columns.length - 1]?.id === column.id\n }\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table.setColumnOrder = updater =>\n table.options.onColumnOrderChange?.(updater)\n table.resetColumnOrder = defaultState => {\n table.setColumnOrder(\n defaultState ? [] : table.initialState.columnOrder ?? []\n )\n }\n table._getOrderColumnsFn = memo(\n () => [\n table.getState().columnOrder,\n table.getState().grouping,\n table.options.groupedColumnMode,\n ],\n (columnOrder, grouping, groupedColumnMode) =>\n (columns: Column<TData, unknown>[]) => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns: Column<TData, unknown>[] = []\n\n // If there is no order, return the normal columns\n if (!columnOrder?.length) {\n orderedColumns = columns\n } else {\n const columnOrderCopy = [...columnOrder]\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns]\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift()\n const foundIndex = columnsCopy.findIndex(\n d => d.id === targetColumnId\n )\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]!)\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy]\n }\n\n return orderColumns(orderedColumns, grouping, groupedColumnMode)\n },\n getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn')\n )\n },\n}\n","import {\n OnChangeFn,\n Updater,\n Table,\n Column,\n Row,\n Cell,\n RowData,\n TableFeature,\n} from '../types'\nimport { getMemoOptions, makeStateUpdater, memo } from '../utils'\n\nexport type ColumnPinningPosition = false | 'left' | 'right'\n\nexport interface ColumnPinningState {\n left?: string[]\n right?: string[]\n}\n\nexport interface ColumnPinningTableState {\n columnPinning: ColumnPinningState\n}\n\nexport interface ColumnPinningOptions {\n /**\n * Enables/disables column pinning for the table. Defaults to `true`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#enablecolumnpinning)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n enableColumnPinning?: boolean\n /**\n * @deprecated Use `enableColumnPinning` or `enableRowPinning` instead.\n * Enables/disables all pinning for the table. Defaults to `true`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#enablepinning)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n enablePinning?: boolean\n /**\n * If provided, this function will be called with an `updaterFn` when `state.columnPinning` changes. This overrides the default internal state management, so you will also need to supply `state.columnPinning` from your own managed state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#oncolumnpinningchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/oncolumnpinningchange)\n */\n onColumnPinningChange?: OnChangeFn<ColumnPinningState>\n}\n\nexport interface ColumnPinningDefaultOptions {\n onColumnPinningChange: OnChangeFn<ColumnPinningState>\n}\n\nexport interface ColumnPinningColumnDef {\n /**\n * Enables/disables column pinning for this column. Defaults to `true`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#enablepinning-1)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n enablePinning?: boolean\n}\n\nexport interface ColumnPinningColumn {\n /**\n * Returns whether or not the column can be pinned.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getcanpin)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getCanPin: () => boolean\n /**\n * Returns the pinned position of the column. (`'left'`, `'right'` or `false`)\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getispinned)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getIsPinned: () => ColumnPinningPosition\n /**\n * Returns the numeric pinned index of the column within a pinned column group.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getpinnedindex)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getPinnedIndex: () => number\n /**\n * Pins a column to the `'left'` or `'right'`, or unpins the column to the center if `false` is passed.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#pin)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n pin: (position: ColumnPinningPosition) => void\n}\n\nexport interface ColumnPinningRow<TData extends RowData> {\n /**\n * Returns all center pinned (unpinned) leaf cells in the row.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getcentervisiblecells)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getCenterVisibleCells: () => Cell<TData, unknown>[]\n /**\n * Returns all left pinned leaf cells in the row.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getleftvisiblecells)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getLeftVisibleCells: () => Cell<TData, unknown>[]\n /**\n * Returns all right pinned leaf cells in the row.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getrightvisiblecells)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getRightVisibleCells: () => Cell<TData, unknown>[]\n}\n\nexport interface ColumnPinningInstance<TData extends RowData> {\n /**\n * Returns all center pinned (unpinned) leaf columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getcenterleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getCenterLeafColumns: () => Column<TData, unknown>[]\n /**\n * Returns whether or not any columns are pinned. Optionally specify to only check for pinned columns in either the `left` or `right` position.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getissomecolumnspinned)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getIsSomeColumnsPinned: (position?: ColumnPinningPosition) => boolean\n /**\n * Returns all left pinned leaf columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getleftleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getLeftLeafColumns: () => Column<TData, unknown>[]\n /**\n * Returns all right pinned leaf columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#getrightleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n getRightLeafColumns: () => Column<TData, unknown>[]\n /**\n * Resets the **columnPinning** state to `initialState.columnPinning`, or `true` can be passed to force a default blank state reset to `{ left: [], right: [], }`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#resetcolumnpinning)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n resetColumnPinning: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.columnPinning` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#setcolumnpinning)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)\n */\n setColumnPinning: (updater: Updater<ColumnPinningState>) => void\n}\n\n//\n\nconst getDefaultColumnPinningState = (): ColumnPinningState => ({\n left: [],\n right: [],\n})\n\nexport const ColumnPinning: TableFeature = {\n getInitialState: (state): ColumnPinningTableState => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): ColumnPinningDefaultOptions => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table),\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): void => {\n column.pin = position => {\n const columnIds = column\n .getLeafColumns()\n .map(d => d.id)\n .filter(Boolean) as string[]\n\n table.setColumnPinning(old => {\n if (position === 'right') {\n return {\n left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),\n right: [\n ...(old?.right ?? []).filter(d => !columnIds?.includes(d)),\n ...columnIds,\n ],\n }\n }\n\n if (position === 'left') {\n return {\n left: [\n ...(old?.left ?? []).filter(d => !columnIds?.includes(d)),\n ...columnIds,\n ],\n right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),\n }\n }\n\n return {\n left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),\n right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),\n }\n })\n }\n\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns()\n\n return leafColumns.some(\n d =>\n (d.columnDef.enablePinning ?? true) &&\n (table.options.enableColumnPinning ??\n table.options.enablePinning ??\n true)\n )\n }\n\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id)\n\n const { left, right } = table.getState().columnPinning\n\n const isLeft = leafColumnIds.some(d => left?.includes(d))\n const isRight = leafColumnIds.some(d => right?.includes(d))\n\n return isLeft ? 'left' : isRight ? 'right' : false\n }\n\n column.getPinnedIndex = () => {\n const position = column.getIsPinned()\n\n return position\n ? table.getState().columnPinning?.[position]?.indexOf(column.id) ?? -1\n : 0\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): void => {\n row.getCenterVisibleCells = memo(\n () => [\n row._getAllVisibleCells(),\n table.getState().columnPinning.left,\n table.getState().columnPinning.right,\n ],\n (allCells, left, right) => {\n const leftAndRight: string[] = [...(left ?? []), ...(right ?? [])]\n\n return allCells.filter(d => !leftAndRight.includes(d.column.id))\n },\n getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells')\n )\n row.getLeftVisibleCells = memo(\n () => [row._getAllVisibleCells(), table.getState().columnPinning.left],\n (allCells, left) => {\n const cells = (left ?? [])\n .map(columnId => allCells.find(cell => cell.column.id === columnId)!)\n .filter(Boolean)\n .map(d => ({ ...d, position: 'left' }) as Cell<TData, unknown>)\n\n return cells\n },\n getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells')\n )\n row.getRightVisibleCells = memo(\n () => [row._getAllVisibleCells(), table.getState().columnPinning.right],\n (allCells, right) => {\n const cells = (right ?? [])\n .map(columnId => allCells.find(cell => cell.column.id === columnId)!)\n .filter(Boolean)\n .map(d => ({ ...d, position: 'right' }) as Cell<TData, unknown>)\n\n return cells\n },\n getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells')\n )\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table.setColumnPinning = updater =>\n table.options.onColumnPinningChange?.(updater)\n\n table.resetColumnPinning = defaultState =>\n table.setColumnPinning(\n defaultState\n ? getDefaultColumnPinningState()\n : table.initialState?.columnPinning ?? getDefaultColumnPinningState()\n )\n\n table.getIsSomeColumnsPinned = position => {\n const pinningState = table.getState().columnPinning\n\n if (!position) {\n return Boolean(pinningState.left?.length || pinningState.right?.length)\n }\n return Boolean(pinningState[position]?.length)\n }\n\n table.getLeftLeafColumns = memo(\n () => [table.getAllLeafColumns(), table.getState().columnPinning.left],\n (allColumns, left) => {\n return (left ?? [])\n .map(columnId => allColumns.find(column => column.id === columnId)!)\n .filter(Boolean)\n },\n getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns')\n )\n\n table.getRightLeafColumns = memo(\n () => [table.getAllLeafColumns(), table.getState().columnPinning.right],\n (allColumns, right) => {\n return (right ?? [])\n .map(columnId => allColumns.find(column => column.id === columnId)!)\n .filter(Boolean)\n },\n getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns')\n )\n\n table.getCenterLeafColumns = memo(\n () => [\n table.getAllLeafColumns(),\n table.getState().columnPinning.left,\n table.getState().columnPinning.right,\n ],\n (allColumns, left, right) => {\n const leftAndRight: string[] = [...(left ?? []), ...(right ?? [])]\n\n return allColumns.filter(d => !leftAndRight.includes(d.id))\n },\n getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns')\n )\n },\n}\n","export function safelyAccessDocument(_document?: Document): Document | null {\n return _document || (typeof document !== 'undefined' ? document : null)\n}\n\nexport function safelyAccessDocumentEvent(event: Event): Document | null {\n return !!event &&\n !!event.target &&\n typeof event.target === 'object' &&\n 'ownerDocument' in event.target\n ? (event.target.ownerDocument as Document | null)\n : null\n}\n","import { _getVisibleLeafColumns } from '..'\nimport {\n RowData,\n Column,\n Header,\n OnChangeFn,\n Table,\n Updater,\n TableFeature,\n} from '../types'\nimport { getMemoOptions, makeStateUpdater, memo } from '../utils'\nimport { ColumnPinningPosition } from './ColumnPinning'\nimport { safelyAccessDocument } from '../utils/document'\n\n//\n\nexport interface ColumnSizingTableState {\n columnSizing: ColumnSizingState\n columnSizingInfo: ColumnSizingInfoState\n}\n\nexport type ColumnSizingState = Record<string, number>\n\nexport interface ColumnSizingInfoState {\n columnSizingStart: [string, number][]\n deltaOffset: null | number\n deltaPercentage: null | number\n isResizingColumn: false | string\n startOffset: null | number\n startSize: null | number\n}\n\nexport type ColumnResizeMode = 'onChange' | 'onEnd'\n\nexport type ColumnResizeDirection = 'ltr' | 'rtl'\n\nexport interface ColumnSizingOptions {\n /**\n * Determines when the columnSizing state is updated. `onChange` updates the state when the user is dragging the resize handle. `onEnd` updates the state when the user releases the resize handle.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#columnresizemode)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n columnResizeMode?: ColumnResizeMode\n /**\n * Enables or disables column resizing for the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#enablecolumnresizing)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n enableColumnResizing?: boolean\n /**\n * Enables or disables right-to-left support for resizing the column. defaults to 'ltr'.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#columnResizeDirection)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n columnResizeDirection?: ColumnResizeDirection\n /**\n * If provided, this function will be called with an `updaterFn` when `state.columnSizing` changes. This overrides the default internal state management, so you will also need to supply `state.columnSizing` from your own managed state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#oncolumnsizingchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n onColumnSizingChange?: OnChangeFn<ColumnSizingState>\n /**\n * If provided, this function will be called with an `updaterFn` when `state.columnSizingInfo` changes. This overrides the default internal state management, so you will also need to supply `state.columnSizingInfo` from your own managed state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#oncolumnsizinginfochange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n onColumnSizingInfoChange?: OnChangeFn<ColumnSizingInfoState>\n}\n\nexport type ColumnSizingDefaultOptions = Pick<\n ColumnSizingOptions,\n | 'columnResizeMode'\n | 'onColumnSizingChange'\n | 'onColumnSizingInfoChange'\n | 'columnResizeDirection'\n>\n\nexport interface ColumnSizingInstance {\n /**\n * If pinning, returns the total size of the center portion of the table by calculating the sum of the sizes of all unpinned/center leaf-columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getcentertotalsize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getCenterTotalSize: () => number\n /**\n * Returns the total size of the left portion of the table by calculating the sum of the sizes of all left leaf-columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getlefttotalsize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getLeftTotalSize: () => number\n /**\n * Returns the total size of the right portion of the table by calculating the sum of the sizes of all right leaf-columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getrighttotalsize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getRightTotalSize: () => number\n /**\n * Returns the total size of the table by calculating the sum of the sizes of all leaf-columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#gettotalsize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getTotalSize: () => number\n /**\n * Resets column sizing to its initial state. If `defaultState` is `true`, the default state for the table will be used instead of the initialValue provided to the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#resetcolumnsizing)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n resetColumnSizing: (defaultState?: boolean) => void\n /**\n * Resets column sizing info to its initial state. If `defaultState` is `true`, the default state for the table will be used instead of the initialValue provided to the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#resetheadersizeinfo)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n resetHeaderSizeInfo: (defaultState?: boolean) => void\n /**\n * Sets the column sizing state using an updater function or a value. This will trigger the underlying `onColumnSizingChange` function if one is passed to the table options, otherwise the state will be managed automatically by the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#setcolumnsizing)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n setColumnSizing: (updater: Updater<ColumnSizingState>) => void\n /**\n * Sets the column sizing info state using an updater function or a value. This will trigger the underlying `onColumnSizingInfoChange` function if one is passed to the table options, otherwise the state will be managed automatically by the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#setcolumnsizinginfo)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n setColumnSizingInfo: (updater: Updater<ColumnSizingInfoState>) => void\n}\n\nexport interface ColumnSizingColumnDef {\n /**\n * Enables or disables column resizing for the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#enableresizing)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n enableResizing?: boolean\n /**\n * The maximum allowed size for the column\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#maxsize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n maxSize?: number\n /**\n * The minimum allowed size for the column\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#minsize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n minSize?: number\n /**\n * The desired size for the column\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#size)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n size?: number\n}\n\nexport interface ColumnSizingColumn {\n /**\n * Returns `true` if the column can be resized.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getcanresize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getCanResize: () => boolean\n /**\n * Returns `true` if the column is currently being resized.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getisresizing)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getIsResizing: () => boolean\n /**\n * Returns the current size of the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getsize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getSize: () => number\n /**\n * Returns the offset measurement along the row-axis (usually the x-axis for standard tables) for the header. This is effectively a sum of the offset measurements of all preceding (left) headers in relation to the current column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getstart)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getStart: (position?: ColumnPinningPosition | 'center') => number\n /**\n * Returns the offset measurement along the row-axis (usually the x-axis for standard tables) for the header. This is effectively a sum of the offset measurements of all succeeding (right) headers in relation to the current column.\n */\n getAfter: (position?: ColumnPinningPosition | 'center') => number\n /**\n * Resets the column to its initial size.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#resetsize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n resetSize: () => void\n}\n\nexport interface ColumnSizingHeader {\n /**\n * Returns an event handler function that can be used to resize the header. It can be used as an:\n * - `onMouseDown` handler\n * - `onTouchStart` handler\n *\n * The dragging and release events are automatically handled for you.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getresizehandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getResizeHandler: (context?: Document) => (event: unknown) => void\n /**\n * Returns the current size of the header.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getsize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getSize: () => number\n /**\n * Returns the offset measurement along the row-axis (usually the x-axis for standard tables) for the header. This is effectively a sum of the offset measurements of all preceding headers.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#getstart)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)\n */\n getStart: (position?: ColumnPinningPosition) => number\n}\n\n//\n\nexport const defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER,\n}\n\nconst getDefaultColumnSizingInfoState = (): ColumnSizingInfoState => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: [],\n})\n\nexport const ColumnSizing: TableFeature = {\n getDefaultColumnDef: (): ColumnSizingColumnDef => {\n return defaultColumnSizing\n },\n getInitialState: (state): ColumnSizingTableState => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): ColumnSizingDefaultOptions => {\n return {\n columnResizeMode: 'onEnd',\n columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table),\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): void => {\n column.getSize = () => {\n const columnSize = table.getState().columnSizing[column.id]\n\n return Math.min(\n Math.max(\n column.columnDef.minSize ?? defaultColumnSizing.minSize,\n columnSize ?? column.columnDef.size ?? defaultColumnSizing.size\n ),\n column.columnDef.maxSize ?? defaultColumnSizing.maxSize\n )\n }\n\n column.getStart = memo(\n position => [\n position,\n _getVisibleLeafColumns(table, position),\n table.getState().columnSizing,\n ],\n (position, columns) =>\n columns\n .slice(0, column.getIndex(position))\n .reduce((sum, column) => sum + column.getSize(), 0),\n getMemoOptions(table.options, 'debugColumns', 'getStart')\n )\n\n column.getAfter = memo(\n position => [\n position,\n _getVisibleLeafColumns(table, position),\n table.getState().columnSizing,\n ],\n (position, columns) =>\n columns\n .slice(column.getIndex(position) + 1)\n .reduce((sum, column) => sum + column.getSize(), 0),\n getMemoOptions(table.options, 'debugColumns', 'getAfter')\n )\n\n column.resetSize = () => {\n table.setColumnSizing(({ [column.id]: _, ...rest }) => {\n return rest\n })\n }\n column.getCanResize = () => {\n return (\n (column.columnDef.enableResizing ?? true) &&\n (table.options.enableColumnResizing ?? true)\n )\n }\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id\n }\n },\n\n createHeader: <TData extends RowData, TValue>(\n header: Header<TData, TValue>,\n table: Table<TData>\n ): void => {\n header.getSize = () => {\n let sum = 0\n\n const recurse = (header: Header<TData, TValue>) => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse)\n } else {\n sum += header.column.getSize() ?? 0\n }\n }\n\n recurse(header)\n\n return sum\n }\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1]!\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize()\n }\n\n return 0\n }\n header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id)\n const canResize = column?.getCanResize()\n\n return (e: unknown) => {\n if (!column || !canResize) {\n return\n }\n\n ;(e as any).persist?.()\n\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return\n }\n }\n\n const startSize = header.getSize()\n\n const columnSizingStart: [string, number][] = header\n ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()])\n : [[column.id, column.getSize()]]\n\n const clientX = isTouchStartEvent(e)\n ? Math.round(e.touches[0]!.clientX)\n : (e as MouseEvent).clientX\n\n const newColumnSizing: ColumnSizingState = {}\n\n const updateOffset = (\n eventType: 'move' | 'end',\n clientXPos?: number\n ) => {\n if (typeof clientXPos !== 'number') {\n return\n }\n\n table.setColumnSizingInfo(old => {\n const deltaDirection =\n table.options.columnResizeDirection === 'rtl' ? -1 : 1\n const deltaOffset =\n (clientXPos - (old?.startOffset ?? 0)) * deltaDirection\n const deltaPercentage = Math.max(\n deltaOffset / (old?.startSize ?? 0),\n -0.999999\n )\n\n old.columnSizingStart.forEach(([columnId, headerSize]) => {\n newColumnSizing[columnId] =\n Math.round(\n Math.max(headerSize + headerSize * deltaPercentage, 0) * 100\n ) / 100\n })\n\n return {\n ...old,\n deltaOffset,\n deltaPercentage,\n }\n })\n\n if (\n table.options.columnResizeMode === 'onChange' ||\n eventType === 'end'\n ) {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing,\n }))\n }\n }\n\n const onMove = (clientXPos?: number) => updateOffset('move', clientXPos)\n\n const onEnd = (clientXPos?: number) => {\n updateOffset('end', clientXPos)\n\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: [],\n }))\n }\n\n const contextDocument = safelyAccessDocument(_contextDocument)\n\n const mouseEvents = {\n moveHandler: (e: MouseEvent) => onMove(e.clientX),\n upHandler: (e: MouseEvent) => {\n contextDocument?.removeEventListener(\n 'mousemove',\n mouseEvents.moveHandler\n )\n contextDocument?.removeEventListener(\n 'mouseup',\n mouseEvents.upHandler\n )\n onEnd(e.clientX)\n },\n }\n\n const touchEvents = {\n moveHandler: (e: TouchEvent) => {\n if (e.cancelable) {\n e.preventDefault()\n e.stopPropagation()\n }\n onMove(e.touches[0]!.clientX)\n return false\n },\n upHandler: (e: TouchEvent) => {\n contextDocument?.removeEventListener(\n 'touchmove',\n touchEvents.moveHandler\n )\n contextDocument?.removeEventListener(\n 'touchend',\n touchEvents.upHandler\n )\n if (e.cancelable) {\n e.preventDefault()\n e.stopPropagation()\n }\n onEnd(e.touches[0]?.clientX)\n },\n }\n\n const passiveIfSupported = passiveEventSupported()\n ? { passive: false }\n : false\n\n if (isTouchStartEvent(e)) {\n contextDocument?.addEventListener(\n 'touchmove',\n touchEvents.moveHandler,\n passiveIfSupported\n )\n contextDocument?.addEventListener(\n 'touchend',\n touchEvents.upHandler,\n passiveIfSupported\n )\n } else {\n contextDocument?.addEventListener(\n 'mousemove',\n mouseEvents.moveHandler,\n passiveIfSupported\n )\n contextDocument?.addEventListener(\n 'mouseup',\n mouseEvents.upHandler,\n passiveIfSupported\n )\n }\n\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id,\n }))\n }\n }\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table.setColumnSizing = updater =>\n table.options.onColumnSizingChange?.(updater)\n table.setColumnSizingInfo = updater =>\n table.options.onColumnSizingInfoChange?.(updater)\n table.resetColumnSizing = defaultState => {\n table.setColumnSizing(\n defaultState ? {} : table.initialState.columnSizing ?? {}\n )\n }\n table.resetHeaderSizeInfo = defaultState => {\n table.setColumnSizingInfo(\n defaultState\n ? getDefaultColumnSizingInfoState()\n : table.initialState.columnSizingInfo ??\n getDefaultColumnSizingInfoState()\n )\n }\n table.getTotalSize = () =>\n table.getHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize()\n }, 0) ?? 0\n table.getLeftTotalSize = () =>\n table.getLeftHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize()\n }, 0) ?? 0\n table.getCenterTotalSize = () =>\n table.getCenterHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize()\n }, 0) ?? 0\n table.getRightTotalSize = () =>\n table.getRightHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize()\n }, 0) ?? 0\n },\n}\n\nlet passiveSupported: boolean | null = null\nexport function passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported\n\n let supported = false\n try {\n const options = {\n get passive() {\n supported = true\n return false\n },\n }\n\n const noop = () => {}\n\n window.addEventListener('test', noop, options)\n window.removeEventListener('test', noop)\n } catch (err) {\n supported = false\n }\n passiveSupported = supported\n return passiveSupported\n}\n\nfunction isTouchStartEvent(e: unknown): e is TouchEvent {\n return (e as TouchEvent).type === 'touchstart'\n}\n","import { ColumnPinningPosition } from '..'\nimport {\n Cell,\n Column,\n OnChangeFn,\n Table,\n Updater,\n Row,\n RowData,\n TableFeature,\n} from '../types'\nimport { getMemoOptions, makeStateUpdater, memo } from '../utils'\n\nexport type VisibilityState = Record<string, boolean>\n\nexport interface VisibilityTableState {\n columnVisibility: VisibilityState\n}\n\nexport interface VisibilityOptions {\n /**\n * Whether to enable column hiding. Defaults to `true`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#enablehiding)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n enableHiding?: boolean\n /**\n * If provided, this function will be called with an `updaterFn` when `state.columnVisibility` changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#oncolumnvisibilitychange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n onColumnVisibilityChange?: OnChangeFn<VisibilityState>\n}\n\nexport type VisibilityDefaultOptions = Pick<\n VisibilityOptions,\n 'onColumnVisibilityChange'\n>\n\nexport interface VisibilityInstance<TData extends RowData> {\n /**\n * If column pinning, returns a flat array of leaf-node columns that are visible in the unpinned/center portion of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getcentervisibleleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getCenterVisibleLeafColumns: () => Column<TData, unknown>[]\n /**\n * Returns whether all columns are visible\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getisallcolumnsvisible)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getIsAllColumnsVisible: () => boolean\n /**\n * Returns whether any columns are visible\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getissomecolumnsvisible)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getIsSomeColumnsVisible: () => boolean\n /**\n * If column pinning, returns a flat array of leaf-node columns that are visible in the left portion of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getleftvisibleleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getLeftVisibleLeafColumns: () => Column<TData, unknown>[]\n /**\n * If column pinning, returns a flat array of leaf-node columns that are visible in the right portion of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getrightvisibleleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getRightVisibleLeafColumns: () => Column<TData, unknown>[]\n /**\n * Returns a handler for toggling the visibility of all columns, meant to be bound to a `input[type=checkbox]` element.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#gettoggleallcolumnsvisibilityhandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getToggleAllColumnsVisibilityHandler: () => (event: unknown) => void\n /**\n * Returns a flat array of columns that are visible, including parent columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getvisibleflatcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getVisibleFlatColumns: () => Column<TData, unknown>[]\n /**\n * Returns a flat array of leaf-node columns that are visible.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getvisibleleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getVisibleLeafColumns: () => Column<TData, unknown>[]\n /**\n * Resets the column visibility state to the initial state. If `defaultState` is provided, the state will be reset to `{}`\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#resetcolumnvisibility)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n resetColumnVisibility: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.columnVisibility` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#setcolumnvisibility)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n setColumnVisibility: (updater: Updater<VisibilityState>) => void\n /**\n * Toggles the visibility of all columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#toggleallcolumnsvisible)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n toggleAllColumnsVisible: (value?: boolean) => void\n}\n\nexport interface VisibilityColumnDef {\n enableHiding?: boolean\n}\n\nexport interface VisibilityRow<TData extends RowData> {\n _getAllVisibleCells: () => Cell<TData, unknown>[]\n /**\n * Returns an array of cells that account for column visibility for the row.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getvisiblecells)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getVisibleCells: () => Cell<TData, unknown>[]\n}\n\nexport interface VisibilityColumn {\n /**\n * Returns whether the column can be hidden\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getcanhide)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getCanHide: () => boolean\n /**\n * Returns whether the column is visible\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#getisvisible)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getIsVisible: () => boolean\n /**\n * Returns a function that can be used to toggle the column visibility. This function can be used to bind to an event handler to a checkbox.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#gettogglevisibilityhandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n getToggleVisibilityHandler: () => (event: unknown) => void\n /**\n * Toggles the visibility of the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#togglevisibility)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)\n */\n toggleVisibility: (value?: boolean) => void\n}\n\n//\n\nexport const ColumnVisibility: TableFeature = {\n getInitialState: (state): VisibilityTableState => {\n return {\n columnVisibility: {},\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): VisibilityDefaultOptions => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table),\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): void => {\n column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value ?? !column.getIsVisible(),\n }))\n }\n }\n column.getIsVisible = () => {\n const childColumns = column.columns\n return (\n (childColumns.length\n ? childColumns.some(c => c.getIsVisible())\n : table.getState().columnVisibility?.[column.id]) ?? true\n )\n }\n\n column.getCanHide = () => {\n return (\n (column.columnDef.enableHiding ?? true) &&\n (table.options.enableHiding ?? true)\n )\n }\n column.getToggleVisibilityHandler = () => {\n return (e: unknown) => {\n column.toggleVisibility?.(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): void => {\n row._getAllVisibleCells = memo(\n () => [row.getAllCells(), table.getState().columnVisibility],\n cells => {\n return cells.filter(cell => cell.column.getIsVisible())\n },\n getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells')\n )\n row.getVisibleCells = memo(\n () => [\n row.getLeftVisibleCells(),\n row.getCenterVisibleCells(),\n row.getRightVisibleCells(),\n ],\n (left, center, right) => [...left, ...center, ...right],\n getMemoOptions(table.options, 'debugRows', 'getVisibleCells')\n )\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n const makeVisibleColumnsMethod = (\n key: string,\n getColumns: () => Column<TData, unknown>[]\n ): (() => Column<TData, unknown>[]) => {\n return memo(\n () => [\n getColumns(),\n getColumns()\n .filter(d => d.getIsVisible())\n .map(d => d.id)\n .join('_'),\n ],\n columns => {\n return columns.filter(d => d.getIsVisible?.())\n },\n getMemoOptions(table.options, 'debugColumns', key)\n )\n }\n\n table.getVisibleFlatColumns = makeVisibleColumnsMethod(\n 'getVisibleFlatColumns',\n () => table.getAllFlatColumns()\n )\n table.getVisibleLeafColumns = makeVisibleColumnsMethod(\n 'getVisibleLeafColumns',\n () => table.getAllLeafColumns()\n )\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod(\n 'getLeftVisibleLeafColumns',\n () => table.getLeftLeafColumns()\n )\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod(\n 'getRightVisibleLeafColumns',\n () => table.getRightLeafColumns()\n )\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod(\n 'getCenterVisibleLeafColumns',\n () => table.getCenterLeafColumns()\n )\n\n table.setColumnVisibility = updater =>\n table.options.onColumnVisibilityChange?.(updater)\n\n table.resetColumnVisibility = defaultState => {\n table.setColumnVisibility(\n defaultState ? {} : table.initialState.columnVisibility ?? {}\n )\n }\n\n table.toggleAllColumnsVisible = value => {\n value = value ?? !table.getIsAllColumnsVisible()\n\n table.setColumnVisibility(\n table.getAllLeafColumns().reduce(\n (obj, column) => ({\n ...obj,\n [column.id]: !value ? !column.getCanHide?.() : value,\n }),\n {}\n )\n )\n }\n\n table.getIsAllColumnsVisible = () =>\n !table.getAllLeafColumns().some(column => !column.getIsVisible?.())\n\n table.getIsSomeColumnsVisible = () =>\n table.getAllLeafColumns().some(column => column.getIsVisible?.())\n\n table.getToggleAllColumnsVisibilityHandler = () => {\n return (e: unknown) => {\n table.toggleAllColumnsVisible(\n ((e as MouseEvent).target as HTMLInputElement)?.checked\n )\n }\n }\n },\n}\n\nexport function _getVisibleLeafColumns<TData extends RowData>(\n table: Table<TData>,\n position?: ColumnPinningPosition | 'center'\n) {\n return !position\n ? table.getVisibleLeafColumns()\n : position === 'center'\n ? table.getCenterVisibleLeafColumns()\n : position === 'left'\n ? table.getLeftVisibleLeafColumns()\n : table.getRightVisibleLeafColumns()\n}\n","import { RowModel } from '..'\nimport { Table, RowData, TableFeature } from '../types'\n\nexport interface GlobalFacetingInstance<TData extends RowData> {\n _getGlobalFacetedMinMaxValues?: () => undefined | [number, number]\n _getGlobalFacetedRowModel?: () => RowModel<TData>\n _getGlobalFacetedUniqueValues?: () => Map<any, number>\n /**\n * Currently, this function returns the built-in `includesString` filter function. In future releases, it may return more dynamic filter functions based on the nature of the data provided.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-faceting#getglobalautofilterfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-faceting)\n */\n getGlobalFacetedMinMaxValues: () => undefined | [number, number]\n /**\n * Returns the row model for the table after **global** filtering has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-faceting#getglobalfacetedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-faceting)\n */\n getGlobalFacetedRowModel: () => RowModel<TData>\n /**\n * Returns the faceted unique values for the global filter.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-faceting#getglobalfaceteduniquevalues)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-faceting)\n */\n getGlobalFacetedUniqueValues: () => Map<any, number>\n}\n\n//\n\nexport const GlobalFaceting: TableFeature = {\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table._getGlobalFacetedRowModel =\n table.options.getFacetedRowModel &&\n table.options.getFacetedRowModel(table, '__global__')\n\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel()\n }\n\n return table._getGlobalFacetedRowModel()\n }\n\n table._getGlobalFacetedUniqueValues =\n table.options.getFacetedUniqueValues &&\n table.options.getFacetedUniqueValues(table, '__global__')\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map()\n }\n\n return table._getGlobalFacetedUniqueValues()\n }\n\n table._getGlobalFacetedMinMaxValues =\n table.options.getFacetedMinMaxValues &&\n table.options.getFacetedMinMaxValues(table, '__global__')\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return\n }\n\n return table._getGlobalFacetedMinMaxValues()\n }\n },\n}\n","import { FilterFn, FilterFnOption } from '..'\nimport { BuiltInFilterFn, filterFns } from '../filterFns'\nimport {\n Column,\n OnChangeFn,\n Table,\n Updater,\n RowData,\n TableFeature,\n} from '../types'\nimport { isFunction, makeStateUpdater } from '../utils'\n\nexport interface GlobalFilterTableState {\n globalFilter: any\n}\n\nexport interface GlobalFilterColumnDef {\n /**\n * Enables/disables the **global** filter for this column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#enableglobalfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n enableGlobalFilter?: boolean\n}\n\nexport interface GlobalFilterColumn {\n /**\n * Returns whether or not the column can be **globally** filtered. Set to `false` to disable a column from being scanned during global filtering.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#getcanglobalfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n getCanGlobalFilter: () => boolean\n}\n\nexport interface GlobalFilterOptions<TData extends RowData> {\n /**\n * Enables/disables **global** filtering for all columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#enableglobalfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n enableGlobalFilter?: boolean\n /**\n * If provided, this function will be called with the column and should return `true` or `false` to indicate whether this column should be used for global filtering.\n *\n * This is useful if the column can contain data that is not `string` or `number` (i.e. `undefined`).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#getcolumncanglobalfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n getColumnCanGlobalFilter?: (column: Column<TData, unknown>) => boolean\n /**\n * The filter function to use for global filtering.\n * - A `string` referencing a built-in filter function\n * - A `string` that references a custom filter functions provided via the `tableOptions.filterFns` option\n * - A custom filter function\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#globalfilterfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n globalFilterFn?: FilterFnOption<TData>\n /**\n * If provided, this function will be called with an `updaterFn` when `state.globalFilter` changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#onglobalfilterchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n onGlobalFilterChange?: OnChangeFn<any>\n}\n\nexport interface GlobalFilterInstance<TData extends RowData> {\n /**\n * Currently, this function returns the built-in `includesString` filter function. In future releases, it may return more dynamic filter functions based on the nature of the data provided.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#getglobalautofilterfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n getGlobalAutoFilterFn: () => FilterFn<TData> | undefined\n /**\n * Returns the filter function (either user-defined or automatic, depending on configuration) for the global filter.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#getglobalfilterfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n getGlobalFilterFn: () => FilterFn<TData> | undefined\n /**\n * Resets the **globalFilter** state to `initialState.globalFilter`, or `true` can be passed to force a default blank state reset to `undefined`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#resetglobalfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n resetGlobalFilter: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.globalFilter` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#setglobalfilter)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)\n */\n setGlobalFilter: (updater: Updater<any>) => void\n}\n\n//\n\nexport const GlobalFiltering: TableFeature = {\n getInitialState: (state): GlobalFilterTableState => {\n return {\n globalFilter: undefined,\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): GlobalFilterOptions<TData> => {\n return {\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n const value = table\n .getCoreRowModel()\n .flatRows[0]?._getAllCellsByColumnId()\n [column.id]?.getValue()\n\n return typeof value === 'string' || typeof value === 'number'\n },\n } as GlobalFilterOptions<TData>\n },\n\n createColumn: <TData extends RowData>(\n column: Column<TData, unknown>,\n table: Table<TData>\n ): void => {\n column.getCanGlobalFilter = () => {\n return (\n (column.columnDef.enableGlobalFilter ?? true) &&\n (table.options.enableGlobalFilter ?? true) &&\n (table.options.enableFilters ?? true) &&\n (table.options.getColumnCanGlobalFilter?.(column) ?? true) &&\n !!column.accessorFn\n )\n }\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString\n }\n\n table.getGlobalFilterFn = () => {\n const { globalFilterFn: globalFilterFn } = table.options\n\n return isFunction(globalFilterFn)\n ? globalFilterFn\n : globalFilterFn === 'auto'\n ? table.getGlobalAutoFilterFn()\n : table.options.filterFns?.[globalFilterFn as string] ??\n filterFns[globalFilterFn as BuiltInFilterFn]\n }\n\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange?.(updater)\n }\n\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(\n defaultState ? undefined : table.initialState.globalFilter\n )\n }\n },\n}\n","import { RowModel } from '..'\nimport {\n OnChangeFn,\n Table,\n Row,\n Updater,\n RowData,\n TableFeature,\n} from '../types'\nimport { makeStateUpdater } from '../utils'\n\nexport type ExpandedStateList = Record<string, boolean>\nexport type ExpandedState = true | Record<string, boolean>\nexport interface ExpandedTableState {\n expanded: ExpandedState\n}\n\nexport interface ExpandedRow {\n /**\n * Returns whether the row can be expanded.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getcanexpand)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getCanExpand: () => boolean\n /**\n * Returns whether all parent rows of the row are expanded.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getisallparentsexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getIsAllParentsExpanded: () => boolean\n /**\n * Returns whether the row is expanded.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getisexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getIsExpanded: () => boolean\n /**\n * Returns a function that can be used to toggle the expanded state of the row. This function can be used to bind to an event handler to a button.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#gettoggleexpandedhandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getToggleExpandedHandler: () => () => void\n /**\n * Toggles the expanded state (or sets it if `expanded` is provided) for the row.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#toggleexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n toggleExpanded: (expanded?: boolean) => void\n}\n\nexport interface ExpandedOptions<TData extends RowData> {\n /**\n * Enable this setting to automatically reset the expanded state of the table when expanding state changes.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#autoresetexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n autoResetExpanded?: boolean\n /**\n * Enable/disable expanding for all rows.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#enableexpanding)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n enableExpanding?: boolean\n /**\n * This function is responsible for returning the expanded row model. If this function is not provided, the table will not expand rows. You can use the default exported `getExpandedRowModel` function to get the expanded row model or implement your own.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getexpandedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getExpandedRowModel?: (table: Table<any>) => () => RowModel<any>\n /**\n * If provided, allows you to override the default behavior of determining whether a row is currently expanded.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getisrowexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getIsRowExpanded?: (row: Row<TData>) => boolean\n /**\n * If provided, allows you to override the default behavior of determining whether a row can be expanded.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getrowcanexpand)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getRowCanExpand?: (row: Row<TData>) => boolean\n /**\n * Enables manual row expansion. If this is set to `true`, `getExpandedRowModel` will not be used to expand rows and you would be expected to perform the expansion in your own data model. This is useful if you are doing server-side expansion.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#manualexpanding)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n manualExpanding?: boolean\n /**\n * This function is called when the `expanded` table state changes. If a function is provided, you will be responsible for managing this state on your own. To pass the managed state back to the table, use the `tableOptions.state.expanded` option.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#onexpandedchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n onExpandedChange?: OnChangeFn<ExpandedState>\n /**\n * If `true` expanded rows will be paginated along with the rest of the table (which means expanded rows may span multiple pages). If `false` expanded rows will not be considered for pagination (which means expanded rows will always render on their parents page. This also means more rows will be rendered than the set page size)\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#paginateexpandedrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n paginateExpandedRows?: boolean\n}\n\nexport interface ExpandedInstance<TData extends RowData> {\n _autoResetExpanded: () => void\n _getExpandedRowModel?: () => RowModel<TData>\n /**\n * Returns whether there are any rows that can be expanded.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getcansomerowsexpand)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getCanSomeRowsExpand: () => boolean\n /**\n * Returns the maximum depth of the expanded rows.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getexpandeddepth)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getExpandedDepth: () => number\n /**\n * Returns the row model after expansion has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getexpandedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getExpandedRowModel: () => RowModel<TData>\n /**\n * Returns whether all rows are currently expanded.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getisallrowsexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getIsAllRowsExpanded: () => boolean\n /**\n * Returns whether there are any rows that are currently expanded.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getissomerowsexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getIsSomeRowsExpanded: () => boolean\n /**\n * Returns the row model before expansion has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#getpreexpandedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getPreExpandedRowModel: () => RowModel<TData>\n /**\n * Returns a handler that can be used to toggle the expanded state of all rows. This handler is meant to be used with an `input[type=checkbox]` element.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#gettoggleallrowsexpandedhandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n getToggleAllRowsExpandedHandler: () => (event: unknown) => void\n /**\n * Resets the expanded state of the table to the initial state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#resetexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n resetExpanded: (defaultState?: boolean) => void\n /**\n * Updates the expanded state of the table via an update function or value.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#setexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n setExpanded: (updater: Updater<ExpandedState>) => void\n /**\n * Toggles the expanded state for all rows.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#toggleallrowsexpanded)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)\n */\n toggleAllRowsExpanded: (expanded?: boolean) => void\n}\n\n//\n\nexport const RowExpanding: TableFeature = {\n getInitialState: (state): ExpandedTableState => {\n return {\n expanded: {},\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): ExpandedOptions<TData> => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true,\n }\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n let registered = false\n let queued = false\n\n table._autoResetExpanded = () => {\n if (!registered) {\n table._queue(() => {\n registered = true\n })\n return\n }\n\n if (\n table.options.autoResetAll ??\n table.options.autoResetExpanded ??\n !table.options.manualExpanding\n ) {\n if (queued) return\n queued = true\n table._queue(() => {\n table.resetExpanded()\n queued = false\n })\n }\n }\n table.setExpanded = updater => table.options.onExpandedChange?.(updater)\n table.toggleAllRowsExpanded = expanded => {\n if (expanded ?? !table.getIsAllRowsExpanded()) {\n table.setExpanded(true)\n } else {\n table.setExpanded({})\n }\n }\n table.resetExpanded = defaultState => {\n table.setExpanded(defaultState ? {} : table.initialState?.expanded ?? {})\n }\n table.getCanSomeRowsExpand = () => {\n return table\n .getPrePaginationRowModel()\n .flatRows.some(row => row.getCanExpand())\n }\n table.getToggleAllRowsExpandedHandler = () => {\n return (e: unknown) => {\n ;(e as any).persist?.()\n table.toggleAllRowsExpanded()\n }\n }\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded\n return expanded === true || Object.values(expanded).some(Boolean)\n }\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true\n }\n\n if (!Object.keys(expanded).length) {\n return false\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false\n }\n\n // They must all be expanded :shrug:\n return true\n }\n table.getExpandedDepth = () => {\n let maxDepth = 0\n\n const rowIds =\n table.getState().expanded === true\n ? Object.keys(table.getRowModel().rowsById)\n : Object.keys(table.getState().expanded)\n\n rowIds.forEach(id => {\n const splitId = id.split('.')\n maxDepth = Math.max(maxDepth, splitId.length)\n })\n\n return maxDepth\n }\n table.getPreExpandedRowModel = () => table.getSortedRowModel()\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table)\n }\n\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel()\n }\n\n return table._getExpandedRowModel()\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): void => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n const exists = old === true ? true : !!old?.[row.id]\n\n let oldExpanded: ExpandedStateList = {}\n\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true\n })\n } else {\n oldExpanded = old\n }\n\n expanded = expanded ?? !exists\n\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true,\n }\n }\n\n if (exists && !expanded) {\n const { [row.id]: _, ...rest } = oldExpanded\n return rest\n }\n\n return old\n })\n }\n row.getIsExpanded = () => {\n const expanded = table.getState().expanded\n\n return !!(\n table.options.getIsRowExpanded?.(row) ??\n (expanded === true || expanded?.[row.id])\n )\n }\n row.getCanExpand = () => {\n return (\n table.options.getRowCanExpand?.(row) ??\n ((table.options.enableExpanding ?? true) && !!row.subRows?.length)\n )\n }\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true\n let currentRow = row\n\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true)\n isFullyExpanded = currentRow.getIsExpanded()\n }\n\n return isFullyExpanded\n }\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand()\n\n return () => {\n if (!canExpand) return\n row.toggleExpanded()\n }\n }\n },\n}\n","import {\n OnChangeFn,\n Table,\n RowModel,\n Updater,\n RowData,\n TableFeature,\n} from '../types'\nimport {\n functionalUpdate,\n getMemoOptions,\n makeStateUpdater,\n memo,\n} from '../utils'\n\nexport interface PaginationState {\n pageIndex: number\n pageSize: number\n}\n\nexport interface PaginationTableState {\n pagination: PaginationState\n}\n\nexport interface PaginationInitialTableState {\n pagination?: Partial<PaginationState>\n}\n\nexport interface PaginationOptions {\n /**\n * If set to `true`, pagination will be reset to the first page when page-altering state changes eg. `data` is updated, filters change, grouping changes, etc.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#autoresetpageindex)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n autoResetPageIndex?: boolean\n /**\n * Returns the row model after pagination has taken place, but no further.\n *\n * Pagination columns are automatically reordered by default to the start of the columns list. If you would rather remove them or leave them as-is, set the appropriate mode here.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#getpaginationrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n getPaginationRowModel?: (table: Table<any>) => () => RowModel<any>\n /**\n * Enables manual pagination. If this option is set to `true`, the table will not automatically paginate rows using `getPaginationRowModel()` and instead will expect you to manually paginate the rows before passing them to the table. This is useful if you are doing server-side pagination and aggregation.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#manualpagination)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n manualPagination?: boolean\n /**\n * If this function is provided, it will be called when the pagination state changes and you will be expected to manage the state yourself. You can pass the managed state back to the table via the `tableOptions.state.pagination` option.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#onpaginationchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n onPaginationChange?: OnChangeFn<PaginationState>\n /**\n * When manually controlling pagination, you can supply a total `pageCount` value to the table if you know it (Or supply a `rowCount` and `pageCount` will be calculated). If you do not know how many pages there are, you can set this to `-1`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#pagecount)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n pageCount?: number\n /**\n * When manually controlling pagination, you can supply a total `rowCount` value to the table if you know it. The `pageCount` can be calculated from this value and the `pageSize`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#rowcount)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n rowCount?: number\n}\n\nexport interface PaginationDefaultOptions {\n onPaginationChange: OnChangeFn<PaginationState>\n}\n\nexport interface PaginationInstance<TData extends RowData> {\n _autoResetPageIndex: () => void\n _getPaginationRowModel?: () => RowModel<TData>\n /**\n * Returns whether the table can go to the next page.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#getcannextpage)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n getCanNextPage: () => boolean\n /**\n * Returns whether the table can go to the previous page.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#getcanpreviouspage)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n getCanPreviousPage: () => boolean\n /**\n * Returns the page count. If manually paginating or controlling the pagination state, this will come directly from the `options.pageCount` table option, otherwise it will be calculated from the table data using the total row count and current page size.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#getpagecount)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n getPageCount: () => number\n /**\n * Returns the row count. If manually paginating or controlling the pagination state, this will come directly from the `options.rowCount` table option, otherwise it will be calculated from the table data.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#getrowcount)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n getRowCount: () => number\n /**\n * Returns an array of page options (zero-index-based) for the current page size.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#getpageoptions)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n getPageOptions: () => number[]\n /**\n * Returns the row model for the table after pagination has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#getpaginationrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n getPaginationRowModel: () => RowModel<TData>\n /**\n * Returns the row model for the table before any pagination has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#getprepaginationrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n getPrePaginationRowModel: () => RowModel<TData>\n /**\n * Increments the page index by one, if possible.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#nextpage)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n nextPage: () => void\n /**\n * Decrements the page index by one, if possible.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#previouspage)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n previousPage: () => void\n /**\n * Sets the page index to `0`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#firstpage)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n firstPage: () => void\n /**\n * Sets the page index to the last page.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#lastpage)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n lastPage: () => void\n /**\n * Resets the page index to its initial state. If `defaultState` is `true`, the page index will be reset to `0` regardless of initial state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#resetpageindex)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n resetPageIndex: (defaultState?: boolean) => void\n /**\n * Resets the page size to its initial state. If `defaultState` is `true`, the page size will be reset to `10` regardless of initial state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#resetpagesize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n resetPageSize: (defaultState?: boolean) => void\n /**\n * Resets the **pagination** state to `initialState.pagination`, or `true` can be passed to force a default blank state reset to `[]`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#resetpagination)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n resetPagination: (defaultState?: boolean) => void\n /**\n * @deprecated The page count no longer exists in the pagination state. Just pass as a table option instead.\n */\n setPageCount: (updater: Updater<number>) => void\n /**\n * Updates the page index using the provided function or value in the `state.pagination.pageIndex` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#setpageindex)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n setPageIndex: (updater: Updater<number>) => void\n /**\n * Updates the page size using the provided function or value in the `state.pagination.pageSize` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#setpagesize)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n setPageSize: (updater: Updater<number>) => void\n /**\n * Sets or updates the `state.pagination` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#setpagination)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)\n */\n setPagination: (updater: Updater<PaginationState>) => void\n}\n\n//\n\nconst defaultPageIndex = 0\nconst defaultPageSize = 10\n\nconst getDefaultPaginationState = (): PaginationState => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize,\n})\n\nexport const RowPagination: TableFeature = {\n getInitialState: (state): PaginationTableState => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...state?.pagination,\n },\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): PaginationDefaultOptions => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table),\n }\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n let registered = false\n let queued = false\n\n table._autoResetPageIndex = () => {\n if (!registered) {\n table._queue(() => {\n registered = true\n })\n return\n }\n\n if (\n table.options.autoResetAll ??\n table.options.autoResetPageIndex ??\n !table.options.manualPagination\n ) {\n if (queued) return\n queued = true\n table._queue(() => {\n table.resetPageIndex()\n queued = false\n })\n }\n }\n table.setPagination = updater => {\n const safeUpdater: Updater<PaginationState> = old => {\n let newState = functionalUpdate(updater, old)\n\n return newState\n }\n\n return table.options.onPaginationChange?.(safeUpdater)\n }\n table.resetPagination = defaultState => {\n table.setPagination(\n defaultState\n ? getDefaultPaginationState()\n : table.initialState.pagination ?? getDefaultPaginationState()\n )\n }\n table.setPageIndex = updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex)\n\n const maxPageIndex =\n typeof table.options.pageCount === 'undefined' ||\n table.options.pageCount === -1\n ? Number.MAX_SAFE_INTEGER\n : table.options.pageCount - 1\n\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex))\n\n return {\n ...old,\n pageIndex,\n }\n })\n }\n table.resetPageIndex = defaultState => {\n table.setPageIndex(\n defaultState\n ? defaultPageIndex\n : table.initialState?.pagination?.pageIndex ?? defaultPageIndex\n )\n }\n table.resetPageSize = defaultState => {\n table.setPageSize(\n defaultState\n ? defaultPageSize\n : table.initialState?.pagination?.pageSize ?? defaultPageSize\n )\n }\n table.setPageSize = updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize))\n const topRowIndex = old.pageSize * old.pageIndex!\n const pageIndex = Math.floor(topRowIndex / pageSize)\n\n return {\n ...old,\n pageIndex,\n pageSize,\n }\n })\n }\n //deprecated\n table.setPageCount = updater =>\n table.setPagination(old => {\n let newPageCount = functionalUpdate(\n updater,\n table.options.pageCount ?? -1\n )\n\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount)\n }\n\n return {\n ...old,\n pageCount: newPageCount,\n }\n })\n\n table.getPageOptions = memo(\n () => [table.getPageCount()],\n pageCount => {\n let pageOptions: number[] = []\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i)\n }\n return pageOptions\n },\n getMemoOptions(table.options, 'debugTable', 'getPageOptions')\n )\n\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0\n\n table.getCanNextPage = () => {\n const { pageIndex } = table.getState().pagination\n\n const pageCount = table.getPageCount()\n\n if (pageCount === -1) {\n return true\n }\n\n if (pageCount === 0) {\n return false\n }\n\n return pageIndex < pageCount - 1\n }\n\n table.previousPage = () => {\n return table.setPageIndex(old => old - 1)\n }\n\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1\n })\n }\n\n table.firstPage = () => {\n return table.setPageIndex(0)\n }\n\n table.lastPage = () => {\n return table.setPageIndex(table.getPageCount() - 1)\n }\n\n table.getPrePaginationRowModel = () => table.getExpandedRowModel()\n table.getPaginationRowModel = () => {\n if (\n !table._getPaginationRowModel &&\n table.options.getPaginationRowModel\n ) {\n table._getPaginationRowModel =\n table.options.getPaginationRowModel(table)\n }\n\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel()\n }\n\n return table._getPaginationRowModel()\n }\n\n table.getPageCount = () => {\n return (\n table.options.pageCount ??\n Math.ceil(table.getRowCount() / table.getState().pagination.pageSize)\n )\n }\n\n table.getRowCount = () => {\n return (\n table.options.rowCount ?? table.getPrePaginationRowModel().rows.length\n )\n }\n },\n}\n","import {\n OnChangeFn,\n Updater,\n Table,\n Row,\n RowData,\n TableFeature,\n} from '../types'\nimport { getMemoOptions, makeStateUpdater, memo } from '../utils'\n\nexport type RowPinningPosition = false | 'top' | 'bottom'\n\nexport interface RowPinningState {\n bottom?: string[]\n top?: string[]\n}\n\nexport interface RowPinningTableState {\n rowPinning: RowPinningState\n}\n\nexport interface RowPinningOptions<TData extends RowData> {\n /**\n * Enables/disables row pinning for the table. Defaults to `true`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#enablerowpinning)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n enableRowPinning?: boolean | ((row: Row<TData>) => boolean)\n /**\n * When `false`, pinned rows will not be visible if they are filtered or paginated out of the table. When `true`, pinned rows will always be visible regardless of filtering or pagination. Defaults to `true`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#keeppinnedrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n keepPinnedRows?: boolean\n /**\n * If provided, this function will be called with an `updaterFn` when `state.rowPinning` changes. This overrides the default internal state management, so you will also need to supply `state.rowPinning` from your own managed state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#onrowpinningchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/onrowpinningchange)\n */\n onRowPinningChange?: OnChangeFn<RowPinningState>\n}\n\nexport interface RowPinningDefaultOptions {\n onRowPinningChange: OnChangeFn<RowPinningState>\n}\n\nexport interface RowPinningRow {\n /**\n * Returns whether or not the row can be pinned.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#getcanpin-1)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n getCanPin: () => boolean\n /**\n * Returns the pinned position of the row. (`'top'`, `'bottom'` or `false`)\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#getispinned-1)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n getIsPinned: () => RowPinningPosition\n /**\n * Returns the numeric pinned index of the row within a pinned row group.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#getpinnedindex-1)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n getPinnedIndex: () => number\n /**\n * Pins a row to the `'top'` or `'bottom'`, or unpins the row to the center if `false` is passed.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#pin-1)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n pin: (\n position: RowPinningPosition,\n includeLeafRows?: boolean,\n includeParentRows?: boolean\n ) => void\n}\n\nexport interface RowPinningInstance<TData extends RowData> {\n _getPinnedRows: (\n visiblePinnedRows: Array<Row<TData>>,\n pinnedRowIds: Array<string> | undefined,\n position: 'top' | 'bottom'\n ) => Row<TData>[]\n /**\n * Returns all bottom pinned rows.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#getbottomrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n getBottomRows: () => Row<TData>[]\n /**\n * Returns all rows that are not pinned to the top or bottom.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#getcenterrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n getCenterRows: () => Row<TData>[]\n /**\n * Returns whether or not any rows are pinned. Optionally specify to only check for pinned rows in either the `top` or `bottom` position.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#getissomerowspinned)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n getIsSomeRowsPinned: (position?: RowPinningPosition) => boolean\n /**\n * Returns all top pinned rows.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#gettoprows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n getTopRows: () => Row<TData>[]\n /**\n * Resets the **rowPinning** state to `initialState.rowPinning`, or `true` can be passed to force a default blank state reset to `{ top: [], bottom: [], }`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#resetrowpinning)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n resetRowPinning: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.rowPinning` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#setrowpinning)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)\n */\n setRowPinning: (updater: Updater<RowPinningState>) => void\n}\n\n//\n\nconst getDefaultRowPinningState = (): RowPinningState => ({\n top: [],\n bottom: [],\n})\n\nexport const RowPinning: TableFeature = {\n getInitialState: (state): RowPinningTableState => {\n return {\n rowPinning: getDefaultRowPinningState(),\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): RowPinningDefaultOptions => {\n return {\n onRowPinningChange: makeStateUpdater('rowPinning', table),\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): void => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows\n ? row.getLeafRows().map(({ id }) => id)\n : []\n const parentRowIds = includeParentRows\n ? row.getParentRows().map(({ id }) => id)\n : []\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds])\n\n table.setRowPinning(old => {\n if (position === 'bottom') {\n return {\n top: (old?.top ?? []).filter(d => !rowIds?.has(d)),\n bottom: [\n ...(old?.bottom ?? []).filter(d => !rowIds?.has(d)),\n ...Array.from(rowIds),\n ],\n }\n }\n\n if (position === 'top') {\n return {\n top: [\n ...(old?.top ?? []).filter(d => !rowIds?.has(d)),\n ...Array.from(rowIds),\n ],\n bottom: (old?.bottom ?? []).filter(d => !rowIds?.has(d)),\n }\n }\n\n return {\n top: (old?.top ?? []).filter(d => !rowIds?.has(d)),\n bottom: (old?.bottom ?? []).filter(d => !rowIds?.has(d)),\n }\n })\n }\n row.getCanPin = () => {\n const { enableRowPinning, enablePinning } = table.options\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row)\n }\n return enableRowPinning ?? enablePinning ?? true\n }\n row.getIsPinned = () => {\n const rowIds = [row.id]\n\n const { top, bottom } = table.getState().rowPinning\n\n const isTop = rowIds.some(d => top?.includes(d))\n const isBottom = rowIds.some(d => bottom?.includes(d))\n\n return isTop ? 'top' : isBottom ? 'bottom' : false\n }\n row.getPinnedIndex = () => {\n const position = row.getIsPinned()\n if (!position) return -1\n\n const visiblePinnedRowIds = (\n position === 'top' ? table.getTopRows() : table.getBottomRows()\n )?.map(({ id }) => id)\n\n return visiblePinnedRowIds?.indexOf(row.id) ?? -1\n }\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table.setRowPinning = updater => table.options.onRowPinningChange?.(updater)\n\n table.resetRowPinning = defaultState =>\n table.setRowPinning(\n defaultState\n ? getDefaultRowPinningState()\n : table.initialState?.rowPinning ?? getDefaultRowPinningState()\n )\n\n table.getIsSomeRowsPinned = position => {\n const pinningState = table.getState().rowPinning\n\n if (!position) {\n return Boolean(pinningState.top?.length || pinningState.bottom?.length)\n }\n return Boolean(pinningState[position]?.length)\n }\n\n table._getPinnedRows = (visibleRows, pinnedRowIds, position) => {\n const rows =\n table.options.keepPinnedRows ?? true\n ? //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds ?? []).map(rowId => {\n const row = table.getRow(rowId, true)\n return row.getIsAllParentsExpanded() ? row : null\n })\n : //else get only visible rows that are pinned\n (pinnedRowIds ?? []).map(\n rowId => visibleRows.find(row => row.id === rowId)!\n )\n\n return rows.filter(Boolean).map(d => ({ ...d, position })) as Row<TData>[]\n }\n\n table.getTopRows = memo(\n () => [table.getRowModel().rows, table.getState().rowPinning.top],\n (allRows, topPinnedRowIds) =>\n table._getPinnedRows(allRows, topPinnedRowIds, 'top'),\n getMemoOptions(table.options, 'debugRows', 'getTopRows')\n )\n\n table.getBottomRows = memo(\n () => [table.getRowModel().rows, table.getState().rowPinning.bottom],\n (allRows, bottomPinnedRowIds) =>\n table._getPinnedRows(allRows, bottomPinnedRowIds, 'bottom'),\n getMemoOptions(table.options, 'debugRows', 'getBottomRows')\n )\n\n table.getCenterRows = memo(\n () => [\n table.getRowModel().rows,\n table.getState().rowPinning.top,\n table.getState().rowPinning.bottom,\n ],\n (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top ?? []), ...(bottom ?? [])])\n return allRows.filter(d => !topAndBottom.has(d.id))\n },\n getMemoOptions(table.options, 'debugRows', 'getCenterRows')\n )\n },\n}\n","import {\n OnChangeFn,\n Table,\n Row,\n RowModel,\n Updater,\n RowData,\n TableFeature,\n} from '../types'\nimport { getMemoOptions, makeStateUpdater, memo } from '../utils'\n\nexport type RowSelectionState = Record<string, boolean>\n\nexport interface RowSelectionTableState {\n rowSelection: RowSelectionState\n}\n\nexport interface RowSelectionOptions<TData extends RowData> {\n /**\n * - Enables/disables multiple row selection for all rows in the table OR\n * - A function that given a row, returns whether to enable/disable multiple row selection for that row's children/grandchildren\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#enablemultirowselection)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n enableMultiRowSelection?: boolean | ((row: Row<TData>) => boolean)\n /**\n * - Enables/disables row selection for all rows in the table OR\n * - A function that given a row, returns whether to enable/disable row selection for that row\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#enablerowselection)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n enableRowSelection?: boolean | ((row: Row<TData>) => boolean)\n /**\n * Enables/disables automatic sub-row selection when a parent row is selected, or a function that enables/disables automatic sub-row selection for each row.\n * (Use in combination with expanding or grouping features)\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#enablesubrowselection)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n enableSubRowSelection?: boolean | ((row: Row<TData>) => boolean)\n /**\n * If provided, this function will be called with an `updaterFn` when `state.rowSelection` changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#onrowselectionchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n onRowSelectionChange?: OnChangeFn<RowSelectionState>\n // enableGroupingRowSelection?:\n // | boolean\n // | ((\n // row: Row<TData>\n // ) => boolean)\n // isAdditiveSelectEvent?: (e: unknown) => boolean\n // isInclusiveSelectEvent?: (e: unknown) => boolean\n // selectRowsFn?: (\n // table: Table<TData>,\n // rowModel: RowModel<TData>\n // ) => RowModel<TData>\n}\n\nexport interface RowSelectionRow {\n /**\n * Returns whether or not the row can multi-select.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getcanmultiselect)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getCanMultiSelect: () => boolean\n /**\n * Returns whether or not the row can be selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getcanselect)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getCanSelect: () => boolean\n /**\n * Returns whether or not the row can select sub rows automatically when the parent row is selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getcanselectsubrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getCanSelectSubRows: () => boolean\n /**\n * Returns whether or not all of the row's sub rows are selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getisallsubrowsselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getIsAllSubRowsSelected: () => boolean\n /**\n * Returns whether or not the row is selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getisselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getIsSelected: () => boolean\n /**\n * Returns whether or not some of the row's sub rows are selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getissomeselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getIsSomeSelected: () => boolean\n /**\n * Returns a handler that can be used to toggle the row.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#gettoggleselectedhandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getToggleSelectedHandler: () => (event: unknown) => void\n /**\n * Selects/deselects the row.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#toggleselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n toggleSelected: (value?: boolean, opts?: { selectChildren?: boolean }) => void\n}\n\nexport interface RowSelectionInstance<TData extends RowData> {\n /**\n * Returns the row model of all rows that are selected after filtering has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getfilteredselectedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getFilteredSelectedRowModel: () => RowModel<TData>\n /**\n * Returns the row model of all rows that are selected after grouping has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getgroupedselectedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getGroupedSelectedRowModel: () => RowModel<TData>\n /**\n * Returns whether or not all rows on the current page are selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getisallpagerowsselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getIsAllPageRowsSelected: () => boolean\n /**\n * Returns whether or not all rows in the table are selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getisallrowsselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getIsAllRowsSelected: () => boolean\n /**\n * Returns whether or not any rows on the current page are selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getissomepagerowsselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getIsSomePageRowsSelected: () => boolean\n /**\n * Returns whether or not any rows in the table are selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getissomerowsselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getIsSomeRowsSelected: () => boolean\n /**\n * Returns the core row model of all rows before row selection has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getpreselectedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getPreSelectedRowModel: () => RowModel<TData>\n /**\n * Returns the row model of all rows that are selected.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getselectedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getSelectedRowModel: () => RowModel<TData>\n /**\n * Returns a handler that can be used to toggle all rows on the current page.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#gettoggleallpagerowsselectedhandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getToggleAllPageRowsSelectedHandler: () => (event: unknown) => void\n /**\n * Returns a handler that can be used to toggle all rows in the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#gettoggleallrowsselectedhandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n getToggleAllRowsSelectedHandler: () => (event: unknown) => void\n /**\n * Resets the **rowSelection** state to the `initialState.rowSelection`, or `true` can be passed to force a default blank state reset to `{}`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#resetrowselection)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n resetRowSelection: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.rowSelection` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#setrowselection)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n setRowSelection: (updater: Updater<RowSelectionState>) => void\n /**\n * Selects/deselects all rows on the current page.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#toggleallpagerowsselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n toggleAllPageRowsSelected: (value?: boolean) => void\n /**\n * Selects/deselects all rows in the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#toggleallrowsselected)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)\n */\n toggleAllRowsSelected: (value?: boolean) => void\n}\n\n//\n\nexport const RowSelection: TableFeature = {\n getInitialState: (state): RowSelectionTableState => {\n return {\n rowSelection: {},\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): RowSelectionOptions<TData> => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true,\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n }\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table.setRowSelection = updater =>\n table.options.onRowSelectionChange?.(updater)\n table.resetRowSelection = defaultState =>\n table.setRowSelection(\n defaultState ? {} : table.initialState.rowSelection ?? {}\n )\n table.toggleAllRowsSelected = value => {\n table.setRowSelection(old => {\n value =\n typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected()\n\n const rowSelection = { ...old }\n\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return\n }\n rowSelection[row.id] = true\n })\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id]\n })\n }\n\n return rowSelection\n })\n }\n table.toggleAllPageRowsSelected = value =>\n table.setRowSelection(old => {\n const resolvedValue =\n typeof value !== 'undefined'\n ? value\n : !table.getIsAllPageRowsSelected()\n\n const rowSelection: RowSelectionState = { ...old }\n\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table)\n })\n\n return rowSelection\n })\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n table.getPreSelectedRowModel = () => table.getCoreRowModel()\n table.getSelectedRowModel = memo(\n () => [table.getState().rowSelection, table.getCoreRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(table, rowModel)\n },\n getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel')\n )\n\n table.getFilteredSelectedRowModel = memo(\n () => [table.getState().rowSelection, table.getFilteredRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(table, rowModel)\n },\n getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel')\n )\n\n table.getGroupedSelectedRowModel = memo(\n () => [table.getState().rowSelection, table.getSortedRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(table, rowModel)\n },\n getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel')\n )\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows\n const { rowSelection } = table.getState()\n\n let isAllRowsSelected = Boolean(\n preGroupedFlatRows.length && Object.keys(rowSelection).length\n )\n\n if (isAllRowsSelected) {\n if (\n preGroupedFlatRows.some(\n row => row.getCanSelect() && !rowSelection[row.id]\n )\n ) {\n isAllRowsSelected = false\n }\n }\n\n return isAllRowsSelected\n }\n\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table\n .getPaginationRowModel()\n .flatRows.filter(row => row.getCanSelect())\n const { rowSelection } = table.getState()\n\n let isAllPageRowsSelected = !!paginationFlatRows.length\n\n if (\n isAllPageRowsSelected &&\n paginationFlatRows.some(row => !rowSelection[row.id])\n ) {\n isAllPageRowsSelected = false\n }\n\n return isAllPageRowsSelected\n }\n\n table.getIsSomeRowsSelected = () => {\n const totalSelected = Object.keys(\n table.getState().rowSelection ?? {}\n ).length\n return (\n totalSelected > 0 &&\n totalSelected < table.getFilteredRowModel().flatRows.length\n )\n }\n\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows\n return table.getIsAllPageRowsSelected()\n ? false\n : paginationFlatRows\n .filter(row => row.getCanSelect())\n .some(d => d.getIsSelected() || d.getIsSomeSelected())\n }\n\n table.getToggleAllRowsSelectedHandler = () => {\n return (e: unknown) => {\n table.toggleAllRowsSelected(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n }\n\n table.getToggleAllPageRowsSelectedHandler = () => {\n return (e: unknown) => {\n table.toggleAllPageRowsSelected(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): void => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected()\n\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !isSelected\n\n if (row.getCanSelect() && isSelected === value) {\n return old\n }\n\n const selectedRowIds = { ...old }\n\n mutateRowIsSelected(\n selectedRowIds,\n row.id,\n value,\n opts?.selectChildren ?? true,\n table\n )\n\n return selectedRowIds\n })\n }\n row.getIsSelected = () => {\n const { rowSelection } = table.getState()\n return isRowSelected(row, rowSelection)\n }\n\n row.getIsSomeSelected = () => {\n const { rowSelection } = table.getState()\n return isSubRowSelected(row, rowSelection, table) === 'some'\n }\n\n row.getIsAllSubRowsSelected = () => {\n const { rowSelection } = table.getState()\n return isSubRowSelected(row, rowSelection, table) === 'all'\n }\n\n row.getCanSelect = () => {\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row)\n }\n\n return table.options.enableRowSelection ?? true\n }\n\n row.getCanSelectSubRows = () => {\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row)\n }\n\n return table.options.enableSubRowSelection ?? true\n }\n\n row.getCanMultiSelect = () => {\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row)\n }\n\n return table.options.enableMultiRowSelection ?? true\n }\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect()\n\n return (e: unknown) => {\n if (!canSelect) return\n row.toggleSelected(\n ((e as MouseEvent).target as HTMLInputElement)?.checked\n )\n }\n }\n },\n}\n\nconst mutateRowIsSelected = <TData extends RowData>(\n selectedRowIds: Record<string, boolean>,\n id: string,\n value: boolean,\n includeChildren: boolean,\n table: Table<TData>\n) => {\n const row = table.getRow(id, true)\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key])\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true\n }\n } else {\n delete selectedRowIds[id]\n }\n // }\n\n if (includeChildren && row.subRows?.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row =>\n mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table)\n )\n }\n}\n\nexport function selectRowsFn<TData extends RowData>(\n table: Table<TData>,\n rowModel: RowModel<TData>\n): RowModel<TData> {\n const rowSelection = table.getState().rowSelection\n\n const newSelectedFlatRows: Row<TData>[] = []\n const newSelectedRowsById: Record<string, Row<TData>> = {}\n\n // Filters top level and nested rows\n const recurseRows = (rows: Row<TData>[], depth = 0): Row<TData>[] => {\n return rows\n .map(row => {\n const isSelected = isRowSelected(row, rowSelection)\n\n if (isSelected) {\n newSelectedFlatRows.push(row)\n newSelectedRowsById[row.id] = row\n }\n\n if (row.subRows?.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows, depth + 1),\n }\n }\n\n if (isSelected) {\n return row\n }\n })\n .filter(Boolean) as Row<TData>[]\n }\n\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById,\n }\n}\n\nexport function isRowSelected<TData extends RowData>(\n row: Row<TData>,\n selection: Record<string, boolean>\n): boolean {\n return selection[row.id] ?? false\n}\n\nexport function isSubRowSelected<TData extends RowData>(\n row: Row<TData>,\n selection: Record<string, boolean>,\n table: Table<TData>\n): boolean | 'some' | 'all' {\n if (!row.subRows?.length) return false\n\n let allChildrenSelected = true\n let someSelected = false\n\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return\n }\n\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true\n } else {\n allChildrenSelected = false\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection, table)\n if (subRowChildrenSelected === 'all') {\n someSelected = true\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true\n allChildrenSelected = false\n } else {\n allChildrenSelected = false\n }\n }\n })\n\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false\n}\n","import { SortingFn } from './features/RowSorting'\n\nexport const reSplitAlphaNumeric = /([0-9]+)/gm\n\nconst alphanumeric: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\nconst alphanumericCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\nconst datetime: SortingFn<any> = (rowA, rowB, columnId) => {\n const a = rowA.getValue<Date>(columnId)\n const b = rowB.getValue<Date>(columnId)\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0\n}\n\nconst basic: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId))\n}\n\n// Utils\n\nfunction compareBasic(a: any, b: any) {\n return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction toString(a: any) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return ''\n }\n return String(a)\n }\n if (typeof a === 'string') {\n return a\n }\n return ''\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr: string, bStr: string) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean)\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean)\n\n // While\n while (a.length && b.length) {\n const aa = a.shift()!\n const bb = b.shift()!\n\n const an = parseInt(aa, 10)\n const bn = parseInt(bb, 10)\n\n const combo = [an, bn].sort()\n\n // Both are string\n if (isNaN(combo[0]!)) {\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1]!)) {\n return isNaN(an) ? -1 : 1\n }\n\n // Both are numbers\n if (an > bn) {\n return 1\n }\n if (bn > an) {\n return -1\n }\n }\n\n return a.length - b.length\n}\n\n// Exports\n\nexport const sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic,\n}\n\nexport type BuiltInSortingFn = keyof typeof sortingFns\n","import { RowModel } from '..'\nimport {\n BuiltInSortingFn,\n reSplitAlphaNumeric,\n sortingFns,\n} from '../sortingFns'\n\nimport {\n Column,\n OnChangeFn,\n Table,\n Row,\n Updater,\n RowData,\n SortingFns,\n TableFeature,\n} from '../types'\n\nimport { isFunction, makeStateUpdater } from '../utils'\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport interface ColumnSort {\n desc: boolean\n id: string\n}\n\nexport type SortingState = ColumnSort[]\n\nexport interface SortingTableState {\n sorting: SortingState\n}\n\nexport interface SortingFn<TData extends RowData> {\n (rowA: Row<TData>, rowB: Row<TData>, columnId: string): number\n}\n\nexport type CustomSortingFns<TData extends RowData> = Record<\n string,\n SortingFn<TData>\n>\n\nexport type SortingFnOption<TData extends RowData> =\n | 'auto'\n | keyof SortingFns\n | BuiltInSortingFn\n | SortingFn<TData>\n\nexport interface SortingColumnDef<TData extends RowData> {\n /**\n * Enables/Disables multi-sorting for this column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#enablemultisort)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n enableMultiSort?: boolean\n /**\n * Enables/Disables sorting for this column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#enablesorting)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n enableSorting?: boolean\n /**\n * Inverts the order of the sorting for this column. This is useful for values that have an inverted best/worst scale where lower numbers are better, eg. a ranking (1st, 2nd, 3rd) or golf-like scoring\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#invertsorting)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n invertSorting?: boolean\n /**\n * Set to `true` for sorting toggles on this column to start in the descending direction.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#sortdescfirst)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n sortDescFirst?: boolean\n /**\n * The sorting function to use with this column.\n * - A `string` referencing a built-in sorting function\n * - A custom sorting function\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#sortingfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n sortingFn?: SortingFnOption<TData>\n /**\n * The priority of undefined values when sorting this column.\n * - `false`\n * - Undefined values will be considered tied and need to be sorted by the next column filter or original index (whichever applies)\n * - `-1`\n * - Undefined values will be sorted with higher priority (ascending) (if ascending, undefined will appear on the beginning of the list)\n * - `1`\n * - Undefined values will be sorted with lower priority (descending) (if ascending, undefined will appear on the end of the list)\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#sortundefined)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n sortUndefined?: false | -1 | 1 | 'first' | 'last'\n}\n\nexport interface SortingColumn<TData extends RowData> {\n /**\n * Removes this column from the table's sorting state\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#clearsorting)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n clearSorting: () => void\n /**\n * Returns a sort direction automatically inferred based on the columns values.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getautosortdir)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getAutoSortDir: () => SortDirection\n /**\n * Returns a sorting function automatically inferred based on the columns values.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getautosortingfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getAutoSortingFn: () => SortingFn<TData>\n /**\n * Returns whether this column can be multi-sorted.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getcanmultisort)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getCanMultiSort: () => boolean\n /**\n * Returns whether this column can be sorted.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getcansort)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getCanSort: () => boolean\n /**\n * Returns the first direction that should be used when sorting this column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getfirstsortdir)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getFirstSortDir: () => SortDirection\n /**\n * Returns the current sort direction of this column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getissorted)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getIsSorted: () => false | SortDirection\n /**\n * Returns the next sorting order.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getnextsortingorder)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getNextSortingOrder: () => SortDirection | false\n /**\n * Returns the index position of this column's sorting within the sorting state\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getsortindex)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getSortIndex: () => number\n /**\n * Returns the resolved sorting function to be used for this column\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getsortingfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getSortingFn: () => SortingFn<TData>\n /**\n * Returns a function that can be used to toggle this column's sorting state. This is useful for attaching a click handler to the column header.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#gettogglesortinghandler)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getToggleSortingHandler: () => undefined | ((event: unknown) => void)\n /**\n * Toggles this columns sorting state. If `desc` is provided, it will force the sort direction to that value. If `isMulti` is provided, it will additivity multi-sort the column (or toggle it if it is already sorted).\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#togglesorting)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n toggleSorting: (desc?: boolean, isMulti?: boolean) => void\n}\n\ninterface SortingOptionsBase {\n /**\n * Enables/disables the ability to remove multi-sorts\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#enablemultiremove)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n enableMultiRemove?: boolean\n /**\n * Enables/Disables multi-sorting for the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#enablemultisort)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n enableMultiSort?: boolean\n /**\n * Enables/Disables sorting for the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#enablesorting)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n enableSorting?: boolean\n /**\n * Enables/Disables the ability to remove sorting for the table.\n * - If `true` then changing sort order will circle like: 'none' -> 'desc' -> 'asc' -> 'none' -> ...\n * - If `false` then changing sort order will circle like: 'none' -> 'desc' -> 'asc' -> 'desc' -> 'asc' -> ...\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#enablesortingremoval)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n enableSortingRemoval?: boolean\n /**\n * This function is used to retrieve the sorted row model. If using server-side sorting, this function is not required. To use client-side sorting, pass the exported `getSortedRowModel()` from your adapter to your table or implement your own.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getsortedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getSortedRowModel?: (table: Table<any>) => () => RowModel<any>\n /**\n * Pass a custom function that will be used to determine if a multi-sort event should be triggered. It is passed the event from the sort toggle handler and should return `true` if the event should trigger a multi-sort.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#ismultisortevent)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n isMultiSortEvent?: (e: unknown) => boolean\n /**\n * Enables manual sorting for the table. If this is `true`, you will be expected to sort your data before it is passed to the table. This is useful if you are doing server-side sorting.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#manualsorting)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n manualSorting?: boolean\n /**\n * Set a maximum number of columns that can be multi-sorted.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#maxmultisortcolcount)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n maxMultiSortColCount?: number\n /**\n * If provided, this function will be called with an `updaterFn` when `state.sorting` changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#onsortingchange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n onSortingChange?: OnChangeFn<SortingState>\n /**\n * If `true`, all sorts will default to descending as their first toggle state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#sortdescfirst)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n sortDescFirst?: boolean\n}\n\ntype ResolvedSortingFns = keyof SortingFns extends never\n ? {\n sortingFns?: Record<string, SortingFn<any>>\n }\n : {\n sortingFns: Record<keyof SortingFns, SortingFn<any>>\n }\n\nexport interface SortingOptions<TData extends RowData>\n extends SortingOptionsBase,\n ResolvedSortingFns {}\n\nexport interface SortingInstance<TData extends RowData> {\n _getSortedRowModel?: () => RowModel<TData>\n /**\n * Returns the row model for the table before any sorting has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getpresortedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getPreSortedRowModel: () => RowModel<TData>\n /**\n * Returns the row model for the table after sorting has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#getsortedrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n getSortedRowModel: () => RowModel<TData>\n /**\n * Resets the **sorting** state to `initialState.sorting`, or `true` can be passed to force a default blank state reset to `[]`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#resetsorting)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n resetSorting: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.sorting` state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#setsorting)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)\n */\n setSorting: (updater: Updater<SortingState>) => void\n}\n\n//\n\nexport const RowSorting: TableFeature = {\n getInitialState: (state): SortingTableState => {\n return {\n sorting: [],\n ...state,\n }\n },\n\n getDefaultColumnDef: <TData extends RowData>(): SortingColumnDef<TData> => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): SortingOptions<TData> => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: (e: unknown) => {\n return (e as MouseEvent).shiftKey\n },\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): void => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10)\n\n let isString = false\n\n for (const row of firstRows) {\n const value = row?.getValue(column.id)\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric\n }\n }\n }\n\n if (isString) {\n return sortingFns.text\n }\n\n return sortingFns.basic\n }\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n }\n column.getSortingFn = () => {\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.columnDef.sortingFn)\n ? column.columnDef.sortingFn\n : column.columnDef.sortingFn === 'auto'\n ? column.getAutoSortingFn()\n : table.options.sortingFns?.[column.columnDef.sortingFn as string] ??\n sortingFns[column.columnDef.sortingFn as BuiltInSortingFn]\n }\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder()\n const hasManualValue = typeof desc !== 'undefined' && desc !== null\n\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old?.find(d => d.id === column.id)\n const existingIndex = old?.findIndex(d => d.id === column.id)\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction: 'add' | 'remove' | 'toggle' | 'replace'\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc'\n\n // Multi-mode\n if (old?.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'add'\n }\n } else {\n // Normal mode\n if (old?.length && existingIndex !== old.length - 1) {\n sortAction = 'replace'\n } else if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'replace'\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove'\n }\n }\n }\n\n if (sortAction === 'add') {\n newSorting = [\n ...old,\n {\n id: column.id,\n desc: nextDesc,\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (table.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER)\n )\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id)\n } else {\n newSorting = [\n {\n id: column.id,\n desc: nextDesc,\n },\n ]\n }\n\n return newSorting\n })\n }\n\n column.getFirstSortDir = () => {\n const sortDescFirst =\n column.columnDef.sortDescFirst ??\n table.options.sortDescFirst ??\n column.getAutoSortDir() === 'desc'\n return sortDescFirst ? 'desc' : 'asc'\n }\n\n column.getNextSortingOrder = (multi?: boolean) => {\n const firstSortDirection = column.getFirstSortDir()\n const isSorted = column.getIsSorted()\n\n if (!isSorted) {\n return firstSortDirection\n }\n\n if (\n isSorted !== firstSortDirection &&\n (table.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n (multi ? table.options.enableMultiRemove ?? true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false\n }\n return isSorted === 'desc' ? 'asc' : 'desc'\n }\n\n column.getCanSort = () => {\n return (\n (column.columnDef.enableSorting ?? true) &&\n (table.options.enableSorting ?? true) &&\n !!column.accessorFn\n )\n }\n\n column.getCanMultiSort = () => {\n return (\n column.columnDef.enableMultiSort ??\n table.options.enableMultiSort ??\n !!column.accessorFn\n )\n }\n\n column.getIsSorted = () => {\n const columnSort = table.getState().sorting?.find(d => d.id === column.id)\n\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n }\n\n column.getSortIndex = () =>\n table.getState().sorting?.findIndex(d => d.id === column.id) ?? -1\n\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old =>\n old?.length ? old.filter(d => d.id !== column.id) : []\n )\n }\n\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort()\n\n return (e: unknown) => {\n if (!canSort) return\n ;(e as any).persist?.()\n column.toggleSorting?.(\n undefined,\n column.getCanMultiSort() ? table.options.isMultiSortEvent?.(e) : false\n )\n }\n }\n },\n\n createTable: <TData extends RowData>(table: Table<TData>): void => {\n table.setSorting = updater => table.options.onSortingChange?.(updater)\n table.resetSorting = defaultState => {\n table.setSorting(defaultState ? [] : table.initialState?.sorting ?? [])\n }\n table.getPreSortedRowModel = () => table.getGroupedRowModel()\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table)\n }\n\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel()\n }\n\n return table._getSortedRowModel()\n }\n },\n}\n","import { functionalUpdate, getMemoOptions, memo, RequiredKeys } from '../utils'\n\nimport {\n Updater,\n TableOptionsResolved,\n TableState,\n Table,\n InitialTableState,\n Row,\n Column,\n RowModel,\n ColumnDef,\n TableOptions,\n RowData,\n TableMeta,\n ColumnDefResolved,\n GroupColumnDef,\n TableFeature,\n} from '../types'\n\n//\nimport { createColumn } from './column'\nimport { Headers } from './headers'\n//\n\nimport { ColumnFaceting } from '../features/ColumnFaceting'\nimport { ColumnFiltering } from '../features/ColumnFiltering'\nimport { ColumnGrouping } from '../features/ColumnGrouping'\nimport { ColumnOrdering } from '../features/ColumnOrdering'\nimport { ColumnPinning } from '../features/ColumnPinning'\nimport { ColumnSizing } from '../features/ColumnSizing'\nimport { ColumnVisibility } from '../features/ColumnVisibility'\nimport { GlobalFaceting } from '../features/GlobalFaceting'\nimport { GlobalFiltering } from '../features/GlobalFiltering'\nimport { RowExpanding } from '../features/RowExpanding'\nimport { RowPagination } from '../features/RowPagination'\nimport { RowPinning } from '../features/RowPinning'\nimport { RowSelection } from '../features/RowSelection'\nimport { RowSorting } from '../features/RowSorting'\n\nconst builtInFeatures = [\n Headers,\n ColumnVisibility,\n ColumnOrdering,\n ColumnPinning,\n ColumnFaceting,\n ColumnFiltering,\n GlobalFaceting, //depends on ColumnFaceting\n GlobalFiltering, //depends on ColumnFiltering\n RowSorting,\n ColumnGrouping, //depends on RowSorting\n RowExpanding,\n RowPagination,\n RowPinning,\n RowSelection,\n ColumnSizing,\n] as const\n\n//\n\nexport interface CoreTableState {}\n\nexport interface CoreOptions<TData extends RowData> {\n /**\n * An array of extra features that you can add to the table instance.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#_features)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n _features?: TableFeature[]\n /**\n * Set this option to override any of the `autoReset...` feature options.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#autoresetall)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n autoResetAll?: boolean\n /**\n * The array of column defs to use for the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#columns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n columns: ColumnDef<TData, any>[]\n /**\n * The data for the table to display. This array should match the type you provided to `table.setRowType<...>`. Columns can access this data via string/index or a functional accessor. When the `data` option changes reference, the table will reprocess the data.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#data)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n data: TData[]\n /**\n * Set this option to `true` to output all debugging information to the console.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#debugall)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n debugAll?: boolean\n /**\n * Set this option to `true` to output cell debugging information to the console.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#debugcells]\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n debugCells?: boolean\n /**\n * Set this option to `true` to output column debugging information to the console.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#debugcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n debugColumns?: boolean\n /**\n * Set this option to `true` to output header debugging information to the console.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#debugheaders)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n debugHeaders?: boolean\n /**\n * Set this option to `true` to output row debugging information to the console.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#debugrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n debugRows?: boolean\n /**\n * Set this option to `true` to output table debugging information to the console.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#debugtable)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n debugTable?: boolean\n /**\n * Default column options to use for all column defs supplied to the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#defaultcolumn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n defaultColumn?: Partial<ColumnDef<TData, unknown>>\n /**\n * This required option is a factory for a function that computes and returns the core row model for the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getcorerowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getCoreRowModel: (table: Table<any>) => () => RowModel<any>\n /**\n * This optional function is used to derive a unique ID for any given row. If not provided the rows index is used (nested rows join together with `.` using their grandparents' index eg. `index.index.index`). If you need to identify individual rows that are originating from any server-side operations, it's suggested you use this function to return an ID that makes sense regardless of network IO/ambiguity eg. a userId, taskId, database ID field, etc.\n * @example getRowId: row => row.userId\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getrowid)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getRowId?: (originalRow: TData, index: number, parent?: Row<TData>) => string\n /**\n * This optional function is used to access the sub rows for any given row. If you are using nested rows, you will need to use this function to return the sub rows object (or undefined) from the row.\n * @example getSubRows: row => row.subRows\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getsubrows)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getSubRows?: (originalRow: TData, index: number) => undefined | TData[]\n /**\n * Use this option to optionally pass initial state to the table. This state will be used when resetting various table states either automatically by the table (eg. `options.autoResetPageIndex`) or via functions like `table.resetRowSelection()`. Most reset function allow you optionally pass a flag to reset to a blank/default state instead of the initial state.\n *\n * Table state will not be reset when this object changes, which also means that the initial state object does not need to be stable.\n *\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#initialstate)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n initialState?: InitialTableState\n /**\n * This option is used to optionally implement the merging of table options.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#mergeoptions)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n mergeOptions?: (\n defaultOptions: TableOptions<TData>,\n options: Partial<TableOptions<TData>>\n ) => TableOptions<TData>\n /**\n * You can pass any object to `options.meta` and access it anywhere the `table` is available via `table.options.meta`.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#meta)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n meta?: TableMeta<TData>\n /**\n * The `onStateChange` option can be used to optionally listen to state changes within the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#onstatechange)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n onStateChange: (updater: Updater<TableState>) => void\n /**\n * Value used when the desired value is not found in the data.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#renderfallbackvalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n renderFallbackValue: any\n /**\n * The `state` option can be used to optionally _control_ part or all of the table state. The state you pass here will merge with and overwrite the internal automatically-managed state to produce the final state for the table. You can also listen to state changes via the `onStateChange` option.\n * > Note: Any state passed in here will override both the internal state and any other `initialState` you provide.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#state)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n state: Partial<TableState>\n}\n\nexport interface CoreInstance<TData extends RowData> {\n _features: readonly TableFeature[]\n _getAllFlatColumnsById: () => Record<string, Column<TData, unknown>>\n _getColumnDefs: () => ColumnDef<TData, unknown>[]\n _getCoreRowModel?: () => RowModel<TData>\n _getDefaultColumnDef: () => Partial<ColumnDef<TData, unknown>>\n _getRowId: (_: TData, index: number, parent?: Row<TData>) => string\n _queue: (cb: () => void) => void\n /**\n * Returns all columns in the table in their normalized and nested hierarchy.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getallcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getAllColumns: () => Column<TData, unknown>[]\n /**\n * Returns all columns in the table flattened to a single level.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getallflatcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getAllFlatColumns: () => Column<TData, unknown>[]\n /**\n * Returns all leaf-node columns in the table flattened to a single level. This does not include parent columns.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getallleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getAllLeafColumns: () => Column<TData, unknown>[]\n /**\n * Returns a single column by its ID.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getcolumn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getColumn: (columnId: string) => Column<TData, unknown> | undefined\n /**\n * Returns the core row model before any processing has been applied.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getcorerowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getCoreRowModel: () => RowModel<TData>\n /**\n * Returns the row with the given ID.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getrow)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getRow: (id: string, searchAll?: boolean) => Row<TData>\n /**\n * Returns the final model after all processing from other used features has been applied. This is the row model that is most commonly used for rendering.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getrowmodel)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getRowModel: () => RowModel<TData>\n /**\n * Call this function to get the table's current state. It's recommended to use this function and its state, especially when managing the table state manually. It is the exact same state used internally by the table for every feature and function it provides.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#getstate)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n getState: () => TableState\n /**\n * This is the resolved initial state of the table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#initialstate)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n initialState: TableState\n /**\n * A read-only reference to the table's current options.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#options)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n options: RequiredKeys<TableOptionsResolved<TData>, 'state'>\n /**\n * Call this function to reset the table state to the initial state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#reset)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n reset: () => void\n /**\n * This function can be used to update the table options.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#setoptions)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n setOptions: (newOptions: Updater<TableOptionsResolved<TData>>) => void\n /**\n * Call this function to update the table state.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/table#setstate)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/tables)\n */\n setState: (updater: Updater<TableState>) => void\n}\n\nexport function createTable<TData extends RowData>(\n options: TableOptionsResolved<TData>\n): Table<TData> {\n if (\n process.env.NODE_ENV !== 'production' &&\n (options.debugAll || options.debugTable)\n ) {\n console.info('Creating Table Instance...')\n }\n\n const _features = [...builtInFeatures, ...(options._features ?? [])]\n\n let table = { _features } as unknown as Table<TData>\n\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions?.(table))\n }, {}) as TableOptionsResolved<TData>\n\n const mergeOptions = (options: TableOptionsResolved<TData>) => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options)\n }\n\n return {\n ...defaultOptions,\n ...options,\n }\n }\n\n const coreInitialState: CoreTableState = {}\n\n let initialState = {\n ...coreInitialState,\n ...(options.initialState ?? {}),\n } as TableState\n\n table._features.forEach(feature => {\n initialState = (feature.getInitialState?.(initialState) ??\n initialState) as TableState\n })\n\n const queued: (() => void)[] = []\n let queuedTimeout = false\n\n const coreInstance: CoreInstance<TData> = {\n _features,\n options: {\n ...defaultOptions,\n ...options,\n },\n initialState,\n _queue: cb => {\n queued.push(cb)\n\n if (!queuedTimeout) {\n queuedTimeout = true\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve()\n .then(() => {\n while (queued.length) {\n queued.shift()!()\n }\n queuedTimeout = false\n })\n .catch(error =>\n setTimeout(() => {\n throw error\n })\n )\n }\n },\n reset: () => {\n table.setState(table.initialState)\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options)\n table.options = mergeOptions(newOptions) as RequiredKeys<\n TableOptionsResolved<TData>,\n 'state'\n >\n },\n\n getState: () => {\n return table.options.state as TableState\n },\n\n setState: (updater: Updater<TableState>) => {\n table.options.onStateChange?.(updater)\n },\n\n _getRowId: (row: TData, index: number, parent?: Row<TData>) =>\n table.options.getRowId?.(row, index, parent) ??\n `${parent ? [parent.id, index].join('.') : index}`,\n\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table)\n }\n\n return table._getCoreRowModel!()\n },\n\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel()\n },\n //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id: string, searchAll?: boolean) => {\n let row = (\n searchAll ? table.getPrePaginationRowModel() : table.getRowModel()\n ).rowsById[id]\n\n if (!row) {\n row = table.getCoreRowModel().rowsById[id]\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`)\n }\n throw new Error()\n }\n }\n\n return row\n },\n _getDefaultColumnDef: memo(\n () => [table.options.defaultColumn],\n defaultColumn => {\n defaultColumn = (defaultColumn ?? {}) as Partial<\n ColumnDef<TData, unknown>\n >\n\n return {\n header: props => {\n const resolvedColumnDef = props.header.column\n .columnDef as ColumnDefResolved<TData>\n\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey\n }\n\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id\n }\n\n return null\n },\n // footer: props => props.header.column.id,\n cell: props => props.renderValue<any>()?.toString?.() ?? null,\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef?.())\n }, {}),\n ...defaultColumn,\n } as Partial<ColumnDef<TData, unknown>>\n },\n getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')\n ),\n\n _getColumnDefs: () => table.options.columns,\n\n getAllColumns: memo(\n () => [table._getColumnDefs()],\n columnDefs => {\n const recurseColumns = (\n columnDefs: ColumnDef<TData, unknown>[],\n parent?: Column<TData, unknown>,\n depth = 0\n ): Column<TData, unknown>[] => {\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent)\n\n const groupingColumnDef = columnDef as GroupColumnDef<\n TData,\n unknown\n >\n\n column.columns = groupingColumnDef.columns\n ? recurseColumns(groupingColumnDef.columns, column, depth + 1)\n : []\n\n return column\n })\n }\n\n return recurseColumns(columnDefs)\n },\n getMemoOptions(options, 'debugColumns', 'getAllColumns')\n ),\n\n getAllFlatColumns: memo(\n () => [table.getAllColumns()],\n allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns()\n })\n },\n getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')\n ),\n\n _getAllFlatColumnsById: memo(\n () => [table.getAllFlatColumns()],\n flatColumns => {\n return flatColumns.reduce(\n (acc, column) => {\n acc[column.id] = column\n return acc\n },\n {} as Record<string, Column<TData, unknown>>\n )\n },\n getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')\n ),\n\n getAllLeafColumns: memo(\n () => [table.getAllColumns(), table._getOrderColumnsFn()],\n (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns())\n return orderColumns(leafColumns)\n },\n getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')\n ),\n\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId]\n\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`)\n }\n\n return column\n },\n }\n\n Object.assign(table, coreInstance)\n\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index]\n feature?.createTable?.(table)\n }\n\n return table\n}\n","import { createRow } from '../core/row'\nimport { Table, Row, RowModel, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getCoreRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.options.data],\n (\n data\n ): {\n rows: Row<TData>[]\n flatRows: Row<TData>[]\n rowsById: Record<string, Row<TData>>\n } => {\n const rowModel: RowModel<TData> = {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n\n const accessRows = (\n originalRows: TData[],\n depth = 0,\n parentRow?: Row<TData>\n ): Row<TData>[] => {\n const rows = [] as Row<TData>[]\n\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = createRow(\n table,\n table._getRowId(originalRows[i]!, i, parentRow),\n originalRows[i]!,\n i,\n depth,\n undefined,\n parentRow?.id\n )\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row)\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row\n // Push table row into parent\n rows.push(row)\n\n // Get the original subrows\n if (table.options.getSubRows) {\n row.originalSubRows = table.options.getSubRows(\n originalRows[i]!,\n i\n )\n\n // Then recursively access them\n if (row.originalSubRows?.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row)\n }\n }\n }\n\n return rows\n }\n\n rowModel.rows = accessRows(data)\n\n return rowModel\n },\n getMemoOptions(table.options, 'debugTable', 'getRowModel', () =>\n table._autoResetPageIndex()\n )\n )\n}\n","import { Table, Row, RowModel, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getExpandedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [\n table.getState().expanded,\n table.getPreExpandedRowModel(),\n table.options.paginateExpandedRows,\n ],\n (expanded, rowModel, paginateExpandedRows) => {\n if (\n !rowModel.rows.length ||\n (expanded !== true && !Object.keys(expanded ?? {}).length)\n ) {\n return rowModel\n }\n\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel\n }\n\n return expandRows(rowModel)\n },\n getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel')\n )\n}\n\nexport function expandRows<TData extends RowData>(rowModel: RowModel<TData>) {\n const expandedRows: Row<TData>[] = []\n\n const handleRow = (row: Row<TData>) => {\n expandedRows.push(row)\n\n if (row.subRows?.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow)\n }\n }\n\n rowModel.rows.forEach(handleRow)\n\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById,\n }\n}\n","import { createRow } from '../core/row'\nimport { Row, RowModel, Table, RowData } from '../types'\n\nexport function filterRows<TData extends RowData>(\n rows: Row<TData>[],\n filterRowImpl: (row: Row<TData>) => any,\n table: Table<TData>\n) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table)\n }\n\n return filterRowModelFromRoot(rows, filterRowImpl, table)\n}\n\nfunction filterRowModelFromLeafs<TData extends RowData>(\n rowsToFilter: Row<TData>[],\n filterRow: (row: Row<TData>) => Row<TData>[],\n table: Table<TData>\n): RowModel<TData> {\n const newFilteredFlatRows: Row<TData>[] = []\n const newFilteredRowsById: Record<string, Row<TData>> = {}\n const maxDepth = table.options.maxLeafRowFilterDepth ?? 100\n\n const recurseFilterRows = (rowsToFilter: Row<TData>[], depth = 0) => {\n const rows: Row<TData>[] = []\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i]!\n\n const newRow = createRow(\n table,\n row.id,\n row.original,\n row.index,\n row.depth,\n undefined,\n row.parentId\n )\n newRow.columnFilters = row.columnFilters\n\n if (row.subRows?.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1)\n row = newRow\n\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row)\n newFilteredRowsById[row.id] = row\n newFilteredFlatRows.push(row)\n continue\n }\n\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row)\n newFilteredRowsById[row.id] = row\n newFilteredFlatRows.push(row)\n continue\n }\n } else {\n row = newRow\n if (filterRow(row)) {\n rows.push(row)\n newFilteredRowsById[row.id] = row\n newFilteredFlatRows.push(row)\n }\n }\n }\n\n return rows\n }\n\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById,\n }\n}\n\nfunction filterRowModelFromRoot<TData extends RowData>(\n rowsToFilter: Row<TData>[],\n filterRow: (row: Row<TData>) => any,\n table: Table<TData>\n): RowModel<TData> {\n const newFilteredFlatRows: Row<TData>[] = []\n const newFilteredRowsById: Record<string, Row<TData>> = {}\n const maxDepth = table.options.maxLeafRowFilterDepth ?? 100\n\n // Filters top level and nested rows\n const recurseFilterRows = (rowsToFilter: Row<TData>[], depth = 0) => {\n // Filter from parents downward first\n\n const rows: Row<TData>[] = []\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i]!\n\n const pass = filterRow(row)\n\n if (pass) {\n if (row.subRows?.length && depth < maxDepth) {\n const newRow = createRow(\n table,\n row.id,\n row.original,\n row.index,\n row.depth,\n undefined,\n row.parentId\n )\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1)\n row = newRow\n }\n\n rows.push(row)\n newFilteredFlatRows.push(row)\n newFilteredRowsById[row.id] = row\n }\n }\n\n return rows\n }\n\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById,\n }\n}\n","import { Table, RowModel, Row, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\nimport { filterRows } from './filterRowsUtils'\n\nexport function getFacetedRowModel<TData extends RowData>(): (\n table: Table<TData>,\n columnId: string\n) => () => RowModel<TData> {\n return (table, columnId) =>\n memo(\n () => [\n table.getPreFilteredRowModel(),\n table.getState().columnFilters,\n table.getState().globalFilter,\n table.getFilteredRowModel(),\n ],\n (preRowModel, columnFilters, globalFilter) => {\n if (\n !preRowModel.rows.length ||\n (!columnFilters?.length && !globalFilter)\n ) {\n return preRowModel\n }\n\n const filterableIds = [\n ...columnFilters.map(d => d.id).filter(d => d !== columnId),\n globalFilter ? '__global__' : undefined,\n ].filter(Boolean) as string[]\n\n const filterRowsImpl = (row: Row<TData>) => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]!] === false) {\n return false\n }\n }\n return true\n }\n\n return filterRows(preRowModel.rows, filterRowsImpl, table)\n },\n getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel')\n )\n}\n","import { Table, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getFacetedUniqueValues<TData extends RowData>(): (\n table: Table<TData>,\n columnId: string\n) => () => Map<any, number> {\n return (table, columnId) =>\n memo(\n () => [table.getColumn(columnId)?.getFacetedRowModel()],\n facetedRowModel => {\n if (!facetedRowModel) return new Map()\n\n let facetedUniqueValues = new Map<any, number>()\n\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values =\n facetedRowModel.flatRows[i]!.getUniqueValues<number>(columnId)\n\n for (let j = 0; j < values.length; j++) {\n const value = values[j]!\n\n if (facetedUniqueValues.has(value)) {\n facetedUniqueValues.set(\n value,\n (facetedUniqueValues.get(value) ?? 0) + 1\n )\n } else {\n facetedUniqueValues.set(value, 1)\n }\n }\n }\n\n return facetedUniqueValues\n },\n getMemoOptions(\n table.options,\n 'debugTable',\n `getFacetedUniqueValues_${columnId}`\n )\n )\n}\n","import { ResolvedColumnFilter } from '../features/ColumnFiltering'\nimport { Table, RowModel, Row, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\nimport { filterRows } from './filterRowsUtils'\n\nexport function getFilteredRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [\n table.getPreFilteredRowModel(),\n table.getState().columnFilters,\n table.getState().globalFilter,\n ],\n (rowModel, columnFilters, globalFilter) => {\n if (\n !rowModel.rows.length ||\n (!columnFilters?.length && !globalFilter)\n ) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i]!.columnFilters = {}\n rowModel.flatRows[i]!.columnFiltersMeta = {}\n }\n return rowModel\n }\n\n const resolvedColumnFilters: ResolvedColumnFilter<TData>[] = []\n const resolvedGlobalFilters: ResolvedColumnFilter<TData>[] = []\n\n ;(columnFilters ?? []).forEach(d => {\n const column = table.getColumn(d.id)\n\n if (!column) {\n return\n }\n\n const filterFn = column.getFilterFn()\n\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`\n )\n }\n return\n }\n\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: filterFn.resolveFilterValue?.(d.value) ?? d.value,\n })\n })\n\n const filterableIds = (columnFilters ?? []).map(d => d.id)\n\n const globalFilterFn = table.getGlobalFilterFn()\n\n const globallyFilterableColumns = table\n .getAllLeafColumns()\n .filter(column => column.getCanGlobalFilter())\n\n if (\n globalFilter &&\n globalFilterFn &&\n globallyFilterableColumns.length\n ) {\n filterableIds.push('__global__')\n\n globallyFilterableColumns.forEach(column => {\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue:\n globalFilterFn.resolveFilterValue?.(globalFilter) ??\n globalFilter,\n })\n })\n }\n\n let currentColumnFilter\n let currentGlobalFilter\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j]!\n\n row.columnFilters = {}\n\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i]!\n const id = currentColumnFilter.id\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(\n row,\n id,\n currentColumnFilter.resolvedValue,\n filterMeta => {\n row.columnFiltersMeta[id] = filterMeta\n }\n )\n }\n }\n\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i]!\n const id = currentGlobalFilter.id\n // Tag the row with the first truthy global filter state\n if (\n currentGlobalFilter.filterFn(\n row,\n id,\n currentGlobalFilter.resolvedValue,\n filterMeta => {\n row.columnFiltersMeta[id] = filterMeta\n }\n )\n ) {\n row.columnFilters.__global__ = true\n break\n }\n }\n\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false\n }\n }\n }\n\n const filterRowsImpl = (row: Row<TData>) => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]!] === false) {\n return false\n }\n }\n return true\n }\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table)\n },\n getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () =>\n table._autoResetPageIndex()\n )\n )\n}\n","import { Table, RowModel, Row, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\nimport { expandRows } from './getExpandedRowModel'\n\nexport function getPaginationRowModel<TData extends RowData>(opts?: {\n initialSync: boolean\n}): (table: Table<TData>) => () => RowModel<TData> {\n return table =>\n memo(\n () => [\n table.getState().pagination,\n table.getPrePaginationRowModel(),\n table.options.paginateExpandedRows\n ? undefined\n : table.getState().expanded,\n ],\n (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel\n }\n\n const { pageSize, pageIndex } = pagination\n let { rows, flatRows, rowsById } = rowModel\n const pageStart = pageSize * pageIndex\n const pageEnd = pageStart + pageSize\n\n rows = rows.slice(pageStart, pageEnd)\n\n let paginatedRowModel: RowModel<TData>\n\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById,\n })\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById,\n }\n }\n\n paginatedRowModel.flatRows = []\n\n const handleRow = (row: Row<TData>) => {\n paginatedRowModel.flatRows.push(row)\n if (row.subRows.length) {\n row.subRows.forEach(handleRow)\n }\n }\n\n paginatedRowModel.rows.forEach(handleRow)\n\n return paginatedRowModel\n },\n getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel')\n )\n}\n","import { Table, Row, RowModel, RowData } from '../types'\nimport { SortingFn } from '../features/RowSorting'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getSortedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().sorting, table.getPreSortedRowModel()],\n (sorting, rowModel) => {\n if (!rowModel.rows.length || !sorting?.length) {\n return rowModel\n }\n\n const sortingState = table.getState().sorting\n\n const sortedFlatRows: Row<TData>[] = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort =>\n table.getColumn(sort.id)?.getCanSort()\n )\n\n const columnInfoById: Record<\n string,\n {\n sortUndefined?: false | -1 | 1 | 'first' | 'last'\n invertSorting?: boolean\n sortingFn: SortingFn<TData>\n }\n > = {}\n\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id)\n if (!column) return\n\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn(),\n }\n })\n\n const sortData = (rows: Row<TData>[]) => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({ ...row }))\n\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n const sortEntry = availableSorting[i]!\n const columnInfo = columnInfoById[sortEntry.id]!\n const sortUndefined = columnInfo.sortUndefined\n const isDesc = sortEntry?.desc ?? false\n\n let sortInt = 0\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id)\n const bValue = rowB.getValue(sortEntry.id)\n\n const aUndefined = aValue === undefined\n const bUndefined = bValue === undefined\n\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1\n if (sortUndefined === 'last') return aUndefined ? 1 : -1\n sortInt =\n aUndefined && bUndefined\n ? 0\n : aUndefined\n ? sortUndefined\n : -sortUndefined\n }\n }\n\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id)\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1\n }\n\n if (columnInfo.invertSorting) {\n sortInt *= -1\n }\n\n return sortInt\n }\n }\n\n return rowA.index - rowB.index\n })\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n sortedFlatRows.push(row)\n if (row.subRows?.length) {\n row.subRows = sortData(row.subRows)\n }\n })\n\n return sortedData\n }\n\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById,\n }\n },\n getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () =>\n table._autoResetPageIndex()\n )\n )\n}\n","import * as React from 'react'\nexport * from '@tanstack/table-core'\n\nimport {\n TableOptions,\n TableOptionsResolved,\n RowData,\n createTable,\n} from '@tanstack/table-core'\n\nexport type Renderable<TProps> = React.ReactNode | React.ComponentType<TProps>\n\n//\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nexport function flexRender<TProps extends object>(\n Comp: Renderable<TProps>,\n props: TProps\n): React.ReactNode | React.JSX.Element {\n return !Comp ? null : isReactComponent<TProps>(Comp) ? (\n <Comp {...props} />\n ) : (\n Comp\n )\n}\n\nfunction isReactComponent<TProps>(\n component: unknown\n): component is React.ComponentType<TProps> {\n return (\n isClassComponent(component) ||\n typeof component === 'function' ||\n isExoticComponent(component)\n )\n}\n\nfunction isClassComponent(component: any) {\n return (\n typeof component === 'function' &&\n (() => {\n const proto = Object.getPrototypeOf(component)\n return proto.prototype && proto.prototype.isReactComponent\n })()\n )\n}\n\nfunction isExoticComponent(component: any) {\n return (\n typeof component === 'object' &&\n typeof component.$$typeof === 'symbol' &&\n ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description)\n )\n}\n\nexport function useReactTable<TData extends RowData>(\n options: TableOptions<TData>\n) {\n // Compose in the generic options to the user options\n const resolvedOptions: TableOptionsResolved<TData> = {\n state: {}, // Dummy state\n onStateChange: () => {}, // noop\n renderFallbackValue: null,\n ...options,\n }\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable<TData>(resolvedOptions),\n }))\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState)\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state,\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater)\n options.onStateChange?.(updater)\n },\n }))\n\n return tableRef.current\n}\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nexport type SortDirection = \"asc\" | \"desc\" | null;\n\nconst tableVariants = cva(\n \"w-full caption-bottom text-sm\",\n {\n variants: {\n variant: {\n default: \"dark:text-gray-200\",\n bordered: \"border border-border dark:border-gray-700\",\n striped: \"dark:text-gray-200\",\n card: \"border border-border dark:border-gray-700 rounded-md shadow-sm dark:shadow-gray-900/20\",\n minimal: \"border-none dark:text-gray-200\",\n },\n size: {\n sm: \"text-xs\",\n default: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport interface ColumnDefinition<T> {\n id: string;\n header: React.ReactNode;\n accessorKey?: keyof T;\n cell?: (row: T) => React.ReactNode;\n sortable?: boolean;\n}\n\ninterface TableProps<T>\n extends React.HTMLAttributes<HTMLTableElement>,\n VariantProps<typeof tableVariants> {\n /** Veri yükleniyor durumunu gösterir */\n loading?: boolean;\n /** Sıralama için kullanılan sütun */\n sortColumn?: string;\n /** Sıralama yönü */\n sortDirection?: SortDirection;\n /** Sıralama değiştiğinde çağrılacak fonksiyon */\n onSortChange?: (column: string, direction: SortDirection) => void;\n /** Boş durum için özel içerik */\n emptyContent?: React.ReactNode;\n /** Seçili satır id'leri */\n selectedRowIds?: string[];\n /** Satır seçim değiştiğinde çağrılacak fonksiyon */\n onRowSelectionChange?: (selectedRowIds: string[]) => void;\n /** Satır seçim devre dışı */\n disableRowSelection?: boolean;\n /** Her satır için benzersiz id çıkarma fonksiyonu */\n getRowId?: (row: T) => string;\n}\n\n// Tip parametresiz Table bileşeni için varsayılan tip, herhangi bir veri tipini kabul edebilmesi için\nconst Table = React.forwardRef<\n HTMLTableElement,\n TableProps<unknown>\n>(({ \n className, \n variant, \n size, \n loading, \n emptyContent,\n // Kullanılmayan özellikleri yoruma alarak lint uyarılarını önlüyoruz\n // sortColumn,\n // sortDirection,\n // onSortChange,\n // selectedRowIds,\n // onRowSelectionChange,\n // disableRowSelection,\n // getRowId,\n ...props \n}, ref) => {\n // Apply striped styles to the tbody via a class name\n const striped = variant === \"striped\";\n \n // Çocukları güvenli bir şekilde işle ve tip kontrollerini doğru yap\n const childrenWithProps = React.Children.map(props.children, (child) => {\n if (React.isValidElement(child)) {\n if (child.type === \"tbody\") {\n // Tip güvenliği için props'ları düzgün şekilde ele alıyoruz\n const tbodyProps = child.props as Record<string, unknown>;\n return React.cloneElement(child as React.ReactElement<React.HTMLAttributes<HTMLTableSectionElement>>, {\n className: cn(tbodyProps.className as string | undefined, striped && \"even:[&>tr]:bg-muted/50\")\n });\n }\n }\n return child;\n });\n \n return (\n <div className=\"relative w-full overflow-auto\">\n {/* Yükleniyor durumu için overlay */}\n {loading && (\n <div className=\"absolute inset-0 bg-background/60 flex items-center justify-center z-10\">\n <div className=\"h-8 w-8 animate-spin rounded-full border-2 border-primary border-t-transparent\"></div>\n </div>\n )}\n \n <table\n ref={ref}\n className={cn(\n tableVariants({ variant, size }),\n loading && \"opacity-70\",\n className\n )}\n {...props}\n >\n {childrenWithProps}\n </table>\n \n </div>\n );\n});\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n));\nTableHeader.displayName = \"TableHeader\";\n\ninterface TableBodyProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n /** Veri yoksa gösterilecek boş durum içeriği */\n emptyContent?: React.ReactNode;\n /** Varsayılan boş durum mesajı */\n emptyMessage?: string;\n}\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n TableBodyProps\n>(({ className, emptyContent, emptyMessage = \"No data available\", children, ...props }, ref) => {\n // Çocuk elementlerin varlığını kontrol et\n const hasChildren = React.Children.count(children) > 0;\n \n return (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n >\n {hasChildren ? (\n children\n ) : (\n <tr>\n <td colSpan={100} className=\"h-24 text-center\">\n {emptyContent || (\n <div className=\"py-6 text-muted-foreground\">\n <div className=\"text-sm\">\n {emptyMessage}\n </div>\n </div>\n )}\n </td>\n </tr>\n )}\n </tbody>\n )\n});\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\"bg-primary text-primary-foreground font-medium\", className)}\n {...props}\n />\n));\nTableFooter.displayName = \"TableFooter\";\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n));\nTableRow.displayName = \"TableRow\";\n\ninterface TableHeadProps extends React.ThHTMLAttributes<HTMLTableCellElement> {\n /** Bu sütun için sıralama durumu */\n sortable?: boolean;\n /** Bu sütunun sıralanma durumu */\n sorted?: SortDirection;\n /** Sıralama değiştiğinde çağrılacak fonksiyon */\n onSort?: () => void;\n}\n\nconst TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n ({ className, sortable, sorted, onSort, children, ...props }, ref) => {\n // Sıralama için simgeler\n const renderSortIcon = () => {\n if (!sortable) return null;\n \n if (sorted === \"asc\") {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"ml-1 h-4 w-4 inline-block\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M14.707 10.293a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 111.414-1.414L9 12.586V5a1 1 0 012 0v7.586l2.293-2.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n \n if (sorted === \"desc\") {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"ml-1 h-4 w-4 inline-block\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.293 9.707a1 1 0 010-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 01-1.414 1.414L11 7.414V15a1 1 0 11-2 0V7.414L6.707 9.707a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n \n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"ml-1 h-4 w-4 inline-block opacity-30\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n };\n \n return (\n <th\n ref={ref}\n className={cn(\n \"h-10 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n sortable && \"cursor-pointer hover:text-foreground select-none\",\n className\n )}\n onClick={sortable ? onSort : undefined}\n {...props}\n >\n <div className=\"flex items-center\">\n {children}\n {sortable && renderSortIcon()}\n </div>\n </th>\n );\n }\n);\nTableHead.displayName = \"TableHead\";\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n />\n));\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nTableCaption.displayName = \"TableCaption\";\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n\nexport type { TableBodyProps };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp, Loader2 } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\n/**\n * Premium Select Component\n * \n * Advanced dropdown/select component with variants, sizes and accessibility features.\n * Compatible with dark and light mode, providing a modern user experience with smooth animations.\n */\n\n// Directly re-exporting the Root component\nconst Select = SelectPrimitive.Root\nSelect.displayName = \"Select\"\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\ntype SelectTriggerVariant = \"standard\" | \"outline\" | \"ghost\" | \"underline\";\ntype SelectTriggerSize = \"sm\" | \"md\" | \"lg\";\n\ninterface SelectTriggerProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> {\n /** Visual variant */\n variant?: SelectTriggerVariant;\n /** Size */\n size?: SelectTriggerSize;\n /** Error state */\n error?: boolean | string;\n /** Success state */\n success?: boolean;\n /** Loading state */\n loading?: boolean;\n /** Icon displayed on the left */\n leftIcon?: React.ReactNode;\n /** Icon displayed on the right (instead of default chevron) */\n rightIcon?: React.ReactNode;\n}\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n SelectTriggerProps\n>(({ className, children, variant = \"standard\", size = \"md\", error, success, loading, leftIcon, rightIcon, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n /* Base styles */\n \"flex w-full items-center justify-between gap-1 rounded-md transition-all duration-200\",\n \"disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n \"focus-visible:outline-none\",\n /* Error state */\n error && \"border-error focus-visible:ring-error/30 focus-visible:border-error\",\n /* Success state */\n success && \"border-success focus-visible:ring-success/30 focus-visible:border-success\",\n /* Size variants */\n size === \"sm\" && \"h-8 text-xs px-2\",\n size === \"md\" && \"h-10 text-sm px-3\",\n size === \"lg\" && \"h-12 text-base px-4\",\n /* Visual variants */\n variant === \"standard\" && \"border border-gray-300 dark:border-gray-700 bg-background dark:bg-gray-900 hover:border-gray-400 dark:hover:border-gray-600 focus-visible:ring-2 focus-visible:ring-primary/30 dark:focus-visible:ring-primary/50 focus-visible:border-primary dark:focus-visible:border-primary\",\n variant === \"outline\" && \"border border-gray-300 dark:border-gray-700 bg-transparent hover:border-gray-400 dark:hover:border-gray-600 focus-visible:ring-2 focus-visible:ring-primary/30 dark:focus-visible:ring-primary/50 focus-visible:border-primary dark:focus-visible:border-primary\",\n variant === \"ghost\" && \"border-none bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700 focus-visible:ring-2 focus-visible:ring-primary/30 dark:focus-visible:ring-primary/50\",\n variant === \"underline\" && \"border-t-0 border-l-0 border-r-0 border-b border-gray-300 dark:border-gray-600 rounded-none px-0 hover:border-gray-400 dark:hover:border-gray-500 focus-visible:ring-0 focus-visible:border-b-2 focus-visible:border-primary dark:focus-visible:border-primary\",\n className\n )}\n {...props}\n disabled={props.disabled || loading}\n data-error={error ? true : undefined}\n data-success={success ? true : undefined}\n data-loading={loading ? true : undefined}\n >\n <div className=\"flex items-center flex-1 gap-2\">\n {leftIcon && (\n <span className=\"flex items-center justify-center text-gray-500 dark:text-gray-400\">\n {leftIcon}\n </span>\n )}\n {loading ? (\n <div className=\"flex items-center gap-2\">\n <Loader2 className=\"h-3.5 w-3.5 animate-spin text-muted-foreground dark:text-gray-400\" />\n <span className=\"text-muted-foreground dark:text-gray-400\">Loading...</span>\n </div>\n ) : children}\n </div>\n {!loading && (\n <SelectPrimitive.Icon asChild>\n {rightIcon ? (\n <span className=\"opacity-60\">{rightIcon}</span>\n ) : (\n <ChevronDown className=\"h-4 w-4 opacity-60 transition-transform duration-200 ease-out group-data-[state=open]:rotate-180\" />\n )}\n </SelectPrimitive.Icon>\n )}\n </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\n/**\n * Scroll Up Button Component\n */\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1 text-muted-foreground hover:text-foreground transition-colors\",\n className\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\n/**\n * Scroll Down Button Component\n */\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1 text-muted-foreground hover:text-foreground transition-colors\",\n className\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"item-aligned\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n [\"relative z-50 max-h-96 min-w-[8rem] overflow-hidden\", \n \"rounded-md border border-gray-200 dark:border-gray-700\",\n \"bg-white dark:bg-gray-900 text-foreground\", \n \"shadow-lg dark:shadow-gray-900/20\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\", \n \"data-[state=open]:duration-150\"],\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\ntype SelectItemVariant = \"default\" | \"subtle\" | \"destructive\" | \"success\" | \"warning\";\ntype SelectItemSize = \"sm\" | \"md\" | \"lg\";\n\ninterface SelectItemProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> {\n /** Visual variant */\n variant?: SelectItemVariant;\n /** Size */\n size?: SelectItemSize;\n /** Icon displayed on the right */\n rightIcon?: React.ReactNode;\n /** Custom indicator icon (instead of default check) */\n customIndicator?: React.ReactNode;\n}\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n SelectItemProps\n>(({ className, children, variant = \"default\", size = \"md\", rightIcon, customIndicator, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n \n /* Size variants */\n size === \"sm\" && \"py-1 pl-7 pr-2 text-xs\",\n size === \"md\" && \"py-1.5 pl-8 pr-2 text-sm\",\n size === \"lg\" && \"py-2 pl-9 pr-3 text-base\",\n \n /* Color variants */\n variant === \"default\" && \"focus:bg-accent focus:text-accent-foreground dark:focus:bg-gray-700 dark:focus:text-gray-100\",\n variant === \"subtle\" && \"focus:bg-gray-100 dark:focus:bg-gray-800 focus:text-foreground dark:focus:text-gray-200\",\n variant === \"destructive\" && \"text-error dark:text-red-400 focus:bg-error/10 dark:focus:bg-red-900/20 focus:text-error dark:focus:text-red-300\",\n variant === \"success\" && \"text-success dark:text-green-400 focus:bg-success/10 dark:focus:bg-green-900/20 focus:text-success dark:focus:text-green-300\",\n variant === \"warning\" && \"text-warning dark:text-yellow-400 focus:bg-warning/10 dark:focus:bg-yellow-900/20 focus:text-warning dark:focus:text-yellow-300\",\n \n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n {customIndicator || <Check className=\"h-4 w-4\" />}\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n \n {rightIcon && (\n <span className=\"ml-auto pl-2 opacity-70\">\n {rightIcon}\n </span>\n )}\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted dark:bg-gray-700\", className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { motion } from \"framer-motion\";\nimport { skeletonAnimation } from \"../../lib/micro-interactions\";\n\n/**\n * Skeleton Component\n *\n * A loading placeholder that mimics the structure of content.\n * Fully integrated with the theme system and provides various shapes, sizes, and animations.\n */\n\nconst skeletonVariants = cva(\n \"animate-pulse rounded-md\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n primary: \"bg-primary/10\",\n secondary: \"bg-secondary/10\",\n accent: \"bg-accent\",\n },\n size: {\n default: \"\",\n sm: \"scale-90\",\n lg: \"scale-110\",\n },\n shape: {\n rect: \"rounded-md\",\n circle: \"rounded-full\",\n pill: \"rounded-full\",\n },\n animation: {\n pulse: \"animate-pulse\",\n wave: \"overflow-hidden relative after:absolute after:inset-0 after:-translate-x-full after:animate-[shimmer_2s_infinite] after:bg-gradient-to-r after:from-transparent after:via-white/10 after:to-transparent dark:after:via-white/5\",\n none: \"animate-none\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n shape: \"rect\",\n animation: \"pulse\",\n },\n }\n);\n\nexport interface SkeletonProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof skeletonVariants> {\n /**\n * Height of the skeleton\n */\n height?: string | number;\n /**\n * Width of the skeleton\n */\n width?: string | number;\n /**\n * Whether the content is loaded\n */\n isLoaded?: boolean;\n /**\n * Content to show when loaded\n */\n children?: React.ReactNode;\n /**\n * Fade-in animation duration in ms\n */\n fadeInDuration?: number;\n /**\n * Use motion animation for loading state\n */\n motion?: boolean;\n}\n\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ \n className,\n variant,\n size,\n shape,\n animation,\n height,\n width,\n isLoaded = false,\n children,\n fadeInDuration = 400,\n motion: useMotion = false,\n style,\n ...props \n }, ref) => {\n // Show content when loaded\n if (isLoaded && children) {\n if (useMotion) {\n return (\n <motion.div\n ref={ref}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: fadeInDuration / 1000 }}\n className={className}\n style={{\n height,\n width,\n ...style,\n }}\n {...props}\n >\n {children}\n </motion.div>\n );\n }\n \n return (\n <div\n ref={ref}\n className={cn(\"animate-fade-in\", className)}\n style={{\n animationDuration: `${fadeInDuration}ms`,\n height,\n width,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n const SkeletonElement = useMotion ? motion.div : \"div\";\n \n return (\n <SkeletonElement\n ref={ref}\n className={cn(\n skeletonVariants({ variant, size, shape, animation }),\n \"relative isolate\",\n className\n )}\n style={{\n height,\n width,\n ...style,\n }}\n {...(useMotion ? skeletonAnimation : {})}\n {...props}\n />\n );\n }\n);\nSkeleton.displayName = \"Skeleton\";\n\n/**\n * Text Skeleton Component\n * \n * Creates skeleton loading states for text content\n */\nexport interface SkeletonTextProps extends Omit<SkeletonProps, \"children\" | \"isLoaded\"> {\n /**\n * Kaç satır gösterileceği\n */\n lines?: number;\n /**\n * Satır yüksekliği\n */\n lineHeight?: string | number;\n /**\n * Satırlar arası boşluk\n */\n spacing?: string | number;\n /**\n * Son satırın genişlik yüzdesi (0-100)\n */\n lastLineWidth?: number;\n /**\n * Rastgele satır genişlikleri\n */\n randomWidths?: boolean;\n}\n\nexport const SkeletonText = React.forwardRef<HTMLDivElement, SkeletonTextProps>(\n ({ \n className,\n lines = 3,\n lineHeight = \"0.85rem\",\n spacing = \"0.5rem\",\n lastLineWidth = 80,\n randomWidths = false,\n variant = \"default\",\n animation = \"pulse\",\n ...props \n }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col\", className)}\n style={{ gap: spacing }}\n {...props}\n >\n {Array.from({ length: lines }).map((_, i) => {\n const isLastLine = i === lines - 1;\n // Use deterministic widths based on line index for SSR compatibility\n const widthPercentage = isLastLine\n ? lastLineWidth\n : randomWidths\n ? 85 + (i % 3) * 5 // Creates a pattern: 85%, 90%, 95%, 85%, ...\n : 100;\n\n return (\n <Skeleton\n key={i}\n variant={variant}\n animation={animation}\n className=\"w-full\"\n style={{\n height: lineHeight,\n width: `${widthPercentage}%`,\n }}\n />\n );\n })}\n </div>\n );\n }\n);\nSkeletonText.displayName = \"SkeletonText\";\n\n/**\n * Avatar Skeleton Component\n */\nexport interface SkeletonAvatarProps extends Omit<SkeletonProps, \"shape\" | \"size\"> {\n /**\n * Avatar boyutu (piksel)\n */\n size?: string | number;\n}\n\nexport const SkeletonAvatar = React.forwardRef<HTMLDivElement, SkeletonAvatarProps>(\n ({ \n className,\n size = \"2.5rem\",\n variant = \"default\",\n animation = \"pulse\",\n ...props \n }, ref) => {\n return (\n <Skeleton\n ref={ref}\n variant={variant}\n animation={animation}\n shape=\"circle\"\n className={cn(\"shrink-0\", className)}\n style={{\n height: size,\n width: size,\n }}\n {...props}\n />\n );\n }\n);\nSkeletonAvatar.displayName = \"SkeletonAvatar\";\n\n/**\n * Card Skeleton Component\n */\nexport interface SkeletonCardProps extends Omit<SkeletonProps, \"children\" | \"isLoaded\"> {\n /**\n * Kart başlığının gösterilip gösterilmeyeceği\n */\n showHeader?: boolean;\n /**\n * İçerik satır sayısı\n */\n contentLines?: number;\n /**\n * Alt bilgi gösterilip gösterilmeyeceği\n */\n showFooter?: boolean;\n}\n\nexport const SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonCardProps>(\n ({ \n className,\n showHeader = true,\n contentLines = 3,\n showFooter = true,\n variant = \"default\",\n animation = \"pulse\",\n ...props \n }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"overflow-hidden rounded-md border border-border bg-background p-4\",\n className\n )}\n {...props}\n >\n {showHeader && (\n <div className=\"mb-4 flex items-center gap-4\">\n <SkeletonAvatar size=\"2.5rem\" variant={variant} animation={animation} />\n <div className=\"flex-1\">\n <Skeleton \n variant={variant} \n animation={animation} \n className=\"mb-2 h-4 w-1/3\" \n />\n <Skeleton \n variant={variant} \n animation={animation} \n className=\"h-3 w-1/4\" \n />\n </div>\n </div>\n )}\n \n <SkeletonText \n lines={contentLines} \n variant={variant} \n animation={animation} \n className=\"mb-4\" \n />\n \n {showFooter && (\n <div className=\"flex items-center justify-between mt-4 pt-4 border-t border-border\">\n <Skeleton \n variant={variant} \n animation={animation} \n className=\"h-4 w-1/4\" \n />\n <Skeleton \n variant={variant} \n animation={animation} \n className=\"h-4 w-1/5\" \n />\n </div>\n )}\n </div>\n );\n }\n);\nSkeletonCard.displayName = \"SkeletonCard\";\n\nexport { skeletonVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { format, isValid } from \"date-fns\";\nimport { Calendar as CalendarIcon, Clock } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport { Calendar } from \"./calendar\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"./popover\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { microInteractionVariants } from \"../../lib/micro-interactions\";\n\n/**\n * DatePicker Component\n * \n * A comprehensive date picker with calendar interface\n */\n\nconst datePickerVariants = cva(\n \"w-full justify-start text-left font-normal\",\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"border-2\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n minimal: \"h-auto p-0 border-0 shadow-none\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-8 px-3 text-sm\",\n lg: \"h-12 px-6 text-base\",\n icon: \"h-10 w-10\",\n },\n state: {\n default: \"\",\n error: \"border-destructive focus:ring-destructive\",\n success: \"border-success focus:ring-success\",\n warning: \"border-warning focus:ring-warning\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n state: \"default\",\n },\n }\n);\n\nexport interface DatePickerProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\">,\n VariantProps<typeof datePickerVariants> {\n /**\n * Selected date value\n */\n value?: Date;\n /**\n * Callback when date changes\n */\n onChange?: (date: Date | undefined) => void;\n /**\n * Placeholder text\n */\n placeholder?: string;\n /**\n * Date format string\n */\n formatString?: string;\n /**\n * Minimum selectable date\n */\n minDate?: Date;\n /**\n * Maximum selectable date\n */\n maxDate?: Date;\n /**\n * Disabled dates\n */\n disabledDates?: Date[];\n /**\n * Disabled days of week (0-6, Sunday is 0)\n */\n disabledDaysOfWeek?: number[];\n /**\n * Show week numbers\n */\n showWeekNumbers?: boolean;\n /**\n * Icon position\n */\n iconPosition?: \"left\" | \"right\";\n /**\n * Custom icon\n */\n icon?: React.ReactNode;\n /**\n * Allow clear\n */\n allowClear?: boolean;\n /**\n * Read only\n */\n readOnly?: boolean;\n /**\n * Show today button\n */\n showTodayButton?: boolean;\n /**\n * Calendar props\n */\n calendarProps?: React.ComponentProps<typeof Calendar>;\n}\n\nexport function DatePicker({\n className,\n variant,\n size,\n state,\n value,\n onChange,\n placeholder = \"Pick a date\",\n formatString = \"PPP\",\n minDate,\n maxDate,\n disabledDates,\n disabledDaysOfWeek,\n showWeekNumbers,\n iconPosition = \"left\",\n icon,\n allowClear = true,\n readOnly = false,\n showTodayButton = true,\n calendarProps,\n disabled,\n ...props\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false);\n const [internalDate, setInternalDate] = React.useState<Date | undefined>(value);\n\n React.useEffect(() => {\n setInternalDate(value);\n }, [value]);\n\n const handleSelect = (date: Date | undefined) => {\n setInternalDate(date);\n onChange?.(date);\n if (date) {\n setOpen(false);\n }\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n handleSelect(undefined);\n };\n\n const handleToday = () => {\n const today = new Date();\n handleSelect(today);\n };\n\n const isDateDisabled = (date: Date) => {\n if (minDate && date < minDate) return true;\n if (maxDate && date > maxDate) return true;\n if (disabledDates?.some(d => d.toDateString() === date.toDateString())) return true;\n if (disabledDaysOfWeek?.includes(date.getDay())) return true;\n return false;\n };\n\n const displayValue = internalDate && isValid(internalDate)\n ? format(internalDate, formatString)\n : null;\n\n const iconElement = icon || <CalendarIcon className=\"h-4 w-4\" />;\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant={variant === \"minimal\" ? \"ghost\" : variant || \"outline\"}\n className={cn(\n datePickerVariants({ variant, size, state }),\n !displayValue && \"text-muted-foreground\",\n className\n )}\n disabled={disabled || readOnly}\n {...props}\n >\n <AnimatePresence mode=\"wait\">\n <motion.div\n key={displayValue || \"placeholder\"}\n initial={{ opacity: 0, y: -2 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: 2 }}\n transition={{ duration: 0.15 }}\n className=\"flex items-center gap-2 flex-1\"\n >\n {iconPosition === \"left\" && iconElement}\n <span className=\"flex-1 truncate\">\n {displayValue || placeholder}\n </span>\n {iconPosition === \"right\" && iconElement}\n </motion.div>\n </AnimatePresence>\n {allowClear && displayValue && !readOnly && !disabled && (\n <motion.div\n initial={{ opacity: 0, scale: 0.8 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.8 }}\n whileHover={{ scale: 1.1 }}\n whileTap={{ scale: 0.9 }}\n className=\"ml-2 h-4 w-4 shrink-0 opacity-50 hover:opacity-100 transition-opacity cursor-pointer\"\n onClick={handleClear}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleClear(e as any);\n }\n }}\n >\n <span className=\"sr-only\">Clear date</span>\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </motion.div>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent \n className=\"w-[360px] p-0 shadow-xl rounded-2xl border-0 bg-background/95 backdrop-blur-sm\" \n align=\"start\"\n sideOffset={12}\n >\n <motion.div\n {...microInteractionVariants.fadeIn}\n className=\"rounded-2xl bg-background overflow-hidden\"\n >\n <Calendar\n mode=\"single\"\n selected={internalDate}\n onSelect={handleSelect}\n disabled={isDateDisabled}\n showOutsideDays={false}\n className={cn(\"rounded-2xl\", calendarProps?.className)}\n {...calendarProps}\n />\n {showTodayButton && (\n <div className=\"border-t px-4 py-3\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleToday}\n className=\"w-full justify-center hover:bg-accent hover:text-accent-foreground transition-all duration-200\"\n >\n Today\n </Button>\n </div>\n )}\n </motion.div>\n </PopoverContent>\n </Popover>\n );\n}\n\n/**\n * DateRangePicker Component\n * \n * Select a date range with start and end dates\n */\n\nexport interface DateRangePickerProps\n extends Omit<DatePickerProps, \"value\" | \"onChange\"> {\n /**\n * Selected date range\n */\n value?: { from: Date | undefined; to: Date | undefined };\n /**\n * Callback when date range changes\n */\n onChange?: (range: { from: Date | undefined; to: Date | undefined } | undefined) => void;\n /**\n * Separator between dates\n */\n separator?: string;\n}\n\nexport function DateRangePicker({\n className,\n value,\n onChange,\n placeholder = \"Pick a date range\",\n formatString = \"LLL dd, y\",\n separator = \" - \",\n ...props\n}: DateRangePickerProps) {\n const [open, setOpen] = React.useState(false);\n const [internalRange, setInternalRange] = React.useState(value);\n\n React.useEffect(() => {\n setInternalRange(value);\n }, [value]);\n\n const handleSelect = (range: { from: Date | undefined; to: Date | undefined } | undefined) => {\n setInternalRange(range);\n onChange?.(range);\n if (range?.from && range?.to) {\n setOpen(false);\n }\n };\n\n const displayValue = React.useMemo(() => {\n if (!internalRange?.from) return null;\n if (!internalRange?.to) {\n return format(internalRange.from, formatString);\n }\n return `${format(internalRange.from, formatString)}${separator}${format(\n internalRange.to,\n formatString\n )}`;\n }, [internalRange, formatString, separator]);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant={props.variant === \"minimal\" ? \"ghost\" : props.variant || \"outline\"}\n className={cn(\n datePickerVariants({ \n variant: props.variant, \n size: props.size, \n state: props.state \n }),\n !displayValue && \"text-muted-foreground\",\n className\n )}\n disabled={props.disabled || props.readOnly}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n <span className=\"flex-1 truncate text-left\">\n {displayValue || placeholder}\n </span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0 shadow-xl rounded-2xl border-0 bg-background/95 backdrop-blur-sm\" align=\"start\" sideOffset={12}>\n <Calendar\n mode=\"range\"\n defaultMonth={internalRange?.from}\n selected={internalRange}\n onSelect={handleSelect as any}\n showOutsideDays={false}\n {...props.calendarProps}\n className=\"rounded-2xl\"\n />\n </PopoverContent>\n </Popover>\n );\n}\n\n/**\n * DateTimePicker Component\n * \n * Combined date and time picker\n */\n\nexport interface DateTimePickerProps extends DatePickerProps {\n /**\n * Show time picker\n */\n showTimePicker?: boolean;\n /**\n * Time format (12 or 24 hour)\n */\n timeFormat?: \"12\" | \"24\";\n /**\n * Time interval in minutes\n */\n timeInterval?: number;\n}\n\nexport function DateTimePicker({\n value,\n onChange,\n formatString = \"PPP p\",\n showTimePicker = true,\n timeFormat = \"24\",\n timeInterval = 15,\n ...props\n}: DateTimePickerProps) {\n const [date, setDate] = React.useState<Date | undefined>(value);\n const [time, setTime] = React.useState<string>(\n value ? format(value, timeFormat === \"24\" ? \"HH:mm\" : \"hh:mm a\") : \"00:00\"\n );\n\n const handleDateChange = (newDate: Date | undefined) => {\n if (!newDate) {\n setDate(undefined);\n onChange?.(undefined);\n return;\n }\n\n const [hours, minutes] = time.split(\":\").map(Number);\n newDate.setHours(hours, minutes);\n setDate(newDate);\n onChange?.(newDate);\n };\n\n const handleTimeChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n const newTime = e.target.value;\n setTime(newTime);\n\n if (date) {\n const [hours, minutes] = newTime.split(\":\").map(Number);\n const newDate = new Date(date);\n newDate.setHours(hours, minutes);\n setDate(newDate);\n onChange?.(newDate);\n }\n };\n\n // Generate time options\n const timeOptions = React.useMemo(() => {\n const options = [];\n for (let h = 0; h < 24; h++) {\n for (let m = 0; m < 60; m += timeInterval) {\n const hour24 = h.toString().padStart(2, \"0\");\n const minute = m.toString().padStart(2, \"0\");\n const time24 = `${hour24}:${minute}`;\n \n if (timeFormat === \"12\") {\n const hour12 = h === 0 ? 12 : h > 12 ? h - 12 : h;\n const ampm = h < 12 ? \"AM\" : \"PM\";\n const time12 = `${hour12}:${minute} ${ampm}`;\n options.push({ value: time24, label: time12 });\n } else {\n options.push({ value: time24, label: time24 });\n }\n }\n }\n return options;\n }, [timeFormat, timeInterval]);\n\n return (\n <div className=\"flex flex-col gap-2\">\n <DatePicker\n {...props}\n value={date}\n onChange={handleDateChange}\n formatString=\"PPP\"\n showTodayButton={false}\n />\n {showTimePicker && date && (\n <motion.div\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: \"auto\" }}\n exit={{ opacity: 0, height: 0 }}\n className=\"flex items-center gap-2\"\n >\n <Clock className=\"h-4 w-4 text-muted-foreground\" />\n <select\n value={time}\n onChange={handleTimeChange}\n className=\"flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n >\n {timeOptions.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n </motion.div>\n )}\n </div>\n );\n}\n\n/**\n * MonthPicker Component\n * \n * Select month and year\n */\n\nexport interface MonthPickerProps extends Omit<DatePickerProps, \"formatString\"> {\n /**\n * Format for displaying the month\n */\n formatString?: string;\n}\n\nexport function MonthPicker({\n value,\n onChange,\n placeholder = \"Pick a month\",\n formatString = \"MMMM yyyy\",\n ...props\n}: MonthPickerProps) {\n const [open, setOpen] = React.useState(false);\n const [viewDate, setViewDate] = React.useState(value || new Date());\n\n const months = [\n \"January\", \"February\", \"March\", \"April\",\n \"May\", \"June\", \"July\", \"August\",\n \"September\", \"October\", \"November\", \"December\"\n ];\n\n const handleMonthSelect = (monthIndex: number) => {\n const newDate = new Date(viewDate);\n newDate.setMonth(monthIndex);\n onChange?.(newDate);\n setOpen(false);\n };\n\n const handleYearChange = (increment: number) => {\n const newDate = new Date(viewDate);\n newDate.setFullYear(newDate.getFullYear() + increment);\n setViewDate(newDate);\n };\n\n const displayValue = value ? format(value, formatString) : null;\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant={props.variant || \"outline\"}\n className={cn(\n datePickerVariants({ \n variant: props.variant, \n size: props.size, \n state: props.state \n }),\n !displayValue && \"text-muted-foreground\",\n props.className\n )}\n disabled={props.disabled || props.readOnly}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {displayValue || placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-64 p-0\" align=\"start\">\n <div className=\"p-3\">\n <div className=\"flex items-center justify-between mb-3\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => handleYearChange(-1)}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <span className=\"font-semibold\">\n {viewDate.getFullYear()}\n </span>\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => handleYearChange(1)}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n <div className=\"grid grid-cols-3 gap-2\">\n {months.map((month, index) => (\n <Button\n key={month}\n variant={value && value.getMonth() === index ? \"default\" : \"outline\"}\n size=\"sm\"\n onClick={() => handleMonthSelect(index)}\n className=\"h-8 text-xs\"\n >\n {month.slice(0, 3)}\n </Button>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n\n// Re-export utilities\nexport { format } from \"date-fns\";\n\n// Import ChevronLeft and ChevronRight for MonthPicker\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";","\"use client\"\n\nimport React, { useCallback, useState, useId } from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { Button } from './button'\nimport { Progress } from './progress'\nimport { Badge } from './badge'\nimport { cn } from '../../lib/utils'\nimport { \n Upload, \n X, \n File, \n Image as ImageIcon, \n Video, \n Music, \n FileText,\n CheckCircle,\n AlertCircle,\n Loader2\n} from 'lucide-react'\n\nexport interface FileUploadProps {\n accept?: string\n multiple?: boolean\n maxSize?: number // in bytes\n maxFiles?: number\n disabled?: boolean\n className?: string\n onUpload?: (files: File[]) => Promise<void>\n onRemove?: (fileId: string) => void\n children?: React.ReactNode\n}\n\ninterface UploadedFile {\n id: string\n file: File\n progress: number\n status: 'uploading' | 'success' | 'error'\n preview?: string\n}\n\nconst getFileIcon = (type: string) => {\n if (type.startsWith('image/')) return <ImageIcon className=\"h-4 w-4\" />\n if (type.startsWith('video/')) return <Video className=\"h-4 w-4\" />\n if (type.startsWith('audio/')) return <Music className=\"h-4 w-4\" />\n if (type.includes('text') || type.includes('document')) return <FileText className=\"h-4 w-4\" />\n return <File className=\"h-4 w-4\" />\n}\n\nconst formatFileSize = (bytes: number): string => {\n if (bytes === 0) return '0 Bytes'\n const k = 1024\n const sizes = ['Bytes', 'KB', 'MB', 'GB']\n const i = Math.floor(Math.log(bytes) / Math.log(k))\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]\n}\n\nconst FileItem = ({ \n uploadedFile, \n onRemove \n}: { \n uploadedFile: UploadedFile\n onRemove: (id: string) => void \n}) => {\n const { id, file, progress, status, preview } = uploadedFile\n\n return (\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n className=\"flex items-center space-x-3 p-3 border rounded-lg bg-background\"\n >\n {/* File Preview/Icon */}\n <div className=\"flex-shrink-0\">\n {preview ? (\n <img \n src={preview} \n alt={file.name}\n className=\"h-10 w-10 object-cover rounded\"\n />\n ) : (\n <div className=\"h-10 w-10 rounded bg-muted flex items-center justify-center\">\n {getFileIcon(file.type)}\n </div>\n )}\n </div>\n\n {/* File Info */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center justify-between\">\n <p className=\"text-sm font-medium truncate\">{file.name}</p>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 w-6 p-0\"\n onClick={() => onRemove(id)}\n >\n <X className=\"h-3 w-3\" />\n </Button>\n </div>\n \n <div className=\"flex items-center space-x-2 mt-1\">\n <p className=\"text-xs text-muted-foreground\">{formatFileSize(file.size)}</p>\n \n {/* Status Badge */}\n {status === 'uploading' && (\n <Badge variant=\"secondary\" className=\"h-5\">\n <Loader2 className=\"h-3 w-3 mr-1 animate-spin\" />\n Uploading\n </Badge>\n )}\n {status === 'success' && (\n <Badge variant=\"default\" className=\"h-5 bg-green-500\">\n <CheckCircle className=\"h-3 w-3 mr-1\" />\n Done\n </Badge>\n )}\n {status === 'error' && (\n <Badge variant=\"destructive\" className=\"h-5\">\n <AlertCircle className=\"h-3 w-3 mr-1\" />\n Error\n </Badge>\n )}\n </div>\n\n {/* Progress Bar */}\n {status === 'uploading' && (\n <div className=\"mt-2\">\n <Progress value={progress} className=\"h-1\" />\n </div>\n )}\n </div>\n </motion.div>\n )\n}\n\nexport const FileUpload = React.forwardRef<HTMLDivElement, FileUploadProps>(\n ({ \n accept = \"*\",\n multiple = true,\n maxSize = 10 * 1024 * 1024, // 10MB\n maxFiles = 5,\n disabled = false,\n className,\n onUpload,\n onRemove,\n children,\n ...props \n }, ref) => {\n const [uploadedFiles, setUploadedFiles] = useState<UploadedFile[]>([])\n const [isDragOver, setIsDragOver] = useState(false)\n const [error, setError] = useState<string | null>(null)\n\n const validateFile = (file: File): string | null => {\n if (file.size > maxSize) {\n return `File size exceeds ${formatFileSize(maxSize)}`\n }\n\n if (accept !== \"*\" && !accept.split(',').some(type => {\n const cleanType = type.trim()\n if (cleanType.includes('*')) {\n return file.type.startsWith(cleanType.replace('*', ''))\n }\n return file.type === cleanType\n })) {\n return `File type not supported`\n }\n\n return null\n }\n\n const processFiles = useCallback(async (files: FileList | File[]) => {\n const fileArray = Array.from(files)\n setError(null)\n\n // Check total file count\n if (uploadedFiles.length + fileArray.length > maxFiles) {\n setError(`Maximum ${maxFiles} files allowed`)\n return\n }\n\n const validFiles: File[] = []\n const errors: string[] = []\n\n // Validate each file\n fileArray.forEach(file => {\n const validationError = validateFile(file)\n if (validationError) {\n errors.push(`${file.name}: ${validationError}`)\n } else {\n validFiles.push(file)\n }\n })\n\n if (errors.length > 0) {\n setError(errors.join(', '))\n return\n }\n\n // Create uploaded file entries\n const newUploadedFiles: UploadedFile[] = validFiles.map((file, index) => ({\n id: `${Date.now()}-${index}-${file.name.replace(/[^a-zA-Z0-9]/g, '')}`,\n file,\n progress: 0,\n status: 'uploading' as const,\n preview: file.type.startsWith('image/') ? URL.createObjectURL(file) : undefined\n }))\n\n setUploadedFiles(prev => [...prev, ...newUploadedFiles])\n\n // Simulate upload progress\n for (const uploadedFile of newUploadedFiles) {\n let progress = 0\n const interval = setInterval(() => {\n progress += 15 + (uploadedFile.file.size % 10) // Deterministic progress based on file size\n if (progress >= 100) {\n progress = 100\n clearInterval(interval)\n \n setUploadedFiles(prev => \n prev.map(f => \n f.id === uploadedFile.id \n ? { ...f, progress: 100, status: 'success' as const }\n : f\n )\n )\n } else {\n setUploadedFiles(prev => \n prev.map(f => \n f.id === uploadedFile.id \n ? { ...f, progress }\n : f\n )\n )\n }\n }, 200)\n }\n\n // Call onUpload if provided\n if (onUpload) {\n try {\n await onUpload(validFiles)\n } catch (error) {\n console.error('Upload failed:', error)\n setUploadedFiles(prev => \n prev.map(f => \n newUploadedFiles.some(nf => nf.id === f.id)\n ? { ...f, status: 'error' as const }\n : f\n )\n )\n }\n }\n }, [uploadedFiles.length, maxFiles, maxSize, accept, onUpload])\n\n const handleDrop = useCallback((e: React.DragEvent) => {\n e.preventDefault()\n setIsDragOver(false)\n \n if (disabled) return\n \n const files = e.dataTransfer.files\n if (files.length > 0) {\n processFiles(files)\n }\n }, [processFiles, disabled])\n\n const handleDragOver = useCallback((e: React.DragEvent) => {\n e.preventDefault()\n if (!disabled) {\n setIsDragOver(true)\n }\n }, [disabled])\n\n const handleDragLeave = useCallback((e: React.DragEvent) => {\n e.preventDefault()\n setIsDragOver(false)\n }, [])\n\n const handleFileSelect = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files\n if (files && files.length > 0) {\n processFiles(files)\n }\n // Reset input value\n e.target.value = ''\n }, [processFiles])\n\n const removeFile = useCallback((fileId: string) => {\n setUploadedFiles(prev => {\n const fileToRemove = prev.find(f => f.id === fileId)\n if (fileToRemove?.preview) {\n URL.revokeObjectURL(fileToRemove.preview)\n }\n return prev.filter(f => f.id !== fileId)\n })\n \n if (onRemove) {\n onRemove(fileId)\n }\n }, [onRemove])\n\n return (\n <div ref={ref} className={cn(\"space-y-4\", className)} {...props}>\n {/* Upload Area */}\n <motion.div\n className={cn(\n \"relative border-2 border-dashed rounded-lg p-8 text-center transition-colors\",\n isDragOver && \"border-primary bg-primary/5\",\n disabled && \"opacity-50 cursor-not-allowed\",\n !disabled && \"hover:border-primary/50 cursor-pointer\"\n )}\n onDrop={handleDrop}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n animate={{\n scale: isDragOver ? 1.02 : 1,\n borderColor: isDragOver ? \"hsl(var(--primary))\" : \"hsl(var(--border))\"\n }}\n >\n <input\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleFileSelect}\n className=\"absolute inset-0 w-full h-full opacity-0 cursor-pointer\"\n />\n \n {children || (\n <div className=\"space-y-4\">\n <div className=\"mx-auto h-12 w-12 text-muted-foreground\">\n <Upload className=\"h-full w-full\" />\n </div>\n <div>\n <p className=\"text-lg font-medium\">\n {isDragOver ? 'Drop files here' : 'Upload files'}\n </p>\n <p className=\"text-sm text-muted-foreground\">\n Drag & drop files here, or click to select\n </p>\n <p className=\"text-xs text-muted-foreground mt-2\">\n Max {maxFiles} files, {formatFileSize(maxSize)} each\n </p>\n </div>\n <Button variant=\"outline\" disabled={disabled}>\n Select Files\n </Button>\n </div>\n )}\n </motion.div>\n\n {/* Error Message */}\n <AnimatePresence>\n {error && (\n <motion.div\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n className=\"flex items-center space-x-2 text-sm text-destructive\"\n >\n <AlertCircle className=\"h-4 w-4\" />\n <span>{error}</span>\n </motion.div>\n )}\n </AnimatePresence>\n\n {/* Uploaded Files */}\n <AnimatePresence>\n {uploadedFiles.length > 0 && (\n <motion.div\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: 'auto' }}\n exit={{ opacity: 0, height: 0 }}\n className=\"space-y-2\"\n >\n <h4 className=\"text-sm font-medium\">\n Uploaded Files ({uploadedFiles.length})\n </h4>\n <div className=\"space-y-2\">\n <AnimatePresence>\n {uploadedFiles.map(uploadedFile => (\n <FileItem\n key={uploadedFile.id}\n uploadedFile={uploadedFile}\n onRemove={removeFile}\n />\n ))}\n </AnimatePresence>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n )\n }\n)\n\nFileUpload.displayName = \"FileUpload\"","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Progress Bileşeni\n *\n * İlerleme durumunu görsel olarak gösteren, tema sistemiyle tam entegre bir bileşen.\n * Yükleme işlemleri, form gönderimi ve diğer zaman alan işlemleri göstermek için kullanılır.\n */\n\nconst progressVariants = cva(\n \"relative overflow-hidden bg-muted\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n primary: \"bg-primary/20\",\n secondary: \"bg-secondary/20\",\n success: \"bg-success/20\",\n warning: \"bg-warning/20\",\n error: \"bg-error/20\",\n },\n size: {\n xs: \"h-1\",\n sm: \"h-1.5\",\n default: \"h-2\",\n md: \"h-2.5\",\n lg: \"h-3\",\n xl: \"h-4\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n default: \"rounded-md\", \n lg: \"rounded-lg\",\n full: \"rounded-full\",\n },\n animation: {\n default: \"[&>div]:transition-all [&>div]:duration-500\",\n smooth: \"[&>div]:transition-all [&>div]:duration-700\",\n fast: \"[&>div]:transition-all [&>div]:duration-300\",\n none: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"full\",\n animation: \"default\",\n },\n }\n);\n\nconst progressIndicatorVariants = cva(\n \"h-full w-full flex-1\",\n {\n variants: {\n variant: {\n default: \"bg-foreground\",\n primary: \"bg-primary\",\n secondary: \"bg-secondary\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n error: \"bg-error\",\n },\n animation: {\n default: \"transition-all duration-500\",\n smooth: \"transition-all duration-700\",\n fast: \"transition-all duration-300\",\n none: \"\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n animation: \"default\",\n },\n }\n);\n\nexport interface ProgressProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof progressVariants> {\n /**\n * İlerleme çubuğu değeri (0-100)\n */\n value?: number;\n /**\n * İndikatör (dolgu) için renk varyantı\n */\n indicatorVariant?: VariantProps<typeof progressIndicatorVariants>[\"variant\"];\n /**\n * İlerleme durumunu gösteren metin görünürlüğü\n */\n showValueLabel?: boolean;\n /**\n * İlerleme değeri etiketi için format (ör: \"30%\" veya \"3/10\")\n */\n valueLabel?: string;\n /**\n * Etiket stili\n */\n labelClassName?: string;\n /**\n * Belirsiz ilerleme animasyonu (indeterminate)\n */\n indeterminate?: boolean;\n /**\n * İlerleme değeri maksimumu (default: 100)\n */\n max?: number;\n}\n\nconst Progress = React.forwardRef<\n HTMLDivElement,\n ProgressProps\n>(({\n className,\n value = 0,\n variant,\n size,\n radius,\n animation,\n indicatorVariant,\n showValueLabel = false,\n valueLabel,\n labelClassName,\n indeterminate = false,\n max = 100,\n ...props\n}, ref) => {\n // İlerleme değeri 0-100 arasında olmalı\n const normalizedValue = Math.max(0, Math.min(value, max));\n const percentage = max > 0 ? (normalizedValue / max) * 100 : 0;\n \n // Etiket içeriği\n const label = valueLabel || `${Math.round(percentage)}%`;\n \n return (\n <>\n {showValueLabel && (\n <div className=\"flex justify-between items-center mb-1\">\n <span \n className={cn(\n \"text-sm font-medium text-muted-foreground\",\n labelClassName\n )}\n >\n {label}\n </span>\n </div>\n )}\n <div\n ref={ref}\n className={cn(progressVariants({ variant, size, radius, animation }), className)}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={indeterminate ? undefined : normalizedValue}\n {...props}\n >\n <div\n className={cn(\n progressIndicatorVariants({ variant: indicatorVariant || \"primary\", animation }),\n indeterminate && \"animate-indeterminate-progress\"\n )}\n style={indeterminate ? {} : { transform: `translateX(-${100 - percentage}%)` }}\n />\n </div>\n </>\n );\n});\nProgress.displayName = \"Progress\";\n\n// Not: Belirsiz ilerleme animasyonu için CSS keyframe styles.css veya Tailwind config içinde tanımlanmalı\n// @keyframes indeterminate-progress içeren bir tanımlama yapılmalıdır\n// .animate-indeterminate-progress sınıfı da bu animasyonu kullanmalıdır\n\nexport { Progress, progressVariants };\n","\"use client\";\n\nimport { useState, useEffect } from 'react';\nimport { Star, GitFork, Eye, ExternalLink } from 'lucide-react';\nimport { Button } from './button';\nimport { cn } from '../../lib/utils';\n\ninterface GitHubStarsProps {\n className?: string;\n size?: 'sm' | 'md' | 'lg';\n showForks?: boolean;\n showWatchers?: boolean;\n repoUrl?: string;\n}\n\ninterface GitHubStats {\n stars: number;\n forks: number;\n watchers: number;\n isLive: boolean;\n}\n\nexport function GitHubStars({\n className,\n size = 'md',\n showForks = true,\n showWatchers = false,\n repoUrl = 'https://github.com/moonui/moonui'\n}: GitHubStarsProps) {\n const [stats, setStats] = useState<GitHubStats | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n const fetchStats = async () => {\n try {\n const response = await fetch('/api/github-stars');\n const data = await response.json();\n setStats(data);\n } catch (error) {\n console.error('Failed to fetch GitHub stats:', error);\n // Set fallback data\n setStats({\n stars: 1240,\n forks: 89,\n watchers: 156,\n isLive: false\n });\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchStats();\n }, []);\n\n const formatNumber = (num: number) => {\n if (num >= 1000) {\n return (num / 1000).toFixed(1) + 'k';\n }\n return num.toString();\n };\n\n const sizeClasses = {\n sm: 'text-sm gap-2',\n md: 'text-base gap-3',\n lg: 'text-lg gap-4'\n };\n\n const iconSizes = {\n sm: 14,\n md: 16,\n lg: 20\n };\n\n if (isLoading) {\n return (\n <div className={cn(\"flex items-center animate-pulse\", sizeClasses[size], className)}>\n <div className=\"flex items-center gap-1\">\n <div className=\"w-4 h-4 bg-gray-300 dark:bg-gray-700 rounded\"></div>\n <div className=\"w-8 h-4 bg-gray-300 dark:bg-gray-700 rounded\"></div>\n </div>\n {showForks && (\n <div className=\"flex items-center gap-1\">\n <div className=\"w-4 h-4 bg-gray-300 dark:bg-gray-700 rounded\"></div>\n <div className=\"w-6 h-4 bg-gray-300 dark:bg-gray-700 rounded\"></div>\n </div>\n )}\n </div>\n );\n }\n\n if (!stats) {\n return null;\n }\n\n return (\n <div className={cn(\"flex items-center\", sizeClasses[size], className)}>\n <a\n href={repoUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1 text-gray-700 dark:text-gray-300 hover:text-primary transition-colors\"\n >\n <Star className=\"fill-current text-yellow-500\" size={iconSizes[size]} />\n <span className=\"font-medium\">{formatNumber(stats.stars)}</span>\n </a>\n \n {showForks && (\n <a\n href={`${repoUrl}/network/members`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1 text-gray-700 dark:text-gray-300 hover:text-primary transition-colors\"\n >\n <GitFork size={iconSizes[size]} />\n <span className=\"font-medium\">{formatNumber(stats.forks)}</span>\n </a>\n )}\n \n {showWatchers && (\n <a\n href={`${repoUrl}/watchers`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1 text-gray-700 dark:text-gray-300 hover:text-primary transition-colors\"\n >\n <Eye size={iconSizes[size]} />\n <span className=\"font-medium\">{formatNumber(stats.watchers)}</span>\n </a>\n )}\n \n {!stats.isLive && (\n <span className=\"text-xs text-gray-500 dark:text-gray-500 ml-2\">\n (demo)\n </span>\n )}\n </div>\n );\n}\n\nexport function GitHubStarButton({\n className,\n size = 'md',\n repoUrl = 'https://github.com/moonui/moonui'\n}: {\n className?: string;\n size?: 'sm' | 'md' | 'lg';\n repoUrl?: string;\n}) {\n const [stars, setStars] = useState<number | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n const fetchStats = async () => {\n try {\n const response = await fetch('/api/github-stars');\n const data = await response.json();\n setStars(data.stars);\n } catch (error) {\n console.error('Failed to fetch GitHub stats:', error);\n setStars(1240);\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchStats();\n }, []);\n\n const formatNumber = (num: number) => {\n if (num >= 1000) {\n return (num / 1000).toFixed(1) + 'k';\n }\n return num.toString();\n };\n\n return (\n <Button\n variant=\"outline\"\n size={size}\n className={cn(\"group\", className)}\n asChild\n >\n <a\n href={repoUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2\"\n >\n <Star className=\"fill-current text-yellow-500 group-hover:scale-110 transition-transform\" size={16} />\n <span>Star on GitHub</span>\n {!isLoading && stars && (\n <span className=\"px-2 py-0.5 bg-gray-100 dark:bg-gray-800 rounded-full text-xs font-medium\">\n {formatNumber(stars)}\n </span>\n )}\n <ExternalLink size={14} className=\"opacity-50 group-hover:opacity-100 transition-opacity\" />\n </a>\n </Button>\n );\n}","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"../../lib/utils\"\n\ninterface MoonLogoProps extends React.SVGProps<SVGSVGElement> {\n variant?: \"default\" | \"monochrome\" | \"gradient\"\n showText?: boolean\n}\n\nexport function MoonLogo({ \n className, \n variant = \"default\",\n showText = true,\n ...props \n}: MoonLogoProps) {\n const logoId = React.useId()\n const gradientId = `moon-gradient-${logoId}`\n \n return (\n <div className={cn(\"flex items-center gap-2\", className)}>\n {/* Moon Icon */}\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"flex-shrink-0\"\n {...props}\n >\n {variant === \"gradient\" && (\n <defs>\n <linearGradient id={gradientId} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor=\"#3B82F6\" />\n <stop offset=\"50%\" stopColor=\"#8B5CF6\" />\n <stop offset=\"100%\" stopColor=\"#EC4899\" />\n </linearGradient>\n </defs>\n )}\n \n {/* Moon Circle */}\n <circle\n cx=\"16\"\n cy=\"16\"\n r=\"14\"\n fill={variant === \"gradient\" ? `url(#${gradientId})` : \"currentColor\"}\n className={variant === \"default\" ? \"fill-primary\" : \"\"}\n />\n \n {/* Crescent cutout */}\n <circle\n cx=\"22\"\n cy=\"10\"\n r=\"10\"\n fill=\"white\"\n className=\"dark:fill-background\"\n />\n </svg>\n \n {/* Text */}\n {showText && (\n <span className=\"text-xl font-bold\">\n <span className=\"text-foreground\">Moon</span>\n <span className=\"text-primary\">UI</span>\n </span>\n )}\n </div>\n )\n}\n\nexport function MoonLogoIcon({ \n className, \n variant = \"default\",\n ...props \n}: Omit<MoonLogoProps, \"showText\">) {\n return <MoonLogo showText={false} className={className} variant={variant} {...props} />\n}\n\nexport function MoonLogoAnimated({ \n className, \n variant = \"default\",\n showText = true,\n ...props \n}: MoonLogoProps) {\n return (\n <MoonLogo \n className={cn(\n \"transition-all duration-300 hover:scale-105\",\n className\n )} \n variant={variant}\n showText={showText}\n {...props}\n />\n )\n}","import * as React from \"react\"\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\"\nimport { cn } from \"../../lib/utils\"\nimport { ButtonProps, buttonVariants } from \"./button\"\n\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n)\nPagination.displayName = \"Pagination\"\n\nconst PaginationContent = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n))\nPaginationContent.displayName = \"PaginationContent\"\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li ref={ref} className={cn(\"\", className)} {...props} />\n))\nPaginationItem.displayName = \"PaginationItem\"\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Pick<ButtonProps, \"size\"> &\n React.ComponentProps<\"a\">\n\nconst PaginationLink = ({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) => (\n <a\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n buttonVariants({\n variant: isActive ? \"outline\" : \"ghost\",\n size,\n }),\n className\n )}\n {...props}\n />\n)\nPaginationLink.displayName = \"PaginationLink\"\n\nconst PaginationPrevious = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn(\"gap-1 pl-2.5\", className)}\n {...props}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n <span>Previous</span>\n </PaginationLink>\n)\nPaginationPrevious.displayName = \"PaginationPrevious\"\n\nconst PaginationNext = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn(\"gap-1 pr-2.5\", className)}\n {...props}\n >\n <span>Next</span>\n <ChevronRight className=\"h-4 w-4\" />\n </PaginationLink>\n)\nPaginationNext.displayName = \"PaginationNext\"\n\nconst PaginationEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n aria-hidden\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n)\nPaginationEllipsis.displayName = \"PaginationEllipsis\"\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n}","\"use client\";\n\nimport * as React from \"react\";\nimport { Circle } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Radio Group Component\n *\n * Accessible, customizable, and fully integrated with the theme system radio button group.\n * Allows users to select a single option from a group of choices.\n */\n\nconst radioGroupItemVariants = cva(\n \"aspect-square border focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"border-border bg-background text-primary\",\n outline: \"border-border bg-transparent text-primary\",\n filled: \"border-primary bg-primary/10 text-primary\",\n },\n size: {\n sm: \"h-3.5 w-3.5\",\n default: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport interface RadioGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Radio group value\n */\n value?: string;\n /**\n * Function to call when radio group value changes\n */\n onValueChange?: (value: string) => void;\n /**\n * Radio group disabled state\n */\n disabled?: boolean;\n /**\n * Radio group name\n */\n name?: string;\n}\n\nconst RadioGroupContext = React.createContext<{\n value?: string;\n onValueChange?: (value: string) => void;\n disabled?: boolean;\n name?: string;\n}>({});\n\nconst RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\n ({ className, value, onValueChange, disabled, name, ...props }, ref) => {\n return (\n <RadioGroupContext.Provider value={{ value, onValueChange, disabled, name }}>\n <div\n ref={ref}\n role=\"radiogroup\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </RadioGroupContext.Provider>\n );\n }\n);\nRadioGroup.displayName = \"RadioGroup\";\n\nexport interface RadioGroupItemProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n VariantProps<typeof radioGroupItemVariants> {\n /**\n * Custom indicator component\n */\n indicator?: React.ReactNode;\n /**\n * HTML id for radio button\n */\n id?: string;\n /**\n * Radio button value\n */\n value: string;\n /**\n * Radio button disabled state\n */\n disabled?: boolean;\n}\n\nconst RadioGroupItem = React.forwardRef<\n HTMLInputElement,\n RadioGroupItemProps\n>(({ className, variant, size, indicator, id, value, disabled, ...props }, ref) => {\n // Get context values from radio group\n const radioGroup = React.useContext(RadioGroupContext);\n const generatedId = React.useId();\n const radioId = id || generatedId;\n const isChecked = radioGroup.value === value;\n \n // Call onValueChange function when RadioGroupItem changes\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (radioGroup.onValueChange) {\n radioGroup.onValueChange(e.target.value);\n }\n \n if (props.onChange) {\n props.onChange(e);\n }\n };\n \n return (\n <div className=\"relative flex items-center\">\n <input\n type=\"radio\"\n id={radioId}\n ref={ref}\n value={value}\n checked={isChecked}\n disabled={disabled || radioGroup.disabled}\n name={radioGroup.name}\n onChange={handleChange}\n className=\"sr-only\"\n {...props}\n />\n <label\n htmlFor={radioId}\n className={cn(\n radioGroupItemVariants({ variant, size }),\n \"rounded-full\",\n \"focus-visible:ring-primary/50\",\n \"relative inline-flex shrink-0 cursor-pointer items-center justify-center overflow-hidden\",\n disabled && \"cursor-not-allowed opacity-50\",\n className\n )}\n >\n <span className={cn(\n \"absolute inset-0 pointer-events-none\",\n isChecked && \"flex items-center justify-center\"\n )}>\n {isChecked && (indicator || <Circle className=\"h-[60%] w-[60%] fill-current text-current\" />)}\n </span>\n </label>\n </div>\n );\n});\nRadioGroupItem.displayName = \"RadioGroupItem\";\n\n// Radio Label Component\ninterface RadioLabelProps extends React.HTMLAttributes<HTMLLabelElement> {\n /**\n * HTML id for radio button\n */\n htmlFor?: string;\n /**\n * Label content\n */\n children: React.ReactNode;\n /**\n * Disabled state style\n */\n disabled?: boolean;\n}\n\nconst RadioLabel = React.forwardRef<HTMLLabelElement, RadioLabelProps>(\n ({ className, htmlFor, children, disabled = false, ...props }, ref) => {\n return (\n <label\n ref={ref}\n htmlFor={htmlFor}\n className={cn(\n \"text-sm font-medium leading-none ml-2 text-foreground\",\n disabled && \"cursor-not-allowed opacity-70\",\n className\n )}\n {...props}\n >\n {children}\n </label>\n );\n }\n);\nRadioLabel.displayName = \"RadioLabel\";\n\n// Radio Item and Label combination\ninterface RadioItemWithLabelProps extends RadioGroupItemProps {\n /**\n * Label content\n */\n label: React.ReactNode;\n /**\n * HTML classes for label\n */\n labelClassName?: string;\n /**\n * HTML id for radio button\n */\n id?: string;\n /**\n * Disabled state\n */\n disabled?: boolean;\n}\n\nconst RadioItemWithLabel = React.forwardRef<\n HTMLInputElement,\n RadioItemWithLabelProps\n>(({ \n id, \n label, \n labelClassName, \n ...radioProps \n}, ref) => {\n const generatedId = React.useId();\n const radioId = id || generatedId;\n \n return (\n <div className=\"flex items-center\">\n <RadioGroupItem ref={ref} id={radioId} {...radioProps} />\n <RadioLabel \n htmlFor={radioId}\n disabled={radioProps.disabled}\n className={labelClassName}\n >\n {label}\n </RadioLabel>\n </div>\n );\n});\nRadioItemWithLabel.displayName = \"RadioItemWithLabel\";\n\nexport { RadioGroup, RadioGroupItem, RadioLabel, RadioItemWithLabel };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst separatorVariants = cva(\n \"shrink-0 bg-border\",\n {\n variants: {\n orientation: {\n horizontal: \"h-[1px] w-full\",\n vertical: \"h-full w-[1px]\",\n },\n variant: {\n default: \"bg-border\",\n dashed: \"border-dashed border-border bg-transparent\",\n dotted: \"border-dotted border-border bg-transparent\",\n gradient: \"bg-gradient-to-r from-transparent via-border to-transparent\",\n },\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n {\n orientation: \"horizontal\",\n variant: \"dashed\",\n className: \"border-t h-0\",\n },\n {\n orientation: \"vertical\",\n variant: \"dashed\",\n className: \"border-l w-0\",\n },\n {\n orientation: \"horizontal\",\n variant: \"dotted\",\n className: \"border-t h-0\",\n },\n {\n orientation: \"vertical\",\n variant: \"dotted\",\n className: \"border-l w-0\",\n },\n {\n orientation: \"horizontal\",\n size: \"sm\",\n variant: [\"dashed\", \"dotted\"],\n className: \"border-t-[0.5px]\",\n },\n {\n orientation: \"horizontal\",\n size: \"lg\",\n variant: [\"dashed\", \"dotted\"],\n className: \"border-t-2\",\n },\n {\n orientation: \"vertical\",\n size: \"sm\",\n variant: [\"dashed\", \"dotted\"],\n className: \"border-l-[0.5px]\",\n },\n {\n orientation: \"vertical\",\n size: \"lg\",\n variant: [\"dashed\", \"dotted\"],\n className: \"border-l-2\",\n },\n {\n orientation: \"horizontal\",\n size: \"sm\",\n variant: [\"default\", \"gradient\"],\n className: \"h-[0.5px]\",\n },\n {\n orientation: \"horizontal\",\n size: \"lg\",\n variant: [\"default\", \"gradient\"],\n className: \"h-[2px]\",\n },\n {\n orientation: \"vertical\",\n size: \"sm\",\n variant: [\"default\", \"gradient\"],\n className: \"w-[0.5px]\",\n },\n {\n orientation: \"vertical\",\n size: \"lg\",\n variant: [\"default\", \"gradient\"],\n className: \"w-[2px]\",\n },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nexport interface SeparatorProps\n extends React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>,\n VariantProps<typeof separatorVariants> {}\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n SeparatorProps\n>(\n (\n { \n className, \n orientation = \"horizontal\", \n variant = \"default\",\n size = \"md\",\n decorative = true, \n ...props \n },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n separatorVariants({ orientation, variant, size }),\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator, separatorVariants }","\"use client\"\n\nimport React, { useCallback, useState, useEffect } from 'react'\nimport { motion } from 'framer-motion'\nimport { Button } from './button'\nimport { Separator } from './separator'\nimport { Toggle } from './toggle'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './select'\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip'\nimport { cn } from '../../lib/utils'\nimport {\n Bold,\n Italic,\n Underline,\n Strikethrough,\n AlignLeft,\n AlignCenter,\n AlignRight,\n AlignJustify,\n List,\n ListOrdered,\n Quote,\n Link,\n Image as ImageIcon,\n Code,\n Type,\n Palette,\n Undo,\n Redo,\n Eye,\n Edit\n} from 'lucide-react'\n\nexport interface SimpleEditorProps {\n value?: string\n onChange?: (value: string) => void\n placeholder?: string\n disabled?: boolean\n className?: string\n minHeight?: number\n maxHeight?: number\n showToolbar?: boolean\n showPreview?: boolean\n}\n\ninterface ToolbarButtonProps {\n icon: React.ReactNode\n tooltip: string\n active?: boolean\n onClick: () => void\n disabled?: boolean\n}\n\nconst ToolbarButton = ({ icon, tooltip, active, onClick, disabled }: ToolbarButtonProps) => (\n <Tooltip>\n <TooltipTrigger asChild>\n <Toggle\n pressed={active}\n onPressedChange={() => onClick()}\n disabled={disabled}\n className=\"h-8 w-8 p-0\"\n >\n {icon}\n </Toggle>\n </TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n)\n\nconst ColorPicker = ({ onColorSelect }: { onColorSelect: (color: string) => void }) => {\n const colors = [\n '#000000', '#374151', '#6B7280', '#9CA3AF',\n '#EF4444', '#F59E0B', '#EAB308', '#22C55E',\n '#3B82F6', '#6366F1', '#8B5CF6', '#EC4899'\n ]\n\n return (\n <div className=\"grid grid-cols-4 gap-1 p-2\">\n {colors.map(color => (\n <button\n key={color}\n className=\"w-6 h-6 rounded border-2 border-gray-200 hover:border-gray-400\"\n style={{ backgroundColor: color }}\n onClick={() => onColorSelect(color)}\n />\n ))}\n </div>\n )\n}\n\nexport const SimpleEditor = React.forwardRef<HTMLDivElement, SimpleEditorProps>(\n ({\n value = '',\n onChange,\n placeholder = 'Start writing...',\n disabled = false,\n className,\n minHeight = 200,\n maxHeight = 500,\n showToolbar = true,\n showPreview = true,\n ...props\n }, ref) => {\n const [content, setContent] = useState(value)\n const [isPreview, setIsPreview] = useState(false)\n const [sourceContent, setSourceContent] = useState(value)\n const [selection, setSelection] = useState<{ start: number; end: number } | null>(null)\n const editorRef = React.useRef<HTMLDivElement>(null)\n const sourceRef = React.useRef<HTMLTextAreaElement>(null)\n\n // Format state tracking\n const [formatState, setFormatState] = useState({\n bold: false,\n italic: false,\n underline: false,\n strikethrough: false,\n alignLeft: true,\n alignCenter: false,\n alignRight: false,\n alignJustify: false,\n orderedList: false,\n unorderedList: false,\n quote: false,\n code: false\n })\n\n const updateContent = useCallback((newContent: string) => {\n setContent(newContent)\n onChange?.(newContent)\n }, [onChange])\n\n const saveSelection = useCallback(() => {\n const selection = window.getSelection()\n if (selection && selection.rangeCount > 0) {\n return selection.getRangeAt(0)\n }\n return null\n }, [])\n\n const restoreSelection = useCallback((range: Range | null) => {\n if (!range) return\n \n const selection = window.getSelection()\n if (selection) {\n selection.removeAllRanges()\n selection.addRange(range)\n }\n }, [])\n\n const executeCommand = useCallback((command: string, value?: string) => {\n if (disabled) return\n \n // Focus the editor first\n if (editorRef.current) {\n editorRef.current.focus()\n }\n \n // Save current selection before executing command\n const savedRange = saveSelection()\n \n // Execute the command\n const result = document.execCommand(command, false, value)\n \n if (!result) {\n console.warn(`Command '${command}' failed to execute`)\n }\n \n // Update content state to trigger re-render\n if (editorRef.current) {\n const newContent = editorRef.current.innerHTML\n updateContent(newContent)\n }\n \n // Update format state\n setFormatState({\n bold: document.queryCommandState('bold'),\n italic: document.queryCommandState('italic'),\n underline: document.queryCommandState('underline'),\n strikethrough: document.queryCommandState('strikeThrough'),\n alignLeft: document.queryCommandState('justifyLeft'),\n alignCenter: document.queryCommandState('justifyCenter'),\n alignRight: document.queryCommandState('justifyRight'),\n alignJustify: document.queryCommandState('justifyFull'),\n orderedList: document.queryCommandState('insertOrderedList'),\n unorderedList: document.queryCommandState('insertUnorderedList'),\n quote: document.queryCommandState('formatBlock'),\n code: document.queryCommandState('formatBlock')\n })\n \n // Keep focus on editor\n if (editorRef.current) {\n editorRef.current.focus()\n }\n }, [disabled, saveSelection, updateContent])\n\n const handleInput = useCallback((e: React.FormEvent<HTMLDivElement>) => {\n const newContent = e.currentTarget.innerHTML\n updateContent(newContent)\n }, [updateContent])\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n // Handle keyboard shortcuts\n if (e.ctrlKey || e.metaKey) {\n switch (e.key) {\n case 'b':\n e.preventDefault()\n executeCommand('bold')\n break\n case 'i':\n e.preventDefault()\n executeCommand('italic')\n break\n case 'u':\n e.preventDefault()\n executeCommand('underline')\n break\n case 'z':\n e.preventDefault()\n if (e.shiftKey) {\n executeCommand('redo')\n } else {\n executeCommand('undo')\n }\n break\n }\n }\n\n // Handle Tab for indentation\n if (e.key === 'Tab') {\n e.preventDefault()\n executeCommand('insertHTML', ' ')\n }\n }, [executeCommand])\n\n const insertLink = useCallback(() => {\n const url = prompt('Enter URL:')\n if (url) {\n executeCommand('createLink', url)\n }\n }, [executeCommand])\n\n const insertImage = useCallback(() => {\n const url = prompt('Enter image URL:')\n if (url) {\n executeCommand('insertImage', url)\n }\n }, [executeCommand])\n\n const formatHeading = useCallback((level: string) => {\n executeCommand('formatBlock', `<h${level}>`)\n }, [executeCommand])\n\n const setTextColor = useCallback((color: string) => {\n // First try the modern way\n const selection = window.getSelection()\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0)\n const span = document.createElement('span')\n span.style.color = color\n \n try {\n range.surroundContents(span)\n } catch (e) {\n // If surroundContents fails, use execCommand\n executeCommand('foreColor', color)\n }\n \n // Update content\n if (editorRef.current) {\n const newContent = editorRef.current.innerHTML\n updateContent(newContent)\n }\n }\n }, [executeCommand, updateContent])\n\n // Convert HTML to plain text for preview\n const getPlainText = (html: string) => {\n if (typeof window === 'undefined') {\n // Server-side: simple regex-based HTML stripping\n return html\n .replace(/<[^>]*>/g, '') // Remove HTML tags\n .replace(/ /g, ' ') // Replace with space\n .replace(/&/g, '&') // Replace & with &\n .replace(/</g, '<') // Replace < with <\n .replace(/>/g, '>') // Replace > with >\n .replace(/"/g, '\"') // Replace " with \"\n .replace(/'/g, \"'\") // Replace ' with '\n }\n // Client-side: use DOM for accurate conversion\n const div = document.createElement('div')\n div.innerHTML = html\n return div.textContent || div.innerText || ''\n }\n\n React.useEffect(() => {\n if (editorRef.current && content !== editorRef.current.innerHTML) {\n editorRef.current.innerHTML = content\n }\n }, [content])\n\n // Sync source content when value prop changes\n React.useEffect(() => {\n if (value !== undefined && value !== content) {\n setContent(value)\n setSourceContent(value)\n }\n }, [value, content])\n\n const toolbar = showToolbar && (\n <TooltipProvider>\n <motion.div\n className=\"flex items-center gap-1 p-2 border-b bg-muted/50\"\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n >\n {/* Text Formatting */}\n {!isPreview && (\n <>\n <div className=\"flex items-center gap-1\">\n <ToolbarButton\n icon={<Bold className=\"h-3 w-3\" />}\n tooltip=\"Bold (Ctrl+B)\"\n active={formatState.bold}\n onClick={() => executeCommand('bold')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<Italic className=\"h-3 w-3\" />}\n tooltip=\"Italic (Ctrl+I)\"\n active={formatState.italic}\n onClick={() => executeCommand('italic')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<Underline className=\"h-3 w-3\" />}\n tooltip=\"Underline (Ctrl+U)\"\n active={formatState.underline}\n onClick={() => executeCommand('underline')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<Strikethrough className=\"h-3 w-3\" />}\n tooltip=\"Strikethrough\"\n active={formatState.strikethrough}\n onClick={() => executeCommand('strikeThrough')}\n disabled={disabled}\n />\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-6\" />\n\n {/* Font Size / Heading */}\n <Select \n onValueChange={(value) => {\n if (value.startsWith('h')) {\n formatHeading(value.substring(1))\n } else if (value === 'normal') {\n executeCommand('formatBlock', 'p')\n } else {\n executeCommand('fontSize', value)\n }\n }} \n disabled={disabled}\n >\n <SelectTrigger className=\"w-24 h-8\">\n <SelectValue placeholder=\"Size\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"1\">Small</SelectItem>\n <SelectItem value=\"3\">Normal</SelectItem>\n <SelectItem value=\"5\">Large</SelectItem>\n <SelectItem value=\"7\">X-Large</SelectItem>\n <Separator className=\"my-1\" />\n <SelectItem value=\"h1\">Heading 1</SelectItem>\n <SelectItem value=\"h2\">Heading 2</SelectItem>\n <SelectItem value=\"h3\">Heading 3</SelectItem>\n <SelectItem value=\"h4\">Heading 4</SelectItem>\n <SelectItem value=\"h5\">Heading 5</SelectItem>\n <SelectItem value=\"h6\">Heading 6</SelectItem>\n </SelectContent>\n </Select>\n\n <Separator orientation=\"vertical\" className=\"h-6\" />\n\n {/* Alignment */}\n <div className=\"flex items-center gap-1\">\n <ToolbarButton\n icon={<AlignLeft className=\"h-3 w-3\" />}\n tooltip=\"Align Left\"\n active={formatState.alignLeft}\n onClick={() => executeCommand('justifyLeft')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<AlignCenter className=\"h-3 w-3\" />}\n tooltip=\"Align Center\"\n active={formatState.alignCenter}\n onClick={() => executeCommand('justifyCenter')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<AlignRight className=\"h-3 w-3\" />}\n tooltip=\"Align Right\"\n active={formatState.alignRight}\n onClick={() => executeCommand('justifyRight')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<AlignJustify className=\"h-3 w-3\" />}\n tooltip=\"Justify\"\n active={formatState.alignJustify}\n onClick={() => executeCommand('justifyFull')}\n disabled={disabled}\n />\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-6\" />\n\n {/* Lists */}\n <div className=\"flex items-center gap-1\">\n <ToolbarButton\n icon={<List className=\"h-3 w-3\" />}\n tooltip=\"Bullet List\"\n active={formatState.unorderedList}\n onClick={() => executeCommand('insertUnorderedList')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<ListOrdered className=\"h-3 w-3\" />}\n tooltip=\"Numbered List\"\n active={formatState.orderedList}\n onClick={() => executeCommand('insertOrderedList')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<Quote className=\"h-3 w-3\" />}\n tooltip=\"Quote\"\n active={formatState.quote}\n onClick={() => executeCommand('formatBlock', 'blockquote')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<Code className=\"h-3 w-3\" />}\n tooltip=\"Code Block\"\n active={formatState.code}\n onClick={() => executeCommand('formatBlock', 'pre')}\n disabled={disabled}\n />\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-6\" />\n\n {/* Indentation */}\n <div className=\"flex items-center gap-1\">\n <ToolbarButton\n icon={<span className=\"text-xs font-mono\">←</span>}\n tooltip=\"Decrease Indent\"\n onClick={() => executeCommand('outdent')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<span className=\"text-xs font-mono\">→</span>}\n tooltip=\"Increase Indent\"\n onClick={() => executeCommand('indent')}\n disabled={disabled}\n />\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-6\" />\n\n {/* Insert */}\n <div className=\"flex items-center gap-1\">\n <ToolbarButton\n icon={<Link className=\"h-3 w-3\" />}\n tooltip=\"Insert Link\"\n onClick={insertLink}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<ImageIcon className=\"h-3 w-3\" />}\n tooltip=\"Insert Image\"\n onClick={insertImage}\n disabled={disabled}\n />\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-6\" />\n\n {/* Color */}\n <Popover>\n <PopoverTrigger asChild>\n <Button \n variant=\"ghost\" \n size=\"sm\" \n className=\"h-8 w-8 p-0\" \n disabled={disabled}\n title=\"Text Color\"\n >\n <Palette className=\"h-3 w-3\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\">\n <ColorPicker onColorSelect={setTextColor} />\n </PopoverContent>\n </Popover>\n\n <Separator orientation=\"vertical\" className=\"h-6\" />\n\n {/* Undo/Redo */}\n <div className=\"flex items-center gap-1\">\n <ToolbarButton\n icon={<Undo className=\"h-3 w-3\" />}\n tooltip=\"Undo (Ctrl+Z)\"\n onClick={() => executeCommand('undo')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<Redo className=\"h-3 w-3\" />}\n tooltip=\"Redo (Ctrl+Shift+Z)\"\n onClick={() => executeCommand('redo')}\n disabled={disabled}\n />\n </div>\n\n </>\n )}\n\n {/* Preview Toggle */}\n {showPreview && (\n <>\n {!isPreview && <Separator orientation=\"vertical\" className=\"h-6\" />}\n <ToolbarButton\n icon={isPreview ? <Edit className=\"h-3 w-3\" /> : <Eye className=\"h-3 w-3\" />}\n tooltip={isPreview ? \"Edit Mode\" : \"View Source Code\"}\n active={isPreview}\n onClick={() => {\n if (isPreview) {\n // Apply source changes to content when switching back to edit mode\n updateContent(sourceContent)\n } else {\n // Update source content when switching to preview mode\n setSourceContent(content)\n }\n setIsPreview(!isPreview)\n }}\n disabled={disabled}\n />\n </>\n )}\n </motion.div>\n </TooltipProvider>\n )\n\n return (\n <div\n ref={ref}\n className={cn(\n \"border rounded-lg overflow-hidden focus-within:ring-2 focus-within:ring-ring\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n {...props}\n >\n {toolbar}\n\n <div className=\"relative\">\n {isPreview ? (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n className=\"p-4\"\n style={{ minHeight, maxHeight, overflow: 'auto' }}\n >\n <textarea\n ref={sourceRef}\n value={sourceContent}\n onChange={(e) => setSourceContent(e.target.value)}\n className=\"w-full h-full bg-muted rounded-lg p-4 font-mono text-sm resize-none focus:outline-none focus:ring-2 focus:ring-ring\"\n style={{ minHeight: minHeight - 32 }}\n disabled={disabled}\n placeholder=\"HTML source code...\"\n />\n </motion.div>\n ) : (\n <motion.div\n ref={editorRef}\n contentEditable={!disabled}\n suppressContentEditableWarning\n className={cn(\n \"p-4 outline-none prose prose-sm dark:prose-invert max-w-none overflow-y-auto\",\n \"focus:ring-0\",\n \"[&_h1]:text-3xl [&_h1]:font-bold [&_h1]:mb-4\",\n \"[&_h2]:text-2xl [&_h2]:font-bold [&_h2]:mb-3\",\n \"[&_h3]:text-xl [&_h3]:font-bold [&_h3]:mb-2\",\n \"[&_h4]:text-lg [&_h4]:font-bold [&_h4]:mb-2\",\n \"[&_h5]:text-base [&_h5]:font-bold [&_h5]:mb-1\",\n \"[&_h6]:text-sm [&_h6]:font-bold [&_h6]:mb-1\",\n \"[&_ul]:list-disc [&_ul]:pl-6 [&_ul]:mb-4\",\n \"[&_ol]:list-decimal [&_ol]:pl-6 [&_ol]:mb-4\",\n \"[&_li]:mb-1\",\n \"[&_blockquote]:border-l-4 [&_blockquote]:border-gray-300 [&_blockquote]:pl-4 [&_blockquote]:italic\",\n \"[&_pre]:bg-gray-100 [&_pre]:dark:bg-gray-800 [&_pre]:p-4 [&_pre]:rounded [&_pre]:overflow-x-auto\"\n )}\n style={{ minHeight, maxHeight }}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n data-placeholder={placeholder}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n />\n )}\n\n {/* Placeholder */}\n {!content && !isPreview && (\n <div\n className=\"absolute top-4 left-4 text-muted-foreground pointer-events-none\"\n style={{ fontSize: '16px' }}\n >\n {placeholder}\n </div>\n )}\n </div>\n\n {/* Character Count */}\n <div className=\"px-4 py-2 border-t bg-muted/50 text-xs text-muted-foreground\">\n <CharacterCount content={content} />\n </div>\n </div>\n )\n }\n)\n\nSimpleEditor.displayName = \"SimpleEditor\"\n\n// Character count component to avoid hydration issues\nconst CharacterCount = ({ content }: { content: string }) => {\n const [count, setCount] = useState(0)\n \n useEffect(() => {\n const getPlainText = (html: string) => {\n const div = document.createElement('div')\n div.innerHTML = html\n return div.textContent || div.innerText || ''\n }\n setCount(getPlainText(content).length)\n }, [content])\n \n return <>{count} characters</>\n}","\"use client\"\n\nimport * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-10 px-3\",\n sm: \"h-9 px-2.5\",\n lg: \"h-11 px-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ToggleProps extends React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root>, VariantProps<typeof toggleVariants> {}\n\nconst Toggle = React.forwardRef<\n React.ElementRef<typeof TogglePrimitive.Root>,\n ToggleProps\n>(({ className, variant, size, ...props }, ref) => (\n <TogglePrimitive.Root\n ref={ref}\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n))\n\nToggle.displayName = TogglePrimitive.Root.displayName\n\nexport { Toggle, toggleVariants }\nexport type { ToggleProps }","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { Primitive } from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * Toggle\n * -----------------------------------------------------------------------------------------------*/\n\nconst NAME = 'Toggle';\n\ntype ToggleElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface ToggleProps extends PrimitiveButtonProps {\n /**\n * The controlled state of the toggle.\n */\n pressed?: boolean;\n /**\n * The state of the toggle when initially rendered. Use `defaultPressed`\n * if you do not need to control the state of the toggle.\n * @defaultValue false\n */\n defaultPressed?: boolean;\n /**\n * The callback that fires when the state of the toggle changes.\n */\n onPressedChange?(pressed: boolean): void;\n}\n\nconst Toggle = React.forwardRef<ToggleElement, ToggleProps>((props, forwardedRef) => {\n const { pressed: pressedProp, defaultPressed, onPressedChange, ...buttonProps } = props;\n\n const [pressed, setPressed] = useControllableState({\n prop: pressedProp,\n onChange: onPressedChange,\n defaultProp: defaultPressed ?? false,\n caller: NAME,\n });\n\n return (\n <Primitive.button\n type=\"button\"\n aria-pressed={pressed}\n data-state={pressed ? 'on' : 'off'}\n data-disabled={props.disabled ? '' : undefined}\n {...buttonProps}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, () => {\n if (!props.disabled) {\n setPressed(!pressed);\n }\n })}\n />\n );\n});\n\nToggle.displayName = NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nconst Root = Toggle;\n\nexport {\n Toggle,\n //\n Root,\n};\nexport type { ToggleProps };\n","function composeEventHandlers<E extends { defaultPrevented: boolean }>(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n) {\n return function handleEvent(event: E) {\n originalEventHandler?.(event);\n\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\n\nexport { composeEventHandlers };\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// Prevent bundlers from trying to optimize the import\nconst useInsertionEffect: typeof useLayoutEffect =\n (React as any)[' useInsertionEffect '.trim().toString()] || useLayoutEffect;\n\ntype ChangeHandler<T> = (state: T) => void;\ntype SetStateFn<T> = React.Dispatch<React.SetStateAction<T>>;\n\ninterface UseControllableStateParams<T> {\n prop?: T | undefined;\n defaultProp: T;\n onChange?: ChangeHandler<T>;\n caller?: string;\n}\n\nexport function useControllableState<T>({\n prop,\n defaultProp,\n onChange = () => {},\n caller,\n}: UseControllableStateParams<T>): [T, SetStateFn<T>] {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange,\n });\n const isControlled = prop !== undefined;\n const value = isControlled ? prop : uncontrolledProp;\n\n // OK to disable conditionally calling hooks here because they will always run\n // consistently in the same environment. Bundlers should be able to remove the\n // code block entirely in production.\n /* eslint-disable react-hooks/rules-of-hooks */\n if (process.env.NODE_ENV !== 'production') {\n const isControlledRef = React.useRef(prop !== undefined);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? 'controlled' : 'uncontrolled';\n const to = isControlled ? 'controlled' : 'uncontrolled';\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n /* eslint-enable react-hooks/rules-of-hooks */\n\n const setValue = React.useCallback<SetStateFn<T>>(\n (nextValue) => {\n if (isControlled) {\n const value = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value !== prop) {\n onChangeRef.current?.(value);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n\n return [value, setValue];\n}\n\nfunction useUncontrolledState<T>({\n defaultProp,\n onChange,\n}: Omit<UseControllableStateParams<T>, 'prop'>): [\n Value: T,\n setValue: React.Dispatch<React.SetStateAction<T>>,\n OnChangeRef: React.RefObject<ChangeHandler<T> | undefined>,\n] {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n\n return [value, setValue, onChangeRef];\n}\n\nfunction isFunction(value: unknown): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n","import * as React from 'react';\nimport { useEffectEvent } from '@radix-ui/react-use-effect-event';\n\ntype ChangeHandler<T> = (state: T) => void;\n\ninterface UseControllableStateParams<T> {\n prop: T | undefined;\n defaultProp: T;\n onChange: ChangeHandler<T> | undefined;\n caller: string;\n}\n\ninterface AnyAction {\n type: string;\n}\n\nconst SYNC_STATE = Symbol('RADIX:SYNC_STATE');\n\ninterface SyncStateAction<T> {\n type: typeof SYNC_STATE;\n state: T;\n}\n\nexport function useControllableStateReducer<T, S extends {}, A extends AnyAction>(\n reducer: (prevState: S & { state: T }, action: A) => S & { state: T },\n userArgs: UseControllableStateParams<T>,\n initialState: S\n): [S & { state: T }, React.Dispatch<A>];\n\nexport function useControllableStateReducer<T, S extends {}, I, A extends AnyAction>(\n reducer: (prevState: S & { state: T }, action: A) => S & { state: T },\n userArgs: UseControllableStateParams<T>,\n initialArg: I,\n init: (i: I & { state: T }) => S\n): [S & { state: T }, React.Dispatch<A>];\n\nexport function useControllableStateReducer<T, S extends {}, A extends AnyAction>(\n reducer: (prevState: S & { state: T }, action: A) => S & { state: T },\n userArgs: UseControllableStateParams<T>,\n initialArg: any,\n init?: (i: any) => Omit<S, 'state'>\n): [S & { state: T }, React.Dispatch<A>] {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== undefined;\n\n const onChange = useEffectEvent(onChangeProp);\n\n // OK to disable conditionally calling hooks here because they will always run\n // consistently in the same environment. Bundlers should be able to remove the\n // code block entirely in production.\n /* eslint-disable react-hooks/rules-of-hooks */\n if (process.env.NODE_ENV !== 'production') {\n const isControlledRef = React.useRef(controlledState !== undefined);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? 'controlled' : 'uncontrolled';\n const to = isControlled ? 'controlled' : 'uncontrolled';\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n /* eslint-enable react-hooks/rules-of-hooks */\n\n type InternalState = S & { state: T };\n const args: [InternalState] = [{ ...initialArg, state: defaultProp }];\n if (init) {\n // @ts-expect-error\n args.push(init);\n }\n\n const [internalState, dispatch] = React.useReducer(\n (state: InternalState, action: A | SyncStateAction<T>): InternalState => {\n if (action.type === SYNC_STATE) {\n return { ...state, state: action.state };\n }\n\n const next = reducer(state, action);\n if (isControlled && !Object.is(next.state, state.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n\n const uncontrolledState = internalState.state;\n const prevValueRef = React.useRef(uncontrolledState);\n React.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n\n const state = React.useMemo(() => {\n const isControlled = controlledState !== undefined;\n if (isControlled) {\n return { ...internalState, state: controlledState };\n }\n\n return internalState;\n }, [internalState, controlledState]);\n\n React.useEffect(() => {\n // Sync internal state for controlled components so that reducer is called\n // with the correct state values\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n\n return [state, dispatch as React.Dispatch<A>];\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst tooltipVariants = cva(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground\",\n secondary: \"bg-secondary text-secondary-foreground\",\n success: \"bg-green-500 text-white border-green-600\",\n warning: \"bg-yellow-500 text-white border-yellow-600\",\n destructive: \"bg-destructive text-destructive-foreground\",\n info: \"bg-blue-500 text-white border-blue-600\",\n },\n size: {\n sm: \"px-2 py-1 text-xs\",\n md: \"px-3 py-1.5 text-sm\",\n lg: \"px-4 py-2 text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipArrow = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Arrow>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow>\n>(({ className, ...props }, ref) => (\n <TooltipPrimitive.Arrow\n ref={ref}\n className={cn(\"fill-current\", className)}\n {...props}\n />\n))\nTooltipArrow.displayName = TooltipPrimitive.Arrow.displayName\n\nexport interface TooltipContentProps\n extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>,\n VariantProps<typeof tooltipVariants> {\n showArrow?: boolean\n}\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n TooltipContentProps\n>(({ className, variant, size, showArrow = false, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(tooltipVariants({ variant, size }), className)}\n {...props}\n >\n {props.children}\n {showArrow && <TooltipArrow />}\n </TooltipPrimitive.Content>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\n// Simplified Tooltip component for easy usage\nexport interface SimpleTooltipProps {\n children: React.ReactElement\n content: React.ReactNode\n variant?: TooltipContentProps[\"variant\"]\n size?: TooltipContentProps[\"size\"]\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n align?: \"start\" | \"center\" | \"end\"\n delayDuration?: number\n skipDelayDuration?: number\n sideOffset?: number\n showArrow?: boolean\n className?: string\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n}\n\nconst SimpleTooltip = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n SimpleTooltipProps\n>(\n (\n {\n children,\n content,\n variant = \"default\",\n size = \"md\",\n side = \"top\",\n align = \"center\",\n delayDuration = 400,\n skipDelayDuration = 300,\n sideOffset = 4,\n showArrow = false,\n className,\n open,\n defaultOpen,\n onOpenChange,\n ...props\n },\n ref\n ) => {\n return (\n <Tooltip\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n delayDuration={delayDuration}\n skipDelayDuration={skipDelayDuration}\n >\n <TooltipTrigger asChild>{children}</TooltipTrigger>\n <TooltipContent\n ref={ref}\n side={side}\n align={align}\n variant={variant}\n size={size}\n sideOffset={sideOffset}\n showArrow={showArrow}\n className={className}\n {...props}\n >\n {content}\n </TooltipContent>\n </Tooltip>\n )\n }\n)\nSimpleTooltip.displayName = \"SimpleTooltip\"\n\nexport {\n Tooltip,\n TooltipProvider,\n TooltipTrigger,\n TooltipContent,\n TooltipArrow,\n SimpleTooltip,\n tooltipVariants,\n}","\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\n\nimport { cn } from \"../../lib/utils\"\n\ntype SwitchSize = \"sm\" | \"md\" | \"lg\";\ntype SwitchVariant = \"primary\" | \"success\" | \"warning\" | \"danger\" | \"secondary\";\n\nexport interface SwitchProps extends React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root> {\n /** Switch boyutu */\n size?: SwitchSize;\n /** Switch renk varyantı */\n variant?: SwitchVariant;\n /** Yükleniyor durumunu gösterir */\n loading?: boolean;\n /** Sol tarafta gösterilecek ikon */\n leftIcon?: React.ReactNode;\n /** Sağ tarafta gösterilecek ikon */\n rightIcon?: React.ReactNode;\n /** Switch açıklaması */\n description?: string;\n}\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n SwitchProps\n>(({ className, size = \"md\", variant = \"primary\", loading, leftIcon, rightIcon, description, ...props }, ref) => (\n <div className=\"inline-flex items-center gap-2\">\n {leftIcon && <span className=\"text-muted-foreground\">{leftIcon}</span>}\n <SwitchPrimitives.Root\n className={cn(\n \"peer relative inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 dark:data-[state=unchecked]:bg-gray-700/70 dark:focus-visible:ring-primary/40 dark:focus-visible:ring-offset-gray-950\",\n \n // Boyutlar\n size === \"sm\" && \"h-4 w-8\",\n size === \"md\" && \"h-6 w-11\", \n size === \"lg\" && \"h-7 w-14\",\n \n // Varyantlar (checked durumunda)\n variant === \"primary\" && \"data-[state=checked]:bg-primary\",\n variant === \"success\" && \"data-[state=checked]:bg-success\",\n variant === \"warning\" && \"data-[state=checked]:bg-warning\",\n variant === \"danger\" && \"data-[state=checked]:bg-error\",\n variant === \"secondary\" && \"data-[state=checked]:bg-accent\",\n \n // Unchecked durumu\n \"data-[state=unchecked]:bg-input\",\n \n // Loading durumu\n loading && \"opacity-80 cursor-wait\",\n \n className\n )}\n disabled={loading || props.disabled}\n {...props}\n ref={ref}\n >\n {loading ? (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"h-3 w-3 animate-spin rounded-full border-2 border-gray-300 border-t-primary\"></div>\n </div>\n ) : null}\n \n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block rounded-full bg-background shadow-lg ring-0 transition-transform\",\n // Boyuta göre thumb boyutları\n size === \"sm\" && \"h-3 w-3 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0\",\n size === \"md\" && \"h-5 w-5 data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\",\n size === \"lg\" && \"h-6 w-6 data-[state=checked]:translate-x-7 data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitives.Root>\n {rightIcon && <span className=\"text-muted-foreground\">{rightIcon}</span>}\n {description && <span className=\"text-sm text-muted-foreground\">{description}</span>}\n </div>\n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\nexport type { SwitchSize, SwitchVariant }\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n // Enhanced props that shouldn't be passed to DOM\n variant?: \"default\" | \"outline\" | \"ghost\" | \"underline\"\n size?: \"sm\" | \"md\" | \"lg\"\n error?: boolean | string\n success?: boolean\n loading?: boolean\n autoResize?: boolean\n maxHeight?: number\n characterCount?: boolean\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ \n className, \n // Extract enhanced props to prevent them from being passed to DOM\n variant,\n size,\n error,\n success,\n loading,\n autoResize,\n maxHeight,\n characterCount,\n ...props \n }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea }","\"use client\";\n\nimport * as React from \"react\";\nimport * as ToastPrimitives from \"@radix-ui/react-toast\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst ToastProvider = ToastPrimitives.Provider;\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n className\n )}\n {...props}\n />\n));\nToastViewport.displayName = ToastPrimitives.Viewport.displayName;\n\nconst toastVariants = cva(\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-8 shadow-sm transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n {\n variants: {\n variant: {\n default: \"border bg-background text-foreground\",\n destructive:\n \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n success:\n \"border-green-200 bg-green-50 text-green-900 dark:border-green-800 dark:bg-green-900/20 dark:text-green-100\",\n warning:\n \"border-orange-200 bg-orange-50 text-orange-900 dark:border-orange-800 dark:bg-orange-900/20 dark:text-orange-100\",\n info:\n \"border-blue-200 bg-blue-50 text-blue-900 dark:border-blue-800 dark:bg-blue-900/20 dark:text-blue-100\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants>;\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>;\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Root>,\n ToastProps\n>(({ className, variant, ...props }, ref) => {\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n );\n});\nToast.displayName = ToastPrimitives.Root.displayName;\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n className\n )}\n {...props}\n />\n));\nToastAction.displayName = ToastPrimitives.Action.displayName;\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n \"absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n className\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"h-4 w-4\" />\n </ToastPrimitives.Close>\n));\nToastClose.displayName = ToastPrimitives.Close.displayName;\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn(\"text-sm font-semibold [&+div]:text-xs\", className)}\n {...props}\n />\n));\nToastTitle.displayName = ToastPrimitives.Title.displayName;\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"text-sm opacity-90\", className)}\n {...props}\n />\n));\nToastDescription.displayName = ToastPrimitives.Description.displayName;\n\ntype ToastData = {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n variant?: ToastProps[\"variant\"];\n duration?: number;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n};\n\nconst TOAST_LIMIT = 5;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype State = {\n toasts: ToastData[];\n};\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nconst reducer = (state: State, action: any): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\nlet toastCounter = 0;\n\nfunction dispatch(action: any) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToastData, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = `toast-${Date.now()}-${++toastCounter}`;\n\n const update = (props: ToastData) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open: boolean) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nfunction Toaster() {\n const { toasts } = useToast();\n\n return (\n <ToastProvider>\n {toasts.map(function ({ id, title, description, action, variant, open, onOpenChange, ...props }) {\n return (\n <Toast key={id} variant={variant} open={open} onOpenChange={onOpenChange} {...props}>\n <div className=\"grid gap-1\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && (\n <ToastDescription>{description}</ToastDescription>\n )}\n </div>\n {action}\n <ToastClose />\n </Toast>\n );\n })}\n <ToastViewport />\n </ToastProvider>\n );\n}\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastAction,\n ToastClose,\n Toaster,\n toast,\n useToast,\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["#style-inject:#style-inject","../src/styles/index.css","../src/components/ui/accordion.tsx","../src/lib/utils.ts","../src/components/ui/alert.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/avatar.tsx","../src/components/ui/badge.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/button.tsx","../src/components/ui/calendar.tsx","../../../node_modules/date-fns/constants.js","../../../node_modules/date-fns/constructFrom.js","../../../node_modules/date-fns/toDate.js","../../../node_modules/date-fns/addMonths.js","../../../node_modules/date-fns/_lib/defaultOptions.js","../../../node_modules/date-fns/startOfWeek.js","../../../node_modules/date-fns/startOfISOWeek.js","../../../node_modules/date-fns/getISOWeekYear.js","../../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../../../node_modules/date-fns/_lib/normalizeDates.js","../../../node_modules/date-fns/startOfDay.js","../../../node_modules/date-fns/differenceInCalendarDays.js","../../../node_modules/date-fns/startOfISOWeekYear.js","../../../node_modules/date-fns/constructNow.js","../../../node_modules/date-fns/isSameDay.js","../../../node_modules/date-fns/isDate.js","../../../node_modules/date-fns/isValid.js","../../../node_modules/date-fns/endOfMonth.js","../../../node_modules/date-fns/_lib/normalizeInterval.js","../../../node_modules/date-fns/eachDayOfInterval.js","../../../node_modules/date-fns/startOfMonth.js","../../../node_modules/date-fns/startOfYear.js","../../../node_modules/date-fns/endOfWeek.js","../../../node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../../../node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../../../node_modules/date-fns/locale/en-US/_lib/formatLong.js","../../../node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../../../node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../../../node_modules/date-fns/locale/en-US/_lib/localize.js","../../../node_modules/date-fns/locale/_lib/buildMatchFn.js","../../../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../../../node_modules/date-fns/locale/en-US/_lib/match.js","../../../node_modules/date-fns/locale/en-US.js","../../../node_modules/date-fns/getDayOfYear.js","../../../node_modules/date-fns/getISOWeek.js","../../../node_modules/date-fns/getWeekYear.js","../../../node_modules/date-fns/startOfWeekYear.js","../../../node_modules/date-fns/getWeek.js","../../../node_modules/date-fns/_lib/addLeadingZeros.js","../../../node_modules/date-fns/_lib/format/lightFormatters.js","../../../node_modules/date-fns/_lib/format/formatters.js","../../../node_modules/date-fns/_lib/format/longFormatters.js","../../../node_modules/date-fns/_lib/protectedTokens.js","../../../node_modules/date-fns/format.js","../../../node_modules/date-fns/getDay.js","../../../node_modules/date-fns/isSameMonth.js","../../../node_modules/date-fns/isToday.js","../../../node_modules/date-fns/subMonths.js","../src/components/ui/card.tsx","../src/lib/micro-interactions.ts","../src/components/ui/checkbox.tsx","../src/components/ui/collapsible.tsx","../node_modules/@radix-ui/react-collapsible/src/collapsible.tsx","../node_modules/@radix-ui/primitive/src/primitive.tsx","../node_modules/@radix-ui/react-context/src/create-context.tsx","../node_modules/@radix-ui/react-use-controllable-state/src/use-controllable-state.tsx","../node_modules/@radix-ui/react-use-layout-effect/src/use-layout-effect.tsx","../node_modules/@radix-ui/react-use-controllable-state/src/use-controllable-state-reducer.tsx","../node_modules/@radix-ui/react-compose-refs/src/compose-refs.tsx","../node_modules/@radix-ui/react-primitive/src/primitive.tsx","../node_modules/@radix-ui/react-presence/src/presence.tsx","../node_modules/@radix-ui/react-presence/src/use-state-machine.tsx","../node_modules/@radix-ui/react-id/src/id.tsx","../src/components/ui/command.tsx","../../../node_modules/cmdk/dist/chunk-NZJY6EH4.mjs","../../../node_modules/cmdk/dist/index.mjs","../../../node_modules/@radix-ui/react-primitive/src/primitive.tsx","../../../node_modules/@radix-ui/react-id/src/id.tsx","../../../node_modules/@radix-ui/react-use-layout-effect/src/use-layout-effect.tsx","../../../node_modules/@radix-ui/react-compose-refs/src/compose-refs.tsx","../src/components/ui/dialog.tsx","../src/components/ui/date-picker.tsx","../src/components/ui/popover.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/input.tsx","../src/components/ui/label.tsx","../src/components/ui/progress.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/select.tsx","../src/components/ui/separator.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/slider.tsx","../src/components/ui/switch.tsx","../src/components/ui/table.tsx","../src/components/ui/tabs.tsx","../src/components/ui/textarea.tsx","../src/components/ui/toast.tsx","../src/components/ui/toggle.tsx","../../../node_modules/@radix-ui/react-toggle/src/toggle.tsx","../../../node_modules/@radix-ui/primitive/src/primitive.tsx","../../../node_modules/@radix-ui/react-use-controllable-state/src/use-controllable-state.tsx","../../../node_modules/@radix-ui/react-use-controllable-state/src/use-controllable-state-reducer.tsx","../src/components/ui/tooltip.tsx"],"names":["React","jsx","jsxs","Icon","cva","ChevronRight","defaultOptions","count","format","localize","formatLong","days","Check","createContext","Provider","useContext","createScope","nextScopes","useLayoutEffect","value","node","useId","Root","Trigger","Content","ChevronDown","Collapsible","CollapsibleTrigger","CollapsibleContent","X","P","T","L","N","ReactDOM","createSlot","NODES","Primitive","useReactId","useLayoutEffect2","setRef","composeRefs","Y","K","u","p","m","$","k","J","W","U","B","Loader2","Fragment","motion","ChevronLeft","Label","Circle","RadioGroup","Separator","min","max","t","toast","props","composeEventHandlers","useInsertionEffect","useControllableState","useUncontrolledState","isFunction","SYNC_STATE","Toggle"],"mappings":"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","sourcesContent":["\n export default function styleInject(css, { insertAt } = {}) {\n if (!css || typeof document === 'undefined') return\n \n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n } else {\n head.appendChild(style)\n }\n \n if (style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n }\n ","import styleInject from '#style-inject';styleInject(\"*,\\n::before,\\n::after {\\n --tw-border-spacing-x: 0;\\n --tw-border-spacing-y: 0;\\n --tw-translate-x: 0;\\n --tw-translate-y: 0;\\n --tw-rotate: 0;\\n --tw-skew-x: 0;\\n --tw-skew-y: 0;\\n --tw-scale-x: 1;\\n --tw-scale-y: 1;\\n --tw-pan-x: ;\\n --tw-pan-y: ;\\n --tw-pinch-zoom: ;\\n --tw-scroll-snap-strictness: proximity;\\n --tw-gradient-from-position: ;\\n --tw-gradient-via-position: ;\\n --tw-gradient-to-position: ;\\n --tw-ordinal: ;\\n --tw-slashed-zero: ;\\n --tw-numeric-figure: ;\\n --tw-numeric-spacing: ;\\n --tw-numeric-fraction: ;\\n --tw-ring-inset: ;\\n --tw-ring-offset-width: 0px;\\n --tw-ring-offset-color: #fff;\\n --tw-ring-color: rgb(59 130 246 / 0.5);\\n --tw-ring-offset-shadow: 0 0 #0000;\\n --tw-ring-shadow: 0 0 #0000;\\n --tw-shadow: 0 0 #0000;\\n --tw-shadow-colored: 0 0 #0000;\\n --tw-blur: ;\\n --tw-brightness: ;\\n --tw-contrast: ;\\n --tw-grayscale: ;\\n --tw-hue-rotate: ;\\n --tw-invert: ;\\n --tw-saturate: ;\\n --tw-sepia: ;\\n --tw-drop-shadow: ;\\n --tw-backdrop-blur: ;\\n --tw-backdrop-brightness: ;\\n --tw-backdrop-contrast: ;\\n --tw-backdrop-grayscale: ;\\n --tw-backdrop-hue-rotate: ;\\n --tw-backdrop-invert: ;\\n --tw-backdrop-opacity: ;\\n --tw-backdrop-saturate: ;\\n --tw-backdrop-sepia: ;\\n --tw-contain-size: ;\\n --tw-contain-layout: ;\\n --tw-contain-paint: ;\\n --tw-contain-style: ;\\n}\\n::backdrop {\\n --tw-border-spacing-x: 0;\\n --tw-border-spacing-y: 0;\\n --tw-translate-x: 0;\\n --tw-translate-y: 0;\\n --tw-rotate: 0;\\n --tw-skew-x: 0;\\n --tw-skew-y: 0;\\n --tw-scale-x: 1;\\n --tw-scale-y: 1;\\n --tw-pan-x: ;\\n --tw-pan-y: ;\\n --tw-pinch-zoom: ;\\n --tw-scroll-snap-strictness: proximity;\\n --tw-gradient-from-position: ;\\n --tw-gradient-via-position: ;\\n --tw-gradient-to-position: ;\\n --tw-ordinal: ;\\n --tw-slashed-zero: ;\\n --tw-numeric-figure: ;\\n --tw-numeric-spacing: ;\\n --tw-numeric-fraction: ;\\n --tw-ring-inset: ;\\n --tw-ring-offset-width: 0px;\\n --tw-ring-offset-color: #fff;\\n --tw-ring-color: rgb(59 130 246 / 0.5);\\n --tw-ring-offset-shadow: 0 0 #0000;\\n --tw-ring-shadow: 0 0 #0000;\\n --tw-shadow: 0 0 #0000;\\n --tw-shadow-colored: 0 0 #0000;\\n --tw-blur: ;\\n --tw-brightness: ;\\n --tw-contrast: ;\\n --tw-grayscale: ;\\n --tw-hue-rotate: ;\\n --tw-invert: ;\\n --tw-saturate: ;\\n --tw-sepia: ;\\n --tw-drop-shadow: ;\\n --tw-backdrop-blur: ;\\n --tw-backdrop-brightness: ;\\n --tw-backdrop-contrast: ;\\n --tw-backdrop-grayscale: ;\\n --tw-backdrop-hue-rotate: ;\\n --tw-backdrop-invert: ;\\n --tw-backdrop-opacity: ;\\n --tw-backdrop-saturate: ;\\n --tw-backdrop-sepia: ;\\n --tw-contain-size: ;\\n --tw-contain-layout: ;\\n --tw-contain-paint: ;\\n --tw-contain-style: ;\\n}\\n*,\\n::before,\\n::after {\\n box-sizing: border-box;\\n border-width: 0;\\n border-style: solid;\\n border-color: #e5e7eb;\\n}\\n::before,\\n::after {\\n --tw-content: \\\"\\\";\\n}\\nhtml,\\n:host {\\n line-height: 1.5;\\n -webkit-text-size-adjust: 100%;\\n -moz-tab-size: 4;\\n -o-tab-size: 4;\\n tab-size: 4;\\n font-family: var(--font-sans);\\n font-feature-settings: normal;\\n font-variation-settings: normal;\\n -webkit-tap-highlight-color: transparent;\\n}\\nbody {\\n margin: 0;\\n line-height: inherit;\\n}\\nhr {\\n height: 0;\\n color: inherit;\\n border-top-width: 1px;\\n}\\nabbr:where([title]) {\\n -webkit-text-decoration: underline dotted;\\n text-decoration: underline dotted;\\n}\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n font-size: inherit;\\n font-weight: inherit;\\n}\\na {\\n color: inherit;\\n text-decoration: inherit;\\n}\\nb,\\nstrong {\\n font-weight: bolder;\\n}\\ncode,\\nkbd,\\nsamp,\\npre {\\n font-family: var(--font-mono);\\n font-feature-settings: normal;\\n font-variation-settings: normal;\\n font-size: 1em;\\n}\\nsmall {\\n font-size: 80%;\\n}\\nsub,\\nsup {\\n font-size: 75%;\\n line-height: 0;\\n position: relative;\\n vertical-align: baseline;\\n}\\nsub {\\n bottom: -0.25em;\\n}\\nsup {\\n top: -0.5em;\\n}\\ntable {\\n text-indent: 0;\\n border-color: inherit;\\n border-collapse: collapse;\\n}\\nbutton,\\ninput,\\noptgroup,\\nselect,\\ntextarea {\\n font-family: inherit;\\n font-feature-settings: inherit;\\n font-variation-settings: inherit;\\n font-size: 100%;\\n font-weight: inherit;\\n line-height: inherit;\\n letter-spacing: inherit;\\n color: inherit;\\n margin: 0;\\n padding: 0;\\n}\\nbutton,\\nselect {\\n text-transform: none;\\n}\\nbutton,\\ninput:where([type=button]),\\ninput:where([type=reset]),\\ninput:where([type=submit]) {\\n -webkit-appearance: button;\\n background-color: transparent;\\n background-image: none;\\n}\\n:-moz-focusring {\\n outline: auto;\\n}\\n:-moz-ui-invalid {\\n box-shadow: none;\\n}\\nprogress {\\n vertical-align: baseline;\\n}\\n::-webkit-inner-spin-button,\\n::-webkit-outer-spin-button {\\n height: auto;\\n}\\n[type=search] {\\n -webkit-appearance: textfield;\\n outline-offset: -2px;\\n}\\n::-webkit-search-decoration {\\n -webkit-appearance: none;\\n}\\n::-webkit-file-upload-button {\\n -webkit-appearance: button;\\n font: inherit;\\n}\\nsummary {\\n display: list-item;\\n}\\nblockquote,\\ndl,\\ndd,\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6,\\nhr,\\nfigure,\\np,\\npre {\\n margin: 0;\\n}\\nfieldset {\\n margin: 0;\\n padding: 0;\\n}\\nlegend {\\n padding: 0;\\n}\\nol,\\nul,\\nmenu {\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n}\\ndialog {\\n padding: 0;\\n}\\ntextarea {\\n resize: vertical;\\n}\\ninput::-moz-placeholder,\\ntextarea::-moz-placeholder {\\n opacity: 1;\\n color: #9ca3af;\\n}\\ninput::placeholder,\\ntextarea::placeholder {\\n opacity: 1;\\n color: #9ca3af;\\n}\\nbutton,\\n[role=button] {\\n cursor: pointer;\\n}\\n:disabled {\\n cursor: default;\\n}\\nimg,\\nsvg,\\nvideo,\\ncanvas,\\naudio,\\niframe,\\nembed,\\nobject {\\n display: block;\\n vertical-align: middle;\\n}\\nimg,\\nvideo {\\n max-width: 100%;\\n height: auto;\\n}\\n[hidden]:where(:not([hidden=until-found])) {\\n display: none;\\n}\\n:root {\\n --bg-base: var(--background);\\n --bg-subtle: var(--gray-50);\\n --bg-muted: var(--gray-100);\\n --bg-emphasis: var(--gray-200);\\n --bg-inverse: var(--foreground);\\n --surface-base: var(--background);\\n --surface-overlay: var(--gray-50);\\n --surface-raised: var(--background);\\n --surface-sunken: var(--gray-100);\\n --text-primary: var(--foreground);\\n --text-secondary: var(--gray-600);\\n --text-tertiary: var(--gray-500);\\n --text-disabled: var(--gray-400);\\n --text-inverse: var(--background);\\n --text-link: var(--primary);\\n --text-link-hover: var(--primary-hover);\\n --brand-primary: var(--primary);\\n --brand-primary-hover: var(--primary-hover);\\n --brand-primary-active: var(--primary-active);\\n --brand-secondary: var(--secondary);\\n --state-hover: var(--gray-100);\\n --state-active: var(--gray-200);\\n --state-selected: var(--primary);\\n --state-disabled: var(--gray-300);\\n --state-focus: var(--primary);\\n --feedback-success: var(--success);\\n --feedback-success-light: 142 71% 95%;\\n --feedback-success-dark: 142 71% 35%;\\n --feedback-warning: var(--warning);\\n --feedback-warning-light: 38 92% 95%;\\n --feedback-warning-dark: 38 92% 40%;\\n --feedback-error: var(--error);\\n --feedback-error-light: 0 84% 95%;\\n --feedback-error-dark: 0 84% 50%;\\n --feedback-info: 217 91% 60%;\\n --feedback-info-light: 217 91% 95%;\\n --feedback-info-dark: 217 91% 50%;\\n --border-default: var(--border);\\n --border-subtle: var(--gray-200);\\n --border-strong: var(--gray-400);\\n --border-interactive: var(--primary);\\n --border-error: var(--error);\\n --border-success: var(--success);\\n --border-warning: var(--warning);\\n --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);\\n --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\\n --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\\n --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\\n --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);\\n --shadow-primary: 0 4px 14px 0 hsl(var(--primary) / 0.3);\\n --shadow-success: 0 4px 14px 0 hsl(var(--success) / 0.3);\\n --shadow-error: 0 4px 14px 0 hsl(var(--error) / 0.3);\\n --shadow-warning: 0 4px 14px 0 hsl(var(--warning) / 0.3);\\n --shadow-inner-xs: inset 0 1px 2px 0 rgb(0 0 0 / 0.05);\\n --shadow-inner-sm: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);\\n --shadow-inner-md: inset 0 4px 6px -1px rgb(0 0 0 / 0.1);\\n --ease-linear: linear;\\n --ease-in: cubic-bezier(0.4, 0, 1, 1);\\n --ease-out: cubic-bezier(0, 0, 0.2, 1);\\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\\n --ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);\\n --ease-elastic: cubic-bezier(0.68, -0.55, 0.265, 1.55);\\n --ease-back-in: cubic-bezier(0.6, -0.28, 0.735, 0.045);\\n --ease-back-out: cubic-bezier(0.175, 0.885, 0.32, 1.275);\\n --ease-back-in-out: cubic-bezier(0.68, -0.55, 0.265, 1.55);\\n --duration-instant: 0ms;\\n --duration-fast: 150ms;\\n --duration-normal: 250ms;\\n --duration-slow: 350ms;\\n --duration-slower: 500ms;\\n --duration-slowest: 750ms;\\n --space-0: 0;\\n --space-px: 1px;\\n --space-0\\\\.5: 0.125rem;\\n --space-1: 0.25rem;\\n --space-1\\\\.5: 0.375rem;\\n --space-2: 0.5rem;\\n --space-2\\\\.5: 0.625rem;\\n --space-3: 0.75rem;\\n --space-3\\\\.5: 0.875rem;\\n --space-4: 1rem;\\n --space-5: 1.25rem;\\n --space-6: 1.5rem;\\n --space-7: 1.75rem;\\n --space-8: 2rem;\\n --space-9: 2.25rem;\\n --space-10: 2.5rem;\\n --space-11: 2.75rem;\\n --space-12: 3rem;\\n --space-14: 3.5rem;\\n --space-16: 4rem;\\n --space-20: 5rem;\\n --space-24: 6rem;\\n --space-28: 7rem;\\n --space-32: 8rem;\\n --space-36: 9rem;\\n --space-40: 10rem;\\n --space-44: 11rem;\\n --space-48: 12rem;\\n --space-52: 13rem;\\n --space-56: 14rem;\\n --space-60: 15rem;\\n --space-64: 16rem;\\n --space-72: 18rem;\\n --space-80: 20rem;\\n --space-96: 24rem;\\n --text-2xs: 0.625rem;\\n --text-xs: 0.75rem;\\n --text-sm: 0.875rem;\\n --text-base: 1rem;\\n --text-lg: 1.125rem;\\n --text-xl: 1.25rem;\\n --text-2xl: 1.5rem;\\n --text-3xl: 1.875rem;\\n --text-4xl: 2.25rem;\\n --text-5xl: 3rem;\\n --text-6xl: 3.75rem;\\n --text-7xl: 4.5rem;\\n --text-8xl: 6rem;\\n --text-9xl: 8rem;\\n --leading-none: 1;\\n --leading-tight: 1.25;\\n --leading-snug: 1.375;\\n --leading-normal: 1.5;\\n --leading-relaxed: 1.625;\\n --leading-loose: 2;\\n --tracking-tighter: -0.05em;\\n --tracking-tight: -0.025em;\\n --tracking-normal: 0;\\n --tracking-wide: 0.025em;\\n --tracking-wider: 0.05em;\\n --tracking-widest: 0.1em;\\n --font-thin: 100;\\n --font-extralight: 200;\\n --font-light: 300;\\n --font-normal: 400;\\n --font-medium: 500;\\n --font-semibold: 600;\\n --font-bold: 700;\\n --font-extrabold: 800;\\n --font-black: 900;\\n --radius-none: 0;\\n --radius-sm: 0.125rem;\\n --radius-base: 0.25rem;\\n --radius-md: 0.375rem;\\n --radius-lg: 0.5rem;\\n --radius-xl: 0.75rem;\\n --radius-2xl: 1rem;\\n --radius-3xl: 1.5rem;\\n --radius-full: 9999px;\\n --z-0: 0;\\n --z-10: 10;\\n --z-20: 20;\\n --z-30: 30;\\n --z-40: 40;\\n --z-50: 50;\\n --z-dropdown: 1000;\\n --z-sticky: 1020;\\n --z-fixed: 1030;\\n --z-modal-backdrop: 1040;\\n --z-modal: 1050;\\n --z-popover: 1060;\\n --z-tooltip: 1070;\\n --z-notification: 1080;\\n --blur-none: 0;\\n --blur-sm: 4px;\\n --blur-base: 8px;\\n --blur-md: 12px;\\n --blur-lg: 16px;\\n --blur-xl: 24px;\\n --blur-2xl: 40px;\\n --blur-3xl: 64px;\\n}\\n.dark {\\n --bg-base: var(--background);\\n --bg-subtle: var(--gray-800);\\n --bg-muted: var(--gray-700);\\n --bg-emphasis: var(--gray-600);\\n --surface-overlay: var(--gray-800);\\n --surface-raised: var(--gray-800);\\n --surface-sunken: var(--background);\\n --text-secondary: var(--gray-400);\\n --text-tertiary: var(--gray-500);\\n --text-disabled: var(--gray-600);\\n --state-hover: var(--gray-700);\\n --state-active: var(--gray-600);\\n --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.3);\\n --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.4), 0 1px 2px -1px rgb(0 0 0 / 0.3);\\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.3);\\n --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.4), 0 4px 6px -4px rgb(0 0 0 / 0.3);\\n --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.4), 0 8px 10px -6px rgb(0 0 0 / 0.3);\\n --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.5);\\n}\\n.container {\\n width: 100%;\\n margin-right: auto;\\n margin-left: auto;\\n padding-right: 1rem;\\n padding-left: 1rem;\\n}\\n@media (min-width: 640px) {\\n .container {\\n max-width: 640px;\\n padding-right: 2rem;\\n padding-left: 2rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .container {\\n max-width: 768px;\\n }\\n}\\n@media (min-width: 1024px) {\\n .container {\\n max-width: 1024px;\\n padding-right: 4rem;\\n padding-left: 4rem;\\n }\\n}\\n@media (min-width: 1280px) {\\n .container {\\n max-width: 1280px;\\n padding-right: 5rem;\\n padding-left: 5rem;\\n }\\n}\\n@media (min-width: 1536px) {\\n .container {\\n max-width: 1536px;\\n padding-right: 6rem;\\n padding-left: 6rem;\\n }\\n}\\n.sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n.pointer-events-none {\\n pointer-events: none;\\n}\\n.pointer-events-auto {\\n pointer-events: auto;\\n}\\n.visible {\\n visibility: visible;\\n}\\n.collapse {\\n visibility: collapse;\\n}\\n.fixed {\\n position: fixed;\\n}\\n.absolute {\\n position: absolute;\\n}\\n.relative {\\n position: relative;\\n}\\n.inset-0 {\\n inset: 0px;\\n}\\n.bottom-\\\\[5\\\\%\\\\] {\\n bottom: 5%;\\n}\\n.left-2 {\\n left: 0.5rem;\\n}\\n.left-3 {\\n left: 0.75rem;\\n}\\n.left-4 {\\n left: 1rem;\\n}\\n.left-\\\\[50\\\\%\\\\] {\\n left: 50%;\\n}\\n.right-0 {\\n right: 0px;\\n}\\n.right-1 {\\n right: 0.25rem;\\n}\\n.right-2 {\\n right: 0.5rem;\\n}\\n.right-3 {\\n right: 0.75rem;\\n}\\n.right-4 {\\n right: 1rem;\\n}\\n.top-0 {\\n top: 0px;\\n}\\n.top-1 {\\n top: 0.25rem;\\n}\\n.top-2 {\\n top: 0.5rem;\\n}\\n.top-2\\\\.5 {\\n top: 0.625rem;\\n}\\n.top-3 {\\n top: 0.75rem;\\n}\\n.top-4 {\\n top: 1rem;\\n}\\n.top-\\\\[5\\\\%\\\\] {\\n top: 5%;\\n}\\n.top-\\\\[50\\\\%\\\\] {\\n top: 50%;\\n}\\n.top-auto {\\n top: auto;\\n}\\n.isolate {\\n isolation: isolate;\\n}\\n.z-0 {\\n z-index: 0;\\n}\\n.z-10 {\\n z-index: 10;\\n}\\n.z-40 {\\n z-index: 40;\\n}\\n.z-50 {\\n z-index: 50;\\n}\\n.z-\\\\[100\\\\] {\\n z-index: 100;\\n}\\n.-mx-1 {\\n margin-left: -0.25rem;\\n margin-right: -0.25rem;\\n}\\n.-mx-4 {\\n margin-left: -1rem;\\n margin-right: -1rem;\\n}\\n.mx-auto {\\n margin-left: auto;\\n margin-right: auto;\\n}\\n.my-1 {\\n margin-top: 0.25rem;\\n margin-bottom: 0.25rem;\\n}\\n.my-2 {\\n margin-top: 0.5rem;\\n margin-bottom: 0.5rem;\\n}\\n.-mb-4 {\\n margin-bottom: -1rem;\\n}\\n.-ml-3 {\\n margin-left: -0.75rem;\\n}\\n.-mr-1 {\\n margin-right: -0.25rem;\\n}\\n.-mt-4 {\\n margin-top: -1rem;\\n}\\n.mb-1 {\\n margin-bottom: 0.25rem;\\n}\\n.mb-2 {\\n margin-bottom: 0.5rem;\\n}\\n.mb-3 {\\n margin-bottom: 0.75rem;\\n}\\n.mb-4 {\\n margin-bottom: 1rem;\\n}\\n.ml-1 {\\n margin-left: 0.25rem;\\n}\\n.ml-2 {\\n margin-left: 0.5rem;\\n}\\n.ml-auto {\\n margin-left: auto;\\n}\\n.mr-1 {\\n margin-right: 0.25rem;\\n}\\n.mr-2 {\\n margin-right: 0.5rem;\\n}\\n.mt-1 {\\n margin-top: 0.25rem;\\n}\\n.mt-2 {\\n margin-top: 0.5rem;\\n}\\n.mt-3 {\\n margin-top: 0.75rem;\\n}\\n.mt-4 {\\n margin-top: 1rem;\\n}\\n.mt-6 {\\n margin-top: 1.5rem;\\n}\\n.block {\\n display: block;\\n}\\n.inline-block {\\n display: inline-block;\\n}\\n.inline {\\n display: inline;\\n}\\n.flex {\\n display: flex;\\n}\\n.inline-flex {\\n display: inline-flex;\\n}\\n.\\\\!table {\\n display: table !important;\\n}\\n.table {\\n display: table;\\n}\\n.grid {\\n display: grid;\\n}\\n.hidden {\\n display: none;\\n}\\n.aspect-square {\\n aspect-ratio: 1 / 1;\\n}\\n.h-0 {\\n height: 0px;\\n}\\n.h-1 {\\n height: 0.25rem;\\n}\\n.h-1\\\\.5 {\\n height: 0.375rem;\\n}\\n.h-10 {\\n height: 2.5rem;\\n}\\n.h-11 {\\n height: 2.75rem;\\n}\\n.h-12 {\\n height: 3rem;\\n}\\n.h-14 {\\n height: 3.5rem;\\n}\\n.h-16 {\\n height: 4rem;\\n}\\n.h-2 {\\n height: 0.5rem;\\n}\\n.h-2\\\\.5 {\\n height: 0.625rem;\\n}\\n.h-20 {\\n height: 5rem;\\n}\\n.h-24 {\\n height: 6rem;\\n}\\n.h-3 {\\n height: 0.75rem;\\n}\\n.h-3\\\\.5 {\\n height: 0.875rem;\\n}\\n.h-32 {\\n height: 8rem;\\n}\\n.h-4 {\\n height: 1rem;\\n}\\n.h-48 {\\n height: 12rem;\\n}\\n.h-5 {\\n height: 1.25rem;\\n}\\n.h-6 {\\n height: 1.5rem;\\n}\\n.h-7 {\\n height: 1.75rem;\\n}\\n.h-8 {\\n height: 2rem;\\n}\\n.h-9 {\\n height: 2.25rem;\\n}\\n.h-\\\\[0\\\\.5px\\\\] {\\n height: 0.5px;\\n}\\n.h-\\\\[1px\\\\] {\\n height: 1px;\\n}\\n.h-\\\\[2px\\\\] {\\n height: 2px;\\n}\\n.h-\\\\[60\\\\%\\\\] {\\n height: 60%;\\n}\\n.h-\\\\[65\\\\%\\\\] {\\n height: 65%;\\n}\\n.h-\\\\[var\\\\(--radix-select-trigger-height\\\\)\\\\] {\\n height: var(--radix-select-trigger-height);\\n}\\n.h-auto {\\n height: auto;\\n}\\n.h-full {\\n height: 100%;\\n}\\n.h-px {\\n height: 1px;\\n}\\n.max-h-96 {\\n max-height: 24rem;\\n}\\n.max-h-\\\\[200px\\\\] {\\n max-height: 200px;\\n}\\n.max-h-\\\\[300px\\\\] {\\n max-height: 300px;\\n}\\n.max-h-\\\\[400px\\\\] {\\n max-height: 400px;\\n}\\n.max-h-\\\\[95vh\\\\] {\\n max-height: 95vh;\\n}\\n.max-h-screen {\\n max-height: 100vh;\\n}\\n.min-h-\\\\[200px\\\\] {\\n min-height: 200px;\\n}\\n.min-h-\\\\[300px\\\\] {\\n min-height: 300px;\\n}\\n.min-h-\\\\[400px\\\\] {\\n min-height: 400px;\\n}\\n.min-h-\\\\[80px\\\\] {\\n min-height: 80px;\\n}\\n.w-0 {\\n width: 0px;\\n}\\n.w-1\\\\/3 {\\n width: 33.333333%;\\n}\\n.w-1\\\\/4 {\\n width: 25%;\\n}\\n.w-1\\\\/5 {\\n width: 20%;\\n}\\n.w-10 {\\n width: 2.5rem;\\n}\\n.w-11 {\\n width: 2.75rem;\\n}\\n.w-12 {\\n width: 3rem;\\n}\\n.w-14 {\\n width: 3.5rem;\\n}\\n.w-16 {\\n width: 4rem;\\n}\\n.w-2 {\\n width: 0.5rem;\\n}\\n.w-20 {\\n width: 5rem;\\n}\\n.w-24 {\\n width: 6rem;\\n}\\n.w-3 {\\n width: 0.75rem;\\n}\\n.w-3\\\\.5 {\\n width: 0.875rem;\\n}\\n.w-4 {\\n width: 1rem;\\n}\\n.w-48 {\\n width: 12rem;\\n}\\n.w-5 {\\n width: 1.25rem;\\n}\\n.w-6 {\\n width: 1.5rem;\\n}\\n.w-64 {\\n width: 16rem;\\n}\\n.w-7 {\\n width: 1.75rem;\\n}\\n.w-72 {\\n width: 18rem;\\n}\\n.w-8 {\\n width: 2rem;\\n}\\n.w-80 {\\n width: 20rem;\\n}\\n.w-9 {\\n width: 2.25rem;\\n}\\n.w-96 {\\n width: 24rem;\\n}\\n.w-\\\\[0\\\\.5px\\\\] {\\n width: 0.5px;\\n}\\n.w-\\\\[180px\\\\] {\\n width: 180px;\\n}\\n.w-\\\\[1px\\\\] {\\n width: 1px;\\n}\\n.w-\\\\[250px\\\\] {\\n width: 250px;\\n}\\n.w-\\\\[2px\\\\] {\\n width: 2px;\\n}\\n.w-\\\\[300px\\\\] {\\n width: 300px;\\n}\\n.w-\\\\[350px\\\\] {\\n width: 350px;\\n}\\n.w-\\\\[360px\\\\] {\\n width: 360px;\\n}\\n.w-\\\\[380px\\\\] {\\n width: 380px;\\n}\\n.w-\\\\[60\\\\%\\\\] {\\n width: 60%;\\n}\\n.w-\\\\[65\\\\%\\\\] {\\n width: 65%;\\n}\\n.w-\\\\[70px\\\\] {\\n width: 70px;\\n}\\n.w-auto {\\n width: auto;\\n}\\n.w-full {\\n width: 100%;\\n}\\n.min-w-0 {\\n min-width: 0px;\\n}\\n.min-w-\\\\[8rem\\\\] {\\n min-width: 8rem;\\n}\\n.min-w-\\\\[var\\\\(--radix-select-trigger-width\\\\)\\\\] {\\n min-width: var(--radix-select-trigger-width);\\n}\\n.max-w-2xl {\\n max-width: 42rem;\\n}\\n.max-w-4xl {\\n max-width: 56rem;\\n}\\n.max-w-\\\\[95vw\\\\] {\\n max-width: 95vw;\\n}\\n.max-w-lg {\\n max-width: 32rem;\\n}\\n.max-w-md {\\n max-width: 28rem;\\n}\\n.max-w-none {\\n max-width: none;\\n}\\n.max-w-sm {\\n max-width: 24rem;\\n}\\n.max-w-xs {\\n max-width: 20rem;\\n}\\n.flex-1 {\\n flex: 1 1 0%;\\n}\\n.flex-shrink-0 {\\n flex-shrink: 0;\\n}\\n.shrink-0 {\\n flex-shrink: 0;\\n}\\n.grow {\\n flex-grow: 1;\\n}\\n.caption-bottom {\\n caption-side: bottom;\\n}\\n.translate-x-\\\\[-50\\\\%\\\\] {\\n --tw-translate-x: -50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.translate-y-0 {\\n --tw-translate-y: 0px;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.translate-y-\\\\[-50\\\\%\\\\] {\\n --tw-translate-y: -50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.scale-110 {\\n --tw-scale-x: 1.1;\\n --tw-scale-y: 1.1;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.scale-90 {\\n --tw-scale-x: .9;\\n --tw-scale-y: .9;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.transform {\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.animate-none {\\n animation: none;\\n}\\n@keyframes pulse {\\n 50% {\\n opacity: .5;\\n }\\n}\\n.animate-pulse {\\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\\n}\\n@keyframes spin {\\n to {\\n transform: rotate(360deg);\\n }\\n}\\n.animate-spin {\\n animation: spin 1s linear infinite;\\n}\\n.cursor-default {\\n cursor: default;\\n}\\n.cursor-grab {\\n cursor: grab;\\n}\\n.cursor-help {\\n cursor: help;\\n}\\n.cursor-not-allowed {\\n cursor: not-allowed;\\n}\\n.cursor-pointer {\\n cursor: pointer;\\n}\\n.cursor-text {\\n cursor: text;\\n}\\n.cursor-wait {\\n cursor: wait;\\n}\\n.touch-none {\\n touch-action: none;\\n}\\n.select-none {\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n user-select: none;\\n}\\n.resize-none {\\n resize: none;\\n}\\n.grid-cols-1 {\\n grid-template-columns: repeat(1, minmax(0, 1fr));\\n}\\n.grid-cols-10 {\\n grid-template-columns: repeat(10, minmax(0, 1fr));\\n}\\n.grid-cols-2 {\\n grid-template-columns: repeat(2, minmax(0, 1fr));\\n}\\n.grid-cols-3 {\\n grid-template-columns: repeat(3, minmax(0, 1fr));\\n}\\n.grid-cols-4 {\\n grid-template-columns: repeat(4, minmax(0, 1fr));\\n}\\n.grid-cols-7 {\\n grid-template-columns: repeat(7, minmax(0, 1fr));\\n}\\n.flex-row {\\n flex-direction: row;\\n}\\n.flex-col {\\n flex-direction: column;\\n}\\n.flex-col-reverse {\\n flex-direction: column-reverse;\\n}\\n.flex-wrap {\\n flex-wrap: wrap;\\n}\\n.items-start {\\n align-items: flex-start;\\n}\\n.items-center {\\n align-items: center;\\n}\\n.justify-start {\\n justify-content: flex-start;\\n}\\n.justify-end {\\n justify-content: flex-end;\\n}\\n.justify-center {\\n justify-content: center;\\n}\\n.justify-between {\\n justify-content: space-between;\\n}\\n.gap-1 {\\n gap: 0.25rem;\\n}\\n.gap-1\\\\.5 {\\n gap: 0.375rem;\\n}\\n.gap-2 {\\n gap: 0.5rem;\\n}\\n.gap-3 {\\n gap: 0.75rem;\\n}\\n.gap-4 {\\n gap: 1rem;\\n}\\n.gap-6 {\\n gap: 1.5rem;\\n}\\n.-space-x-2 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-x-reverse: 0;\\n margin-right: calc(-0.5rem * var(--tw-space-x-reverse));\\n margin-left: calc(-0.5rem * calc(1 - var(--tw-space-x-reverse)));\\n}\\n.space-x-2 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-x-reverse: 0;\\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\\n}\\n.space-x-3 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-x-reverse: 0;\\n margin-right: calc(0.75rem * var(--tw-space-x-reverse));\\n margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse)));\\n}\\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-y-reverse: 0;\\n margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));\\n margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));\\n}\\n.space-y-1\\\\.5 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-y-reverse: 0;\\n margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse)));\\n margin-bottom: calc(0.375rem * var(--tw-space-y-reverse));\\n}\\n.space-y-2 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-y-reverse: 0;\\n margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));\\n margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));\\n}\\n.space-y-3 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-y-reverse: 0;\\n margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));\\n margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));\\n}\\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-y-reverse: 0;\\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\\n}\\n.space-y-6 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-y-reverse: 0;\\n margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));\\n margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));\\n}\\n.overflow-auto {\\n overflow: auto;\\n}\\n.overflow-hidden {\\n overflow: hidden;\\n}\\n.overflow-y-auto {\\n overflow-y: auto;\\n}\\n.overflow-x-hidden {\\n overflow-x: hidden;\\n}\\n.truncate {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n.whitespace-nowrap {\\n white-space: nowrap;\\n}\\n.rounded {\\n border-radius: 0.25rem;\\n}\\n.rounded-2xl {\\n border-radius: 1rem;\\n}\\n.rounded-3xl {\\n border-radius: 1.5rem;\\n}\\n.rounded-full {\\n border-radius: 9999px;\\n}\\n.rounded-lg {\\n border-radius: var(--radius);\\n}\\n.rounded-md {\\n border-radius: calc(var(--radius) - 2px);\\n}\\n.rounded-none {\\n border-radius: 0px;\\n}\\n.rounded-sm {\\n border-radius: calc(var(--radius) - 4px);\\n}\\n.rounded-xl {\\n border-radius: 0.75rem;\\n}\\n.rounded-b {\\n border-bottom-right-radius: 0.25rem;\\n border-bottom-left-radius: 0.25rem;\\n}\\n.rounded-b-md {\\n border-bottom-right-radius: calc(var(--radius) - 2px);\\n border-bottom-left-radius: calc(var(--radius) - 2px);\\n}\\n.rounded-l-none {\\n border-top-left-radius: 0px;\\n border-bottom-left-radius: 0px;\\n}\\n.rounded-r-none {\\n border-top-right-radius: 0px;\\n border-bottom-right-radius: 0px;\\n}\\n.rounded-t-md {\\n border-top-left-radius: calc(var(--radius) - 2px);\\n border-top-right-radius: calc(var(--radius) - 2px);\\n}\\n.border {\\n border-width: 1px;\\n}\\n.border-0 {\\n border-width: 0px;\\n}\\n.border-2 {\\n border-width: 2px;\\n}\\n.border-b {\\n border-bottom-width: 1px;\\n}\\n.border-b-2 {\\n border-bottom-width: 2px;\\n}\\n.border-l {\\n border-left-width: 1px;\\n}\\n.border-l-0 {\\n border-left-width: 0px;\\n}\\n.border-l-2 {\\n border-left-width: 2px;\\n}\\n.border-l-\\\\[0\\\\.5px\\\\] {\\n border-left-width: 0.5px;\\n}\\n.border-r-0 {\\n border-right-width: 0px;\\n}\\n.border-t {\\n border-top-width: 1px;\\n}\\n.border-t-0 {\\n border-top-width: 0px;\\n}\\n.border-t-2 {\\n border-top-width: 2px;\\n}\\n.border-t-\\\\[0\\\\.5px\\\\] {\\n border-top-width: 0.5px;\\n}\\n.border-dashed {\\n border-style: dashed;\\n}\\n.border-dotted {\\n border-style: dotted;\\n}\\n.border-none {\\n border-style: none;\\n}\\n.border-accent {\\n --tw-border-opacity: 1;\\n border-color: hsl(var(--accent) / var(--tw-border-opacity, 1));\\n}\\n.border-amber-400\\\\/30 {\\n border-color: rgb(251 191 36 / 0.3);\\n}\\n.border-background {\\n --tw-border-opacity: 1;\\n border-color: hsl(var(--background) / var(--tw-border-opacity, 1));\\n}\\n.border-blue-200 {\\n --tw-border-opacity: 1;\\n border-color: rgb(191 219 254 / var(--tw-border-opacity, 1));\\n}\\n.border-blue-500\\\\/30 {\\n border-color: rgb(59 130 246 / 0.3);\\n}\\n.border-blue-600 {\\n --tw-border-opacity: 1;\\n border-color: rgb(37 99 235 / var(--tw-border-opacity, 1));\\n}\\n.border-border {\\n --tw-border-opacity: 1;\\n border-color: hsl(var(--border) / var(--tw-border-opacity, 1));\\n}\\n.border-destructive {\\n --tw-border-opacity: 1;\\n border-color: hsl(var(--destructive) / var(--tw-border-opacity, 1));\\n}\\n.border-destructive\\\\/30 {\\n border-color: hsl(var(--destructive) / 0.3);\\n}\\n.border-error {\\n --tw-border-opacity: 1;\\n border-color: hsl(var(--error) / var(--tw-border-opacity, 1));\\n}\\n.border-error\\\\/20 {\\n border-color: hsl(var(--error) / 0.2);\\n}\\n.border-foreground {\\n --tw-border-opacity: 1;\\n border-color: hsl(var(--foreground) / var(--tw-border-opacity, 1));\\n}\\n.border-gray-200 {\\n --tw-border-opacity: 1;\\n border-color: rgb(229 231 235 / var(--tw-border-opacity, 1));\\n}\\n.border-gray-300 {\\n --tw-border-opacity: 1;\\n border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));\\n}\\n.border-green-200 {\\n --tw-border-opacity: 1;\\n border-color: rgb(187 247 208 / var(--tw-border-opacity, 1));\\n}\\n.border-green-500 {\\n --tw-border-opacity: 1;\\n border-color: rgb(34 197 94 / var(--tw-border-opacity, 1));\\n}\\n.border-green-600 {\\n --tw-border-opacity: 1;\\n border-color: rgb(22 163 74 / var(--tw-border-opacity, 1));\\n}\\n.border-input {\\n --tw-border-opacity: 1;\\n border-color: hsl(var(--input) / var(--tw-border-opacity, 1));\\n}\\n.border-orange-200 {\\n --tw-border-opacity: 1;\\n border-color: rgb(254 215 170 / var(--tw-border-opacity, 1));\\n}\\n.border-primary {\\n --tw-border-opacity: 1;\\n border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));\\n}\\n.border-primary\\\\/20 {\\n border-color: hsl(var(--primary) / 0.2);\\n}\\n.border-primary\\\\/30 {\\n border-color: hsl(var(--primary) / 0.3);\\n}\\n.border-red-500 {\\n --tw-border-opacity: 1;\\n border-color: rgb(239 68 68 / var(--tw-border-opacity, 1));\\n}\\n.border-secondary {\\n --tw-border-opacity: 1;\\n border-color: hsl(var(--secondary) / var(--tw-border-opacity, 1));\\n}\\n.border-success {\\n --tw-border-opacity: 1;\\n border-color: hsl(var(--success) / var(--tw-border-opacity, 1));\\n}\\n.border-success\\\\/30 {\\n border-color: hsl(var(--success) / 0.3);\\n}\\n.border-success\\\\/40 {\\n border-color: hsl(var(--success) / 0.4);\\n}\\n.border-transparent {\\n border-color: transparent;\\n}\\n.border-warning {\\n --tw-border-opacity: 1;\\n border-color: hsl(var(--warning) / var(--tw-border-opacity, 1));\\n}\\n.border-warning\\\\/30 {\\n border-color: hsl(var(--warning) / 0.3);\\n}\\n.border-white {\\n --tw-border-opacity: 1;\\n border-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\\n}\\n.border-white\\\\/20 {\\n border-color: rgb(255 255 255 / 0.2);\\n}\\n.border-yellow-600 {\\n --tw-border-opacity: 1;\\n border-color: rgb(202 138 4 / var(--tw-border-opacity, 1));\\n}\\n.border-t-primary {\\n --tw-border-opacity: 1;\\n border-top-color: hsl(var(--primary) / var(--tw-border-opacity, 1));\\n}\\n.border-t-transparent {\\n border-top-color: transparent;\\n}\\n.bg-accent {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));\\n}\\n.bg-accent\\\\/20 {\\n background-color: hsl(var(--accent) / 0.2);\\n}\\n.bg-accent\\\\/30 {\\n background-color: hsl(var(--accent) / 0.3);\\n}\\n.bg-amber-100 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(254 243 199 / var(--tw-bg-opacity, 1));\\n}\\n.bg-background {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--background) / var(--tw-bg-opacity, 1));\\n}\\n.bg-background\\\\/60 {\\n background-color: hsl(var(--background) / 0.6);\\n}\\n.bg-background\\\\/80 {\\n background-color: hsl(var(--background) / 0.8);\\n}\\n.bg-background\\\\/95 {\\n background-color: hsl(var(--background) / 0.95);\\n}\\n.bg-black\\\\/20 {\\n background-color: rgb(0 0 0 / 0.2);\\n}\\n.bg-black\\\\/40 {\\n background-color: rgb(0 0 0 / 0.4);\\n}\\n.bg-black\\\\/60 {\\n background-color: rgb(0 0 0 / 0.6);\\n}\\n.bg-black\\\\/80 {\\n background-color: rgb(0 0 0 / 0.8);\\n}\\n.bg-blue-50 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1));\\n}\\n.bg-blue-500 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));\\n}\\n.bg-blue-500\\\\/10 {\\n background-color: rgb(59 130 246 / 0.1);\\n}\\n.bg-border {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--border) / var(--tw-bg-opacity, 1));\\n}\\n.bg-card {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--card) / var(--tw-bg-opacity, 1));\\n}\\n.bg-destructive {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--destructive) / var(--tw-bg-opacity, 1));\\n}\\n.bg-destructive\\\\/10 {\\n background-color: hsl(var(--destructive) / 0.1);\\n}\\n.bg-destructive\\\\/5 {\\n background-color: hsl(var(--destructive) / 0.05);\\n}\\n.bg-error {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--error) / var(--tw-bg-opacity, 1));\\n}\\n.bg-error\\\\/20 {\\n background-color: hsl(var(--error) / 0.2);\\n}\\n.bg-foreground {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--foreground) / var(--tw-bg-opacity, 1));\\n}\\n.bg-gray-100 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));\\n}\\n.bg-gray-200 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));\\n}\\n.bg-gray-300 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1));\\n}\\n.bg-gray-50 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));\\n}\\n.bg-green-50 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(240 253 244 / var(--tw-bg-opacity, 1));\\n}\\n.bg-green-500 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(34 197 94 / var(--tw-bg-opacity, 1));\\n}\\n.bg-info {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--info) / var(--tw-bg-opacity, 1));\\n}\\n.bg-muted {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));\\n}\\n.bg-muted\\\\/10 {\\n background-color: hsl(var(--muted) / 0.1);\\n}\\n.bg-muted\\\\/50 {\\n background-color: hsl(var(--muted) / 0.5);\\n}\\n.bg-orange-50 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 247 237 / var(--tw-bg-opacity, 1));\\n}\\n.bg-popover {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--popover) / var(--tw-bg-opacity, 1));\\n}\\n.bg-primary {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));\\n}\\n.bg-primary-foreground {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--primary-foreground) / var(--tw-bg-opacity, 1));\\n}\\n.bg-primary\\\\/10 {\\n background-color: hsl(var(--primary) / 0.1);\\n}\\n.bg-primary\\\\/20 {\\n background-color: hsl(var(--primary) / 0.2);\\n}\\n.bg-primary\\\\/5 {\\n background-color: hsl(var(--primary) / 0.05);\\n}\\n.bg-red-500 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1));\\n}\\n.bg-secondary {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--secondary) / var(--tw-bg-opacity, 1));\\n}\\n.bg-secondary-foreground {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--secondary-foreground) / var(--tw-bg-opacity, 1));\\n}\\n.bg-secondary\\\\/10 {\\n background-color: hsl(var(--secondary) / 0.1);\\n}\\n.bg-secondary\\\\/20 {\\n background-color: hsl(var(--secondary) / 0.2);\\n}\\n.bg-success {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--success) / var(--tw-bg-opacity, 1));\\n}\\n.bg-success\\\\/10 {\\n background-color: hsl(var(--success) / 0.1);\\n}\\n.bg-success\\\\/20 {\\n background-color: hsl(var(--success) / 0.2);\\n}\\n.bg-transparent {\\n background-color: transparent;\\n}\\n.bg-warning {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--warning) / var(--tw-bg-opacity, 1));\\n}\\n.bg-warning\\\\/10 {\\n background-color: hsl(var(--warning) / 0.1);\\n}\\n.bg-warning\\\\/20 {\\n background-color: hsl(var(--warning) / 0.2);\\n}\\n.bg-white {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\\n}\\n.bg-white\\\\/10 {\\n background-color: rgb(255 255 255 / 0.1);\\n}\\n.bg-yellow-400 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(250 204 21 / var(--tw-bg-opacity, 1));\\n}\\n.bg-yellow-500 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(234 179 8 / var(--tw-bg-opacity, 1));\\n}\\n.bg-opacity-80 {\\n --tw-bg-opacity: 0.8;\\n}\\n.bg-gradient-to-br {\\n background-image: linear-gradient(to bottom right, var(--tw-gradient-stops));\\n}\\n.bg-gradient-to-r {\\n background-image: linear-gradient(to right, var(--tw-gradient-stops));\\n}\\n.from-amber-500 {\\n --tw-gradient-from: #f59e0b var(--tw-gradient-from-position);\\n --tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.from-amber-500\\\\/10 {\\n --tw-gradient-from: rgb(245 158 11 / 0.1) var(--tw-gradient-from-position);\\n --tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.from-blue-600 {\\n --tw-gradient-from: #2563eb var(--tw-gradient-from-position);\\n --tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.from-primary\\\\/5 {\\n --tw-gradient-from: hsl(var(--primary) / 0.05) var(--tw-gradient-from-position);\\n --tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.from-purple-600 {\\n --tw-gradient-from: #9333ea var(--tw-gradient-from-position);\\n --tw-gradient-to: rgb(147 51 234 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.from-transparent {\\n --tw-gradient-from: transparent var(--tw-gradient-from-position);\\n --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.via-border {\\n --tw-gradient-to: hsl(var(--border) / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops:\\n var(--tw-gradient-from),\\n hsl(var(--border) / 1) var(--tw-gradient-via-position),\\n var(--tw-gradient-to);\\n}\\n.via-transparent {\\n --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops:\\n var(--tw-gradient-from),\\n transparent var(--tw-gradient-via-position),\\n var(--tw-gradient-to);\\n}\\n.to-orange-500 {\\n --tw-gradient-to: #f97316 var(--tw-gradient-to-position);\\n}\\n.to-pink-600 {\\n --tw-gradient-to: #db2777 var(--tw-gradient-to-position);\\n}\\n.to-primary\\\\/10 {\\n --tw-gradient-to: hsl(var(--primary) / 0.1) var(--tw-gradient-to-position);\\n}\\n.to-purple-500\\\\/10 {\\n --tw-gradient-to: rgb(168 85 247 / 0.1) var(--tw-gradient-to-position);\\n}\\n.to-purple-600 {\\n --tw-gradient-to: #9333ea var(--tw-gradient-to-position);\\n}\\n.to-transparent {\\n --tw-gradient-to: transparent var(--tw-gradient-to-position);\\n}\\n.fill-current {\\n fill: currentColor;\\n}\\n.fill-primary {\\n fill: hsl(var(--primary) / 1);\\n}\\n.object-cover {\\n -o-object-fit: cover;\\n object-fit: cover;\\n}\\n.p-0 {\\n padding: 0px;\\n}\\n.p-1 {\\n padding: 0.25rem;\\n}\\n.p-1\\\\.5 {\\n padding: 0.375rem;\\n}\\n.p-10 {\\n padding: 2.5rem;\\n}\\n.p-2 {\\n padding: 0.5rem;\\n}\\n.p-3 {\\n padding: 0.75rem;\\n}\\n.p-4 {\\n padding: 1rem;\\n}\\n.p-5 {\\n padding: 1.25rem;\\n}\\n.p-6 {\\n padding: 1.5rem;\\n}\\n.p-7 {\\n padding: 1.75rem;\\n}\\n.p-8 {\\n padding: 2rem;\\n}\\n.px-0 {\\n padding-left: 0px;\\n padding-right: 0px;\\n}\\n.px-1 {\\n padding-left: 0.25rem;\\n padding-right: 0.25rem;\\n}\\n.px-2 {\\n padding-left: 0.5rem;\\n padding-right: 0.5rem;\\n}\\n.px-2\\\\.5 {\\n padding-left: 0.625rem;\\n padding-right: 0.625rem;\\n}\\n.px-3 {\\n padding-left: 0.75rem;\\n padding-right: 0.75rem;\\n}\\n.px-4 {\\n padding-left: 1rem;\\n padding-right: 1rem;\\n}\\n.px-5 {\\n padding-left: 1.25rem;\\n padding-right: 1.25rem;\\n}\\n.px-6 {\\n padding-left: 1.5rem;\\n padding-right: 1.5rem;\\n}\\n.px-8 {\\n padding-left: 2rem;\\n padding-right: 2rem;\\n}\\n.py-0\\\\.5 {\\n padding-top: 0.125rem;\\n padding-bottom: 0.125rem;\\n}\\n.py-1 {\\n padding-top: 0.25rem;\\n padding-bottom: 0.25rem;\\n}\\n.py-1\\\\.5 {\\n padding-top: 0.375rem;\\n padding-bottom: 0.375rem;\\n}\\n.py-2 {\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n}\\n.py-3 {\\n padding-top: 0.75rem;\\n padding-bottom: 0.75rem;\\n}\\n.py-4 {\\n padding-top: 1rem;\\n padding-bottom: 1rem;\\n}\\n.py-5 {\\n padding-top: 1.25rem;\\n padding-bottom: 1.25rem;\\n}\\n.py-6 {\\n padding-top: 1.5rem;\\n padding-bottom: 1.5rem;\\n}\\n.pb-2 {\\n padding-bottom: 0.5rem;\\n}\\n.pb-3 {\\n padding-bottom: 0.75rem;\\n}\\n.pb-4 {\\n padding-bottom: 1rem;\\n}\\n.pl-10 {\\n padding-left: 2.5rem;\\n}\\n.pl-2 {\\n padding-left: 0.5rem;\\n}\\n.pl-2\\\\.5 {\\n padding-left: 0.625rem;\\n}\\n.pl-4 {\\n padding-left: 1rem;\\n}\\n.pl-7 {\\n padding-left: 1.75rem;\\n}\\n.pl-8 {\\n padding-left: 2rem;\\n}\\n.pl-9 {\\n padding-left: 2.25rem;\\n}\\n.pr-10 {\\n padding-right: 2.5rem;\\n}\\n.pr-2 {\\n padding-right: 0.5rem;\\n}\\n.pr-2\\\\.5 {\\n padding-right: 0.625rem;\\n}\\n.pr-3 {\\n padding-right: 0.75rem;\\n}\\n.pr-8 {\\n padding-right: 2rem;\\n}\\n.pt-0 {\\n padding-top: 0px;\\n}\\n.pt-2 {\\n padding-top: 0.5rem;\\n}\\n.pt-3 {\\n padding-top: 0.75rem;\\n}\\n.pt-4 {\\n padding-top: 1rem;\\n}\\n.pt-6 {\\n padding-top: 1.5rem;\\n}\\n.text-left {\\n text-align: left;\\n}\\n.text-center {\\n text-align: center;\\n}\\n.text-right {\\n text-align: right;\\n}\\n.align-middle {\\n vertical-align: middle;\\n}\\n.font-mono {\\n font-family: var(--font-mono);\\n}\\n.text-2xl {\\n font-size: 1.5rem;\\n line-height: 2rem;\\n}\\n.text-3xl {\\n font-size: 1.875rem;\\n line-height: 2.25rem;\\n}\\n.text-base {\\n font-size: 1rem;\\n line-height: 1.5rem;\\n}\\n.text-lg {\\n font-size: 1.125rem;\\n line-height: 1.75rem;\\n}\\n.text-sm {\\n font-size: 0.875rem;\\n line-height: 1.25rem;\\n}\\n.text-xl {\\n font-size: 1.25rem;\\n line-height: 1.75rem;\\n}\\n.text-xs {\\n font-size: 0.75rem;\\n line-height: 1rem;\\n}\\n.font-bold {\\n font-weight: 700;\\n}\\n.font-medium {\\n font-weight: 500;\\n}\\n.font-normal {\\n font-weight: 400;\\n}\\n.font-semibold {\\n font-weight: 600;\\n}\\n.capitalize {\\n text-transform: capitalize;\\n}\\n.italic {\\n font-style: italic;\\n}\\n.leading-5 {\\n line-height: 1.25rem;\\n}\\n.leading-none {\\n line-height: 1;\\n}\\n.leading-normal {\\n line-height: 1.5;\\n}\\n.leading-snug {\\n line-height: 1.375;\\n}\\n.leading-tight {\\n line-height: 1.25;\\n}\\n.tracking-tight {\\n letter-spacing: -0.025em;\\n}\\n.tracking-widest {\\n letter-spacing: 0.1em;\\n}\\n.text-accent-foreground {\\n --tw-text-opacity: 1;\\n color: hsl(var(--accent-foreground) / var(--tw-text-opacity, 1));\\n}\\n.text-amber-600 {\\n --tw-text-opacity: 1;\\n color: rgb(217 119 6 / var(--tw-text-opacity, 1));\\n}\\n.text-blue-500 {\\n --tw-text-opacity: 1;\\n color: rgb(59 130 246 / var(--tw-text-opacity, 1));\\n}\\n.text-blue-900 {\\n --tw-text-opacity: 1;\\n color: rgb(30 58 138 / var(--tw-text-opacity, 1));\\n}\\n.text-card-foreground {\\n --tw-text-opacity: 1;\\n color: hsl(var(--card-foreground) / var(--tw-text-opacity, 1));\\n}\\n.text-current {\\n color: currentColor;\\n}\\n.text-destructive {\\n --tw-text-opacity: 1;\\n color: hsl(var(--destructive) / var(--tw-text-opacity, 1));\\n}\\n.text-destructive-foreground {\\n --tw-text-opacity: 1;\\n color: hsl(var(--destructive-foreground) / var(--tw-text-opacity, 1));\\n}\\n.text-error {\\n --tw-text-opacity: 1;\\n color: hsl(var(--error) / var(--tw-text-opacity, 1));\\n}\\n.text-foreground {\\n --tw-text-opacity: 1;\\n color: hsl(var(--foreground) / var(--tw-text-opacity, 1));\\n}\\n.text-foreground\\\\/50 {\\n color: hsl(var(--foreground) / 0.5);\\n}\\n.text-foreground\\\\/60 {\\n color: hsl(var(--foreground) / 0.6);\\n}\\n.text-gray-500 {\\n --tw-text-opacity: 1;\\n color: rgb(107 114 128 / var(--tw-text-opacity, 1));\\n}\\n.text-gray-600 {\\n --tw-text-opacity: 1;\\n color: rgb(75 85 99 / var(--tw-text-opacity, 1));\\n}\\n.text-gray-700 {\\n --tw-text-opacity: 1;\\n color: rgb(55 65 81 / var(--tw-text-opacity, 1));\\n}\\n.text-gray-900 {\\n --tw-text-opacity: 1;\\n color: rgb(17 24 39 / var(--tw-text-opacity, 1));\\n}\\n.text-green-600 {\\n --tw-text-opacity: 1;\\n color: rgb(22 163 74 / var(--tw-text-opacity, 1));\\n}\\n.text-green-900 {\\n --tw-text-opacity: 1;\\n color: rgb(20 83 45 / var(--tw-text-opacity, 1));\\n}\\n.text-muted-foreground {\\n --tw-text-opacity: 1;\\n color: hsl(var(--muted-foreground) / var(--tw-text-opacity, 1));\\n}\\n.text-muted-foreground\\\\/30 {\\n color: hsl(var(--muted-foreground) / 0.3);\\n}\\n.text-muted-foreground\\\\/50 {\\n color: hsl(var(--muted-foreground) / 0.5);\\n}\\n.text-orange-900 {\\n --tw-text-opacity: 1;\\n color: rgb(124 45 18 / var(--tw-text-opacity, 1));\\n}\\n.text-popover-foreground {\\n --tw-text-opacity: 1;\\n color: hsl(var(--popover-foreground) / var(--tw-text-opacity, 1));\\n}\\n.text-primary {\\n --tw-text-opacity: 1;\\n color: hsl(var(--primary) / var(--tw-text-opacity, 1));\\n}\\n.text-primary-foreground {\\n --tw-text-opacity: 1;\\n color: hsl(var(--primary-foreground) / var(--tw-text-opacity, 1));\\n}\\n.text-red-500 {\\n --tw-text-opacity: 1;\\n color: rgb(239 68 68 / var(--tw-text-opacity, 1));\\n}\\n.text-red-600 {\\n --tw-text-opacity: 1;\\n color: rgb(220 38 38 / var(--tw-text-opacity, 1));\\n}\\n.text-secondary-foreground {\\n --tw-text-opacity: 1;\\n color: hsl(var(--secondary-foreground) / var(--tw-text-opacity, 1));\\n}\\n.text-success {\\n --tw-text-opacity: 1;\\n color: hsl(var(--success) / var(--tw-text-opacity, 1));\\n}\\n.text-warning {\\n --tw-text-opacity: 1;\\n color: hsl(var(--warning) / var(--tw-text-opacity, 1));\\n}\\n.text-white {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.text-yellow-500 {\\n --tw-text-opacity: 1;\\n color: rgb(234 179 8 / var(--tw-text-opacity, 1));\\n}\\n.underline {\\n text-decoration-line: underline;\\n}\\n.underline-offset-4 {\\n text-underline-offset: 4px;\\n}\\n.opacity-0 {\\n opacity: 0;\\n}\\n.opacity-100 {\\n opacity: 1;\\n}\\n.opacity-30 {\\n opacity: 0.3;\\n}\\n.opacity-50 {\\n opacity: 0.5;\\n}\\n.opacity-60 {\\n opacity: 0.6;\\n}\\n.opacity-70 {\\n opacity: 0.7;\\n}\\n.opacity-80 {\\n opacity: 0.8;\\n}\\n.opacity-90 {\\n opacity: 0.9;\\n}\\n.shadow {\\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.shadow-lg {\\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.shadow-md {\\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.shadow-none {\\n --tw-shadow: 0 0 #0000;\\n --tw-shadow-colored: 0 0 #0000;\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.shadow-sm {\\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.shadow-xl {\\n --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.shadow-primary\\\\/50 {\\n --tw-shadow-color: hsl(var(--primary) / 0.5);\\n --tw-shadow: var(--tw-shadow-colored);\\n}\\n.shadow-purple-500\\\\/25 {\\n --tw-shadow-color: rgb(168 85 247 / 0.25);\\n --tw-shadow: var(--tw-shadow-colored);\\n}\\n.outline-none {\\n outline: 2px solid transparent;\\n outline-offset: 2px;\\n}\\n.outline {\\n outline-style: solid;\\n}\\n.ring {\\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow),\\n var(--tw-ring-shadow),\\n var(--tw-shadow, 0 0 #0000);\\n}\\n.ring-0 {\\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow),\\n var(--tw-ring-shadow),\\n var(--tw-shadow, 0 0 #0000);\\n}\\n.ring-2 {\\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow),\\n var(--tw-ring-shadow),\\n var(--tw-shadow, 0 0 #0000);\\n}\\n.ring-gray-300 {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(209 213 219 / var(--tw-ring-opacity, 1));\\n}\\n.ring-primary\\\\/20 {\\n --tw-ring-color: hsl(var(--primary) / 0.2);\\n}\\n.ring-offset-2 {\\n --tw-ring-offset-width: 2px;\\n}\\n.ring-offset-background {\\n --tw-ring-offset-color: hsl(var(--background) / 1);\\n}\\n.blur {\\n --tw-blur: blur(8px);\\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\\n}\\n.blur-sm {\\n --tw-blur: blur(4px);\\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\\n}\\n.grayscale-\\\\[0\\\\.3\\\\] {\\n --tw-grayscale: grayscale(0.3);\\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\\n}\\n.filter {\\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\\n}\\n.backdrop-blur-md {\\n --tw-backdrop-blur: blur(12px);\\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\\n}\\n.backdrop-blur-sm {\\n --tw-backdrop-blur: blur(4px);\\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\\n}\\n.transition {\\n transition-property:\\n color,\\n background-color,\\n border-color,\\n text-decoration-color,\\n fill,\\n stroke,\\n opacity,\\n box-shadow,\\n transform,\\n filter,\\n -webkit-backdrop-filter;\\n transition-property:\\n color,\\n background-color,\\n border-color,\\n text-decoration-color,\\n fill,\\n stroke,\\n opacity,\\n box-shadow,\\n transform,\\n filter,\\n backdrop-filter;\\n transition-property:\\n color,\\n background-color,\\n border-color,\\n text-decoration-color,\\n fill,\\n stroke,\\n opacity,\\n box-shadow,\\n transform,\\n filter,\\n backdrop-filter,\\n -webkit-backdrop-filter;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-all {\\n transition-property: all;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-colors {\\n transition-property:\\n color,\\n background-color,\\n border-color,\\n text-decoration-color,\\n fill,\\n stroke;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-opacity {\\n transition-property: opacity;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-transform {\\n transition-property: transform;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.duration-100 {\\n transition-duration: 100ms;\\n}\\n.duration-200 {\\n transition-duration: 200ms;\\n}\\n.duration-300 {\\n transition-duration: 300ms;\\n}\\n.duration-500 {\\n transition-duration: 500ms;\\n}\\n.duration-700 {\\n transition-duration: 700ms;\\n}\\n.ease-out {\\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\\n}\\n.shadow-sm {\\n box-shadow: var(--shadow-sm);\\n}\\n.shadow-md {\\n box-shadow: var(--shadow-md);\\n}\\n.shadow-lg {\\n box-shadow: var(--shadow-lg);\\n}\\n.shadow-xl {\\n box-shadow: var(--shadow-xl);\\n}\\n.animate-none {\\n animation: none;\\n}\\n.animate-spin {\\n animation: spin 1s linear infinite;\\n}\\n.animate-pulse {\\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\\n}\\n.animate-fade-in {\\n animation: fadeIn var(--duration-normal) var(--ease-out);\\n}\\n.transition-all {\\n transition-property: all;\\n}\\n.transition-colors {\\n transition-property:\\n color,\\n background-color,\\n border-color,\\n text-decoration-color,\\n fill,\\n stroke;\\n}\\n.transition-opacity {\\n transition-property: opacity;\\n}\\n.transition-transform {\\n transition-property: transform;\\n}\\n.ease-out {\\n transition-timing-function: var(--ease-out);\\n}\\n:root {\\n --primary-50: 240 249 255;\\n --primary-100: 224 242 254;\\n --primary-200: 186 230 253;\\n --primary-300: 125 211 252;\\n --primary-400: 56 189 248;\\n --primary-500: 14 165 233;\\n --primary-600: 2 132 199;\\n --primary-700: 3 105 161;\\n --primary-800: 7 89 133;\\n --primary-900: 12 74 110;\\n --primary-950: 8 47 73;\\n --secondary-50: 248 250 252;\\n --secondary-100: 241 245 249;\\n --secondary-200: 226 232 240;\\n --secondary-300: 203 213 225;\\n --secondary-400: 148 163 184;\\n --secondary-500: 100 116 139;\\n --secondary-600: 71 85 105;\\n --secondary-700: 51 65 85;\\n --secondary-800: 30 41 59;\\n --secondary-900: 15 23 42;\\n --secondary-950: 2 6 23;\\n --success-50: 240 253 244;\\n --success-100: 220 252 231;\\n --success-200: 187 247 208;\\n --success-300: 134 239 172;\\n --success-400: 74 222 128;\\n --success-500: 34 197 94;\\n --success-600: 22 163 74;\\n --success-700: 21 128 61;\\n --success-800: 22 101 52;\\n --success-900: 20 83 45;\\n --success-950: 5 46 22;\\n --warning-50: 254 252 232;\\n --warning-100: 254 249 195;\\n --warning-200: 254 240 138;\\n --warning-300: 253 224 71;\\n --warning-400: 250 204 21;\\n --warning-500: 234 179 8;\\n --warning-600: 202 138 4;\\n --warning-700: 161 98 7;\\n --warning-800: 133 77 14;\\n --warning-900: 113 63 18;\\n --warning-950: 66 32 6;\\n --error-50: 254 242 242;\\n --error-100: 254 226 226;\\n --error-200: 254 202 202;\\n --error-300: 252 165 165;\\n --error-400: 248 113 113;\\n --error-500: 239 68 68;\\n --error-600: 220 38 38;\\n --error-700: 185 28 28;\\n --error-800: 153 27 27;\\n --error-900: 127 29 29;\\n --error-950: 69 10 10;\\n --background: 0 0% 100%;\\n --foreground: 222.2 47.4% 11.2%;\\n --card: 0 0% 100%;\\n --card-foreground: 222.2 47.4% 11.2%;\\n --popover: 0 0% 100%;\\n --popover-foreground: 222.2 47.4% 11.2%;\\n --primary: 222.2 47.4% 11.2%;\\n --primary-foreground: 210 40% 98%;\\n --secondary: 210 40% 96%;\\n --secondary-foreground: 222.2 47.4% 11.2%;\\n --muted: 210 40% 96%;\\n --muted-foreground: 215.4 16.3% 46.9%;\\n --accent: 210 40% 96%;\\n --accent-foreground: 222.2 47.4% 11.2%;\\n --destructive: 0 100% 50%;\\n --destructive-foreground: 210 40% 98%;\\n --border: 214.3 31.8% 91.4%;\\n --input: 214.3 31.8% 91.4%;\\n --ring: 215 20.2% 65.1%;\\n --chart-1: 12 76% 61%;\\n --chart-2: 173 58% 39%;\\n --chart-3: 197 37% 24%;\\n --chart-4: 43 74% 66%;\\n --chart-5: 27 87% 67%;\\n --font-sans:\\n \\\"Inter\\\",\\n -apple-system,\\n BlinkMacSystemFont,\\n \\\"Segoe UI\\\",\\n Roboto,\\n \\\"Helvetica Neue\\\",\\n Arial,\\n sans-serif;\\n --font-serif:\\n \\\"Crimson Text\\\",\\n Georgia,\\n \\\"Times New Roman\\\",\\n serif;\\n --font-mono:\\n \\\"JetBrains Mono\\\",\\n \\\"Fira Code\\\",\\n \\\"Consolas\\\",\\n monospace;\\n --text-xs: 0.75rem;\\n --text-sm: 0.875rem;\\n --text-base: 1rem;\\n --text-lg: 1.125rem;\\n --text-xl: 1.25rem;\\n --text-2xl: 1.5rem;\\n --text-3xl: 1.875rem;\\n --text-4xl: 2.25rem;\\n --text-5xl: 3rem;\\n --text-6xl: 3.75rem;\\n --text-7xl: 4.5rem;\\n --text-8xl: 6rem;\\n --text-9xl: 8rem;\\n --leading-none: 1;\\n --leading-tight: 1.25;\\n --leading-snug: 1.375;\\n --leading-normal: 1.5;\\n --leading-relaxed: 1.625;\\n --leading-loose: 2;\\n --font-thin: 100;\\n --font-extralight: 200;\\n --font-light: 300;\\n --font-normal: 400;\\n --font-medium: 500;\\n --font-semibold: 600;\\n --font-bold: 700;\\n --font-extrabold: 800;\\n --font-black: 900;\\n --spacing-0: 0;\\n --spacing-px: 1px;\\n --spacing-0-5: 0.125rem;\\n --spacing-1: 0.25rem;\\n --spacing-1-5: 0.375rem;\\n --spacing-2: 0.5rem;\\n --spacing-2-5: 0.625rem;\\n --spacing-3: 0.75rem;\\n --spacing-3-5: 0.875rem;\\n --spacing-4: 1rem;\\n --spacing-5: 1.25rem;\\n --spacing-6: 1.5rem;\\n --spacing-7: 1.75rem;\\n --spacing-8: 2rem;\\n --spacing-9: 2.25rem;\\n --spacing-10: 2.5rem;\\n --spacing-11: 2.75rem;\\n --spacing-12: 3rem;\\n --spacing-14: 3.5rem;\\n --spacing-16: 4rem;\\n --spacing-20: 5rem;\\n --spacing-24: 6rem;\\n --spacing-28: 7rem;\\n --spacing-32: 8rem;\\n --spacing-36: 9rem;\\n --spacing-40: 10rem;\\n --spacing-44: 11rem;\\n --spacing-48: 12rem;\\n --spacing-52: 13rem;\\n --spacing-56: 14rem;\\n --spacing-60: 15rem;\\n --spacing-64: 16rem;\\n --spacing-72: 18rem;\\n --spacing-80: 20rem;\\n --spacing-96: 24rem;\\n --radius-none: 0;\\n --radius-sm: 0.125rem;\\n --radius-base: 0.25rem;\\n --radius-md: 0.375rem;\\n --radius-lg: 0.5rem;\\n --radius-xl: 0.75rem;\\n --radius-2xl: 1rem;\\n --radius-3xl: 1.5rem;\\n --radius-full: 9999px;\\n --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\\n --shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);\\n --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\\n --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\\n --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\\n --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\\n --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06);\\n --shadow-none: 0 0 #0000;\\n --elevation-0: var(--shadow-none);\\n --elevation-1: var(--shadow-sm);\\n --elevation-2: var(--shadow-base);\\n --elevation-3: var(--shadow-md);\\n --elevation-4: var(--shadow-lg);\\n --elevation-5: var(--shadow-xl);\\n --elevation-6: var(--shadow-2xl);\\n --duration-75: 75ms;\\n --duration-100: 100ms;\\n --duration-150: 150ms;\\n --duration-200: 200ms;\\n --duration-300: 300ms;\\n --duration-500: 500ms;\\n --duration-700: 700ms;\\n --duration-1000: 1000ms;\\n --ease-linear: linear;\\n --ease-in: cubic-bezier(0.4, 0, 1, 1);\\n --ease-out: cubic-bezier(0, 0, 0.2, 1);\\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\\n --ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);\\n --ease-spring: cubic-bezier(0.175, 0.885, 0.32, 1.275);\\n --animate-fade-in: fadeIn var(--duration-300) var(--ease-out);\\n --animate-fade-out: fadeOut var(--duration-300) var(--ease-in);\\n --animate-slide-in-up: slideInUp var(--duration-300) var(--ease-out);\\n --animate-slide-in-down: slideInDown var(--duration-300) var(--ease-out);\\n --animate-slide-in-left: slideInLeft var(--duration-300) var(--ease-out);\\n --animate-slide-in-right: slideInRight var(--duration-300) var(--ease-out);\\n --animate-scale-in: scaleIn var(--duration-200) var(--ease-out);\\n --animate-scale-out: scaleOut var(--duration-200) var(--ease-in);\\n --animate-bounce: bounce var(--duration-500) var(--ease-bounce);\\n --animate-pulse: pulse var(--duration-1000) var(--ease-in-out) infinite;\\n --animate-spin: spin var(--duration-1000) var(--ease-linear) infinite;\\n --breakpoint-sm: 640px;\\n --breakpoint-md: 768px;\\n --breakpoint-lg: 1024px;\\n --breakpoint-xl: 1280px;\\n --breakpoint-2xl: 1536px;\\n --container-sm: 640px;\\n --container-md: 768px;\\n --container-lg: 1024px;\\n --container-xl: 1280px;\\n --container-2xl: 1536px;\\n --z-0: 0;\\n --z-10: 10;\\n --z-20: 20;\\n --z-30: 30;\\n --z-40: 40;\\n --z-50: 50;\\n --z-auto: auto;\\n --z-dropdown: 1000;\\n --z-sticky: 1020;\\n --z-fixed: 1030;\\n --z-modal-backdrop: 1040;\\n --z-modal: 1050;\\n --z-popover: 1060;\\n --z-tooltip: 1070;\\n --z-toast: 1080;\\n --button-height-sm: 2rem;\\n --button-height-md: 2.5rem;\\n --button-height-lg: 3rem;\\n --button-height-xl: 3.5rem;\\n --button-padding-sm: 0.5rem 0.75rem;\\n --button-padding-md: 0.625rem 1rem;\\n --button-padding-lg: 0.75rem 1.25rem;\\n --button-padding-xl: 1rem 1.5rem;\\n --button-font-size-sm: var(--text-sm);\\n --button-font-size-md: var(--text-base);\\n --button-font-size-lg: var(--text-lg);\\n --button-font-size-xl: var(--text-xl);\\n --input-height-sm: 2rem;\\n --input-height-md: 2.5rem;\\n --input-height-lg: 3rem;\\n --input-height-xl: 3.5rem;\\n --input-padding-sm: 0.5rem 0.75rem;\\n --input-padding-md: 0.625rem 1rem;\\n --input-padding-lg: 0.75rem 1.25rem;\\n --input-padding-xl: 1rem 1.5rem;\\n --input-border-width: 1px;\\n --input-border-radius: var(--radius-md);\\n --input-focus-ring-width: 2px;\\n --input-focus-ring-offset: 2px;\\n --card-padding-sm: 1rem;\\n --card-padding-md: 1.5rem;\\n --card-padding-lg: 2rem;\\n --card-padding-xl: 2.5rem;\\n --card-border-radius: var(--radius-lg);\\n --card-border-width: 1px;\\n --card-shadow: var(--elevation-1);\\n --card-hover-shadow: var(--elevation-2);\\n}\\n.dark {\\n --background: 224 71% 4%;\\n --foreground: 213 31% 91%;\\n --card: 224 71% 4%;\\n --card-foreground: 213 31% 91%;\\n --popover: 224 71% 4%;\\n --popover-foreground: 213 31% 91%;\\n --primary: 210 40% 98%;\\n --primary-foreground: 222.2 47.4% 1.2%;\\n --secondary: 222.2 84% 4.9%;\\n --secondary-foreground: 210 40% 98%;\\n --muted: 223 47% 11%;\\n --muted-foreground: 215.4 16.3% 56.9%;\\n --accent: 216 34% 17%;\\n --accent-foreground: 210 40% 98%;\\n --destructive: 0 63% 31%;\\n --destructive-foreground: 210 40% 98%;\\n --border: 216 34% 17%;\\n --input: 216 34% 17%;\\n --ring: 216 34% 17%;\\n --chart-1: 220 70% 50%;\\n --chart-2: 160 60% 45%;\\n --chart-3: 30 80% 55%;\\n --chart-4: 280 65% 60%;\\n --chart-5: 340 75% 55%;\\n}\\n@keyframes fadeIn {\\n from {\\n opacity: 0;\\n }\\n to {\\n opacity: 1;\\n }\\n}\\n@keyframes fadeOut {\\n from {\\n opacity: 1;\\n }\\n to {\\n opacity: 0;\\n }\\n}\\n@keyframes slideInUp {\\n from {\\n transform: translateY(100%);\\n opacity: 0;\\n }\\n to {\\n transform: translateY(0);\\n opacity: 1;\\n }\\n}\\n@keyframes slideInDown {\\n from {\\n transform: translateY(-100%);\\n opacity: 0;\\n }\\n to {\\n transform: translateY(0);\\n opacity: 1;\\n }\\n}\\n@keyframes slideInLeft {\\n from {\\n transform: translateX(-100%);\\n opacity: 0;\\n }\\n to {\\n transform: translateX(0);\\n opacity: 1;\\n }\\n}\\n@keyframes slideInRight {\\n from {\\n transform: translateX(100%);\\n opacity: 0;\\n }\\n to {\\n transform: translateX(0);\\n opacity: 1;\\n }\\n}\\n@keyframes scaleIn {\\n from {\\n transform: scale(0.95);\\n opacity: 0;\\n }\\n to {\\n transform: scale(1);\\n opacity: 1;\\n }\\n}\\n@keyframes scaleOut {\\n from {\\n transform: scale(1);\\n opacity: 1;\\n }\\n to {\\n transform: scale(0.95);\\n opacity: 0;\\n }\\n}\\n@keyframes bounce {\\n 0%, 20%, 53%, 80%, 100% {\\n transform: translate3d(0, 0, 0);\\n }\\n 40%, 43% {\\n transform: translate3d(0, -30px, 0);\\n }\\n 70% {\\n transform: translate3d(0, -15px, 0);\\n }\\n 90% {\\n transform: translate3d(0, -4px, 0);\\n }\\n}\\n@keyframes pulse {\\n 0%, 100% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0.5;\\n }\\n}\\n@keyframes spin {\\n to {\\n transform: rotate(360deg);\\n }\\n}\\n.animate-fade-in {\\n animation: var(--animate-fade-in);\\n}\\n.animate-fade-out {\\n animation: var(--animate-fade-out);\\n}\\n.animate-slide-in-up {\\n animation: var(--animate-slide-in-up);\\n}\\n.animate-slide-in-down {\\n animation: var(--animate-slide-in-down);\\n}\\n.animate-slide-in-left {\\n animation: var(--animate-slide-in-left);\\n}\\n.animate-slide-in-right {\\n animation: var(--animate-slide-in-right);\\n}\\n.animate-scale-in {\\n animation: var(--animate-scale-in);\\n}\\n.animate-scale-out {\\n animation: var(--animate-scale-out);\\n}\\n.animate-bounce {\\n animation: var(--animate-bounce);\\n}\\n.animate-pulse {\\n animation: var(--animate-pulse);\\n}\\n.animate-spin {\\n animation: var(--animate-spin);\\n}\\n@media (max-width: 639px) {\\n .container {\\n max-width: 100%;\\n }\\n}\\n@media (min-width: 640px) {\\n .container {\\n max-width: var(--container-sm);\\n }\\n}\\n@media (min-width: 768px) {\\n .container {\\n max-width: var(--container-md);\\n }\\n}\\n@media (min-width: 1024px) {\\n .container {\\n max-width: var(--container-lg);\\n }\\n}\\n@media (min-width: 1280px) {\\n .container {\\n max-width: var(--container-xl);\\n }\\n}\\n@media (min-width: 1536px) {\\n .container {\\n max-width: var(--container-2xl);\\n }\\n}\\n@keyframes spin {\\n to {\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes ping {\\n 75%, 100% {\\n transform: scale(2);\\n opacity: 0;\\n }\\n}\\n@keyframes pulse {\\n 0%, 100% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: .5;\\n }\\n}\\n@keyframes bounce {\\n 0%, 100% {\\n transform: translateY(-25%);\\n animation-timing-function: cubic-bezier(0.8, 0, 1, 1);\\n }\\n 50% {\\n transform: translateY(0);\\n animation-timing-function: cubic-bezier(0, 0, 0.2, 1);\\n }\\n}\\n@keyframes fadeIn {\\n from {\\n opacity: 0;\\n }\\n to {\\n opacity: 1;\\n }\\n}\\n@keyframes fadeOut {\\n from {\\n opacity: 1;\\n }\\n to {\\n opacity: 0;\\n }\\n}\\n@keyframes slideIn {\\n from {\\n transform: translateX(-100%);\\n }\\n to {\\n transform: translateX(0);\\n }\\n}\\n@keyframes scaleIn {\\n from {\\n transform: scale(0.95);\\n opacity: 0;\\n }\\n to {\\n transform: scale(1);\\n opacity: 1;\\n }\\n}\\n.file\\\\:border-0::file-selector-button {\\n border-width: 0px;\\n}\\n.file\\\\:bg-transparent::file-selector-button {\\n background-color: transparent;\\n}\\n.file\\\\:font-medium::file-selector-button {\\n font-weight: 500;\\n}\\n.placeholder\\\\:text-muted-foreground::-moz-placeholder {\\n --tw-text-opacity: 1;\\n color: hsl(var(--muted-foreground) / var(--tw-text-opacity, 1));\\n}\\n.placeholder\\\\:text-muted-foreground::placeholder {\\n --tw-text-opacity: 1;\\n color: hsl(var(--muted-foreground) / var(--tw-text-opacity, 1));\\n}\\n.after\\\\:absolute::after {\\n content: var(--tw-content);\\n position: absolute;\\n}\\n.after\\\\:inset-0::after {\\n content: var(--tw-content);\\n inset: 0px;\\n}\\n.after\\\\:bottom-1::after {\\n content: var(--tw-content);\\n bottom: 0.25rem;\\n}\\n.after\\\\:left-1\\\\/2::after {\\n content: var(--tw-content);\\n left: 50%;\\n}\\n.after\\\\:h-1::after {\\n content: var(--tw-content);\\n height: 0.25rem;\\n}\\n.after\\\\:w-1::after {\\n content: var(--tw-content);\\n width: 0.25rem;\\n}\\n.after\\\\:-translate-x-1\\\\/2::after {\\n content: var(--tw-content);\\n --tw-translate-x: -50%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.after\\\\:-translate-x-full::after {\\n content: var(--tw-content);\\n --tw-translate-x: -100%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.after\\\\:animate-\\\\[shimmer_2s_infinite\\\\]::after {\\n content: var(--tw-content);\\n animation: shimmer 2s infinite;\\n}\\n.after\\\\:rounded-full::after {\\n content: var(--tw-content);\\n border-radius: 9999px;\\n}\\n.after\\\\:bg-primary::after {\\n content: var(--tw-content);\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));\\n}\\n.after\\\\:bg-gradient-to-r::after {\\n content: var(--tw-content);\\n background-image: linear-gradient(to right, var(--tw-gradient-stops));\\n}\\n.after\\\\:from-transparent::after {\\n content: var(--tw-content);\\n --tw-gradient-from: transparent var(--tw-gradient-from-position);\\n --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.after\\\\:via-white\\\\/10::after {\\n content: var(--tw-content);\\n --tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops:\\n var(--tw-gradient-from),\\n rgb(255 255 255 / 0.1) var(--tw-gradient-via-position),\\n var(--tw-gradient-to);\\n}\\n.after\\\\:to-transparent::after {\\n content: var(--tw-content);\\n --tw-gradient-to: transparent var(--tw-gradient-to-position);\\n}\\n.focus-within\\\\:ring-2:focus-within {\\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow),\\n var(--tw-ring-shadow),\\n var(--tw-shadow, 0 0 #0000);\\n}\\n.focus-within\\\\:ring-ring:focus-within {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: hsl(var(--ring) / var(--tw-ring-opacity, 1));\\n}\\n.hover\\\\:-translate-y-0\\\\.5:hover {\\n --tw-translate-y: -0.125rem;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.hover\\\\:scale-105:hover {\\n --tw-scale-x: 1.05;\\n --tw-scale-y: 1.05;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.hover\\\\:scale-110:hover {\\n --tw-scale-x: 1.1;\\n --tw-scale-y: 1.1;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.hover\\\\:border-error\\\\/80:hover {\\n border-color: hsl(var(--error) / 0.8);\\n}\\n.hover\\\\:border-gray-300:hover {\\n --tw-border-opacity: 1;\\n border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));\\n}\\n.hover\\\\:border-gray-400:hover {\\n --tw-border-opacity: 1;\\n border-color: rgb(156 163 175 / var(--tw-border-opacity, 1));\\n}\\n.hover\\\\:border-primary\\\\/20:hover {\\n border-color: hsl(var(--primary) / 0.2);\\n}\\n.hover\\\\:border-primary\\\\/50:hover {\\n border-color: hsl(var(--primary) / 0.5);\\n}\\n.hover\\\\:border-success\\\\/80:hover {\\n border-color: hsl(var(--success) / 0.8);\\n}\\n.hover\\\\:border-white\\\\/30:hover {\\n border-color: rgb(255 255 255 / 0.3);\\n}\\n.hover\\\\:bg-accent:hover {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-accent\\\\/10:hover {\\n background-color: hsl(var(--accent) / 0.1);\\n}\\n.hover\\\\:bg-accent\\\\/5:hover {\\n background-color: hsl(var(--accent) / 0.05);\\n}\\n.hover\\\\:bg-black\\\\/10:hover {\\n background-color: rgb(0 0 0 / 0.1);\\n}\\n.hover\\\\:bg-error\\\\/90:hover {\\n background-color: hsl(var(--error) / 0.9);\\n}\\n.hover\\\\:bg-gray-100:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-gray-100\\\\/50:hover {\\n background-color: rgb(243 244 246 / 0.5);\\n}\\n.hover\\\\:bg-gray-200:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-gray-50:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-muted:hover {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-muted\\\\/10:hover {\\n background-color: hsl(var(--muted) / 0.1);\\n}\\n.hover\\\\:bg-muted\\\\/30:hover {\\n background-color: hsl(var(--muted) / 0.3);\\n}\\n.hover\\\\:bg-muted\\\\/50:hover {\\n background-color: hsl(var(--muted) / 0.5);\\n}\\n.hover\\\\:bg-muted\\\\/80:hover {\\n background-color: hsl(var(--muted) / 0.8);\\n}\\n.hover\\\\:bg-primary:hover {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-primary\\\\/20:hover {\\n background-color: hsl(var(--primary) / 0.2);\\n}\\n.hover\\\\:bg-secondary:hover {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--secondary) / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-success\\\\/90:hover {\\n background-color: hsl(var(--success) / 0.9);\\n}\\n.hover\\\\:bg-transparent:hover {\\n background-color: transparent;\\n}\\n.hover\\\\:bg-warning\\\\/90:hover {\\n background-color: hsl(var(--warning) / 0.9);\\n}\\n.hover\\\\:bg-white\\\\/20:hover {\\n background-color: rgb(255 255 255 / 0.2);\\n}\\n.hover\\\\:from-amber-600:hover {\\n --tw-gradient-from: #d97706 var(--tw-gradient-from-position);\\n --tw-gradient-to: rgb(217 119 6 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.hover\\\\:from-blue-700:hover {\\n --tw-gradient-from: #1d4ed8 var(--tw-gradient-from-position);\\n --tw-gradient-to: rgb(29 78 216 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.hover\\\\:from-purple-700:hover {\\n --tw-gradient-from: #7e22ce var(--tw-gradient-from-position);\\n --tw-gradient-to: rgb(126 34 206 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.hover\\\\:to-orange-600:hover {\\n --tw-gradient-to: #ea580c var(--tw-gradient-to-position);\\n}\\n.hover\\\\:to-pink-700:hover {\\n --tw-gradient-to: #be185d var(--tw-gradient-to-position);\\n}\\n.hover\\\\:to-purple-700:hover {\\n --tw-gradient-to: #7e22ce var(--tw-gradient-to-position);\\n}\\n.hover\\\\:text-accent-foreground:hover {\\n --tw-text-opacity: 1;\\n color: hsl(var(--accent-foreground) / var(--tw-text-opacity, 1));\\n}\\n.hover\\\\:text-foreground:hover {\\n --tw-text-opacity: 1;\\n color: hsl(var(--foreground) / var(--tw-text-opacity, 1));\\n}\\n.hover\\\\:text-muted-foreground:hover {\\n --tw-text-opacity: 1;\\n color: hsl(var(--muted-foreground) / var(--tw-text-opacity, 1));\\n}\\n.hover\\\\:text-primary:hover {\\n --tw-text-opacity: 1;\\n color: hsl(var(--primary) / var(--tw-text-opacity, 1));\\n}\\n.hover\\\\:text-primary-foreground:hover {\\n --tw-text-opacity: 1;\\n color: hsl(var(--primary-foreground) / var(--tw-text-opacity, 1));\\n}\\n.hover\\\\:underline:hover {\\n text-decoration-line: underline;\\n}\\n.hover\\\\:decoration-gray-300\\\\/30:hover {\\n text-decoration-color: rgb(209 213 219 / 0.3);\\n}\\n.hover\\\\:underline-offset-4:hover {\\n text-underline-offset: 4px;\\n}\\n.hover\\\\:opacity-100:hover {\\n opacity: 1;\\n}\\n.hover\\\\:shadow-\\\\[0_0_20px_rgba\\\\(var\\\\(--primary\\\\)\\\\,0\\\\.5\\\\)\\\\]:hover {\\n --tw-shadow: 0 0 20px rgba(var(--primary),0.5);\\n --tw-shadow-colored: 0 0 20px var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.hover\\\\:shadow-lg:hover {\\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.hover\\\\:shadow-md:hover {\\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.hover\\\\:shadow-xl:hover {\\n --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.hover\\\\:shadow-primary\\\\/20:hover {\\n --tw-shadow-color: hsl(var(--primary) / 0.2);\\n --tw-shadow: var(--tw-shadow-colored);\\n}\\n.hover\\\\:shadow-primary\\\\/60:hover {\\n --tw-shadow-color: hsl(var(--primary) / 0.6);\\n --tw-shadow: var(--tw-shadow-colored);\\n}\\n.hover\\\\:brightness-110:hover {\\n --tw-brightness: brightness(1.1);\\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\\n}\\n.hover\\\\:shadow-md:hover {\\n box-shadow: var(--shadow-md);\\n}\\n.hover\\\\:shadow-lg:hover {\\n box-shadow: var(--shadow-lg);\\n}\\n.hover\\\\:shadow-xl:hover {\\n box-shadow: var(--shadow-xl);\\n}\\n.focus\\\\:border-red-500:focus {\\n --tw-border-opacity: 1;\\n border-color: rgb(239 68 68 / var(--tw-border-opacity, 1));\\n}\\n.focus\\\\:bg-accent:focus {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));\\n}\\n.focus\\\\:bg-error\\\\/10:focus {\\n background-color: hsl(var(--error) / 0.1);\\n}\\n.focus\\\\:bg-gray-100:focus {\\n --tw-bg-opacity: 1;\\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));\\n}\\n.focus\\\\:bg-success\\\\/10:focus {\\n background-color: hsl(var(--success) / 0.1);\\n}\\n.focus\\\\:bg-warning\\\\/10:focus {\\n background-color: hsl(var(--warning) / 0.1);\\n}\\n.focus\\\\:text-accent-foreground:focus {\\n --tw-text-opacity: 1;\\n color: hsl(var(--accent-foreground) / var(--tw-text-opacity, 1));\\n}\\n.focus\\\\:text-error:focus {\\n --tw-text-opacity: 1;\\n color: hsl(var(--error) / var(--tw-text-opacity, 1));\\n}\\n.focus\\\\:text-foreground:focus {\\n --tw-text-opacity: 1;\\n color: hsl(var(--foreground) / var(--tw-text-opacity, 1));\\n}\\n.focus\\\\:text-success:focus {\\n --tw-text-opacity: 1;\\n color: hsl(var(--success) / var(--tw-text-opacity, 1));\\n}\\n.focus\\\\:text-warning:focus {\\n --tw-text-opacity: 1;\\n color: hsl(var(--warning) / var(--tw-text-opacity, 1));\\n}\\n.focus\\\\:opacity-100:focus {\\n opacity: 1;\\n}\\n.focus\\\\:outline-none:focus {\\n outline: 2px solid transparent;\\n outline-offset: 2px;\\n}\\n.focus\\\\:ring-0:focus {\\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow),\\n var(--tw-ring-shadow),\\n var(--tw-shadow, 0 0 #0000);\\n}\\n.focus\\\\:ring-1:focus {\\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow),\\n var(--tw-ring-shadow),\\n var(--tw-shadow, 0 0 #0000);\\n}\\n.focus\\\\:ring-2:focus {\\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow),\\n var(--tw-ring-shadow),\\n var(--tw-shadow, 0 0 #0000);\\n}\\n.focus\\\\:ring-destructive:focus {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: hsl(var(--destructive) / var(--tw-ring-opacity, 1));\\n}\\n.focus\\\\:ring-primary\\\\/30:focus {\\n --tw-ring-color: hsl(var(--primary) / 0.3);\\n}\\n.focus\\\\:ring-red-500:focus {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1));\\n}\\n.focus\\\\:ring-ring:focus {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: hsl(var(--ring) / var(--tw-ring-opacity, 1));\\n}\\n.focus\\\\:ring-success:focus {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: hsl(var(--success) / var(--tw-ring-opacity, 1));\\n}\\n.focus\\\\:ring-warning:focus {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: hsl(var(--warning) / var(--tw-ring-opacity, 1));\\n}\\n.focus\\\\:ring-offset-2:focus {\\n --tw-ring-offset-width: 2px;\\n}\\n.focus-visible\\\\:border-2:focus-visible {\\n border-width: 2px;\\n}\\n.focus-visible\\\\:border-b-2:focus-visible {\\n border-bottom-width: 2px;\\n}\\n.focus-visible\\\\:border-error:focus-visible {\\n --tw-border-opacity: 1;\\n border-color: hsl(var(--error) / var(--tw-border-opacity, 1));\\n}\\n.focus-visible\\\\:border-primary:focus-visible {\\n --tw-border-opacity: 1;\\n border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));\\n}\\n.focus-visible\\\\:border-success:focus-visible {\\n --tw-border-opacity: 1;\\n border-color: hsl(var(--success) / var(--tw-border-opacity, 1));\\n}\\n.focus-visible\\\\:bg-transparent:focus-visible {\\n background-color: transparent;\\n}\\n.focus-visible\\\\:shadow-lg:focus-visible {\\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.focus-visible\\\\:shadow-primary\\\\/30:focus-visible {\\n --tw-shadow-color: hsl(var(--primary) / 0.3);\\n --tw-shadow: var(--tw-shadow-colored);\\n}\\n.focus-visible\\\\:outline-none:focus-visible {\\n outline: 2px solid transparent;\\n outline-offset: 2px;\\n}\\n.focus-visible\\\\:ring-0:focus-visible {\\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow),\\n var(--tw-ring-shadow),\\n var(--tw-shadow, 0 0 #0000);\\n}\\n.focus-visible\\\\:ring-2:focus-visible {\\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow),\\n var(--tw-ring-shadow),\\n var(--tw-shadow, 0 0 #0000);\\n}\\n.focus-visible\\\\:ring-error\\\\/30:focus-visible {\\n --tw-ring-color: hsl(var(--error) / 0.3);\\n}\\n.focus-visible\\\\:ring-error\\\\/50:focus-visible {\\n --tw-ring-color: hsl(var(--error) / 0.5);\\n}\\n.focus-visible\\\\:ring-gray-400\\\\/30:focus-visible {\\n --tw-ring-color: rgb(156 163 175 / 0.3);\\n}\\n.focus-visible\\\\:ring-primary\\\\/30:focus-visible {\\n --tw-ring-color: hsl(var(--primary) / 0.3);\\n}\\n.focus-visible\\\\:ring-primary\\\\/50:focus-visible {\\n --tw-ring-color: hsl(var(--primary) / 0.5);\\n}\\n.focus-visible\\\\:ring-purple-400\\\\/30:focus-visible {\\n --tw-ring-color: rgb(192 132 252 / 0.3);\\n}\\n.focus-visible\\\\:ring-purple-500\\\\/50:focus-visible {\\n --tw-ring-color: rgb(168 85 247 / 0.5);\\n}\\n.focus-visible\\\\:ring-ring:focus-visible {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: hsl(var(--ring) / var(--tw-ring-opacity, 1));\\n}\\n.focus-visible\\\\:ring-success\\\\/30:focus-visible {\\n --tw-ring-color: hsl(var(--success) / 0.3);\\n}\\n.focus-visible\\\\:ring-success\\\\/50:focus-visible {\\n --tw-ring-color: hsl(var(--success) / 0.5);\\n}\\n.focus-visible\\\\:ring-warning\\\\/30:focus-visible {\\n --tw-ring-color: hsl(var(--warning) / 0.3);\\n}\\n.focus-visible\\\\:ring-white\\\\/50:focus-visible {\\n --tw-ring-color: rgb(255 255 255 / 0.5);\\n}\\n.focus-visible\\\\:ring-offset-1:focus-visible {\\n --tw-ring-offset-width: 1px;\\n}\\n.focus-visible\\\\:ring-offset-2:focus-visible {\\n --tw-ring-offset-width: 2px;\\n}\\n.focus-visible\\\\:ring-offset-background:focus-visible {\\n --tw-ring-offset-color: hsl(var(--background) / 1);\\n}\\n.focus-visible\\\\:shadow-lg:focus-visible {\\n box-shadow: var(--shadow-lg);\\n}\\n.active\\\\:translate-y-0:active {\\n --tw-translate-y: 0px;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.active\\\\:translate-y-0\\\\.5:active {\\n --tw-translate-y: 0.125rem;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.active\\\\:scale-95:active {\\n --tw-scale-x: .95;\\n --tw-scale-y: .95;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.active\\\\:cursor-grabbing:active {\\n cursor: grabbing;\\n}\\n.active\\\\:bg-error\\\\/80:active {\\n background-color: hsl(var(--error) / 0.8);\\n}\\n.active\\\\:bg-gray-100:active {\\n --tw-bg-opacity: 1;\\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));\\n}\\n.active\\\\:bg-gray-200:active {\\n --tw-bg-opacity: 1;\\n background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));\\n}\\n.active\\\\:bg-gray-300:active {\\n --tw-bg-opacity: 1;\\n background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1));\\n}\\n.active\\\\:bg-primary\\\\/30:active {\\n background-color: hsl(var(--primary) / 0.3);\\n}\\n.active\\\\:bg-success\\\\/80:active {\\n background-color: hsl(var(--success) / 0.8);\\n}\\n.active\\\\:bg-white\\\\/30:active {\\n background-color: rgb(255 255 255 / 0.3);\\n}\\n.active\\\\:from-blue-800:active {\\n --tw-gradient-from: #1e40af var(--tw-gradient-from-position);\\n --tw-gradient-to: rgb(30 64 175 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.active\\\\:to-purple-800:active {\\n --tw-gradient-to: #6b21a8 var(--tw-gradient-to-position);\\n}\\n.active\\\\:shadow-\\\\[0_0_10px_rgba\\\\(var\\\\(--primary\\\\)\\\\,0\\\\.3\\\\)\\\\]:active {\\n --tw-shadow: 0 0 10px rgba(var(--primary),0.3);\\n --tw-shadow-colored: 0 0 10px var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.active\\\\:shadow-md:active {\\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.active\\\\:shadow-sm:active {\\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.active\\\\:shadow-primary\\\\/40:active {\\n --tw-shadow-color: hsl(var(--primary) / 0.4);\\n --tw-shadow: var(--tw-shadow-colored);\\n}\\n.active\\\\:brightness-90:active {\\n --tw-brightness: brightness(.9);\\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\\n}\\n.active\\\\:brightness-95:active {\\n --tw-brightness: brightness(.95);\\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\\n}\\n.active\\\\:shadow-sm:active {\\n box-shadow: var(--shadow-sm);\\n}\\n.active\\\\:shadow-md:active {\\n box-shadow: var(--shadow-md);\\n}\\n.disabled\\\\:pointer-events-none:disabled {\\n pointer-events: none;\\n}\\n.disabled\\\\:cursor-not-allowed:disabled {\\n cursor: not-allowed;\\n}\\n.disabled\\\\:opacity-50:disabled {\\n opacity: 0.5;\\n}\\n.group:hover .group-hover\\\\:scale-110 {\\n --tw-scale-x: 1.1;\\n --tw-scale-y: 1.1;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.group:hover .group-hover\\\\:opacity-100 {\\n opacity: 1;\\n}\\n.group.destructive .group-\\\\[\\\\.destructive\\\\]\\\\:border-muted\\\\/40 {\\n border-color: hsl(var(--muted) / 0.4);\\n}\\n.group.destructive .group-\\\\[\\\\.destructive\\\\]\\\\:text-red-300 {\\n --tw-text-opacity: 1;\\n color: rgb(252 165 165 / var(--tw-text-opacity, 1));\\n}\\n.group.destructive .group-\\\\[\\\\.destructive\\\\]\\\\:hover\\\\:border-destructive\\\\/30:hover {\\n border-color: hsl(var(--destructive) / 0.3);\\n}\\n.group.destructive .group-\\\\[\\\\.destructive\\\\]\\\\:hover\\\\:bg-destructive:hover {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--destructive) / var(--tw-bg-opacity, 1));\\n}\\n.group.destructive .group-\\\\[\\\\.destructive\\\\]\\\\:hover\\\\:text-destructive-foreground:hover {\\n --tw-text-opacity: 1;\\n color: hsl(var(--destructive-foreground) / var(--tw-text-opacity, 1));\\n}\\n.group.destructive .group-\\\\[\\\\.destructive\\\\]\\\\:hover\\\\:text-red-50:hover {\\n --tw-text-opacity: 1;\\n color: rgb(254 242 242 / var(--tw-text-opacity, 1));\\n}\\n.group.destructive .group-\\\\[\\\\.destructive\\\\]\\\\:focus\\\\:ring-destructive:focus {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: hsl(var(--destructive) / var(--tw-ring-opacity, 1));\\n}\\n.group.destructive .group-\\\\[\\\\.destructive\\\\]\\\\:focus\\\\:ring-red-400:focus {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1));\\n}\\n.group.destructive .group-\\\\[\\\\.destructive\\\\]\\\\:focus\\\\:ring-offset-red-600:focus {\\n --tw-ring-offset-color: #dc2626;\\n}\\n.peer:disabled ~ .peer-disabled\\\\:cursor-not-allowed {\\n cursor: not-allowed;\\n}\\n.peer:disabled ~ .peer-disabled\\\\:opacity-70 {\\n opacity: 0.7;\\n}\\n.aria-selected\\\\:bg-accent[aria-selected=true] {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));\\n}\\n.aria-selected\\\\:bg-accent\\\\/10[aria-selected=true] {\\n background-color: hsl(var(--accent) / 0.1);\\n}\\n.aria-selected\\\\:text-accent-foreground[aria-selected=true] {\\n --tw-text-opacity: 1;\\n color: hsl(var(--accent-foreground) / var(--tw-text-opacity, 1));\\n}\\n.data-\\\\[disabled\\\\=true\\\\]\\\\:pointer-events-none[data-disabled=true] {\\n pointer-events: none;\\n}\\n.data-\\\\[disabled\\\\]\\\\:pointer-events-none[data-disabled] {\\n pointer-events: none;\\n}\\n.data-\\\\[side\\\\=bottom\\\\]\\\\:translate-y-1[data-side=bottom] {\\n --tw-translate-y: 0.25rem;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.data-\\\\[side\\\\=left\\\\]\\\\:-translate-x-1[data-side=left] {\\n --tw-translate-x: -0.25rem;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.data-\\\\[side\\\\=right\\\\]\\\\:translate-x-1[data-side=right] {\\n --tw-translate-x: 0.25rem;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.data-\\\\[side\\\\=top\\\\]\\\\:-translate-y-1[data-side=top] {\\n --tw-translate-y: -0.25rem;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.data-\\\\[state\\\\=checked\\\\]\\\\:translate-x-4[data-state=checked] {\\n --tw-translate-x: 1rem;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.data-\\\\[state\\\\=checked\\\\]\\\\:translate-x-5[data-state=checked] {\\n --tw-translate-x: 1.25rem;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.data-\\\\[state\\\\=checked\\\\]\\\\:translate-x-7[data-state=checked] {\\n --tw-translate-x: 1.75rem;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.data-\\\\[state\\\\=unchecked\\\\]\\\\:translate-x-0[data-state=unchecked] {\\n --tw-translate-x: 0px;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.data-\\\\[swipe\\\\=cancel\\\\]\\\\:translate-x-0[data-swipe=cancel] {\\n --tw-translate-x: 0px;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.data-\\\\[swipe\\\\=end\\\\]\\\\:translate-x-\\\\[var\\\\(--radix-toast-swipe-end-x\\\\)\\\\][data-swipe=end] {\\n --tw-translate-x: var(--radix-toast-swipe-end-x);\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.data-\\\\[swipe\\\\=move\\\\]\\\\:translate-x-\\\\[var\\\\(--radix-toast-swipe-move-x\\\\)\\\\][data-swipe=move] {\\n --tw-translate-x: var(--radix-toast-swipe-move-x);\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n@keyframes bounce {\\n 0%, 100% {\\n transform: translateY(-25%);\\n animation-timing-function: cubic-bezier(0.8, 0, 1, 1);\\n }\\n 50% {\\n transform: none;\\n animation-timing-function: cubic-bezier(0, 0, 0.2, 1);\\n }\\n}\\n.data-\\\\[state\\\\=checked\\\\]\\\\:animate-bounce[data-state=checked] {\\n animation: bounce 1s infinite;\\n}\\n@keyframes accordion-up {\\n from {\\n height: var(--radix-accordion-content-height);\\n }\\n to {\\n height: 0;\\n }\\n}\\n.data-\\\\[state\\\\=closed\\\\]\\\\:animate-accordion-up[data-state=closed] {\\n animation: accordion-up 0.2s ease-out;\\n}\\n@keyframes accordion-down {\\n from {\\n height: 0;\\n }\\n to {\\n height: var(--radix-accordion-content-height);\\n }\\n}\\n.data-\\\\[state\\\\=open\\\\]\\\\:animate-accordion-down[data-state=open] {\\n animation: accordion-down 0.2s ease-out;\\n}\\n.data-\\\\[state\\\\=active\\\\]\\\\:border-primary[data-state=active] {\\n --tw-border-opacity: 1;\\n border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));\\n}\\n.data-\\\\[state\\\\=checked\\\\]\\\\:border-primary[data-state=checked] {\\n --tw-border-opacity: 1;\\n border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));\\n}\\n.data-\\\\[state\\\\=active\\\\]\\\\:bg-background[data-state=active] {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--background) / var(--tw-bg-opacity, 1));\\n}\\n.data-\\\\[state\\\\=active\\\\]\\\\:bg-primary[data-state=active] {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));\\n}\\n.data-\\\\[state\\\\=active\\\\]\\\\:bg-transparent[data-state=active] {\\n background-color: transparent;\\n}\\n.data-\\\\[state\\\\=checked\\\\]\\\\:bg-accent[data-state=checked] {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));\\n}\\n.data-\\\\[state\\\\=checked\\\\]\\\\:bg-error[data-state=checked] {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--error) / var(--tw-bg-opacity, 1));\\n}\\n.data-\\\\[state\\\\=checked\\\\]\\\\:bg-primary[data-state=checked] {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));\\n}\\n.data-\\\\[state\\\\=checked\\\\]\\\\:bg-success[data-state=checked] {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--success) / var(--tw-bg-opacity, 1));\\n}\\n.data-\\\\[state\\\\=checked\\\\]\\\\:bg-warning[data-state=checked] {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--warning) / var(--tw-bg-opacity, 1));\\n}\\n.data-\\\\[state\\\\=on\\\\]\\\\:bg-accent[data-state=on] {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));\\n}\\n.data-\\\\[state\\\\=open\\\\]\\\\:bg-accent[data-state=open] {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));\\n}\\n.data-\\\\[state\\\\=selected\\\\]\\\\:bg-muted[data-state=selected] {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));\\n}\\n.data-\\\\[state\\\\=unchecked\\\\]\\\\:bg-input[data-state=unchecked] {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--input) / var(--tw-bg-opacity, 1));\\n}\\n.data-\\\\[state\\\\=active\\\\]\\\\:text-foreground[data-state=active] {\\n --tw-text-opacity: 1;\\n color: hsl(var(--foreground) / var(--tw-text-opacity, 1));\\n}\\n.data-\\\\[state\\\\=active\\\\]\\\\:text-primary-foreground[data-state=active] {\\n --tw-text-opacity: 1;\\n color: hsl(var(--primary-foreground) / var(--tw-text-opacity, 1));\\n}\\n.data-\\\\[state\\\\=checked\\\\]\\\\:text-primary-foreground[data-state=checked] {\\n --tw-text-opacity: 1;\\n color: hsl(var(--primary-foreground) / var(--tw-text-opacity, 1));\\n}\\n.data-\\\\[state\\\\=on\\\\]\\\\:text-accent-foreground[data-state=on] {\\n --tw-text-opacity: 1;\\n color: hsl(var(--accent-foreground) / var(--tw-text-opacity, 1));\\n}\\n.data-\\\\[state\\\\=active\\\\]\\\\:underline[data-state=active] {\\n text-decoration-line: underline;\\n}\\n.data-\\\\[state\\\\=active\\\\]\\\\:underline-offset-4[data-state=active] {\\n text-underline-offset: 4px;\\n}\\n.data-\\\\[disabled\\\\=true\\\\]\\\\:opacity-50[data-disabled=true] {\\n opacity: 0.5;\\n}\\n.data-\\\\[disabled\\\\]\\\\:opacity-50[data-disabled] {\\n opacity: 0.5;\\n}\\n.data-\\\\[state\\\\=inactive\\\\]\\\\:opacity-60[data-state=inactive] {\\n opacity: 0.6;\\n}\\n.data-\\\\[state\\\\=active\\\\]\\\\:shadow-md[data-state=active] {\\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.data-\\\\[state\\\\=active\\\\]\\\\:shadow-sm[data-state=active] {\\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.data-\\\\[swipe\\\\=move\\\\]\\\\:transition-none[data-swipe=move] {\\n transition-property: none;\\n}\\n.data-\\\\[state\\\\=open\\\\]\\\\:duration-150[data-state=open] {\\n transition-duration: 150ms;\\n}\\n.data-\\\\[state\\\\=active\\\\]\\\\:shadow-sm[data-state=active] {\\n box-shadow: var(--shadow-sm);\\n}\\n.data-\\\\[state\\\\=active\\\\]\\\\:shadow-md[data-state=active] {\\n box-shadow: var(--shadow-md);\\n}\\n.data-\\\\[state\\\\=checked\\\\]\\\\:animate-bounce[data-state=checked] {\\n animation: bounce 1s infinite;\\n}\\n.data-\\\\[swipe\\\\=move\\\\]\\\\:transition-none[data-swipe=move] {\\n transition: none;\\n}\\n.group[data-state=open] .group-data-\\\\[state\\\\=open\\\\]\\\\:rotate-180 {\\n --tw-rotate: 180deg;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.dark\\\\:border-blue-800:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(30 64 175 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:border-error\\\\/20:is(.dark *) {\\n border-color: hsl(var(--error) / 0.2);\\n}\\n.dark\\\\:border-error\\\\/30:is(.dark *) {\\n border-color: hsl(var(--error) / 0.3);\\n}\\n.dark\\\\:border-gray-600:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(75 85 99 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:border-gray-700:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(55 65 81 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:border-gray-700\\\\/20:is(.dark *) {\\n border-color: rgb(55 65 81 / 0.2);\\n}\\n.dark\\\\:border-gray-700\\\\/30:is(.dark *) {\\n border-color: rgb(55 65 81 / 0.3);\\n}\\n.dark\\\\:border-gray-800:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(31 41 55 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:border-green-800:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(22 101 52 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:border-orange-800:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(154 52 18 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:border-primary\\\\/30:is(.dark *) {\\n border-color: hsl(var(--primary) / 0.3);\\n}\\n.dark\\\\:border-success\\\\/20:is(.dark *) {\\n border-color: hsl(var(--success) / 0.2);\\n}\\n.dark\\\\:bg-amber-900\\\\/30:is(.dark *) {\\n background-color: rgb(120 53 15 / 0.3);\\n}\\n.dark\\\\:bg-blue-900\\\\/20:is(.dark *) {\\n background-color: rgb(30 58 138 / 0.2);\\n}\\n.dark\\\\:bg-error\\\\/90:is(.dark *) {\\n background-color: hsl(var(--error) / 0.9);\\n}\\n.dark\\\\:bg-gray-700:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:bg-gray-800:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:bg-gray-800\\\\/10:is(.dark *) {\\n background-color: rgb(31 41 55 / 0.1);\\n}\\n.dark\\\\:bg-gray-800\\\\/50:is(.dark *) {\\n background-color: rgb(31 41 55 / 0.5);\\n}\\n.dark\\\\:bg-gray-800\\\\/80:is(.dark *) {\\n background-color: rgb(31 41 55 / 0.8);\\n}\\n.dark\\\\:bg-gray-800\\\\/90:is(.dark *) {\\n background-color: rgb(31 41 55 / 0.9);\\n}\\n.dark\\\\:bg-gray-900:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:bg-gray-900\\\\/50:is(.dark *) {\\n background-color: rgb(17 24 39 / 0.5);\\n}\\n.dark\\\\:bg-gray-900\\\\/60:is(.dark *) {\\n background-color: rgb(17 24 39 / 0.6);\\n}\\n.dark\\\\:bg-green-900\\\\/20:is(.dark *) {\\n background-color: rgb(20 83 45 / 0.2);\\n}\\n.dark\\\\:bg-orange-900\\\\/20:is(.dark *) {\\n background-color: rgb(124 45 18 / 0.2);\\n}\\n.dark\\\\:bg-primary:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:bg-primary\\\\/20:is(.dark *) {\\n background-color: hsl(var(--primary) / 0.2);\\n}\\n.dark\\\\:bg-primary\\\\/90:is(.dark *) {\\n background-color: hsl(var(--primary) / 0.9);\\n}\\n.dark\\\\:bg-success\\\\/90:is(.dark *) {\\n background-color: hsl(var(--success) / 0.9);\\n}\\n.dark\\\\:bg-transparent:is(.dark *) {\\n background-color: transparent;\\n}\\n.dark\\\\:bg-warning\\\\/90:is(.dark *) {\\n background-color: hsl(var(--warning) / 0.9);\\n}\\n.dark\\\\:from-primary\\\\/10:is(.dark *) {\\n --tw-gradient-from: hsl(var(--primary) / 0.1) var(--tw-gradient-from-position);\\n --tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.dark\\\\:to-primary\\\\/20:is(.dark *) {\\n --tw-gradient-to: hsl(var(--primary) / 0.2) var(--tw-gradient-to-position);\\n}\\n.dark\\\\:fill-background:is(.dark *) {\\n fill: hsl(var(--background) / 1);\\n}\\n.dark\\\\:text-amber-400:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(251 191 36 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-blue-100:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(219 234 254 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-blue-400:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(96 165 250 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-gray-100:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(243 244 246 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-gray-200:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(229 231 235 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-gray-300:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(209 213 219 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-gray-300\\\\/60:is(.dark *) {\\n color: rgb(209 213 219 / 0.6);\\n}\\n.dark\\\\:text-gray-400:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(156 163 175 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-gray-500:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(107 114 128 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-gray-900:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(17 24 39 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-green-100:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(220 252 231 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-green-400:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(74 222 128 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-orange-100:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(255 237 213 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-primary-foreground:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: hsl(var(--primary-foreground) / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-red-400:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(248 113 113 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-white:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-yellow-400:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(250 204 21 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-opacity-95:is(.dark *) {\\n --tw-text-opacity: 0.95;\\n}\\n.dark\\\\:shadow-inner:is(.dark *) {\\n --tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);\\n --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.dark\\\\:shadow-lg:is(.dark *) {\\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.dark\\\\:shadow-md:is(.dark *) {\\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.dark\\\\:shadow-sm:is(.dark *) {\\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\\n box-shadow:\\n var(--tw-ring-offset-shadow, 0 0 #0000),\\n var(--tw-ring-shadow, 0 0 #0000),\\n var(--tw-shadow);\\n}\\n.dark\\\\:shadow-error\\\\/10:is(.dark *) {\\n --tw-shadow-color: hsl(var(--error) / 0.1);\\n --tw-shadow: var(--tw-shadow-colored);\\n}\\n.dark\\\\:shadow-gray-900\\\\/20:is(.dark *) {\\n --tw-shadow-color: rgb(17 24 39 / 0.2);\\n --tw-shadow: var(--tw-shadow-colored);\\n}\\n.dark\\\\:shadow-gray-900\\\\/30:is(.dark *) {\\n --tw-shadow-color: rgb(17 24 39 / 0.3);\\n --tw-shadow: var(--tw-shadow-colored);\\n}\\n.dark\\\\:shadow-gray-950\\\\/10:is(.dark *) {\\n --tw-shadow-color: rgb(3 7 18 / 0.1);\\n --tw-shadow: var(--tw-shadow-colored);\\n}\\n.dark\\\\:shadow-primary\\\\/10:is(.dark *) {\\n --tw-shadow-color: hsl(var(--primary) / 0.1);\\n --tw-shadow: var(--tw-shadow-colored);\\n}\\n.dark\\\\:shadow-primary\\\\/20:is(.dark *) {\\n --tw-shadow-color: hsl(var(--primary) / 0.2);\\n --tw-shadow: var(--tw-shadow-colored);\\n}\\n.dark\\\\:shadow-purple-500\\\\/10:is(.dark *) {\\n --tw-shadow-color: rgb(168 85 247 / 0.1);\\n --tw-shadow: var(--tw-shadow-colored);\\n}\\n.dark\\\\:shadow-success\\\\/10:is(.dark *) {\\n --tw-shadow-color: hsl(var(--success) / 0.1);\\n --tw-shadow: var(--tw-shadow-colored);\\n}\\n.dark\\\\:shadow-warning\\\\/10:is(.dark *) {\\n --tw-shadow-color: hsl(var(--warning) / 0.1);\\n --tw-shadow: var(--tw-shadow-colored);\\n}\\n.dark\\\\:ring-gray-600:is(.dark *) {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(75 85 99 / var(--tw-ring-opacity, 1));\\n}\\n.dark\\\\:ring-offset-gray-950:is(.dark *) {\\n --tw-ring-offset-color: #030712;\\n}\\n.dark\\\\:backdrop-blur-sm:is(.dark *) {\\n --tw-backdrop-blur: blur(4px);\\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\\n}\\n.dark\\\\:shadow-sm:is(.dark *) {\\n box-shadow: var(--shadow-sm);\\n}\\n.dark\\\\:shadow-md:is(.dark *) {\\n box-shadow: var(--shadow-md);\\n}\\n.dark\\\\:shadow-lg:is(.dark *) {\\n box-shadow: var(--shadow-lg);\\n}\\n.dark\\\\:placeholder\\\\:text-gray-500:is(.dark *)::-moz-placeholder {\\n --tw-text-opacity: 1;\\n color: rgb(107 114 128 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:placeholder\\\\:text-gray-500:is(.dark *)::placeholder {\\n --tw-text-opacity: 1;\\n color: rgb(107 114 128 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:after\\\\:via-white\\\\/5:is(.dark *)::after {\\n content: var(--tw-content);\\n --tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops:\\n var(--tw-gradient-from),\\n rgb(255 255 255 / 0.05) var(--tw-gradient-via-position),\\n var(--tw-gradient-to);\\n}\\n.dark\\\\:hover\\\\:border-error\\\\/80:hover:is(.dark *) {\\n border-color: hsl(var(--error) / 0.8);\\n}\\n.dark\\\\:hover\\\\:border-gray-500:hover:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(107 114 128 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:hover\\\\:border-gray-600:hover:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(75 85 99 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:hover\\\\:border-gray-700\\\\/30:hover:is(.dark *) {\\n border-color: rgb(55 65 81 / 0.3);\\n}\\n.dark\\\\:hover\\\\:border-primary\\\\/30:hover:is(.dark *) {\\n border-color: hsl(var(--primary) / 0.3);\\n}\\n.dark\\\\:hover\\\\:border-success\\\\/80:hover:is(.dark *) {\\n border-color: hsl(var(--success) / 0.8);\\n}\\n.dark\\\\:hover\\\\:bg-error\\\\/80:hover:is(.dark *) {\\n background-color: hsl(var(--error) / 0.8);\\n}\\n.dark\\\\:hover\\\\:bg-gray-700:hover:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:hover\\\\:bg-gray-700\\\\/50:hover:is(.dark *) {\\n background-color: rgb(55 65 81 / 0.5);\\n}\\n.dark\\\\:hover\\\\:bg-gray-700\\\\/90:hover:is(.dark *) {\\n background-color: rgb(55 65 81 / 0.9);\\n}\\n.dark\\\\:hover\\\\:bg-gray-800\\\\/20:hover:is(.dark *) {\\n background-color: rgb(31 41 55 / 0.2);\\n}\\n.dark\\\\:hover\\\\:bg-gray-800\\\\/30:hover:is(.dark *) {\\n background-color: rgb(31 41 55 / 0.3);\\n}\\n.dark\\\\:hover\\\\:bg-gray-800\\\\/80:hover:is(.dark *) {\\n background-color: rgb(31 41 55 / 0.8);\\n}\\n.dark\\\\:hover\\\\:bg-gray-800\\\\/90:hover:is(.dark *) {\\n background-color: rgb(31 41 55 / 0.9);\\n}\\n.dark\\\\:hover\\\\:bg-primary\\\\/30:hover:is(.dark *) {\\n background-color: hsl(var(--primary) / 0.3);\\n}\\n.dark\\\\:hover\\\\:bg-primary\\\\/90:hover:is(.dark *) {\\n background-color: hsl(var(--primary) / 0.9);\\n}\\n.dark\\\\:hover\\\\:bg-success\\\\/80:hover:is(.dark *) {\\n background-color: hsl(var(--success) / 0.8);\\n}\\n.dark\\\\:hover\\\\:bg-warning\\\\/80:hover:is(.dark *) {\\n background-color: hsl(var(--warning) / 0.8);\\n}\\n.dark\\\\:hover\\\\:bg-white\\\\/10:hover:is(.dark *) {\\n background-color: rgb(255 255 255 / 0.1);\\n}\\n.dark\\\\:hover\\\\:text-blue-300:hover:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(147 197 253 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:hover\\\\:text-gray-200:hover:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(229 231 235 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:hover\\\\:text-gray-400:hover:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(156 163 175 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:hover\\\\:text-white:hover:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:hover\\\\:text-opacity-95:hover:is(.dark *) {\\n --tw-text-opacity: 0.95;\\n}\\n.dark\\\\:focus\\\\:bg-gray-700:focus:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:focus\\\\:bg-gray-800:focus:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:focus\\\\:bg-green-900\\\\/20:focus:is(.dark *) {\\n background-color: rgb(20 83 45 / 0.2);\\n}\\n.dark\\\\:focus\\\\:bg-red-900\\\\/20:focus:is(.dark *) {\\n background-color: rgb(127 29 29 / 0.2);\\n}\\n.dark\\\\:focus\\\\:bg-yellow-900\\\\/20:focus:is(.dark *) {\\n background-color: rgb(113 63 18 / 0.2);\\n}\\n.dark\\\\:focus\\\\:text-gray-100:focus:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(243 244 246 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:focus\\\\:text-gray-200:focus:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(229 231 235 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:focus\\\\:text-green-300:focus:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(134 239 172 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:focus\\\\:text-red-300:focus:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(252 165 165 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:focus\\\\:text-yellow-300:focus:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(253 224 71 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:focus-visible\\\\:border-primary:focus-visible:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:focus-visible\\\\:border-primary\\\\/80:focus-visible:is(.dark *) {\\n border-color: hsl(var(--primary) / 0.8);\\n}\\n.dark\\\\:focus-visible\\\\:ring-error\\\\/25:focus-visible:is(.dark *) {\\n --tw-ring-color: hsl(var(--error) / 0.25);\\n}\\n.dark\\\\:focus-visible\\\\:ring-error\\\\/30:focus-visible:is(.dark *) {\\n --tw-ring-color: hsl(var(--error) / 0.3);\\n}\\n.dark\\\\:focus-visible\\\\:ring-gray-500\\\\/40:focus-visible:is(.dark *) {\\n --tw-ring-color: rgb(107 114 128 / 0.4);\\n}\\n.dark\\\\:focus-visible\\\\:ring-primary\\\\/20:focus-visible:is(.dark *) {\\n --tw-ring-color: hsl(var(--primary) / 0.2);\\n}\\n.dark\\\\:focus-visible\\\\:ring-primary\\\\/30:focus-visible:is(.dark *) {\\n --tw-ring-color: hsl(var(--primary) / 0.3);\\n}\\n.dark\\\\:focus-visible\\\\:ring-primary\\\\/40:focus-visible:is(.dark *) {\\n --tw-ring-color: hsl(var(--primary) / 0.4);\\n}\\n.dark\\\\:focus-visible\\\\:ring-primary\\\\/50:focus-visible:is(.dark *) {\\n --tw-ring-color: hsl(var(--primary) / 0.5);\\n}\\n.dark\\\\:focus-visible\\\\:ring-purple-500\\\\/40:focus-visible:is(.dark *) {\\n --tw-ring-color: rgb(168 85 247 / 0.4);\\n}\\n.dark\\\\:focus-visible\\\\:ring-success\\\\/25:focus-visible:is(.dark *) {\\n --tw-ring-color: hsl(var(--success) / 0.25);\\n}\\n.dark\\\\:focus-visible\\\\:ring-success\\\\/30:focus-visible:is(.dark *) {\\n --tw-ring-color: hsl(var(--success) / 0.3);\\n}\\n.dark\\\\:focus-visible\\\\:ring-warning\\\\/25:focus-visible:is(.dark *) {\\n --tw-ring-color: hsl(var(--warning) / 0.25);\\n}\\n.dark\\\\:focus-visible\\\\:ring-offset-gray-950:focus-visible:is(.dark *) {\\n --tw-ring-offset-color: #030712;\\n}\\n.dark\\\\:active\\\\:bg-error\\\\/70:active:is(.dark *) {\\n background-color: hsl(var(--error) / 0.7);\\n}\\n.dark\\\\:active\\\\:bg-gray-600\\\\/90:active:is(.dark *) {\\n background-color: rgb(75 85 99 / 0.9);\\n}\\n.dark\\\\:active\\\\:bg-gray-700\\\\/90:active:is(.dark *) {\\n background-color: rgb(55 65 81 / 0.9);\\n}\\n.dark\\\\:active\\\\:bg-gray-800\\\\/90:active:is(.dark *) {\\n background-color: rgb(31 41 55 / 0.9);\\n}\\n.dark\\\\:active\\\\:bg-primary\\\\/40:active:is(.dark *) {\\n background-color: hsl(var(--primary) / 0.4);\\n}\\n.dark\\\\:active\\\\:bg-primary\\\\/80:active:is(.dark *) {\\n background-color: hsl(var(--primary) / 0.8);\\n}\\n.dark\\\\:active\\\\:bg-success\\\\/70:active:is(.dark *) {\\n background-color: hsl(var(--success) / 0.7);\\n}\\n.dark\\\\:active\\\\:text-blue-500:active:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(59 130 246 / var(--tw-text-opacity, 1));\\n}\\n.peer:disabled ~ .dark\\\\:peer-disabled\\\\:opacity-60:is(.dark *) {\\n opacity: 0.6;\\n}\\n.dark\\\\:data-\\\\[state\\\\=active\\\\]\\\\:border-primary\\\\/80[data-state=active]:is(.dark *) {\\n border-color: hsl(var(--primary) / 0.8);\\n}\\n.dark\\\\:data-\\\\[state\\\\=active\\\\]\\\\:bg-gray-900[data-state=active]:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:data-\\\\[state\\\\=active\\\\]\\\\:bg-primary\\\\/90[data-state=active]:is(.dark *) {\\n background-color: hsl(var(--primary) / 0.9);\\n}\\n.dark\\\\:data-\\\\[state\\\\=unchecked\\\\]\\\\:bg-gray-700\\\\/70[data-state=unchecked]:is(.dark *) {\\n background-color: rgb(55 65 81 / 0.7);\\n}\\n.dark\\\\:data-\\\\[state\\\\=active\\\\]\\\\:text-gray-100[data-state=active]:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(243 244 246 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:data-\\\\[state\\\\=active\\\\]\\\\:text-gray-200[data-state=active]:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(229 231 235 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:data-\\\\[state\\\\=active\\\\]\\\\:text-white[data-state=active]:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:data-\\\\[state\\\\=active\\\\]\\\\:shadow-gray-950\\\\/10[data-state=active]:is(.dark *) {\\n --tw-shadow-color: rgb(3 7 18 / 0.1);\\n --tw-shadow: var(--tw-shadow-colored);\\n}\\n.dark\\\\:data-\\\\[state\\\\=active\\\\]\\\\:shadow-gray-950\\\\/20[data-state=active]:is(.dark *) {\\n --tw-shadow-color: rgb(3 7 18 / 0.2);\\n --tw-shadow: var(--tw-shadow-colored);\\n}\\n@media (min-width: 640px) {\\n .sm\\\\:bottom-0 {\\n bottom: 0px;\\n }\\n .sm\\\\:right-0 {\\n right: 0px;\\n }\\n .sm\\\\:top-auto {\\n top: auto;\\n }\\n .sm\\\\:flex-row {\\n flex-direction: row;\\n }\\n .sm\\\\:flex-col {\\n flex-direction: column;\\n }\\n .sm\\\\:items-center {\\n align-items: center;\\n }\\n .sm\\\\:justify-end {\\n justify-content: flex-end;\\n }\\n .sm\\\\:justify-between {\\n justify-content: space-between;\\n }\\n .sm\\\\:gap-2\\\\.5 {\\n gap: 0.625rem;\\n }\\n .sm\\\\:space-x-2 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-x-reverse: 0;\\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\\n }\\n .sm\\\\:text-left {\\n text-align: left;\\n }\\n}\\n@media (min-width: 768px) {\\n .md\\\\:max-w-\\\\[420px\\\\] {\\n max-width: 420px;\\n }\\n .md\\\\:grid-cols-2 {\\n grid-template-columns: repeat(2, minmax(0, 1fr));\\n }\\n .md\\\\:flex-row {\\n flex-direction: row;\\n }\\n .md\\\\:items-center {\\n align-items: center;\\n }\\n .md\\\\:justify-between {\\n justify-content: space-between;\\n }\\n}\\n@media (min-width: 1024px) {\\n .lg\\\\:grid-cols-3 {\\n grid-template-columns: repeat(3, minmax(0, 1fr));\\n }\\n}\\n.\\\\[\\\\&\\\\+div\\\\]\\\\:text-xs + div {\\n font-size: 0.75rem;\\n line-height: 1rem;\\n}\\n.\\\\[\\\\&\\\\:has\\\\(\\\\[role\\\\=checkbox\\\\]\\\\)\\\\]\\\\:pr-0:has([role=checkbox]) {\\n padding-right: 0px;\\n}\\n.\\\\[\\\\&\\\\>div\\\\]\\\\:transition-all > div {\\n transition-property: all;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.\\\\[\\\\&\\\\>div\\\\]\\\\:duration-300 > div {\\n transition-duration: 300ms;\\n}\\n.\\\\[\\\\&\\\\>div\\\\]\\\\:duration-500 > div {\\n transition-duration: 500ms;\\n}\\n.\\\\[\\\\&\\\\>div\\\\]\\\\:duration-700 > div {\\n transition-duration: 700ms;\\n}\\n.\\\\[\\\\&\\\\>div\\\\]\\\\:transition-all > div {\\n transition-property: all;\\n}\\n.\\\\[\\\\&\\\\>span\\\\]\\\\:line-clamp-1 > span {\\n overflow: hidden;\\n display: -webkit-box;\\n -webkit-box-orient: vertical;\\n -webkit-line-clamp: 1;\\n}\\n.\\\\[\\\\&\\\\>svg\\\\]\\\\:shrink-0 > svg {\\n flex-shrink: 0;\\n}\\n.even\\\\:\\\\[\\\\&\\\\>tr\\\\]\\\\:bg-muted\\\\/50 > tr:nth-child(even) {\\n background-color: hsl(var(--muted) / 0.5);\\n}\\n.\\\\[\\\\&\\\\[data-state\\\\=open\\\\]\\\\>svg\\\\]\\\\:rotate-180[data-state=open] > svg {\\n --tw-rotate: 180deg;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.\\\\[\\\\&\\\\[data-state\\\\=open\\\\]\\\\]\\\\:rotate-180[data-state=open] {\\n --tw-rotate: 180deg;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.\\\\[\\\\&_\\\\[cmdk-group-heading\\\\]\\\\]\\\\:px-2 [cmdk-group-heading] {\\n padding-left: 0.5rem;\\n padding-right: 0.5rem;\\n}\\n.\\\\[\\\\&_\\\\[cmdk-group-heading\\\\]\\\\]\\\\:py-1\\\\.5 [cmdk-group-heading] {\\n padding-top: 0.375rem;\\n padding-bottom: 0.375rem;\\n}\\n.\\\\[\\\\&_\\\\[cmdk-group-heading\\\\]\\\\]\\\\:text-xs [cmdk-group-heading] {\\n font-size: 0.75rem;\\n line-height: 1rem;\\n}\\n.\\\\[\\\\&_\\\\[cmdk-group-heading\\\\]\\\\]\\\\:font-medium [cmdk-group-heading] {\\n font-weight: 500;\\n}\\n.\\\\[\\\\&_\\\\[cmdk-group-heading\\\\]\\\\]\\\\:text-muted-foreground [cmdk-group-heading] {\\n --tw-text-opacity: 1;\\n color: hsl(var(--muted-foreground) / var(--tw-text-opacity, 1));\\n}\\n.\\\\[\\\\&_\\\\[cmdk-group\\\\]\\\\:not\\\\(\\\\[hidden\\\\]\\\\)_\\\\~\\\\[cmdk-group\\\\]\\\\]\\\\:pt-0 [cmdk-group]:not([hidden]) ~ [cmdk-group] {\\n padding-top: 0px;\\n}\\n.\\\\[\\\\&_\\\\[cmdk-group\\\\]\\\\]\\\\:px-2 [cmdk-group] {\\n padding-left: 0.5rem;\\n padding-right: 0.5rem;\\n}\\n.\\\\[\\\\&_\\\\[cmdk-input-wrapper\\\\]_svg\\\\]\\\\:h-5 [cmdk-input-wrapper] svg {\\n height: 1.25rem;\\n}\\n.\\\\[\\\\&_\\\\[cmdk-input-wrapper\\\\]_svg\\\\]\\\\:w-5 [cmdk-input-wrapper] svg {\\n width: 1.25rem;\\n}\\n.\\\\[\\\\&_\\\\[cmdk-input\\\\]\\\\]\\\\:h-12 [cmdk-input] {\\n height: 3rem;\\n}\\n.\\\\[\\\\&_\\\\[cmdk-item\\\\]\\\\]\\\\:px-2 [cmdk-item] {\\n padding-left: 0.5rem;\\n padding-right: 0.5rem;\\n}\\n.\\\\[\\\\&_\\\\[cmdk-item\\\\]\\\\]\\\\:py-3 [cmdk-item] {\\n padding-top: 0.75rem;\\n padding-bottom: 0.75rem;\\n}\\n.\\\\[\\\\&_\\\\[cmdk-item\\\\]_svg\\\\]\\\\:h-5 [cmdk-item] svg {\\n height: 1.25rem;\\n}\\n.\\\\[\\\\&_\\\\[cmdk-item\\\\]_svg\\\\]\\\\:w-5 [cmdk-item] svg {\\n width: 1.25rem;\\n}\\n.\\\\[\\\\&_\\\\[role\\\\=slider\\\\]\\\\]\\\\:bg-blue-500 [role=slider] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));\\n}\\n.\\\\[\\\\&_\\\\[role\\\\=slider\\\\]\\\\]\\\\:bg-green-500 [role=slider] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(34 197 94 / var(--tw-bg-opacity, 1));\\n}\\n.\\\\[\\\\&_\\\\[role\\\\=slider\\\\]\\\\]\\\\:bg-red-500 [role=slider] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1));\\n}\\n.\\\\[\\\\&_blockquote\\\\]\\\\:border-l-4 blockquote {\\n border-left-width: 4px;\\n}\\n.\\\\[\\\\&_blockquote\\\\]\\\\:border-gray-300 blockquote {\\n --tw-border-opacity: 1;\\n border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));\\n}\\n.\\\\[\\\\&_blockquote\\\\]\\\\:pl-4 blockquote {\\n padding-left: 1rem;\\n}\\n.\\\\[\\\\&_blockquote\\\\]\\\\:italic blockquote {\\n font-style: italic;\\n}\\n.\\\\[\\\\&_h1\\\\]\\\\:mb-4 h1 {\\n margin-bottom: 1rem;\\n}\\n.\\\\[\\\\&_h1\\\\]\\\\:text-3xl h1 {\\n font-size: 1.875rem;\\n line-height: 2.25rem;\\n}\\n.\\\\[\\\\&_h1\\\\]\\\\:font-bold h1 {\\n font-weight: 700;\\n}\\n.\\\\[\\\\&_h2\\\\]\\\\:mb-3 h2 {\\n margin-bottom: 0.75rem;\\n}\\n.\\\\[\\\\&_h2\\\\]\\\\:text-2xl h2 {\\n font-size: 1.5rem;\\n line-height: 2rem;\\n}\\n.\\\\[\\\\&_h2\\\\]\\\\:font-bold h2 {\\n font-weight: 700;\\n}\\n.\\\\[\\\\&_h3\\\\]\\\\:mb-2 h3 {\\n margin-bottom: 0.5rem;\\n}\\n.\\\\[\\\\&_h3\\\\]\\\\:text-xl h3 {\\n font-size: 1.25rem;\\n line-height: 1.75rem;\\n}\\n.\\\\[\\\\&_h3\\\\]\\\\:font-bold h3 {\\n font-weight: 700;\\n}\\n.\\\\[\\\\&_h4\\\\]\\\\:mb-2 h4 {\\n margin-bottom: 0.5rem;\\n}\\n.\\\\[\\\\&_h4\\\\]\\\\:text-lg h4 {\\n font-size: 1.125rem;\\n line-height: 1.75rem;\\n}\\n.\\\\[\\\\&_h4\\\\]\\\\:font-bold h4 {\\n font-weight: 700;\\n}\\n.\\\\[\\\\&_h5\\\\]\\\\:mb-1 h5 {\\n margin-bottom: 0.25rem;\\n}\\n.\\\\[\\\\&_h5\\\\]\\\\:text-base h5 {\\n font-size: 1rem;\\n line-height: 1.5rem;\\n}\\n.\\\\[\\\\&_h5\\\\]\\\\:font-bold h5 {\\n font-weight: 700;\\n}\\n.\\\\[\\\\&_h6\\\\]\\\\:mb-1 h6 {\\n margin-bottom: 0.25rem;\\n}\\n.\\\\[\\\\&_h6\\\\]\\\\:text-sm h6 {\\n font-size: 0.875rem;\\n line-height: 1.25rem;\\n}\\n.\\\\[\\\\&_h6\\\\]\\\\:font-bold h6 {\\n font-weight: 700;\\n}\\n.\\\\[\\\\&_li\\\\]\\\\:mb-1 li {\\n margin-bottom: 0.25rem;\\n}\\n.\\\\[\\\\&_ol\\\\]\\\\:mb-4 ol {\\n margin-bottom: 1rem;\\n}\\n.\\\\[\\\\&_ol\\\\]\\\\:list-decimal ol {\\n list-style-type: decimal;\\n}\\n.\\\\[\\\\&_ol\\\\]\\\\:pl-6 ol {\\n padding-left: 1.5rem;\\n}\\n.\\\\[\\\\&_pre\\\\]\\\\:overflow-x-auto pre {\\n overflow-x: auto;\\n}\\n.\\\\[\\\\&_pre\\\\]\\\\:rounded pre {\\n border-radius: 0.25rem;\\n}\\n.\\\\[\\\\&_pre\\\\]\\\\:bg-gray-100 pre {\\n --tw-bg-opacity: 1;\\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));\\n}\\n.\\\\[\\\\&_pre\\\\]\\\\:p-4 pre {\\n padding: 1rem;\\n}\\n.\\\\[\\\\&_pre\\\\]\\\\:dark\\\\:bg-gray-800:is(.dark *) pre {\\n --tw-bg-opacity: 1;\\n background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));\\n}\\n.\\\\[\\\\&_tbody\\\\]\\\\:flex tbody {\\n display: flex;\\n}\\n.\\\\[\\\\&_tbody\\\\]\\\\:flex-col tbody {\\n flex-direction: column;\\n}\\n.\\\\[\\\\&_tbody_tr\\\\:nth-child\\\\(even\\\\)\\\\]\\\\:bg-muted\\\\/50 tbody tr:nth-child(even) {\\n background-color: hsl(var(--muted) / 0.5);\\n}\\n.\\\\[\\\\&_tbody_tr\\\\]\\\\:rounded-lg tbody tr {\\n border-radius: var(--radius);\\n}\\n.\\\\[\\\\&_tbody_tr\\\\]\\\\:border tbody tr {\\n border-width: 1px;\\n}\\n.\\\\[\\\\&_tbody_tr\\\\]\\\\:p-4 tbody tr {\\n padding: 1rem;\\n}\\n.\\\\[\\\\&_td\\\\]\\\\:py-1 td {\\n padding-top: 0.25rem;\\n padding-bottom: 0.25rem;\\n}\\n.\\\\[\\\\&_td\\\\]\\\\:py-2 td {\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n}\\n.\\\\[\\\\&_td\\\\]\\\\:py-4 td {\\n padding-top: 1rem;\\n padding-bottom: 1rem;\\n}\\n.\\\\[\\\\&_td\\\\]\\\\:py-6 td {\\n padding-top: 1.5rem;\\n padding-bottom: 1.5rem;\\n}\\n.\\\\[\\\\&_th\\\\]\\\\:py-1 th {\\n padding-top: 0.25rem;\\n padding-bottom: 0.25rem;\\n}\\n.\\\\[\\\\&_th\\\\]\\\\:py-2 th {\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n}\\n.\\\\[\\\\&_th\\\\]\\\\:py-4 th {\\n padding-top: 1rem;\\n padding-bottom: 1rem;\\n}\\n.\\\\[\\\\&_th\\\\]\\\\:py-6 th {\\n padding-top: 1.5rem;\\n padding-bottom: 1.5rem;\\n}\\n.\\\\[\\\\&_tr\\\\:last-child\\\\]\\\\:border-0 tr:last-child {\\n border-width: 0px;\\n}\\n.\\\\[\\\\&_tr\\\\]\\\\:border-b tr {\\n border-bottom-width: 1px;\\n}\\n.\\\\[\\\\&_ul\\\\]\\\\:mb-4 ul {\\n margin-bottom: 1rem;\\n}\\n.\\\\[\\\\&_ul\\\\]\\\\:list-disc ul {\\n list-style-type: disc;\\n}\\n.\\\\[\\\\&_ul\\\\]\\\\:pl-6 ul {\\n padding-left: 1.5rem;\\n}\\n\")","\"use client\"\n\nimport * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b border-gray-200 dark:border-gray-800\", className)}\n {...props}\n />\n))\nAccordionItem.displayName = \"AccordionItem\"\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 font-medium transition-all dark:text-gray-100\",\n \"hover:underline hover:text-primary dark:hover:text-primary-400\",\n \"[&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200 opacity-70 group-hover:opacity-100\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className={cn(\n \"overflow-hidden text-sm text-gray-700 dark:text-gray-300 transition-all\", \n \"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\",\n className\n )}\n {...props}\n >\n <div className=\"pb-4 pt-0\">{children}</div>\n </AccordionPrimitive.Content>\n))\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n// Utility function using clsx and tailwind-merge\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\n// Date formatting utility\nexport function formatDate(date: Date): string {\n if (isNaN(date.getTime())) {\n return 'Invalid Date'\n }\n return date.toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric'\n })\n}\n\n// Currency formatting utility\nexport function formatCurrency(amount: number): string {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD'\n }).format(amount)\n}\n\n// Text truncation utility\nexport function truncateText(text: string, maxLength: number): string {\n if (text.length <= maxLength) {\n return text\n }\n return text.slice(0, maxLength) + '...'\n}\n\n// ID generation utility\nexport function generateId(length: number = 8): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n let result = ''\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length))\n }\n return result\n}\n\n// Get client IP address from request\nexport function getClientIP(request: Request): string {\n // Check various headers for IP address\n const forwarded = request.headers.get('x-forwarded-for')\n const realIP = request.headers.get('x-real-ip')\n const remoteAddr = request.headers.get('x-remote-addr')\n \n if (forwarded) {\n // x-forwarded-for can contain multiple IPs, take the first one\n return forwarded.split(',')[0].trim()\n }\n \n if (realIP) {\n return realIP\n }\n \n if (remoteAddr) {\n return remoteAddr\n }\n \n // Fallback to a default IP if none found\n return '127.0.0.1'\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { AlertCircle, AlertTriangle, Info, Check, X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Alert Component\n *\n * Yüksek kaliteli, özelleştirilebilir ve erişilebilir alert bileşeni.\n * Bildirim, uyarı ve dikkat çekmek gereken içerikler için kullanılır.\n */\n\nconst alertVariants = cva(\n \"relative w-full flex items-center gap-3 p-4 border text-foreground [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground border-border\",\n primary: \"bg-primary/10 text-primary border-primary/30\",\n success: \"bg-success/10 text-success border-success/30\",\n warning: \"bg-warning/10 text-warning border-warning/30\",\n error: \"bg-destructive/10 text-destructive border-destructive/30\",\n info: \"bg-blue-500/10 text-blue-500 border-blue-500/30\",\n },\n size: {\n sm: \"py-2 text-xs\",\n default: \"py-3 text-sm\",\n lg: \"py-4 text-base\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n default: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n },\n withClose: {\n true: \"pr-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n withClose: false,\n },\n }\n);\n\nexport interface AlertProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {\n /** Alert ikonunu gizler */\n hideIcon?: boolean;\n /** Kapatma butonu ekler */\n closable?: boolean;\n /** Kapatma butonu tıklandığında çalışacak fonksiyon */\n onClose?: () => void;\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n ({ className, variant = \"default\", size, radius, hideIcon = false, closable = false, onClose, children, ...props }, ref) => {\n // Alert türüne göre ikon belirleme\n const Icon = React.useMemo(() => {\n switch (variant) {\n case \"success\":\n return Check;\n case \"warning\":\n return AlertTriangle;\n case \"error\":\n return AlertCircle;\n case \"info\":\n return Info;\n default:\n return Info;\n }\n }, [variant]);\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant, size, radius, withClose: closable }), className)}\n {...props}\n >\n {!hideIcon && <Icon className=\"h-5 w-5\" />}\n <div className=\"flex-1\">{children}</div>\n {closable && onClose && (\n <button\n onClick={onClose}\n className=\"absolute right-3 top-3 inline-flex h-6 w-6 items-center justify-center rounded-full opacity-70 transition-opacity hover:opacity-100\"\n aria-label=\"Kapat\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n );\n }\n);\nAlert.displayName = \"Alert\";\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"font-semibold leading-tight tracking-tight mb-1\", className)}\n {...props}\n />\n));\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm leading-5 text-muted-foreground\", className)}\n {...props}\n />\n));\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertTitle, AlertDescription };\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n/**\n * Aspect Ratio Component\n * \n * A component that maintains a specific aspect ratio for content.\n * Particularly useful for images, videos, and media content in responsive designs.\n * Fully integrated with the theme system, accessible and customizable.\n */\n\nconst aspectRatioVariants = cva(\n \"relative overflow-hidden\",\n {\n variants: {\n variant: {\n default: \"rounded-md bg-muted/10\",\n ghost: \"bg-transparent\",\n outline: \"rounded-md border border-border\",\n card: \"rounded-md bg-card shadow-sm\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\ninterface AspectRatioProps \n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof aspectRatioVariants> {\n /**\n * Aspect ratio (width/height). For example 16/9, 4/3, 1/1 etc.\n * @default 16/9\n */\n ratio?: number\n}\n\nconst AspectRatio = React.forwardRef<\n HTMLDivElement,\n AspectRatioProps\n>(({ className, variant, radius, ratio = 16 / 9, style, children, ...props }, ref) => (\n <div\n ref={ref} \n className={cn(aspectRatioVariants({ variant, radius }), className)}\n style={{\n position: \"relative\",\n paddingBottom: `${(1 / ratio) * 100}%`,\n ...style\n }}\n {...props}\n >\n <div className=\"absolute inset-0\">\n {children}\n </div>\n </div>\n))\nAspectRatio.displayName = \"AspectRatio\"\n\nexport { AspectRatio, aspectRatioVariants }\nexport type { AspectRatioProps }\n","import * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst avatarVariants = cva(\n \"relative flex shrink-0 overflow-hidden\",\n {\n variants: {\n size: {\n default: \"h-10 w-10\",\n xs: \"h-6 w-6\",\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-12 w-12\",\n xl: \"h-16 w-16\",\n \"2xl\": \"h-20 w-20\",\n },\n radius: {\n default: \"rounded-full\",\n sm: \"rounded-md\",\n lg: \"rounded-xl\",\n full: \"rounded-full\",\n none: \"rounded-none\",\n },\n variant: {\n default: \"\",\n ring: \"ring-2 ring-gray-300 dark:ring-gray-600\",\n ringOffset: \"ring-2 ring-gray-300 dark:ring-gray-600 ring-offset-2 ring-offset-background dark:ring-offset-gray-950\",\n border: \"border-2 border-gray-200 dark:border-gray-800\"\n }\n },\n defaultVariants: {\n size: \"default\",\n radius: \"default\",\n variant: \"default\"\n },\n }\n);\n\nexport interface AvatarProps \n extends React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>,\n VariantProps<typeof avatarVariants> {}\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n AvatarProps\n>(({ className, size, radius, variant, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(avatarVariants({ size, radius, variant }), className)}\n {...props}\n />\n));\nAvatar.displayName = AvatarPrimitive.Root.displayName;\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square h-full w-full\", className)}\n {...props}\n />\n));\nAvatarImage.displayName = AvatarPrimitive.Image.displayName;\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center bg-muted\",\n className\n )}\n {...props}\n />\n));\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;\n\n// Avatar Group Component for displaying multiple avatars\ninterface AvatarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n limit?: number;\n avatars: React.ReactNode[];\n overlapOffset?: number;\n}\n\nconst AvatarGroup = React.forwardRef<HTMLDivElement, AvatarGroupProps>(\n ({ className, limit, avatars, overlapOffset = -8, ...props }, ref) => {\n const visibleAvatars = limit ? avatars.slice(0, limit) : avatars;\n const remainingCount = limit ? Math.max(0, avatars.length - limit) : 0;\n\n return (\n <div\n ref={ref}\n className={cn(\"flex items-center\", className)}\n {...props}\n >\n <div className=\"flex\">\n {visibleAvatars.map((avatar, index) => (\n <div \n key={index} \n className=\"relative\"\n style={{ \n marginLeft: index === 0 ? 0 : `${overlapOffset}px`,\n zIndex: visibleAvatars.length - index \n }}\n >\n {avatar}\n </div>\n ))}\n {remainingCount > 0 && (\n <div \n className=\"relative z-0\"\n style={{ marginLeft: `${overlapOffset}px` }}\n >\n <Avatar variant=\"border\">\n <AvatarFallback>\n +{remainingCount}\n </AvatarFallback>\n </Avatar>\n </div>\n )}\n </div>\n </div>\n );\n }\n);\nAvatarGroup.displayName = \"AvatarGroup\";\n\nexport { Avatar, AvatarImage, AvatarFallback, AvatarGroup };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Premium Badge Component\n * \n * Durum, kategori ve etiketleme için yüksek kaliteli badge bileşeni.\n * Dark ve light modda uyumlu, erişilebilir ve çeşitli varyantlar sunar.\n */\n\nconst badgeVariants = cva(\n [\"inline-flex items-center gap-1.5\", \n \"font-medium transition-colors duration-200\", \n \"border focus:outline-none\",\n \"focus-visible:ring-2 focus-visible:ring-offset-1\"],\n {\n variants: {\n variant: {\n primary: [\n \"border-transparent bg-primary text-primary-foreground\",\n \"hover:bg-primary-hover dark:hover:bg-primary/90\",\n \"focus-visible:ring-primary/30 dark:focus-visible:ring-primary/40\",\n \"dark:bg-primary/90 dark:text-white dark:shadow-inner dark:shadow-primary/10\",\n ],\n secondary: [\n \"border-transparent bg-secondary text-secondary-foreground\",\n \"hover:bg-gray-200 dark:hover:bg-gray-700/90\",\n \"focus-visible:ring-gray-400/30 dark:focus-visible:ring-gray-500/40\",\n \"dark:bg-gray-800 dark:text-gray-100 dark:shadow-inner dark:shadow-gray-950/10\",\n ],\n outline: [\n \"border-gray-200 dark:border-gray-700\",\n \"bg-transparent text-foreground\",\n \"hover:border-gray-300 dark:hover:border-gray-600\",\n \"focus-visible:ring-gray-400/30 dark:focus-visible:ring-gray-500/40\",\n \"dark:text-gray-200 dark:bg-transparent dark:backdrop-blur-sm\",\n ],\n destructive: [\n \"border-transparent bg-error text-white\",\n \"hover:bg-error/90 dark:hover:bg-error/80\",\n \"focus-visible:ring-error/30 dark:focus-visible:ring-error/25\",\n \"dark:bg-error/90 dark:text-white dark:shadow-inner dark:shadow-error/10\",\n ],\n success: [\n \"border-transparent bg-success text-white\",\n \"hover:bg-success/90 dark:hover:bg-success/80\",\n \"focus-visible:ring-success/30 dark:focus-visible:ring-success/25\",\n \"dark:bg-success/90 dark:text-white dark:shadow-inner dark:shadow-success/10\",\n ],\n warning: [\n \"border-transparent bg-warning text-white\",\n \"hover:bg-warning/90 dark:hover:bg-warning/80\",\n \"focus-visible:ring-warning/30 dark:focus-visible:ring-warning/25\",\n \"dark:bg-warning/90 dark:text-gray-900 dark:shadow-inner dark:shadow-warning/10\",\n ],\n ghost: [\n \"border-transparent bg-transparent text-foreground\",\n \"hover:bg-gray-100 dark:hover:bg-gray-800/80\",\n \"focus-visible:ring-gray-400/30 dark:focus-visible:ring-gray-500/40\",\n \"dark:text-gray-200 dark:backdrop-blur-sm\",\n \"transition-colors duration-200\",\n ],\n pro: [\n \"border-transparent bg-gradient-to-r from-purple-600 to-pink-600 text-white\",\n \"hover:from-purple-700 hover:to-pink-700\",\n \"focus-visible:ring-purple-400/30 dark:focus-visible:ring-purple-500/40\",\n \"shadow-md dark:shadow-lg dark:shadow-purple-500/10\",\n ],\n admin: [\n \"border-transparent bg-gradient-to-r from-purple-600 to-pink-600 text-white\",\n \"hover:from-purple-700 hover:to-pink-700\", \n \"focus-visible:ring-purple-400/30 dark:focus-visible:ring-purple-500/40\",\n \"shadow-md dark:shadow-lg dark:shadow-purple-500/10\",\n ],\n },\n size: {\n sm: \"h-5 px-2 text-xs\",\n md: \"h-6 px-3 text-sm\",\n lg: \"h-8 px-4 text-base\",\n },\n radius: {\n default: \"rounded-full\",\n sm: \"rounded-md\",\n lg: \"rounded-xl\",\n none: \"rounded-none\",\n }\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n radius: \"default\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<VariantProps<typeof badgeVariants>, 'variant'> {\n withDot?: boolean;\n dotColor?: string;\n removable?: boolean;\n onRemove?: () => void;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n variant?: 'primary' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning' | 'ghost' | 'pro' | 'admin';\n}\n\n/**\n * Premium Badge Component\n * \n * @param props - Badge bileşeni özellikleri\n * @param props.variant - Badgenin görsel varyantı\n * @param props.size - Badge boyutu\n * @param props.radius - Köşe yuvarlama stili\n * @param props.withDot - Başında nokta gösterimi\n * @param props.dotColor - Noktanın rengi (özel)\n * @param props.removable - Kaldırılabilir badge (X simgesi ile)\n * @param props.onRemove - Kaldırma işlevi\n * @param props.leftIcon - Badge'in solunda görüntülenecek ikon\n * @param props.rightIcon - Badge'in sağında görüntülenecek ikon\n */\nfunction Badge({\n className,\n variant,\n size,\n radius,\n withDot,\n dotColor,\n removable,\n onRemove,\n leftIcon,\n rightIcon,\n children,\n ...props\n}: BadgeProps) {\n // Auto-assign icons and content for special variants\n let autoLeftIcon = leftIcon;\n let autoChildren = children;\n \n if (variant === 'pro') {\n // Auto Sparkles icon for pro\n autoLeftIcon = leftIcon || (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"w-3 h-3\">\n <path d=\"M12 0L13.09 8.26L22 9L13.09 9.74L12 18L10.91 9.74L2 9L10.91 8.26L12 0Z\" fill=\"currentColor\"/>\n <path d=\"M19 5L19.5 7L21 7.5L19.5 8L19 10L18.5 8L17 7.5L18.5 7L19 5Z\" fill=\"currentColor\"/>\n <path d=\"M19 15L19.5 17L21 17.5L19.5 18L19 20L18.5 18L17 17.5L18.5 17L19 15Z\" fill=\"currentColor\"/>\n </svg>\n );\n autoChildren = children || 'Pro';\n }\n \n if (variant === 'admin') {\n // Auto CheckCircle icon for admin\n autoLeftIcon = leftIcon || (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"w-3 h-3\">\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\" fill=\"currentColor\"/>\n </svg>\n );\n autoChildren = children || 'Admin Pro';\n }\n\n return (\n <div \n className={cn(badgeVariants({ variant, size, radius }), className)} \n data-removable={removable ? \"\" : undefined}\n {...props}\n >\n {withDot && (\n <span \n className={cn(\n \"h-2 w-2 rounded-full\", \n dotColor || \n (variant === \"destructive\" ? \"bg-white\" :\n variant === \"success\" ? \"bg-white\" :\n variant === \"warning\" ? \"bg-white\" :\n variant === \"secondary\" ? \"bg-secondary-foreground\" :\n variant === \"outline\" ? \"bg-foreground\" :\n variant === \"ghost\" ? \"bg-foreground\" :\n variant === \"pro\" ? \"bg-white\" :\n variant === \"admin\" ? \"bg-white\" :\n \"bg-primary-foreground\")\n )} \n aria-hidden=\"true\"\n />\n )}\n {autoLeftIcon && (\n <span className=\"inline-flex shrink-0\">\n {autoLeftIcon}\n </span>\n )}\n <span className=\"truncate\">{autoChildren}</span>\n {rightIcon && (\n <span className=\"inline-flex shrink-0\">\n {rightIcon}\n </span>\n )}\n {removable && onRemove && (\n <button \n type=\"button\"\n className=\"ml-1 -mr-1 h-3.5 w-3.5 rounded-full inline-flex items-center justify-center hover:bg-black/10 dark:hover:bg-white/10\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n aria-label=\"Remove badge\"\n >\n <svg \n width=\"8\" \n height=\"8\" \n viewBox=\"0 0 8 8\" \n fill=\"none\" \n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"opacity-70\"\n aria-hidden=\"true\"\n >\n <path d=\"M0.799988 7.19999L7.19999 0.799988M0.799988 0.799988L7.19999 7.19999\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n </button>\n )}\n </div>\n );\n}\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst breadcrumbVariants = cva(\n \"flex items-center gap-1.5 text-sm\",\n {\n variants: {\n variant: {\n default: \"dark:text-gray-100 transition-colors\",\n muted: \"text-muted-foreground dark:text-gray-400 transition-colors\",\n ghost: \"text-foreground/60 dark:text-gray-300/60 transition-colors\",\n },\n size: {\n default: \"text-sm\",\n sm: \"text-xs\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\ninterface BreadcrumbProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof breadcrumbVariants> {\n separator?: React.ReactNode;\n showHomeIcon?: boolean;\n}\n\ninterface BreadcrumbListProps extends React.HTMLAttributes<HTMLOListElement> {\n collapsed?: boolean;\n collapsedWidth?: number;\n}\n\ninterface BreadcrumbItemProps extends React.HTMLAttributes<HTMLLIElement> {\n isCurrent?: boolean;\n href?: string;\n asChild?: boolean;\n}\n\ninterface BreadcrumbSeparatorProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Custom separator icon or text */\n icon?: React.ReactNode;\n}\n\ninterface BreadcrumbEllipsisProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Custom ellipsis icon */\n icon?: React.ReactNode;\n}\n\nconst Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(\n ({ className, variant, size, ...props }, ref) => (\n <nav\n ref={ref}\n className={cn(breadcrumbVariants({ variant, size }), className)}\n aria-label=\"breadcrumb\"\n {...props}\n />\n )\n);\nBreadcrumb.displayName = \"Breadcrumb\";\n\nconst BreadcrumbList = React.forwardRef<HTMLOListElement, BreadcrumbListProps>(\n ({ className, collapsed, collapsedWidth = 3, ...props }, ref) => {\n const childrenArray = React.Children.toArray(props.children).filter(Boolean);\n const childCount = childrenArray.length;\n\n if (collapsed && childCount > collapsedWidth) {\n const firstItem = childrenArray[0];\n // const middleItems = childrenArray.slice(1, -2); // Uncomment when needed\n const lastTwoItems = childrenArray.slice(-2);\n\n return (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 sm:gap-2.5\",\n className\n )}\n {...props}\n >\n {firstItem}\n <BreadcrumbEllipsis />\n {lastTwoItems}\n </ol>\n );\n }\n\n return (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 sm:gap-2.5\",\n className\n )}\n {...props}\n />\n );\n }\n);\nBreadcrumbList.displayName = \"BreadcrumbList\";\n\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, BreadcrumbItemProps>(\n ({ className, isCurrent, href, asChild = false, ...props }, ref) => {\n const Comp = asChild ? React.Fragment : href ? \"a\" : \"span\";\n const itemProps = asChild ? {} : href ? { href } : {};\n\n return (\n <li\n ref={ref}\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n aria-current={isCurrent ? \"page\" : undefined}\n {...props}\n >\n <Comp \n className={cn(\n \"transition-colors duration-200 hover:text-foreground\",\n isCurrent \n ? \"font-medium text-foreground dark:text-white dark:text-opacity-95\" \n : \"text-muted-foreground hover:text-foreground dark:text-gray-400 dark:hover:text-gray-200 dark:hover:text-opacity-95 hover:underline hover:underline-offset-4 hover:decoration-gray-300/30\"\n )}\n {...itemProps}\n >\n {props.children}\n </Comp>\n </li>\n );\n }\n);\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: BreadcrumbSeparatorProps) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"text-muted-foreground dark:text-gray-500 opacity-70\", className)}\n {...props}\n >\n {children || <ChevronRight className=\"h-3.5 w-3.5\" />}\n </span>\n);\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\n\nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: BreadcrumbEllipsisProps) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex items-center text-muted-foreground dark:text-gray-500 dark:hover:text-gray-400 transition-colors duration-200\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n);\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\";\n\nconst BreadcrumbLink = React.forwardRef<HTMLAnchorElement, React.AnchorHTMLAttributes<HTMLAnchorElement>>(\n ({ className, href, ...props }, ref) => (\n <a\n ref={ref}\n href={href}\n className={cn(\n \"transition-colors duration-200 hover:text-foreground text-muted-foreground hover:underline hover:underline-offset-4 hover:decoration-gray-300/30 dark:text-gray-400 dark:hover:text-gray-200\",\n className\n )}\n {...props}\n />\n )\n);\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\n\nconst BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.HTMLAttributes<HTMLSpanElement>>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\n \"font-medium text-foreground dark:text-white dark:text-opacity-95\",\n className\n )}\n {...props}\n />\n )\n);\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n};\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Loader2 } from \"lucide-react\";\n\n/**\n * Premium Button Component\n * \n * A world-class, accessible, and versatile button component.\n * Pixel-perfect design with extensive variants and states.\n */\nconst buttonVariants = cva(\n [\"inline-flex items-center justify-center gap-2 whitespace-nowrap\",\n \"font-medium relative\",\n \"transition-all duration-200 ease-out\",\n \"premium-hover\", /* Standart premium hover efekti */\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n \"disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none\"],\n {\n variants: {\n variant: {\n primary: [\n \"bg-primary text-primary-foreground\",\n \"hover:bg-primary-hover dark:hover:bg-primary/90\",\n \"active:bg-primary-active dark:active:bg-primary/80\",\n \"shadow-sm dark:shadow-primary/20 dark:shadow-md\",\n \"focus-visible:ring-primary/50 dark:focus-visible:ring-primary/30\",\n \"dark:bg-primary dark:text-white\",\n \"transition-all duration-200\",\n ],\n secondary: [\n \"bg-secondary text-secondary-foreground\",\n \"hover:bg-gray-200 dark:hover:bg-gray-700/90\",\n \"active:bg-gray-300 dark:active:bg-gray-600/90\",\n \"border border-transparent dark:border-gray-700\",\n \"focus-visible:ring-gray-400/30 dark:focus-visible:ring-gray-500/40\",\n \"dark:bg-gray-800 dark:text-gray-100\",\n \"dark:shadow-sm dark:shadow-gray-900/20\",\n ],\n outline: [\n \"bg-background text-foreground\",\n \"border border-gray-300 dark:border-gray-700\",\n \"hover:border-gray-400 dark:hover:border-gray-500\",\n \"hover:bg-gray-50 dark:hover:bg-gray-800/80\",\n \"active:bg-gray-100 dark:active:bg-gray-800/90\",\n \"focus-visible:ring-gray-400/30 dark:focus-visible:ring-gray-500/40\",\n \"dark:text-gray-200 dark:bg-gray-900/50\",\n \"dark:shadow-sm dark:shadow-gray-950/10\",\n ],\n ghost: [\n \"text-foreground\",\n \"hover:bg-gray-100 dark:hover:bg-gray-800/90\",\n \"active:bg-gray-200 dark:active:bg-gray-700/90\",\n \"focus-visible:ring-gray-400/30 dark:focus-visible:ring-gray-500/40\",\n \"dark:text-gray-200\",\n \"transition-colors duration-200\",\n ],\n destructive: [\n \"bg-error text-white\",\n \"hover:bg-error/90 dark:hover:bg-error/80\",\n \"active:bg-error/80 dark:active:bg-error/70\",\n \"shadow-sm dark:shadow-error/10 dark:shadow-md\",\n \"focus-visible:ring-error/50 dark:focus-visible:ring-error/30\",\n \"dark:text-white dark:border-error/20\",\n \"transition-colors duration-200\",\n ],\n success: [\n \"bg-success text-white\",\n \"hover:bg-success/90 dark:hover:bg-success/80\",\n \"active:bg-success/80 dark:active:bg-success/70\",\n \"shadow-sm dark:shadow-success/10 dark:shadow-md\", \n \"focus-visible:ring-success/50 dark:focus-visible:ring-success/30\",\n \"dark:text-white dark:border-success/20\",\n \"transition-colors duration-200\",\n ],\n link: [\n \"text-primary bg-transparent\",\n \"underline-offset-4 hover:underline\",\n \"hover:text-primary-hover active:text-primary-active\",\n \"p-0 h-auto\",\n \"dark:text-blue-400 dark:hover:text-blue-300\",\n \"dark:active:text-blue-500\",\n \"transition-colors duration-200\",\n ],\n gradient: [\n \"bg-gradient-to-r from-blue-600 to-purple-600 text-white\",\n \"hover:from-blue-700 hover:to-purple-700\",\n \"active:from-blue-800 active:to-purple-800\",\n \"shadow-lg shadow-purple-500/25\",\n \"focus-visible:ring-purple-500/50\",\n \"transition-all duration-300\",\n ],\n glow: [\n \"bg-primary text-primary-foreground\",\n \"shadow-lg shadow-primary/50\",\n \"hover:shadow-xl hover:shadow-primary/60\",\n \"active:shadow-md active:shadow-primary/40\",\n \"focus-visible:ring-primary/50\",\n \"transition-all duration-300\",\n ],\n soft: [\n \"bg-primary/10 text-primary\",\n \"hover:bg-primary/20\",\n \"active:bg-primary/30\",\n \"focus-visible:ring-primary/50\",\n \"dark:bg-primary/20 dark:text-primary-foreground\",\n \"dark:hover:bg-primary/30 dark:active:bg-primary/40\",\n \"transition-colors duration-200\",\n ],\n glass: [\n \"bg-white/10 backdrop-blur-md text-foreground\",\n \"border border-white/20\",\n \"hover:bg-white/20 hover:border-white/30\",\n \"active:bg-white/30\",\n \"shadow-lg\",\n \"focus-visible:ring-white/50\",\n \"dark:bg-gray-800/10 dark:border-gray-700/20\",\n \"dark:hover:bg-gray-800/20 dark:hover:border-gray-700/30\",\n \"transition-all duration-200\",\n ],\n neon: [\n \"bg-transparent text-primary\",\n \"border-2 border-primary\",\n \"hover:bg-primary hover:text-primary-foreground\",\n \"hover:shadow-[0_0_20px_rgba(var(--primary),0.5)]\",\n \"active:shadow-[0_0_10px_rgba(var(--primary),0.3)]\",\n \"focus-visible:ring-primary/50\",\n \"transition-all duration-300\",\n ],\n },\n size: {\n xs: \"h-7 px-2.5 text-xs rounded\",\n sm: \"h-8 px-3 text-sm rounded\",\n md: \"h-10 px-4 text-base rounded-md\",\n lg: \"h-12 px-6 text-lg rounded-lg\",\n xl: \"h-14 px-8 text-xl rounded-lg\",\n icon: \"h-10 w-10 p-2 rounded-md\",\n \"icon-sm\": \"h-8 w-8 p-1.5 rounded\",\n \"icon-lg\": \"h-12 w-12 p-3 rounded-lg\",\n },\n rounded: {\n default: \"\",\n full: \"rounded-full\",\n none: \"rounded-none\",\n },\n fullWidth: {\n true: \"w-full\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n rounded: \"default\",\n fullWidth: false,\n },\n }\n);\n\n// Button component props\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n loading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n}\n\n/**\n * Premium Button Component\n * \n * @param props - Button component properties\n * @param props.variant - Visual variant (primary, secondary, ghost, etc.)\n * @param props.size - Button size (xs, sm, md, lg, xl)\n * @param props.loading - Loading state display\n * @param props.leftIcon - Icon on the left side\n * @param props.rightIcon - Icon on the right side\n * @param props.fullWidth - Full width display\n * @param props.rounded - Corner rounding style (default, full, none)\n * @param props.asChild - For Radix UI polymorphic component\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ \n className, \n variant, \n size, \n rounded, \n fullWidth,\n asChild = false,\n loading = false,\n leftIcon,\n rightIcon,\n children,\n disabled,\n ...props \n }, ref) => {\n // Radix UI'ın asChild pattern'i için - \"as\" prop yerine\n const Comp = asChild ? \"button\" : \"button\";\n \n return (\n <Comp\n className={cn(buttonVariants({ variant, size, rounded, fullWidth, className }))}\n ref={ref}\n disabled={disabled || loading}\n data-loading={loading ? \"\" : undefined}\n {...props}\n >\n {loading && (\n <Loader2 className=\"w-4 h-4 animate-spin\" aria-hidden=\"true\" />\n )}\n {!loading && leftIcon}\n {children}\n {!loading && rightIcon}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { buttonVariants } from \"./button\";\nimport { \n format, \n startOfMonth, \n endOfMonth, \n eachDayOfInterval, \n getDay, \n isSameMonth, \n isSameDay,\n isToday,\n addMonths,\n subMonths,\n startOfWeek,\n endOfWeek\n} from \"date-fns\";\n\nexport interface CalendarProps {\n mode?: \"single\" | \"range\" | \"multiple\";\n selected?: Date | Date[] | { from?: Date; to?: Date } | undefined;\n onSelect?: (date: Date | Date[] | { from?: Date; to?: Date } | undefined) => void;\n disabled?: (date: Date) => boolean;\n showOutsideDays?: boolean;\n className?: string;\n classNames?: Record<string, string>;\n numberOfMonths?: number;\n defaultMonth?: Date;\n initialFocus?: boolean;\n}\n\nfunction Calendar({\n mode = \"single\",\n selected,\n onSelect,\n disabled,\n showOutsideDays = false,\n className,\n classNames,\n numberOfMonths = 1,\n defaultMonth,\n ...props\n}: CalendarProps) {\n const [currentMonth, setCurrentMonth] = React.useState(\n defaultMonth || (selected && (selected as Date)) || new Date()\n );\n\n const weekDays = [\n { short: \"S\", full: \"Sunday\" },\n { short: \"M\", full: \"Monday\" },\n { short: \"T\", full: \"Tuesday\" },\n { short: \"W\", full: \"Wednesday\" },\n { short: \"T\", full: \"Thursday\" },\n { short: \"F\", full: \"Friday\" },\n { short: \"S\", full: \"Saturday\" }\n ];\n\n const handlePreviousMonth = () => {\n setCurrentMonth(subMonths(currentMonth, 1));\n };\n\n const handleNextMonth = () => {\n setCurrentMonth(addMonths(currentMonth, 1));\n };\n\n const handleDateClick = (date: Date) => {\n if (disabled?.(date)) return;\n\n if (mode === \"single\") {\n onSelect?.(date);\n } else if (mode === \"range\") {\n const currentSelection = selected as { from?: Date; to?: Date } | undefined;\n if (!currentSelection?.from || (currentSelection.from && currentSelection.to)) {\n onSelect?.({ from: date, to: undefined });\n } else {\n if (date < currentSelection.from) {\n onSelect?.({ from: date, to: currentSelection.from });\n } else {\n onSelect?.({ from: currentSelection.from, to: date });\n }\n }\n }\n };\n\n const isDateSelected = (date: Date) => {\n if (!selected) return false;\n \n if (mode === \"single\") {\n return isSameDay(date, selected as Date);\n } else if (mode === \"range\") {\n const range = selected as { from?: Date; to?: Date };\n if (range.from && range.to) {\n return date >= range.from && date <= range.to;\n }\n return range.from ? isSameDay(date, range.from) : false;\n }\n return false;\n };\n\n const isRangeStart = (date: Date) => {\n if (mode !== \"range\" || !selected) return false;\n const range = selected as { from?: Date; to?: Date };\n return range.from ? isSameDay(date, range.from) : false;\n };\n\n const isRangeEnd = (date: Date) => {\n if (mode !== \"range\" || !selected) return false;\n const range = selected as { from?: Date; to?: Date };\n return range.to ? isSameDay(date, range.to) : false;\n };\n\n const isRangeMiddle = (date: Date) => {\n if (mode !== \"range\" || !selected) return false;\n const range = selected as { from?: Date; to?: Date };\n if (!range.from || !range.to) return false;\n return date > range.from && date < range.to;\n };\n\n const getDaysInMonth = () => {\n const start = startOfMonth(currentMonth);\n const end = endOfMonth(currentMonth);\n const days = eachDayOfInterval({ start, end });\n \n // Get days from previous month to fill the first week\n const firstDayOfWeek = getDay(start);\n const previousMonthDays = [];\n if (firstDayOfWeek > 0 && showOutsideDays) {\n const previousMonthStart = startOfWeek(start);\n const previousMonthEnd = new Date(start);\n previousMonthEnd.setDate(previousMonthEnd.getDate() - 1);\n previousMonthDays.push(...eachDayOfInterval({ \n start: previousMonthStart, \n end: previousMonthEnd \n }));\n }\n \n // Get days from next month to fill the last week\n const lastDayOfWeek = getDay(end);\n const nextMonthDays = [];\n if (lastDayOfWeek < 6 && showOutsideDays) {\n const nextMonthStart = new Date(end);\n nextMonthStart.setDate(nextMonthStart.getDate() + 1);\n const nextMonthEnd = endOfWeek(end);\n nextMonthDays.push(...eachDayOfInterval({ \n start: nextMonthStart, \n end: nextMonthEnd \n }));\n }\n \n // Add empty cells for the first week if not showing outside days\n const emptyCells = [];\n if (!showOutsideDays && firstDayOfWeek > 0) {\n for (let i = 0; i < firstDayOfWeek; i++) {\n emptyCells.push(null);\n }\n }\n \n return [...previousMonthDays, ...emptyCells, ...days, ...nextMonthDays];\n };\n\n const days = getDaysInMonth();\n\n return (\n <div className={cn(\"p-0\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between px-6 py-4\">\n <button\n onClick={handlePreviousMonth}\n className={cn(\n \"h-10 w-10 bg-transparent p-0 rounded-lg\",\n \"hover:bg-muted transition-colors\",\n \"inline-flex items-center justify-center\"\n )}\n type=\"button\"\n >\n <ChevronLeft className=\"h-5 w-5\" />\n </button>\n \n <h2 className=\"text-base font-medium\">\n {format(currentMonth, \"MMMM yyyy\")}\n </h2>\n \n <button\n onClick={handleNextMonth}\n className={cn(\n \"h-10 w-10 bg-transparent p-0 rounded-lg\",\n \"hover:bg-muted transition-colors\",\n \"inline-flex items-center justify-center\"\n )}\n type=\"button\"\n >\n <ChevronRight className=\"h-5 w-5\" />\n </button>\n </div>\n\n {/* Calendar Grid */}\n <div className=\"px-6 pb-4\">\n {/* Week days header */}\n <div className=\"grid grid-cols-7 mb-2\">\n {weekDays.map((day, index) => (\n <div\n key={`weekday-${index}`}\n className=\"text-muted-foreground text-xs font-medium h-10 flex items-center justify-center\"\n title={day.full}\n >\n {day.short}\n </div>\n ))}\n </div>\n\n {/* Days grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {days.map((date, index) => {\n if (!date) {\n return <div key={`empty-${index}`} className=\"h-10 w-10\" />;\n }\n\n const isOutsideMonth = !isSameMonth(date, currentMonth);\n const isDisabled = disabled?.(date) || false;\n const isSelected = isDateSelected(date);\n const isTodayDate = isToday(date);\n const rangeStart = isRangeStart(date);\n const rangeEnd = isRangeEnd(date);\n const rangeMiddle = isRangeMiddle(date);\n\n return (\n <button\n key={date.toISOString()}\n onClick={() => handleDateClick(date)}\n disabled={isDisabled}\n className={cn(\n \"h-10 w-10 p-0 font-normal\",\n \"inline-flex items-center justify-center rounded-lg\",\n \"hover:bg-muted transition-colors text-sm\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n isOutsideMonth && \"text-muted-foreground/50\",\n isDisabled && \"text-muted-foreground/30 cursor-not-allowed hover:bg-transparent\",\n isSelected && !rangeMiddle && \"bg-primary text-primary-foreground font-medium hover:bg-primary hover:text-primary-foreground\",\n isTodayDate && \"font-semibold relative after:absolute after:bottom-1 after:left-1/2 after:-translate-x-1/2 after:h-1 after:w-1 after:rounded-full after:bg-primary\",\n rangeMiddle && \"bg-accent/30 text-accent-foreground rounded-none\",\n rangeStart && \"rounded-r-none\",\n rangeEnd && \"rounded-l-none\"\n )}\n type=\"button\"\n >\n {format(date, \"d\")}\n </button>\n );\n })}\n </div>\n </div>\n\n </div>\n );\n}\n\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMonths} function options.\n */\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n * @param options - The options object\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n const year = getISOWeekYear(date, options);\n const fourthOfJanuary = constructFrom(options?.in || date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name constructNow\n * @category Generic Helpers\n * @summary Constructs a new current date using the passed value constructor.\n * @pure false\n *\n * @description\n * The function constructs a new current date using the constructor from\n * the reference date. It helps to build generic functions that accept date\n * extensions and use the current date.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * @param date - The reference date to take constructor from\n *\n * @returns Current date initialized using the given date constructor\n *\n * @example\n * import { constructNow, isSameDay } from 'date-fns'\n *\n * function isToday<DateType extends Date>(\n * date: DateArg<DateType>,\n * ): boolean {\n * // If we were to use `new Date()` directly, the function would behave\n * // differently in different timezones and return false for the same date.\n * return isSameDay(date, constructNow(date));\n * }\n */\nexport function constructNow(date) {\n return constructFrom(date, Date.now());\n}\n\n// Fallback for modularized imports:\nexport default constructNow;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link isSameDay} function options.\n */\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same day (and year and month)\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport function isSameDay(laterDate, earlierDate, options) {\n const [dateLeft_, dateRight_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return +startOfDay(dateLeft_) === +startOfDay(dateRight_);\n}\n\n// Fallback for modularized imports:\nexport default isSameDay;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMonth} function options.\n */\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n","import { normalizeDates } from \"./normalizeDates.js\";\n\nexport function normalizeInterval(context, interval) {\n const [start, end] = normalizeDates(context, interval.start, interval.end);\n return { start, end };\n}\n","import { normalizeInterval } from \"./_lib/normalizeInterval.js\";\nimport { constructFrom } from \"./constructFrom.js\";\n\n/**\n * The {@link eachDayOfInterval} function options.\n */\n\n/**\n * The {@link eachDayOfInterval} function result type. It resolves the proper data type.\n * It uses the first argument date object type, starting from the date argument,\n * then the start interval date, and finally the end interval date. If\n * a context function is passed, it uses the context function return type.\n */\n\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * @typeParam IntervalType - Interval type.\n * @typeParam Options - Options type.\n *\n * @param interval - The interval.\n * @param options - An object with options.\n *\n * @returns The array with starts of days from the day of the interval start to the day of the interval end\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * const result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\nexport function eachDayOfInterval(interval, options) {\n const { start, end } = normalizeInterval(options?.in, interval);\n\n let reversed = +start > +end;\n const endTime = reversed ? +start : +end;\n const date = reversed ? end : start;\n date.setHours(0, 0, 0, 0);\n\n let step = options?.step ?? 1;\n if (!step) return [];\n if (step < 0) {\n step = -step;\n reversed = !reversed;\n }\n\n const dates = [];\n\n while (+date <= endTime) {\n dates.push(constructFrom(start, date));\n date.setDate(date.getDate() + step);\n date.setHours(0, 0, 0, 0);\n }\n\n return reversed ? dates.reverse() : dates;\n}\n\n// Fallback for modularized imports:\nexport default eachDayOfInterval;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfMonth} function options.\n */\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date. The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments.\n * Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed,\n * or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n _date.setDate(1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setFullYear(date_.getFullYear(), 0, 1);\n date_.setHours(0, 0, 0, 0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfWeek} function options.\n */\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport function endOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\n _date.setDate(_date.getDate() + diff);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfWeek;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (+_date >= +startOfNextYear) {\n return year + 1;\n } else if (+_date >= +startOfThisYear) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(options?.in || date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(+date / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n return addLeadingZeros(+date, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date, options?.in);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDay} function options.\n */\n\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of week, 0 represents Sunday\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport function getDay(date, options) {\n return toDate(date, options?.in).getDay();\n}\n\n// Fallback for modularized imports:\nexport default getDay;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link isSameMonth} function options.\n */\n\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same month (and year)\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport function isSameMonth(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return (\n laterDate_.getFullYear() === earlierDate_.getFullYear() &&\n laterDate_.getMonth() === earlierDate_.getMonth()\n );\n}\n\n// Fallback for modularized imports:\nexport default isSameMonth;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { constructNow } from \"./constructNow.js\";\nimport { isSameDay } from \"./isSameDay.js\";\n\n/**\n * The {@link isToday} function options.\n */\n\n/**\n * @name isToday\n * @category Day Helpers\n * @summary Is the given date today?\n * @pure false\n *\n * @description\n * Is the given date today?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is today\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * const result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\nexport function isToday(date, options) {\n return isSameDay(\n constructFrom(options?.in || date, date),\n constructNow(options?.in || date),\n );\n}\n\n// Fallback for modularized imports:\nexport default isToday;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The subMonths function options.\n */\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function subMonths(date, amount, options) {\n return addMonths(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMonths;\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion, type HTMLMotionProps } from \"framer-motion\";\nimport { cn } from \"../../lib/utils\";\nimport { microInteractionVariants, hoverAnimations, tapAnimations } from \"@/lib/micro-interactions\";\n\nconst cardVariants = cva(\n \"rounded-lg border bg-card text-card-foreground shadow-sm dark:shadow-gray-900/20 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-100 transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"border border-border shadow-none bg-transparent dark:border-gray-700 dark:bg-transparent dark:text-gray-200\",\n filled: \"border-none bg-secondary dark:bg-gray-800 dark:text-gray-100 dark:shadow-inner dark:shadow-gray-950/10\",\n elevated: \"border-none shadow-md dark:shadow-lg dark:shadow-gray-900/30 dark:bg-gray-850 dark:text-gray-100\",\n gradient: \"border-none bg-gradient-to-br from-primary/5 to-primary/10 dark:from-primary/10 dark:to-primary/20\",\n glass: \"border border-white/20 bg-white/10 backdrop-blur-md dark:border-gray-700/30 dark:bg-gray-800/10\",\n },\n size: {\n default: \"p-6\",\n sm: \"p-4\",\n lg: \"p-8\",\n xl: \"p-10\",\n },\n radius: {\n default: \"rounded-lg\",\n sm: \"rounded-md\",\n lg: \"rounded-xl\",\n full: \"rounded-3xl\",\n none: \"rounded-none\",\n },\n interactive: {\n true: \"cursor-pointer hover:shadow-lg hover:border-primary/20 dark:hover:border-primary/30 hover:-translate-y-0.5 active:translate-y-0 active:shadow-sm\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n },\n }\n);\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {\n asChild?: boolean;\n microInteraction?: \"lift\" | \"glow\" | \"scale\" | \"none\";\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, size, radius, interactive, microInteraction = \"lift\", ...props }, ref) => {\n // Interactive özelliği varsa motion.div, yoksa normal div kullan\n if (interactive && microInteraction !== \"none\") {\n const interactionProps = {\n whileHover: microInteraction === \"scale\" ? hoverAnimations.scale : \n microInteraction === \"glow\" ? hoverAnimations.glow : \n hoverAnimations.lift,\n whileTap: tapAnimations.scale,\n };\n \n return (\n <motion.div\n ref={ref}\n className={cn(cardVariants({ variant, size, radius, interactive, className }))}\n {...interactionProps}\n {...props}\n />\n );\n }\n \n // Non-interactive version\n return (\n <div\n ref={ref}\n className={cn(cardVariants({ variant, size, radius, interactive, className }))}\n {...props}\n />\n );\n }\n);\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center pt-4\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","// MoonUI Micro-interactions System\n// Provides consistent hover, focus, and active states across all components\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\n/**\n * Micro-interaction variants for consistent component behavior\n */\nexport const microInteractionVariants = cva(\"\", {\n variants: {\n hover: {\n lift: [\n \"transition-all duration-200 ease-out\",\n \"hover:-translate-y-0.5\",\n \"hover:shadow-md\",\n ],\n glow: [\n \"transition-all duration-300 ease-out\",\n \"hover:shadow-lg\",\n \"hover:shadow-primary/20\",\n ],\n scale: [\n \"transition-transform duration-200 ease-out\",\n \"hover:scale-105\",\n \"active:scale-95\",\n ],\n brightness: [\n \"transition-all duration-200 ease-out\",\n \"hover:brightness-110\",\n \"active:brightness-95\",\n ],\n border: [\n \"transition-all duration-200 ease-out\",\n \"hover:border-primary/50\",\n ],\n },\n focus: {\n ring: [\n \"focus:outline-none\",\n \"focus-visible:ring-2\",\n \"focus-visible:ring-primary/50\",\n \"focus-visible:ring-offset-2\",\n ],\n glow: [\n \"focus:outline-none\",\n \"focus-visible:shadow-lg\",\n \"focus-visible:shadow-primary/30\",\n ],\n border: [\n \"focus:outline-none\",\n \"focus-visible:border-primary\",\n \"focus-visible:border-2\",\n ],\n },\n active: {\n scale: [\n \"active:scale-95\",\n \"transition-transform duration-100\",\n ],\n darken: [\n \"active:brightness-90\",\n \"transition-all duration-100\",\n ],\n depress: [\n \"active:translate-y-0.5\",\n \"active:shadow-sm\",\n \"transition-all duration-100\",\n ],\n },\n cursor: {\n pointer: \"cursor-pointer\",\n grab: \"cursor-grab active:cursor-grabbing\",\n text: \"cursor-text\",\n wait: \"cursor-wait\",\n help: \"cursor-help\",\n notAllowed: \"cursor-not-allowed\",\n },\n },\n defaultVariants: {\n hover: \"lift\",\n focus: \"ring\",\n active: \"scale\",\n cursor: \"pointer\",\n },\n});\n\n/**\n * Spring animation configurations\n */\nexport const springAnimations = {\n // Smooth spring for general use\n smooth: {\n type: \"spring\",\n stiffness: 260,\n damping: 20,\n },\n // Bouncy spring for playful interactions\n bouncy: {\n type: \"spring\",\n stiffness: 300,\n damping: 15,\n },\n // Stiff spring for quick responses\n stiff: {\n type: \"spring\",\n stiffness: 400,\n damping: 25,\n },\n // Gentle spring for subtle movements\n gentle: {\n type: \"spring\",\n stiffness: 150,\n damping: 15,\n },\n};\n\n/**\n * Hover animation presets\n */\nexport const hoverAnimations = {\n lift: {\n y: -2,\n transition: springAnimations.smooth,\n },\n scale: {\n scale: 1.05,\n transition: springAnimations.smooth,\n },\n glow: {\n boxShadow: \"0 0 20px rgba(var(--primary), 0.3)\",\n transition: springAnimations.smooth,\n },\n rotate: {\n rotate: 2,\n transition: springAnimations.bouncy,\n },\n};\n\n/**\n * Tap/Click animation presets\n */\nexport const tapAnimations = {\n scale: {\n scale: 0.95,\n transition: { duration: 0.1 },\n },\n depress: {\n y: 1,\n transition: { duration: 0.1 },\n },\n};\n\n/**\n * Focus animation presets\n */\nexport const focusAnimations = {\n ring: {\n boxShadow: \"0 0 0 2px var(--background), 0 0 0 4px var(--primary)\",\n transition: springAnimations.smooth,\n },\n glow: {\n boxShadow: \"0 0 0 3px rgba(var(--primary), 0.3)\",\n transition: springAnimations.smooth,\n },\n};\n\n/**\n * Stagger animation for lists\n */\nexport const staggerAnimation = {\n container: {\n hidden: { opacity: 0 },\n show: {\n opacity: 1,\n transition: {\n staggerChildren: 0.05,\n },\n },\n },\n item: {\n hidden: { opacity: 0, y: 20 },\n show: { \n opacity: 1, \n y: 0,\n transition: springAnimations.smooth,\n },\n },\n};\n\n/**\n * Page transition animations\n */\nexport const pageTransitions = {\n fadeIn: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n transition: { duration: 0.3 },\n },\n slideUp: {\n initial: { opacity: 0, y: 20 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: -20 },\n transition: springAnimations.smooth,\n },\n slideRight: {\n initial: { opacity: 0, x: -20 },\n animate: { opacity: 1, x: 0 },\n exit: { opacity: 0, x: 20 },\n transition: springAnimations.smooth,\n },\n scale: {\n initial: { opacity: 0, scale: 0.95 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 1.05 },\n transition: springAnimations.smooth,\n },\n};\n\n/**\n * Skeleton loading animation\n */\nexport const skeletonAnimation = {\n initial: { opacity: 0.5 },\n animate: {\n opacity: [0.5, 0.8, 0.5],\n transition: {\n duration: 1.5,\n repeat: Infinity,\n ease: \"easeInOut\" as const,\n },\n },\n};\n\n/**\n * Tooltip animation\n */\nexport const tooltipAnimation = {\n initial: { opacity: 0, scale: 0.95 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 0.95 },\n transition: { duration: 0.15 },\n};\n\n/**\n * Notification animation\n */\nexport const notificationAnimation = {\n initial: { opacity: 0, y: -20, scale: 0.95 },\n animate: { opacity: 1, y: 0, scale: 1 },\n exit: { opacity: 0, scale: 0.95, transition: { duration: 0.15 } },\n transition: springAnimations.bouncy,\n};\n\nexport type MicroInteractionProps = VariantProps<typeof microInteractionVariants>;","\"use client\";\n\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check, Minus } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Checkbox Bileşeni\n *\n * Erişilebilir, özelleştirilebilir ve tema sistemiyle tam entegre checkbox bileşeni.\n * Form elemanları ve seçim listeleri için kullanılır.\n */\n\nconst checkboxVariants = cva(\n \"peer shrink-0 border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:text-primary-foreground\",\n {\n variants: {\n variant: {\n default: \"border-border bg-background data-[state=checked]:bg-primary data-[state=checked]:border-primary\",\n outline: \"border-border bg-transparent data-[state=checked]:bg-primary data-[state=checked]:border-primary\",\n muted: \"border-border bg-accent data-[state=checked]:bg-primary data-[state=checked]:border-primary\",\n ghost: \"border-transparent bg-transparent hover:bg-accent data-[state=checked]:bg-primary data-[state=checked]:border-primary\",\n },\n size: {\n sm: \"h-3.5 w-3.5\",\n default: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n default: \"rounded-sm\",\n md: \"rounded-md\",\n full: \"rounded-full\",\n },\n animation: {\n none: \"\",\n subtle: \"transition-all duration-200\",\n default: \"transition-all duration-200\",\n bounce: \"transition-all duration-200\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n animation: \"default\",\n },\n }\n);\n\nexport interface CheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>,\n VariantProps<typeof checkboxVariants> {\n /**\n * İndeterminate durumu - grup seçimlerinde bazı öğeler seçilmişse kullanılır\n */\n indeterminate?: boolean;\n /**\n * Özel ikon komponenti\n */\n icon?: React.ReactNode;\n}\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ \n className, \n variant, \n size, \n radius, \n animation,\n indeterminate = false,\n icon,\n checked,\n ...props \n}, ref) => {\n // Indeterminate state yönetimi\n const [isIndeterminate, setIsIndeterminate] = React.useState(indeterminate);\n \n React.useEffect(() => {\n setIsIndeterminate(indeterminate);\n }, [indeterminate]);\n\n // Checked state override, indeterminate olduğunda\n const effectiveChecked = isIndeterminate ? false : checked;\n \n return (\n <CheckboxPrimitive.Root\n ref={ref}\n checked={effectiveChecked}\n className={cn(checkboxVariants({ variant, size, radius, animation }), className)}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\n \"flex items-center justify-center text-current\",\n animation === \"bounce\" && \"data-[state=checked]:animate-bounce\"\n )}\n >\n {isIndeterminate ? (\n <Minus className=\"h-[65%] w-[65%]\" />\n ) : icon ? (\n icon\n ) : (\n <Check className=\"h-[65%] w-[65%]\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n});\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\n// CheckboxGroup bileşeni\ninterface CheckboxGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Grup içi yerleşim - dikey veya yatay\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * Öğeler arasındaki boşluk (piksel)\n */\n spacing?: number | string;\n /**\n * Alt bileşenler\n */\n children: React.ReactNode;\n}\n\nconst CheckboxGroup = React.forwardRef<HTMLDivElement, CheckboxGroupProps>(\n ({ className, orientation = \"vertical\", spacing = \"1rem\", children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex\",\n orientation === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\",\n className\n )}\n style={{ gap: spacing }}\n role=\"group\"\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nCheckboxGroup.displayName = \"CheckboxGroup\";\n\n// CheckboxLabel bileşeni\ninterface CheckboxLabelProps extends React.HTMLAttributes<HTMLLabelElement> {\n /**\n * Checkbox bileşeni için HTML id\n */\n htmlFor?: string;\n /**\n * Label içeriği\n */\n children: React.ReactNode;\n /**\n * Checkbox öncesi veya sonrası\n */\n position?: \"start\" | \"end\";\n /**\n * Devre dışı durum stili\n */\n disabled?: boolean;\n}\n\nconst CheckboxLabel = React.forwardRef<HTMLLabelElement, CheckboxLabelProps>(\n ({ className, htmlFor, children, position = \"end\", disabled = false, ...props }, ref) => {\n return (\n <label\n ref={ref}\n htmlFor={htmlFor}\n className={cn(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n position === \"start\" ? \"mr-2\" : \"ml-2\",\n disabled && \"cursor-not-allowed opacity-70\",\n className\n )}\n {...props}\n >\n {children}\n </label>\n );\n }\n);\nCheckboxLabel.displayName = \"CheckboxLabel\";\n\n// Checkbox ve Label içeren bileşen\ninterface CheckboxWithLabelProps extends CheckboxProps {\n /**\n * Label içeriği\n */\n label: React.ReactNode;\n /**\n * Label pozisyonu\n */\n labelPosition?: \"start\" | \"end\";\n /**\n * Label için HTML sınıfları\n */\n labelClassName?: string;\n}\n\nconst CheckboxWithLabel = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxWithLabelProps\n>(({ \n id, \n label, \n labelPosition = \"end\", \n labelClassName, \n ...checkboxProps \n}, ref) => {\n const generatedId = React.useId();\n const checkboxId = id || generatedId;\n \n return (\n <div className=\"flex items-center\">\n {labelPosition === \"start\" && (\n <CheckboxLabel \n htmlFor={checkboxId}\n position=\"start\"\n disabled={checkboxProps.disabled}\n className={labelClassName}\n >\n {label}\n </CheckboxLabel>\n )}\n \n <Checkbox ref={ref} id={checkboxId} {...checkboxProps} />\n \n {labelPosition === \"end\" && (\n <CheckboxLabel \n htmlFor={checkboxId}\n position=\"end\"\n disabled={checkboxProps.disabled}\n className={labelClassName}\n >\n {label}\n </CheckboxLabel>\n )}\n </div>\n );\n});\nCheckboxWithLabel.displayName = \"CheckboxWithLabel\";\n\nexport { Checkbox, CheckboxGroup, CheckboxLabel, CheckboxWithLabel };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\n/**\n * Collapsible (Daraltılabilir) Bileşeni\n * \n * İçeriği genişletilip daraltılabilen hafif bir bileşendir.\n * Tema sistemiyle tam entegre, erişilebilir ve özelleştirilebilir.\n */\n\nconst Collapsible = CollapsiblePrimitive.Root\n\nconst collapsibleTriggerVariants = cva(\n \"flex w-full items-center justify-between transition-all\",\n {\n variants: {\n variant: {\n default: \"text-foreground hover:text-primary\",\n ghost: \"text-foreground hover:bg-accent/10 rounded\",\n outline: \"text-foreground border border-border rounded-t-md hover:bg-accent/5\",\n },\n size: {\n sm: \"text-xs py-2 px-3\",\n default: \"text-sm py-3 px-4\",\n md: \"text-base py-4 px-4\",\n lg: \"text-lg py-5 px-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\ninterface CollapsibleTriggerProps \n extends React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Trigger>,\n VariantProps<typeof collapsibleTriggerVariants> {}\n\nconst CollapsibleTrigger = React.forwardRef<\n React.ElementRef<typeof CollapsiblePrimitive.Trigger>,\n CollapsibleTriggerProps\n>(({ className, children, variant, size, asChild, ...props }, ref) => {\n // asChild kullanıldığında otomatik ikon eklemeyi atla\n if (asChild) {\n return (\n <CollapsiblePrimitive.Trigger\n ref={ref}\n className={cn(collapsibleTriggerVariants({ variant, size }), className)}\n asChild={asChild}\n {...props}\n >\n {children}\n </CollapsiblePrimitive.Trigger>\n )\n }\n\n return (\n <CollapsiblePrimitive.Trigger\n ref={ref}\n className={cn(collapsibleTriggerVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 ml-auto transition-transform duration-200 [&[data-state=open]]:rotate-180\" />\n </CollapsiblePrimitive.Trigger>\n )\n})\nCollapsibleTrigger.displayName = CollapsiblePrimitive.Trigger.displayName\n\nconst collapsibleContentVariants = cva(\n \"overflow-hidden transition-all data-[state=closed]:animate-collapse-up data-[state=open]:animate-collapse-down\",\n {\n variants: {\n variant: {\n default: \"text-muted-foreground\",\n ghost: \"text-muted-foreground rounded-b\",\n outline: \"text-muted-foreground border border-t-0 border-border rounded-b-md\",\n },\n size: {\n sm: \"text-xs\",\n default: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\ninterface CollapsibleContentProps \n extends React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Content>,\n VariantProps<typeof collapsibleContentVariants> {}\n\nconst CollapsibleContent = React.forwardRef<\n React.ElementRef<typeof CollapsiblePrimitive.Content>,\n CollapsibleContentProps\n>(({ className, children, variant, size, ...props }, ref) => (\n <CollapsiblePrimitive.Content\n ref={ref}\n className={cn(collapsibleContentVariants({ variant, size }), className)}\n {...props}\n >\n <div className=\"p-4\">{children}</div>\n </CollapsiblePrimitive.Content>\n))\nCollapsibleContent.displayName = CollapsiblePrimitive.Content.displayName\n\nexport {\n Collapsible,\n CollapsibleTrigger,\n CollapsibleContent,\n collapsibleTriggerVariants,\n collapsibleContentVariants,\n}\n\nexport type {\n CollapsibleTriggerProps,\n CollapsibleContentProps\n}\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { Presence } from '@radix-ui/react-presence';\nimport { useId } from '@radix-ui/react-id';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Collapsible\n * -----------------------------------------------------------------------------------------------*/\n\nconst COLLAPSIBLE_NAME = 'Collapsible';\n\ntype ScopedProps<P> = P & { __scopeCollapsible?: Scope };\nconst [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);\n\ntype CollapsibleContextValue = {\n contentId: string;\n disabled?: boolean;\n open: boolean;\n onOpenToggle(): void;\n};\n\nconst [CollapsibleProvider, useCollapsibleContext] =\n createCollapsibleContext<CollapsibleContextValue>(COLLAPSIBLE_NAME);\n\ntype CollapsibleElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface CollapsibleProps extends PrimitiveDivProps {\n defaultOpen?: boolean;\n open?: boolean;\n disabled?: boolean;\n onOpenChange?(open: boolean): void;\n}\n\nconst Collapsible = React.forwardRef<CollapsibleElement, CollapsibleProps>(\n (props: ScopedProps<CollapsibleProps>, forwardedRef) => {\n const {\n __scopeCollapsible,\n open: openProp,\n defaultOpen,\n disabled,\n onOpenChange,\n ...collapsibleProps\n } = props;\n\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: COLLAPSIBLE_NAME,\n });\n\n return (\n <CollapsibleProvider\n scope={__scopeCollapsible}\n disabled={disabled}\n contentId={useId()}\n open={open}\n onOpenToggle={React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen])}\n >\n <Primitive.div\n data-state={getState(open)}\n data-disabled={disabled ? '' : undefined}\n {...collapsibleProps}\n ref={forwardedRef}\n />\n </CollapsibleProvider>\n );\n }\n);\n\nCollapsible.displayName = COLLAPSIBLE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CollapsibleTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'CollapsibleTrigger';\n\ntype CollapsibleTriggerElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface CollapsibleTriggerProps extends PrimitiveButtonProps {}\n\nconst CollapsibleTrigger = React.forwardRef<CollapsibleTriggerElement, CollapsibleTriggerProps>(\n (props: ScopedProps<CollapsibleTriggerProps>, forwardedRef) => {\n const { __scopeCollapsible, ...triggerProps } = props;\n const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);\n return (\n <Primitive.button\n type=\"button\"\n aria-controls={context.contentId}\n aria-expanded={context.open || false}\n data-state={getState(context.open)}\n data-disabled={context.disabled ? '' : undefined}\n disabled={context.disabled}\n {...triggerProps}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, context.onOpenToggle)}\n />\n );\n }\n);\n\nCollapsibleTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CollapsibleContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'CollapsibleContent';\n\ntype CollapsibleContentElement = CollapsibleContentImplElement;\ninterface CollapsibleContentProps extends Omit<CollapsibleContentImplProps, 'present'> {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst CollapsibleContent = React.forwardRef<CollapsibleContentElement, CollapsibleContentProps>(\n (props: ScopedProps<CollapsibleContentProps>, forwardedRef) => {\n const { forceMount, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);\n return (\n <Presence present={forceMount || context.open}>\n {({ present }) => (\n <CollapsibleContentImpl {...contentProps} ref={forwardedRef} present={present} />\n )}\n </Presence>\n );\n }\n);\n\nCollapsibleContent.displayName = CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype CollapsibleContentImplElement = React.ComponentRef<typeof Primitive.div>;\ninterface CollapsibleContentImplProps extends PrimitiveDivProps {\n present: boolean;\n}\n\nconst CollapsibleContentImpl = React.forwardRef<\n CollapsibleContentImplElement,\n CollapsibleContentImplProps\n>((props: ScopedProps<CollapsibleContentImplProps>, forwardedRef) => {\n const { __scopeCollapsible, present, children, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);\n const [isPresent, setIsPresent] = React.useState(present);\n const ref = React.useRef<CollapsibleContentImplElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const heightRef = React.useRef<number | undefined>(0);\n const height = heightRef.current;\n const widthRef = React.useRef<number | undefined>(0);\n const width = widthRef.current;\n // when opening we want it to immediately open to retrieve dimensions\n // when closing we delay `present` to retrieve dimensions before closing\n const isOpen = context.open || isPresent;\n const isMountAnimationPreventedRef = React.useRef(isOpen);\n const originalStylesRef = React.useRef<Record<string, string>>(undefined);\n\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => (isMountAnimationPreventedRef.current = false));\n return () => cancelAnimationFrame(rAF);\n }, []);\n\n useLayoutEffect(() => {\n const node = ref.current;\n if (node) {\n originalStylesRef.current = originalStylesRef.current || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName,\n };\n // block any animations/transitions so the element renders at its full dimensions\n node.style.transitionDuration = '0s';\n node.style.animationName = 'none';\n\n // get width and height from full dimensions\n const rect = node.getBoundingClientRect();\n heightRef.current = rect.height;\n widthRef.current = rect.width;\n\n // kick off any animations/transitions that were originally set up if it isn't the initial mount\n if (!isMountAnimationPreventedRef.current) {\n node.style.transitionDuration = originalStylesRef.current.transitionDuration!;\n node.style.animationName = originalStylesRef.current.animationName!;\n }\n\n setIsPresent(present);\n }\n /**\n * depends on `context.open` because it will change to `false`\n * when a close is triggered but `present` will be `false` on\n * animation end (so when close finishes). This allows us to\n * retrieve the dimensions *before* closing.\n */\n }, [context.open, present]);\n\n return (\n <Primitive.div\n data-state={getState(context.open)}\n data-disabled={context.disabled ? '' : undefined}\n id={context.contentId}\n hidden={!isOpen}\n {...contentProps}\n ref={composedRefs}\n style={{\n [`--radix-collapsible-content-height` as any]: height ? `${height}px` : undefined,\n [`--radix-collapsible-content-width` as any]: width ? `${width}px` : undefined,\n ...props.style,\n }}\n >\n {isOpen && children}\n </Primitive.div>\n );\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getState(open?: boolean) {\n return open ? 'open' : 'closed';\n}\n\nconst Root = Collapsible;\nconst Trigger = CollapsibleTrigger;\nconst Content = CollapsibleContent;\n\nexport {\n createCollapsibleScope,\n //\n Collapsible,\n CollapsibleTrigger,\n CollapsibleContent,\n //\n Root,\n Trigger,\n Content,\n};\nexport type { CollapsibleProps, CollapsibleTriggerProps, CollapsibleContentProps };\n","function composeEventHandlers<E extends { defaultPrevented: boolean }>(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n) {\n return function handleEvent(event: E) {\n originalEventHandler?.(event);\n\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\n\nexport { composeEventHandlers };\n","import * as React from 'react';\n\nfunction createContext<ContextValueType extends object | null>(\n rootComponentName: string,\n defaultContext?: ContextValueType\n) {\n const Context = React.createContext<ContextValueType | undefined>(defaultContext);\n\n const Provider: React.FC<ContextValueType & { children: React.ReactNode }> = (props) => {\n const { children, ...context } = props;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n Provider.displayName = rootComponentName + 'Provider';\n\n function useContext(consumerName: string) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n return [Provider, useContext] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * createContextScope\n * -----------------------------------------------------------------------------------------------*/\n\ntype Scope<C = any> = { [scopeName: string]: React.Context<C>[] } | undefined;\ntype ScopeHook = (scope: Scope) => { [__scopeProp: string]: Scope };\ninterface CreateScope {\n scopeName: string;\n (): ScopeHook;\n}\n\nfunction createContextScope(scopeName: string, createContextScopeDeps: CreateScope[] = []) {\n let defaultContexts: any[] = [];\n\n /* -----------------------------------------------------------------------------------------------\n * createContext\n * ---------------------------------------------------------------------------------------------*/\n\n function createContext<ContextValueType extends object | null>(\n rootComponentName: string,\n defaultContext?: ContextValueType\n ) {\n const BaseContext = React.createContext<ContextValueType | undefined>(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n\n const Provider: React.FC<\n ContextValueType & { scope: Scope<ContextValueType>; children: React.ReactNode }\n > = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n Provider.displayName = rootComponentName + 'Provider';\n\n function useContext(consumerName: string, scope: Scope<ContextValueType | undefined>) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n return [Provider, useContext] as const;\n }\n\n /* -----------------------------------------------------------------------------------------------\n * createScope\n * ---------------------------------------------------------------------------------------------*/\n\n const createScope: CreateScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope: Scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n\n createScope.scopeName = scopeName;\n return [createContext, composeContextScopes(createScope, ...createContextScopeDeps)] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * composeContextScopes\n * -----------------------------------------------------------------------------------------------*/\n\nfunction composeContextScopes(...scopes: CreateScope[]) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n\n const createScope: CreateScope = () => {\n const scopeHooks = scopes.map((createScope) => ({\n useScope: createScope(),\n scopeName: createScope.scopeName,\n }));\n\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes, { useScope, scopeName }) => {\n // We are calling a hook inside a callback which React warns against to avoid inconsistent\n // renders, however, scoping doesn't have render side effects so we ignore the rule.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes, ...currentScope };\n }, {});\n\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nexport { createContext, createContextScope };\nexport type { CreateScope, Scope };\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// Prevent bundlers from trying to optimize the import\nconst useInsertionEffect: typeof useLayoutEffect =\n (React as any)[' useInsertionEffect '.trim().toString()] || useLayoutEffect;\n\ntype ChangeHandler<T> = (state: T) => void;\ntype SetStateFn<T> = React.Dispatch<React.SetStateAction<T>>;\n\ninterface UseControllableStateParams<T> {\n prop?: T | undefined;\n defaultProp: T;\n onChange?: ChangeHandler<T>;\n caller?: string;\n}\n\nexport function useControllableState<T>({\n prop,\n defaultProp,\n onChange = () => {},\n caller,\n}: UseControllableStateParams<T>): [T, SetStateFn<T>] {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange,\n });\n const isControlled = prop !== undefined;\n const value = isControlled ? prop : uncontrolledProp;\n\n // OK to disable conditionally calling hooks here because they will always run\n // consistently in the same environment. Bundlers should be able to remove the\n // code block entirely in production.\n /* eslint-disable react-hooks/rules-of-hooks */\n if (process.env.NODE_ENV !== 'production') {\n const isControlledRef = React.useRef(prop !== undefined);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? 'controlled' : 'uncontrolled';\n const to = isControlled ? 'controlled' : 'uncontrolled';\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n /* eslint-enable react-hooks/rules-of-hooks */\n\n const setValue = React.useCallback<SetStateFn<T>>(\n (nextValue) => {\n if (isControlled) {\n const value = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value !== prop) {\n onChangeRef.current?.(value);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n\n return [value, setValue];\n}\n\nfunction useUncontrolledState<T>({\n defaultProp,\n onChange,\n}: Omit<UseControllableStateParams<T>, 'prop'>): [\n Value: T,\n setValue: React.Dispatch<React.SetStateAction<T>>,\n OnChangeRef: React.RefObject<ChangeHandler<T> | undefined>,\n] {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n\n return [value, setValue, onChangeRef];\n}\n\nfunction isFunction(value: unknown): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n","import * as React from 'react';\n\n/**\n * On the server, React emits a warning when calling `useLayoutEffect`.\n * This is because neither `useLayoutEffect` nor `useEffect` run on the server.\n * We use this safe version which suppresses the warning by replacing it with a noop on the server.\n *\n * See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect\n */\nconst useLayoutEffect = globalThis?.document ? React.useLayoutEffect : () => {};\n\nexport { useLayoutEffect };\n","import * as React from 'react';\nimport { useEffectEvent } from '@radix-ui/react-use-effect-event';\n\ntype ChangeHandler<T> = (state: T) => void;\n\ninterface UseControllableStateParams<T> {\n prop: T | undefined;\n defaultProp: T;\n onChange: ChangeHandler<T> | undefined;\n caller: string;\n}\n\ninterface AnyAction {\n type: string;\n}\n\nconst SYNC_STATE = Symbol('RADIX:SYNC_STATE');\n\ninterface SyncStateAction<T> {\n type: typeof SYNC_STATE;\n state: T;\n}\n\nexport function useControllableStateReducer<T, S extends {}, A extends AnyAction>(\n reducer: (prevState: S & { state: T }, action: A) => S & { state: T },\n userArgs: UseControllableStateParams<T>,\n initialState: S\n): [S & { state: T }, React.Dispatch<A>];\n\nexport function useControllableStateReducer<T, S extends {}, I, A extends AnyAction>(\n reducer: (prevState: S & { state: T }, action: A) => S & { state: T },\n userArgs: UseControllableStateParams<T>,\n initialArg: I,\n init: (i: I & { state: T }) => S\n): [S & { state: T }, React.Dispatch<A>];\n\nexport function useControllableStateReducer<T, S extends {}, A extends AnyAction>(\n reducer: (prevState: S & { state: T }, action: A) => S & { state: T },\n userArgs: UseControllableStateParams<T>,\n initialArg: any,\n init?: (i: any) => Omit<S, 'state'>\n): [S & { state: T }, React.Dispatch<A>] {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== undefined;\n\n const onChange = useEffectEvent(onChangeProp);\n\n // OK to disable conditionally calling hooks here because they will always run\n // consistently in the same environment. Bundlers should be able to remove the\n // code block entirely in production.\n /* eslint-disable react-hooks/rules-of-hooks */\n if (process.env.NODE_ENV !== 'production') {\n const isControlledRef = React.useRef(controlledState !== undefined);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? 'controlled' : 'uncontrolled';\n const to = isControlled ? 'controlled' : 'uncontrolled';\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n /* eslint-enable react-hooks/rules-of-hooks */\n\n type InternalState = S & { state: T };\n const args: [InternalState] = [{ ...initialArg, state: defaultProp }];\n if (init) {\n // @ts-expect-error\n args.push(init);\n }\n\n const [internalState, dispatch] = React.useReducer(\n (state: InternalState, action: A | SyncStateAction<T>): InternalState => {\n if (action.type === SYNC_STATE) {\n return { ...state, state: action.state };\n }\n\n const next = reducer(state, action);\n if (isControlled && !Object.is(next.state, state.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n\n const uncontrolledState = internalState.state;\n const prevValueRef = React.useRef(uncontrolledState);\n React.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n\n const state = React.useMemo(() => {\n const isControlled = controlledState !== undefined;\n if (isControlled) {\n return { ...internalState, state: controlledState };\n }\n\n return internalState;\n }, [internalState, controlledState]);\n\n React.useEffect(() => {\n // Sync internal state for controlled components so that reducer is called\n // with the correct state values\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n\n return [state, dispatch as React.Dispatch<A>];\n}\n","import * as React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n return ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == 'function') {\n hasCleanup = true;\n }\n return cleanup;\n });\n\n // React <19 will log an error to the console if a callback ref returns a\n // value. We don't use ref cleanups internally so this will only happen if a\n // user's ref callback returns a value, which we only expect if they are\n // using the cleanup functionality added in React 19.\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == 'function') {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createSlot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'form',\n 'h2',\n 'h3',\n 'img',\n 'input',\n 'label',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'select',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\ntype Primitives = { [E in (typeof NODES)[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n if (typeof window !== 'undefined') {\n (window as any)[Symbol.for('radix-ui')] = true;\n }\n\n return <Comp {...primitiveProps} ref={forwardedRef} />;\n });\n\n Node.displayName = `Primitive.${node}`;\n\n return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n * - discrete\n * - continuous\n * - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not necessary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n};\nexport type { PrimitivePropsWithRef };\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useStateMachine } from './use-state-machine';\n\ninterface PresenceProps {\n children: React.ReactElement | ((props: { present: boolean }) => React.ReactElement);\n present: boolean;\n}\n\nconst Presence: React.FC<PresenceProps> = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n\n const child = (\n typeof children === 'function'\n ? children({ present: presence.isPresent })\n : React.Children.only(children)\n ) as React.ReactElement<{ ref?: React.Ref<HTMLElement> }>;\n\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === 'function';\n return forceMount || presence.isPresent ? React.cloneElement(child, { ref }) : null;\n};\n\nPresence.displayName = 'Presence';\n\n/* -------------------------------------------------------------------------------------------------\n * usePresence\n * -----------------------------------------------------------------------------------------------*/\n\nfunction usePresence(present: boolean) {\n const [node, setNode] = React.useState<HTMLElement>();\n const stylesRef = React.useRef<CSSStyleDeclaration | null>(null);\n const prevPresentRef = React.useRef(present);\n const prevAnimationNameRef = React.useRef<string>('none');\n const initialState = present ? 'mounted' : 'unmounted';\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: 'unmounted',\n ANIMATION_OUT: 'unmountSuspended',\n },\n unmountSuspended: {\n MOUNT: 'mounted',\n ANIMATION_END: 'unmounted',\n },\n unmounted: {\n MOUNT: 'mounted',\n },\n });\n\n React.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none';\n }, [state]);\n\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n\n if (present) {\n send('MOUNT');\n } else if (currentAnimationName === 'none' || styles?.display === 'none') {\n // If there is no exit animation or the element is hidden, animations won't run\n // so we unmount instantly\n send('UNMOUNT');\n } else {\n /**\n * When `present` changes to `false`, we check changes to animation-name to\n * determine whether an animation has started. We chose this approach (reading\n * computed styles) because there is no `animationrun` event and `animationstart`\n * fires after `animation-delay` has expired which would be too late.\n */\n const isAnimating = prevAnimationName !== currentAnimationName;\n\n if (wasPresent && isAnimating) {\n send('ANIMATION_OUT');\n } else {\n send('UNMOUNT');\n }\n }\n\n prevPresentRef.current = present;\n }\n }, [present, send]);\n\n useLayoutEffect(() => {\n if (node) {\n let timeoutId: number;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n /**\n * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`\n * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we\n * make sure we only trigger ANIMATION_END for the currently active animation.\n */\n const handleAnimationEnd = (event: AnimationEvent) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n if (event.target === node && isCurrentAnimation) {\n // With React 18 concurrency this update is applied a frame after the\n // animation ends, creating a flash of visible content. By setting the\n // animation fill mode to \"forwards\", we force the node to keep the\n // styles of the last keyframe, removing the flash.\n //\n // Previously we flushed the update via ReactDom.flushSync, but with\n // exit animations this resulted in the node being removed from the\n // DOM before the synthetic animationEnd event was dispatched, meaning\n // user-provided event handlers would not be called.\n // https://github.com/radix-ui/primitives/pull/1849\n send('ANIMATION_END');\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = 'forwards';\n // Reset the style after the node had time to unmount (for cases\n // where the component chooses not to unmount). Doing this any\n // sooner than `setTimeout` (e.g. with `requestAnimationFrame`)\n // still causes a flash.\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === 'forwards') {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event: AnimationEvent) => {\n if (event.target === node) {\n // if animation occurred, store its name as the previous animation.\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener('animationstart', handleAnimationStart);\n node.addEventListener('animationcancel', handleAnimationEnd);\n node.addEventListener('animationend', handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener('animationstart', handleAnimationStart);\n node.removeEventListener('animationcancel', handleAnimationEnd);\n node.removeEventListener('animationend', handleAnimationEnd);\n };\n } else {\n // Transition to the unmounted state if the node is removed prematurely.\n // We avoid doing so during cleanup as the node may change but still exist.\n send('ANIMATION_END');\n }\n }, [node, send]);\n\n return {\n isPresent: ['mounted', 'unmountSuspended'].includes(state),\n ref: React.useCallback((node: HTMLElement) => {\n stylesRef.current = node ? getComputedStyle(node) : null;\n setNode(node);\n }, []),\n };\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getAnimationName(styles: CSSStyleDeclaration | null) {\n return styles?.animationName || 'none';\n}\n\n// Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`\n// After React 19 accessing `element.ref` does the opposite.\n// https://github.com/facebook/react/pull/28348\n//\n// Access the ref using the method that doesn't yield a warning.\nfunction getElementRef(element: React.ReactElement<{ ref?: React.Ref<unknown> }>) {\n // React <=18 in DEV\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element as any).ref;\n }\n\n // React 19 in DEV\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n\n // Not DEV\n return element.props.ref || (element as any).ref;\n}\n\nconst Root = Presence;\n\nexport {\n Presence,\n //\n Root,\n};\nexport type { PresenceProps };\n","import * as React from 'react';\n\ntype Machine<S> = { [k: string]: { [k: string]: S } };\ntype MachineState<T> = keyof T;\ntype MachineEvent<T> = keyof UnionToIntersection<T[keyof T]>;\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n ? R\n : never;\n\nexport function useStateMachine<M>(\n initialState: MachineState<M>,\n machine: M & Machine<MachineState<M>>\n) {\n return React.useReducer((state: MachineState<M>, event: MachineEvent<M>): MachineState<M> => {\n const nextState = (machine[state] as any)[event];\n return nextState ?? state;\n }, initialState);\n}\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// We spaces with `.trim().toString()` to prevent bundlers from trying to `import { useId } from 'react';`\nconst useReactId = (React as any)[' useId '.trim().toString()] || (() => undefined);\nlet count = 0;\n\nfunction useId(deterministicId?: string): string {\n const [id, setId] = React.useState<string | undefined>(useReactId());\n // React versions older than 18 will have client-side ids only.\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : '');\n}\n\nexport { useId };\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Search } from \"lucide-react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Dialog, DialogContent, DialogTitle } from \"./dialog\"\n\n/**\n * Command (Komut Paleti) Bileşeni\n * \n * Gerçek command palette işlevselliği ile klavye navigasyonu, arama ve filtreleme.\n * cmdk kütüphanesi üzerine inşa edilmiş, tam özellikli command interface.\n */\n\nconst commandVariants = cva(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-popover text-popover-foreground\",\n glass: \"bg-background/80 text-foreground backdrop-blur-sm\",\n bordered: \"bg-popover text-popover-foreground border border-border\",\n },\n size: {\n sm: \"min-h-[200px]\",\n default: \"min-h-[300px]\",\n lg: \"min-h-[400px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\n// Command bileşeni - cmdk primitive wrapper\ninterface CommandProps \n extends React.ComponentProps<typeof CommandPrimitive>,\n VariantProps<typeof commandVariants> {}\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n CommandProps\n>(({ className, variant, size, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(commandVariants({ variant, size }), className)}\n {...props}\n />\n))\nCommand.displayName = CommandPrimitive.displayName\n\n// CommandDialog bileşeni\ninterface CommandDialogProps extends React.ComponentProps<typeof Dialog> {\n commandClassName?: string\n children?: React.ReactNode\n}\n\nconst CommandDialog = ({ \n children, \n commandClassName,\n ...props \n}: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\" hideCloseButton>\n <DialogTitle className=\"sr-only\">Command Menu</DialogTitle>\n <Command className={cn(\n \"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\",\n commandClassName\n )}>\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\n// CommandInput bileşeni\ninterface CommandInputProps \n extends React.ComponentProps<typeof CommandPrimitive.Input> {}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n CommandInputProps\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n))\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\n// CommandList bileşeni\ninterface CommandListProps \n extends React.ComponentProps<typeof CommandPrimitive.List> {}\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n CommandListProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n))\nCommandList.displayName = CommandPrimitive.List.displayName\n\n// CommandEmpty bileşeni\ninterface CommandEmptyProps \n extends React.ComponentProps<typeof CommandPrimitive.Empty> {}\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n CommandEmptyProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className={cn(\"py-6 text-center text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\n// CommandGroup bileşeni\ninterface CommandGroupProps \n extends React.ComponentProps<typeof CommandPrimitive.Group> {}\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n CommandGroupProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\n// CommandSeparator bileşeni\ninterface CommandSeparatorProps \n extends React.ComponentProps<typeof CommandPrimitive.Separator> {}\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n CommandSeparatorProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\n// CommandItem bileşeni\ninterface CommandItemProps \n extends React.ComponentProps<typeof CommandPrimitive.Item> {}\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n CommandItemProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50\",\n className\n )}\n {...props}\n />\n))\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\n// CommandShortcut bileşeni - utility component\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nCommandShortcut.displayName = \"CommandShortcut\"\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}","var U=1,Y=.9,H=.8,J=.17,p=.1,u=.999,$=.9999;var k=.99,m=/[\\\\\\/_+.#\"@\\[\\(\\{&]/,B=/[\\\\\\/_+.#\"@\\[\\(\\{&]/g,K=/[\\s-]/,X=/[\\s-]/g;function G(_,C,h,P,A,f,O){if(f===C.length)return A===_.length?U:k;var T=`${A},${f}`;if(O[T]!==void 0)return O[T];for(var L=P.charAt(f),c=h.indexOf(L,A),S=0,E,N,R,M;c>=0;)E=G(_,C,h,P,c+1,f+1,O),E>S&&(c===A?E*=U:m.test(_.charAt(c-1))?(E*=H,R=_.slice(A,c-1).match(B),R&&A>0&&(E*=Math.pow(u,R.length))):K.test(_.charAt(c-1))?(E*=Y,M=_.slice(A,c-1).match(X),M&&A>0&&(E*=Math.pow(u,M.length))):(E*=J,A>0&&(E*=Math.pow(u,c-A))),_.charAt(c)!==C.charAt(f)&&(E*=$)),(E<p&&h.charAt(c-1)===P.charAt(f+1)||P.charAt(f+1)===P.charAt(f)&&h.charAt(c-1)!==P.charAt(f))&&(N=G(_,C,h,P,c+1,f+2,O),N*p>E&&(E=N*p)),E>S&&(S=E),c=h.indexOf(L,c+1);return O[T]=S,S}function D(_){return _.toLowerCase().replace(X,\" \")}function W(_,C,h){return _=h&&h.length>0?`${_+\" \"+h.join(\" \")}`:_,G(_,C,D(_),D(C),0,0,{})}export{W as a};\n","\"use client\";import{a as ae}from\"./chunk-NZJY6EH4.mjs\";import*as w from\"@radix-ui/react-dialog\";import*as t from\"react\";import{Primitive as D}from\"@radix-ui/react-primitive\";import{useId as H}from\"@radix-ui/react-id\";import{composeRefs as G}from\"@radix-ui/react-compose-refs\";var N='[cmdk-group=\"\"]',Y='[cmdk-group-items=\"\"]',be='[cmdk-group-heading=\"\"]',le='[cmdk-item=\"\"]',ce=`${le}:not([aria-disabled=\"true\"])`,Z=\"cmdk-item-select\",T=\"data-value\",Re=(r,o,n)=>ae(r,o,n),ue=t.createContext(void 0),K=()=>t.useContext(ue),de=t.createContext(void 0),ee=()=>t.useContext(de),fe=t.createContext(void 0),me=t.forwardRef((r,o)=>{let n=L(()=>{var e,a;return{search:\"\",value:(a=(e=r.value)!=null?e:r.defaultValue)!=null?a:\"\",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),u=L(()=>new Set),c=L(()=>new Map),d=L(()=>new Map),f=L(()=>new Set),p=pe(r),{label:b,children:m,value:R,onValueChange:x,filter:C,shouldFilter:S,loop:A,disablePointerSelection:ge=!1,vimBindings:j=!0,...O}=r,$=H(),q=H(),_=H(),I=t.useRef(null),v=ke();k(()=>{if(R!==void 0){let e=R.trim();n.current.value=e,E.emit()}},[R]),k(()=>{v(6,ne)},[]);let E=t.useMemo(()=>({subscribe:e=>(f.current.add(e),()=>f.current.delete(e)),snapshot:()=>n.current,setState:(e,a,s)=>{var i,l,g,y;if(!Object.is(n.current[e],a)){if(n.current[e]=a,e===\"search\")J(),z(),v(1,W);else if(e===\"value\"){if(document.activeElement.hasAttribute(\"cmdk-input\")||document.activeElement.hasAttribute(\"cmdk-root\")){let h=document.getElementById(_);h?h.focus():(i=document.getElementById($))==null||i.focus()}if(v(7,()=>{var h;n.current.selectedItemId=(h=M())==null?void 0:h.id,E.emit()}),s||v(5,ne),((l=p.current)==null?void 0:l.value)!==void 0){let h=a!=null?a:\"\";(y=(g=p.current).onValueChange)==null||y.call(g,h);return}}E.emit()}},emit:()=>{f.current.forEach(e=>e())}}),[]),U=t.useMemo(()=>({value:(e,a,s)=>{var i;a!==((i=d.current.get(e))==null?void 0:i.value)&&(d.current.set(e,{value:a,keywords:s}),n.current.filtered.items.set(e,te(a,s)),v(2,()=>{z(),E.emit()}))},item:(e,a)=>(u.current.add(e),a&&(c.current.has(a)?c.current.get(a).add(e):c.current.set(a,new Set([e]))),v(3,()=>{J(),z(),n.current.value||W(),E.emit()}),()=>{d.current.delete(e),u.current.delete(e),n.current.filtered.items.delete(e);let s=M();v(4,()=>{J(),(s==null?void 0:s.getAttribute(\"id\"))===e&&W(),E.emit()})}),group:e=>(c.current.has(e)||c.current.set(e,new Set),()=>{d.current.delete(e),c.current.delete(e)}),filter:()=>p.current.shouldFilter,label:b||r[\"aria-label\"],getDisablePointerSelection:()=>p.current.disablePointerSelection,listId:$,inputId:_,labelId:q,listInnerRef:I}),[]);function te(e,a){var i,l;let s=(l=(i=p.current)==null?void 0:i.filter)!=null?l:Re;return e?s(e,n.current.search,a):0}function z(){if(!n.current.search||p.current.shouldFilter===!1)return;let e=n.current.filtered.items,a=[];n.current.filtered.groups.forEach(i=>{let l=c.current.get(i),g=0;l.forEach(y=>{let h=e.get(y);g=Math.max(h,g)}),a.push([i,g])});let s=I.current;V().sort((i,l)=>{var h,F;let g=i.getAttribute(\"id\"),y=l.getAttribute(\"id\");return((h=e.get(y))!=null?h:0)-((F=e.get(g))!=null?F:0)}).forEach(i=>{let l=i.closest(Y);l?l.appendChild(i.parentElement===l?i:i.closest(`${Y} > *`)):s.appendChild(i.parentElement===s?i:i.closest(`${Y} > *`))}),a.sort((i,l)=>l[1]-i[1]).forEach(i=>{var g;let l=(g=I.current)==null?void 0:g.querySelector(`${N}[${T}=\"${encodeURIComponent(i[0])}\"]`);l==null||l.parentElement.appendChild(l)})}function W(){let e=V().find(s=>s.getAttribute(\"aria-disabled\")!==\"true\"),a=e==null?void 0:e.getAttribute(T);E.setState(\"value\",a||void 0)}function J(){var a,s,i,l;if(!n.current.search||p.current.shouldFilter===!1){n.current.filtered.count=u.current.size;return}n.current.filtered.groups=new Set;let e=0;for(let g of u.current){let y=(s=(a=d.current.get(g))==null?void 0:a.value)!=null?s:\"\",h=(l=(i=d.current.get(g))==null?void 0:i.keywords)!=null?l:[],F=te(y,h);n.current.filtered.items.set(g,F),F>0&&e++}for(let[g,y]of c.current)for(let h of y)if(n.current.filtered.items.get(h)>0){n.current.filtered.groups.add(g);break}n.current.filtered.count=e}function ne(){var a,s,i;let e=M();e&&(((a=e.parentElement)==null?void 0:a.firstChild)===e&&((i=(s=e.closest(N))==null?void 0:s.querySelector(be))==null||i.scrollIntoView({block:\"nearest\"})),e.scrollIntoView({block:\"nearest\"}))}function M(){var e;return(e=I.current)==null?void 0:e.querySelector(`${le}[aria-selected=\"true\"]`)}function V(){var e;return Array.from(((e=I.current)==null?void 0:e.querySelectorAll(ce))||[])}function X(e){let s=V()[e];s&&E.setState(\"value\",s.getAttribute(T))}function Q(e){var g;let a=M(),s=V(),i=s.findIndex(y=>y===a),l=s[i+e];(g=p.current)!=null&&g.loop&&(l=i+e<0?s[s.length-1]:i+e===s.length?s[0]:s[i+e]),l&&E.setState(\"value\",l.getAttribute(T))}function re(e){let a=M(),s=a==null?void 0:a.closest(N),i;for(;s&&!i;)s=e>0?we(s,N):De(s,N),i=s==null?void 0:s.querySelector(ce);i?E.setState(\"value\",i.getAttribute(T)):Q(e)}let oe=()=>X(V().length-1),ie=e=>{e.preventDefault(),e.metaKey?oe():e.altKey?re(1):Q(1)},se=e=>{e.preventDefault(),e.metaKey?X(0):e.altKey?re(-1):Q(-1)};return t.createElement(D.div,{ref:o,tabIndex:-1,...O,\"cmdk-root\":\"\",onKeyDown:e=>{var s;(s=O.onKeyDown)==null||s.call(O,e);let a=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||a))switch(e.key){case\"n\":case\"j\":{j&&e.ctrlKey&&ie(e);break}case\"ArrowDown\":{ie(e);break}case\"p\":case\"k\":{j&&e.ctrlKey&&se(e);break}case\"ArrowUp\":{se(e);break}case\"Home\":{e.preventDefault(),X(0);break}case\"End\":{e.preventDefault(),oe();break}case\"Enter\":{e.preventDefault();let i=M();if(i){let l=new Event(Z);i.dispatchEvent(l)}}}}},t.createElement(\"label\",{\"cmdk-label\":\"\",htmlFor:U.inputId,id:U.labelId,style:Te},b),B(r,e=>t.createElement(de.Provider,{value:E},t.createElement(ue.Provider,{value:U},e))))}),he=t.forwardRef((r,o)=>{var _,I;let n=H(),u=t.useRef(null),c=t.useContext(fe),d=K(),f=pe(r),p=(I=(_=f.current)==null?void 0:_.forceMount)!=null?I:c==null?void 0:c.forceMount;k(()=>{if(!p)return d.item(n,c==null?void 0:c.id)},[p]);let b=ve(n,u,[r.value,r.children,u],r.keywords),m=ee(),R=P(v=>v.value&&v.value===b.current),x=P(v=>p||d.filter()===!1?!0:v.search?v.filtered.items.get(n)>0:!0);t.useEffect(()=>{let v=u.current;if(!(!v||r.disabled))return v.addEventListener(Z,C),()=>v.removeEventListener(Z,C)},[x,r.onSelect,r.disabled]);function C(){var v,E;S(),(E=(v=f.current).onSelect)==null||E.call(v,b.current)}function S(){m.setState(\"value\",b.current,!0)}if(!x)return null;let{disabled:A,value:ge,onSelect:j,forceMount:O,keywords:$,...q}=r;return t.createElement(D.div,{ref:G(u,o),...q,id:n,\"cmdk-item\":\"\",role:\"option\",\"aria-disabled\":!!A,\"aria-selected\":!!R,\"data-disabled\":!!A,\"data-selected\":!!R,onPointerMove:A||d.getDisablePointerSelection()?void 0:S,onClick:A?void 0:C},r.children)}),Ee=t.forwardRef((r,o)=>{let{heading:n,children:u,forceMount:c,...d}=r,f=H(),p=t.useRef(null),b=t.useRef(null),m=H(),R=K(),x=P(S=>c||R.filter()===!1?!0:S.search?S.filtered.groups.has(f):!0);k(()=>R.group(f),[]),ve(f,p,[r.value,r.heading,b]);let C=t.useMemo(()=>({id:f,forceMount:c}),[c]);return t.createElement(D.div,{ref:G(p,o),...d,\"cmdk-group\":\"\",role:\"presentation\",hidden:x?void 0:!0},n&&t.createElement(\"div\",{ref:b,\"cmdk-group-heading\":\"\",\"aria-hidden\":!0,id:m},n),B(r,S=>t.createElement(\"div\",{\"cmdk-group-items\":\"\",role:\"group\",\"aria-labelledby\":n?m:void 0},t.createElement(fe.Provider,{value:C},S))))}),ye=t.forwardRef((r,o)=>{let{alwaysRender:n,...u}=r,c=t.useRef(null),d=P(f=>!f.search);return!n&&!d?null:t.createElement(D.div,{ref:G(c,o),...u,\"cmdk-separator\":\"\",role:\"separator\"})}),Se=t.forwardRef((r,o)=>{let{onValueChange:n,...u}=r,c=r.value!=null,d=ee(),f=P(m=>m.search),p=P(m=>m.selectedItemId),b=K();return t.useEffect(()=>{r.value!=null&&d.setState(\"search\",r.value)},[r.value]),t.createElement(D.input,{ref:o,...u,\"cmdk-input\":\"\",autoComplete:\"off\",autoCorrect:\"off\",spellCheck:!1,\"aria-autocomplete\":\"list\",role:\"combobox\",\"aria-expanded\":!0,\"aria-controls\":b.listId,\"aria-labelledby\":b.labelId,\"aria-activedescendant\":p,id:b.inputId,type:\"text\",value:c?r.value:f,onChange:m=>{c||d.setState(\"search\",m.target.value),n==null||n(m.target.value)}})}),Ce=t.forwardRef((r,o)=>{let{children:n,label:u=\"Suggestions\",...c}=r,d=t.useRef(null),f=t.useRef(null),p=P(m=>m.selectedItemId),b=K();return t.useEffect(()=>{if(f.current&&d.current){let m=f.current,R=d.current,x,C=new ResizeObserver(()=>{x=requestAnimationFrame(()=>{let S=m.offsetHeight;R.style.setProperty(\"--cmdk-list-height\",S.toFixed(1)+\"px\")})});return C.observe(m),()=>{cancelAnimationFrame(x),C.unobserve(m)}}},[]),t.createElement(D.div,{ref:G(d,o),...c,\"cmdk-list\":\"\",role:\"listbox\",tabIndex:-1,\"aria-activedescendant\":p,\"aria-label\":u,id:b.listId},B(r,m=>t.createElement(\"div\",{ref:G(f,b.listInnerRef),\"cmdk-list-sizer\":\"\"},m)))}),xe=t.forwardRef((r,o)=>{let{open:n,onOpenChange:u,overlayClassName:c,contentClassName:d,container:f,...p}=r;return t.createElement(w.Root,{open:n,onOpenChange:u},t.createElement(w.Portal,{container:f},t.createElement(w.Overlay,{\"cmdk-overlay\":\"\",className:c}),t.createElement(w.Content,{\"aria-label\":r.label,\"cmdk-dialog\":\"\",className:d},t.createElement(me,{ref:o,...p}))))}),Ie=t.forwardRef((r,o)=>P(u=>u.filtered.count===0)?t.createElement(D.div,{ref:o,...r,\"cmdk-empty\":\"\",role:\"presentation\"}):null),Pe=t.forwardRef((r,o)=>{let{progress:n,children:u,label:c=\"Loading...\",...d}=r;return t.createElement(D.div,{ref:o,...d,\"cmdk-loading\":\"\",role:\"progressbar\",\"aria-valuenow\":n,\"aria-valuemin\":0,\"aria-valuemax\":100,\"aria-label\":c},B(r,f=>t.createElement(\"div\",{\"aria-hidden\":!0},f)))}),_e=Object.assign(me,{List:Ce,Item:he,Input:Se,Group:Ee,Separator:ye,Dialog:xe,Empty:Ie,Loading:Pe});function we(r,o){let n=r.nextElementSibling;for(;n;){if(n.matches(o))return n;n=n.nextElementSibling}}function De(r,o){let n=r.previousElementSibling;for(;n;){if(n.matches(o))return n;n=n.previousElementSibling}}function pe(r){let o=t.useRef(r);return k(()=>{o.current=r}),o}var k=typeof window==\"undefined\"?t.useEffect:t.useLayoutEffect;function L(r){let o=t.useRef();return o.current===void 0&&(o.current=r()),o}function P(r){let o=ee(),n=()=>r(o.snapshot());return t.useSyncExternalStore(o.subscribe,n,n)}function ve(r,o,n,u=[]){let c=t.useRef(),d=K();return k(()=>{var b;let f=(()=>{var m;for(let R of n){if(typeof R==\"string\")return R.trim();if(typeof R==\"object\"&&\"current\"in R)return R.current?(m=R.current.textContent)==null?void 0:m.trim():c.current}})(),p=u.map(m=>m.trim());d.value(r,f,p),(b=o.current)==null||b.setAttribute(T,f),c.current=f}),c}var ke=()=>{let[r,o]=t.useState(),n=L(()=>new Map);return k(()=>{n.current.forEach(u=>u()),n.current=new Map},[r]),(u,c)=>{n.current.set(u,c),o({})}};function Me(r){let o=r.type;return typeof o==\"function\"?o(r.props):\"render\"in o?o.render(r.props):r}function B({asChild:r,children:o},n){return r&&t.isValidElement(o)?t.cloneElement(Me(o),{ref:o.ref},n(o.props.children)):n(o)}var Te={position:\"absolute\",width:\"1px\",height:\"1px\",padding:\"0\",margin:\"-1px\",overflow:\"hidden\",clip:\"rect(0, 0, 0, 0)\",whiteSpace:\"nowrap\",borderWidth:\"0\"};export{_e as Command,xe as CommandDialog,Ie as CommandEmpty,Ee as CommandGroup,Se as CommandInput,he as CommandItem,Ce as CommandList,Pe as CommandLoading,me as CommandRoot,ye as CommandSeparator,Re as defaultFilter,P as useCommandState};\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createSlot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'form',\n 'h2',\n 'h3',\n 'img',\n 'input',\n 'label',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'select',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\ntype Primitives = { [E in (typeof NODES)[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n if (typeof window !== 'undefined') {\n (window as any)[Symbol.for('radix-ui')] = true;\n }\n\n return <Comp {...primitiveProps} ref={forwardedRef} />;\n });\n\n Node.displayName = `Primitive.${node}`;\n\n return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n * - discrete\n * - continuous\n * - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not necessary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n};\nexport type { PrimitivePropsWithRef };\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// We spaces with `.trim().toString()` to prevent bundlers from trying to `import { useId } from 'react';`\nconst useReactId = (React as any)[' useId '.trim().toString()] || (() => undefined);\nlet count = 0;\n\nfunction useId(deterministicId?: string): string {\n const [id, setId] = React.useState<string | undefined>(useReactId());\n // React versions older than 18 will have client-side ids only.\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : '');\n}\n\nexport { useId };\n","import * as React from 'react';\n\n/**\n * On the server, React emits a warning when calling `useLayoutEffect`.\n * This is because neither `useLayoutEffect` nor `useEffect` run on the server.\n * We use this safe version which suppresses the warning by replacing it with a noop on the server.\n *\n * See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect\n */\nconst useLayoutEffect = globalThis?.document ? React.useLayoutEffect : () => {};\n\nexport { useLayoutEffect };\n","import * as React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n return ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == 'function') {\n hasCleanup = true;\n }\n return cleanup;\n });\n\n // React <19 will log an error to the console if a callback ref returns a\n // value. We don't use ref cleanups internally so this will only happen if a\n // user's ref callback returns a value, which we only expect if they are\n // using the cleanup functionality added in React 19.\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == 'function') {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Check, Loader2, X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Premium Dialog Component\n *\n * Modern, accessible and customizable modal dialog component.\n * Enhances user experience with variants, sizes and rich features.\n * Provides a premium appearance with dark and light mode compatibility and fluid animations.\n */\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\nconst DialogClose = DialogPrimitive.Close;\n\nconst overlayVariants = cva(\n \"fixed inset-0 z-50 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n {\n variants: {\n variant: {\n default: \"bg-black/80\",\n subtle: \"bg-black/60\",\n blur: \"bg-black/40 backdrop-blur-md\",\n minimal: \"bg-black/20 backdrop-blur-sm\",\n },\n animation: {\n default: \"duration-200\",\n slow: \"duration-300\",\n fast: \"duration-100\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n animation: \"default\",\n },\n }\n);\n\ninterface DialogOverlayProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>,\n VariantProps<typeof overlayVariants> {}\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n DialogOverlayProps\n>(({ className, variant, animation, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(overlayVariants({ variant, animation }), className)}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst dialogContentVariants = cva(\n \"fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background shadow-lg\",\n {\n variants: {\n variant: {\n default: \"border-gray-200 dark:border-gray-700\",\n primary: \"border-primary/20 dark:border-primary/30\",\n secondary: \"border-gray-300 dark:border-gray-600\",\n ghost: \"border-transparent shadow-xl\",\n destructive: \"border-error/20 dark:border-error/30\",\n },\n size: {\n xs: \"max-w-xs p-4\",\n sm: \"max-w-sm p-5\",\n default: \"max-w-lg p-6\",\n md: \"max-w-md p-6\",\n lg: \"max-w-2xl p-7\",\n xl: \"max-w-4xl p-8\",\n full: \"max-w-[95vw] max-h-[95vh] p-6\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-md\",\n default: \"rounded-lg\",\n lg: \"rounded-xl\",\n xl: \"rounded-2xl\",\n full: \"rounded-3xl\",\n },\n animation: {\n default:\n \"duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n fade: \"duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n zoom: \"duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n slide: \"duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n none: \"\",\n },\n position: {\n default: \"top-[50%]\",\n top: \"top-[5%]\",\n bottom: \"bottom-[5%] top-auto translate-y-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n animation: \"default\",\n position: \"default\",\n },\n }\n);\n\ninterface DialogContentProps\n extends Omit<React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>, 'title'>,\n VariantProps<typeof dialogContentVariants> {\n /** X butonunu gizle */\n hideCloseButton?: boolean;\n /** Overlay varyantı */\n overlayVariant?: VariantProps<typeof overlayVariants>[\"variant\"];\n /** Overlay animasyonu */\n overlayAnimation?: VariantProps<typeof overlayVariants>[\"animation\"];\n /** İçerik başlığı (hızlı kullanım için) */\n title?: React.ReactNode;\n /** İçerik açıklaması (hızlı kullanım için) */\n description?: React.ReactNode;\n /** Başlık ikonu */\n icon?: React.ReactNode;\n /** Yükleniyor durumu */\n loading?: boolean;\n /** Success durumu */\n success?: boolean;\n /** Özel onClose handler */\n onClose?: () => void;\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(\n (\n {\n className,\n children,\n variant,\n size,\n radius,\n animation,\n position,\n overlayVariant = \"default\",\n overlayAnimation = \"default\",\n hideCloseButton = false,\n title,\n description,\n icon,\n loading = false,\n success = false,\n onClose,\n ...props\n },\n ref\n ) => {\n // Capturing the close function through the Radix Dialog API\n const handleClose = () => {\n if (onClose) {\n onClose();\n }\n };\n\n return (\n <DialogPortal>\n <DialogOverlay\n variant={overlayVariant}\n animation={overlayAnimation}\n onClick={hideCloseButton ? undefined : handleClose}\n />\n <DialogPrimitive.Content\n ref={ref}\n onEscapeKeyDown={hideCloseButton ? undefined : handleClose}\n onInteractOutside={\n hideCloseButton ? undefined : handleClose\n }\n className={cn(\n dialogContentVariants({\n variant,\n size,\n radius,\n animation,\n position,\n }),\n \"outline-none\",\n loading && \"pointer-events-none\",\n success && \"border-success/40\",\n className\n )}\n {...props}\n >\n {/* Başlık ve açıklama varsa otomatik olarak DialogHeader oluştur */}\n {(title || description || icon) && (\n <DialogHeader className=\"flex gap-4\">\n {/* İkon veya loading/success durumları */}\n {(icon || loading || success) && (\n <div className=\"flex shrink-0 items-center justify-center\">\n {loading && (\n <Loader2 className=\"h-5 w-5 animate-spin text-primary\" />\n )}\n {success && (\n <Check className=\"h-5 w-5 text-success\" />\n )}\n {!loading && !success && icon && (\n <span className=\"text-primary\">\n {icon}\n </span>\n )}\n </div>\n )}\n <div className=\"flex-1\">\n {title && <DialogTitle>{title}</DialogTitle>}\n {description && (\n <DialogDescription>\n {description}\n </DialogDescription>\n )}\n </div>\n </DialogHeader>\n )}\n\n {/* Main content */}\n {children}\n\n {/* Close button */}\n {!hideCloseButton && (\n <DialogPrimitive.Close\n onClick={handleClose}\n className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-primary/30 focus:ring-offset-2 disabled:pointer-events-none dark:text-gray-300 dark:hover:text-white\"\n >\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n }\n);\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end sm:space-x-2 mt-6\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-xl font-semibold leading-snug tracking-tight dark:text-white\",\n className\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\n \"text-sm text-muted-foreground leading-normal dark:text-gray-400\",\n className\n )}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\n/**\n * Dialog-Form integration for use with form support\n * Used to integrate form submission processes into the modal\n */\nconst DialogForm = React.forwardRef<\n HTMLFormElement,\n React.HTMLAttributes<HTMLFormElement>\n>(({ className, ...props }, ref) => (\n <form\n ref={ref}\n className={cn(\"flex flex-col gap-4\", className)}\n {...props}\n />\n));\nDialogForm.displayName = \"DialogForm\";\n\nexport {\n Dialog,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n DialogClose,\n DialogForm,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { format, isValid } from \"date-fns\";\nimport { Calendar as CalendarIcon, Clock } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport { Calendar } from \"./calendar\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"./popover\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { microInteractionVariants } from \"@/lib/micro-interactions\";\n\n/**\n * DatePicker Component\n * \n * A comprehensive date picker with calendar interface\n */\n\nconst datePickerVariants = cva(\n \"w-full justify-start text-left font-normal\",\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"border-2\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n minimal: \"h-auto p-0 border-0 shadow-none\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-8 px-3 text-sm\",\n lg: \"h-12 px-6 text-base\",\n icon: \"h-10 w-10\",\n },\n state: {\n default: \"\",\n error: \"border-destructive focus:ring-destructive\",\n success: \"border-success focus:ring-success\",\n warning: \"border-warning focus:ring-warning\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n state: \"default\",\n },\n }\n);\n\nexport interface DatePickerProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\">,\n VariantProps<typeof datePickerVariants> {\n /**\n * Selected date value\n */\n value?: Date;\n /**\n * Callback when date changes\n */\n onChange?: (date: Date | undefined) => void;\n /**\n * Placeholder text\n */\n placeholder?: string;\n /**\n * Date format string\n */\n formatString?: string;\n /**\n * Minimum selectable date\n */\n minDate?: Date;\n /**\n * Maximum selectable date\n */\n maxDate?: Date;\n /**\n * Disabled dates\n */\n disabledDates?: Date[];\n /**\n * Disabled days of week (0-6, Sunday is 0)\n */\n disabledDaysOfWeek?: number[];\n /**\n * Show week numbers\n */\n showWeekNumbers?: boolean;\n /**\n * Icon position\n */\n iconPosition?: \"left\" | \"right\";\n /**\n * Custom icon\n */\n icon?: React.ReactNode;\n /**\n * Allow clear\n */\n allowClear?: boolean;\n /**\n * Read only\n */\n readOnly?: boolean;\n /**\n * Show today button\n */\n showTodayButton?: boolean;\n /**\n * Calendar props\n */\n calendarProps?: React.ComponentProps<typeof Calendar>;\n}\n\nexport function DatePicker({\n className,\n variant,\n size,\n state,\n value,\n onChange,\n placeholder = \"Pick a date\",\n formatString = \"PPP\",\n minDate,\n maxDate,\n disabledDates,\n disabledDaysOfWeek,\n showWeekNumbers,\n iconPosition = \"left\",\n icon,\n allowClear = true,\n readOnly = false,\n showTodayButton = true,\n calendarProps,\n disabled,\n ...props\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false);\n const [internalDate, setInternalDate] = React.useState<Date | undefined>(value);\n\n React.useEffect(() => {\n setInternalDate(value);\n }, [value]);\n\n const handleSelect = (date: Date | undefined) => {\n setInternalDate(date);\n onChange?.(date);\n if (date) {\n setOpen(false);\n }\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n handleSelect(undefined);\n };\n\n const handleToday = () => {\n const today = new Date();\n handleSelect(today);\n };\n\n const isDateDisabled = (date: Date) => {\n if (minDate && date < minDate) return true;\n if (maxDate && date > maxDate) return true;\n if (disabledDates?.some(d => d.toDateString() === date.toDateString())) return true;\n if (disabledDaysOfWeek?.includes(date.getDay())) return true;\n return false;\n };\n\n const displayValue = internalDate && isValid(internalDate)\n ? format(internalDate, formatString)\n : null;\n\n const iconElement = icon || <CalendarIcon className=\"h-4 w-4\" />;\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant={variant === \"minimal\" ? \"ghost\" : variant || \"outline\"}\n className={cn(\n datePickerVariants({ variant, size, state }),\n !displayValue && \"text-muted-foreground\",\n className\n )}\n disabled={disabled || readOnly}\n {...props}\n >\n <AnimatePresence mode=\"wait\">\n <motion.div\n key={displayValue || \"placeholder\"}\n initial={{ opacity: 0, y: -2 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: 2 }}\n transition={{ duration: 0.15 }}\n className=\"flex items-center gap-2 flex-1\"\n >\n {iconPosition === \"left\" && iconElement}\n <span className=\"flex-1 truncate\">\n {displayValue || placeholder}\n </span>\n {iconPosition === \"right\" && iconElement}\n </motion.div>\n </AnimatePresence>\n {allowClear && displayValue && !readOnly && !disabled && (\n <motion.div\n initial={{ opacity: 0, scale: 0.8 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.8 }}\n whileHover={{ scale: 1.1 }}\n whileTap={{ scale: 0.9 }}\n className=\"ml-2 h-4 w-4 shrink-0 opacity-50 hover:opacity-100 transition-opacity cursor-pointer\"\n onClick={handleClear}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleClear(e as any);\n }\n }}\n >\n <span className=\"sr-only\">Clear date</span>\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </motion.div>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent \n className=\"w-[360px] p-0 shadow-xl rounded-2xl border-0 bg-background/95 backdrop-blur-sm\" \n align=\"start\"\n sideOffset={12}\n >\n <motion.div\n {...microInteractionVariants.fadeIn}\n className=\"rounded-2xl bg-background overflow-hidden\"\n >\n <Calendar\n mode=\"single\"\n selected={internalDate}\n onSelect={handleSelect}\n disabled={isDateDisabled}\n showOutsideDays={false}\n className={cn(\"rounded-2xl\", calendarProps?.className)}\n {...calendarProps}\n />\n {showTodayButton && (\n <div className=\"border-t px-4 py-3\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleToday}\n className=\"w-full justify-center hover:bg-accent hover:text-accent-foreground transition-all duration-200\"\n >\n Today\n </Button>\n </div>\n )}\n </motion.div>\n </PopoverContent>\n </Popover>\n );\n}\n\n/**\n * DateRangePicker Component\n * \n * Select a date range with start and end dates\n */\n\nexport interface DateRangePickerProps\n extends Omit<DatePickerProps, \"value\" | \"onChange\"> {\n /**\n * Selected date range\n */\n value?: { from: Date | undefined; to: Date | undefined };\n /**\n * Callback when date range changes\n */\n onChange?: (range: { from: Date | undefined; to: Date | undefined } | undefined) => void;\n /**\n * Separator between dates\n */\n separator?: string;\n}\n\nexport function DateRangePicker({\n className,\n value,\n onChange,\n placeholder = \"Pick a date range\",\n formatString = \"LLL dd, y\",\n separator = \" - \",\n ...props\n}: DateRangePickerProps) {\n const [open, setOpen] = React.useState(false);\n const [internalRange, setInternalRange] = React.useState(value);\n\n React.useEffect(() => {\n setInternalRange(value);\n }, [value]);\n\n const handleSelect = (range: { from: Date | undefined; to: Date | undefined } | undefined) => {\n setInternalRange(range);\n onChange?.(range);\n if (range?.from && range?.to) {\n setOpen(false);\n }\n };\n\n const displayValue = React.useMemo(() => {\n if (!internalRange?.from) return null;\n if (!internalRange?.to) {\n return format(internalRange.from, formatString);\n }\n return `${format(internalRange.from, formatString)}${separator}${format(\n internalRange.to,\n formatString\n )}`;\n }, [internalRange, formatString, separator]);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant={props.variant === \"minimal\" ? \"ghost\" : props.variant || \"outline\"}\n className={cn(\n datePickerVariants({ \n variant: props.variant, \n size: props.size, \n state: props.state \n }),\n !displayValue && \"text-muted-foreground\",\n className\n )}\n disabled={props.disabled || props.readOnly}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n <span className=\"flex-1 truncate text-left\">\n {displayValue || placeholder}\n </span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0 shadow-xl rounded-2xl border-0 bg-background/95 backdrop-blur-sm\" align=\"start\" sideOffset={12}>\n <Calendar\n mode=\"range\"\n defaultMonth={internalRange?.from}\n selected={internalRange}\n onSelect={handleSelect as any}\n showOutsideDays={false}\n {...props.calendarProps}\n className=\"rounded-2xl\"\n />\n </PopoverContent>\n </Popover>\n );\n}\n\n/**\n * DateTimePicker Component\n * \n * Combined date and time picker\n */\n\nexport interface DateTimePickerProps extends DatePickerProps {\n /**\n * Show time picker\n */\n showTimePicker?: boolean;\n /**\n * Time format (12 or 24 hour)\n */\n timeFormat?: \"12\" | \"24\";\n /**\n * Time interval in minutes\n */\n timeInterval?: number;\n}\n\nexport function DateTimePicker({\n value,\n onChange,\n formatString = \"PPP p\",\n showTimePicker = true,\n timeFormat = \"24\",\n timeInterval = 15,\n ...props\n}: DateTimePickerProps) {\n const [date, setDate] = React.useState<Date | undefined>(value);\n const [time, setTime] = React.useState<string>(\n value ? format(value, timeFormat === \"24\" ? \"HH:mm\" : \"hh:mm a\") : \"00:00\"\n );\n\n const handleDateChange = (newDate: Date | undefined) => {\n if (!newDate) {\n setDate(undefined);\n onChange?.(undefined);\n return;\n }\n\n const [hours, minutes] = time.split(\":\").map(Number);\n newDate.setHours(hours, minutes);\n setDate(newDate);\n onChange?.(newDate);\n };\n\n const handleTimeChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n const newTime = e.target.value;\n setTime(newTime);\n\n if (date) {\n const [hours, minutes] = newTime.split(\":\").map(Number);\n const newDate = new Date(date);\n newDate.setHours(hours, minutes);\n setDate(newDate);\n onChange?.(newDate);\n }\n };\n\n // Generate time options\n const timeOptions = React.useMemo(() => {\n const options = [];\n for (let h = 0; h < 24; h++) {\n for (let m = 0; m < 60; m += timeInterval) {\n const hour24 = h.toString().padStart(2, \"0\");\n const minute = m.toString().padStart(2, \"0\");\n const time24 = `${hour24}:${minute}`;\n \n if (timeFormat === \"12\") {\n const hour12 = h === 0 ? 12 : h > 12 ? h - 12 : h;\n const ampm = h < 12 ? \"AM\" : \"PM\";\n const time12 = `${hour12}:${minute} ${ampm}`;\n options.push({ value: time24, label: time12 });\n } else {\n options.push({ value: time24, label: time24 });\n }\n }\n }\n return options;\n }, [timeFormat, timeInterval]);\n\n return (\n <div className=\"flex flex-col gap-2\">\n <DatePicker\n {...props}\n value={date}\n onChange={handleDateChange}\n formatString=\"PPP\"\n showTodayButton={false}\n />\n {showTimePicker && date && (\n <motion.div\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: \"auto\" }}\n exit={{ opacity: 0, height: 0 }}\n className=\"flex items-center gap-2\"\n >\n <Clock className=\"h-4 w-4 text-muted-foreground\" />\n <select\n value={time}\n onChange={handleTimeChange}\n className=\"flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n >\n {timeOptions.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n </motion.div>\n )}\n </div>\n );\n}\n\n/**\n * MonthPicker Component\n * \n * Select month and year\n */\n\nexport interface MonthPickerProps extends Omit<DatePickerProps, \"formatString\"> {\n /**\n * Format for displaying the month\n */\n formatString?: string;\n}\n\nexport function MonthPicker({\n value,\n onChange,\n placeholder = \"Pick a month\",\n formatString = \"MMMM yyyy\",\n ...props\n}: MonthPickerProps) {\n const [open, setOpen] = React.useState(false);\n const [viewDate, setViewDate] = React.useState(value || new Date());\n\n const months = [\n \"January\", \"February\", \"March\", \"April\",\n \"May\", \"June\", \"July\", \"August\",\n \"September\", \"October\", \"November\", \"December\"\n ];\n\n const handleMonthSelect = (monthIndex: number) => {\n const newDate = new Date(viewDate);\n newDate.setMonth(monthIndex);\n onChange?.(newDate);\n setOpen(false);\n };\n\n const handleYearChange = (increment: number) => {\n const newDate = new Date(viewDate);\n newDate.setFullYear(newDate.getFullYear() + increment);\n setViewDate(newDate);\n };\n\n const displayValue = value ? format(value, formatString) : null;\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant={props.variant || \"outline\"}\n className={cn(\n datePickerVariants({ \n variant: props.variant, \n size: props.size, \n state: props.state \n }),\n !displayValue && \"text-muted-foreground\",\n props.className\n )}\n disabled={props.disabled || props.readOnly}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {displayValue || placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-64 p-0\" align=\"start\">\n <div className=\"p-3\">\n <div className=\"flex items-center justify-between mb-3\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => handleYearChange(-1)}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <span className=\"font-semibold\">\n {viewDate.getFullYear()}\n </span>\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => handleYearChange(1)}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n <div className=\"grid grid-cols-3 gap-2\">\n {months.map((month, index) => (\n <Button\n key={month}\n variant={value && value.getMonth() === index ? \"default\" : \"outline\"}\n size=\"sm\"\n onClick={() => handleMonthSelect(index)}\n className=\"h-8 text-xs\"\n >\n {month.slice(0, 3)}\n </Button>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n\n// Re-export utilities\nexport { format } from \"date-fns\";\n\n// Import ChevronLeft and ChevronRight for MonthPicker\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";","\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Popover Bileşeni\n * \n * Tıklanabilir bir öğeden açılan, tema sistemiyle tam entegre bir içerik bileşeni.\n * Filtreler, ayarlar ve diğer içerikler için kullanışlı ve erişilebilir bir arayüz sağlar.\n */\n\nconst popoverContentVariants = cva(\n \"z-50 w-72 rounded-md border border-border bg-background p-4 shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n {\n variants: {\n variant: {\n default: \"\",\n destructive: \"border-destructive bg-destructive/5\",\n outline: \"border-border bg-transparent\",\n subtle: \"border-transparent bg-muted/50\",\n },\n size: {\n sm: \"w-48 p-3\",\n default: \"w-72 p-4\",\n lg: \"w-96 p-5\",\n },\n side: {\n top: \"data-[side=top]:slide-in-from-bottom-2\",\n right: \"data-[side=right]:slide-in-from-left-2\",\n bottom: \"data-[side=bottom]:slide-in-from-top-2\",\n left: \"data-[side=left]:slide-in-from-right-2\",\n },\n position: {\n pointerEventsNone: \"pointer-events-none\",\n default: \"\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n default: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n },\n shadow: {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n default: \"shadow-md\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n xl: \"shadow-xl\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n shadow: \"default\",\n },\n }\n);\n\nconst Popover = PopoverPrimitive.Root;\nconst PopoverTrigger = PopoverPrimitive.Trigger;\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\nexport interface PopoverContentProps \n extends Omit<React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>, 'side'>,\n VariantProps<typeof popoverContentVariants> {\n /**\n * Popover'ın arka plan bulanıklığı etkin mi\n */\n backdrop?: boolean;\n /**\n * Popover'a tıklandığında kapanıp kapanmayacağı\n */\n closeOnInteractOutside?: boolean;\n /**\n * Popover açıkken arka planın karartılması\n */\n overlayBackdrop?: boolean;\n}\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n PopoverContentProps\n>(({\n className,\n variant,\n size,\n side,\n position,\n radius,\n shadow,\n backdrop = false,\n closeOnInteractOutside = true,\n overlayBackdrop = false,\n sideOffset = 4,\n ...props\n}, ref) => (\n <>\n {overlayBackdrop && (\n <div className=\"fixed inset-0 z-40 bg-overlay opacity-30\" />\n )}\n <PopoverPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n collisionPadding={8}\n onInteractOutside={(e) => {\n if (!closeOnInteractOutside) {\n e.preventDefault();\n }\n }}\n className={cn(\n popoverContentVariants({ \n variant, \n size, \n side, \n position,\n radius,\n shadow\n }),\n backdrop && \"backdrop-blur-md bg-opacity-80\",\n className\n )}\n {...props}\n />\n </>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\n/**\n * PopoverClose bileşeni\n */\nconst PopoverClose = PopoverPrimitive.Close;\n\n/**\n * Popover için bölüm ayırıcı\n */\nconst PopoverSeparator = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"my-2 h-px bg-border\", className)}\n {...props}\n />\n);\nPopoverSeparator.displayName = \"PopoverSeparator\";\n\n/**\n * Popover başlık bileşeni\n */\nconst PopoverHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"-mx-4 -mt-4 mb-3 px-4 pt-4 pb-3 border-b border-border\", className)}\n {...props}\n />\n);\nPopoverHeader.displayName = \"PopoverHeader\";\n\n/**\n * Popover footer bileşeni\n */\nconst PopoverFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"-mx-4 -mb-4 mt-3 px-4 pt-3 pb-4 border-t border-border\", className)}\n {...props}\n />\n);\nPopoverFooter.displayName = \"PopoverFooter\";\n\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverAnchor,\n PopoverClose,\n PopoverSeparator,\n PopoverHeader,\n PopoverFooter,\n popoverContentVariants,\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Loader2 } from \"lucide-react\";\n\n/**\n * Premium Input Component\n * \n * Erişilebilir, estetik ve işlevsel input bileşeni.\n * İkon desteği, hata gösterimi ve çeşitli varyantlar sunar.\n */\n\nconst inputWrapperVariants = cva(\n \"group relative flex items-center w-full transition-colors\",\n {\n variants: {\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\nconst inputVariants = cva(\n [\n \"w-full bg-background transition-all duration-200\",\n \"text-foreground placeholder:text-muted-foreground dark:placeholder:text-gray-500\", \n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"file:border-0 file:bg-transparent file:font-medium\",\n \"focus-visible:outline-none dark:text-gray-200\"\n ],\n {\n variants: {\n variant: {\n standard: \"border border-gray-300 dark:border-gray-700 rounded-md px-3 py-2 hover:border-gray-400 dark:hover:border-gray-600 focus-visible:ring-2 focus-visible:ring-primary/30 dark:focus-visible:ring-primary/20 focus-visible:border-primary dark:focus-visible:border-primary/80 dark:bg-gray-900/60 dark:shadow-inner dark:shadow-gray-950/10\",\n filled: \"border border-transparent bg-gray-100 dark:bg-gray-800/90 rounded-md px-3 py-2 hover:bg-gray-200 dark:hover:bg-gray-700/90 focus-visible:ring-2 focus-visible:ring-primary/30 dark:focus-visible:ring-primary/20 dark:shadow-inner dark:shadow-gray-950/10\",\n ghost: \"border-none bg-transparent shadow-none px-1 dark:text-gray-300 dark:placeholder:text-gray-500 hover:bg-gray-100/50 dark:hover:bg-gray-800/30 focus-visible:bg-transparent\",\n underline: \"border-t-0 border-l-0 border-r-0 border-b border-gray-300 dark:border-gray-600 rounded-none px-0 py-2 hover:border-gray-400 dark:hover:border-gray-500 focus-visible:ring-0 focus-visible:border-b-2 focus-visible:border-primary dark:focus-visible:border-primary/80 dark:text-gray-300\",\n },\n size: {\n sm: \"h-8 text-xs\",\n md: \"h-10 text-sm\",\n lg: \"h-12 text-base\",\n },\n hasLeftIcon: {\n true: \"pl-10\",\n false: \"\",\n },\n hasRightIcon: {\n true: \"pr-10\",\n false: \"\",\n },\n hasRightButton: {\n true: \"pr-10\",\n false: \"\",\n },\n isError: {\n true: \"border-error focus-visible:ring-error/30 focus-visible:border-error hover:border-error/80 dark:hover:border-error/80\",\n false: \"\",\n },\n isSuccess: {\n true: \"border-success focus-visible:ring-success/30 focus-visible:border-success hover:border-success/80 dark:hover:border-success/80\",\n false: \"\",\n },\n isDisabled: {\n true: \"opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-800/50 pointer-events-none\",\n false: \"\",\n }\n },\n defaultVariants: {\n variant: \"standard\",\n size: \"md\",\n isError: false,\n isSuccess: false,\n isDisabled: false,\n hasLeftIcon: false,\n hasRightIcon: false,\n hasRightButton: false,\n },\n }\n);\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">,\n Omit<VariantProps<typeof inputVariants>, \"isDisabled\" | \"hasLeftIcon\" | \"hasRightIcon\" | \"hasRightButton\"> {\n /** Hata mesajı */\n error?: string;\n /** Başarı mesajı */\n success?: string;\n /** Yükleniyor durumu */\n loading?: boolean;\n /** Sol tarafta gösterilecek ikon */\n leftIcon?: React.ReactNode;\n /** Sağ tarafta gösterilecek ikon */\n rightIcon?: React.ReactNode;\n /** Sağ tarafta gösterilecek buton (password show/hide vb. için) */\n rightButton?: React.ReactNode;\n /** Mesajın görünürlüğü (true: her zaman görünür, false: sadece hata/başarı durumunda) */\n alwaysShowMessage?: boolean;\n /** Input wrapper için ek sınıflar */\n wrapperClassName?: string;\n /** Mesaj için ek sınıflar */\n messageClassName?: string;\n}\n\n/**\n * Premium Input Component\n * \n * @param props - Input bileşeni özellikleri\n * @param props.variant - Görsel varyant (standard, filled, ghost, underline)\n * @param props.size - Boyut (sm, md, lg)\n * @param props.error - Hata mesajı\n * @param props.success - Başarı mesajı\n * @param props.loading - Yükleniyor durumu\n * @param props.leftIcon - Sol tarafta gösterilecek ikon\n * @param props.rightIcon - Sağ tarafta gösterilecek ikon\n * @param props.rightButton - Sağ tarafta gösterilecek buton\n * @param props.alwaysShowMessage - Mesajın her zaman görünür olması\n */\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ \n className, \n wrapperClassName,\n messageClassName,\n variant, \n size, \n isError,\n disabled, \n error,\n success,\n loading,\n leftIcon,\n rightIcon,\n rightButton,\n alwaysShowMessage = false,\n ...props \n }, ref) => {\n // Mesajı göster/gizle\n const showMessage = alwaysShowMessage || error || success;\n const messageType = error ? \"error\" : success ? \"success\" : \"normal\";\n\n return (\n <div className=\"space-y-1.5 w-full\">\n <div className={cn(inputWrapperVariants({ size }), wrapperClassName)}>\n {leftIcon && (\n <div className=\"absolute left-3 text-gray-500 flex items-center justify-center pointer-events-none\">\n {loading ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : leftIcon}\n </div>\n )}\n \n <input\n className={cn(\n inputVariants({ \n variant, \n size, \n isError: !!error || isError, \n isSuccess: !!success,\n isDisabled: disabled || loading,\n hasLeftIcon: !!leftIcon || loading,\n hasRightIcon: !!rightIcon,\n hasRightButton: !!rightButton,\n }),\n className\n )}\n ref={ref}\n disabled={disabled || loading}\n data-loading={loading ? \"\" : undefined}\n data-error={!!error ? \"\" : undefined}\n data-success={!!success ? \"\" : undefined}\n aria-invalid={!!error || !!isError || undefined}\n aria-describedby={error ? `${props.id || ''}-error` : success ? `${props.id || ''}-success` : undefined}\n {...props}\n />\n \n {rightIcon && !loading && (\n <div className=\"absolute right-3 text-gray-500 flex items-center justify-center pointer-events-none\">\n {rightIcon}\n </div>\n )}\n \n {rightButton && (\n <div className=\"absolute right-3\">\n {rightButton}\n </div>\n )}\n \n {loading && !leftIcon && (\n <div className=\"absolute left-3 text-gray-500 flex items-center justify-center pointer-events-none\">\n <Loader2 className=\"h-4 w-4 animate-spin\" aria-hidden=\"true\" />\n </div>\n )}\n </div>\n \n {showMessage && (\n <p \n className={cn(\n \"text-xs transition-all\",\n messageType === \"error\" && \"text-error\",\n messageType === \"success\" && \"text-success\",\n messageType === \"normal\" && \"text-muted-foreground\",\n messageClassName\n )}\n id={error ? `${props.id || ''}-error` : success ? `${props.id || ''}-success` : undefined}\n >\n {error || success || \"\"}\n </p>\n )}\n </div>\n );\n }\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none text-gray-900 dark:text-gray-200 peer-disabled:cursor-not-allowed peer-disabled:opacity-70 dark:peer-disabled:opacity-60 transition-colors duration-200\"\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Progress Bileşeni\n *\n * İlerleme durumunu görsel olarak gösteren, tema sistemiyle tam entegre bir bileşen.\n * Yükleme işlemleri, form gönderimi ve diğer zaman alan işlemleri göstermek için kullanılır.\n */\n\nconst progressVariants = cva(\n \"relative overflow-hidden bg-muted\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n primary: \"bg-primary/20\",\n secondary: \"bg-secondary/20\",\n success: \"bg-success/20\",\n warning: \"bg-warning/20\",\n error: \"bg-error/20\",\n },\n size: {\n xs: \"h-1\",\n sm: \"h-1.5\",\n default: \"h-2\",\n md: \"h-2.5\",\n lg: \"h-3\",\n xl: \"h-4\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n default: \"rounded-md\", \n lg: \"rounded-lg\",\n full: \"rounded-full\",\n },\n animation: {\n default: \"[&>div]:transition-all [&>div]:duration-500\",\n smooth: \"[&>div]:transition-all [&>div]:duration-700\",\n fast: \"[&>div]:transition-all [&>div]:duration-300\",\n none: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"full\",\n animation: \"default\",\n },\n }\n);\n\nconst progressIndicatorVariants = cva(\n \"h-full w-full flex-1\",\n {\n variants: {\n variant: {\n default: \"bg-foreground\",\n primary: \"bg-primary\",\n secondary: \"bg-secondary\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n error: \"bg-error\",\n },\n animation: {\n default: \"transition-all duration-500\",\n smooth: \"transition-all duration-700\",\n fast: \"transition-all duration-300\",\n none: \"\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n animation: \"default\",\n },\n }\n);\n\nexport interface ProgressProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof progressVariants> {\n /**\n * İlerleme çubuğu değeri (0-100)\n */\n value?: number;\n /**\n * İndikatör (dolgu) için renk varyantı\n */\n indicatorVariant?: VariantProps<typeof progressIndicatorVariants>[\"variant\"];\n /**\n * İlerleme durumunu gösteren metin görünürlüğü\n */\n showValueLabel?: boolean;\n /**\n * İlerleme değeri etiketi için format (ör: \"30%\" veya \"3/10\")\n */\n valueLabel?: string;\n /**\n * Etiket stili\n */\n labelClassName?: string;\n /**\n * Belirsiz ilerleme animasyonu (indeterminate)\n */\n indeterminate?: boolean;\n /**\n * İlerleme değeri maksimumu (default: 100)\n */\n max?: number;\n}\n\nconst Progress = React.forwardRef<\n HTMLDivElement,\n ProgressProps\n>(({\n className,\n value = 0,\n variant,\n size,\n radius,\n animation,\n indicatorVariant,\n showValueLabel = false,\n valueLabel,\n labelClassName,\n indeterminate = false,\n max = 100,\n ...props\n}, ref) => {\n // İlerleme değeri 0-100 arasında olmalı\n const normalizedValue = Math.max(0, Math.min(value, max));\n const percentage = max > 0 ? (normalizedValue / max) * 100 : 0;\n \n // Etiket içeriği\n const label = valueLabel || `${Math.round(percentage)}%`;\n \n return (\n <>\n {showValueLabel && (\n <div className=\"flex justify-between items-center mb-1\">\n <span \n className={cn(\n \"text-sm font-medium text-muted-foreground\",\n labelClassName\n )}\n >\n {label}\n </span>\n </div>\n )}\n <div\n ref={ref}\n className={cn(progressVariants({ variant, size, radius, animation }), className)}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={indeterminate ? undefined : normalizedValue}\n {...props}\n >\n <div\n className={cn(\n progressIndicatorVariants({ variant: indicatorVariant || \"primary\", animation }),\n indeterminate && \"animate-indeterminate-progress\"\n )}\n style={indeterminate ? {} : { transform: `translateX(-${100 - percentage}%)` }}\n />\n </div>\n </>\n );\n});\nProgress.displayName = \"Progress\";\n\n// Not: Belirsiz ilerleme animasyonu için CSS keyframe styles.css veya Tailwind config içinde tanımlanmalı\n// @keyframes indeterminate-progress içeren bir tanımlama yapılmalıdır\n// .animate-indeterminate-progress sınıfı da bu animasyonu kullanmalıdır\n\nexport { Progress, progressVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Circle } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Radio Group Component\n *\n * Accessible, customizable, and fully integrated with the theme system radio button group.\n * Allows users to select a single option from a group of choices.\n */\n\nconst radioGroupItemVariants = cva(\n \"aspect-square border focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"border-border bg-background text-primary\",\n outline: \"border-border bg-transparent text-primary\",\n filled: \"border-primary bg-primary/10 text-primary\",\n },\n size: {\n sm: \"h-3.5 w-3.5\",\n default: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport interface RadioGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Radio group value\n */\n value?: string;\n /**\n * Function to call when radio group value changes\n */\n onValueChange?: (value: string) => void;\n /**\n * Radio group disabled state\n */\n disabled?: boolean;\n /**\n * Radio group name\n */\n name?: string;\n}\n\nconst RadioGroupContext = React.createContext<{\n value?: string;\n onValueChange?: (value: string) => void;\n disabled?: boolean;\n name?: string;\n}>({});\n\nconst RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\n ({ className, value, onValueChange, disabled, name, ...props }, ref) => {\n return (\n <RadioGroupContext.Provider value={{ value, onValueChange, disabled, name }}>\n <div\n ref={ref}\n role=\"radiogroup\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </RadioGroupContext.Provider>\n );\n }\n);\nRadioGroup.displayName = \"RadioGroup\";\n\nexport interface RadioGroupItemProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n VariantProps<typeof radioGroupItemVariants> {\n /**\n * Custom indicator component\n */\n indicator?: React.ReactNode;\n /**\n * HTML id for radio button\n */\n id?: string;\n /**\n * Radio button value\n */\n value: string;\n /**\n * Radio button disabled state\n */\n disabled?: boolean;\n}\n\nconst RadioGroupItem = React.forwardRef<\n HTMLInputElement,\n RadioGroupItemProps\n>(({ className, variant, size, indicator, id, value, disabled, ...props }, ref) => {\n // Get context values from radio group\n const radioGroup = React.useContext(RadioGroupContext);\n const generatedId = React.useId();\n const radioId = id || generatedId;\n const isChecked = radioGroup.value === value;\n \n // Call onValueChange function when RadioGroupItem changes\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (radioGroup.onValueChange) {\n radioGroup.onValueChange(e.target.value);\n }\n \n if (props.onChange) {\n props.onChange(e);\n }\n };\n \n return (\n <div className=\"relative flex items-center\">\n <input\n type=\"radio\"\n id={radioId}\n ref={ref}\n value={value}\n checked={isChecked}\n disabled={disabled || radioGroup.disabled}\n name={radioGroup.name}\n onChange={handleChange}\n className=\"sr-only\"\n {...props}\n />\n <label\n htmlFor={radioId}\n className={cn(\n radioGroupItemVariants({ variant, size }),\n \"rounded-full\",\n \"focus-visible:ring-primary/50\",\n \"relative inline-flex shrink-0 cursor-pointer items-center justify-center overflow-hidden\",\n disabled && \"cursor-not-allowed opacity-50\",\n className\n )}\n >\n <span className={cn(\n \"absolute inset-0 pointer-events-none\",\n isChecked && \"flex items-center justify-center\"\n )}>\n {isChecked && (indicator || <Circle className=\"h-[60%] w-[60%] fill-current text-current\" />)}\n </span>\n </label>\n </div>\n );\n});\nRadioGroupItem.displayName = \"RadioGroupItem\";\n\n// Radio Label Component\ninterface RadioLabelProps extends React.HTMLAttributes<HTMLLabelElement> {\n /**\n * HTML id for radio button\n */\n htmlFor?: string;\n /**\n * Label content\n */\n children: React.ReactNode;\n /**\n * Disabled state style\n */\n disabled?: boolean;\n}\n\nconst RadioLabel = React.forwardRef<HTMLLabelElement, RadioLabelProps>(\n ({ className, htmlFor, children, disabled = false, ...props }, ref) => {\n return (\n <label\n ref={ref}\n htmlFor={htmlFor}\n className={cn(\n \"text-sm font-medium leading-none ml-2 text-foreground\",\n disabled && \"cursor-not-allowed opacity-70\",\n className\n )}\n {...props}\n >\n {children}\n </label>\n );\n }\n);\nRadioLabel.displayName = \"RadioLabel\";\n\n// Radio Item and Label combination\ninterface RadioItemWithLabelProps extends RadioGroupItemProps {\n /**\n * Label content\n */\n label: React.ReactNode;\n /**\n * HTML classes for label\n */\n labelClassName?: string;\n /**\n * HTML id for radio button\n */\n id?: string;\n /**\n * Disabled state\n */\n disabled?: boolean;\n}\n\nconst RadioItemWithLabel = React.forwardRef<\n HTMLInputElement,\n RadioItemWithLabelProps\n>(({ \n id, \n label, \n labelClassName, \n ...radioProps \n}, ref) => {\n const generatedId = React.useId();\n const radioId = id || generatedId;\n \n return (\n <div className=\"flex items-center\">\n <RadioGroupItem ref={ref} id={radioId} {...radioProps} />\n <RadioLabel \n htmlFor={radioId}\n disabled={radioProps.disabled}\n className={labelClassName}\n >\n {label}\n </RadioLabel>\n </div>\n );\n});\nRadioItemWithLabel.displayName = \"RadioItemWithLabel\";\n\nexport { RadioGroup, RadioGroupItem, RadioLabel, RadioItemWithLabel };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp, Loader2 } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\n/**\n * Premium Select Component\n * \n * Advanced dropdown/select component with variants, sizes and accessibility features.\n * Compatible with dark and light mode, providing a modern user experience with smooth animations.\n */\n\n// Directly re-exporting the Root component\nconst Select = SelectPrimitive.Root\nSelect.displayName = \"Select\"\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\ntype SelectTriggerVariant = \"standard\" | \"outline\" | \"ghost\" | \"underline\";\ntype SelectTriggerSize = \"sm\" | \"md\" | \"lg\";\n\ninterface SelectTriggerProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> {\n /** Visual variant */\n variant?: SelectTriggerVariant;\n /** Size */\n size?: SelectTriggerSize;\n /** Error state */\n error?: boolean | string;\n /** Success state */\n success?: boolean;\n /** Loading state */\n loading?: boolean;\n /** Icon displayed on the left */\n leftIcon?: React.ReactNode;\n /** Icon displayed on the right (instead of default chevron) */\n rightIcon?: React.ReactNode;\n}\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n SelectTriggerProps\n>(({ className, children, variant = \"standard\", size = \"md\", error, success, loading, leftIcon, rightIcon, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n /* Base styles */\n \"flex w-full items-center justify-between gap-1 rounded-md transition-all duration-200\",\n \"disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n \"focus-visible:outline-none\",\n /* Error state */\n error && \"border-error focus-visible:ring-error/30 focus-visible:border-error\",\n /* Success state */\n success && \"border-success focus-visible:ring-success/30 focus-visible:border-success\",\n /* Size variants */\n size === \"sm\" && \"h-8 text-xs px-2\",\n size === \"md\" && \"h-10 text-sm px-3\",\n size === \"lg\" && \"h-12 text-base px-4\",\n /* Visual variants */\n variant === \"standard\" && \"border border-gray-300 dark:border-gray-700 bg-background dark:bg-gray-900 hover:border-gray-400 dark:hover:border-gray-600 focus-visible:ring-2 focus-visible:ring-primary/30 dark:focus-visible:ring-primary/50 focus-visible:border-primary dark:focus-visible:border-primary\",\n variant === \"outline\" && \"border border-gray-300 dark:border-gray-700 bg-transparent hover:border-gray-400 dark:hover:border-gray-600 focus-visible:ring-2 focus-visible:ring-primary/30 dark:focus-visible:ring-primary/50 focus-visible:border-primary dark:focus-visible:border-primary\",\n variant === \"ghost\" && \"border-none bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700 focus-visible:ring-2 focus-visible:ring-primary/30 dark:focus-visible:ring-primary/50\",\n variant === \"underline\" && \"border-t-0 border-l-0 border-r-0 border-b border-gray-300 dark:border-gray-600 rounded-none px-0 hover:border-gray-400 dark:hover:border-gray-500 focus-visible:ring-0 focus-visible:border-b-2 focus-visible:border-primary dark:focus-visible:border-primary\",\n className\n )}\n {...props}\n disabled={props.disabled || loading}\n data-error={error ? true : undefined}\n data-success={success ? true : undefined}\n data-loading={loading ? true : undefined}\n >\n <div className=\"flex items-center flex-1 gap-2\">\n {leftIcon && (\n <span className=\"flex items-center justify-center text-gray-500 dark:text-gray-400\">\n {leftIcon}\n </span>\n )}\n {loading ? (\n <div className=\"flex items-center gap-2\">\n <Loader2 className=\"h-3.5 w-3.5 animate-spin text-muted-foreground dark:text-gray-400\" />\n <span className=\"text-muted-foreground dark:text-gray-400\">Loading...</span>\n </div>\n ) : children}\n </div>\n {!loading && (\n <SelectPrimitive.Icon asChild>\n {rightIcon ? (\n <span className=\"opacity-60\">{rightIcon}</span>\n ) : (\n <ChevronDown className=\"h-4 w-4 opacity-60 transition-transform duration-200 ease-out group-data-[state=open]:rotate-180\" />\n )}\n </SelectPrimitive.Icon>\n )}\n </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\n/**\n * Scroll Up Button Component\n */\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1 text-muted-foreground hover:text-foreground transition-colors\",\n className\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\n/**\n * Scroll Down Button Component\n */\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1 text-muted-foreground hover:text-foreground transition-colors\",\n className\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"item-aligned\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n [\"relative z-50 max-h-96 min-w-[8rem] overflow-hidden\", \n \"rounded-md border border-gray-200 dark:border-gray-700\",\n \"bg-white dark:bg-gray-900 text-foreground\", \n \"shadow-lg dark:shadow-gray-900/20\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\", \n \"data-[state=open]:duration-150\"],\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\ntype SelectItemVariant = \"default\" | \"subtle\" | \"destructive\" | \"success\" | \"warning\";\ntype SelectItemSize = \"sm\" | \"md\" | \"lg\";\n\ninterface SelectItemProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> {\n /** Visual variant */\n variant?: SelectItemVariant;\n /** Size */\n size?: SelectItemSize;\n /** Icon displayed on the right */\n rightIcon?: React.ReactNode;\n /** Custom indicator icon (instead of default check) */\n customIndicator?: React.ReactNode;\n}\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n SelectItemProps\n>(({ className, children, variant = \"default\", size = \"md\", rightIcon, customIndicator, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n \n /* Size variants */\n size === \"sm\" && \"py-1 pl-7 pr-2 text-xs\",\n size === \"md\" && \"py-1.5 pl-8 pr-2 text-sm\",\n size === \"lg\" && \"py-2 pl-9 pr-3 text-base\",\n \n /* Color variants */\n variant === \"default\" && \"focus:bg-accent focus:text-accent-foreground dark:focus:bg-gray-700 dark:focus:text-gray-100\",\n variant === \"subtle\" && \"focus:bg-gray-100 dark:focus:bg-gray-800 focus:text-foreground dark:focus:text-gray-200\",\n variant === \"destructive\" && \"text-error dark:text-red-400 focus:bg-error/10 dark:focus:bg-red-900/20 focus:text-error dark:focus:text-red-300\",\n variant === \"success\" && \"text-success dark:text-green-400 focus:bg-success/10 dark:focus:bg-green-900/20 focus:text-success dark:focus:text-green-300\",\n variant === \"warning\" && \"text-warning dark:text-yellow-400 focus:bg-warning/10 dark:focus:bg-yellow-900/20 focus:text-warning dark:focus:text-yellow-300\",\n \n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n {customIndicator || <Check className=\"h-4 w-4\" />}\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n \n {rightIcon && (\n <span className=\"ml-auto pl-2 opacity-70\">\n {rightIcon}\n </span>\n )}\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted dark:bg-gray-700\", className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst separatorVariants = cva(\n \"shrink-0 bg-border\",\n {\n variants: {\n orientation: {\n horizontal: \"h-[1px] w-full\",\n vertical: \"h-full w-[1px]\",\n },\n variant: {\n default: \"bg-border\",\n dashed: \"border-dashed border-border bg-transparent\",\n dotted: \"border-dotted border-border bg-transparent\",\n gradient: \"bg-gradient-to-r from-transparent via-border to-transparent\",\n },\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n {\n orientation: \"horizontal\",\n variant: \"dashed\",\n className: \"border-t h-0\",\n },\n {\n orientation: \"vertical\",\n variant: \"dashed\",\n className: \"border-l w-0\",\n },\n {\n orientation: \"horizontal\",\n variant: \"dotted\",\n className: \"border-t h-0\",\n },\n {\n orientation: \"vertical\",\n variant: \"dotted\",\n className: \"border-l w-0\",\n },\n {\n orientation: \"horizontal\",\n size: \"sm\",\n variant: [\"dashed\", \"dotted\"],\n className: \"border-t-[0.5px]\",\n },\n {\n orientation: \"horizontal\",\n size: \"lg\",\n variant: [\"dashed\", \"dotted\"],\n className: \"border-t-2\",\n },\n {\n orientation: \"vertical\",\n size: \"sm\",\n variant: [\"dashed\", \"dotted\"],\n className: \"border-l-[0.5px]\",\n },\n {\n orientation: \"vertical\",\n size: \"lg\",\n variant: [\"dashed\", \"dotted\"],\n className: \"border-l-2\",\n },\n {\n orientation: \"horizontal\",\n size: \"sm\",\n variant: [\"default\", \"gradient\"],\n className: \"h-[0.5px]\",\n },\n {\n orientation: \"horizontal\",\n size: \"lg\",\n variant: [\"default\", \"gradient\"],\n className: \"h-[2px]\",\n },\n {\n orientation: \"vertical\",\n size: \"sm\",\n variant: [\"default\", \"gradient\"],\n className: \"w-[0.5px]\",\n },\n {\n orientation: \"vertical\",\n size: \"lg\",\n variant: [\"default\", \"gradient\"],\n className: \"w-[2px]\",\n },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nexport interface SeparatorProps\n extends React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>,\n VariantProps<typeof separatorVariants> {}\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n SeparatorProps\n>(\n (\n { \n className, \n orientation = \"horizontal\", \n variant = \"default\",\n size = \"md\",\n decorative = true, \n ...props \n },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n separatorVariants({ orientation, variant, size }),\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator, separatorVariants }","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { motion } from \"framer-motion\";\nimport { skeletonAnimation } from \"@/lib/micro-interactions\";\n\n/**\n * Skeleton Component\n *\n * A loading placeholder that mimics the structure of content.\n * Fully integrated with the theme system and provides various shapes, sizes, and animations.\n */\n\nconst skeletonVariants = cva(\n \"animate-pulse rounded-md\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n primary: \"bg-primary/10\",\n secondary: \"bg-secondary/10\",\n accent: \"bg-accent\",\n },\n size: {\n default: \"\",\n sm: \"scale-90\",\n lg: \"scale-110\",\n },\n shape: {\n rect: \"rounded-md\",\n circle: \"rounded-full\",\n pill: \"rounded-full\",\n },\n animation: {\n pulse: \"animate-pulse\",\n wave: \"overflow-hidden relative after:absolute after:inset-0 after:-translate-x-full after:animate-[shimmer_2s_infinite] after:bg-gradient-to-r after:from-transparent after:via-white/10 after:to-transparent dark:after:via-white/5\",\n none: \"animate-none\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n shape: \"rect\",\n animation: \"pulse\",\n },\n }\n);\n\nexport interface SkeletonProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof skeletonVariants> {\n /**\n * Height of the skeleton\n */\n height?: string | number;\n /**\n * Width of the skeleton\n */\n width?: string | number;\n /**\n * Whether the content is loaded\n */\n isLoaded?: boolean;\n /**\n * Content to show when loaded\n */\n children?: React.ReactNode;\n /**\n * Fade-in animation duration in ms\n */\n fadeInDuration?: number;\n /**\n * Use motion animation for loading state\n */\n motion?: boolean;\n}\n\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ \n className,\n variant,\n size,\n shape,\n animation,\n height,\n width,\n isLoaded = false,\n children,\n fadeInDuration = 400,\n motion: useMotion = false,\n style,\n ...props \n }, ref) => {\n // Show content when loaded\n if (isLoaded && children) {\n if (useMotion) {\n return (\n <motion.div\n ref={ref}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: fadeInDuration / 1000 }}\n className={className}\n style={{\n height,\n width,\n ...style,\n }}\n {...props}\n >\n {children}\n </motion.div>\n );\n }\n \n return (\n <div\n ref={ref}\n className={cn(\"animate-fade-in\", className)}\n style={{\n animationDuration: `${fadeInDuration}ms`,\n height,\n width,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n const SkeletonElement = useMotion ? motion.div : \"div\";\n \n return (\n <SkeletonElement\n ref={ref}\n className={cn(\n skeletonVariants({ variant, size, shape, animation }),\n \"relative isolate\",\n className\n )}\n style={{\n height,\n width,\n ...style,\n }}\n {...(useMotion ? skeletonAnimation : {})}\n {...props}\n />\n );\n }\n);\nSkeleton.displayName = \"Skeleton\";\n\n/**\n * Text Skeleton Component\n * \n * Creates skeleton loading states for text content\n */\nexport interface SkeletonTextProps extends Omit<SkeletonProps, \"children\" | \"isLoaded\"> {\n /**\n * Kaç satır gösterileceği\n */\n lines?: number;\n /**\n * Satır yüksekliği\n */\n lineHeight?: string | number;\n /**\n * Satırlar arası boşluk\n */\n spacing?: string | number;\n /**\n * Son satırın genişlik yüzdesi (0-100)\n */\n lastLineWidth?: number;\n /**\n * Rastgele satır genişlikleri\n */\n randomWidths?: boolean;\n}\n\nexport const SkeletonText = React.forwardRef<HTMLDivElement, SkeletonTextProps>(\n ({ \n className,\n lines = 3,\n lineHeight = \"0.85rem\",\n spacing = \"0.5rem\",\n lastLineWidth = 80,\n randomWidths = false,\n variant = \"default\",\n animation = \"pulse\",\n ...props \n }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col\", className)}\n style={{ gap: spacing }}\n {...props}\n >\n {Array.from({ length: lines }).map((_, i) => {\n const isLastLine = i === lines - 1;\n // Use deterministic widths based on line index for SSR compatibility\n const widthPercentage = isLastLine\n ? lastLineWidth\n : randomWidths\n ? 85 + (i % 3) * 5 // Creates a pattern: 85%, 90%, 95%, 85%, ...\n : 100;\n\n return (\n <Skeleton\n key={i}\n variant={variant}\n animation={animation}\n className=\"w-full\"\n style={{\n height: lineHeight,\n width: `${widthPercentage}%`,\n }}\n />\n );\n })}\n </div>\n );\n }\n);\nSkeletonText.displayName = \"SkeletonText\";\n\n/**\n * Avatar Skeleton Component\n */\nexport interface SkeletonAvatarProps extends Omit<SkeletonProps, \"shape\" | \"size\"> {\n /**\n * Avatar boyutu (piksel)\n */\n size?: string | number;\n}\n\nexport const SkeletonAvatar = React.forwardRef<HTMLDivElement, SkeletonAvatarProps>(\n ({ \n className,\n size = \"2.5rem\",\n variant = \"default\",\n animation = \"pulse\",\n ...props \n }, ref) => {\n return (\n <Skeleton\n ref={ref}\n variant={variant}\n animation={animation}\n shape=\"circle\"\n className={cn(\"shrink-0\", className)}\n style={{\n height: size,\n width: size,\n }}\n {...props}\n />\n );\n }\n);\nSkeletonAvatar.displayName = \"SkeletonAvatar\";\n\n/**\n * Card Skeleton Component\n */\nexport interface SkeletonCardProps extends Omit<SkeletonProps, \"children\" | \"isLoaded\"> {\n /**\n * Kart başlığının gösterilip gösterilmeyeceği\n */\n showHeader?: boolean;\n /**\n * İçerik satır sayısı\n */\n contentLines?: number;\n /**\n * Alt bilgi gösterilip gösterilmeyeceği\n */\n showFooter?: boolean;\n}\n\nexport const SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonCardProps>(\n ({ \n className,\n showHeader = true,\n contentLines = 3,\n showFooter = true,\n variant = \"default\",\n animation = \"pulse\",\n ...props \n }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"overflow-hidden rounded-md border border-border bg-background p-4\",\n className\n )}\n {...props}\n >\n {showHeader && (\n <div className=\"mb-4 flex items-center gap-4\">\n <SkeletonAvatar size=\"2.5rem\" variant={variant} animation={animation} />\n <div className=\"flex-1\">\n <Skeleton \n variant={variant} \n animation={animation} \n className=\"mb-2 h-4 w-1/3\" \n />\n <Skeleton \n variant={variant} \n animation={animation} \n className=\"h-3 w-1/4\" \n />\n </div>\n </div>\n )}\n \n <SkeletonText \n lines={contentLines} \n variant={variant} \n animation={animation} \n className=\"mb-4\" \n />\n \n {showFooter && (\n <div className=\"flex items-center justify-between mt-4 pt-4 border-t border-border\">\n <Skeleton \n variant={variant} \n animation={animation} \n className=\"h-4 w-1/4\" \n />\n <Skeleton \n variant={variant} \n animation={animation} \n className=\"h-4 w-1/5\" \n />\n </div>\n )}\n </div>\n );\n }\n);\nSkeletonCard.displayName = \"SkeletonCard\";\n\nexport { skeletonVariants };\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n/**\n * Slider Component\n *\n * Accessible, customizable slider component fully integrated with the theme system.\n * Used for value ranges like volume, brightness, price ranges.\n */\n\nconst sliderVariants = cva(\n \"relative flex w-full touch-none select-none items-center\",\n {\n variants: {\n size: {\n sm: \"h-5\",\n default: \"h-6\",\n md: \"h-8\",\n lg: \"h-10\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\nconst sliderTrackVariants = cva(\n \"relative h-1.5 w-full grow overflow-hidden rounded-full\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n primary: \"bg-primary/20\",\n secondary: \"bg-secondary/20\",\n accent: \"bg-accent/20\",\n success: \"bg-success/20\",\n warning: \"bg-warning/20\",\n error: \"bg-error/20\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst sliderRangeVariants = cva(\n \"absolute h-full\",\n {\n variants: {\n variant: {\n default: \"bg-foreground\",\n primary: \"bg-primary\",\n secondary: \"bg-secondary\",\n accent: \"bg-accent\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n error: \"bg-error\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n }\n)\n\nconst sliderThumbVariants = cva(\n \"block rounded-full border-2 ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"border-foreground bg-background\",\n primary: \"border-primary bg-background\",\n secondary: \"border-secondary bg-background\",\n accent: \"border-accent bg-background\",\n success: \"border-success bg-background\",\n warning: \"border-warning bg-background\",\n error: \"border-error bg-background\",\n },\n size: {\n sm: \"h-3 w-3\",\n default: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"default\",\n },\n }\n)\n\n// Custom type definition for component properties\ntype SliderBaseProps = {\n /**\n * Track variant\n */\n trackVariant?: VariantProps<typeof sliderTrackVariants>[\"variant\"];\n /**\n * Range variant\n */\n rangeVariant?: VariantProps<typeof sliderRangeVariants>[\"variant\"];\n /**\n * Thumb variant\n */\n thumbVariant?: VariantProps<typeof sliderThumbVariants>[\"variant\"];\n /**\n * Thumb size\n */\n thumbSize?: VariantProps<typeof sliderThumbVariants>[\"size\"];\n /**\n * Show value label\n */\n showValueLabel?: boolean;\n /**\n * Value label format function\n */\n valueLabelFormat?: (value: number) => string;\n /**\n * Value label class name\n */\n valueLabelClassName?: string;\n /**\n * Slider value\n */\n value?: number[];\n /**\n * Default value\n */\n defaultValue?: number[];\n /**\n * Function called when value changes\n */\n onValueChange?: (value: number[]) => void;\n /**\n * Minimum value\n */\n min?: number;\n /**\n * Maximum value\n */\n max?: number;\n /**\n * Step value\n */\n step?: number;\n /**\n * Slider size\n */\n size?: VariantProps<typeof sliderVariants>[\"size\"];\n /**\n * Disabled state\n */\n disabled?: boolean;\n}\n\n// Merge HTML properties without defaultValue conflicts\ntype SliderProps = SliderBaseProps & Omit<React.HTMLAttributes<HTMLDivElement>, 'defaultValue'>\n\nconst Slider = React.forwardRef<\n HTMLDivElement,\n SliderProps\n>(({\n className,\n size,\n trackVariant,\n rangeVariant,\n thumbVariant,\n thumbSize,\n showValueLabel = false,\n valueLabelFormat,\n valueLabelClassName,\n value,\n defaultValue = [0],\n onValueChange,\n disabled,\n ...props\n}, ref) => {\n // Value management\n const [sliderValue, setSliderValue] = React.useState<number[]>(\n value as number[] || defaultValue as number[] || [0]\n );\n\n React.useEffect(() => {\n if (value !== undefined) {\n setSliderValue(value as number[]);\n }\n }, [value]);\n\n // Format value label with proper precision handling\n const formatValue = (val: number) => {\n if (valueLabelFormat) {\n return valueLabelFormat(val);\n }\n // Round to avoid floating point precision issues\n const roundedValue = Math.round(val * 100) / 100;\n return `${roundedValue}`;\n };\n\n // Calculate percentage for thumb position\n const calculateThumbPercent = (value: number, min: number, max: number) => {\n return ((value - min) / (max - min)) * 100;\n };\n\n // Handle mouse/touch events\n const trackRef = React.useRef<HTMLDivElement>(null);\n \n const min = props.min || 0;\n const max = props.max || 100;\n const step = props.step || 1;\n\n // Handle value change with proper precision\n const handleValueChange = (newValues: number[]) => {\n // Round values to avoid floating point precision issues\n const roundedValues = newValues.map(val => {\n if (step < 1) {\n // For decimal steps, round to appropriate decimal places\n const decimals = step.toString().split('.')[1]?.length || 0;\n return Math.round(val * Math.pow(10, decimals)) / Math.pow(10, decimals);\n }\n return Math.round(val);\n });\n \n setSliderValue(roundedValues);\n if (onValueChange) {\n onValueChange(roundedValues);\n }\n };\n\n // Handle track click\n const handleTrackClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (disabled) return;\n \n const track = trackRef.current;\n if (!track) return;\n\n const rect = track.getBoundingClientRect();\n const percent = (event.clientX - rect.left) / rect.width;\n const rawValue = min + percent * (max - min);\n const steppedValue = Math.round(rawValue / step) * step;\n const boundedValue = Math.max(min, Math.min(max, steppedValue));\n \n const newValues = [...sliderValue];\n // Just update the first thumb for simplicity\n newValues[0] = boundedValue;\n handleValueChange(newValues);\n };\n\n const handleThumbMouseDown = (index: number) => (event: React.MouseEvent) => {\n if (disabled) return;\n event.preventDefault();\n \n const handleMouseMove = (moveEvent: MouseEvent) => {\n const track = trackRef.current;\n if (!track) return;\n\n const rect = track.getBoundingClientRect();\n const percent = (moveEvent.clientX - rect.left) / rect.width;\n const rawValue = min + percent * (max - min);\n const steppedValue = Math.round(rawValue / step) * step;\n const boundedValue = Math.max(min, Math.min(max, steppedValue));\n \n const newValues = [...sliderValue];\n newValues[index] = boundedValue;\n handleValueChange(newValues);\n };\n\n const handleMouseUp = () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n };\n\n return (\n <div className=\"w-full\" ref={ref} {...props}>\n {showValueLabel && (\n <div className={cn(\n \"flex justify-end mb-1 text-sm text-muted-foreground\",\n valueLabelClassName\n )}>\n {sliderValue.length === 1 ? (\n <span>{formatValue(sliderValue[0])}</span>\n ) : (\n <span>{formatValue(sliderValue[0])} - {formatValue(sliderValue[sliderValue.length - 1])}</span>\n )}\n </div>\n )}\n \n <div\n className={cn(sliderVariants({ size }), className)}\n data-disabled={disabled ? true : undefined}\n >\n {/* Track */}\n <div\n ref={trackRef}\n className={cn(sliderTrackVariants({ variant: trackVariant || thumbVariant || \"default\" }))}\n onClick={handleTrackClick}\n >\n {/* Range */}\n <div\n className={cn(sliderRangeVariants({ variant: rangeVariant || thumbVariant || \"primary\" }))}\n style={{\n left: '0%',\n width: `${calculateThumbPercent(sliderValue[0], min, max)}%`,\n }}\n />\n </div>\n\n {/* Thumbs */}\n {sliderValue.map((value, i) => (\n <div\n key={i}\n className={cn(sliderThumbVariants({\n variant: thumbVariant || \"primary\",\n size: thumbSize\n }))}\n style={{\n left: `${calculateThumbPercent(value, min, max)}%`,\n transform: 'translateX(-50%)',\n position: 'absolute',\n top: '50%',\n marginTop: thumbSize === \"sm\" ? '-6px' : thumbSize === \"lg\" ? '-12px' : '-8px',\n cursor: disabled ? 'not-allowed' : 'pointer',\n }}\n onMouseDown={handleThumbMouseDown(i)}\n aria-label={`Thumb ${i + 1}`}\n tabIndex={disabled ? -1 : 0}\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-disabled={disabled}\n />\n ))}\n </div>\n </div>\n )\n})\n\nSlider.displayName = \"Slider\"\n\nexport { Slider }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\n\nimport { cn } from \"../../lib/utils\"\n\ntype SwitchSize = \"sm\" | \"md\" | \"lg\";\ntype SwitchVariant = \"primary\" | \"success\" | \"warning\" | \"danger\" | \"secondary\";\n\nexport interface SwitchProps extends React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root> {\n /** Switch boyutu */\n size?: SwitchSize;\n /** Switch renk varyantı */\n variant?: SwitchVariant;\n /** Yükleniyor durumunu gösterir */\n loading?: boolean;\n /** Sol tarafta gösterilecek ikon */\n leftIcon?: React.ReactNode;\n /** Sağ tarafta gösterilecek ikon */\n rightIcon?: React.ReactNode;\n /** Switch açıklaması */\n description?: string;\n}\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n SwitchProps\n>(({ className, size = \"md\", variant = \"primary\", loading, leftIcon, rightIcon, description, ...props }, ref) => (\n <div className=\"inline-flex items-center gap-2\">\n {leftIcon && <span className=\"text-muted-foreground\">{leftIcon}</span>}\n <SwitchPrimitives.Root\n className={cn(\n \"peer relative inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 dark:data-[state=unchecked]:bg-gray-700/70 dark:focus-visible:ring-primary/40 dark:focus-visible:ring-offset-gray-950\",\n \n // Boyutlar\n size === \"sm\" && \"h-4 w-8\",\n size === \"md\" && \"h-6 w-11\", \n size === \"lg\" && \"h-7 w-14\",\n \n // Varyantlar (checked durumunda)\n variant === \"primary\" && \"data-[state=checked]:bg-primary\",\n variant === \"success\" && \"data-[state=checked]:bg-success\",\n variant === \"warning\" && \"data-[state=checked]:bg-warning\",\n variant === \"danger\" && \"data-[state=checked]:bg-error\",\n variant === \"secondary\" && \"data-[state=checked]:bg-accent\",\n \n // Unchecked durumu\n \"data-[state=unchecked]:bg-input\",\n \n // Loading durumu\n loading && \"opacity-80 cursor-wait\",\n \n className\n )}\n disabled={loading || props.disabled}\n {...props}\n ref={ref}\n >\n {loading ? (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"h-3 w-3 animate-spin rounded-full border-2 border-gray-300 border-t-primary\"></div>\n </div>\n ) : null}\n \n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block rounded-full bg-background shadow-lg ring-0 transition-transform\",\n // Boyuta göre thumb boyutları\n size === \"sm\" && \"h-3 w-3 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0\",\n size === \"md\" && \"h-5 w-5 data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\",\n size === \"lg\" && \"h-6 w-6 data-[state=checked]:translate-x-7 data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitives.Root>\n {rightIcon && <span className=\"text-muted-foreground\">{rightIcon}</span>}\n {description && <span className=\"text-sm text-muted-foreground\">{description}</span>}\n </div>\n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\nexport type { SwitchSize, SwitchVariant }\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nexport type SortDirection = \"asc\" | \"desc\" | null;\n\nconst tableVariants = cva(\n \"w-full caption-bottom text-sm\",\n {\n variants: {\n variant: {\n default: \"dark:text-gray-200\",\n bordered: \"border border-border dark:border-gray-700\",\n striped: \"dark:text-gray-200\",\n card: \"border border-border dark:border-gray-700 rounded-md shadow-sm dark:shadow-gray-900/20\",\n minimal: \"border-none dark:text-gray-200\",\n },\n size: {\n sm: \"text-xs\",\n default: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport interface ColumnDefinition<T> {\n id: string;\n header: React.ReactNode;\n accessorKey?: keyof T;\n cell?: (row: T) => React.ReactNode;\n sortable?: boolean;\n}\n\ninterface TableProps<T>\n extends React.HTMLAttributes<HTMLTableElement>,\n VariantProps<typeof tableVariants> {\n /** Veri yükleniyor durumunu gösterir */\n loading?: boolean;\n /** Sıralama için kullanılan sütun */\n sortColumn?: string;\n /** Sıralama yönü */\n sortDirection?: SortDirection;\n /** Sıralama değiştiğinde çağrılacak fonksiyon */\n onSortChange?: (column: string, direction: SortDirection) => void;\n /** Boş durum için özel içerik */\n emptyContent?: React.ReactNode;\n /** Seçili satır id'leri */\n selectedRowIds?: string[];\n /** Satır seçim değiştiğinde çağrılacak fonksiyon */\n onRowSelectionChange?: (selectedRowIds: string[]) => void;\n /** Satır seçim devre dışı */\n disableRowSelection?: boolean;\n /** Her satır için benzersiz id çıkarma fonksiyonu */\n getRowId?: (row: T) => string;\n}\n\n// Tip parametresiz Table bileşeni için varsayılan tip, herhangi bir veri tipini kabul edebilmesi için\nconst Table = React.forwardRef<\n HTMLTableElement,\n TableProps<unknown>\n>(({ \n className, \n variant, \n size, \n loading, \n emptyContent,\n // Kullanılmayan özellikleri yoruma alarak lint uyarılarını önlüyoruz\n // sortColumn,\n // sortDirection,\n // onSortChange,\n // selectedRowIds,\n // onRowSelectionChange,\n // disableRowSelection,\n // getRowId,\n ...props \n}, ref) => {\n // Apply striped styles to the tbody via a class name\n const striped = variant === \"striped\";\n \n // Çocukları güvenli bir şekilde işle ve tip kontrollerini doğru yap\n const childrenWithProps = React.Children.map(props.children, (child) => {\n if (React.isValidElement(child)) {\n if (child.type === \"tbody\") {\n // Tip güvenliği için props'ları düzgün şekilde ele alıyoruz\n const tbodyProps = child.props as Record<string, unknown>;\n return React.cloneElement(child as React.ReactElement<React.HTMLAttributes<HTMLTableSectionElement>>, {\n className: cn(tbodyProps.className as string | undefined, striped && \"even:[&>tr]:bg-muted/50\")\n });\n }\n }\n return child;\n });\n \n return (\n <div className=\"relative w-full overflow-auto\">\n {/* Yükleniyor durumu için overlay */}\n {loading && (\n <div className=\"absolute inset-0 bg-background/60 flex items-center justify-center z-10\">\n <div className=\"h-8 w-8 animate-spin rounded-full border-2 border-primary border-t-transparent\"></div>\n </div>\n )}\n \n <table\n ref={ref}\n className={cn(\n tableVariants({ variant, size }),\n loading && \"opacity-70\",\n className\n )}\n {...props}\n >\n {childrenWithProps}\n </table>\n \n </div>\n );\n});\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n));\nTableHeader.displayName = \"TableHeader\";\n\ninterface TableBodyProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n /** Veri yoksa gösterilecek boş durum içeriği */\n emptyContent?: React.ReactNode;\n /** Varsayılan boş durum mesajı */\n emptyMessage?: string;\n}\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n TableBodyProps\n>(({ className, emptyContent, emptyMessage = \"No data available\", children, ...props }, ref) => {\n // Çocuk elementlerin varlığını kontrol et\n const hasChildren = React.Children.count(children) > 0;\n \n return (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n >\n {hasChildren ? (\n children\n ) : (\n <tr>\n <td colSpan={100} className=\"h-24 text-center\">\n {emptyContent || (\n <div className=\"py-6 text-muted-foreground\">\n <div className=\"text-sm\">\n {emptyMessage}\n </div>\n </div>\n )}\n </td>\n </tr>\n )}\n </tbody>\n )\n});\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\"bg-primary text-primary-foreground font-medium\", className)}\n {...props}\n />\n));\nTableFooter.displayName = \"TableFooter\";\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n));\nTableRow.displayName = \"TableRow\";\n\ninterface TableHeadProps extends React.ThHTMLAttributes<HTMLTableCellElement> {\n /** Bu sütun için sıralama durumu */\n sortable?: boolean;\n /** Bu sütunun sıralanma durumu */\n sorted?: SortDirection;\n /** Sıralama değiştiğinde çağrılacak fonksiyon */\n onSort?: () => void;\n}\n\nconst TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n ({ className, sortable, sorted, onSort, children, ...props }, ref) => {\n // Sıralama için simgeler\n const renderSortIcon = () => {\n if (!sortable) return null;\n \n if (sorted === \"asc\") {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"ml-1 h-4 w-4 inline-block\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M14.707 10.293a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 111.414-1.414L9 12.586V5a1 1 0 012 0v7.586l2.293-2.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n \n if (sorted === \"desc\") {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"ml-1 h-4 w-4 inline-block\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.293 9.707a1 1 0 010-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 01-1.414 1.414L11 7.414V15a1 1 0 11-2 0V7.414L6.707 9.707a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n \n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"ml-1 h-4 w-4 inline-block opacity-30\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n };\n \n return (\n <th\n ref={ref}\n className={cn(\n \"h-10 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n sortable && \"cursor-pointer hover:text-foreground select-none\",\n className\n )}\n onClick={sortable ? onSort : undefined}\n {...props}\n >\n <div className=\"flex items-center\">\n {children}\n {sortable && renderSortIcon()}\n </div>\n </th>\n );\n }\n);\nTableHead.displayName = \"TableHead\";\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n />\n));\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nTableCaption.displayName = \"TableCaption\";\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n\nexport type { TableBodyProps };\n","import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/* -------------------------------------------------------------------------------------------------\n * Tabs Root\n * -----------------------------------------------------------------------------------------------*/\ninterface TabsProps extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> {\n /** Mobil görünümde dikey düzen için */\n vertical?: boolean;\n}\n\nconst Tabs = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Root>,\n TabsProps\n>(({ vertical = false, ...props }, ref) => (\n <TabsPrimitive.Root\n ref={ref}\n orientation={vertical ? \"vertical\" : \"horizontal\"}\n {...props}\n />\n));\n\nTabs.displayName = TabsPrimitive.Root.displayName;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsList\n * -----------------------------------------------------------------------------------------------*/\nconst tabsListVariants = cva(\n \"flex items-center justify-start transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"bg-muted rounded-md p-1 text-muted-foreground dark:bg-gray-800/80 dark:text-gray-400\",\n pills: \"bg-transparent gap-2 p-0 dark:text-gray-400\", \n underline: \"bg-transparent border-b border-border dark:border-gray-700 gap-4 dark:text-gray-400\",\n cards: \"bg-transparent gap-2 p-0 dark:text-gray-400\",\n minimal: \"bg-transparent gap-1 p-0 dark:text-gray-400\",\n },\n orientation: {\n horizontal: \"flex-row\",\n vertical: \"flex-col items-start gap-1\"\n },\n fullWidth: {\n true: \"w-full\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n orientation: \"horizontal\",\n fullWidth: false\n }\n }\n);\n\ninterface TabsListProps \n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>,\n VariantProps<typeof tabsListVariants> {\n /** Dikey düzende göster */\n orientation?: \"horizontal\" | \"vertical\";\n}\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n TabsListProps\n>(({ className, variant, orientation, fullWidth, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(tabsListVariants({ variant, orientation, fullWidth, className }))}\n {...props}\n />\n));\n\nTabsList.displayName = TabsPrimitive.List.displayName;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsTrigger\n * -----------------------------------------------------------------------------------------------*/\nconst tabsTriggerVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap font-medium ring-offset-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"rounded-md data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm dark:data-[state=active]:bg-gray-900 dark:data-[state=active]:text-gray-100 dark:data-[state=active]:shadow-gray-950/10\",\n underline: \"rounded-none border-b-2 border-transparent pb-2 data-[state=active]:border-primary data-[state=active]:bg-transparent data-[state=active]:text-foreground dark:data-[state=active]:border-primary/80 dark:data-[state=active]:text-gray-100\",\n pills: \"rounded-full bg-muted hover:bg-muted/80 data-[state=active]:bg-primary data-[state=active]:text-primary-foreground dark:bg-gray-800 dark:hover:bg-gray-700 dark:data-[state=active]:bg-primary/90 dark:data-[state=active]:text-white\",\n cards: \"rounded-md bg-muted/50 hover:bg-muted data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-md dark:bg-gray-800/50 dark:hover:bg-gray-700/50 dark:data-[state=active]:bg-gray-900 dark:data-[state=active]:text-gray-100 dark:data-[state=active]:shadow-gray-950/20\",\n minimal: \"rounded-sm bg-transparent hover:bg-muted/30 data-[state=active]:bg-transparent data-[state=active]:text-foreground data-[state=active]:underline data-[state=active]:underline-offset-4 dark:hover:bg-gray-800/30 dark:data-[state=active]:text-gray-200\",\n },\n size: {\n sm: \"h-7 px-2 text-xs\",\n md: \"h-9 px-3 py-1.5 text-sm\",\n lg: \"h-10 px-4 py-2 text-base\",\n },\n orientation: {\n horizontal: \"\",\n vertical: \"justify-start w-full text-left\"\n },\n fullWidth: {\n true: \"w-full\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n orientation: \"horizontal\",\n fullWidth: false\n }\n }\n);\n\ninterface TabsTriggerProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>,\n VariantProps<typeof tabsTriggerVariants> {\n /** İkon konumu */\n iconPosition?: \"left\" | \"right\" | \"none\";\n /** İkon */\n icon?: React.ReactNode;\n /** Badge içeriği */\n badge?: React.ReactNode;\n /** Aktif olmayan durumda yarı saydam */\n fadeTabs?: boolean;\n /** Dikey düzende göster */\n orientation?: \"horizontal\" | \"vertical\";\n}\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n TabsTriggerProps\n>(({ \n className, \n variant, \n size, \n icon, \n iconPosition = \"left\", \n badge,\n fadeTabs = false,\n orientation,\n fullWidth,\n children, \n ...props \n}, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n tabsTriggerVariants({ variant, size, orientation, fullWidth }),\n fadeTabs && \"data-[state=inactive]:opacity-60\",\n className\n )}\n {...props}\n >\n {icon && iconPosition === \"left\" && (\n <span className=\"mr-2\">{icon}</span>\n )}\n {children}\n {icon && iconPosition === \"right\" && (\n <span className=\"ml-2\">{icon}</span>\n )}\n {badge && (\n <span className=\"ml-2\">{badge}</span>\n )}\n </TabsPrimitive.Trigger>\n));\n\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsContent\n * -----------------------------------------------------------------------------------------------*/\ninterface TabsContentProps \n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content> {\n /** İçerik animasyonu */\n animated?: boolean;\n}\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n TabsContentProps\n>(({ className, animated = false, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n animated && \"data-[state=active]:animate-fadeIn data-[state=inactive]:animate-fadeOut\",\n className\n )}\n {...props}\n />\n));\n\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n // Enhanced props that shouldn't be passed to DOM\n variant?: \"default\" | \"outline\" | \"ghost\" | \"underline\"\n size?: \"sm\" | \"md\" | \"lg\"\n error?: boolean | string\n success?: boolean\n loading?: boolean\n autoResize?: boolean\n maxHeight?: number\n characterCount?: boolean\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ \n className, \n // Extract enhanced props to prevent them from being passed to DOM\n variant,\n size,\n error,\n success,\n loading,\n autoResize,\n maxHeight,\n characterCount,\n ...props \n }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea }","\"use client\";\n\nimport * as React from \"react\";\nimport * as ToastPrimitives from \"@radix-ui/react-toast\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst ToastProvider = ToastPrimitives.Provider;\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n className\n )}\n {...props}\n />\n));\nToastViewport.displayName = ToastPrimitives.Viewport.displayName;\n\nconst toastVariants = cva(\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-8 shadow-sm transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n {\n variants: {\n variant: {\n default: \"border bg-background text-foreground\",\n destructive:\n \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n success:\n \"border-green-200 bg-green-50 text-green-900 dark:border-green-800 dark:bg-green-900/20 dark:text-green-100\",\n warning:\n \"border-orange-200 bg-orange-50 text-orange-900 dark:border-orange-800 dark:bg-orange-900/20 dark:text-orange-100\",\n info:\n \"border-blue-200 bg-blue-50 text-blue-900 dark:border-blue-800 dark:bg-blue-900/20 dark:text-blue-100\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants>;\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>;\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Root>,\n ToastProps\n>(({ className, variant, ...props }, ref) => {\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n );\n});\nToast.displayName = ToastPrimitives.Root.displayName;\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n className\n )}\n {...props}\n />\n));\nToastAction.displayName = ToastPrimitives.Action.displayName;\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n \"absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n className\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"h-4 w-4\" />\n </ToastPrimitives.Close>\n));\nToastClose.displayName = ToastPrimitives.Close.displayName;\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn(\"text-sm font-semibold [&+div]:text-xs\", className)}\n {...props}\n />\n));\nToastTitle.displayName = ToastPrimitives.Title.displayName;\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"text-sm opacity-90\", className)}\n {...props}\n />\n));\nToastDescription.displayName = ToastPrimitives.Description.displayName;\n\ntype ToastData = {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n variant?: ToastProps[\"variant\"];\n duration?: number;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n};\n\nconst TOAST_LIMIT = 5;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype State = {\n toasts: ToastData[];\n};\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nconst reducer = (state: State, action: any): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\nlet toastCounter = 0;\n\nfunction dispatch(action: any) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToastData, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = `toast-${Date.now()}-${++toastCounter}`;\n\n const update = (props: ToastData) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open: boolean) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nfunction Toaster() {\n const { toasts } = useToast();\n\n return (\n <ToastProvider>\n {toasts.map(function ({ id, title, description, action, variant, open, onOpenChange, ...props }) {\n return (\n <Toast key={id} variant={variant} open={open} onOpenChange={onOpenChange} {...props}>\n <div className=\"grid gap-1\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && (\n <ToastDescription>{description}</ToastDescription>\n )}\n </div>\n {action}\n <ToastClose />\n </Toast>\n );\n })}\n <ToastViewport />\n </ToastProvider>\n );\n}\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastAction,\n ToastClose,\n Toaster,\n toast,\n useToast,\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-10 px-3\",\n sm: \"h-9 px-2.5\",\n lg: \"h-11 px-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ToggleProps extends React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root>, VariantProps<typeof toggleVariants> {}\n\nconst Toggle = React.forwardRef<\n React.ElementRef<typeof TogglePrimitive.Root>,\n ToggleProps\n>(({ className, variant, size, ...props }, ref) => (\n <TogglePrimitive.Root\n ref={ref}\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n))\n\nToggle.displayName = TogglePrimitive.Root.displayName\n\nexport { Toggle, toggleVariants }\nexport type { ToggleProps }","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { Primitive } from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * Toggle\n * -----------------------------------------------------------------------------------------------*/\n\nconst NAME = 'Toggle';\n\ntype ToggleElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface ToggleProps extends PrimitiveButtonProps {\n /**\n * The controlled state of the toggle.\n */\n pressed?: boolean;\n /**\n * The state of the toggle when initially rendered. Use `defaultPressed`\n * if you do not need to control the state of the toggle.\n * @defaultValue false\n */\n defaultPressed?: boolean;\n /**\n * The callback that fires when the state of the toggle changes.\n */\n onPressedChange?(pressed: boolean): void;\n}\n\nconst Toggle = React.forwardRef<ToggleElement, ToggleProps>((props, forwardedRef) => {\n const { pressed: pressedProp, defaultPressed, onPressedChange, ...buttonProps } = props;\n\n const [pressed, setPressed] = useControllableState({\n prop: pressedProp,\n onChange: onPressedChange,\n defaultProp: defaultPressed ?? false,\n caller: NAME,\n });\n\n return (\n <Primitive.button\n type=\"button\"\n aria-pressed={pressed}\n data-state={pressed ? 'on' : 'off'}\n data-disabled={props.disabled ? '' : undefined}\n {...buttonProps}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, () => {\n if (!props.disabled) {\n setPressed(!pressed);\n }\n })}\n />\n );\n});\n\nToggle.displayName = NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nconst Root = Toggle;\n\nexport {\n Toggle,\n //\n Root,\n};\nexport type { ToggleProps };\n","function composeEventHandlers<E extends { defaultPrevented: boolean }>(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n) {\n return function handleEvent(event: E) {\n originalEventHandler?.(event);\n\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\n\nexport { composeEventHandlers };\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// Prevent bundlers from trying to optimize the import\nconst useInsertionEffect: typeof useLayoutEffect =\n (React as any)[' useInsertionEffect '.trim().toString()] || useLayoutEffect;\n\ntype ChangeHandler<T> = (state: T) => void;\ntype SetStateFn<T> = React.Dispatch<React.SetStateAction<T>>;\n\ninterface UseControllableStateParams<T> {\n prop?: T | undefined;\n defaultProp: T;\n onChange?: ChangeHandler<T>;\n caller?: string;\n}\n\nexport function useControllableState<T>({\n prop,\n defaultProp,\n onChange = () => {},\n caller,\n}: UseControllableStateParams<T>): [T, SetStateFn<T>] {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange,\n });\n const isControlled = prop !== undefined;\n const value = isControlled ? prop : uncontrolledProp;\n\n // OK to disable conditionally calling hooks here because they will always run\n // consistently in the same environment. Bundlers should be able to remove the\n // code block entirely in production.\n /* eslint-disable react-hooks/rules-of-hooks */\n if (process.env.NODE_ENV !== 'production') {\n const isControlledRef = React.useRef(prop !== undefined);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? 'controlled' : 'uncontrolled';\n const to = isControlled ? 'controlled' : 'uncontrolled';\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n /* eslint-enable react-hooks/rules-of-hooks */\n\n const setValue = React.useCallback<SetStateFn<T>>(\n (nextValue) => {\n if (isControlled) {\n const value = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value !== prop) {\n onChangeRef.current?.(value);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n\n return [value, setValue];\n}\n\nfunction useUncontrolledState<T>({\n defaultProp,\n onChange,\n}: Omit<UseControllableStateParams<T>, 'prop'>): [\n Value: T,\n setValue: React.Dispatch<React.SetStateAction<T>>,\n OnChangeRef: React.RefObject<ChangeHandler<T> | undefined>,\n] {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n\n return [value, setValue, onChangeRef];\n}\n\nfunction isFunction(value: unknown): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n","import * as React from 'react';\nimport { useEffectEvent } from '@radix-ui/react-use-effect-event';\n\ntype ChangeHandler<T> = (state: T) => void;\n\ninterface UseControllableStateParams<T> {\n prop: T | undefined;\n defaultProp: T;\n onChange: ChangeHandler<T> | undefined;\n caller: string;\n}\n\ninterface AnyAction {\n type: string;\n}\n\nconst SYNC_STATE = Symbol('RADIX:SYNC_STATE');\n\ninterface SyncStateAction<T> {\n type: typeof SYNC_STATE;\n state: T;\n}\n\nexport function useControllableStateReducer<T, S extends {}, A extends AnyAction>(\n reducer: (prevState: S & { state: T }, action: A) => S & { state: T },\n userArgs: UseControllableStateParams<T>,\n initialState: S\n): [S & { state: T }, React.Dispatch<A>];\n\nexport function useControllableStateReducer<T, S extends {}, I, A extends AnyAction>(\n reducer: (prevState: S & { state: T }, action: A) => S & { state: T },\n userArgs: UseControllableStateParams<T>,\n initialArg: I,\n init: (i: I & { state: T }) => S\n): [S & { state: T }, React.Dispatch<A>];\n\nexport function useControllableStateReducer<T, S extends {}, A extends AnyAction>(\n reducer: (prevState: S & { state: T }, action: A) => S & { state: T },\n userArgs: UseControllableStateParams<T>,\n initialArg: any,\n init?: (i: any) => Omit<S, 'state'>\n): [S & { state: T }, React.Dispatch<A>] {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== undefined;\n\n const onChange = useEffectEvent(onChangeProp);\n\n // OK to disable conditionally calling hooks here because they will always run\n // consistently in the same environment. Bundlers should be able to remove the\n // code block entirely in production.\n /* eslint-disable react-hooks/rules-of-hooks */\n if (process.env.NODE_ENV !== 'production') {\n const isControlledRef = React.useRef(controlledState !== undefined);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? 'controlled' : 'uncontrolled';\n const to = isControlled ? 'controlled' : 'uncontrolled';\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n /* eslint-enable react-hooks/rules-of-hooks */\n\n type InternalState = S & { state: T };\n const args: [InternalState] = [{ ...initialArg, state: defaultProp }];\n if (init) {\n // @ts-expect-error\n args.push(init);\n }\n\n const [internalState, dispatch] = React.useReducer(\n (state: InternalState, action: A | SyncStateAction<T>): InternalState => {\n if (action.type === SYNC_STATE) {\n return { ...state, state: action.state };\n }\n\n const next = reducer(state, action);\n if (isControlled && !Object.is(next.state, state.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n\n const uncontrolledState = internalState.state;\n const prevValueRef = React.useRef(uncontrolledState);\n React.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n\n const state = React.useMemo(() => {\n const isControlled = controlledState !== undefined;\n if (isControlled) {\n return { ...internalState, state: controlledState };\n }\n\n return internalState;\n }, [internalState, controlledState]);\n\n React.useEffect(() => {\n // Sync internal state for controlled components so that reducer is called\n // with the correct state values\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n\n return [state, dispatch as React.Dispatch<A>];\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst tooltipVariants = cva(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground\",\n secondary: \"bg-secondary text-secondary-foreground\",\n success: \"bg-green-500 text-white border-green-600\",\n warning: \"bg-yellow-500 text-white border-yellow-600\",\n destructive: \"bg-destructive text-destructive-foreground\",\n info: \"bg-blue-500 text-white border-blue-600\",\n },\n size: {\n sm: \"px-2 py-1 text-xs\",\n md: \"px-3 py-1.5 text-sm\",\n lg: \"px-4 py-2 text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipArrow = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Arrow>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow>\n>(({ className, ...props }, ref) => (\n <TooltipPrimitive.Arrow\n ref={ref}\n className={cn(\"fill-current\", className)}\n {...props}\n />\n))\nTooltipArrow.displayName = TooltipPrimitive.Arrow.displayName\n\nexport interface TooltipContentProps\n extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>,\n VariantProps<typeof tooltipVariants> {\n showArrow?: boolean\n}\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n TooltipContentProps\n>(({ className, variant, size, showArrow = false, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(tooltipVariants({ variant, size }), className)}\n {...props}\n >\n {props.children}\n {showArrow && <TooltipArrow />}\n </TooltipPrimitive.Content>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\n// Simplified Tooltip component for easy usage\nexport interface SimpleTooltipProps {\n children: React.ReactElement\n content: React.ReactNode\n variant?: TooltipContentProps[\"variant\"]\n size?: TooltipContentProps[\"size\"]\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n align?: \"start\" | \"center\" | \"end\"\n delayDuration?: number\n skipDelayDuration?: number\n sideOffset?: number\n showArrow?: boolean\n className?: string\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n}\n\nconst SimpleTooltip = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n SimpleTooltipProps\n>(\n (\n {\n children,\n content,\n variant = \"default\",\n size = \"md\",\n side = \"top\",\n align = \"center\",\n delayDuration = 400,\n skipDelayDuration = 300,\n sideOffset = 4,\n showArrow = false,\n className,\n open,\n defaultOpen,\n onOpenChange,\n ...props\n },\n ref\n ) => {\n return (\n <Tooltip\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n delayDuration={delayDuration}\n skipDelayDuration={skipDelayDuration}\n >\n <TooltipTrigger asChild>{children}</TooltipTrigger>\n <TooltipContent\n ref={ref}\n side={side}\n align={align}\n variant={variant}\n size={size}\n sideOffset={sideOffset}\n showArrow={showArrow}\n className={className}\n {...props}\n >\n {content}\n </TooltipContent>\n </Tooltip>\n )\n }\n)\nSimpleTooltip.displayName = \"SimpleTooltip\"\n\nexport {\n Tooltip,\n TooltipProvider,\n TooltipTrigger,\n TooltipContent,\n TooltipArrow,\n SimpleTooltip,\n tooltipVariants,\n}"]}
|