PromucFlow_constructor/app/client/src/index.css
Abhinav Jha e05313c943
feat: Anvil themeing and Anvil vertical alignment (#29907)
## Description
This PR adds the features of proper vertical alignment and themeing to
Anvil.
- A separate `Container` component is created for Anvil, that is used as
the layer on top of which the themeing tokens are applied.
- A default `min-height` is set using tokens for all widgets in Anvil. 
- Anvil now stops considering any `min-height` configurations provided
by the widgets. It is the widgets responsibility to take care of their
own heights, and Anvil will accommodate them -- no matter the height.
- Table widget's default height is now set to the min height that was
configured for it earlier.
- `AnvilFlexComponent` now has `overflow:visible` to allow the shadows
for zones and sections to not be cut-off.
- All widgets are aligned center vertically by default. This will apply
if they're smaller than the set `min-height`
- Zones and Sections have elevation styles applied suing the `Container`
component mentioned above.
- Zones and Sections don't have any styling property other than
`Background`, we'll add more as we understand more about the product.
   

> Conditional vertical margin applied to widgets.
> If in a row of widgets (.aligned-widget-row), one of the widgets has a
label ([data-field-label-wrapper]), then
> all widgets (.anvil-widget-wrapper) in the row other than the widget
with the label, will shift down using the
> margin-block-start property. This is to ensure that the widgets are
aligned vertically.
> The value of the margin-block-start property is calculated based on
the spacing tokens used by the labels in input
>     like components
> 

#### PR fixes following issue(s)
Fixes #29073 
Fixes #28591
Fixes #28592 
Fixes #28593


#### Media
![Screenshot 2023-12-28 at 3 55
05 AM](https://github.com/appsmithorg/appsmith/assets/103687/30b04bc7-62af-40af-9f4c-50774bec3fdf)


#### Type of change
- New feature (non-breaking change which adds functionality)
## Testing
#### How Has This Been Tested?
- [x] Manual
- [ ] JUnit
- [ ] Jest
- [ ] Cypress

#### Test Plan

#### Issues raised during DP testing
## Checklist:
#### Dev activity
- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag


#### QA activity:
- [ ] [Speedbreak
features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-)
have been covered
- [ ] Test plan covers all impacted features and [areas of
interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-)
- [ ] Test plan has been peer reviewed by project stakeholders and other
QA members
- [ ] Manually tested functionality on DP
- [ ] We had an implementation alignment call with stakeholders post QA
Round 2
- [ ] Cypress test cases have been added and approved by SDET/manual QA
- [ ] Added `Test Plan Approved` label after Cypress tests were reviewed
- [ ] Added `Test Plan Approved` label after JUnit tests were reviewed


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Introduced conditional vertical margins for widgets to ensure
alignment within rows.
- Added a new `Container` component for thematic elevation styles in
Anvil widgets.
- Implemented elevation style options and semantic background settings
for Section and Zone widgets.

- **Enhancements**
- Improved visual layout and alignment of AnvilFlexComponent with
updated styling properties.
- Added `className` properties to various layout components for enhanced
CSS targeting.

- **Style**
- Updated widget styles to accommodate new background and elevation
features.

- **Refactor**
	- Simplified padding logic in WDSParagraphWidget.
	- Streamlined dimensions calculation in WDSTableWidget.

- **Documentation**
- Renamed sections in property panes to better reflect background
styling options.

- **Chores**
- Added `Elevations` enum to manage elevation values consistently across
components.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2023-12-29 08:41:05 +05:30

263 lines
5.8 KiB
CSS
Executable File

@import "~normalize.css";
@import "~@blueprintjs/core/lib/css/blueprint.css";
@import "~@blueprintjs/icons/lib/css/blueprint-icons.css";
@import "~design-system-old/build/css/design-system-old.css";
@import "~design-system/build/css/design-system.css";
@import "theme/colors.css";
@import "theme/defaultTheme.css";
@import "theme/wds.css";
@import "assets/fonts/custom/index.css";
@import "assets/fonts/google/index.css";
:root {
/* TODO: This needs to be fixed! This override is to maintain branding changes. */
--ads-color-background-secondary: var(--ads-v2-color-bg-subtle);
}
body {
margin: 0;
padding: 0;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
background-color: #fff !important;
color: var(--ads-v2-color-fg);
}
body.dragging * {
cursor: grabbing !important;
}
/**
Disable outline completely from all components
*/
:focus,
:focus-visible {
outline: none !important;
outline-offset: 0 !important;
}
/**
Disable outline for adsv2 select component
*/
.ads-v2-select.rc-select-focused {
outline: none !important;
outline-offset: 0 !important;
}
#root.overlay {
opacity: 0;
pointer-events: none;
}
code {
font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
monospace;
}
div.bp3-select-popover .bp3-popover-content {
padding: 0;
}
span.bp3-popover-target {
display: flex;
width: 100%;
}
span.bp3-popover-target > * {
flex-grow: 1;
}
.bp3-popover,
.bp3-popover2 {
box-shadow: var(--ads-v2-shadow-popovers) !important;
}
.bp3-popover2-content {
border-radius: var(--ads-v2-border-radius) !important;
}
.action-selector-popup {
background-color: var(--ads-v2-color-bg);
border-radius: var(--ads-v2-border-radius) !important;
border: 1px solid var(--ads-v2-color-border-muted) !important;
}
.action-selector-popup span.bp3-popover-target > * {
max-width: 100%;
}
add-action.disabled span {
cursor: not-allowed;
}
.action-selector-popup .bp3-button-text {
text-overflow: ellipsis;
overflow: hidden;
min-width: 0;
}
/**
action selector block styles
**/
.bp3-submenu.bp3-popover > .bp3-popover-content {
box-shadow: none;
}
.action-card-border {
border-color: var(--ads-v2-color-border);
}
.action-card-next-selected {
border-bottom: 1px solid var(--ads-v2-color-border-emphasis-plus);
}
.action-card-border-selected {
border-color: var(--ads-v2-color-border-emphasis-plus) !important;
}
.action-card-last-block {
border-radius: 0px 0px var(--ads-v2-border-radius) var(--ads-v2-border-radius);
}
.main-block-radius {
border-radius: var(--ads-v2-border-radius);
}
.main-block-radius-selected {
border-radius: var(--ads-v2-border-radius) var(--ads-v2-border-radius) 0px 0px;
}
.bp3-popover.bp3-minimal.bp3-submenu {
padding-right: 0px;
}
div.bp3-popover-arrow {
display: none;
}
.bp3-button.bp3-loading {
cursor: default !important;
}
.display-none {
display: none;
}
.t--editor-appname-menu-portal {
z-index: 9 !important;
}
.bp3-popover .bp3-input {
outline: 0;
box-shadow: none;
border: 1px solid var(--ads-v2-color-border);
border-radius: var(--ads-v2-border-radius) !important;
}
.bp3-popover .bp3-input:focus {
border-color: var(--ads-v2-color-border-emphasis);
outline: 0;
}
.bp3-popover.bp3-minimal {
margin-top: 8px !important;
}
.bp3-popover.bp3-minimal.action-selector-dropdown {
margin-top: 0px !important;
}
.layout-control.bp3-popover.bp3-minimal {
margin-top: 8px !important;
}
.bp3-popover.none-shadow-popover {
box-shadow: none;
border: 0px;
}
.bp3-datepicker {
border-radius: 0 !important;
}
/* making both the Modal layer and the Dropdown layer */
.bp3-modal-widget,
.appsmith_widget_0 > .bp3-portal {
z-index: 2 !important;
}
/* Portals on the Modal widget */
.bp3-modal-widget .bp3-portal {
z-index: 21 !important;
}
.bp3-popover2-content {
background-color: var(--ads-v2-color-bg) !important;
border-radius: var(--ads-v2-border-radius) !important;
}
.bp3-overlay-backdrop {
background-color: rgba(16, 22, 26, 0.7) !important;
}
.bp3-overlay-zindex {
z-index: 20 !important;
}
/** color picker input control */
.color-picker-input,
.color-picker-input > .bp3-popover-content {
border-radius: var(--ads-v2-border-radius) !important;
}
.color-picker-input {
box-shadow: var(--ads-v2-shadow-popovers) !important;
}
.icon-select-popover,
.icon-select-popover > .bp3-popover-content {
border-radius: var(--ads-v2-border-radius) !important;
}
.icon-select-popover {
box-shadow: var(--ads-v2-shadow-popovers) !important;
}
.error-menuitem {
color: var(--ads-v2-color-fg-error) !important;
}
.error-menuitem > .ads-v2-menu__menu-item-children {
color: var(--ads-v2-color-fg-error) !important;
}
.error-menuitem:hover:not([data-disabled]),
.error-menuitem:focus-visible {
background-color: var(--ads-v2-color-red-50) !important;
}
.error-menuitem:active:not([data-disabled]) {
background-color: var(--ads-v2-color-red-100) !important;
}
.menuitem-nohover:hover {
background-color: transparent !important;
cursor: default !important;
}
.react-datepicker__children-container {
margin-top: -10px !important;
}
.reconnect-datasource-modal {
z-index: 9 !important;
}
/** Conditional vertical margin applied to widgets.
If in a row of widgets (.aligned-widget-row), one of the widgets has a label ([data-field-label-wrapper]), then
all widgets (.anvil-widget-wrapper) in the row other than the widget with the label, will shift down using the
margin-block-start property. This is to ensure that the widgets are aligned vertically.
The value of the margin-block-start property is calculated based on the spacing tokens used by the labels in input like components
*/
.aligned-widget-row:has(.anvil-widget-wrapper [data-field-label-wrapper])
.anvil-widget-wrapper:not(:has([data-field-label-wrapper])) {
margin-block-start: calc(var(--inner-spacing-2) + var(--sizing-3));
}