Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { StyleProperty } from "@webstudio-is/css-engine";
import type { CssProperty, StyleProperty } from "@webstudio-is/css-engine";
import { ColorPicker } from "../../shared/color-picker";
import { styleConfigByName } from "../../shared/configs";
import {
Expand All @@ -7,7 +7,11 @@ import {
} from "../../shared/model";
import { deleteProperty, setProperty } from "../../shared/use-style-data";

export const ColorControl = ({ property }: { property: StyleProperty }) => {
export const ColorControl = ({
property,
}: {
property: StyleProperty | CssProperty;
}) => {
const computedStyleDecl = useComputedStyleDecl(property);
const value = computedStyleDecl.cascadedValue;
const currentColor = computedStyleDecl.usedValue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@ import {
import { $assets } from "~/shared/nano-states";
import { ImageManager } from "~/builder/shared/image-manager";
import { useEffect, useState } from "react";
import type { InvalidValue, StyleProperty } from "@webstudio-is/css-engine";
import type {
CssProperty,
InvalidValue,
StyleProperty,
} from "@webstudio-is/css-engine";
import { useComputedStyleDecl } from "../../shared/model";
import {
getRepeatedStyleItem,
Expand All @@ -32,7 +36,7 @@ export const ImageControl = ({
property,
index,
}: {
property: StyleProperty;
property: StyleProperty | CssProperty;
index: number;
}) => {
const assets = useStore($assets);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import { useState } from "react";
import { toValue, type StyleProperty } from "@webstudio-is/css-engine";
import {
toValue,
type CssProperty,
type StyleProperty,
} from "@webstudio-is/css-engine";
import type { IconComponent } from "@webstudio-is/icons";
import {
Box,
Expand All @@ -15,7 +19,10 @@ import {
MenuCheckedIcon,
theme,
} from "@webstudio-is/design-system";
import { declarationDescriptions } from "@webstudio-is/css-data";
import {
camelCaseProperty,
declarationDescriptions,
} from "@webstudio-is/css-data";
import { humanizeString } from "~/shared/string-utils";
import { setProperty } from "../../shared/use-style-data";
import { useComputedStyleDecl } from "../../shared/model";
Expand All @@ -25,7 +32,7 @@ export const MenuControl = ({
property,
items,
}: {
property: StyleProperty;
property: StyleProperty | CssProperty;
items: Array<{
name: string;
label: string;
Expand All @@ -41,7 +48,7 @@ export const MenuControl = ({
const Icon = currentItem?.icon ?? items[0].icon;
const description =
declarationDescriptions[
`${property}:${
`${camelCaseProperty(property)}:${
descriptionValue ?? currentValue
}` as keyof typeof declarationDescriptions
];
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
import { propertyDescriptions } from "@webstudio-is/css-data";
import {
camelCaseProperty,
propertyDescriptions,
} from "@webstudio-is/css-data";
import {
TupleValue,
TupleValueItem,
type StyleValue,
type StyleProperty,
type CssProperty,
} from "@webstudio-is/css-engine";
import { Flex, Grid, PositionGrid } from "@webstudio-is/design-system";
import type { ComputedStyleDecl } from "~/shared/style-object-model";
Expand Down Expand Up @@ -53,7 +57,7 @@ export const PositionControl = ({
property,
styleDecl,
}: {
property: StyleProperty;
property: StyleProperty | CssProperty;
styleDecl: ComputedStyleDecl;
}) => {
const { items } = styleConfigByName(property);
Expand All @@ -79,7 +83,7 @@ export const PositionControl = ({
<Flex direction="column" gap="1">
<PropertyInlineLabel
label="Position"
description={propertyDescriptions[property]}
description={propertyDescriptions[camelCaseProperty(property)]}
properties={[property]}
/>
<Flex gap="6">
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
import { declarationDescriptions, parseCssValue } from "@webstudio-is/css-data";
import {
camelCaseProperty,
declarationDescriptions,
parseCssValue,
} from "@webstudio-is/css-data";
import {
StyleValue,
toValue,
type CssProperty,
type StyleProperty,
} from "@webstudio-is/css-engine";
import { Box, Select, theme } from "@webstudio-is/design-system";
Expand All @@ -24,7 +29,7 @@ export const SelectControl = ({
index,
items = styleConfigByName(property).items,
}: {
property: StyleProperty;
property: StyleProperty | CssProperty;
index?: number;
items?: Array<{ label: string; name: string }>;
}) => {
Expand Down Expand Up @@ -54,7 +59,9 @@ export const SelectControl = ({
const hasDescription =
options.length > 0 &&
options.some(
(option) => declarationDescriptions[`${property}:${option}`] !== undefined
(option) =>
declarationDescriptions[`${camelCaseProperty(property)}:${option}`] !==
undefined
);

return (
Expand All @@ -74,7 +81,7 @@ export const SelectControl = ({
return;
}
// Preview on mouse enter or focus.
const nextValue = parseCssValue(property, name);
const nextValue = parseCssValue(camelCaseProperty(property), name);
setValue(nextValue, { isEphemeral: true });
}}
onOpenChange={(isOpen) => {
Expand All @@ -88,7 +95,8 @@ export const SelectControl = ({
return;
}

const description = declarationDescriptions[`${property}:${option}`];
const description =
declarationDescriptions[`${camelCaseProperty(property)}:${option}`];
return (
<Box css={{ width: theme.spacing[26] }}>
{description ?? `The ${noCase(property)} is ${option}`}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import { useState } from "react";
import type { StyleProperty, StyleValue } from "@webstudio-is/css-engine";
import type {
CssProperty,
StyleProperty,
StyleValue,
} from "@webstudio-is/css-engine";
import {
CssValueInput,
type IntermediateStyleValue,
Expand All @@ -11,7 +15,11 @@ import {
useComputedStyleDecl,
} from "../../shared/model";

export const TextControl = ({ property }: { property: StyleProperty }) => {
export const TextControl = ({
property,
}: {
property: StyleProperty | CssProperty;
}) => {
const computedStyleDecl = useComputedStyleDecl(property);
const value = computedStyleDecl.cascadedValue;
const setValue = setProperty(property);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import { useState, type JSX, type ReactNode } from "react";
import { declarationDescriptions } from "@webstudio-is/css-data";
import {
camelCaseProperty,
declarationDescriptions,
} from "@webstudio-is/css-data";
import { AlertIcon } from "@webstudio-is/icons";
import {
Flex,
Expand All @@ -11,6 +14,7 @@ import {
import {
hyphenateProperty,
toValue,
type CssProperty,
type StyleProperty,
} from "@webstudio-is/css-engine";
import { humanizeString } from "~/shared/string-utils";
Expand Down Expand Up @@ -38,7 +42,7 @@ export const ToggleGroupTooltip = ({
label?: string;
code?: string;
description: string | undefined;
properties: StyleProperty[];
properties: (StyleProperty | CssProperty)[];
isAdvanced?: boolean;
children: ReactNode;
}) => {
Expand Down Expand Up @@ -152,7 +156,7 @@ export const ToggleGroupControl = ({
description={
item.description ??
declarationDescriptions[
`${properties[0]}:${item.value}` as keyof typeof declarationDescriptions
`${camelCaseProperty(properties[0])}:${item.value}` as keyof typeof declarationDescriptions
]
}
properties={properties}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
import { ToggleButton } from "@webstudio-is/design-system";
import { declarationDescriptions } from "@webstudio-is/css-data";
import { toValue, type StyleProperty } from "@webstudio-is/css-engine";
import {
camelCaseProperty,
declarationDescriptions,
} from "@webstudio-is/css-data";
import {
toValue,
type CssProperty,
type StyleProperty,
} from "@webstudio-is/css-engine";
import type { IconComponent } from "@webstudio-is/icons";
import { humanizeString } from "~/shared/string-utils";
import { setProperty } from "../../shared/use-style-data";
Expand All @@ -11,7 +18,7 @@ export const ToggleControl = ({
property,
items,
}: {
property: StyleProperty;
property: StyleProperty | CssProperty;
items: Array<{
name: string;
label: string;
Expand All @@ -32,7 +39,7 @@ export const ToggleControl = ({
computedStyleDecl.source.name !== "default" && currentItem === undefined;
const description =
declarationDescriptions[
`${property}:${currentValue}` as keyof typeof declarationDescriptions
`${camelCaseProperty(property)}:${currentValue}` as keyof typeof declarationDescriptions
];

return (
Expand Down
12 changes: 8 additions & 4 deletions apps/builder/app/builder/features/style-panel/property-label.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { AlertIcon, ResetIcon } from "@webstudio-is/icons";
import {
hyphenateProperty,
toValue,
type CssProperty,
type StyleProperty,
} from "@webstudio-is/css-engine";
import {
Expand Down Expand Up @@ -238,7 +239,7 @@ export const PropertyLabel = ({
}: {
label: string;
description?: string;
properties: [StyleProperty, ...StyleProperty[]];
properties: [StyleProperty | CssProperty, ...(StyleProperty | CssProperty)[]];
}) => {
const styles = useComputedStyles(properties);
const styleValueSourceColor = getPriorityStyleValueSource(styles);
Expand Down Expand Up @@ -301,7 +302,7 @@ export const PropertySectionLabel = ({
}: {
label: string;
description: string | undefined;
properties: [StyleProperty, ...StyleProperty[]];
properties: [StyleProperty | CssProperty, ...(StyleProperty | CssProperty)[]];
}) => {
const styles = useComputedStyles(properties);
const styleValueSourceColor = getPriorityStyleValueSource(styles);
Expand Down Expand Up @@ -371,7 +372,10 @@ export const PropertyInlineLabel = ({
label: string;
title?: string;
description?: string;
properties?: [StyleProperty, ...StyleProperty[]];
properties?: [
StyleProperty | CssProperty,
...(StyleProperty | CssProperty)[],
];
disabled?: boolean;
}) => {
const [isOpen, setIsOpen] = useState(false);
Expand Down Expand Up @@ -427,7 +431,7 @@ export const PropertyValueTooltip = ({
}: {
label: string;
description: string | undefined;
properties: [StyleProperty, ...StyleProperty[]];
properties: [StyleProperty | CssProperty, ...(StyleProperty | CssProperty)[]];
isAdvanced?: boolean;
children: ReactNode;
}) => {
Expand Down
Loading