diff --git a/README.md b/README.md
index fc975fda..0345493a 100644
--- a/README.md
+++ b/README.md
@@ -136,7 +136,7 @@ DevExtreme bileşenleri bu metadata'ya göre kendini kurar.
| Form | Formik + Yup, DevExtreme Form |
| Kod editörü | Monaco Editor |
| Runtime derleme | @babel/standalone (Custom Component) |
-| Takvim/Gantt | FullCalendar, DevExtreme Scheduler/Gantt |
+| Takvim/Gantt | DevExtreme Scheduler/Gantt |
| Gerçek zamanlı | @microsoft/signalr |
| PWA | vite-plugin-pwa (Workbox) |
| Node | 24.13 / npm 11 (`volta` ile sabitlenmiş) |
diff --git a/ui/src/assets/styles/app.css b/ui/src/assets/styles/app.css
index 15db559b..246f023e 100644
--- a/ui/src/assets/styles/app.css
+++ b/ui/src/assets/styles/app.css
@@ -1,4 +1,3 @@
@import './components/index.css';
@import './template/index.css';
-@import './vendors/index.css';
@import './tailwind/index.css';
diff --git a/ui/src/assets/styles/vendors/_full-calendar.css b/ui/src/assets/styles/vendors/_full-calendar.css
deleted file mode 100644
index ae573e22..00000000
--- a/ui/src/assets/styles/vendors/_full-calendar.css
+++ /dev/null
@@ -1,152 +0,0 @@
-.calendar {
- @apply h-full;
-
- .fc {
- @apply h-full;
- }
-
- .fc-theme-standard .fc-scrollgrid {
- @apply border-0;
- }
-
- .fc-theme-standard td,
- .fc-theme-standard th {
- @apply border-gray-200 dark:border-gray-600;
-
- &:last-child {
- border-right: 0;
- }
- }
-
- .fc .fc-col-header-cell-cushion {
- @apply text-gray-900 dark:text-gray-100 py-3;
- }
-
- .fc-col-header-cell {
- border-width: 0px 0px 1px;
- }
-
- .fc .fc-daygrid-day-number {
- @apply font-semibold p-2;
- }
-
- .fc-view {
- @apply rounded-lg border border-gray-200 dark:border-gray-600 bg-white dark:bg-gray-800;
- }
-
- .fc-daygrid-dot-event .fc-event-title {
- @apply text-gray-900 dark:text-gray-100;
- }
-
- .fc .fc-button {
- @apply rounded-md py-2;
- }
-
- .fc .fc-toolbar {
- @apply lg:flex-row flex-col items-start lg:items-center gap-2;
- }
-
- .fc .fc-button-primary {
- @apply bg-white border border-gray-300 dark:bg-gray-700 dark:border-gray-700 text-gray-600 dark:text-gray-100 font-semibold;
-
- &:focus {
- @apply shadow-none;
- }
-
- &:hover {
- @apply hover:bg-gray-50 dark:hover:bg-gray-600 hover:border-gray-300 dark:hover:border-gray-700 hover:text-gray-900 hover:dark:text-gray-100;
- }
-
- &:disabled {
- @apply cursor-not-allowed bg-white border border-gray-300 dark:bg-gray-700 dark:border-gray-700 text-gray-600 dark:text-gray-100;
-
- &:hover {
- @apply bg-white border border-gray-300 dark:bg-gray-700 dark:border-gray-700 text-gray-600 dark:text-gray-100;
- }
- }
- }
-
- .fc .fc-button-primary:not(:disabled):active:focus,
- .fc .fc-button-primary:not(:disabled).fc-button-active:focus {
- @apply shadow-none;
- }
-
- .fc .fc-button-primary:not(:disabled):active,
- .fc .fc-button-primary:not(:disabled).fc-button-active {
- @apply bg-gray-100 border border-gray-300 dark:bg-gray-500 dark:border-gray-500 text-gray-600 dark:text-gray-100;
- }
-
- .fc {
- .fc-dayGridMonth-button,
- .fc-timeGridDay-button,
- .fc-timeGridWeek-button,
- .fc-today-button {
- @apply px-8 capitalize;
- }
- }
-
- .fc .fc-highlight {
- @apply bg-transparent;
- }
-
- .fc-daygrid-dot-event:hover,
- .fc-daygrid-dot-event.fc-event-mirror {
- @apply bg-transparent;
- }
-
- .fc .fc-daygrid-event {
- @apply p-0 rounded-md mb-2;
- }
-
- .fc-h-event {
- @apply bg-transparent border-0;
- }
-
- .fc-event-selected,
- .fc-event:focus {
- @apply shadow-none;
-
- &:after {
- @apply bg-transparent;
- }
- }
-
- .fc .fc-cell-shaded,
- .fc .fc-day-disabled {
- @apply bg-gray-200 dark:bg-gray-500;
- }
-
- .fc-daygrid-bg-harness {
- .fc-highlight {
- @apply bg-gray-100 dark:bg-gray-700;
- }
- }
-
- .fc-daygrid-event {
- @apply text-xs;
- }
-
- .fc .custom-calendar-event {
- @apply flex items-center min-h-[28px] p-1.5 rounded-md w-full overflow-hidden text-ellipsis h-full;
- }
-
- .fc-v-event {
- @apply border-0 bg-transparent;
- }
-
- .fc .fc-scrollgrid-section table {
- @apply !w-full;
- }
-
- .fc .fc-daygrid-body {
- @apply !w-full;
- }
-
- .fc-direction-ltr .fc-toolbar > * > :not(:first-child) {
- @apply mx-0;
- }
-
- .fc-toolbar-chunk {
- @apply flex flex-col sm:flex-row gap-2 w-full sm:w-auto;
- }
-}
diff --git a/ui/src/assets/styles/vendors/index.css b/ui/src/assets/styles/vendors/index.css
deleted file mode 100644
index c75986c9..00000000
--- a/ui/src/assets/styles/vendors/index.css
+++ /dev/null
@@ -1 +0,0 @@
-@import './_full-calendar.css';
diff --git a/ui/src/components/template/Header.tsx b/ui/src/components/template/Header.tsx
index 1ab1c027..3711f839 100644
--- a/ui/src/components/template/Header.tsx
+++ b/ui/src/components/template/Header.tsx
@@ -1,5 +1,4 @@
import classNames from 'classnames'
-import { HEADER_HEIGHT_CLASS } from '@/constants/theme.constant'
import type { ReactNode } from 'react'
import type { CommonProps } from '@/proxy/common'
diff --git a/ui/src/components/template/LanguageSelector.tsx b/ui/src/components/template/LanguageSelector.tsx
index e2f7b0b0..c428a9d3 100644
--- a/ui/src/components/template/LanguageSelector.tsx
+++ b/ui/src/components/template/LanguageSelector.tsx
@@ -8,7 +8,6 @@ import { useStoreState, useStoreActions } from '@/store'
import { FaCheck } from 'react-icons/fa'
import type { CommonProps } from '@/proxy/common'
import appConfig from '@/proxy/configs/app.config'
-import { useLocalization } from '@/utils/hooks/useLocalization'
const _LanguageSelector = ({ className }: CommonProps) => {
const [loading, setLoading] = useState(false)
@@ -22,8 +21,6 @@ const _LanguageSelector = ({ className }: CommonProps) => {
return languageList?.find((lang) => lang.cultureName === currentLang)?.cultureName
}, [currentLang, languageList])
- const { translate } = useLocalization()
-
const selectedLanguage = (
{loading ? (
diff --git a/ui/src/components/template/Search.tsx b/ui/src/components/template/Search.tsx
index 84fb9059..39bffd0f 100644
--- a/ui/src/components/template/Search.tsx
+++ b/ui/src/components/template/Search.tsx
@@ -37,7 +37,7 @@ const ListItem = (props: {
keyWord: string
onNavigate: () => void
}) => {
- const { icon, label, url = '', isLast, keyWord, onNavigate } = props
+ const { label, url = '', isLast, keyWord, onNavigate } = props
const { textTheme } = useThemeClass()
diff --git a/ui/src/components/template/StackedSideNav/StackedSideNavSecondary.tsx b/ui/src/components/template/StackedSideNav/StackedSideNavSecondary.tsx
index 85e23ba6..782d98e0 100644
--- a/ui/src/components/template/StackedSideNav/StackedSideNavSecondary.tsx
+++ b/ui/src/components/template/StackedSideNav/StackedSideNavSecondary.tsx
@@ -1,7 +1,7 @@
import Button from '@/components/ui/Button'
import ScrollBar from '@/components/ui/ScrollBar'
import classNames from 'classnames'
-import { HEADER_HEIGHT_CLASS, DIR_LTR, DIR_RTL } from '@/constants/theme.constant'
+import { DIR_LTR, DIR_RTL } from '@/constants/theme.constant'
import VerticalMenuContent from '@/components/template/VerticalMenuContent'
import { FaArrowLeft, FaArrowRight } from 'react-icons/fa'
import type { NavigationTree } from '@/proxy/menus/navigation'
diff --git a/ui/src/components/template/ThemeConfigurator/LayoutSwitcher.tsx b/ui/src/components/template/ThemeConfigurator/LayoutSwitcher.tsx
index c59937f6..c9c5e1bd 100644
--- a/ui/src/components/template/ThemeConfigurator/LayoutSwitcher.tsx
+++ b/ui/src/components/template/ThemeConfigurator/LayoutSwitcher.tsx
@@ -12,7 +12,6 @@ import {
LAYOUT_TYPE_SIMPLE,
LAYOUT_TYPE_DECKED,
LAYOUT_TYPE_BLANK,
- NAV_MODE_TRANSPARENT,
} from '@/constants/theme.constant'
import type { LayoutType } from '@/proxy/theme/models'
import { useLocalization } from '@/utils/hooks/useLocalization'
@@ -58,7 +57,7 @@ const layouts = [
const LayoutSwitcher = () => {
const type = useStoreState((state) => state.theme.layout.type)
- const { setLayout, setNavMode } = useStoreActions((actions) => actions.theme)
+ const { setLayout } = useStoreActions((actions) => actions.theme)
const onLayoutSelect = (val: LayoutType) => {
setLayout(val)
diff --git a/ui/src/components/ui/AutoComplete/AutoComplete.tsx b/ui/src/components/ui/AutoComplete/AutoComplete.tsx
index d8981606..433a09dd 100644
--- a/ui/src/components/ui/AutoComplete/AutoComplete.tsx
+++ b/ui/src/components/ui/AutoComplete/AutoComplete.tsx
@@ -112,7 +112,7 @@ const AutoComplete = forwardRef((props, ref
clearable = true,
name,
field,
- form,
+ form: _form,
minChars = 1,
...rest
} = props
diff --git a/ui/src/components/ui/Chips/Chips.tsx b/ui/src/components/ui/Chips/Chips.tsx
index f57a703c..0aec50b3 100644
--- a/ui/src/components/ui/Chips/Chips.tsx
+++ b/ui/src/components/ui/Chips/Chips.tsx
@@ -70,7 +70,7 @@ const Chips = forwardRef((props, ref) => {
onRemove,
name,
field,
- form,
+ form: _form,
...rest
} = props
diff --git a/ui/src/components/ui/Knob/Knob.tsx b/ui/src/components/ui/Knob/Knob.tsx
index 474e7b27..eb14ae69 100644
--- a/ui/src/components/ui/Knob/Knob.tsx
+++ b/ui/src/components/ui/Knob/Knob.tsx
@@ -118,10 +118,6 @@ const Knob = forwardRef((props, ref) => {
const fullArcLength = (KNOB_RANGE / 360) * circumference
// Çember yayını SVG stroke-dashoffset ile çiziyoruz
- // SVG default: 0 derece = sağ (3 saat), CW pozitif
- // Bizim 0 = üst → rotate(-90) + açı offset
- const startAngleRad = ((KNOB_START_ANGLE - 90) * Math.PI) / 180
-
const resolveValueColor = () =>
valueColor ?? `var(--color-${themeColor}-${primaryColorLevel}, #6366f1)`
const resolveRangeColor = () => rangeColor ?? `currentColor`
diff --git a/ui/src/components/ui/Menu/MenuCollapse.tsx b/ui/src/components/ui/Menu/MenuCollapse.tsx
index d5eac015..2ca8783d 100644
--- a/ui/src/components/ui/Menu/MenuCollapse.tsx
+++ b/ui/src/components/ui/Menu/MenuCollapse.tsx
@@ -20,7 +20,7 @@ const MenuCollapse = (props: MenuCollapseProps) => {
const [isExpanded, setIsExpanded] = useState(expanded)
- const { menuItemHeight, variant, sideCollapsed, defaultExpandedKeys } = useContext(MenuContext)
+ const { variant, sideCollapsed, defaultExpandedKeys } = useContext(MenuContext)
const { direction } = useConfig()
diff --git a/ui/src/components/ui/Tooltip/Tooltip.tsx b/ui/src/components/ui/Tooltip/Tooltip.tsx
index 1a798b81..92d11d5b 100644
--- a/ui/src/components/ui/Tooltip/Tooltip.tsx
+++ b/ui/src/components/ui/Tooltip/Tooltip.tsx
@@ -37,7 +37,6 @@ const Tooltip = (props: TooltipProps) => {
placement = 'top',
title,
wrapperClass,
- ...rest
} = props
const [tooltipOpen, setTooltipOpen] = useState(isOpen)
diff --git a/ui/src/components/ui/Widget/WidgetGroup.tsx b/ui/src/components/ui/Widget/WidgetGroup.tsx
index bbabc30f..554f240c 100644
--- a/ui/src/components/ui/Widget/WidgetGroup.tsx
+++ b/ui/src/components/ui/Widget/WidgetGroup.tsx
@@ -1,11 +1,9 @@
import classNames from 'classnames'
import Widget, { type colorType } from './Widget'
import { WidgetEditDto, WidgetGroupDto } from '@/proxy/form/models'
-import { useNavigate } from 'react-router-dom'
import { useLocalization } from '@/utils/hooks/useLocalization'
export default function WidgetGroup({ widgetGroups }: { widgetGroups: WidgetGroupDto[] }) {
- const navigate = useNavigate()
const { translate } = useLocalization()
// Sorgudan gelen basliklar dil anahtaridir; karsiligi yoksa translate metni aynen dondurur,
@@ -54,4 +52,3 @@ export default function WidgetGroup({ widgetGroups }: { widgetGroups: WidgetGrou
)
}
-
diff --git a/ui/src/proxy/admin/charts/models.ts b/ui/src/proxy/admin/charts/models.ts
index 4b37a982..288216ef 100644
--- a/ui/src/proxy/admin/charts/models.ts
+++ b/ui/src/proxy/admin/charts/models.ts
@@ -1,5 +1,4 @@
-import { AuditedEntityDto } from '@/proxy/abp'
-import { PermissionCrudDto, SummaryTypeEnum } from '@/proxy/form/models'
+import { SummaryTypeEnum } from '@/proxy/form/models'
export interface BreakDto {
endValue: number
diff --git a/ui/src/proxy/services/models.ts b/ui/src/proxy/services/models.ts
deleted file mode 100644
index af80ca11..00000000
--- a/ui/src/proxy/services/models.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-export type ItemType = 'service' | 'support'
-
-export interface Service {
- tenantId?: string
- icon?: string
- title: string
- description?: string
- type: ItemType
- features: string[]
-}
-
-export interface ServiceDto {
- tenantId?: string
- icon?: string
- title: string
- description?: string
- type: ItemType
- features: string[]
-}
diff --git a/ui/src/views/admin/listForm/edit/json-row-operations/editor-options/optionSpecs.ts b/ui/src/views/admin/listForm/edit/json-row-operations/editor-options/optionSpecs.ts
index 757daa9d..f9ea3eee 100644
--- a/ui/src/views/admin/listForm/edit/json-row-operations/editor-options/optionSpecs.ts
+++ b/ui/src/views/admin/listForm/edit/json-row-operations/editor-options/optionSpecs.ts
@@ -139,9 +139,6 @@ const DATE_EDITORS = ['dxDateBox', 'dxCalendar', 'dxDateRangeBox']
const IMAGE_EDITORS = ['dxImageUpload', 'dxImageViewer']
const SLIDER_EDITORS = ['dxSlider', 'dxRangeSlider']
-/** Metin girişi olmayan editörlerde placeholder/mask alanlarını gizlemek için. */
-const NON_INPUT_EDITORS = ['dxCheckBox', 'dxSwitch', 'dxRadioGroup', ...SLIDER_EDITORS]
-
/* ------------------------------------------------------------------ *
* Ayar sözlüğü
* ------------------------------------------------------------------ */
diff --git a/ui/src/views/admin/organization-unit/OrganizationUnits.tsx b/ui/src/views/admin/organization-unit/OrganizationUnits.tsx
index 2f0c6674..d5d89fb3 100644
--- a/ui/src/views/admin/organization-unit/OrganizationUnits.tsx
+++ b/ui/src/views/admin/organization-unit/OrganizationUnits.tsx
@@ -250,23 +250,6 @@ const OrganizationUnits = () => {
setDialogItem(undefined)
}
- const onDropdownItemClick = (node: NodeApi, eventKey: string) => {
- if (eventKey == 'edit') {
- setDialogItem({
- id: node.data.id,
- displayName: node.data.name,
- parentId: node.parent?.isRoot ? undefined : node.parent?.data.id,
- })
- } else if (eventKey == 'add-sub-unit') {
- setDialogItem({
- displayName: '',
- parentId: node.data.id,
- })
- } else if (eventKey == 'delete') {
- setDeleteRow({ id: node.data.id, name: 'Organization Unit' })
- }
- }
-
const onSelect = async (nodes: NodeApi[]) => {
if (nodes.length === 0) {
setActiveOu(undefined)
diff --git a/ui/src/views/auth/Login.tsx b/ui/src/views/auth/Login.tsx
index b8afc4c1..e9fa6d6a 100644
--- a/ui/src/views/auth/Login.tsx
+++ b/ui/src/views/auth/Login.tsx
@@ -10,7 +10,7 @@ import { FormContainer, FormItem } from '@/components/ui/Form'
import Input from '@/components/ui/Input'
import PlatformLoginResultType from '@/constants/login.result.enum'
import { ROUTES_ENUM } from '@/routes/route.constant'
-import { useStoreActions, useStoreState } from '@/store'
+import { useStoreActions } from '@/store'
import useAuth from '@/utils/hooks/useAuth'
import { useLocalization } from '@/utils/hooks/useLocalization'
import useTimeOutMessage from '@/utils/hooks/useTimeOutMessage'
diff --git a/ui/src/views/developerKit/sqlViewDesigner/CriteriaGrid.tsx b/ui/src/views/developerKit/sqlViewDesigner/CriteriaGrid.tsx
index 6e2673ea..26b76f2e 100644
--- a/ui/src/views/developerKit/sqlViewDesigner/CriteriaGrid.tsx
+++ b/ui/src/views/developerKit/sqlViewDesigner/CriteriaGrid.tsx
@@ -17,7 +17,6 @@ import {
orColumnCount,
quoteLiteral,
type CriteriaRow,
- type GroupMode,
type ViewSource,
} from './viewModel'
diff --git a/ui/src/views/list/SchedulerView.tsx b/ui/src/views/list/SchedulerView.tsx
index 56b38abe..b1a595d8 100644
--- a/ui/src/views/list/SchedulerView.tsx
+++ b/ui/src/views/list/SchedulerView.tsx
@@ -53,7 +53,7 @@ interface SchedulerViewProps {
}
const SchedulerView = (props: SchedulerViewProps) => {
- const { listFormCode, searchParams, isSubForm, level, gridDto: extGridDto } = props
+ const { listFormCode, searchParams, isSubForm, gridDto: extGridDto } = props
const { translate } = useLocalization()
const isPwaMode = usePWA()
const useMobileEditPopup = shouldUseMobileEditPopup()
diff --git a/ui/src/views/list/TodoBoard.tsx b/ui/src/views/list/TodoBoard.tsx
index 86bf0a84..e5741811 100644
--- a/ui/src/views/list/TodoBoard.tsx
+++ b/ui/src/views/list/TodoBoard.tsx
@@ -206,7 +206,7 @@ const priorityLabel = (
}
const TodoBoard = (props: TodoBoardProps) => {
- const { listFormCode, searchParams, isSubForm, gridDto: extGridDto } = props
+ const { listFormCode, gridDto: extGridDto } = props
// Alt form olarak açıldığında tanım dışarıdan gelmez; kendisi yükler.
const gridDto = useListFormGridDto(listFormCode, extGridDto)
diff --git a/ui/src/views/public/Blog.tsx b/ui/src/views/public/Blog.tsx
index 36285422..1b9b8ab5 100644
--- a/ui/src/views/public/Blog.tsx
+++ b/ui/src/views/public/Blog.tsx
@@ -92,13 +92,6 @@ const Blog: React.FC = () => {
setCurrentPage(1)
}
- const categoryButtonClass = (isActive: boolean) =>
- `px-4 py-2 text-sm font-medium rounded-lg transition-colors ${
- isActive
- ? 'bg-blue-600 text-white hover:bg-blue-700 dark:bg-blue-900 dark:hover:bg-blue-800'
- : 'bg-gray-200 text-gray-700 hover:bg-gray-300 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700'
- }`
-
if (loading && posts.length === 0) {
return
}