* dbeaver/pro#5673 feat: add search panel component and integrate search functionality * dbeaver/pro#5673 feat: enhance search panel layout styles * dbeaver/pro#5673 feat: reactive search panel * dbeaver/pro#5673 refactor: separation of concerns * dbeaver/pro#5673 refactor: make outline thinner in search panel * dbeaver/pro#5673 feat: Add new SVG icons for match word, regex, and replace functionalities * dbeaver/pro#5673 feat: add Icon component with customizable properties and documentation * dbeaver/pro#5673 feat: update OrderButton and SearchPanel to use new Icon component * dbeaver/pro#5673 feat: refactor SearchPanel layout * dbeaver/pro#5673 refactor: remove redundant reexport * dbeaver/pro#5673 refactor: convert SearchPanel to a MobX observer component * dbeaver/pro#5673 refactor: remove unused searchOptions from IDefaultExtensions interface * dbeaver/pro#5673 refactor: use useImperativeHandle for focus handling To exclude the chance of manipulating input unexpectedly outside of the component. * dbeaver/pro#5673 refactor: adjust padding and margin in search panel styles * dbeaver/pro#5673 refactor: update SVG icon import to use react component * dbeaver/pro#5673 build: update dependencies in yarn.lock * dbeaver/pro#5673 fix: regexp * dbeaver/pro#5673 fix: correct translation for 'No found' to 'Not found' * dbeaver/pro#5673 refactor: remove extra regex check * dbeaver/pro#5673 refactor: fix styles * dbeaver/pro#5673 fix: swap arrow icons for find next and find previous buttons * dbeaver/pro#5673 fix: adjust flex-basis for search panel matches container * dbeaver/pro#5673 feat: add isReadOnly prop to SearchPanel * dbeaver/pro#5673 feat: add placeholder color variables for input fields --------- Co-authored-by: Alexey <wrouds@gmail.com> Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com> Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
DBeaver UI Kit
The DBeaver UI Kit is a collection of reusable React components designed to help developers build consistent and visually appealing user interfaces.
Using Ladle for Component Development
Ladle is a tool that allows you to develop, test, and document your React components in isolation. We use it to create a sandbox environment where you can interact with your components and ensure they work as expected.
To get started with Ladle in the DBeaver UI Kit, write in terminal:
yarn docs
Then open the provided URL to see components.
How to Customize
DBeaver UI Kit components have basic styles and use some defaults from Tailwind CSS. To change styling, you can use different approaches.
Global CSS Tokens
The UI kit uses several global CSS tokens described on the Global Tokens page. These tokens help maintain consistency across the UI components. All DBeaver UI tokens are prefixed with --dbv-kit-. You can use these tokens to customize the UI kit to fit your application's design. For example, changing the --dbv-kit-font-size-base token will change the base font size for text in the UI kit. Changing the --dbv-kit-control-height-base token will change all control heights. If you don't want to change all controls, you can change --dbv-kit-control-height-small, --dbv-kit-control-height-medium, or other tokens separately. They will affect only specific components.
Component CSS Tokens
Some components have their own tokens. For example, the Button component has tokens for button sizes, padding, and colors. You can change these tokens to customize the Button component. To see the list of tokens, go to sources or start Ladle.
Component CSS Classes
Each component in the UI kit has a default CSS class name following the dbv-kit-[component name(in lowercase)] naming convention that you can use to customize the component. You can find the default class name in the component's documentation.
For button:
.dbv-kit-button {
/* Your custom styles */
}
For input:
.dbv-kit-input {
/* Your custom styles */
}
Some components have additional classes for different states or sizes. For example, the Button component has classes for different sizes: .dbv-kit-button--small, .dbv-kit-button--large. We use the BEM convention for class names. If a component has a modifier, it will be separated by two dashes. If a component has a child element, it will be separated by two underscores, for example:
.dbv-kit-button__icon- icon is a child element of the button.dbv-kit-button--large- large is a size modifier.dbv-kit-button__icon--start- icon is a child element of the button and has a start placement
Each component accepts the standard className and style props which enable using vanilla CSS, utility classes (e.g., Tailwind), CSS-in-JS (e.g., Styled Components), etc. A custom className can be specified and will be appended to a class list of a component:
<Button className="my-custom-button">Button</Button>
<Button style={{ background: 'red' }}>Button</Button>