diff --git a/docs/http-api.rst b/docs/http-api.rst
index 215558f3..49023dd6 100644
--- a/docs/http-api.rst
+++ b/docs/http-api.rst
@@ -211,10 +211,14 @@ buttons for ``exclusive``/``threshold``, a single checkbox for ``boolean``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
What this instance accepts for a new point: the fields of its location model (all of them
-except the server-assigned ``uuid``), the allowed values per category, the reportable
-issue types, and the photo limits. This is how a client learns what to put in
-``/api/suggest-new-point``'s ``location`` payload rather than assuming — it is the same
-schema the built-in suggest form is generated from.
+except the server-assigned ``uuid``), the reportable issue types, and the photo limits.
+This is how a client learns what to put in ``/api/suggest-new-point``'s ``location``
+payload rather than assuming — it is the same schema the built-in suggest form is
+generated from.
+
+A field's own allowed values are part of its schema, reported as ``enum_items``. For the
+same values with translated labels, ready to render a filter panel, use
+``/api/categories-full`` above.
``GET /api/languages``
~~~~~~~~~~~~~~~~~~~~~~
diff --git a/frontend/.eslintrc.json b/frontend/.eslintrc.json
index 26e4203e..b9d45efa 100644
--- a/frontend/.eslintrc.json
+++ b/frontend/.eslintrc.json
@@ -4,7 +4,8 @@
"plugin:react/recommended",
"plugin:prettier/recommended",
"airbnb",
- "prettier"],
+ "prettier",
+ "plugin:react-hooks/recommended"],
"plugins": ["react", "prettier", "eslint-plugin-react", "eslint-plugin-react-hooks"],
"parser": "@babel/eslint-parser",
"parserOptions": {
diff --git a/frontend/src/components/Categories/CategoriesContext.jsx b/frontend/src/components/Categories/CategoriesContext.jsx
deleted file mode 100644
index 624bbce4..00000000
--- a/frontend/src/components/Categories/CategoriesContext.jsx
+++ /dev/null
@@ -1,97 +0,0 @@
-import React, { useState, useContext, createContext, useMemo, useEffect, useCallback } from 'react';
-import PropTypes from 'prop-types';
-import httpService from '../../services/http/httpService';
-
-/**
- * React Context for managing categories state across the application.
- * Provides categories data and setter function to all child components.
- */
-const CategoriesContext = createContext();
-CategoriesContext.displayName = 'CategoriesContext';
-
-/**
- * Provider component that wraps the application to provide categories context.
- * Fetches the category definitions once and shares them, alongside the currently
- * selected filter values, with every child component.
- *
- * @param {Object} props - Component props
- * @param {React.ReactNode} props.children - Child components that will have access to categories context
- * @returns {React.ReactElement} Context provider with categories state
- */
-export const CategoriesProvider = ({ children }) => {
- const [categories, setCategories] = useState({});
- const [isInitialized, setIsInitialized] = useState(false);
- const [categoriesData, setCategoriesData] = useState([]);
- const [isLoading, setIsLoading] = useState(true);
- const [hasError, setHasError] = useState(false);
-
- const fetchCategories = useCallback(async () => {
- setIsLoading(true);
- setHasError(false);
- try {
- const { categories: fetchedCategories, defaultChecked } =
- await httpService.getCategoriesData();
- setCategoriesData(fetchedCategories);
- if (Object.keys(defaultChecked).length > 0) {
- setCategories(defaultChecked);
- }
- setIsInitialized(true);
- } catch (error) {
- console.error('Failed to load categories:', error);
- // Establish an explicit fallback (no filters) instead of silently
- // signaling initialization with unknown/missing category data.
- setCategoriesData([]);
- setHasError(true);
- } finally {
- setIsLoading(false);
- }
- }, []);
-
- useEffect(() => {
- fetchCategories();
- }, [fetchCategories]);
-
- const value = useMemo(
- () => ({
- categories,
- setCategories,
- isInitialized,
- setIsInitialized,
- categoriesData,
- isLoading,
- hasError,
- refetchCategories: fetchCategories,
- }),
- [categories, isInitialized, categoriesData, isLoading, hasError, fetchCategories],
- );
-
- return