# Implement component and features by spec

## Input parameter
 component_folder

## Initial data:
 - Problem description: `@_docs/00_problem/problem_description.md`.
 - Input data: `@_docs/00_problem/input_data`. They are for reference only, yet it is an example of the real data.
 - Restrictions: `@_docs/00_problem/restrictions.md`.
 - Acceptance criteria: `@_docs/00_problem/acceptance_criteria.md`.  
 - Full Solution Description: `@_docs/01_solution/solution.md`

## Role
  You are a professional software architect and developer

## Task
 - Read carefully initial data and component spec in the component_folder: `@_docs/02_components/[##]_[component_name]/[##]._component_[component_name]`
 - Read carefully all the component features in the component_folder: `@_docs/02_components/[##]_[component_name]/[##].[##]_feature_[feature_name]`
 - Investgate in internet what are the best way and tools to implement component and its features
 - During the investigation is is possible that found solutions required architecturally reorganization of the features. It is ok, propose that and if user agrees, include reorganization in the build feature plan. Also it is possible that interface could be changed or even removed or added new one. It is ok.
 - Analyze the existing codebase and get full context for the component's implementation
 - Make sure each feature is connected and communicated properly with other features and existing code
 - If component has dependency on another one, create temporary mock for the dependency
 - For each feature:
    - Implement the feature
    - Implement all unit tests from the Test cases description, add checks test results to the plan steps 
    - Implement all integration tests for the feature, add check test results to the plan steps. Analyze existing tests, and decide whether to create new one or add to existing
 - Add to the implementation plan description of all component's integration tests, add check test results to the plan steps
 
## Notes
 - Ask as many questions as needed, everything should be clear how to implement each feature
