3723 Commits
Author SHA1 Message Date
Bogdan Chadkin e35de86421 experimental: add icons to html elements (#5219)
Ref https://github.com/webstudio-is/webstudio/issues/3632

<img width="281" alt="Screenshot 2025-05-18 at 18 37 16"
src="https://github.com/user-attachments/assets/0b95b674-c9fa-4f5d-b79d-b1ce6023dba8"
/>
2025-05-18 20:46:45 +03:00
Bogdan Chadkin 90aa42422d experimental: support html elements in content block (#5216)
Ref https://github.com/webstudio-is/webstudio/issues/3632

Now content block is relying on instances tags instead of component
names. Tested all cases. Should work smoothly.

Also dialog title now have placeholders inferred from tag as well
<img width="1025" alt="image"
src="https://github.com/user-attachments/assets/4c7817fb-cf68-4d61-a672-213b1e8d1cc7"
/>
2025-05-18 00:29:50 +03:00
Bogdan Chadkin 646c5b38e7 fix: normalize html attributes only when not defined by component (#5215)
Proper fix for https://github.com/webstudio-is/webstudio/pull/5211

Now props meta are available in component generator and can be used to
figure if prop is defined by component or comes from html attributes.
Added same logic in canvas and component generator.

Also got rid from no longer necessary registeredComponentPropsMetas
store since all props are described by component meta.
2025-05-17 10:11:56 +03:00
Bogdan Chadkin 0eea205bfc refactor: merge base and animation props with component metas (#5214)
Related https://github.com/webstudio-is/webstudio/pull/5211
2025-05-16 23:31:06 +03:00
Bogdan Chadkin 72345fb1fb refactor: merge radix props with component metas (#5213)
Related https://github.com/webstudio-is/webstudio/pull/5211

We moved html attributes away from props metas and have very little
actual props left in meta. It is safe to merge with component meta to
simplify access in both builder and CLI.

CLI size increase is not very significant

```diff
- 241.92kB
+ 256.64kB
```
2025-05-16 17:55:07 +03:00
Bogdan Chadkin d372aa386b experimental: customize initial attributes per tag (#5209)
Ref https://github.com/webstudio-is/webstudio/issues/3632

Now different tags can have own initial attributes. Here added initial
attributes to `<a>` and `<form>` which will be replaced with remix
components on publish. Also overriden href, download and target types
for links.

<img width="246" alt="Screenshot 2025-05-15 at 16 21 00"
src="https://github.com/user-attachments/assets/112c3c94-0c87-4fa5-936b-4def5cc4ee12"
/>
2025-05-16 14:59:10 +03:00
Bogdan Chadkin a44530b068 experimental: adapt tag control to html content model (#5208)
Ref https://github.com/webstudio-is/webstudio/issues/3632

Here improved tag control to allow updating with tag satisfying content
model.

For example when ul has li it can only be changed to ol and menu. li
inside ul cannot be changed with anything.

Also switch to combobox when there is more than 10 satisfying tags.



https://github.com/user-attachments/assets/ad42bba7-9be1-4f50-9b1a-6f6cda52f3e5
2025-05-14 14:12:48 +03:00
Bogdan Chadkin 28e61f49bd experimental: add matching tag when insert element component (#5204)
Ref https://github.com/webstudio-is/webstudio/issues/3632

Now element does not provide default tag and instead builder will try to
find tag matching its parent.

This way we can insert element, give it "ul" tag
and then insert another element into it which will match only "li"


https://github.com/user-attachments/assets/3ea87624-9524-4f2e-91b2-d658d16d7a1b
2025-05-13 12:46:40 +04:00
Bogdan Chadkin a04af45fa3 experimental: support element component in rich text (#5203)
Ref https://github.com/webstudio-is/webstudio/issues/3632

Now when element rich text component is detected all children like bold,
italic, link etc are created with element component.

Old rich text components are still using legacy rich text content
components.

<img width="571" alt="Screenshot 2025-05-12 at 12 47 43"
src="https://github.com/user-attachments/assets/82b1a36e-6efb-40c0-b77c-668a66da6724"
/>
2025-05-12 22:08:26 +04:00
Oleg Isonen 7f50fbe85c fix: Rewrite overflow clip and hidden description (#5201)
## Description

 Rewrite overflow clip and hidden description and move it to css-data

## Steps for reproduction

1. click button
2. expect xyz

## Code Review

- [ ] hi @kof, I need you to do
  - conceptual review (architecture, feature-correctness)
  - detailed review (read every line)
  - test it on preview

## Before requesting a review

- [ ] made a self-review
- [ ] added inline comments where things may be not obvious (the "why",
not "what")

## Before merging

- [ ] tested locally and on preview environment (preview dev login:
0000)
- [ ] updated [test
cases](https://github.com/webstudio-is/webstudio/blob/main/apps/builder/docs/test-cases.md)
document
- [ ] added tests
- [ ] if any new env variables are added, added them to `.env` file
2025-05-11 17:16:53 +02:00
Bogdan Chadkin 535d87d391 experimental: allow pasting svg as html embed (for now) (#5200)
Now icons are added as HtmlEmbed component when paste html. This is
essential for tailwind paste which use a lot of icons.

<img width="342" alt="image"
src="https://github.com/user-attachments/assets/06bbe633-e2ae-4929-99c5-91040cda9472"
/>
<img width="431" alt="image"
src="https://github.com/user-attachments/assets/8c7e1b5c-42b4-4d6f-8039-5918175bad7e"
/>


```html
    <div
      style="display: flex; border: 1px solid #ccc; border-radius: 5px; overflow: hidden;"
    >
      <button
        style="background-color: #f8f8f8; border: none; padding: 10px; cursor: pointer; display: flex; align-items: center; justify-content: center; border-right: 1px solid #ccc; font-family: sans-serif; font-size: 12px;"
      >
        <svg
          xmlns="http://www.w3.org/2000/svg"
          width="24"
          height="24"
          viewBox="0 0 24 24"
          fill="none"
          stroke="currentColor"
          stroke-width="2"
          stroke-linecap="round"
          stroke-linejoin="round"
          style="margin-right: 5px;"
        >
          <line x1="3" y1="12" x2="21" y2="12"></line>
          <line x1="3" y1="6" x2="21" y2="6"></line>
          <line x1="3" y1="18" x2="21" y2="18"></line>
        </svg>
        <span>Menu</span>
      </button>
      <button
        style="background-color: #f8f8f8; border: none; padding: 10px; cursor: pointer; display: flex; align-items: center; justify-content: center; border-right: 1px solid #ccc; font-family: sans-serif; font-size: 12px;"
      >
        <svg
          xmlns="http://www.w3.org/2000/svg"
          width="24"
          height="24"
          viewBox="0 0 24 24"
          fill="none"
          stroke="currentColor"
          stroke-width="2"
          stroke-linecap="round"
          stroke-linejoin="round"
          style="margin-right: 5px;"
        >
          <circle cx="12" cy="12" r="10"></circle>
          <line x1="12" y1="8" x2="12" y2="16"></line>
          <line x1="8" y1="12" x2="16" y2="12"></line>
        </svg>
        <span>Add</span>
      </button>
      <button
        style="background-color: #f8f8f8; border: none; padding: 10px; cursor: pointer; display: flex; align-items: center; justify-content: center; font-family: sans-serif; font-size: 12px;"
      >
        <svg
          xmlns="http://www.w3.org/2000/svg"
          width="24"
          height="24"
          viewBox="0 0 24 24"
          fill="none"
          stroke="currentColor"
          stroke-width="2"
          stroke-linecap="round"
          stroke-linejoin="round"
          style="margin-right: 5px;"
        >
          <path d="M18 6L6 18"></path>
          <path d="M6 6L18 18"></path>
        </svg>
        <span>Close</span>
      </button>
    </div>
```
2025-05-11 16:34:02 +04:00
Oleg Isonen 7f77a04f67 feat: Use destructive button when deleting breakpoints (#5198)
## Description

1. What is this PR about (link the issue and add a short description)

## Steps for reproduction

1. click button
2. expect xyz

## Code Review

- [ ] hi @kof, I need you to do
  - conceptual review (architecture, feature-correctness)
  - detailed review (read every line)
  - test it on preview

## Before requesting a review

- [ ] made a self-review
- [ ] added inline comments where things may be not obvious (the "why",
not "what")

## Before merging

- [ ] tested locally and on preview environment (preview dev login:
0000)
- [ ] updated [test
cases](https://github.com/webstudio-is/webstudio/blob/main/apps/builder/docs/test-cases.md)
document
- [ ] added tests
- [ ] if any new env variables are added, added them to `.env` file
2025-05-11 11:53:53 +02:00
Bogdan Chadkin 8c91170f63 fix: allow deleting from input in preview mode (#5194)
Fixes
https://discord.com/channels/955905230107738152/1369211497590554675

Delete on canvas is separateed from the one in builder so we can safely
remove preventDefault to allow entering or deleting from inputs in
preview mode.
2025-05-11 13:51:17 +04:00
Bogdan Chadkin 29e455a9b7 fix: remove Text Content property from Image component (#5195)
Was accidentally added when rewriting content model.

Also fixed two other issues

- user can override text color in error boundary with global root
- text content property now have tooltip with description and it can be
reset

<img width="320" alt="Screenshot 2025-05-10 at 18 14 19"
src="https://github.com/user-attachments/assets/ffb16efc-e7b5-44d1-a214-0a9251e9eb9d"
/>
2025-05-11 01:10:27 +04:00
Bogdan Chadkin c7c7d668ba experimental: paste inline styles (#5189)
Ref https://github.com/webstudio-is/webstudio/issues/4404

Inline styles are easy to support and tailwind templates occasionally
use them for unsupported stuff. Also fixed space collapsing.



https://github.com/user-attachments/assets/35e7a8d7-ef5b-496c-9a6d-0b05e113e503
2025-05-08 12:58:06 +04:00
Bogdan Chadkin 59b6471c4f experimental: support paste html (#5185)
Ref https://github.com/webstudio-is/webstudio/issues/4404

Slightly reworked paste story. Now minimal API to insert html looks like
this

```js
const fragment = generateFragmentFromHtml(html);
insertWebstudioFragmentAt(fragment);
```

- attributes are casted to string, number and boolean types
- text is wrapped with spans when outside of rich text
- unsupported tags are ignored in result



https://github.com/user-attachments/assets/c8072d86-72bd-4446-a26a-e678b193f93e
2025-05-06 13:31:13 +04:00
Bogdan Chadkin 525804389f experimental: add Element component to builder (#5182)
Ref https://github.com/webstudio-is/webstudio/issues/3632

- Added template for Element component in builder
- Render Element component on canvas
- Labels are shown as html tags
- Element has div tag by default

<img width="276" alt="Screenshot 2025-05-04 at 03 17 53"
src="https://github.com/user-attachments/assets/2f55b5d0-b6a0-4152-968b-842f4fcd18ea"
/>
2025-05-05 11:15:14 +04:00
Bogdan Chadkin 655b887ab9 feat: support paste from other browsers (#5181)
Users started to build own marketplaces. And we found paste something
copied from other browser like firefox -> chromium based app doesn't
work. This is because OSs guarantee only text/plain to be stored in
system clipboard.

Here I changed copy paste logic to copy as text/plain and paste as both
application/json and text/plain if possible.
2025-05-04 18:41:00 +04:00
Bogdan Chadkin 06b39a5691 feat: hide transforms section for inline elements (#5180)
Transforms don't work when display: inline is used. Here we hide
transforms section just like "list item section" for non list tags.

Related video https://www.youtube.com/watch?v=KjpQF3nYGoc



https://github.com/user-attachments/assets/2f1c882f-c627-4e62-9e44-5284117d200a
2025-05-02 23:29:48 +04:00
Bogdan Chadkin 63c54fcad6 refactor: upgrade remix and react-router (#5177)
This should fix a few vulnerabilities we get from react-router and vite
2025-05-02 00:35:20 +04:00
Bogdan Chadkin 6f792e4aac refactor: bump radix (#5129)
https://www.radix-ui.com/primitives/docs/overview/releases#april-8-2025
2025-05-01 15:49:38 +04:00
Bogdan Chadkin c8cbf482bf refactor: upgrade to vite 6 (#5172)
Got rid of "module" export condition everywhere.
Seems like it has very poor usage everywhere.
2025-05-01 10:32:18 +04:00
Bogdan Chadkin 5551451bc4 fix: show description in attributes tooltip (#5173)
Description can be taken from attributes meta. Also moved binding
warning inside of tooltip to avoid layout shift after binding.

<img width="364" alt="Screenshot 2025-04-30 at 17 44 28"
src="https://github.com/user-attachments/assets/903d1309-e7af-4d2b-9aa9-7b36bda4f45d"
/>
2025-05-01 10:23:16 +04:00
Bogdan Chadkin a071280b3d perf: remove html attributes from component metas (#5170)
Now we use html attribute for all components. Now components like Box
with already set "className" property will be migrated to "class"
attribute. This cuts ~350kB in builder scripts. Total ~1MB after
removing both html and aria attributes.

```diff
- 5036    build/client/assets/
+ 4676    build/client/assets/
```

Attributes and properties now have the following order
- component properties
- tag attributes
- global html attributes
- role
- aria attributes
2025-04-30 11:12:42 +04:00
Bogdan Chadkin 0cbfc2db19 refactor: move animate property to sdk runtime (#5171)
Vite 6 is having troubles bundling app which depends on whole sdk. Plus
it may increase app bundle size.
2025-04-30 11:05:50 +04:00
7fa57b2c5b feat: add overflow clip in styles panel (#4914)
closes ( #4203 )

- added a new crop svg to icons package and generated the cropIcon
component.
- replaced the eye icon with the crop icon and also changed hidden to
clip in the overflow toggle group.

---------

Co-authored-by: Oleg Isonen <oleg008@gmail.com>
Co-authored-by: Bogdan Chadkin <opensource@trysound.io>
2025-04-29 16:21:06 +04:00
Bogdan Chadkin 6fa88d9711 refactor: render html attributes for all components (#5163)
Ref https://github.com/webstudio-is/webstudio/issues/3632

Here enabled converting class -> className for all components with tags.
Now it does not affect anything though later will unlock using html
attributes instead of component props.

Also got rid from huge map with react properties and replaced it with a
set of proper aliases.
2025-04-29 15:40:43 +04:00
Bogdan Chadkin 452c50a41a refactor: upgrade vite for vitest and storybook (#5165)
Tough cookie. There is a problem with resolving react-remove-scroll,
figured it by reducing allowed amount of server conditions.
2025-04-29 14:17:42 +04:00
Bogdan Chadkin f13455394d feat: add descriptions to tags (#5164)
Ref https://github.com/webstudio-is/webstudio/issues/3632

Scraped descriptions from html spec to show in tag control.

<img width="297" alt="Screenshot 2025-04-26 at 12 46 21"
src="https://github.com/user-attachments/assets/444e319d-e24f-429e-b09d-1db95cc248d5"
/>
2025-04-26 17:04:31 +07:00
Bogdan Chadkin c1ec5beeb3 fix: rebind nested collection item properly (#5159)
Before parent collection item on nested collection was rebind with
nested collection item which lead to broken state

```
<Collection id="parent" data={[]} item="collectionItem">
  <Collection id="nested" data={collectionItem} item="collectionItem">
  </Collection
</Collection
```

```
collection.map(collectionItem =>
  // oops
  collectionItem2.map(collectionItem2 => {
  })
})
```
2025-04-25 21:05:54 +07:00
Bogdan Chadkin 3826ddd60c feat: add context menu to animations (#5162)
Now user can copy and paste specific animations between animation
groups.

<img width="370" alt="Screenshot 2025-04-24 at 23 41 34"
src="https://github.com/user-attachments/assets/cb183395-e880-44a0-b2d3-fbb922ea3f98"
/>
2025-04-25 17:18:30 +07:00
Bogdan Chadkin 93c00570fd perf: reuse aria attributes between all components (#5160)
Ref https://github.com/webstudio-is/webstudio/issues/3632

We have a universally generated list of aria attributes and can reuse it
instead of generating for every component and bloating our client
bundle.

Now users will have to download ~700kB less javascript when load
builder.

```diff
- 5748    build/client/assets
+ 5036    build/client/assets
```

<img width="299" alt="Screenshot 2025-04-24 at 12 01 46"
src="https://github.com/user-attachments/assets/1faedc01-8f5f-47ad-8601-d17bf5059ea3"
/>
2025-04-24 22:54:51 +07:00
Bogdan Chadkin 3f208b5752 feat: let users dismiss blocking error in unsupported browsers (#5158)
Ref https://github.com/webstudio-is/webstudio/issues/1818

Users want to use builder in safari and firefox even though we don't
officially support them. So we will let users dismiss blocking error.

<img width="522" alt="image"
src="https://github.com/user-attachments/assets/4871fb06-38c9-41b9-8595-0d01a62b9f20"
/>
2025-04-23 17:03:02 +07:00
Bogdan Chadkin fd3e4bf363 fix: show initial properties in advanced panel (#5157)
Opacity and others when defined are duplicated
and not shown at all when not defined.

<img width="247" alt="Screenshot 2025-04-23 at 00 18 06"
src="https://github.com/user-attachments/assets/70a329eb-c714-4ba8-a839-ca330c30a0f3"
/>
2025-04-23 01:17:55 +07:00
Bogdan Chadkin 95e6550098 perf: improve instance selection performance (#5151)
We had a few issues

- instance selector was resynced even though computed from awareness
- when click in navigator both click and focus events do selection

So fixed by reducing 6 or more reselections when click on instances in
navigator.
2025-04-21 15:03:20 +02:00
Ivan Starkov bcababee0b experimental: Video uploads fixes accept support (#5153)
## Description

Now Video elelment shows only video files. 

<img width="1016" alt="image"
src="https://github.com/user-attachments/assets/0c846430-1e6d-4acd-8a1a-aa0111d39292"
/>


## Steps for reproduction

1. click button
2. expect xyz

## Code Review

- [ ] hi @kof, I need you to do
  - conceptual review (architecture, feature-correctness)
  - detailed review (read every line)
  - test it on preview

## Before requesting a review

- [ ] made a self-review
- [ ] added inline comments where things may be not obvious (the "why",
not "what")

## Before merging

- [ ] tested locally and on preview environment (preview dev login:
0000)
- [ ] updated [test
cases](https://github.com/webstudio-is/webstudio/blob/main/apps/builder/docs/test-cases.md)
document
- [ ] added tests
- [ ] if any new env variables are added, added them to `.env` file
2025-04-21 15:51:59 +03:00
Ivan Starkov 1ac1d46e0a experimental: Use ordinary range UI for scroll animations (#5152)
## Description

1. What is this PR about (link the issue and add a short description)

## Steps for reproduction

1. click button
2. expect xyz

## Code Review

- [ ] hi @kof, I need you to do
  - conceptual review (architecture, feature-correctness)
  - detailed review (read every line)
  - test it on preview

## Before requesting a review

- [ ] made a self-review
- [ ] added inline comments where things may be not obvious (the "why",
not "what")

## Before merging

- [ ] tested locally and on preview environment (preview dev login:
0000)
- [ ] updated [test
cases](https://github.com/webstudio-is/webstudio/blob/main/apps/builder/docs/test-cases.md)
document
- [ ] added tests
- [ ] if any new env variables are added, added them to `.env` file
2025-04-21 15:51:44 +03:00
Ivan Starkov 4138a56982 experimental: Support video upload for animations (#5144)
## Description

### NEXT PR, TODO, Image Manager accept issue

https://github.com/webstudio-is/webstudio/blob/ab997532c239fcd0329ec017e748729c437200c4/apps/builder/app/builder/shared/image-manager/image-manager.tsx#L102


### Current PR
- [x] Image component can show mp4 files as an image
https://video-upload-mn4t9.wstd.work/

https://p-f218c6e2-e776-467d-a97f-00fbaaf98f5a-dot-video.staging.webstudio.is/
- [x] Animations with uploaded images
For animation to work "Animation Group" should have at least 1 animation
with ranges set.
https://video-animation-lw2i6.wstd.work/

https://p-610b2f8d-c4fe-4138-aa40-1339a958fc2e-dot-video.staging.webstudio.is/

Not tested but should work with following video files (only mp4 was
tested)
```
  [".mp4", "video/mp4"],
  [".webm", "video/webm"],
  [".mpg", "video/mpeg"],
  [".mpeg", "video/mpeg"],
  [".mov", "video/quicktime"],
```

### How it works

Add Animation Group
Add 1 animation and set ranges
Add Video Animation
Set Source property at Video Animation/Video to uploaded video


## Steps for reproduction

1. click button
2. expect xyz

## Code Review

- [ ] hi @kof, I need you to do
  - conceptual review (architecture, feature-correctness)
  - detailed review (read every line)
  - test it on preview

## Before requesting a review

- [ ] made a self-review
- [ ] added inline comments where things may be not obvious (the "why",
not "what")

## Before merging

- [ ] tested locally and on preview environment (preview dev login:
0000)
- [ ] updated [test
cases](https://github.com/webstudio-is/webstudio/blob/main/apps/builder/docs/test-cases.md)
document
- [ ] added tests
- [ ] if any new env variables are added, added them to `.env` file
2025-04-21 10:04:25 +03:00
Bogdan Chadkin 395a6b9e72 refactor: move embed template into ai (#5148)
To not bloat cli and remove embed template together with legacy ai
eventually.
2025-04-21 12:47:51 +07:00
Bogdan Chadkin e622e08df6 refactor: drop legacy matchers (#5146)
We already fully switched to component content model and no longer
necessary legacy matchers.
2025-04-20 16:59:22 +07:00
Bogdan Chadkin 21d09cc1f0 refactor: migrate radix to component content model (#5143)
Replaced legacy constraints with component content model in radix
components. Checked all locally.

Removed meta.type for good.
2025-04-19 15:54:48 +07:00
Bogdan Chadkin a449f66c77 refactor: describe descendants in component content model (#5140)
Here replaced "transparent" keyword with more explicit "descendants"
list in component content model.

This will enable use case with child constraint while allowing other
instances to be children like here

```
  contentModel: {
    category: "instance",
    children: [
      "instance",
      "AnimateText",
      "StaggerAnimation",
      "VideoAnimation",
    ],
  },
```

and descendants are described like this

```
  contentModel: {
    category: "instance",
    children: ["instance"],
    descendants: ["VimeoSpinner", "VimeoPlayButton", "VimeoPreviewImage"],
  },
```
2025-04-19 01:53:47 +07:00
Ivan Starkov 4e13b0d45f experimental: Animation Panel Label Tolltips (#5138)
## Description

<img width="484" alt="image"
src="https://github.com/user-attachments/assets/79c99480-8e36-4d77-a4f7-6a95aa6a35a4"
/>

<img width="408" alt="image"
src="https://github.com/user-attachments/assets/45a05ce8-05ad-4b68-8bc5-3397cf1c7a05"
/>


## Steps for reproduction

1. click button
2. expect xyz

## Code Review

- [ ] hi @kof, I need you to do
  - conceptual review (architecture, feature-correctness)
  - detailed review (read every line)
  - test it on preview

## Before requesting a review

- [ ] made a self-review
- [ ] added inline comments where things may be not obvious (the "why",
not "what")

## Before merging

- [ ] tested locally and on preview environment (preview dev login:
0000)
- [ ] updated [test
cases](https://github.com/webstudio-is/webstudio/blob/main/apps/builder/docs/test-cases.md)
document
- [ ] added tests
- [ ] if any new env variables are added, added them to `.env` file
2025-04-18 15:33:09 +03:00
Ivan Starkov a068bc9ab4 experimental: Error support on components level (#5136)
## Description

Error toasts in components instead of failing

## Steps for reproduction

1. click button
2. expect xyz

## Code Review

- [ ] hi @kof, I need you to do
  - conceptual review (architecture, feature-correctness)
  - detailed review (read every line)
  - test it on preview

## Before requesting a review

- [ ] made a self-review
- [ ] added inline comments where things may be not obvious (the "why",
not "what")

## Before merging

- [ ] tested locally and on preview environment (preview dev login:
0000)
- [ ] updated [test
cases](https://github.com/webstudio-is/webstudio/blob/main/apps/builder/docs/test-cases.md)
document
- [ ] added tests
- [ ] if any new env variables are added, added them to `.env` file
2025-04-18 11:04:59 +04:00
Ivan Starkov f6d859c245 experimental: Add animation ranges (#5133)
## Description

1. What is this PR about (link the issue and add a short description)

## Steps for reproduction

1. click button
2. expect xyz

## Code Review

- [ ] hi @kof, I need you to do
  - conceptual review (architecture, feature-correctness)
  - detailed review (read every line)
  - test it on preview

## Before requesting a review

- [ ] made a self-review
- [ ] added inline comments where things may be not obvious (the "why",
not "what")

## Before merging

- [ ] tested locally and on preview environment (preview dev login:
0000)
- [ ] updated [test
cases](https://github.com/webstudio-is/webstudio/blob/main/apps/builder/docs/test-cases.md)
document
- [ ] added tests
- [ ] if any new env variables are added, added them to `.env` file
2025-04-17 23:17:04 +02:00
Bogdan Chadkin bd77a252c2 refactor: detect empty tags and components (#5132)
Here replaced "embed" and "control" components with content model. Many
components now detect no content based on html content model like with
img or input tags. In other cases component meta can explicitly specify
empty array to not accept anything.

```
meta = {
  contentModel: {
    category: 'instance',
    children: []
  }
}
```
2025-04-17 23:23:20 +07:00
Bogdan Chadkin 5287e960a8 fix: remove scrub icon from gap input (#5130)
We no longer support scrub on input icons like in gap.
2025-04-17 10:27:40 +07:00
Oleg Isonen d17fe3951e experimental: fix typo (#5131)
## Description

1. What is this PR about (link the issue and add a short description)

## Steps for reproduction

1. click button
2. expect xyz

## Code Review

- [ ] hi @kof, I need you to do
  - conceptual review (architecture, feature-correctness)
  - detailed review (read every line)
  - test it on preview

## Before requesting a review

- [ ] made a self-review
- [ ] added inline comments where things may be not obvious (the "why",
not "what")

## Before merging

- [ ] tested locally and on preview environment (preview dev login:
0000)
- [ ] updated [test
cases](https://github.com/webstudio-is/webstudio/blob/main/apps/builder/docs/test-cases.md)
document
- [ ] added tests
- [ ] if any new env variables are added, added them to `.env` file
2025-04-16 23:58:49 +02:00
Bogdan Chadkin 23e4318990 experimental: add keyframe transforms (#5128)
Here added UI for transform and opacity properties to keyframe
configuration.

<img width="330" alt="Screenshot 2025-04-16 at 19 42 29"
src="https://github.com/user-attachments/assets/9a122d26-c203-4a9b-8e13-44d2eb8b7a23"
/>
2025-04-16 22:37:49 +07:00
Bogdan Chadkin 0daf6bfbc1 experimental: split keyframe styles into popover (#5126)
We want to add a few predefined fields in every keyframe. Here we split
each keyframe into separate popover to avoid overloading the ui.

<img width="404" alt="Screenshot 2025-04-16 at 01 53 41"
src="https://github.com/user-attachments/assets/21dd7f14-9f51-4624-b190-f57055a6c55c"
/>
2025-04-16 18:38:49 +07:00