# Frontend Style Guide Generally we follow the Airbnb [React Style Guide](https://github.com/airbnb/javascript/tree/master/react). ## Table of Contents 1. [Basic Rules](#basic-rules) 1. [File & Component Organization](#Organization) 1. [Naming](#naming) 1. [Declaration](#declaration) 1. [Props](#props) 1. [Refs](#refs) 1. [Methods](#methods) 1. [Ordering](#ordering) ## Basic rules * Try to keep files small and focused and break large components up into sub components. ## Organization * Components and types that needs to be used by external plugins needs to go into @grafana/ui * Components should get their own folder under features/xxx/components * Sub components can live in that component folders, so not small component needs their own folder * Place test next to their component file (same dir) * Mocks in __mocks__ dir * Test utils in __tests__ dir * Component sass should live in the same folder as component code * State logic & domain models should live in features/xxx/state * Containers (pages) can live in feature root features/xxx * up for debate? ## Props * Name callback props & handlers with a "on" prefix. ```tsx // good onChange = () => { }; render() { return ( ); } // bad handleChange = () => { }; render() { return ( ); } ```