diff --git a/.eslintrc.js b/.eslintrc.js index 0770e88e09..4f0430ac20 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,4 +1,4 @@ -const TYPES = `Animation|AnimationSequence|AnyType|Arena|ArenaChild|ArenaFrame|ArenaFrameCell|ArenaFrameGrid|ArenaFrameRow|Arg|ArgType|BindingStruct|BoolType|Choice|ClassNamePropType|CodeComponentHelper|CodeComponentMeta|CodeComponentVariantMeta|CodeLibrary|CollectionExpr|ColorPropType|ColumnsConfig|ColumnsSetting|Component|ComponentArena|ComponentDataQuery|ComponentInstance|ComponentServerQuery|ComponentSwapSplitContent|ComponentTemplateInfo|ComponentVariantGroup|ComponentVariantSplitContent|CompositeExpr|CustomCode|CustomFunction|CustomFunctionExpr|DataSourceOpExpr|DataSourceTemplate|DataToken|DateRangeStrings|DateString|DefaultStylesClassNamePropType|DefaultStylesPropType|EventHandler|Expr|ExprText|FigmaComponentMapping|FunctionArg|FunctionExpr|FunctionType|GenericEventHandler|GlobalVariantGroup|GlobalVariantGroupParam|GlobalVariantSplitContent|HostLessPackageInfo|HrefType|ImageAsset|ImageAssetRef|Img|Interaction|KeyFrame|LabeledSelector|MapExpr|Marker|Mixin|NameArg|NamedState|NodeMarker|Num|ObjectPath|PageArena|PageHref|PageMeta|Param|PlumeInfo|PlumeInstance|PrimitiveType|ProjectDependency|PropParam|QueryData|QueryInvalidationExpr|QueryRef|RandomSplitSlice|RawText|RenderExpr|RenderFuncType|RenderableType|Rep|RichText|Rule|RuleSet|Scalar|SegmentSplitSlice|SelectorRuleSet|Site|SlotParam|Split|SplitContent|SplitSlice|State|StateChangeHandlerParam|StateParam|StrongFunctionArg|StyleExpr|StyleMarker|StyleNode|StylePropType|StyleScopeClassNamePropType|StyleToken|StyleTokenOverride|StyleTokenRef|TargetType|TemplatedString|Text|Theme|ThemeLayoutSettings|ThemeStyle|Token|TplComponent|TplNode|TplRef|TplSlot|TplTag|Var|VarRef|Variant|VariantGroup|VariantGroupState|VariantSetting|VariantedRuleSet|VariantedValue|VariantsRef|VirtualRenderExpr`; +const TYPES = `Animation|AnimationSequence|AnyType|Arena|ArenaChild|ArenaFrame|ArenaFrameCell|ArenaFrameGrid|ArenaFrameRow|Arg|ArgType|BindingStruct|BoolType|Choice|ClassNamePropType|CodeComponentHelper|CodeComponentMeta|CodeComponentVariantMeta|CodeLibrary|CollectionExpr|ColorPropType|ColumnsConfig|ColumnsSetting|Component|ComponentArena|ComponentDataQuery|ComponentInstance|ComponentServerQuery|ComponentSwapSplitContent|ComponentTemplateInfo|ComponentVariantGroup|ComponentVariantSplitContent|CompositeExpr|CustomCode|CustomFunction|CustomFunctionExpr|DataSourceOpExpr|DataSourceTemplate|DataToken|DateRangeStrings|DateString|DefaultStylesClassNamePropType|DefaultStylesPropType|EventHandler|Expr|ExprText|FigmaComponentMapping|FunctionArg|FunctionExpr|FunctionType|GenericEventHandler|GlobalVariantGroup|GlobalVariantGroupParam|GlobalVariantSplitContent|HostLessPackageInfo|HrefType|ImageAsset|ImageAssetRef|Img|Interaction|KeyFrame|LabeledSelector|MapExpr|Marker|Mixin|MultiChoice|NameArg|NamedState|NodeMarker|Num|ObjectPath|PageArena|PageHref|PageMeta|Param|PlumeInfo|PlumeInstance|PrimitiveType|ProjectDependency|PropParam|QueryData|QueryInvalidationExpr|QueryRef|RandomSplitSlice|RawText|RenderExpr|RenderFuncType|RenderableType|Rep|RichText|Rule|RuleSet|Scalar|SegmentSplitSlice|SelectorRuleSet|Site|SlotParam|Split|SplitContent|SplitSlice|State|StateChangeHandlerParam|StateParam|StrongFunctionArg|StyleExpr|StyleMarker|StyleNode|StylePropType|StyleScopeClassNamePropType|StyleToken|StyleTokenOverride|StyleTokenRef|TargetType|TemplatedString|Text|Theme|ThemeLayoutSettings|ThemeStyle|Token|TplComponent|TplNode|TplRef|TplSlot|TplTag|Var|VarRef|Variant|VariantGroup|VariantGroupState|VariantSetting|VariantedRuleSet|VariantedValue|VariantsRef|VirtualRenderExpr`; const clientFiles = [ "platform/wab/src/wab/main.tsx", @@ -21,6 +21,88 @@ const testFiles = [ "**/__mocks__/**/*", ]; +const fs = require("fs"); +const path = require("path"); + +// Find all files in the repo with overlay, e.g. `foo.external.ts` -> `foo.ts`. +// There are two stub types (see copy.bara.sky): +// - `.external.` : replaces files in both public and enterprise sync +// - `.public.` : replaces files only in public sync +function findOverlayTargets(root) { + const targets = []; + const walk = (dir) => { + let entries; + try { + entries = fs.readdirSync(dir, { withFileTypes: true }); + } catch { + return; + } + for (const entry of entries) { + const full = path.join(dir, entry.name); + if (entry.isDirectory()) { + walk(full); + } else if ( + entry.name.includes(".external.") || + entry.name.includes(".public.") + ) { + targets.push( + path + .relative(__dirname, full) + .replace(".external", "") + .replace(".public", "") + ); + } + } + }; + walk(root); + return targets; +} + +const internalFiles = ["**/enterprise/**", "**/internal/**", "**/*.internal*"]; +const overlayTargets = findOverlayTargets( + path.join(__dirname, "platform/wab/src") +); + +// Public synced files can't import enterprise/internal code. +const noEnterpriseImportPattern = { + group: internalFiles, + message: + "Either move this file under `enterprise/`/`internal/`, or add an `.external`/`.public`" + + "stub sibling to override it (see copy.bara.sky).", +}; + +// Shared by the top-level rule and the public-import guard override (which replaces it per-file). +const restrictedImportPaths = [ + { + name: "@plasmicapp/host", + importNames: ["registerComponent", "CodeComponentMeta"], + message: "Please import from @plasmicapp/host/registerComponent instead", + }, + { + name: "antd", + importNames: ["Modal"], + message: + "Please use drop-in replacement src/wab/client/components/widgets/Modal.tsx instead", + }, + { + name: "react-use", + importNames: ["useAsync", "useAsyncRetry", "useAsyncFn"], + message: "Please use useAsyncStrict()/useAsyncFnStrict() instead", + }, + { + name: "react-use/lib/useAsync", + message: "Please use useAsyncStrict() instead", + }, + { + name: "react-use/lib/useAsyncRetry", + message: "Please use useAsyncStrict() instead", + }, + { + name: "react-use/lib/useAsyncFn", + message: "Please use useAsyncFnStrict() instead", + }, +]; + module.exports = { root: true, ignorePatterns: [ @@ -29,6 +111,8 @@ module.exports = { "node_modules", "storybook-static", + // Examples lint themselves via their own `next lint`; also skipped in + // .lintstagedrc.js since eslint resolves `extends` before ignores. "examples/", "internal/", "packages/host/src/type-utils.ts", @@ -96,38 +180,7 @@ module.exports = { "Please use reactPrompt() instead; window.prompt() does not work well with app hosting", }, ], - "no-restricted-imports": [ - "error", - { - name: "@plasmicapp/host", - importNames: ["registerComponent", "CodeComponentMeta"], - message: - "Please import from @plasmicapp/host/registerComponent instead", - }, - { - name: "antd", - importNames: ["Modal"], - message: - "Please use drop-in replacement src/wab/client/components/widgets/Modal.tsx instead", - }, - { - name: "react-use", - importNames: ["useAsync", "useAsyncRetry", "useAsyncFn"], - message: "Please use useAsyncStrict()/useAsyncFnStrict() instead", - }, - { - name: "react-use/lib/useAsync", - message: "Please use useAsyncStrict() instead", - }, - { - name: "react-use/lib/useAsyncRetry", - message: "Please use useAsyncStrict() instead", - }, - { - name: "react-use/lib/useAsyncFn", - message: "Please use useAsyncFnStrict() instead", - }, - ], + "no-restricted-imports": ["error", { paths: restrictedImportPaths }], "no-restricted-syntax": [ "warn", { @@ -356,6 +409,21 @@ module.exports = { ], }, }, + { + files: ["platform/wab/src/**/*.ts", "platform/wab/src/**/*.tsx"], + // Files allowed to import from internalFiles. Includes files which are overlay targets, + // since they are replaced in the public sync. + excludedFiles: [...testFiles, ...internalFiles, ...overlayTargets], + rules: { + "no-restricted-imports": [ + "error", + { + paths: restrictedImportPaths, + patterns: [noEnterpriseImportPattern], + }, + ], + }, + }, ], parserOptions: { @@ -422,7 +490,6 @@ module.exports = { SocketIOClient: false, JSX: false, JQuery: false, - Cypress: false, cy: false, }, }; diff --git a/.gitignore b/.gitignore index 9598209ccc..baf651c904 100644 --- a/.gitignore +++ b/.gitignore @@ -34,7 +34,10 @@ /platform/sub/typedoc.json.gz /platform/sub/typedoc/ bower_components/ -node_modules/ +# No trailing slash so node_modules symlinks are ignored too, not just directories +node_modules +.pnpm-store/ +lerna-debug.log storybook-static/ .nx/ # ignore decrypted yaml files by sops diff --git a/.lintstagedrc.js b/.lintstagedrc.js index cf77f4f4c1..82818a4c99 100644 --- a/.lintstagedrc.js +++ b/.lintstagedrc.js @@ -1,12 +1,21 @@ module.exports = { - "*.{js,jsx,ts,tsx,cjs,mjs,cts,mts}": ["eslint --fix", "prettier --write"], + "*.{js,jsx,ts,tsx,cjs,mjs,cts,mts}": (files) => { + // Examples lint themselves via `next lint`; the monorepo eslint can't + // load their eslint-config-next (`extends` resolves before ignores). + const eslintable = files.filter((f) => !/(^|\/)examples\//.test(f)); + const cmds = []; + if (eslintable.length) { + cmds.push(`eslint --fix ${eslintable.map((f) => `"${f}"`).join(" ")}`); + } + cmds.push(`prettier --write ${files.map((f) => `"${f}"`).join(" ")}`); + return cmds; + }, "*.{json,css,less,scss,md,toml,xml,yml,yaml}": ["prettier --write"], "Dockerfile*": ["hadolint --failure-threshold=error"], // Format HCL/Terragrunt files, but never touch generated *.lock.hcl (excluded via extglob) "!(*lock).hcl": (files) => { - // Prefer terragrunt's formatter for *.hcl; fall back to terraform fmt if needed - return files.map((f) => `terragrunt hclfmt --file "${f}"`); + return files.map((f) => `terragrunt hcl format --file "${f}"`); }, // Terraform files (format on commit) diff --git a/.tool-versions b/.tool-versions index 6b2685568f..d1b5c12b48 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,3 @@ nodejs 24.4.0 python 3.10.13 +terragrunt 1.0.4 diff --git a/CLAUDE.md b/CLAUDE.md index 6dfcfd8e74..c190eebdd0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -24,9 +24,9 @@ Plasmic is an open-source visual web builder. This monorepo contains: - Infra: Docker, k8s, Terraform - Package Managers: asdf, npm, yarn, pnpm - Languages: Node.js, TypeScript -- Libraries: React, MobX, TypeORM, Jest, Playwright, Cypress (deprecating) Storybook +- Libraries: React, MobX, TypeORM, Jest, Playwright, Storybook ## Instructions for AI assistant -- Do not worry about styling/formatting. All files will be formatted to the same style in git hooks. +- Do not worry about styling/formatting. All files will be formatted to the same style in git hooks, which husky manages via the generated, gitignored `.husky/_` directory. In a fresh worktree that directory doesn't exist and git silently skips all hooks, so run `pnpm install` at the worktree root before your first commit. - When searching files, you should almost never look through node_modules/ files and other gitignored files unless you have a explicit reason to. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4affee8658..e432b3081d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,7 +22,7 @@ This repo contains: For hacking on code components or `plasmicpkgs`, see specific additional instructions further down. -We use `lerna` to help us manage dependencies among all the packages. +`packages/` and `plasmicpkgs/` are a `pnpm` workspace (see `pnpm-workspace.yaml`), `lerna` is used for versioning and publishing. In general, we follow the "fork-and-pull" Git workflow. @@ -111,7 +111,7 @@ cd packages/cli/ # Step 1. (One-time) # Ensure dependencies are built. -npx nx build @plasmicapp/cli +pnpm --filter "@plasmicapp/cli..." run build # Step 2. (Repeat) # Hackety hack, then you can directly run the source with esbuild-register. @@ -130,12 +130,12 @@ If you need the package installed in another npm project to test it, like say a # This unpublishes YOURPKG and its dependencies from your verdaccio, re-builds them, and publishes them to your local # verdaccio. # Note that this does not bump versions! -# We are using nx under the hood, so if your dependencies haven't changed, this should be fast. +# pnpm builds the dependency graph, so if your dependencies haven't changed, this should be fast. # In this example, even though we edited @plasmicapp/host, we can just think about publishing the "root" package(s) we're ultimately installing into the test app, in this case @plasmicapp/loader-nextjs. -yarn local-publish @plasmicapp/loader-nextjs && +pnpm local-publish @plasmicapp/loader-nextjs && # Or publish all packages to verdaccio. This will take longer. -# yarn local-publish +# pnpm local-publish # Step 3. # Go to the package you're testing, e.g. test-host-app. @@ -168,32 +168,19 @@ Check that the versions in your package.json are also not holding back any plasm In general, you probably want all @plasmicapp/@plasmicpkgs packages to be installed from your local verdaccio, rather than having some installed from npmjs.org and others installed from local, since you want to prevent mismatched and duplicate package versions. -### Odds and ends - -For a few packages like react-ssr-prepass, these are not currently integrated into the NX workspace system. -This is because Lerna doesn't work with git submodules. -You can publish these as individual packages with, for instance: - -``` -cd plasmicpkgs/SOMETHING -yarn install # Not included in the workspace install -yarn publish --registry=http://localhost:4873 -# Or with more options: yarn publish --canary --yes --include-merged-tags --no-git-tag-version --no-push --registry=http://localhost:4873 --force-publish -``` - ## Contributing code components (`plasmicpkgs`) The above general contribution instructions also apply to plasmicpkgs, so read that if you haven't done so. Before starting, we recommend reading our docs for Code Components: -- [Docs on code components][https://docs.plasmic.app/learn/code-components/] +- [Docs on code components](https://docs.plasmic.app/learn/code-components/) ### Creating a new package Ignore this if you are just updating an existing package. -To create a new plasmicpkg, the easiest approach is to clone one of the existing packages (like react-slick) and fix up the names in package.json and README. Then author your registration code in src. Please use `yarn` for package management. +To create a new plasmicpkg, the easiest approach is to clone one of the existing packages (like `plasmicpkgs/fetch`, which has an up-to-date build setup, see [plasmicpkgs/README.md](plasmicpkgs/README.md)), then fix names in package.json and README. Then author your registration code in src. Use `pnpm` for package management. The directory name should be the same name as the main package you'll be using to import the React components. Your package must be named `@plasmicpkgs/{package-name}` and start with version 1.0.0. @@ -211,17 +198,13 @@ So a typical `package.json` might look like this: ```json { "devDependencies": { - "@plasmicapp/data-sources": "0.1.53", - "@plasmicapp/host": "1.0.119", - "@size-limit/preset-small-lib": "^4.11.0", - "@types/node": "^14.0.26", - "size-limit": "^4.11.0", - "tsdx": "^0.14.1", + "@plasmicapp/data-sources": "1.0.21", + "@plasmicapp/host": "2.0.12", "tslib": "^2.2.0", - "typescript": "^3.9.7" + "typescript": "^5.7.3" }, "peerDependencies": { - "@plasmicapp/data-sources": ">=0.1.52", + "@plasmicapp/data-sources": ">=1.0.0", "@plasmicapp/host": ">=1.0.0", "react": ">=16.8.0", "react-dom": ">=16.8.0" diff --git a/README.md b/README.md index c974058562..1c0c59c6ec 100644 --- a/README.md +++ b/README.md @@ -68,8 +68,6 @@ - Interview with Lee Robinson, Plasmic as a visual CMS: https://www.youtube.com/watch?v=pcVzNR6FBAQ -- Emails with React.Email: coming soon - ## What is Plasmic? Plasmic is a visual builder for the web. @@ -210,7 +208,7 @@ Read [the full technical overview](https://docs.plasmic.app/learn/technical-over ### Bring your own React components You can register your own arbitrary custom React components for use as building blocks within Plasmic Studio. -[Learn more about code components](https://code-components.plasmic.site). +[Learn more about code components](https://docs.plasmic.app/learn/code-components/). ### Codegen diff --git a/ai/skills/plasmic-designer/README.md b/ai/skills/plasmic-designer/README.md new file mode 100644 index 0000000000..419d56b052 --- /dev/null +++ b/ai/skills/plasmic-designer/README.md @@ -0,0 +1,286 @@ +# Getting Started with Plasmic AI + +This guide walks you through everything you need to control your Plasmic project from an AI assistant (Claude Code, Claude Desktop, Codex, Cursor, etc.). Once set up, you can say things like _"add a hero section to the Homepage"_ and watch the AI read your project, design a section, and insert it into the canvas. + +The skill works by connecting your AI assistant to Chrome via the official [chrome-devtools-mcp](https://github.com/ChromeDevTools/chrome-devtools-mcp) MCP server. See the [Chrome DevTools MCP blog post](https://developer.chrome.com/blog/chrome-devtools-mcp-debug-your-browser-session) for background on what that is. + +**What you'll do in this guide:** + +1. Check prerequisites +2. Install the `chrome-devtools-mcp` server into your AI tool +3. Install the `plasmic-designer` skill into your AI tool +4. Run your first command end-to-end + +Each section ends with a **Verify** callout — a quick test you can run to confirm the step worked before moving on. + +--- + +## 1. Prerequisites + +Before you start, confirm you have the following: + +- **Node.js 20.19 LTS or newer.** Check with: + + ```sh + node --version + ``` + + If the version is older than `v20.19`, install the latest LTS from [nodejs.org](https://nodejs.org/) or via [nvm](https://github.com/nvm-sh/nvm). + +- **Google Chrome** (current stable, or Chrome for Testing). + +- **A Plasmic account** and a project open at [studio.plasmic.app](https://studio.plasmic.app). You'll need your **Project ID** — it's the string after `/projects/` in your Plasmic URL. For example, in `https://studio.plasmic.app/projects/j2Bm3mrbGNKsXVW3Wf5KpP` the project ID is `j2Bm3mrbGNKsXVW3Wf5KpP`. + +- **An AI assistant that supports MCP.** This guide covers: + - **CLIs**: Claude Code, Codex, Cursor, Opencode + - **GUI**: Claude Desktop + +--- + +## 2. Install `chrome-devtools-mcp` + +Pick **one** of the two tracks below, matching the tool you use. + +### 2A. For Agentic CLIs (Claude Code, Codex, Cursor, Opencode) + +If you're already comfortable with MCP configuration, this is a one-liner. + +**Claude Code**: + +```sh +claude mcp add chrome-devtools -- npx chrome-devtools-mcp@latest --no-usage-statistics +``` + +Alternatively, add the following to your project's `.claude/.mcp.json` or your user-global `~/.claude/.mcp.json`: + +```json +{ + "mcpServers": { + "chrome-devtools": { + "type": "stdio", + "command": "npx", + "args": ["chrome-devtools-mcp@latest", "--no-usage-statistics"] + } + } +} +``` + +**Cursor**: uses the same `mcpServers` JSON shape. Paste the snippet above into your Cursor MCP config (see [Cursor's MCP docs](https://cursor.com/docs/mcp)). + +**Codex**: uses TOML, not JSON. Add the following to `~/.codex/config.toml` (see [Codex MCP docs](https://developers.openai.com/codex/mcp)): + +```toml +[mcp_servers.chrome-devtools] +command = "npx" +args = ["chrome-devtools-mcp@latest", "--no-usage-statistics"] +``` + +**OpenCode**: uses a top-level `mcp` block in `opencode.json` (see [OpenCode MCP docs](https://opencode.ai/docs/mcp-servers/)): + +```json +{ + "mcp": { + "chrome-devtools": { + "type": "local", + "command": ["npx", "chrome-devtools-mcp@latest", "--no-usage-statistics"], + "enabled": true + } + } +} +``` + +> **Verify.** In your CLI, run `/mcp` (Claude Code) or ask _"list the MCP tools that are available"_. You should see tools beginning with `mcp__chrome-devtools__*` (e.g. `mcp__chrome-devtools__navigate_page`, `mcp__chrome-devtools__evaluate_script`). + +Skip ahead to [Section 3](#3-install-the-plasmic-designer-skill). + +### 2B. For Claude Desktop + +Claude Desktop requires a bit more care because it runs MCP servers as subprocesses that don't inherit your shell's `PATH`. Follow these steps in order. + +#### Step 1 — Locate the config file + +On macOS, the config lives at `~/Library/Application Support/Claude/claude_desktop_config.json`. The fastest way to open it: + +```sh +open -a TextEdit "$HOME/Library/Application Support/Claude/claude_desktop_config.json" +``` + +If the file doesn't exist yet, create it with an empty object `{}` inside. + +#### Step 2 — Find your absolute `npx` path + +Claude Desktop can't use a bare `"npx"` in the config — it needs the full path to the binary because MCP subprocesses don't inherit your shell's `PATH`. In Terminal: + +```sh +which npx +``` + +Example outputs, depending on how you installed Node: + +``` +/Users/you/.asdf/installs/nodejs/22.18.0/bin/npx +/Users/you/.nvm/versions/node/v22.11.0/bin/npx +/opt/homebrew/bin/npx +``` + +Keep that path handy — you'll paste it into the config in Step 3, and use the directory it's in for `env.PATH`. + +#### Step 3 — Add the MCP configuration + +Open `claude_desktop_config.json`. The file may be empty (`{}`) or it may already have content in it (such as a `"preferences"` block). Either way, you're going to **add a new top-level key called `"mcpServers"`** alongside whatever already exists — keep the existing content as-is. + +Before (your file might look like either of these — or something similar): + +**Empty file** + +```json +{} +``` + +**Existing config** + +```json +{ + "preferences": { + "quickEntryDictationShortcut": "capslock", + "sidebarMode": "chat" + } +} +``` + +You should add the `"mcpServers"` key as a sibling of any existing keys (using _your_ `npx` path from Step 2): + +```json +{ + "preferences": { + "quickEntryDictationShortcut": "capslock", + "sidebarMode": "chat" + }, + "mcpServers": { + "chrome-devtools": { + "command": "/Users/you/.asdf/installs/nodejs/22.18.0/bin/npx", + "args": ["chrome-devtools-mcp@latest", "--no-usage-statistics"], + "env": { + "PATH": "/Users/you/.asdf/installs/nodejs/22.18.0/bin:/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin" + } + } + } +} +``` + +What each part does: + +- `command` — absolute path to the `npx` binary. Required because Claude Desktop doesn't search your shell `$PATH`. +- `args[0]` — the package to run (`chrome-devtools-mcp@latest`). +- `--no-usage-statistics` — opts out of anonymous usage reporting. +- `env.PATH` — prepended with the node/npx directory, followed by typical system paths, so the MCP subprocess can find Chrome, git, and other system binaries it may need. Adjust the leading directory to match _your_ `npx` install path. + +Save the file. + +#### Step 4 — Fully restart Claude Desktop + +Quit Claude Desktop from the menu bar (**Claude → Quit Claude**). Closing the window isn't enough. Then open it again. + +> **Verify.** In Claude Desktop, open **Settings → Developer → Local MCP servers**. You should see a `chrome-devtools` entry with a blue **running** badge next to its name. The panel also shows the resolved `Command` and `Arguments` — confirm they match what you pasted. If the badge shows an error instead of **running**, click **View Logs** (or see the troubleshooting notes below). + +#### Claude Desktop troubleshooting + +| Symptom | Fix | +| ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- | +| `spawn npx ENOENT` | The `command` path is wrong. Re-run `which npx` and paste the exact output into `command`. | +| `Cannot find module 'chrome-devtools-mcp'` | Run `npx chrome-devtools-mcp@latest --help` in Terminal once to prime the npm cache, then restart Claude Desktop. | +| MCP server keeps dying | Check `~/Library/Logs/Claude/mcp*.log` (macOS). The log usually pinpoints the error. | +| Node version error | You're on Node < 20.19. Upgrade via [nvm](https://github.com/nvm-sh/nvm) or [brew](https://brew.sh). | + +If you're stuck, paste your config and the MCP log into Claude itself and ask for help — it can usually diagnose the issue. + +--- + +## 3. Install the Plasmic Designer Skill + +### 3A. For Agentic CLIs + +Skills live in a conventional directory your CLI already looks at: + +- **Claude Code** (per-project): `/.claude/skills/plasmic-designer/` +- **Claude Code** (user-global, available everywhere): `~/.claude/skills/plasmic-designer/` +- **Codex / Opencode / Cursor**: see each tool's skills documentation. + +Copy the skill folder: + +```sh +# User-global install (available from any project) +mkdir -p ~/.claude/skills +cp -r path/to/plasmic-designer ~/.claude/skills/ +``` + +The destination folder should contain: + +``` +plasmic-designer/ +├── SKILL.md +├── README.md +└── references/ + ├── design-guidelines.md + └── html-constraints.md +``` + +No other setup is needed — the CLI discovers skills automatically on start. + +> **Verify.** In your CLI, type `/plasmic-designer` (Claude Code) or ask _"what skills are available?"_. The `plasmic-designer` skill should appear in the list. + +### 3B. For Claude Desktop + +Claude Desktop supports custom skills via a ZIP upload. Your skill must be a ZIP file containing a folder with `SKILL.md` directly inside it. **The folder name must match the skill name** (`plasmic-designer`). + +1. Zip the `plasmic-designer` directory. From `ai/skills/` (the parent of `plasmic-designer/`), run: + + ```sh + zip -r plasmic-designer.zip plasmic-designer + ``` + +2. In the desktop app, go to **Customize → Skills**. +3. Click the **+** button, then choose **+ Create skill**. +4. Select **Upload a skill**. +5. Choose your `plasmic-designer.zip` file and upload it. +6. The skill appears in your list — toggle it on to activate it. + +> **Verify.** In Claude Desktop, start a new chat and ask _"what skills are available?"_. The `plasmic-designer` skill should appear in the list. + +--- + +## 4. First Use — End-to-End Walkthrough + +Let's design something. + +1. In your AI assistant, type: + + ``` + /plasmic-designer Add a hero section to the Homepage page + ``` + + Replace `` with your real project ID. In Claude Desktop, drop the `/plasmic-designer` prefix — start a new chat with the uploaded `plasmic-designer` skill toggled on and describe the task, including the project ID. + +2. The first tool call triggers an MCP permission prompt — _"Allow chrome-devtools to navigate_page?"_. Click **Allow**, and optionally **Always allow** so it doesn't ask again for this session. + +3. `chrome-devtools-mcp` launches a fresh Chrome window using its own dedicated profile. **The first time you run the skill, sign into Plasmic in that Chrome window** — the profile persists across runs, so you only need to do this once. + +4. Once you're signed in, ask the assistant to retry. It will navigate to your project, wait for the studio to load, read the component tree, and insert a new hero section. The Plasmic canvas updates live. + +5. Changes are normal Plasmic operations — hit **⌘Z** / **Ctrl+Z** inside Plasmic Studio to undo anything you don't like. + +--- + +## 5. Troubleshooting + +| Symptom | Likely cause | Fix | +| ----------------------------------- | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `PLASMIC_AI_TOOLS is undefined` | Studio hasn't finished loading, or the page isn't a Plasmic project URL | Wait a few seconds and retry. Confirm the URL is `studio.plasmic.app/projects//`. | +| Assistant lands on the login page | Plasmic session expired or you haven't signed in yet in the MCP Chrome | Sign into Plasmic in the Chrome window that `chrome-devtools-mcp` opened, then ask the assistant to retry. | +| `spawn npx ENOENT` (Claude Desktop) | `PATH` is missing from the MCP subprocess | Use absolute paths for `command`, add `env.PATH` (see [Section 2B, Step 3](#step-3--add-the-mcp-configuration)). | +| Node version error | Node < 20.19 | Upgrade Node. | +| Skill not listed in CLI | Wrong directory, or folder doesn't contain `SKILL.md` | Confirm `~/.claude/skills/plasmic-designer/SKILL.md` exists. | + +--- + +Feedback, bug reports, and feature requests: reach out in the [Plasmic community Slack](https://plasmic.app/slack) or on the [Plasmic forum](https://forum.plasmic.app/). diff --git a/ai/skills/plasmic-designer/SKILL.md b/ai/skills/plasmic-designer/SKILL.md new file mode 100644 index 0000000000..65bce22759 --- /dev/null +++ b/ai/skills/plasmic-designer/SKILL.md @@ -0,0 +1,178 @@ +--- +name: plasmic-designer +description: Build and modify Plasmic Studio designs using copilot tools via Chrome DevTools MCP. First argument should be a project ID, followed by the design request. Use this skill whenever the user mentions Plasmic, Plasmic Studio, visual web builder, or asks to design, build, edit, or modify UI components, pages, sections, or layouts inside a Plasmic project. Also trigger when the user references a Plasmic project ID, wants to add/remove/restyle elements in a visual editor, or asks about Plasmic component props, variants, slots, or tokens — even if they don't say "Plasmic" explicitly but describe visual design work that implies it. +allowed-tools: mcp__chrome-devtools__evaluate_script mcp__chrome-devtools__navigate_page mcp__chrome-devtools__take_screenshot mcp__chrome-devtools__list_pages +metadata: + version: "1.1.0" +--- + +# Plasmic Designer + +Skill Version: 1.1.0 + +Control Plasmic Studio through Chrome DevTools MCP to build and modify production-ready interfaces. + +## Arguments + +`$ARGUMENTS` should contain a **project ID** as the first word, followed by the design request. + +Example: `/plasmic-designer j2Bm3mrbGNKsXVW3Wf5KpP Add a hero section to the Homepage` + +If no project ID is provided, or if the conversation references multiple projects and it's unclear which one to use, ask the user to confirm the project ID before proceeding. + +## Setup + +The studio base URL is `https://studio.plasmic.app` by default. Only use `http://localhost:3003` if the user explicitly mentions localhost, a local dev server, or a local environment. + +1. **Navigate to the project** using `navigate_page` to open `{baseUrl}/projects/{projectId}/` + +2. **Wait for studio to load and identify the session** — the studio takes a few seconds to initialize. Poll until `window.PLASMIC_AI_TOOLS` is available, then call `identify()` once, before any other tool. + + ```javascript + async () => { + for (let i = 0; i < 30; i++) { + if (window.PLASMIC_AI_TOOLS) { + return await window.PLASMIC_AI_TOOLS.identify({ + model: "", + client: "", + skill: "", + outputFormat: "", + }); + } + await new Promise((r) => setTimeout(r, 1000)); + } + return { + success: false, + error: { message: "Studio failed to load." }, + }; + }; + ``` + + Fields (all required): + + - `model` — Model name as known to the agent (e.g. `claude-opus-4-7`, `anthropic/claude-sonnet-4-6`, `gpt-5.3-codex`). + - `client` — AI client/CLI invoking the tool (e.g. `claude-code`, `claude-code@1.x`, `opencode`, `cursor`, `cline`). + - `skill` — Skill name and version being used (e.g. `plasmic-designer@1.1.0`, `unknown`). + - `outputFormat` — Preferred format for tool output, `"json"` or `"xml"`. + + Pass `"unknown"` for any required string field you cannot reliably identify. + + If `success` is false, inform the user and stop. + +## Workflow + +Follow an explore-first pattern for every request: + +1. **Understand** — `read` the current state before changing anything; prefer reusing existing components over new HTML. +2. **Plan** — For complex requests, break the work into steps before acting. +3. **Execute** — Make changes with the appropriate tools. +4. **Verify** — `read` to confirm structural changes; Optionally, `take_screenshot` to confirm the result visually + +## Using the tools + +The toolset is exposed at runtime and is the source of truth — **introspect it, don't rely on a hardcoded list.** `_meta` is a `Record` keyed by tool name: + +```ts +interface CopilotToolMeta { + toolName: string; + title: string; + description: string; + inputSchema: JSONSchema7; // JSON Schema (draft-07) +} +``` + +Read it once with `evaluate_script` (return the object directly; `evaluate_script` serializes it for you), and treat each tool's `inputSchema` as authoritative for field names, required fields, enums, and nesting: + +```javascript +() => window.PLASMIC_AI_TOOLS._meta; +``` + +Call a tool with an async arrow function (tools return Promises), passing one input object that conforms to its schema: + +```javascript +async () => await window.PLASMIC_AI_TOOLS.({ + /* fields per window.PLASMIC_AI_TOOLS._meta..inputSchema */ +}); +``` + +Every call resolves to a `CopilotToolCallResult`: + +```ts +type CopilotToolCallResult = + | { success: true; output: string } + | { + success: false; + error: { message: string; type: "TOOL_NOT_FOUND" | "EXECUTION_FAILED" }; + }; +``` + +Check `success` each time; on a UUID error, re-read for fresh UUIDs and retry. + +Call `read` before any mutation to get project structure and the UUIDs every other tool needs. Its output is usually XML: parse it for UUIDs, props, variants, and slots, and read selectively (specific components/elements) on large projects. After a successful mutation the canvas updates automatically. + +## Components & Variants + +### Targeting + +Mutation tools require a `componentUuid` (from `read` results). They accept an optional `variantUuids` array — when omitted, changes apply to the base variant. + +### Reusing Existing Components + +When you read a component, the output includes **props** (text, boolean, enum, number, href with defaults), **variants** (boolean toggles or enum option groups), **slots** (named content areas), **base-variant-tpl-tree** (element tree with styles), and **VariantSettings** (style overrides per variant). Review these to understand the component before using it. + +To use a component in insertHtml: + +```html + + Slot content here + +``` + +- `data-plasmic-component` must exactly match the component name from `read()` (case-sensitive). +- `data-plasmic-project` (optional) is the id of the imported project the component comes from. Omit it for components in the current project; set it to use a component from an imported project. +- `data-plasmic-name` (optional) names this component instance in the tree. It's a semantic name picked up by Plasmic codegen to override the element in the generated code. +- `data-props` is a JSON object for both props and variant activations. Boolean variants: `"group": true`. Enum variants: `"group": "optionName"`. +- `` children fill named slots; its children become the slot content. +- **Only layout/position styles work on instances**: width, height, min/max sizing, margin, position, top/left/bottom/right, z-index, order, align-self, flex-grow/shrink, opacity, display (only `none`), transform, and transition properties. Background, padding, color, font, border, etc. are ignored on instances — use `changeElement` on the component's root element instead. This is a Plasmic platform constraint, not a preference. + +## HTML Code Guidelines + +Before generating HTML, read `references/html-constraints.md` for the full set of rules. The key points: + +- Use ` +
+

Welcome

+

A place in the forest

+
+``` + +Reserve inline `style` attributes only for truly unique one-off values. + +## Responsive Design + +All designs must be responsive. Before generating HTML for a Page component, read the project's breakpoint configuration: + +```javascript +async () => { + return await window.PLASMIC_AI_TOOLS.read({ + projects: [{ projectId: "", screenBreakpoints: true }], + }); +}; +``` + +Each breakpoint has a `name`, `uuid`, and `maxWidth`. Use `@media (max-width: px)` queries inside the ` -
+
-

+ {$ctx.params.slug} +

+ - - {(() => { - try { - return $ctx.params.slug; - } catch (e) { - if ( - e instanceof TypeError || - e?.plasmicType === "PlasmicUndefinedDataError" - ) { - return "Page 1"; - } - throw e; - } - })()} - - + {`SHA-256(${$ctx.params.slug}): ${$q.sha256.data}`} + { + console.log("Running SHA-256"); + const data = new TextEncoder().encode($ctx.params.slug); + const hash = await crypto.subtle.digest("SHA-256", data); + return [...new Uint8Array(hash)] + .map(b => b.toString(16).padStart(2, "0")) + .join("-"); + }, + args: ({ $q, $props, $ctx, $state }) => { + return [ + { + $ctx: { + params: $ctx["params"] + }, + $props: {}, + $q: {}, + $state: {} + } + ]; + } + } + }, + stateSpecs: [], + propsContext: {}, + children: [ + { + type: "component", + queries: {}, + stateSpecs: [], + propsContext: {}, + children: [ + { + type: "component", + queries: {}, + stateSpecs: [ + { + path: "showStartIcon", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.showStartIcon + }, + { + path: "showEndIcon", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.showEndIcon + }, + { + path: "isDisabled", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.isDisabled + }, + { + path: "shape", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.shape + }, + { + path: "size", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.size + }, + { + path: "color", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.color + } + ], + + propsContext: { submitsForm: ({ $q, $props, $ctx, $state }) => true }, + children: [] + } + ] + } + ] +}; + function mkPathFromRouteAndParams(route, params) { if (!params) { return route; @@ -46,11 +137,21 @@ export async function makeAppRouterPageCtx({ params, searchParams }) { pageRoute, pagePath, params: pageParams, - query: (await searchParams) ?? {} + query: {} }; return ctx; } -export function PlasmicDynamicPageServer(props) { - return ; +export async function PlasmicDynamicPageServer(props) { + const { params, searchParams, ...rest } = props; + const ctx = await makeAppRouterPageCtx({ params, searchParams }); + const { cache: prefetchedCache } = await unstable_executePlasmicQueries( + serverQueryTree, + { $props: rest, $ctx: ctx } + ); + return ( + + + + ); } diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/components/plasmic/create_plasmic_app/PlasmicHomepage.jsx b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/components/plasmic/create_plasmic_app/PlasmicHomepage.jsx index dd84d91516..2931936a1d 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/components/plasmic/create_plasmic_app/PlasmicHomepage.jsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/components/plasmic/create_plasmic_app/PlasmicHomepage.jsx @@ -24,7 +24,6 @@ import RandomDynamicPageButton from "../../RandomDynamicPageButton"; // plasmic- import { _useGlobalVariants } from "./plasmic"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectModule import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic.module.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss import sty from "./PlasmicHomepage.module.css"; // plasmic-import: 6uuAAE1jiCew/css const emptyProxy = new Proxy(() => "", { @@ -93,17 +92,17 @@ function PlasmicHomepage__RenderFunc(props) { } `} -
+

- {"create-plasmic-app"} + {hasVariant(globalVariants, "screen", "desktopOnly") + ? "create-plasmic-app" + : "cpa"}

- {hasVariant(globalVariants, "screen", "desktopOnly") ? ( - - - { - "This project is used by run-cpa.ts in the create-plasmic-app repo.\n\nrun-cpa.ts runs create-plasmic-app for many combinations of args (e.g. nextjs + appDir + loader + typescript) to check for changes in generated files. Any changes to this project will result in lots of changes to the generated files. " - } - - - {"Therefore, please avoid changing this project."} - - - ) : ( - - - { - "If you haven't already done so, go back and learn the basics by going through the Plasmic Levels tutorial.\n\nIt's always easier to start from examples! Add a new page using a template\u2014do this from the list of pages in the top left (the gray + button).\n\nOr press the big blue + button to start dragging items into this page.\n\nIntegrate this project into your codebase\u2014press the " - } - - - {"Code"} - - - { - " button in the top right and follow the quickstart instructions.\n\nJoin our Slack community (icon in bottom left) for help any time." - } - - - )} + { + "This project is used by run-cpa.ts in the create-plasmic-app repo.\n\n\nrun-cpa.ts runs create-plasmic-app for many combinations of args (e.g. nextjs + appDir + loader + typescript) to check for changes in generated files. Any changes to this project will result in lots of changes to the generated files. Therefore, please avoid changing this project.\n" + }
* { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) { + font-family: var(--mixin-prihNuSPt-kU_font-family); + font-size: var(--mixin-prihNuSPt-kU_font-size); + font-weight: var(--mixin-prihNuSPt-kU_font-weight); + font-style: var(--mixin-prihNuSPt-kU_font-style); + color: var(--mixin-prihNuSPt-kU_color); + text-align: var(--mixin-prihNuSPt-kU_text-align); + text-transform: var(--mixin-prihNuSPt-kU_text-transform); + line-height: var(--mixin-prihNuSPt-kU_line-height); + letter-spacing: var(--mixin-prihNuSPt-kU_letter-spacing); + white-space: var(--mixin-prihNuSPt-kU_white-space); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h4:where(.h4__47tFX), +h4:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h4__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h4, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h4, +h4:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-pKcLzBwr6rlS_font-size); + font-weight: var(--mixin-pKcLzBwr6rlS_font-weight); + letter-spacing: var(--mixin-pKcLzBwr6rlS_letter-spacing); + line-height: var(--mixin-pKcLzBwr6rlS_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h5:where(.h5__47tFX), +h5:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h5__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h5, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h5, +h5:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-Q3MZaojcv1qw_font-size); + font-weight: var(--mixin-Q3MZaojcv1qw_font-weight); + letter-spacing: var(--mixin-Q3MZaojcv1qw_letter-spacing); + line-height: var(--mixin-Q3MZaojcv1qw_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h6:where(.h6__47tFX), +h6:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h6__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h6, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h6, +h6:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-WQN-U7Y-Mt0i_font-size); + font-weight: var(--mixin-WQN-U7Y-Mt0i_font-weight); + line-height: var(--mixin-WQN-U7Y-Mt0i_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) a:where(.a__47tFX), +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.a__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) a, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) a, +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + color: var(--mixin-_NIhBtBbqybq_color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) blockquote:where(.blockquote__47tFX), +blockquote:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.blockquote__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) blockquote, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) blockquote, +blockquote:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + color: var(--mixin-5965DRLFNjWi_color); + padding-left: var(--mixin-5965DRLFNjWi_padding-left); + border-left: var(--mixin-5965DRLFNjWi_border-left-width) + var(--mixin-5965DRLFNjWi_border-left-style) + var(--mixin-5965DRLFNjWi_border-left-color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h1:where(.h1__47tFX), +h1:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h1__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h1, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h1, +h1:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-_J1_6dhZex0j_font-size); + font-weight: var(--mixin-_J1_6dhZex0j_font-weight); + letter-spacing: var(--mixin-_J1_6dhZex0j_letter-spacing); + line-height: var(--mixin-_J1_6dhZex0j_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h2:where(.h2__47tFX), +h2:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h2__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h2, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h2, +h2:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-tyWR-eqFmXa2R_font-size); + font-weight: var(--mixin-tyWR-eqFmXa2R_font-weight); + letter-spacing: var(--mixin-tyWR-eqFmXa2R_letter-spacing); + line-height: var(--mixin-tyWR-eqFmXa2R_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h3:where(.h3__47tFX), +h3:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h3__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h3, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h3, +h3:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-VSfYlZt0xLESb_font-size); + font-weight: var(--mixin-VSfYlZt0xLESb_font-weight); + letter-spacing: var(--mixin-VSfYlZt0xLESb_letter-spacing); + line-height: var(--mixin-VSfYlZt0xLESb_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) code:where(.code__47tFX), +code:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.code__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) code, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) code, +code:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + background: #f8f8f8; + font-family: var(--mixin-2Dy3yomrqskwe_font-family); + border-radius: var(--mixin-2Dy3yomrqskwe_border-top-left-radius) + var(--mixin-2Dy3yomrqskwe_border-top-right-radius) + var(--mixin-2Dy3yomrqskwe_border-bottom-right-radius) + var(--mixin-2Dy3yomrqskwe_border-bottom-left-radius); + padding: var(--mixin-2Dy3yomrqskwe_padding-top) + var(--mixin-2Dy3yomrqskwe_padding-right) + var(--mixin-2Dy3yomrqskwe_padding-bottom) + var(--mixin-2Dy3yomrqskwe_padding-left); + border-top: var(--mixin-2Dy3yomrqskwe_border-top-width) + var(--mixin-2Dy3yomrqskwe_border-top-style) + var(--mixin-2Dy3yomrqskwe_border-top-color); + border-right: var(--mixin-2Dy3yomrqskwe_border-right-width) + var(--mixin-2Dy3yomrqskwe_border-right-style) + var(--mixin-2Dy3yomrqskwe_border-right-color); + border-bottom: var(--mixin-2Dy3yomrqskwe_border-bottom-width) + var(--mixin-2Dy3yomrqskwe_border-bottom-style) + var(--mixin-2Dy3yomrqskwe_border-bottom-color); + border-left: var(--mixin-2Dy3yomrqskwe_border-left-width) + var(--mixin-2Dy3yomrqskwe_border-left-style) + var(--mixin-2Dy3yomrqskwe_border-left-color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) pre:where(.pre__47tFX), +pre:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.pre__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) pre, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) pre, +pre:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + background: #f8f8f8; + font-family: var(--mixin-0u7VwjXF8Kvpe_font-family); + border-radius: var(--mixin-0u7VwjXF8Kvpe_border-top-left-radius) + var(--mixin-0u7VwjXF8Kvpe_border-top-right-radius) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-right-radius) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-left-radius); + padding: var(--mixin-0u7VwjXF8Kvpe_padding-top) + var(--mixin-0u7VwjXF8Kvpe_padding-right) + var(--mixin-0u7VwjXF8Kvpe_padding-bottom) + var(--mixin-0u7VwjXF8Kvpe_padding-left); + border-top: var(--mixin-0u7VwjXF8Kvpe_border-top-width) + var(--mixin-0u7VwjXF8Kvpe_border-top-style) + var(--mixin-0u7VwjXF8Kvpe_border-top-color); + border-right: var(--mixin-0u7VwjXF8Kvpe_border-right-width) + var(--mixin-0u7VwjXF8Kvpe_border-right-style) + var(--mixin-0u7VwjXF8Kvpe_border-right-color); + border-bottom: var(--mixin-0u7VwjXF8Kvpe_border-bottom-width) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-style) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-color); + border-left: var(--mixin-0u7VwjXF8Kvpe_border-left-width) + var(--mixin-0u7VwjXF8Kvpe_border-left-style) + var(--mixin-0u7VwjXF8Kvpe_border-left-color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) ol:where(.ol__47tFX), +ol:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.ol__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) ol, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) ol, +ol:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + display: var(--mixin-D70_omI9mm34j_display); + flex-direction: var(--mixin-D70_omI9mm34j_flex-direction); + align-items: var(--mixin-D70_omI9mm34j_align-items); + justify-content: var(--mixin-D70_omI9mm34j_justify-content); + list-style-position: var(--mixin-D70_omI9mm34j_list-style-position); + padding-left: var(--mixin-D70_omI9mm34j_padding-left); + position: var(--mixin-D70_omI9mm34j_position); + list-style-type: var(--mixin-D70_omI9mm34j_list-style-type); + column-gap: var(--mixin-D70_omI9mm34j_column-gap); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) ul:where(.ul__47tFX), +ul:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.ul__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) ul, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) ul, +ul:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + display: var(--mixin-6zRO9vzPQi4g5_display); + flex-direction: var(--mixin-6zRO9vzPQi4g5_flex-direction); + align-items: var(--mixin-6zRO9vzPQi4g5_align-items); + justify-content: var(--mixin-6zRO9vzPQi4g5_justify-content); + list-style-position: var(--mixin-6zRO9vzPQi4g5_list-style-position); + padding-left: var(--mixin-6zRO9vzPQi4g5_padding-left); + position: var(--mixin-6zRO9vzPQi4g5_position); + list-style-type: var(--mixin-6zRO9vzPQi4g5_list-style-type); + column-gap: var(--mixin-6zRO9vzPQi4g5_column-gap); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) a:where(.a__47tFX):hover, +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.a__47tFX):hover, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) a:hover, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) a:hover, +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags):hover { + color: var(--mixin-u1gAzUhZSVyWj_color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) li:where(.li__47tFX), +li:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.li__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) li, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) li, +li:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { +} diff --git a/platform/wab/src/wab/client/plasmic/plasmic_basic_components/plasmic_plasmic_basic_components.module.css b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/components/plasmic/plasmic__default_style.css similarity index 84% rename from platform/wab/src/wab/client/plasmic/plasmic_basic_components/plasmic_plasmic_basic_components.module.css rename to packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/components/plasmic/plasmic__default_style.css index ee3499f835..b347b0c883 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_basic_components/plasmic_plasmic_basic_components.module.css +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/components/plasmic/plasmic__default_style.css @@ -7,6 +7,8 @@ background: none; background-size: 100% 100%; background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; box-shadow: none; box-sizing: border-box; text-decoration-line: none; @@ -20,9 +22,10 @@ background: none; background-size: 100% 100%; background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; box-shadow: none; box-sizing: border-box; - text-decoration-line: none; margin: 0; border-width: 0px; } @@ -183,6 +186,58 @@ text-transform: inherit; } +:where(.i) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text i) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.em) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text em) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.strong) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text strong) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} + :where(.h1) { font-size: inherit; font-weight: inherit; @@ -306,5 +361,3 @@ .__wab_expr_html_text { white-space: normal; } -:where(.root_reset) { -} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/eslint.config.mjs b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/eslint.config.mjs new file mode 100644 index 0000000000..f443835250 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/eslint.config.mjs @@ -0,0 +1,16 @@ +import { defineConfig, globalIgnores } from "eslint/config"; +import nextVitals from "eslint-config-next/core-web-vitals"; + +const eslintConfig = defineConfig([ + ...nextVitals, + // Override default ignores of eslint-config-next. + globalIgnores([ + // Default ignores of eslint-config-next: + ".next/**", + "out/**", + "build/**", + "next-env.d.ts", + ]), +]); + +export default eslintConfig; diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/jsconfig.json b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/jsconfig.json new file mode 100644 index 0000000000..2a2e4b3bf8 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/jsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "paths": { + "@/*": ["./*"] + } + } +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/next.config.mjs b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/next.config.mjs new file mode 100644 index 0000000000..741916060f --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/next.config.mjs @@ -0,0 +1,7 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + trailingSlash: true, + reactStrictMode: true, +}; + +export default nextConfig; \ No newline at end of file diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/package.json b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/package.json index cd3f788fb3..546381b0a7 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/package.json +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/package.json @@ -6,17 +6,17 @@ "dev": "next dev", "build": "next build", "start": "next start", - "lint": "next lint" + "lint": "eslint" }, "dependencies": { - "@plasmicapp/cli": "^0.1.359", - "@plasmicapp/react-web": "^0.2.425", - "next": "14.2.35", - "react": "^18", - "react-dom": "^18" + "@plasmicapp/cli": "^0.1.364", + "@plasmicapp/react-web": "^1.0.12", + "next": "16.2.9", + "react": "19.2.4", + "react-dom": "19.2.4" }, "devDependencies": { - "eslint": "^8", - "eslint-config-next": "14.2.35" + "eslint": "^9", + "eslint-config-next": "16.2.9" } } diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/plasmic-init-client.jsx b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/plasmic-init-client.jsx new file mode 100644 index 0000000000..e817936290 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/plasmic-init-client.jsx @@ -0,0 +1,16 @@ +"use client"; + +import { PlasmicRootProvider } from "@plasmicapp/react-web"; +import Link from "next/link"; + +/** + * ClientPlasmicRootProvider is a Client Component that passes Next's Link to PlasmicRootProvider. + * + * Props passed from a Server Component to a Client Component must be serializable. + * https://nextjs.org/docs/app/getting-started/server-and-client-components#passing-data-from-server-to-client-components + */ +export function ClientPlasmicRootProvider( + props +) { + return ; +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/plasmic.json b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/plasmic.json index 8341b6c930..9d9b51f0b6 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/plasmic.json +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-js/plasmic.json @@ -7,7 +7,7 @@ }, "style": { "scheme": "css-modules", - "defaultStyleCssFilePath": "plasmic/plasmic__default_style.module.css" + "defaultStyleCssFilePath": "plasmic/plasmic__default_style.css" }, "images": { "scheme": "public-files", @@ -26,7 +26,7 @@ "projectApiToken": "7BRFratDxPLMGZHnd2grV5QP6mlHcZ1AK3BJSIeh7xzUlHgWh25XpgXvUaKAqHXFMXQQuzpADqboibF6nqNWQ", "projectName": "create-plasmic-app", "version": "latest", - "cssFilePath": "plasmic/create_plasmic_app/plasmic.module.css", + "cssFilePath": "plasmic/create_plasmic_app/plasmic.css", "components": [ { "id": "6uuAAE1jiCew", @@ -143,6 +143,6 @@ "nextjsConfig": { "pagesDir": "../app" }, - "cliVersion": "0.1.359", - "$schema": "https://unpkg.com/@plasmicapp/cli@0.1.359/dist/plasmic.schema.json" + "cliVersion": "0.1.364", + "$schema": "https://unpkg.com/@plasmicapp/cli@0.1.364/dist/plasmic.schema.json" } diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/dynamic/[slug]/page.tsx b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/dynamic/[slug]/page.tsx index 33bf967931..349a9aecfb 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/dynamic/[slug]/page.tsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/dynamic/[slug]/page.tsx @@ -7,17 +7,34 @@ import { PlasmicDynamicPageServer, makeAppRouterPageCtx, generateDynamicMetadata, - DynamicPageServerSkeletonProps + DynamicPageServerSkeletonProps, + serverQueryTree } from "../../../components/plasmic/create_plasmic_app/PlasmicDynamicPageServer"; - import type { Metadata, ResolvingMetadata } from "next"; +import { unstable_executePlasmicQueries } from "@plasmicapp/react-web/lib/data-sources"; + +// Uncomment and populate to statically pre-render this route at build time. +// Each entry should be an object whose keys match the dynamic segments in the route path. +// See https://nextjs.org/docs/app/api-reference/functions/generate-static-params +// +// export async function generateStaticParams() { +// return []; +// } + +const $$ = {}; + +const metadataQueryTree = { ...serverQueryTree, children: [] }; export async function generateMetadata( { params, searchParams }: DynamicPageServerSkeletonProps, parent: ResolvingMetadata ): Promise { const ctx = await makeAppRouterPageCtx({ params, searchParams }); - const metadata = generateDynamicMetadata({}, ctx); + const { queries: $q } = await unstable_executePlasmicQueries( + metadataQueryTree, + { $props: {}, $ctx: ctx } + ); + const metadata = generateDynamicMetadata($q, ctx); return { ...(await parent), ...metadata } as unknown as Metadata; } @@ -43,13 +60,14 @@ async function DynamicPage({ // Next.js Custom App component // (https://nextjs.org/docs/advanced-features/custom-app). + const ctx = await makeAppRouterPageCtx({ params, searchParams }); return ( - + ); } diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/globals.css b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/globals.css new file mode 100644 index 0000000000..3dd82369c1 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/globals.css @@ -0,0 +1,10 @@ +* { + box-sizing: border-box; + padding: 0; + margin: 0; +} + +a { + color: inherit; + text-decoration: none; +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/layout.tsx b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/layout.tsx index 326ce9aefb..dd0a9b9ac9 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/layout.tsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/layout.tsx @@ -1,6 +1,6 @@ +import "../components/plasmic/create_plasmic_app/plasmic.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss import '@/app/globals.css' -import { PlasmicRootProvider } from "@plasmicapp/react-web"; -import Link from "next/link"; +import { ClientPlasmicRootProvider } from "@/plasmic-init-client"; export default function RootLayout({ children, @@ -10,9 +10,9 @@ export default function RootLayout({ return ( - + {children} - + ); diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/page.tsx b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/page.tsx index 598834f1e5..f679a715ef 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/page.tsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/page.tsx @@ -9,7 +9,6 @@ import { generateDynamicMetadata, HomepageServerSkeletonProps } from "../components/plasmic/create_plasmic_app/PlasmicHomepageServer"; - import type { Metadata, ResolvingMetadata } from "next"; export async function generateMetadata( @@ -40,11 +39,12 @@ async function Homepage({ params, searchParams }: HomepageServerSkeletonProps) { // Next.js Custom App component // (https://nextjs.org/docs/advanced-features/custom-app). + const ctx = await makeAppRouterPageCtx({ params, searchParams }); return ( diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/plasmic-host/page.tsx b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/plasmic-host/page.tsx index 29c9c1a3b8..c6526812d9 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/plasmic-host/page.tsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/app/plasmic-host/page.tsx @@ -1,3 +1,5 @@ +"use client"; + import * as React from 'react'; import { PlasmicCanvasHost, registerComponent } from '@plasmicapp/react-web/lib/host'; diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/RandomDynamicPageButton.tsx b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/RandomDynamicPageButton.tsx index 7bb41e78a2..4b45114ca9 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/RandomDynamicPageButton.tsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/RandomDynamicPageButton.tsx @@ -19,8 +19,7 @@ import { // // You can also stop extending from DefaultRandomDynamicPageButtonProps altogether and have // total control over the props for your component. -export interface RandomDynamicPageButtonProps - extends DefaultRandomDynamicPageButtonProps {} +export interface RandomDynamicPageButtonProps extends DefaultRandomDynamicPageButtonProps {} function RandomDynamicPageButton(props: RandomDynamicPageButtonProps) { // Use PlasmicRandomDynamicPageButton to render this component as it was diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicButton.module.css b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicButton.module.css new file mode 100644 index 0000000000..7da840be69 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicButton.module.css @@ -0,0 +1,468 @@ +.root { + display: flex; + position: relative; + flex-direction: row; + align-items: center; + justify-content: center; + background: #232320; + cursor: pointer; + transition-property: background; + transition-duration: 0.1s; + column-gap: 8px; + -webkit-transition-property: background; + -webkit-transition-duration: 0.1s; + border-radius: 6px; + padding: 12px 20px; + border-width: 0px; +} +.rootshowStartIcon { + padding-left: 16px; +} +.rootshowEndIcon { + padding-right: 16px; +} +.rootisDisabled { + cursor: not-allowed; + opacity: 0.6; +} +.rootshape_rounded { + padding-left: 20px; + padding-right: 20px; + min-width: 100px; + border-radius: 999px; +} +.rootshape_round { + border-radius: 50%; + padding: 12px; +} +.rootshape_sharp { + border-radius: 0px; +} +.rootsize_compact { + padding: 6px 16px; +} +.rootsize_minimal { + padding: 0px; +} +.rootcolor_blue { + background: #0091ff; +} +.rootcolor_green { + background: #30a46c; +} +.rootcolor_yellow { + background: #f5d90a; +} +.rootcolor_red { + background: #e54d2e; +} +.rootcolor_sand { + background: #717069; +} +.rootcolor_white { + background: #ffffff; +} +.rootcolor_softBlue { + background: #edf6ff; +} +.rootcolor_softGreen { + background: #e9f9ee; +} +.rootcolor_softYellow { + background: #fffbd1; +} +.rootcolor_softRed { + background: #fff0ee; +} +.rootcolor_softSand { + background: #eeeeec; +} +.rootcolor_clear { + background: #ffffff00; +} +.rootcolor_link { + background: #ffffff00; +} +.rootshape_rounded_showStartIcon { + padding-left: 16px; +} +.rootshowEndIcon_shape_rounded { + padding-right: 16px; +} +.rootshape_round_size_compact { + padding: 6px; +} +.root___focusVisibleWithin { + box-shadow: 0px 0px 0px 3px #96c7f2; + outline: none; +} +.root:focus-within:focus-within { + box-shadow: 0px 0px 0px 3px #96c7f2; + outline: none; +} +.root:hover:hover { + background: #282826; +} +.root:active:active { + background: #2e2e2b; +} +.rootcolor_blue:hover:hover { + background: #369eff; +} +.rootcolor_blue:active:active { + background: #52a9ff; +} +.rootcolor_green:hover:hover { + background: #3cb179; +} +.rootcolor_green:active:active { + background: #4cc38a; +} +.rootcolor_yellow:hover:hover { + background: #ffef5c; +} +.rootcolor_yellow:active:active { + background: #f0c000; +} +.rootcolor_red:hover:hover { + background: #ec5e41; +} +.rootcolor_red:active:active { + background: #f16a50; +} +.rootcolor_sand:hover:hover { + background: #7f7e77; +} +.rootcolor_sand:active:active { + background: #a1a09a; +} +.rootcolor_white:hover:hover { + background: #ffef5c; +} +.rootcolor_white:active:active { + background: #f0c000; +} +.rootcolor_softBlue:hover:hover { + background: #e1f0ff; +} +.rootcolor_softBlue:active:active { + background: #cee7fe; +} +.rootcolor_softGreen:active:active { + background: #ccebd7; +} +.rootcolor_softGreen:hover:hover { + background: #ddf3e4; +} +.rootcolor_softYellow:active:active { + background: #fef2a4; +} +.rootcolor_softYellow:hover:hover { + background: #fff8bb; +} +.rootcolor_softRed:active:active { + background: #fdd8d3; +} +.rootcolor_softRed:hover:hover { + background: #ffe6e2; +} +.rootcolor_softSand:hover:hover { + background: #e9e9e6; +} +.rootcolor_softSand:active:active { + background: #e3e3e0; +} +.rootcolor_clear:hover:hover { + background: #e9e9e6; +} +.rootcolor_clear:active:active { + background: #e3e3e0; +} +.rootcolor_link:hover:hover { + background: #ffffff00; +} +.rootcolor_link:active:active { + background: #ffffff00; +} +.startIconContainer { + display: flex; + position: relative; + flex-direction: row; + align-items: stretch; + justify-content: flex-start; +} +.startIconContainershowStartIcon { + display: flex; +} +.slotTargetStartIcon { + color: #ededec; +} +.slotTargetStartIconcolor_yellow { + color: #35290f; +} +.slotTargetStartIconcolor_white { + color: #35290f; +} +.slotTargetStartIconcolor_softBlue { + color: #006adc; +} +.slotTargetStartIconcolor_softGreen { + color: #18794e; +} +.slotTargetStartIconcolor_softYellow { + color: #946800; +} +.slotTargetStartIconcolor_softRed { + color: #ca3214; +} +.slotTargetStartIconcolor_softSand { + color: #706f6c; +} +.slotTargetStartIconcolor_clear { + color: #1b1b18; +} +.slotTargetStartIconcolor_link { + color: #0091ff; +} +.rootcolor_link:hover .slotTargetStartIconcolor_link { + color: #0081f1; +} +.rootcolor_link:active .slotTargetStartIconcolor_link { + color: #006adc; +} +.svg__s6Xxe { + position: relative; + object-fit: cover; + width: auto; + height: 1em; +} +.contentContainer { + display: flex; + position: relative; + flex-direction: row; + align-items: stretch; + justify-content: flex-start; +} +.root .contentContainer___focusVisibleWithin { + outline: none; +} +.slotTargetChildren { + color: #ededec; + font-weight: 500; + white-space: pre; +} +.slotTargetChildrencolor_blue { + color: #ffffff; +} +.slotTargetChildrencolor_green { + color: #ffffff; +} +.slotTargetChildrencolor_yellow { + color: #35290f; +} +.slotTargetChildrencolor_red { + color: #ffffff; +} +.slotTargetChildrencolor_sand { + color: #ffffff; +} +.slotTargetChildrencolor_white { + color: #1b1b18; +} +.slotTargetChildrencolor_softBlue { + color: #006adc; +} +.slotTargetChildrencolor_softGreen { + color: #18794e; +} +.slotTargetChildrencolor_softYellow { + color: #946800; +} +.slotTargetChildrencolor_softRed { + color: #ca3214; +} +.slotTargetChildrencolor_softSand { + color: #1b1b18; +} +.slotTargetChildrencolor_clear { + color: #1b1b18; +} +.slotTargetChildrencolor_link { + color: #0091ff; +} +.root:focus-within .slotTargetChildren > *, +.root:focus-within .slotTargetChildren > :global(.__wab_slot) > *, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root:focus-within .slotTargetChildren > picture > img, +.root:focus-within .slotTargetChildren > :global(.__wab_slot) > picture > img, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img { + outline: none; +} +.root .slotTargetChildren___focusVisibleWithin > *, +.root .slotTargetChildren___focusVisibleWithin > :global(.__wab_slot) > *, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root .slotTargetChildren___focusVisibleWithin > picture > img, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > picture + > img, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img { + outline: none; +} +.rootcolor_link:hover .slotTargetChildrencolor_link { + color: #0081f1; +} +.rootcolor_link:hover .slotTargetChildrencolor_link > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot-string-wrapper), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot-string-wrapper), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot-string-wrapper), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot-string-wrapper) { + text-decoration-line: underline; +} +.rootcolor_link:active .slotTargetChildrencolor_link { + color: #006adc; +} +.endIconContainer { + display: flex; + position: relative; + flex-direction: row; + align-items: stretch; + justify-content: flex-start; +} +.endIconContainershowEndIcon { + display: flex; +} +.slotTargetEndIcon { + color: #ededec; +} +.slotTargetEndIconcolor_yellow { + color: #35290f; +} +.slotTargetEndIconcolor_white { + color: #35290f; +} +.slotTargetEndIconcolor_softBlue { + color: #006adc; +} +.slotTargetEndIconcolor_softGreen { + color: #18794e; +} +.slotTargetEndIconcolor_softYellow { + color: #946800; +} +.slotTargetEndIconcolor_softRed { + color: #ca3214; +} +.slotTargetEndIconcolor_softSand { + color: #706f6c; +} +.slotTargetEndIconcolor_clear { + color: #1b1b18; +} +.slotTargetEndIconcolor_link { + color: #0091ff; +} +.rootcolor_link:hover .slotTargetEndIconcolor_link { + color: #0081f1; +} +.rootcolor_link:active .slotTargetEndIconcolor_link { + color: #006adc; +} +.svg__liJa { + position: relative; + object-fit: cover; + width: auto; + height: 1em; +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicButton.tsx b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicButton.tsx index 947b61e2fb..8cbcf8d0a8 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicButton.tsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicButton.tsx @@ -68,7 +68,6 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic.module.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss import sty from "./PlasmicButton.module.css"; // plasmic-import: TQcvW_pSKi3/css import CheckSvgIcon from "./icons/PlasmicIcon__CheckSvg"; // plasmic-import: gj-_D7n31Ho/icon @@ -257,6 +256,7 @@ function PlasmicButton__RenderFunc(props: { ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, @@ -282,11 +282,12 @@ function PlasmicButton__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.button, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "button", + "button__47tFX", + "root_reset_47tFXWjN2C4NyHFGGpaYQ3", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { @@ -353,7 +354,7 @@ function PlasmicButton__RenderFunc(props: {
), @@ -441,7 +442,7 @@ function PlasmicButton__RenderFunc(props: {
), diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPage.module.css b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPage.module.css new file mode 100644 index 0000000000..77a456651f --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPage.module.css @@ -0,0 +1,44 @@ +.root { + display: flex; + position: relative; + width: 100%; + height: 100%; + flex-direction: column; + justify-content: flex-start; + align-items: center; + min-width: 0; + min-height: 0; + padding: 0px; +} +.section { + display: flex; + position: relative; + flex-direction: column; + align-items: center; + justify-content: flex-start; + width: 100%; + height: auto; + max-width: 100%; + row-gap: 16px; + min-width: 0; + padding: 96px 24px; +} +.h2 { + position: relative; + width: 100%; + height: auto; + max-width: 800px; + text-align: center; + min-width: 0; +} +.span { + position: relative; + width: 100%; + height: auto; + max-width: 800px; + text-align: center; + min-width: 0; +} +.randomDynamicPageButton:global(.__wab_instance):global(.__wab_instance) { + position: relative; +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPage.tsx b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPage.tsx index a274cb44ae..0e3c50a67c 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPage.tsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPage.tsx @@ -61,6 +61,9 @@ import { useGlobalActions } from "@plasmicapp/host"; +import { unstable_usePlasmicQueries } from "@plasmicapp/react-web/lib/data-sources"; + +import type { QueryComponentNode } from "@plasmicapp/react-web/lib/data-sources"; import { generateDynamicMetadata, PageCtx } from "./PlasmicDynamicPageServer"; // plasmic-import: AO44A-w7hh/rscServer import RandomDynamicPageButton from "../../RandomDynamicPageButton"; // plasmic-import: Q23H1_1M_P/component @@ -69,7 +72,6 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic.module.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss import sty from "./PlasmicDynamicPage.module.css"; // plasmic-import: AO44A-w7hh/css const emptyProxy: any = new Proxy(() => "", { @@ -101,7 +103,8 @@ export const PlasmicDynamicPage__ArgProps = new Array(); export type PlasmicDynamicPage__OverridesType = { root?: Flex__<"div">; section?: Flex__<"section">; - h1?: Flex__<"h1">; + h2?: Flex__<"h2">; + span?: Flex__<"span">; randomDynamicPageButton?: Flex__; }; @@ -109,6 +112,38 @@ export interface DefaultDynamicPageProps {} const $$ = {}; +const pageQueryTree: QueryComponentNode = { + type: "component", + queries: { + sha256: { + id: "custom-code:krgWtF9Kkesx", + fn: async ({ $q, $props, $ctx, $state }) => { + console.log("Running SHA-256"); + const data = new TextEncoder().encode($ctx.params.slug); + const hash = await crypto.subtle.digest("SHA-256", data); + return [...new Uint8Array(hash)] + .map(b => b.toString(16).padStart(2, "0")) + .join("-"); + }, + args: ({ $q, $props, $ctx, $state }) => { + return [ + { + $ctx: { + params: $ctx["params"] + }, + $props: {}, + $q: {}, + $state: {} + } + ]; + } + } + }, + propsContext: {}, + stateSpecs: [], + children: [] +}; + function useNextRouter() { try { return useRouter(); @@ -146,8 +181,10 @@ function PlasmicDynamicPage__RenderFunc(props: { const refsRef = React.useRef({}); const $refs = refsRef.current; + const $q = unstable_usePlasmicQueries(pageQueryTree, $ctx, $props, null); + const pageMetadata = generateDynamicMetadata( - wrapQueriesWithLoadingProxy({}), + wrapQueriesWithLoadingProxy($q), $ctx as PageCtx ); @@ -163,17 +200,17 @@ function PlasmicDynamicPage__RenderFunc(props: { } `} -
+
-

+ {$ctx.params.slug} +

+ - - {(() => { - try { - return $ctx.params.slug; - } catch (e) { - if ( - e instanceof TypeError || - e?.plasmicType === "PlasmicUndefinedDataError" - ) { - return "Page 1"; - } - throw e; - } - })()} - - + {`SHA-256(${$ctx.params.slug}): ${$q.sha256.data}`} + = type NodeDefaultElementType = { root: "div"; section: "section"; - h1: "h1"; + h2: "h2"; + span: "span"; randomDynamicPageButton: typeof RandomDynamicPageButton; }; @@ -303,7 +342,8 @@ export const PlasmicDynamicPage = Object.assign( { // Helper components rendering sub-elements section: makeNodeComponent("section"), - h1: makeNodeComponent("h1"), + h2: makeNodeComponent("h2"), + span: makeNodeComponent("span"), randomDynamicPageButton: makeNodeComponent("randomDynamicPageButton"), // Metadata about props expected for PlasmicDynamicPage diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPageServer.tsx b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPageServer.tsx index 70da069d52..b25a01efeb 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPageServer.tsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPageServer.tsx @@ -14,6 +14,14 @@ import { ClientDynamicPage } from "../../../app/dynamic/[slug]/page-client"; // const $$ = {}; +import { unstable_executePlasmicQueries } from "@plasmicapp/react-web/lib/data-sources"; +import type { + PlasmicQuery, + PlasmicQueryResult +} from "@plasmicapp/react-web/lib/data-sources"; +import type { QueryComponentNode } from "@plasmicapp/react-web/lib/data-sources"; +import { PlasmicQueryDataProvider } from "@plasmicapp/react-web/lib/query"; + export type PageCtx = { pageRoute: string; pagePath: string; @@ -29,6 +37,93 @@ export function generateDynamicMetadata($q: any, $ctx: PageCtx) { } }; } +export const serverQueryTree: QueryComponentNode = { + type: "component", + queries: { + sha256: { + id: "custom-code:krgWtF9Kkesx", + fn: async ({ $q, $props, $ctx, $state }) => { + console.log("Running SHA-256"); + const data = new TextEncoder().encode($ctx.params.slug); + const hash = await crypto.subtle.digest("SHA-256", data); + return [...new Uint8Array(hash)] + .map(b => b.toString(16).padStart(2, "0")) + .join("-"); + }, + args: ({ $q, $props, $ctx, $state }) => { + return [ + { + $ctx: { + params: $ctx["params"] + }, + $props: {}, + $q: {}, + $state: {} + } + ]; + } + } + }, + stateSpecs: [], + propsContext: {}, + children: [ + { + type: "component", + queries: {}, + stateSpecs: [], + propsContext: {}, + children: [ + { + type: "component", + queries: {}, + stateSpecs: [ + { + path: "showStartIcon", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.showStartIcon + }, + { + path: "showEndIcon", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.showEndIcon + }, + { + path: "isDisabled", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.isDisabled + }, + { + path: "shape", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.shape + }, + { + path: "size", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.size + }, + { + path: "color", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.color + } + ], + propsContext: { submitsForm: ({ $q, $props, $ctx, $state }) => true }, + children: [] + } + ] + } + ] +}; function mkPathFromRouteAndParams( route: string, @@ -69,7 +164,7 @@ export async function makeAppRouterPageCtx({ pageRoute, pagePath, params: pageParams, - query: (await searchParams) ?? {} + query: {} }; return ctx; } @@ -77,6 +172,19 @@ export async function makeAppRouterPageCtx({ export type PlasmicDynamicPageServerProps = DefaultDynamicPageProps & DynamicPageServerSkeletonProps; -export function PlasmicDynamicPageServer(props: PlasmicDynamicPageServerProps) { - return ; +export async function PlasmicDynamicPageServer( + props: PlasmicDynamicPageServerProps +) { + const { params, searchParams, ...rest } = props; + const ctx = await makeAppRouterPageCtx({ params, searchParams }); + const { cache: prefetchedCache } = await unstable_executePlasmicQueries( + serverQueryTree, + { $props: rest, $ctx: ctx } + ); + + return ( + + + + ); } diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicHomepage.module.css b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicHomepage.module.css new file mode 100644 index 0000000000..333527f4b2 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicHomepage.module.css @@ -0,0 +1,43 @@ +.root { + display: flex; + position: relative; + width: 100%; + height: 100%; + flex-direction: column; + justify-content: flex-start; + align-items: center; + min-width: 0; + min-height: 0; + padding: 0px; +} +.section { + display: flex; + position: relative; + flex-direction: column; + align-items: center; + justify-content: flex-start; + width: 100%; + height: auto; + max-width: 100%; + row-gap: 16px; + min-width: 0; + padding: 96px 24px; +} +.h1 { + position: relative; + max-width: 800px; + height: auto; + width: 100%; + min-width: 0; +} +.text { + position: relative; + max-width: 800px; + height: auto; + width: 100%; + min-width: 0; +} +.randomDynamicPageButton:global(.__wab_instance):global(.__wab_instance) { + max-width: 100%; + position: relative; +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx index 71a36fff34..058661d1a4 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx @@ -64,13 +64,11 @@ import { import { generateDynamicMetadata, PageCtx } from "./PlasmicHomepageServer"; // plasmic-import: 6uuAAE1jiCew/rscServer import RandomDynamicPageButton from "../../RandomDynamicPageButton"; // plasmic-import: Q23H1_1M_P/component -import { Fetcher } from "@plasmicapp/react-web/lib/data-sources"; import { _useGlobalVariants } from "./plasmic"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectModule import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic.module.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss import sty from "./PlasmicHomepage.module.css"; // plasmic-import: 6uuAAE1jiCew/css const emptyProxy: any = new Proxy(() => "", { @@ -167,17 +165,17 @@ function PlasmicHomepage__RenderFunc(props: { } `} -
+

- {"create-plasmic-app"} + {hasVariant(globalVariants, "screen", "desktopOnly") + ? "create-plasmic-app" + : "cpa"}

- {hasVariant(globalVariants, "screen", "desktopOnly") ? ( - - - { - "This project is used by run-cpa.ts in the create-plasmic-app repo.\n\nrun-cpa.ts runs create-plasmic-app for many combinations of args (e.g. nextjs + appDir + loader + typescript) to check for changes in generated files. Any changes to this project will result in lots of changes to the generated files. " - } - - - {"Therefore, please avoid changing this project."} - - - ) : ( - - - { - "If you haven't already done so, go back and learn the basics by going through the Plasmic Levels tutorial.\n\nIt's always easier to start from examples! Add a new page using a template\u2014do this from the list of pages in the top left (the gray + button).\n\nOr press the big blue + button to start dragging items into this page.\n\nIntegrate this project into your codebase\u2014press the " - } - - - {"Code"} - - - { - " button in the top right and follow the quickstart instructions.\n\nJoin our Slack community (icon in bottom left) for help any time." - } - - - )} + { + "This project is used by run-cpa.ts in the create-plasmic-app repo.\n\n\nrun-cpa.ts runs create-plasmic-app for many combinations of args (e.g. nextjs + appDir + loader + typescript) to check for changes in generated files. Any changes to this project will result in lots of changes to the generated files. Therefore, please avoid changing this project.\n" + }
* { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) { + font-family: var(--mixin-prihNuSPt-kU_font-family); + font-size: var(--mixin-prihNuSPt-kU_font-size); + font-weight: var(--mixin-prihNuSPt-kU_font-weight); + font-style: var(--mixin-prihNuSPt-kU_font-style); + color: var(--mixin-prihNuSPt-kU_color); + text-align: var(--mixin-prihNuSPt-kU_text-align); + text-transform: var(--mixin-prihNuSPt-kU_text-transform); + line-height: var(--mixin-prihNuSPt-kU_line-height); + letter-spacing: var(--mixin-prihNuSPt-kU_letter-spacing); + white-space: var(--mixin-prihNuSPt-kU_white-space); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h4:where(.h4__47tFX), +h4:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h4__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h4, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h4, +h4:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-pKcLzBwr6rlS_font-size); + font-weight: var(--mixin-pKcLzBwr6rlS_font-weight); + letter-spacing: var(--mixin-pKcLzBwr6rlS_letter-spacing); + line-height: var(--mixin-pKcLzBwr6rlS_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h5:where(.h5__47tFX), +h5:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h5__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h5, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h5, +h5:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-Q3MZaojcv1qw_font-size); + font-weight: var(--mixin-Q3MZaojcv1qw_font-weight); + letter-spacing: var(--mixin-Q3MZaojcv1qw_letter-spacing); + line-height: var(--mixin-Q3MZaojcv1qw_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h6:where(.h6__47tFX), +h6:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h6__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h6, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h6, +h6:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-WQN-U7Y-Mt0i_font-size); + font-weight: var(--mixin-WQN-U7Y-Mt0i_font-weight); + line-height: var(--mixin-WQN-U7Y-Mt0i_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) a:where(.a__47tFX), +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.a__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) a, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) a, +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + color: var(--mixin-_NIhBtBbqybq_color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) blockquote:where(.blockquote__47tFX), +blockquote:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.blockquote__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) blockquote, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) blockquote, +blockquote:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + color: var(--mixin-5965DRLFNjWi_color); + padding-left: var(--mixin-5965DRLFNjWi_padding-left); + border-left: var(--mixin-5965DRLFNjWi_border-left-width) + var(--mixin-5965DRLFNjWi_border-left-style) + var(--mixin-5965DRLFNjWi_border-left-color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h1:where(.h1__47tFX), +h1:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h1__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h1, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h1, +h1:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-_J1_6dhZex0j_font-size); + font-weight: var(--mixin-_J1_6dhZex0j_font-weight); + letter-spacing: var(--mixin-_J1_6dhZex0j_letter-spacing); + line-height: var(--mixin-_J1_6dhZex0j_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h2:where(.h2__47tFX), +h2:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h2__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h2, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h2, +h2:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-tyWR-eqFmXa2R_font-size); + font-weight: var(--mixin-tyWR-eqFmXa2R_font-weight); + letter-spacing: var(--mixin-tyWR-eqFmXa2R_letter-spacing); + line-height: var(--mixin-tyWR-eqFmXa2R_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h3:where(.h3__47tFX), +h3:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h3__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h3, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h3, +h3:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-VSfYlZt0xLESb_font-size); + font-weight: var(--mixin-VSfYlZt0xLESb_font-weight); + letter-spacing: var(--mixin-VSfYlZt0xLESb_letter-spacing); + line-height: var(--mixin-VSfYlZt0xLESb_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) code:where(.code__47tFX), +code:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.code__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) code, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) code, +code:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + background: #f8f8f8; + font-family: var(--mixin-2Dy3yomrqskwe_font-family); + border-radius: var(--mixin-2Dy3yomrqskwe_border-top-left-radius) + var(--mixin-2Dy3yomrqskwe_border-top-right-radius) + var(--mixin-2Dy3yomrqskwe_border-bottom-right-radius) + var(--mixin-2Dy3yomrqskwe_border-bottom-left-radius); + padding: var(--mixin-2Dy3yomrqskwe_padding-top) + var(--mixin-2Dy3yomrqskwe_padding-right) + var(--mixin-2Dy3yomrqskwe_padding-bottom) + var(--mixin-2Dy3yomrqskwe_padding-left); + border-top: var(--mixin-2Dy3yomrqskwe_border-top-width) + var(--mixin-2Dy3yomrqskwe_border-top-style) + var(--mixin-2Dy3yomrqskwe_border-top-color); + border-right: var(--mixin-2Dy3yomrqskwe_border-right-width) + var(--mixin-2Dy3yomrqskwe_border-right-style) + var(--mixin-2Dy3yomrqskwe_border-right-color); + border-bottom: var(--mixin-2Dy3yomrqskwe_border-bottom-width) + var(--mixin-2Dy3yomrqskwe_border-bottom-style) + var(--mixin-2Dy3yomrqskwe_border-bottom-color); + border-left: var(--mixin-2Dy3yomrqskwe_border-left-width) + var(--mixin-2Dy3yomrqskwe_border-left-style) + var(--mixin-2Dy3yomrqskwe_border-left-color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) pre:where(.pre__47tFX), +pre:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.pre__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) pre, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) pre, +pre:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + background: #f8f8f8; + font-family: var(--mixin-0u7VwjXF8Kvpe_font-family); + border-radius: var(--mixin-0u7VwjXF8Kvpe_border-top-left-radius) + var(--mixin-0u7VwjXF8Kvpe_border-top-right-radius) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-right-radius) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-left-radius); + padding: var(--mixin-0u7VwjXF8Kvpe_padding-top) + var(--mixin-0u7VwjXF8Kvpe_padding-right) + var(--mixin-0u7VwjXF8Kvpe_padding-bottom) + var(--mixin-0u7VwjXF8Kvpe_padding-left); + border-top: var(--mixin-0u7VwjXF8Kvpe_border-top-width) + var(--mixin-0u7VwjXF8Kvpe_border-top-style) + var(--mixin-0u7VwjXF8Kvpe_border-top-color); + border-right: var(--mixin-0u7VwjXF8Kvpe_border-right-width) + var(--mixin-0u7VwjXF8Kvpe_border-right-style) + var(--mixin-0u7VwjXF8Kvpe_border-right-color); + border-bottom: var(--mixin-0u7VwjXF8Kvpe_border-bottom-width) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-style) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-color); + border-left: var(--mixin-0u7VwjXF8Kvpe_border-left-width) + var(--mixin-0u7VwjXF8Kvpe_border-left-style) + var(--mixin-0u7VwjXF8Kvpe_border-left-color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) ol:where(.ol__47tFX), +ol:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.ol__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) ol, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) ol, +ol:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + display: var(--mixin-D70_omI9mm34j_display); + flex-direction: var(--mixin-D70_omI9mm34j_flex-direction); + align-items: var(--mixin-D70_omI9mm34j_align-items); + justify-content: var(--mixin-D70_omI9mm34j_justify-content); + list-style-position: var(--mixin-D70_omI9mm34j_list-style-position); + padding-left: var(--mixin-D70_omI9mm34j_padding-left); + position: var(--mixin-D70_omI9mm34j_position); + list-style-type: var(--mixin-D70_omI9mm34j_list-style-type); + column-gap: var(--mixin-D70_omI9mm34j_column-gap); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) ul:where(.ul__47tFX), +ul:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.ul__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) ul, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) ul, +ul:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + display: var(--mixin-6zRO9vzPQi4g5_display); + flex-direction: var(--mixin-6zRO9vzPQi4g5_flex-direction); + align-items: var(--mixin-6zRO9vzPQi4g5_align-items); + justify-content: var(--mixin-6zRO9vzPQi4g5_justify-content); + list-style-position: var(--mixin-6zRO9vzPQi4g5_list-style-position); + padding-left: var(--mixin-6zRO9vzPQi4g5_padding-left); + position: var(--mixin-6zRO9vzPQi4g5_position); + list-style-type: var(--mixin-6zRO9vzPQi4g5_list-style-type); + column-gap: var(--mixin-6zRO9vzPQi4g5_column-gap); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) a:where(.a__47tFX):hover, +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.a__47tFX):hover, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) a:hover, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) a:hover, +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags):hover { + color: var(--mixin-u1gAzUhZSVyWj_color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) li:where(.li__47tFX), +li:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.li__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) li, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) li, +li:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/plasmic__default_style.css b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/plasmic__default_style.css new file mode 100644 index 0000000000..b347b0c883 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/components/plasmic/plasmic__default_style.css @@ -0,0 +1,363 @@ +:where(.all) { + display: block; + white-space: inherit; + grid-row: auto; + grid-column: auto; + position: relative; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + text-decoration-line: none; + margin: 0; + border-width: 0px; +} +:where(.__wab_expr_html_text *) { + white-space: inherit; + grid-row: auto; + grid-column: auto; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + margin: 0; + border-width: 0px; +} + +:where(.img) { + display: inline-block; +} +:where(.__wab_expr_html_text img) { + white-space: inherit; +} + +:where(.li) { + display: list-item; +} +:where(.__wab_expr_html_text li) { + white-space: inherit; +} + +:where(.span) { + display: inline; + position: static; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text span) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.input) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text input) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} + +:where(.textarea) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text textarea) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} + +:where(.button) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text button) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} + +:where(.code) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text code) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.pre) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text pre) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.p) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text p) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.i) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text i) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.em) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text em) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.strong) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text strong) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.h1) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h1) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h2) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h2) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h3) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h3) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h4) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h4) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h5) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h5) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h6) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h6) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.address) { + font-style: inherit; +} +:where(.__wab_expr_html_text address) { + white-space: inherit; + font-style: inherit; +} + +:where(.a) { + color: inherit; +} +:where(.__wab_expr_html_text a) { + white-space: inherit; + color: inherit; +} + +:where(.ol) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ol) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.ul) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ul) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.select) { + padding: 2px 6px; +} +:where(.__wab_expr_html_text select) { + white-space: inherit; + padding: 2px 6px; +} + +.plasmic_default__component_wrapper { + display: grid; +} +.plasmic_default__inline { + display: inline; +} +.plasmic_page_wrapper { + display: flex; + width: 100%; + min-height: 100vh; + align-items: stretch; + align-self: start; +} +.plasmic_page_wrapper > * { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/eslint.config.mjs b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/eslint.config.mjs new file mode 100644 index 0000000000..05e726d1b4 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/eslint.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig, globalIgnores } from "eslint/config"; +import nextVitals from "eslint-config-next/core-web-vitals"; +import nextTs from "eslint-config-next/typescript"; + +const eslintConfig = defineConfig([ + ...nextVitals, + ...nextTs, + // Override default ignores of eslint-config-next. + globalIgnores([ + // Default ignores of eslint-config-next: + ".next/**", + "out/**", + "build/**", + "next-env.d.ts", + ]), +]); + +export default eslintConfig; diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/next.config.ts b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/next.config.ts new file mode 100644 index 0000000000..87610da2f4 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/next.config.ts @@ -0,0 +1,8 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + trailingSlash: true, + reactStrictMode: true, +}; + +export default nextConfig; \ No newline at end of file diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/package.json b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/package.json index e738970b68..2c747b460a 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/package.json +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/package.json @@ -6,21 +6,21 @@ "dev": "next dev", "build": "next build", "start": "next start", - "lint": "next lint" + "lint": "eslint" }, "dependencies": { - "@plasmicapp/cli": "^0.1.359", - "@plasmicapp/react-web": "^0.2.425", - "next": "14.2.35", - "react": "^18", - "react-dom": "^18" + "@plasmicapp/cli": "^0.1.364", + "@plasmicapp/react-web": "^1.0.12", + "next": "16.2.9", + "react": "19.2.4", + "react-dom": "19.2.4" }, "devDependencies": { "@types/node": "^20", - "@types/react": "^18", - "@types/react-dom": "^18", - "eslint": "^8", - "eslint-config-next": "14.2.35", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "16.2.9", "typescript": "^5" } } diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/plasmic-init-client.tsx b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/plasmic-init-client.tsx new file mode 100644 index 0000000000..b7717dd110 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/plasmic-init-client.tsx @@ -0,0 +1,17 @@ +"use client"; + +import type * as React from "react"; +import { PlasmicRootProvider } from "@plasmicapp/react-web"; +import Link from "next/link"; + +/** + * ClientPlasmicRootProvider is a Client Component that passes Next's Link to PlasmicRootProvider. + * + * Props passed from a Server Component to a Client Component must be serializable. + * https://nextjs.org/docs/app/getting-started/server-and-client-components#passing-data-from-server-to-client-components + */ +export function ClientPlasmicRootProvider( + props: Omit, "Link"> +) { + return ; +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/plasmic.json b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/plasmic.json index 1024f40166..87a09f591c 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/plasmic.json +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/plasmic.json @@ -7,7 +7,7 @@ }, "style": { "scheme": "css-modules", - "defaultStyleCssFilePath": "plasmic/plasmic__default_style.module.css" + "defaultStyleCssFilePath": "plasmic/plasmic__default_style.css" }, "images": { "scheme": "public-files", @@ -26,7 +26,7 @@ "projectApiToken": "7BRFratDxPLMGZHnd2grV5QP6mlHcZ1AK3BJSIeh7xzUlHgWh25XpgXvUaKAqHXFMXQQuzpADqboibF6nqNWQ", "projectName": "create-plasmic-app", "version": "latest", - "cssFilePath": "plasmic/create_plasmic_app/plasmic.module.css", + "cssFilePath": "plasmic/create_plasmic_app/plasmic.css", "components": [ { "id": "6uuAAE1jiCew", @@ -143,6 +143,6 @@ "nextjsConfig": { "pagesDir": "../app" }, - "cliVersion": "0.1.359", - "$schema": "https://unpkg.com/@plasmicapp/cli@0.1.359/dist/plasmic.schema.json" + "cliVersion": "0.1.364", + "$schema": "https://unpkg.com/@plasmicapp/cli@0.1.364/dist/plasmic.schema.json" } diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/tsconfig.json b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/tsconfig.json index e7ff90fd27..3a13f90a77 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/tsconfig.json +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-codegen-ts/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "target": "ES2017", "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, @@ -10,7 +11,7 @@ "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, - "jsx": "preserve", + "jsx": "react-jsx", "incremental": true, "plugins": [ { @@ -21,6 +22,13 @@ "@/*": ["./*"] } }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts", + "**/*.mts" + ], "exclude": ["node_modules"] } diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/app/[[...catchall]]/page.jsx b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/app/[[...catchall]]/page.jsx index cb31f9ff8c..3dfe9f4837 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/app/[[...catchall]]/page.jsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/app/[[...catchall]]/page.jsx @@ -27,7 +27,7 @@ export async function generateMetadata( return parent; } const pageMeta = componentData.entryCompMetas[0]; - const metadata = await PLASMIC.unstable__generateMetadata(componentData, { + const metadata = await PLASMIC.getPlasmicMetadata(componentData, { params: pageMeta.params ?? {}, query: {}, }); @@ -44,7 +44,7 @@ export default async function PlasmicLoaderPage({ notFound(); } const pageMeta = componentData.entryCompMetas[0]; - const prefetchedQueryData = await PLASMIC.unstable__getServerQueriesData( + const prefetchedQueryData = await PLASMIC.getPlasmicQueriesData( componentData, { pagePath, @@ -59,6 +59,7 @@ export default async function PlasmicLoaderPage({ prefetchedQueryData={prefetchedQueryData} pageParams={pageMeta.params} pageRoute={pageMeta.path} + trackQueryParams > diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/app/globals.css b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/app/globals.css new file mode 100644 index 0000000000..3dd82369c1 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/app/globals.css @@ -0,0 +1,10 @@ +* { + box-sizing: border-box; + padding: 0; + margin: 0; +} + +a { + color: inherit; + text-decoration: none; +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/app/layout.js b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/app/layout.js index 08210ccaab..e41b55c4fb 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/app/layout.js +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/app/layout.js @@ -1,15 +1,14 @@ -import localFont from "next/font/local"; +import { Geist, Geist_Mono } from "next/font/google"; import "./globals.css"; -const geistSans = localFont({ - src: "./fonts/GeistVF.woff", +const geistSans = Geist({ variable: "--font-geist-sans", - weight: "100 900", + subsets: ["latin"], }); -const geistMono = localFont({ - src: "./fonts/GeistMonoVF.woff", + +const geistMono = Geist_Mono({ variable: "--font-geist-mono", - weight: "100 900", + subsets: ["latin"], }); export const metadata = { @@ -19,10 +18,8 @@ export const metadata = { export default function RootLayout({ children }) { return ( - - - {children} - + + {children} ); } diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/eslint.config.mjs b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/eslint.config.mjs new file mode 100644 index 0000000000..f443835250 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/eslint.config.mjs @@ -0,0 +1,16 @@ +import { defineConfig, globalIgnores } from "eslint/config"; +import nextVitals from "eslint-config-next/core-web-vitals"; + +const eslintConfig = defineConfig([ + ...nextVitals, + // Override default ignores of eslint-config-next. + globalIgnores([ + // Default ignores of eslint-config-next: + ".next/**", + "out/**", + "build/**", + "next-env.d.ts", + ]), +]); + +export default eslintConfig; diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/jsconfig.json b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/jsconfig.json new file mode 100644 index 0000000000..2a2e4b3bf8 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/jsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "paths": { + "@/*": ["./*"] + } + } +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/next.config.mjs b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/next.config.mjs new file mode 100644 index 0000000000..b108e1a2e4 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/next.config.mjs @@ -0,0 +1,6 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + /* config options here */ +}; + +export default nextConfig; diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/package.json b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/package.json index f64ef1f933..f46cbccea3 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/package.json +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/package.json @@ -6,16 +6,16 @@ "dev": "next dev", "build": "next build", "start": "next start", - "lint": "next lint" + "lint": "eslint" }, "dependencies": { - "@plasmicapp/loader-nextjs": "^1.0.456", - "next": "14.2.35", - "react": "^18", - "react-dom": "^18" + "@plasmicapp/loader-nextjs": "^2.0.6", + "next": "16.2.7", + "react": "19.2.4", + "react-dom": "19.2.4" }, "devDependencies": { - "eslint": "^8", - "eslint-config-next": "14.2.35" + "eslint": "^9", + "eslint-config-next": "16.2.7" } } diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/plasmic-init-client.jsx b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/plasmic-init-client.jsx index b83a51c782..6afa5112ad 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/plasmic-init-client.jsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/plasmic-init-client.jsx @@ -13,48 +13,10 @@ import { PLASMIC } from "@/plasmic-init"; // PLASMIC.registerComponent(...); /** - * ClientPlasmicRootProvider is a Client Component that passes in the loader for you. + * ClientPlasmicRootProvider is a Client Component that passes the loader to PlasmicRootProvider. * - * Why? Props passed from Server to Client Components must be serializable. + * Props passed from a Server Component to a Client Component must be serializable. * https://nextjs.org/docs/app/getting-started/server-and-client-components#passing-data-from-server-to-client-components - * However, PlasmicRootProvider requires a loader, but the loader is NOT serializable. - * - * In a Server Component like app//path.tsx, rendering the following would not work: - * - * ```tsx - * import { PLASMIC } from "@/plasmic-init"; - * import { PlasmicRootProvider } from "plasmicapp/loader-nextjs"; - * export default function MyPage() { - * const prefetchedData = await PLASMIC.fetchComponentData("YourPage"); - * return ( - * - * {yourContent()} - * ; - * ); - * } - * ``` - * - * Therefore, we define ClientPlasmicRootProvider as a Client Component (this file is marked "use client"). - * ClientPlasmicRootProvider wraps the PlasmicRootProvider and passes in the loader for you, - * while allowing your Server Component to pass in prefetched data and other serializable props: - * - * ```tsx - * import { PLASMIC } from "@/plasmic-init"; - * import { ClientPlasmicRootProvider } from "@/plasmic-init-client"; // changed - * export default function MyPage() { - * const prefetchedData = await PLASMIC.fetchComponentData("YourPage"); - * return ( - * - * {yourContent()} - * ; - * ); - * } - * ``` */ export function ClientPlasmicRootProvider( props diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/plasmic-init.js b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/plasmic-init.js index 268cef108a..047572e73b 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/plasmic-init.js +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-js/plasmic-init.js @@ -19,3 +19,8 @@ export const PLASMIC = initPlasmicLoader({ // only use this for development, as this is significantly slower. preview: false, }); + +// Register custom functions here so they are available during SSR. +// See https://docs.plasmic.app/learn/registering-custom-functions/ +// +// PLASMIC.registerFunction(...); diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/app/[[...catchall]]/page.tsx b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/app/[[...catchall]]/page.tsx index 475bec7696..e58ff0b201 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/app/[[...catchall]]/page.tsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/app/[[...catchall]]/page.tsx @@ -32,7 +32,7 @@ export async function generateMetadata( return parent as Promise; } const pageMeta = componentData.entryCompMetas[0]; - const metadata = await PLASMIC.unstable__generateMetadata(componentData, { + const metadata = await PLASMIC.getPlasmicMetadata(componentData, { params: pageMeta.params ?? {}, query: {}, }); @@ -49,7 +49,7 @@ export default async function PlasmicLoaderPage({ notFound(); } const pageMeta = componentData.entryCompMetas[0]; - const prefetchedQueryData = await PLASMIC.unstable__getServerQueriesData( + const prefetchedQueryData = await PLASMIC.getPlasmicQueriesData( componentData, { pagePath, @@ -64,6 +64,7 @@ export default async function PlasmicLoaderPage({ prefetchedQueryData={prefetchedQueryData} pageParams={pageMeta.params} pageRoute={pageMeta.path} + trackQueryParams > diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/app/globals.css b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/app/globals.css new file mode 100644 index 0000000000..3dd82369c1 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/app/globals.css @@ -0,0 +1,10 @@ +* { + box-sizing: border-box; + padding: 0; + margin: 0; +} + +a { + color: inherit; + text-decoration: none; +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/app/layout.tsx b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/app/layout.tsx index dca06aee77..1da6a2fa9f 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/app/layout.tsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/app/layout.tsx @@ -1,16 +1,15 @@ import type { Metadata } from "next"; -import localFont from "next/font/local"; +import { Geist, Geist_Mono } from "next/font/google"; import "./globals.css"; -const geistSans = localFont({ - src: "./fonts/GeistVF.woff", +const geistSans = Geist({ variable: "--font-geist-sans", - weight: "100 900", + subsets: ["latin"], }); -const geistMono = localFont({ - src: "./fonts/GeistMonoVF.woff", + +const geistMono = Geist_Mono({ variable: "--font-geist-mono", - weight: "100 900", + subsets: ["latin"], }); export const metadata: Metadata = { @@ -24,10 +23,8 @@ export default function RootLayout({ children: React.ReactNode; }>) { return ( - - - {children} - + + {children} ); } diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/eslint.config.mjs b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/eslint.config.mjs new file mode 100644 index 0000000000..05e726d1b4 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/eslint.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig, globalIgnores } from "eslint/config"; +import nextVitals from "eslint-config-next/core-web-vitals"; +import nextTs from "eslint-config-next/typescript"; + +const eslintConfig = defineConfig([ + ...nextVitals, + ...nextTs, + // Override default ignores of eslint-config-next. + globalIgnores([ + // Default ignores of eslint-config-next: + ".next/**", + "out/**", + "build/**", + "next-env.d.ts", + ]), +]); + +export default eslintConfig; diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/next.config.ts b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/next.config.ts new file mode 100644 index 0000000000..e9ffa3083a --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/next.config.ts @@ -0,0 +1,7 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + /* config options here */ +}; + +export default nextConfig; diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/package.json b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/package.json index 18253bdd37..24f9f26935 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/package.json +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/package.json @@ -6,20 +6,20 @@ "dev": "next dev", "build": "next build", "start": "next start", - "lint": "next lint" + "lint": "eslint" }, "dependencies": { - "@plasmicapp/loader-nextjs": "^1.0.456", - "next": "14.2.35", - "react": "^18", - "react-dom": "^18" + "@plasmicapp/loader-nextjs": "^2.0.6", + "next": "16.2.7", + "react": "19.2.4", + "react-dom": "19.2.4" }, "devDependencies": { "@types/node": "^20", - "@types/react": "^18", - "@types/react-dom": "^18", - "eslint": "^8", - "eslint-config-next": "14.2.35", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "16.2.7", "typescript": "^5" } } diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/plasmic-init-client.tsx b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/plasmic-init-client.tsx index 530f300499..6a07bc15ec 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/plasmic-init-client.tsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/plasmic-init-client.tsx @@ -13,48 +13,10 @@ import { PLASMIC } from "@/plasmic-init"; // PLASMIC.registerComponent(...); /** - * ClientPlasmicRootProvider is a Client Component that passes in the loader for you. + * ClientPlasmicRootProvider is a Client Component that passes the loader to PlasmicRootProvider. * - * Why? Props passed from Server to Client Components must be serializable. + * Props passed from a Server Component to a Client Component must be serializable. * https://nextjs.org/docs/app/getting-started/server-and-client-components#passing-data-from-server-to-client-components - * However, PlasmicRootProvider requires a loader, but the loader is NOT serializable. - * - * In a Server Component like app//path.tsx, rendering the following would not work: - * - * ```tsx - * import { PLASMIC } from "@/plasmic-init"; - * import { PlasmicRootProvider } from "plasmicapp/loader-nextjs"; - * export default function MyPage() { - * const prefetchedData = await PLASMIC.fetchComponentData("YourPage"); - * return ( - * - * {yourContent()} - * ; - * ); - * } - * ``` - * - * Therefore, we define ClientPlasmicRootProvider as a Client Component (this file is marked "use client"). - * ClientPlasmicRootProvider wraps the PlasmicRootProvider and passes in the loader for you, - * while allowing your Server Component to pass in prefetched data and other serializable props: - * - * ```tsx - * import { PLASMIC } from "@/plasmic-init"; - * import { ClientPlasmicRootProvider } from "@/plasmic-init-client"; // changed - * export default function MyPage() { - * const prefetchedData = await PLASMIC.fetchComponentData("YourPage"); - * return ( - * - * {yourContent()} - * ; - * ); - * } - * ``` */ export function ClientPlasmicRootProvider( props: Omit, "loader"> diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/plasmic-init.ts b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/plasmic-init.ts index 268cef108a..047572e73b 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/plasmic-init.ts +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/plasmic-init.ts @@ -19,3 +19,8 @@ export const PLASMIC = initPlasmicLoader({ // only use this for development, as this is significantly slower. preview: false, }); + +// Register custom functions here so they are available during SSR. +// See https://docs.plasmic.app/learn/registering-custom-functions/ +// +// PLASMIC.registerFunction(...); diff --git a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/tsconfig.json b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/tsconfig.json index e7ff90fd27..3a13f90a77 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/tsconfig.json +++ b/packages/create-plasmic-app/cpa-out/nextjs-app-loader-ts/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "target": "ES2017", "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, @@ -10,7 +11,7 @@ "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, - "jsx": "preserve", + "jsx": "react-jsx", "incremental": true, "plugins": [ { @@ -21,6 +22,13 @@ "@/*": ["./*"] } }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts", + "**/*.mts" + ], "exclude": ["node_modules"] } diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/components/plasmic/create_plasmic_app/PlasmicButton.jsx b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/components/plasmic/create_plasmic_app/PlasmicButton.jsx index b086609caf..8789b3e82b 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/components/plasmic/create_plasmic_app/PlasmicButton.jsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/components/plasmic/create_plasmic_app/PlasmicButton.jsx @@ -25,7 +25,6 @@ import { useDataEnv } from "@plasmicapp/react-web/lib/host"; import * as pp from "@plasmicapp/react-web"; import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic.module.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss import sty from "./PlasmicButton.module.css"; // plasmic-import: TQcvW_pSKi3/css import CheckSvgIcon from "./icons/PlasmicIcon__CheckSvg"; // plasmic-import: gj-_D7n31Ho/icon import IconIcon from "./icons/PlasmicIcon__Icon"; // plasmic-import: 6PNxx3YMyDQ/icon @@ -144,11 +143,12 @@ function PlasmicButton__RenderFunc(props) { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.button, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "button", + "button__47tFX", + "root_reset_47tFXWjN2C4NyHFGGpaYQ3", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { @@ -215,7 +215,7 @@ function PlasmicButton__RenderFunc(props) {
), @@ -303,7 +303,7 @@ function PlasmicButton__RenderFunc(props) {
), diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/components/plasmic/create_plasmic_app/PlasmicButton.module.css b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/components/plasmic/create_plasmic_app/PlasmicButton.module.css new file mode 100644 index 0000000000..7da840be69 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/components/plasmic/create_plasmic_app/PlasmicButton.module.css @@ -0,0 +1,468 @@ +.root { + display: flex; + position: relative; + flex-direction: row; + align-items: center; + justify-content: center; + background: #232320; + cursor: pointer; + transition-property: background; + transition-duration: 0.1s; + column-gap: 8px; + -webkit-transition-property: background; + -webkit-transition-duration: 0.1s; + border-radius: 6px; + padding: 12px 20px; + border-width: 0px; +} +.rootshowStartIcon { + padding-left: 16px; +} +.rootshowEndIcon { + padding-right: 16px; +} +.rootisDisabled { + cursor: not-allowed; + opacity: 0.6; +} +.rootshape_rounded { + padding-left: 20px; + padding-right: 20px; + min-width: 100px; + border-radius: 999px; +} +.rootshape_round { + border-radius: 50%; + padding: 12px; +} +.rootshape_sharp { + border-radius: 0px; +} +.rootsize_compact { + padding: 6px 16px; +} +.rootsize_minimal { + padding: 0px; +} +.rootcolor_blue { + background: #0091ff; +} +.rootcolor_green { + background: #30a46c; +} +.rootcolor_yellow { + background: #f5d90a; +} +.rootcolor_red { + background: #e54d2e; +} +.rootcolor_sand { + background: #717069; +} +.rootcolor_white { + background: #ffffff; +} +.rootcolor_softBlue { + background: #edf6ff; +} +.rootcolor_softGreen { + background: #e9f9ee; +} +.rootcolor_softYellow { + background: #fffbd1; +} +.rootcolor_softRed { + background: #fff0ee; +} +.rootcolor_softSand { + background: #eeeeec; +} +.rootcolor_clear { + background: #ffffff00; +} +.rootcolor_link { + background: #ffffff00; +} +.rootshape_rounded_showStartIcon { + padding-left: 16px; +} +.rootshowEndIcon_shape_rounded { + padding-right: 16px; +} +.rootshape_round_size_compact { + padding: 6px; +} +.root___focusVisibleWithin { + box-shadow: 0px 0px 0px 3px #96c7f2; + outline: none; +} +.root:focus-within:focus-within { + box-shadow: 0px 0px 0px 3px #96c7f2; + outline: none; +} +.root:hover:hover { + background: #282826; +} +.root:active:active { + background: #2e2e2b; +} +.rootcolor_blue:hover:hover { + background: #369eff; +} +.rootcolor_blue:active:active { + background: #52a9ff; +} +.rootcolor_green:hover:hover { + background: #3cb179; +} +.rootcolor_green:active:active { + background: #4cc38a; +} +.rootcolor_yellow:hover:hover { + background: #ffef5c; +} +.rootcolor_yellow:active:active { + background: #f0c000; +} +.rootcolor_red:hover:hover { + background: #ec5e41; +} +.rootcolor_red:active:active { + background: #f16a50; +} +.rootcolor_sand:hover:hover { + background: #7f7e77; +} +.rootcolor_sand:active:active { + background: #a1a09a; +} +.rootcolor_white:hover:hover { + background: #ffef5c; +} +.rootcolor_white:active:active { + background: #f0c000; +} +.rootcolor_softBlue:hover:hover { + background: #e1f0ff; +} +.rootcolor_softBlue:active:active { + background: #cee7fe; +} +.rootcolor_softGreen:active:active { + background: #ccebd7; +} +.rootcolor_softGreen:hover:hover { + background: #ddf3e4; +} +.rootcolor_softYellow:active:active { + background: #fef2a4; +} +.rootcolor_softYellow:hover:hover { + background: #fff8bb; +} +.rootcolor_softRed:active:active { + background: #fdd8d3; +} +.rootcolor_softRed:hover:hover { + background: #ffe6e2; +} +.rootcolor_softSand:hover:hover { + background: #e9e9e6; +} +.rootcolor_softSand:active:active { + background: #e3e3e0; +} +.rootcolor_clear:hover:hover { + background: #e9e9e6; +} +.rootcolor_clear:active:active { + background: #e3e3e0; +} +.rootcolor_link:hover:hover { + background: #ffffff00; +} +.rootcolor_link:active:active { + background: #ffffff00; +} +.startIconContainer { + display: flex; + position: relative; + flex-direction: row; + align-items: stretch; + justify-content: flex-start; +} +.startIconContainershowStartIcon { + display: flex; +} +.slotTargetStartIcon { + color: #ededec; +} +.slotTargetStartIconcolor_yellow { + color: #35290f; +} +.slotTargetStartIconcolor_white { + color: #35290f; +} +.slotTargetStartIconcolor_softBlue { + color: #006adc; +} +.slotTargetStartIconcolor_softGreen { + color: #18794e; +} +.slotTargetStartIconcolor_softYellow { + color: #946800; +} +.slotTargetStartIconcolor_softRed { + color: #ca3214; +} +.slotTargetStartIconcolor_softSand { + color: #706f6c; +} +.slotTargetStartIconcolor_clear { + color: #1b1b18; +} +.slotTargetStartIconcolor_link { + color: #0091ff; +} +.rootcolor_link:hover .slotTargetStartIconcolor_link { + color: #0081f1; +} +.rootcolor_link:active .slotTargetStartIconcolor_link { + color: #006adc; +} +.svg__s6Xxe { + position: relative; + object-fit: cover; + width: auto; + height: 1em; +} +.contentContainer { + display: flex; + position: relative; + flex-direction: row; + align-items: stretch; + justify-content: flex-start; +} +.root .contentContainer___focusVisibleWithin { + outline: none; +} +.slotTargetChildren { + color: #ededec; + font-weight: 500; + white-space: pre; +} +.slotTargetChildrencolor_blue { + color: #ffffff; +} +.slotTargetChildrencolor_green { + color: #ffffff; +} +.slotTargetChildrencolor_yellow { + color: #35290f; +} +.slotTargetChildrencolor_red { + color: #ffffff; +} +.slotTargetChildrencolor_sand { + color: #ffffff; +} +.slotTargetChildrencolor_white { + color: #1b1b18; +} +.slotTargetChildrencolor_softBlue { + color: #006adc; +} +.slotTargetChildrencolor_softGreen { + color: #18794e; +} +.slotTargetChildrencolor_softYellow { + color: #946800; +} +.slotTargetChildrencolor_softRed { + color: #ca3214; +} +.slotTargetChildrencolor_softSand { + color: #1b1b18; +} +.slotTargetChildrencolor_clear { + color: #1b1b18; +} +.slotTargetChildrencolor_link { + color: #0091ff; +} +.root:focus-within .slotTargetChildren > *, +.root:focus-within .slotTargetChildren > :global(.__wab_slot) > *, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root:focus-within .slotTargetChildren > picture > img, +.root:focus-within .slotTargetChildren > :global(.__wab_slot) > picture > img, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img { + outline: none; +} +.root .slotTargetChildren___focusVisibleWithin > *, +.root .slotTargetChildren___focusVisibleWithin > :global(.__wab_slot) > *, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root .slotTargetChildren___focusVisibleWithin > picture > img, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > picture + > img, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img { + outline: none; +} +.rootcolor_link:hover .slotTargetChildrencolor_link { + color: #0081f1; +} +.rootcolor_link:hover .slotTargetChildrencolor_link > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot-string-wrapper), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot-string-wrapper), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot-string-wrapper), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot-string-wrapper) { + text-decoration-line: underline; +} +.rootcolor_link:active .slotTargetChildrencolor_link { + color: #006adc; +} +.endIconContainer { + display: flex; + position: relative; + flex-direction: row; + align-items: stretch; + justify-content: flex-start; +} +.endIconContainershowEndIcon { + display: flex; +} +.slotTargetEndIcon { + color: #ededec; +} +.slotTargetEndIconcolor_yellow { + color: #35290f; +} +.slotTargetEndIconcolor_white { + color: #35290f; +} +.slotTargetEndIconcolor_softBlue { + color: #006adc; +} +.slotTargetEndIconcolor_softGreen { + color: #18794e; +} +.slotTargetEndIconcolor_softYellow { + color: #946800; +} +.slotTargetEndIconcolor_softRed { + color: #ca3214; +} +.slotTargetEndIconcolor_softSand { + color: #706f6c; +} +.slotTargetEndIconcolor_clear { + color: #1b1b18; +} +.slotTargetEndIconcolor_link { + color: #0091ff; +} +.rootcolor_link:hover .slotTargetEndIconcolor_link { + color: #0081f1; +} +.rootcolor_link:active .slotTargetEndIconcolor_link { + color: #006adc; +} +.svg__liJa { + position: relative; + object-fit: cover; + width: auto; + height: 1em; +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/components/plasmic/create_plasmic_app/PlasmicDynamicPage.jsx b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/components/plasmic/create_plasmic_app/PlasmicDynamicPage.jsx index d5d7a3bb9c..0acbf12f1b 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/components/plasmic/create_plasmic_app/PlasmicDynamicPage.jsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/components/plasmic/create_plasmic_app/PlasmicDynamicPage.jsx @@ -17,10 +17,10 @@ import { deriveRenderOpts } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; +import { unstable_usePlasmicQueries } from "@plasmicapp/react-web/lib/data-sources"; import RandomDynamicPageButton from "../../RandomDynamicPageButton"; // plasmic-import: Q23H1_1M_P/component import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic.module.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss import sty from "./PlasmicDynamicPage.module.css"; // plasmic-import: AO44A-w7hh/css const emptyProxy = new Proxy(() => "", { @@ -55,6 +55,38 @@ export const PlasmicDynamicPage__ArgProps = new Array(); const $$ = {}; +export const serverQueryTree = { + type: "component", + queries: { + sha256: { + id: "custom-code:krgWtF9Kkesx", + fn: async ({ $q, $props, $ctx, $state }) => { + console.log("Running SHA-256"); + const data = new TextEncoder().encode($ctx.params.slug); + const hash = await crypto.subtle.digest("SHA-256", data); + return [...new Uint8Array(hash)] + .map(b => b.toString(16).padStart(2, "0")) + .join("-"); + }, + args: ({ $q, $props, $ctx, $state }) => { + return [ + { + $ctx: { + params: $ctx["params"] + }, + $props: {}, + $q: {}, + $state: {} + } + ]; + } + } + }, + propsContext: {}, + stateSpecs: [], + children: [] +}; + function useNextRouter() { try { return useRouter(); @@ -82,8 +114,9 @@ function PlasmicDynamicPage__RenderFunc(props) { const $ctx = useDataEnv?.() || {}; const refsRef = React.useRef({}); const $refs = refsRef.current; + const $q = unstable_usePlasmicQueries(serverQueryTree, $ctx, $props, null); const pageMetadata = generateDynamicMetadata( - wrapQueriesWithLoadingProxy({}), + wrapQueriesWithLoadingProxy($q), $ctx ); const styleTokensClassNames = _useStyleTokens(); @@ -97,17 +130,17 @@ function PlasmicDynamicPage__RenderFunc(props) { } `} -
+
-

+ {$ctx.params.slug} +

+ - - {(() => { - try { - return $ctx.params.slug; - } catch (e) { - if ( - e instanceof TypeError || - e?.plasmicType === "PlasmicUndefinedDataError" - ) { - return "Page 1"; - } - throw e; - } - })()} - - + {`SHA-256(${$ctx.params.slug}): ${$q.sha256.data}`} + "", { @@ -100,17 +99,17 @@ function PlasmicHomepage__RenderFunc(props) { } `} -
+

- {"create-plasmic-app"} + {hasVariant(globalVariants, "screen", "desktopOnly") + ? "create-plasmic-app" + : "cpa"}

- {hasVariant(globalVariants, "screen", "desktopOnly") ? ( - - - { - "This project is used by run-cpa.ts in the create-plasmic-app repo.\n\nrun-cpa.ts runs create-plasmic-app for many combinations of args (e.g. nextjs + appDir + loader + typescript) to check for changes in generated files. Any changes to this project will result in lots of changes to the generated files. " - } - - - {"Therefore, please avoid changing this project."} - - - ) : ( - - - { - "If you haven't already done so, go back and learn the basics by going through the Plasmic Levels tutorial.\n\nIt's always easier to start from examples! Add a new page using a template\u2014do this from the list of pages in the top left (the gray + button).\n\nOr press the big blue + button to start dragging items into this page.\n\nIntegrate this project into your codebase\u2014press the " - } - - - {"Code"} - - - { - " button in the top right and follow the quickstart instructions.\n\nJoin our Slack community (icon in bottom left) for help any time." - } - - - )} + { + "This project is used by run-cpa.ts in the create-plasmic-app repo.\n\n\nrun-cpa.ts runs create-plasmic-app for many combinations of args (e.g. nextjs + appDir + loader + typescript) to check for changes in generated files. Any changes to this project will result in lots of changes to the generated files. Therefore, please avoid changing this project.\n" + }
* { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) { + font-family: var(--mixin-prihNuSPt-kU_font-family); + font-size: var(--mixin-prihNuSPt-kU_font-size); + font-weight: var(--mixin-prihNuSPt-kU_font-weight); + font-style: var(--mixin-prihNuSPt-kU_font-style); + color: var(--mixin-prihNuSPt-kU_color); + text-align: var(--mixin-prihNuSPt-kU_text-align); + text-transform: var(--mixin-prihNuSPt-kU_text-transform); + line-height: var(--mixin-prihNuSPt-kU_line-height); + letter-spacing: var(--mixin-prihNuSPt-kU_letter-spacing); + white-space: var(--mixin-prihNuSPt-kU_white-space); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h4:where(.h4__47tFX), +h4:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h4__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h4, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h4, +h4:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-pKcLzBwr6rlS_font-size); + font-weight: var(--mixin-pKcLzBwr6rlS_font-weight); + letter-spacing: var(--mixin-pKcLzBwr6rlS_letter-spacing); + line-height: var(--mixin-pKcLzBwr6rlS_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h5:where(.h5__47tFX), +h5:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h5__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h5, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h5, +h5:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-Q3MZaojcv1qw_font-size); + font-weight: var(--mixin-Q3MZaojcv1qw_font-weight); + letter-spacing: var(--mixin-Q3MZaojcv1qw_letter-spacing); + line-height: var(--mixin-Q3MZaojcv1qw_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h6:where(.h6__47tFX), +h6:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h6__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h6, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h6, +h6:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-WQN-U7Y-Mt0i_font-size); + font-weight: var(--mixin-WQN-U7Y-Mt0i_font-weight); + line-height: var(--mixin-WQN-U7Y-Mt0i_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) a:where(.a__47tFX), +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.a__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) a, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) a, +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + color: var(--mixin-_NIhBtBbqybq_color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) blockquote:where(.blockquote__47tFX), +blockquote:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.blockquote__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) blockquote, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) blockquote, +blockquote:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + color: var(--mixin-5965DRLFNjWi_color); + padding-left: var(--mixin-5965DRLFNjWi_padding-left); + border-left: var(--mixin-5965DRLFNjWi_border-left-width) + var(--mixin-5965DRLFNjWi_border-left-style) + var(--mixin-5965DRLFNjWi_border-left-color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h1:where(.h1__47tFX), +h1:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h1__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h1, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h1, +h1:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-_J1_6dhZex0j_font-size); + font-weight: var(--mixin-_J1_6dhZex0j_font-weight); + letter-spacing: var(--mixin-_J1_6dhZex0j_letter-spacing); + line-height: var(--mixin-_J1_6dhZex0j_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h2:where(.h2__47tFX), +h2:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h2__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h2, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h2, +h2:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-tyWR-eqFmXa2R_font-size); + font-weight: var(--mixin-tyWR-eqFmXa2R_font-weight); + letter-spacing: var(--mixin-tyWR-eqFmXa2R_letter-spacing); + line-height: var(--mixin-tyWR-eqFmXa2R_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h3:where(.h3__47tFX), +h3:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h3__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h3, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h3, +h3:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-VSfYlZt0xLESb_font-size); + font-weight: var(--mixin-VSfYlZt0xLESb_font-weight); + letter-spacing: var(--mixin-VSfYlZt0xLESb_letter-spacing); + line-height: var(--mixin-VSfYlZt0xLESb_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) code:where(.code__47tFX), +code:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.code__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) code, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) code, +code:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + background: #f8f8f8; + font-family: var(--mixin-2Dy3yomrqskwe_font-family); + border-radius: var(--mixin-2Dy3yomrqskwe_border-top-left-radius) + var(--mixin-2Dy3yomrqskwe_border-top-right-radius) + var(--mixin-2Dy3yomrqskwe_border-bottom-right-radius) + var(--mixin-2Dy3yomrqskwe_border-bottom-left-radius); + padding: var(--mixin-2Dy3yomrqskwe_padding-top) + var(--mixin-2Dy3yomrqskwe_padding-right) + var(--mixin-2Dy3yomrqskwe_padding-bottom) + var(--mixin-2Dy3yomrqskwe_padding-left); + border-top: var(--mixin-2Dy3yomrqskwe_border-top-width) + var(--mixin-2Dy3yomrqskwe_border-top-style) + var(--mixin-2Dy3yomrqskwe_border-top-color); + border-right: var(--mixin-2Dy3yomrqskwe_border-right-width) + var(--mixin-2Dy3yomrqskwe_border-right-style) + var(--mixin-2Dy3yomrqskwe_border-right-color); + border-bottom: var(--mixin-2Dy3yomrqskwe_border-bottom-width) + var(--mixin-2Dy3yomrqskwe_border-bottom-style) + var(--mixin-2Dy3yomrqskwe_border-bottom-color); + border-left: var(--mixin-2Dy3yomrqskwe_border-left-width) + var(--mixin-2Dy3yomrqskwe_border-left-style) + var(--mixin-2Dy3yomrqskwe_border-left-color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) pre:where(.pre__47tFX), +pre:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.pre__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) pre, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) pre, +pre:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + background: #f8f8f8; + font-family: var(--mixin-0u7VwjXF8Kvpe_font-family); + border-radius: var(--mixin-0u7VwjXF8Kvpe_border-top-left-radius) + var(--mixin-0u7VwjXF8Kvpe_border-top-right-radius) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-right-radius) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-left-radius); + padding: var(--mixin-0u7VwjXF8Kvpe_padding-top) + var(--mixin-0u7VwjXF8Kvpe_padding-right) + var(--mixin-0u7VwjXF8Kvpe_padding-bottom) + var(--mixin-0u7VwjXF8Kvpe_padding-left); + border-top: var(--mixin-0u7VwjXF8Kvpe_border-top-width) + var(--mixin-0u7VwjXF8Kvpe_border-top-style) + var(--mixin-0u7VwjXF8Kvpe_border-top-color); + border-right: var(--mixin-0u7VwjXF8Kvpe_border-right-width) + var(--mixin-0u7VwjXF8Kvpe_border-right-style) + var(--mixin-0u7VwjXF8Kvpe_border-right-color); + border-bottom: var(--mixin-0u7VwjXF8Kvpe_border-bottom-width) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-style) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-color); + border-left: var(--mixin-0u7VwjXF8Kvpe_border-left-width) + var(--mixin-0u7VwjXF8Kvpe_border-left-style) + var(--mixin-0u7VwjXF8Kvpe_border-left-color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) ol:where(.ol__47tFX), +ol:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.ol__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) ol, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) ol, +ol:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + display: var(--mixin-D70_omI9mm34j_display); + flex-direction: var(--mixin-D70_omI9mm34j_flex-direction); + align-items: var(--mixin-D70_omI9mm34j_align-items); + justify-content: var(--mixin-D70_omI9mm34j_justify-content); + list-style-position: var(--mixin-D70_omI9mm34j_list-style-position); + padding-left: var(--mixin-D70_omI9mm34j_padding-left); + position: var(--mixin-D70_omI9mm34j_position); + list-style-type: var(--mixin-D70_omI9mm34j_list-style-type); + column-gap: var(--mixin-D70_omI9mm34j_column-gap); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) ul:where(.ul__47tFX), +ul:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.ul__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) ul, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) ul, +ul:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + display: var(--mixin-6zRO9vzPQi4g5_display); + flex-direction: var(--mixin-6zRO9vzPQi4g5_flex-direction); + align-items: var(--mixin-6zRO9vzPQi4g5_align-items); + justify-content: var(--mixin-6zRO9vzPQi4g5_justify-content); + list-style-position: var(--mixin-6zRO9vzPQi4g5_list-style-position); + padding-left: var(--mixin-6zRO9vzPQi4g5_padding-left); + position: var(--mixin-6zRO9vzPQi4g5_position); + list-style-type: var(--mixin-6zRO9vzPQi4g5_list-style-type); + column-gap: var(--mixin-6zRO9vzPQi4g5_column-gap); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) a:where(.a__47tFX):hover, +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.a__47tFX):hover, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) a:hover, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) a:hover, +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags):hover { + color: var(--mixin-u1gAzUhZSVyWj_color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) li:where(.li__47tFX), +li:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.li__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) li, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) li, +li:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/components/plasmic/plasmic__default_style.css b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/components/plasmic/plasmic__default_style.css new file mode 100644 index 0000000000..b347b0c883 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/components/plasmic/plasmic__default_style.css @@ -0,0 +1,363 @@ +:where(.all) { + display: block; + white-space: inherit; + grid-row: auto; + grid-column: auto; + position: relative; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + text-decoration-line: none; + margin: 0; + border-width: 0px; +} +:where(.__wab_expr_html_text *) { + white-space: inherit; + grid-row: auto; + grid-column: auto; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + margin: 0; + border-width: 0px; +} + +:where(.img) { + display: inline-block; +} +:where(.__wab_expr_html_text img) { + white-space: inherit; +} + +:where(.li) { + display: list-item; +} +:where(.__wab_expr_html_text li) { + white-space: inherit; +} + +:where(.span) { + display: inline; + position: static; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text span) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.input) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text input) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} + +:where(.textarea) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text textarea) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} + +:where(.button) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text button) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} + +:where(.code) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text code) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.pre) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text pre) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.p) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text p) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.i) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text i) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.em) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text em) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.strong) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text strong) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.h1) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h1) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h2) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h2) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h3) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h3) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h4) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h4) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h5) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h5) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h6) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h6) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.address) { + font-style: inherit; +} +:where(.__wab_expr_html_text address) { + white-space: inherit; + font-style: inherit; +} + +:where(.a) { + color: inherit; +} +:where(.__wab_expr_html_text a) { + white-space: inherit; + color: inherit; +} + +:where(.ol) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ol) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.ul) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ul) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.select) { + padding: 2px 6px; +} +:where(.__wab_expr_html_text select) { + white-space: inherit; + padding: 2px 6px; +} + +.plasmic_default__component_wrapper { + display: grid; +} +.plasmic_default__inline { + display: inline; +} +.plasmic_page_wrapper { + display: flex; + width: 100%; + min-height: 100vh; + align-items: stretch; + align-self: start; +} +.plasmic_page_wrapper > * { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/eslint.config.mjs b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/eslint.config.mjs new file mode 100644 index 0000000000..f443835250 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/eslint.config.mjs @@ -0,0 +1,16 @@ +import { defineConfig, globalIgnores } from "eslint/config"; +import nextVitals from "eslint-config-next/core-web-vitals"; + +const eslintConfig = defineConfig([ + ...nextVitals, + // Override default ignores of eslint-config-next. + globalIgnores([ + // Default ignores of eslint-config-next: + ".next/**", + "out/**", + "build/**", + "next-env.d.ts", + ]), +]); + +export default eslintConfig; diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/jsconfig.json b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/jsconfig.json new file mode 100644 index 0000000000..2a2e4b3bf8 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/jsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "paths": { + "@/*": ["./*"] + } + } +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/next.config.mjs b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/next.config.mjs new file mode 100644 index 0000000000..741916060f --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/next.config.mjs @@ -0,0 +1,7 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + trailingSlash: true, + reactStrictMode: true, +}; + +export default nextConfig; \ No newline at end of file diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/package.json b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/package.json index b5885e6059..a28a6e537b 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/package.json +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/package.json @@ -6,17 +6,17 @@ "dev": "next dev", "build": "next build", "start": "next start", - "lint": "next lint" + "lint": "eslint" }, "dependencies": { - "@plasmicapp/cli": "^0.1.359", - "@plasmicapp/react-web": "^0.2.425", - "next": "14.2.35", - "react": "^18", - "react-dom": "^18" + "@plasmicapp/cli": "^0.1.364", + "@plasmicapp/react-web": "^1.0.12", + "next": "16.2.9", + "react": "19.2.4", + "react-dom": "19.2.4" }, "devDependencies": { - "eslint": "^8", - "eslint-config-next": "14.2.35" + "eslint": "^9", + "eslint-config-next": "16.2.9" } } diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/pages/_app.jsx b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/pages/_app.jsx index dd45d00dae..5fa5776ded 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/pages/_app.jsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/pages/_app.jsx @@ -1,3 +1,4 @@ +import "../components/plasmic/create_plasmic_app/plasmic.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss import '@/styles/globals.css' import { PlasmicRootProvider } from "@plasmicapp/react-web"; import Head from "next/head"; diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/pages/dynamic/[slug].jsx b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/pages/dynamic/[slug].jsx index d55171e1b4..52d5f08cf0 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/pages/dynamic/[slug].jsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-js/pages/dynamic/[slug].jsx @@ -5,8 +5,30 @@ import { PageParamsProvider as PageParamsProvider__ } from "@plasmicapp/react-we import { PlasmicDynamicPage } from "../../components/plasmic/create_plasmic_app/PlasmicDynamicPage"; import { useRouter } from "next/router"; import { PlasmicQueryDataProvider } from "@plasmicapp/react-web/lib/query"; +import { extractPlasmicQueryData } from "@plasmicapp/react-web/lib/prepass"; -function DynamicPage() { +export const getStaticProps = async context => { + const queryCache = await extractPlasmicQueryData( + + + + ); + return { + props: { queryCache } + }; +}; + +export const getStaticPaths = async () => { + console.warn( + "getStaticPaths was called with an empty paths array. Update this with the set of pages you want to generate statically." + ); + return { + paths: [], + fallback: "blocking" + }; +}; + +function DynamicPage({ queryCache }) { // Use PlasmicDynamicPage to render this component as it was // designed in Plasmic, by activating the appropriate variants, // attaching the appropriate event handlers, etc. You @@ -24,7 +46,7 @@ function DynamicPage() { // Next.js Custom App component // (https://nextjs.org/docs/advanced-features/custom-app). return ( - + *, +.root:focus-within .slotTargetChildren > :global(.__wab_slot) > *, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root:focus-within .slotTargetChildren > picture > img, +.root:focus-within .slotTargetChildren > :global(.__wab_slot) > picture > img, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img { + outline: none; +} +.root .slotTargetChildren___focusVisibleWithin > *, +.root .slotTargetChildren___focusVisibleWithin > :global(.__wab_slot) > *, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root .slotTargetChildren___focusVisibleWithin > picture > img, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > picture + > img, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img { + outline: none; +} +.rootcolor_link:hover .slotTargetChildrencolor_link { + color: #0081f1; +} +.rootcolor_link:hover .slotTargetChildrencolor_link > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot-string-wrapper), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot-string-wrapper), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot-string-wrapper), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot-string-wrapper) { + text-decoration-line: underline; +} +.rootcolor_link:active .slotTargetChildrencolor_link { + color: #006adc; +} +.endIconContainer { + display: flex; + position: relative; + flex-direction: row; + align-items: stretch; + justify-content: flex-start; +} +.endIconContainershowEndIcon { + display: flex; +} +.slotTargetEndIcon { + color: #ededec; +} +.slotTargetEndIconcolor_yellow { + color: #35290f; +} +.slotTargetEndIconcolor_white { + color: #35290f; +} +.slotTargetEndIconcolor_softBlue { + color: #006adc; +} +.slotTargetEndIconcolor_softGreen { + color: #18794e; +} +.slotTargetEndIconcolor_softYellow { + color: #946800; +} +.slotTargetEndIconcolor_softRed { + color: #ca3214; +} +.slotTargetEndIconcolor_softSand { + color: #706f6c; +} +.slotTargetEndIconcolor_clear { + color: #1b1b18; +} +.slotTargetEndIconcolor_link { + color: #0091ff; +} +.rootcolor_link:hover .slotTargetEndIconcolor_link { + color: #0081f1; +} +.rootcolor_link:active .slotTargetEndIconcolor_link { + color: #006adc; +} +.svg__liJa { + position: relative; + object-fit: cover; + width: auto; + height: 1em; +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicButton.tsx b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicButton.tsx index 76f9fe3c3e..8de7d7f82e 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicButton.tsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicButton.tsx @@ -66,7 +66,6 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic.module.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss import sty from "./PlasmicButton.module.css"; // plasmic-import: TQcvW_pSKi3/css import CheckSvgIcon from "./icons/PlasmicIcon__CheckSvg"; // plasmic-import: gj-_D7n31Ho/icon @@ -255,6 +254,7 @@ function PlasmicButton__RenderFunc(props: { ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, @@ -280,11 +280,12 @@ function PlasmicButton__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.button, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "button", + "button__47tFX", + "root_reset_47tFXWjN2C4NyHFGGpaYQ3", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { @@ -351,7 +352,7 @@ function PlasmicButton__RenderFunc(props: {
), @@ -439,7 +440,7 @@ function PlasmicButton__RenderFunc(props: {
), diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPage.module.css b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPage.module.css new file mode 100644 index 0000000000..77a456651f --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPage.module.css @@ -0,0 +1,44 @@ +.root { + display: flex; + position: relative; + width: 100%; + height: 100%; + flex-direction: column; + justify-content: flex-start; + align-items: center; + min-width: 0; + min-height: 0; + padding: 0px; +} +.section { + display: flex; + position: relative; + flex-direction: column; + align-items: center; + justify-content: flex-start; + width: 100%; + height: auto; + max-width: 100%; + row-gap: 16px; + min-width: 0; + padding: 96px 24px; +} +.h2 { + position: relative; + width: 100%; + height: auto; + max-width: 800px; + text-align: center; + min-width: 0; +} +.span { + position: relative; + width: 100%; + height: auto; + max-width: 800px; + text-align: center; + min-width: 0; +} +.randomDynamicPageButton:global(.__wab_instance):global(.__wab_instance) { + position: relative; +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPage.tsx b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPage.tsx index a9d26ceb1b..dfe98c54af 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPage.tsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPage.tsx @@ -59,13 +59,21 @@ import { useGlobalActions } from "@plasmicapp/react-web/lib/host"; +import { useMutablePlasmicQueryData } from "@plasmicapp/query"; + +import { unstable_usePlasmicQueries } from "@plasmicapp/react-web/lib/data-sources"; +import type { + PlasmicQuery, + PlasmicQueryResult +} from "@plasmicapp/react-web/lib/data-sources"; +import type { QueryComponentNode } from "@plasmicapp/react-web/lib/data-sources"; + import RandomDynamicPageButton from "../../RandomDynamicPageButton"; // plasmic-import: Q23H1_1M_P/component import { _useGlobalVariants } from "./plasmic"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectModule import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic.module.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss import sty from "./PlasmicDynamicPage.module.css"; // plasmic-import: AO44A-w7hh/css const emptyProxy: any = new Proxy(() => "", { @@ -113,7 +121,8 @@ export const PlasmicDynamicPage__ArgProps = new Array(); export type PlasmicDynamicPage__OverridesType = { root?: Flex__<"div">; section?: Flex__<"section">; - h1?: Flex__<"h1">; + h2?: Flex__<"h2">; + span?: Flex__<"span">; randomDynamicPageButton?: Flex__; }; @@ -121,6 +130,38 @@ export interface DefaultDynamicPageProps {} const $$ = {}; +export const serverQueryTree: QueryComponentNode = { + type: "component", + queries: { + sha256: { + id: "custom-code:krgWtF9Kkesx", + fn: async ({ $q, $props, $ctx, $state }) => { + console.log("Running SHA-256"); + const data = new TextEncoder().encode($ctx.params.slug); + const hash = await crypto.subtle.digest("SHA-256", data); + return [...new Uint8Array(hash)] + .map(b => b.toString(16).padStart(2, "0")) + .join("-"); + }, + args: ({ $q, $props, $ctx, $state }) => { + return [ + { + $ctx: { + params: $ctx["params"] + }, + $props: {}, + $q: {}, + $state: {} + } + ]; + } + } + }, + propsContext: {}, + stateSpecs: [], + children: [] +}; + function useNextRouter() { try { return useRouter(); @@ -158,8 +199,10 @@ function PlasmicDynamicPage__RenderFunc(props: { const refsRef = React.useRef({}); const $refs = refsRef.current; + const $q = unstable_usePlasmicQueries(serverQueryTree, $ctx, $props, null); + const pageMetadata = generateDynamicMetadata( - wrapQueriesWithLoadingProxy({}), + wrapQueriesWithLoadingProxy($q), $ctx as PageCtx ); @@ -175,17 +218,17 @@ function PlasmicDynamicPage__RenderFunc(props: { } `} -
+
-

+ {$ctx.params.slug} +

+ - - {(() => { - try { - return $ctx.params.slug; - } catch (e) { - if ( - e instanceof TypeError || - e?.plasmicType === "PlasmicUndefinedDataError" - ) { - return "Page 1"; - } - throw e; - } - })()} - - + {`SHA-256(${$ctx.params.slug}): ${$q.sha256.data}`} + = type NodeDefaultElementType = { root: "div"; section: "section"; - h1: "h1"; + h2: "h2"; + span: "span"; randomDynamicPageButton: typeof RandomDynamicPageButton; }; @@ -315,7 +360,8 @@ export const PlasmicDynamicPage = Object.assign( { // Helper components rendering sub-elements section: makeNodeComponent("section"), - h1: makeNodeComponent("h1"), + h2: makeNodeComponent("h2"), + span: makeNodeComponent("span"), randomDynamicPageButton: makeNodeComponent("randomDynamicPageButton"), // Metadata about props expected for PlasmicDynamicPage diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicHomepage.module.css b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicHomepage.module.css new file mode 100644 index 0000000000..333527f4b2 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicHomepage.module.css @@ -0,0 +1,43 @@ +.root { + display: flex; + position: relative; + width: 100%; + height: 100%; + flex-direction: column; + justify-content: flex-start; + align-items: center; + min-width: 0; + min-height: 0; + padding: 0px; +} +.section { + display: flex; + position: relative; + flex-direction: column; + align-items: center; + justify-content: flex-start; + width: 100%; + height: auto; + max-width: 100%; + row-gap: 16px; + min-width: 0; + padding: 96px 24px; +} +.h1 { + position: relative; + max-width: 800px; + height: auto; + width: 100%; + min-width: 0; +} +.text { + position: relative; + max-width: 800px; + height: auto; + width: 100%; + min-width: 0; +} +.randomDynamicPageButton:global(.__wab_instance):global(.__wab_instance) { + max-width: 100%; + position: relative; +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx index 9230a8ad79..94362485d1 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx @@ -60,13 +60,11 @@ import { } from "@plasmicapp/react-web/lib/host"; import RandomDynamicPageButton from "../../RandomDynamicPageButton"; // plasmic-import: Q23H1_1M_P/component -import { Fetcher } from "@plasmicapp/react-web/lib/data-sources"; import { _useGlobalVariants } from "./plasmic"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectModule import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic.module.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss import sty from "./PlasmicHomepage.module.css"; // plasmic-import: 6uuAAE1jiCew/css const emptyProxy: any = new Proxy(() => "", { @@ -179,17 +177,17 @@ function PlasmicHomepage__RenderFunc(props: { } `} -
+

- {"create-plasmic-app"} + {hasVariant(globalVariants, "screen", "desktopOnly") + ? "create-plasmic-app" + : "cpa"}

- {hasVariant(globalVariants, "screen", "desktopOnly") ? ( - - - { - "This project is used by run-cpa.ts in the create-plasmic-app repo.\n\nrun-cpa.ts runs create-plasmic-app for many combinations of args (e.g. nextjs + appDir + loader + typescript) to check for changes in generated files. Any changes to this project will result in lots of changes to the generated files. " - } - - - {"Therefore, please avoid changing this project."} - - - ) : ( - - - { - "If you haven't already done so, go back and learn the basics by going through the Plasmic Levels tutorial.\n\nIt's always easier to start from examples! Add a new page using a template\u2014do this from the list of pages in the top left (the gray + button).\n\nOr press the big blue + button to start dragging items into this page.\n\nIntegrate this project into your codebase\u2014press the " - } - - - {"Code"} - - - { - " button in the top right and follow the quickstart instructions.\n\nJoin our Slack community (icon in bottom left) for help any time." - } - - - )} + { + "This project is used by run-cpa.ts in the create-plasmic-app repo.\n\n\nrun-cpa.ts runs create-plasmic-app for many combinations of args (e.g. nextjs + appDir + loader + typescript) to check for changes in generated files. Any changes to this project will result in lots of changes to the generated files. Therefore, please avoid changing this project.\n" + }
* { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) { + font-family: var(--mixin-prihNuSPt-kU_font-family); + font-size: var(--mixin-prihNuSPt-kU_font-size); + font-weight: var(--mixin-prihNuSPt-kU_font-weight); + font-style: var(--mixin-prihNuSPt-kU_font-style); + color: var(--mixin-prihNuSPt-kU_color); + text-align: var(--mixin-prihNuSPt-kU_text-align); + text-transform: var(--mixin-prihNuSPt-kU_text-transform); + line-height: var(--mixin-prihNuSPt-kU_line-height); + letter-spacing: var(--mixin-prihNuSPt-kU_letter-spacing); + white-space: var(--mixin-prihNuSPt-kU_white-space); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h4:where(.h4__47tFX), +h4:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h4__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h4, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h4, +h4:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-pKcLzBwr6rlS_font-size); + font-weight: var(--mixin-pKcLzBwr6rlS_font-weight); + letter-spacing: var(--mixin-pKcLzBwr6rlS_letter-spacing); + line-height: var(--mixin-pKcLzBwr6rlS_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h5:where(.h5__47tFX), +h5:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h5__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h5, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h5, +h5:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-Q3MZaojcv1qw_font-size); + font-weight: var(--mixin-Q3MZaojcv1qw_font-weight); + letter-spacing: var(--mixin-Q3MZaojcv1qw_letter-spacing); + line-height: var(--mixin-Q3MZaojcv1qw_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h6:where(.h6__47tFX), +h6:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h6__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h6, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h6, +h6:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-WQN-U7Y-Mt0i_font-size); + font-weight: var(--mixin-WQN-U7Y-Mt0i_font-weight); + line-height: var(--mixin-WQN-U7Y-Mt0i_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) a:where(.a__47tFX), +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.a__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) a, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) a, +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + color: var(--mixin-_NIhBtBbqybq_color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) blockquote:where(.blockquote__47tFX), +blockquote:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.blockquote__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) blockquote, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) blockquote, +blockquote:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + color: var(--mixin-5965DRLFNjWi_color); + padding-left: var(--mixin-5965DRLFNjWi_padding-left); + border-left: var(--mixin-5965DRLFNjWi_border-left-width) + var(--mixin-5965DRLFNjWi_border-left-style) + var(--mixin-5965DRLFNjWi_border-left-color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h1:where(.h1__47tFX), +h1:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h1__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h1, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h1, +h1:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-_J1_6dhZex0j_font-size); + font-weight: var(--mixin-_J1_6dhZex0j_font-weight); + letter-spacing: var(--mixin-_J1_6dhZex0j_letter-spacing); + line-height: var(--mixin-_J1_6dhZex0j_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h2:where(.h2__47tFX), +h2:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h2__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h2, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h2, +h2:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-tyWR-eqFmXa2R_font-size); + font-weight: var(--mixin-tyWR-eqFmXa2R_font-weight); + letter-spacing: var(--mixin-tyWR-eqFmXa2R_letter-spacing); + line-height: var(--mixin-tyWR-eqFmXa2R_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h3:where(.h3__47tFX), +h3:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h3__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h3, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h3, +h3:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-VSfYlZt0xLESb_font-size); + font-weight: var(--mixin-VSfYlZt0xLESb_font-weight); + letter-spacing: var(--mixin-VSfYlZt0xLESb_letter-spacing); + line-height: var(--mixin-VSfYlZt0xLESb_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) code:where(.code__47tFX), +code:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.code__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) code, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) code, +code:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + background: #f8f8f8; + font-family: var(--mixin-2Dy3yomrqskwe_font-family); + border-radius: var(--mixin-2Dy3yomrqskwe_border-top-left-radius) + var(--mixin-2Dy3yomrqskwe_border-top-right-radius) + var(--mixin-2Dy3yomrqskwe_border-bottom-right-radius) + var(--mixin-2Dy3yomrqskwe_border-bottom-left-radius); + padding: var(--mixin-2Dy3yomrqskwe_padding-top) + var(--mixin-2Dy3yomrqskwe_padding-right) + var(--mixin-2Dy3yomrqskwe_padding-bottom) + var(--mixin-2Dy3yomrqskwe_padding-left); + border-top: var(--mixin-2Dy3yomrqskwe_border-top-width) + var(--mixin-2Dy3yomrqskwe_border-top-style) + var(--mixin-2Dy3yomrqskwe_border-top-color); + border-right: var(--mixin-2Dy3yomrqskwe_border-right-width) + var(--mixin-2Dy3yomrqskwe_border-right-style) + var(--mixin-2Dy3yomrqskwe_border-right-color); + border-bottom: var(--mixin-2Dy3yomrqskwe_border-bottom-width) + var(--mixin-2Dy3yomrqskwe_border-bottom-style) + var(--mixin-2Dy3yomrqskwe_border-bottom-color); + border-left: var(--mixin-2Dy3yomrqskwe_border-left-width) + var(--mixin-2Dy3yomrqskwe_border-left-style) + var(--mixin-2Dy3yomrqskwe_border-left-color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) pre:where(.pre__47tFX), +pre:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.pre__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) pre, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) pre, +pre:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + background: #f8f8f8; + font-family: var(--mixin-0u7VwjXF8Kvpe_font-family); + border-radius: var(--mixin-0u7VwjXF8Kvpe_border-top-left-radius) + var(--mixin-0u7VwjXF8Kvpe_border-top-right-radius) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-right-radius) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-left-radius); + padding: var(--mixin-0u7VwjXF8Kvpe_padding-top) + var(--mixin-0u7VwjXF8Kvpe_padding-right) + var(--mixin-0u7VwjXF8Kvpe_padding-bottom) + var(--mixin-0u7VwjXF8Kvpe_padding-left); + border-top: var(--mixin-0u7VwjXF8Kvpe_border-top-width) + var(--mixin-0u7VwjXF8Kvpe_border-top-style) + var(--mixin-0u7VwjXF8Kvpe_border-top-color); + border-right: var(--mixin-0u7VwjXF8Kvpe_border-right-width) + var(--mixin-0u7VwjXF8Kvpe_border-right-style) + var(--mixin-0u7VwjXF8Kvpe_border-right-color); + border-bottom: var(--mixin-0u7VwjXF8Kvpe_border-bottom-width) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-style) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-color); + border-left: var(--mixin-0u7VwjXF8Kvpe_border-left-width) + var(--mixin-0u7VwjXF8Kvpe_border-left-style) + var(--mixin-0u7VwjXF8Kvpe_border-left-color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) ol:where(.ol__47tFX), +ol:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.ol__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) ol, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) ol, +ol:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + display: var(--mixin-D70_omI9mm34j_display); + flex-direction: var(--mixin-D70_omI9mm34j_flex-direction); + align-items: var(--mixin-D70_omI9mm34j_align-items); + justify-content: var(--mixin-D70_omI9mm34j_justify-content); + list-style-position: var(--mixin-D70_omI9mm34j_list-style-position); + padding-left: var(--mixin-D70_omI9mm34j_padding-left); + position: var(--mixin-D70_omI9mm34j_position); + list-style-type: var(--mixin-D70_omI9mm34j_list-style-type); + column-gap: var(--mixin-D70_omI9mm34j_column-gap); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) ul:where(.ul__47tFX), +ul:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.ul__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) ul, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) ul, +ul:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + display: var(--mixin-6zRO9vzPQi4g5_display); + flex-direction: var(--mixin-6zRO9vzPQi4g5_flex-direction); + align-items: var(--mixin-6zRO9vzPQi4g5_align-items); + justify-content: var(--mixin-6zRO9vzPQi4g5_justify-content); + list-style-position: var(--mixin-6zRO9vzPQi4g5_list-style-position); + padding-left: var(--mixin-6zRO9vzPQi4g5_padding-left); + position: var(--mixin-6zRO9vzPQi4g5_position); + list-style-type: var(--mixin-6zRO9vzPQi4g5_list-style-type); + column-gap: var(--mixin-6zRO9vzPQi4g5_column-gap); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) a:where(.a__47tFX):hover, +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.a__47tFX):hover, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) a:hover, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) a:hover, +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags):hover { + color: var(--mixin-u1gAzUhZSVyWj_color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) li:where(.li__47tFX), +li:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.li__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) li, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) li, +li:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/plasmic__default_style.css b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/plasmic__default_style.css new file mode 100644 index 0000000000..b347b0c883 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/components/plasmic/plasmic__default_style.css @@ -0,0 +1,363 @@ +:where(.all) { + display: block; + white-space: inherit; + grid-row: auto; + grid-column: auto; + position: relative; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + text-decoration-line: none; + margin: 0; + border-width: 0px; +} +:where(.__wab_expr_html_text *) { + white-space: inherit; + grid-row: auto; + grid-column: auto; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + margin: 0; + border-width: 0px; +} + +:where(.img) { + display: inline-block; +} +:where(.__wab_expr_html_text img) { + white-space: inherit; +} + +:where(.li) { + display: list-item; +} +:where(.__wab_expr_html_text li) { + white-space: inherit; +} + +:where(.span) { + display: inline; + position: static; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text span) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.input) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text input) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} + +:where(.textarea) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text textarea) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} + +:where(.button) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text button) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} + +:where(.code) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text code) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.pre) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text pre) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.p) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text p) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.i) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text i) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.em) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text em) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.strong) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text strong) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.h1) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h1) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h2) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h2) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h3) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h3) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h4) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h4) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h5) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h5) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h6) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h6) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.address) { + font-style: inherit; +} +:where(.__wab_expr_html_text address) { + white-space: inherit; + font-style: inherit; +} + +:where(.a) { + color: inherit; +} +:where(.__wab_expr_html_text a) { + white-space: inherit; + color: inherit; +} + +:where(.ol) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ol) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.ul) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ul) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.select) { + padding: 2px 6px; +} +:where(.__wab_expr_html_text select) { + white-space: inherit; + padding: 2px 6px; +} + +.plasmic_default__component_wrapper { + display: grid; +} +.plasmic_default__inline { + display: inline; +} +.plasmic_page_wrapper { + display: flex; + width: 100%; + min-height: 100vh; + align-items: stretch; + align-self: start; +} +.plasmic_page_wrapper > * { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/eslint.config.mjs b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/eslint.config.mjs new file mode 100644 index 0000000000..05e726d1b4 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/eslint.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig, globalIgnores } from "eslint/config"; +import nextVitals from "eslint-config-next/core-web-vitals"; +import nextTs from "eslint-config-next/typescript"; + +const eslintConfig = defineConfig([ + ...nextVitals, + ...nextTs, + // Override default ignores of eslint-config-next. + globalIgnores([ + // Default ignores of eslint-config-next: + ".next/**", + "out/**", + "build/**", + "next-env.d.ts", + ]), +]); + +export default eslintConfig; diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/next.config.ts b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/next.config.ts new file mode 100644 index 0000000000..87610da2f4 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/next.config.ts @@ -0,0 +1,8 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + trailingSlash: true, + reactStrictMode: true, +}; + +export default nextConfig; \ No newline at end of file diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/package.json b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/package.json index c195803829..ea8780a9fa 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/package.json +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/package.json @@ -6,21 +6,21 @@ "dev": "next dev", "build": "next build", "start": "next start", - "lint": "next lint" + "lint": "eslint" }, "dependencies": { - "@plasmicapp/cli": "^0.1.359", - "@plasmicapp/react-web": "^0.2.425", - "next": "14.2.35", - "react": "^18", - "react-dom": "^18" + "@plasmicapp/cli": "^0.1.364", + "@plasmicapp/react-web": "^1.0.12", + "next": "16.2.9", + "react": "19.2.4", + "react-dom": "19.2.4" }, "devDependencies": { "@types/node": "^20", - "@types/react": "^18", - "@types/react-dom": "^18", - "eslint": "^8", - "eslint-config-next": "14.2.35", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "16.2.9", "typescript": "^5" } } diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/pages/_app.tsx b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/pages/_app.tsx index 7798086430..42311ed08a 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/pages/_app.tsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/pages/_app.tsx @@ -1,3 +1,4 @@ +import "../components/plasmic/create_plasmic_app/plasmic.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss import '@/styles/globals.css' import { PlasmicRootProvider } from "@plasmicapp/react-web"; import type { AppProps } from "next/app"; diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/pages/dynamic/[slug].tsx b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/pages/dynamic/[slug].tsx index 700ca6ff83..cb8372d398 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/pages/dynamic/[slug].tsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-codegen-ts/pages/dynamic/[slug].tsx @@ -6,8 +6,31 @@ import { PageParamsProvider as PageParamsProvider__ } from "@plasmicapp/react-we import { PlasmicDynamicPage } from "../../components/plasmic/create_plasmic_app/PlasmicDynamicPage"; import { useRouter } from "next/router"; import { PlasmicQueryDataProvider } from "@plasmicapp/react-web/lib/query"; +import type { GetStaticPaths, GetStaticProps } from "next"; +import { extractPlasmicQueryData } from "@plasmicapp/react-web/lib/prepass"; -function DynamicPage() { +export const getStaticProps: GetStaticProps = async context => { + const queryCache = await extractPlasmicQueryData( + + + + ); + return { + props: { queryCache } + }; +}; + +export const getStaticPaths: GetStaticPaths = async () => { + console.warn( + "getStaticPaths was called with an empty paths array. Update this with the set of pages you want to generate statically." + ); + return { + paths: [], + fallback: "blocking" + }; +}; + +function DynamicPage({ queryCache }: { queryCache?: any }) { // Use PlasmicDynamicPage to render this component as it was // designed in Plasmic, by activating the appropriate variants, // attaching the appropriate event handlers, etc. You @@ -26,7 +49,7 @@ function DynamicPage() { // (https://nextjs.org/docs/advanced-features/custom-app). return ( - + diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-js/styles/Home.module.css b/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-js/styles/Home.module.css new file mode 100644 index 0000000000..59dea42754 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-js/styles/Home.module.css @@ -0,0 +1,141 @@ +.page { + --background: #fafafa; + --foreground: #fff; + + --text-primary: #000; + --text-secondary: #666; + + --button-primary-hover: #383838; + --button-secondary-hover: #f2f2f2; + --button-secondary-border: #ebebeb; + + display: flex; + min-height: 100vh; + align-items: center; + justify-content: center; + font-family: var(--font-geist-sans); + background-color: var(--background); +} + +.main { + display: flex; + min-height: 100vh; + width: 100%; + max-width: 800px; + flex-direction: column; + align-items: flex-start; + justify-content: space-between; + background-color: var(--foreground); + padding: 120px 60px; +} + +.intro { + display: flex; + flex-direction: column; + align-items: flex-start; + text-align: left; + gap: 24px; +} + +.intro h1 { + max-width: 320px; + font-size: 40px; + font-weight: 600; + line-height: 48px; + letter-spacing: -2.4px; + text-wrap: balance; + color: var(--text-primary); +} + +.intro p { + max-width: 440px; + font-size: 18px; + line-height: 32px; + text-wrap: balance; + color: var(--text-secondary); +} + +.intro a { + font-weight: 500; + color: var(--text-primary); +} + +.ctas { + display: flex; + flex-direction: row; + width: 100%; + max-width: 440px; + gap: 16px; + font-size: 14px; +} + +.ctas a { + display: flex; + justify-content: center; + align-items: center; + height: 40px; + padding: 0 16px; + border-radius: 128px; + border: 1px solid transparent; + transition: 0.2s; + cursor: pointer; + width: fit-content; + font-weight: 500; +} + +a.primary { + background: var(--text-primary); + color: var(--background); + gap: 8px; +} + +a.secondary { + border-color: var(--button-secondary-border); +} + +/* Enable hover only on non-touch devices */ +@media (hover: hover) and (pointer: fine) { + a.primary:hover { + background: var(--button-primary-hover); + border-color: transparent; + } + + a.secondary:hover { + background: var(--button-secondary-hover); + border-color: transparent; + } +} + +@media (max-width: 600px) { + .main { + padding: 48px 24px; + } + + .intro { + gap: 16px; + } + + .intro h1 { + font-size: 32px; + line-height: 40px; + letter-spacing: -1.92px; + } +} + +@media (prefers-color-scheme: dark) { + .logo { + filter: invert(); + } + + .page { + --background: #000; + --foreground: #000; + + --text-primary: #ededed; + --text-secondary: #999; + + --button-primary-hover: #ccc; + --button-secondary-hover: #1a1a1a; + --button-secondary-border: #1a1a1a; + } +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-js/styles/globals.css b/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-js/styles/globals.css new file mode 100644 index 0000000000..3dd82369c1 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-js/styles/globals.css @@ -0,0 +1,10 @@ +* { + box-sizing: border-box; + padding: 0; + margin: 0; +} + +a { + color: inherit; + text-decoration: none; +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/eslint.config.mjs b/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/eslint.config.mjs new file mode 100644 index 0000000000..05e726d1b4 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/eslint.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig, globalIgnores } from "eslint/config"; +import nextVitals from "eslint-config-next/core-web-vitals"; +import nextTs from "eslint-config-next/typescript"; + +const eslintConfig = defineConfig([ + ...nextVitals, + ...nextTs, + // Override default ignores of eslint-config-next. + globalIgnores([ + // Default ignores of eslint-config-next: + ".next/**", + "out/**", + "build/**", + "next-env.d.ts", + ]), +]); + +export default eslintConfig; diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/next.config.ts b/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/next.config.ts new file mode 100644 index 0000000000..3915163597 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/next.config.ts @@ -0,0 +1,8 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + /* config options here */ + reactStrictMode: true, +}; + +export default nextConfig; diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/package.json b/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/package.json index 66fd89da21..f34d1cf5c8 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/package.json +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/package.json @@ -6,20 +6,20 @@ "dev": "next dev", "build": "next build", "start": "next start", - "lint": "next lint" + "lint": "eslint" }, "dependencies": { - "@plasmicapp/loader-nextjs": "^1.0.456", - "next": "14.2.35", - "react": "^18", - "react-dom": "^18" + "@plasmicapp/loader-nextjs": "^2.0.6", + "next": "16.2.7", + "react": "19.2.4", + "react-dom": "19.2.4" }, "devDependencies": { "@types/node": "^20", - "@types/react": "^18", - "@types/react-dom": "^18", - "eslint": "^8", - "eslint-config-next": "14.2.35", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "16.2.7", "typescript": "^5" } } diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/pages/[[...catchall]].tsx b/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/pages/[[...catchall]].tsx index 77dc730098..b0d7563c13 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/pages/[[...catchall]].tsx +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/pages/[[...catchall]].tsx @@ -29,6 +29,7 @@ export default function PlasmicLoaderPage(props: { pageRoute={pageMeta.path} pageParams={pageMeta.params} pageQuery={router.query} + trackQueryParams > diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/styles/Home.module.css b/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/styles/Home.module.css new file mode 100644 index 0000000000..59dea42754 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/styles/Home.module.css @@ -0,0 +1,141 @@ +.page { + --background: #fafafa; + --foreground: #fff; + + --text-primary: #000; + --text-secondary: #666; + + --button-primary-hover: #383838; + --button-secondary-hover: #f2f2f2; + --button-secondary-border: #ebebeb; + + display: flex; + min-height: 100vh; + align-items: center; + justify-content: center; + font-family: var(--font-geist-sans); + background-color: var(--background); +} + +.main { + display: flex; + min-height: 100vh; + width: 100%; + max-width: 800px; + flex-direction: column; + align-items: flex-start; + justify-content: space-between; + background-color: var(--foreground); + padding: 120px 60px; +} + +.intro { + display: flex; + flex-direction: column; + align-items: flex-start; + text-align: left; + gap: 24px; +} + +.intro h1 { + max-width: 320px; + font-size: 40px; + font-weight: 600; + line-height: 48px; + letter-spacing: -2.4px; + text-wrap: balance; + color: var(--text-primary); +} + +.intro p { + max-width: 440px; + font-size: 18px; + line-height: 32px; + text-wrap: balance; + color: var(--text-secondary); +} + +.intro a { + font-weight: 500; + color: var(--text-primary); +} + +.ctas { + display: flex; + flex-direction: row; + width: 100%; + max-width: 440px; + gap: 16px; + font-size: 14px; +} + +.ctas a { + display: flex; + justify-content: center; + align-items: center; + height: 40px; + padding: 0 16px; + border-radius: 128px; + border: 1px solid transparent; + transition: 0.2s; + cursor: pointer; + width: fit-content; + font-weight: 500; +} + +a.primary { + background: var(--text-primary); + color: var(--background); + gap: 8px; +} + +a.secondary { + border-color: var(--button-secondary-border); +} + +/* Enable hover only on non-touch devices */ +@media (hover: hover) and (pointer: fine) { + a.primary:hover { + background: var(--button-primary-hover); + border-color: transparent; + } + + a.secondary:hover { + background: var(--button-secondary-hover); + border-color: transparent; + } +} + +@media (max-width: 600px) { + .main { + padding: 48px 24px; + } + + .intro { + gap: 16px; + } + + .intro h1 { + font-size: 32px; + line-height: 40px; + letter-spacing: -1.92px; + } +} + +@media (prefers-color-scheme: dark) { + .logo { + filter: invert(); + } + + .page { + --background: #000; + --foreground: #000; + + --text-primary: #ededed; + --text-secondary: #999; + + --button-primary-hover: #ccc; + --button-secondary-hover: #1a1a1a; + --button-secondary-border: #1a1a1a; + } +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/styles/globals.css b/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/styles/globals.css new file mode 100644 index 0000000000..3dd82369c1 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/styles/globals.css @@ -0,0 +1,10 @@ +* { + box-sizing: border-box; + padding: 0; + margin: 0; +} + +a { + color: inherit; + text-decoration: none; +} diff --git a/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/tsconfig.json b/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/tsconfig.json index 649790e5da..9c891d210c 100644 --- a/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/tsconfig.json +++ b/packages/create-plasmic-app/cpa-out/nextjs-pages-loader-ts/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "target": "ES2017", "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, @@ -10,12 +11,19 @@ "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, - "jsx": "preserve", + "jsx": "react-jsx", "incremental": true, "paths": { "@/*": ["./*"] } }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts", + "**/*.mts" + ], "exclude": ["node_modules"] } diff --git a/packages/create-plasmic-app/cpa-out/react-codegen-js/package.json b/packages/create-plasmic-app/cpa-out/react-codegen-js/package.json index 73276fd5ac..5bed98fe38 100644 --- a/packages/create-plasmic-app/cpa-out/react-codegen-js/package.json +++ b/packages/create-plasmic-app/cpa-out/react-codegen-js/package.json @@ -10,8 +10,8 @@ "preview": "vite preview" }, "dependencies": { - "@plasmicapp/cli": "^0.1.359", - "@plasmicapp/react-web": "^1.0.0", + "@plasmicapp/cli": "^0.1.364", + "@plasmicapp/react-web": "^1.0.12", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/packages/create-plasmic-app/cpa-out/react-codegen-js/plasmic.json b/packages/create-plasmic-app/cpa-out/react-codegen-js/plasmic.json index b446ddc8ea..a19b2a8a2b 100644 --- a/packages/create-plasmic-app/cpa-out/react-codegen-js/plasmic.json +++ b/packages/create-plasmic-app/cpa-out/react-codegen-js/plasmic.json @@ -7,7 +7,7 @@ }, "style": { "scheme": "css-modules", - "defaultStyleCssFilePath": "plasmic/plasmic__default_style.module.css" + "defaultStyleCssFilePath": "plasmic/plasmic__default_style.css" }, "images": { "scheme": "inlined", @@ -26,7 +26,7 @@ "projectApiToken": "7BRFratDxPLMGZHnd2grV5QP6mlHcZ1AK3BJSIeh7xzUlHgWh25XpgXvUaKAqHXFMXQQuzpADqboibF6nqNWQ", "projectName": "create-plasmic-app", "version": "latest", - "cssFilePath": "plasmic/create_plasmic_app/plasmic.module.css", + "cssFilePath": "plasmic/create_plasmic_app/plasmic.css", "components": [ { "id": "6uuAAE1jiCew", @@ -132,6 +132,6 @@ }, "wrapPagesWithGlobalContexts": true, "preserveJsImportExtensions": false, - "cliVersion": "0.1.359", - "$schema": "https://unpkg.com/@plasmicapp/cli@0.1.359/dist/plasmic.schema.json" + "cliVersion": "0.1.364", + "$schema": "https://unpkg.com/@plasmicapp/cli@0.1.364/dist/plasmic.schema.json" } diff --git a/packages/create-plasmic-app/cpa-out/react-codegen-js/src/components/plasmic/create_plasmic_app/PlasmicButton.jsx b/packages/create-plasmic-app/cpa-out/react-codegen-js/src/components/plasmic/create_plasmic_app/PlasmicButton.jsx index 711ce2081b..a8ada73be2 100644 --- a/packages/create-plasmic-app/cpa-out/react-codegen-js/src/components/plasmic/create_plasmic_app/PlasmicButton.jsx +++ b/packages/create-plasmic-app/cpa-out/react-codegen-js/src/components/plasmic/create_plasmic_app/PlasmicButton.jsx @@ -22,7 +22,7 @@ import { useDataEnv } from "@plasmicapp/react-web/lib/host"; import * as pp from "@plasmicapp/react-web"; import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic.module.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss +import "./plasmic.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss import sty from "./PlasmicButton.module.css"; // plasmic-import: TQcvW_pSKi3/css import CheckSvgIcon from "./icons/PlasmicIcon__CheckSvg"; // plasmic-import: gj-_D7n31Ho/icon import IconIcon from "./icons/PlasmicIcon__Icon"; // plasmic-import: 6PNxx3YMyDQ/icon @@ -133,12 +133,12 @@ function PlasmicButton__RenderFunc(props) { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.button, - projectcss.button__47tFX, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "button", + "button__47tFX", + "root_reset_47tFXWjN2C4NyHFGGpaYQ3", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { @@ -205,7 +205,7 @@ function PlasmicButton__RenderFunc(props) {
), @@ -293,7 +293,7 @@ function PlasmicButton__RenderFunc(props) {
), diff --git a/packages/create-plasmic-app/cpa-out/react-codegen-js/src/components/plasmic/create_plasmic_app/PlasmicButton.module.css b/packages/create-plasmic-app/cpa-out/react-codegen-js/src/components/plasmic/create_plasmic_app/PlasmicButton.module.css new file mode 100644 index 0000000000..7da840be69 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/react-codegen-js/src/components/plasmic/create_plasmic_app/PlasmicButton.module.css @@ -0,0 +1,468 @@ +.root { + display: flex; + position: relative; + flex-direction: row; + align-items: center; + justify-content: center; + background: #232320; + cursor: pointer; + transition-property: background; + transition-duration: 0.1s; + column-gap: 8px; + -webkit-transition-property: background; + -webkit-transition-duration: 0.1s; + border-radius: 6px; + padding: 12px 20px; + border-width: 0px; +} +.rootshowStartIcon { + padding-left: 16px; +} +.rootshowEndIcon { + padding-right: 16px; +} +.rootisDisabled { + cursor: not-allowed; + opacity: 0.6; +} +.rootshape_rounded { + padding-left: 20px; + padding-right: 20px; + min-width: 100px; + border-radius: 999px; +} +.rootshape_round { + border-radius: 50%; + padding: 12px; +} +.rootshape_sharp { + border-radius: 0px; +} +.rootsize_compact { + padding: 6px 16px; +} +.rootsize_minimal { + padding: 0px; +} +.rootcolor_blue { + background: #0091ff; +} +.rootcolor_green { + background: #30a46c; +} +.rootcolor_yellow { + background: #f5d90a; +} +.rootcolor_red { + background: #e54d2e; +} +.rootcolor_sand { + background: #717069; +} +.rootcolor_white { + background: #ffffff; +} +.rootcolor_softBlue { + background: #edf6ff; +} +.rootcolor_softGreen { + background: #e9f9ee; +} +.rootcolor_softYellow { + background: #fffbd1; +} +.rootcolor_softRed { + background: #fff0ee; +} +.rootcolor_softSand { + background: #eeeeec; +} +.rootcolor_clear { + background: #ffffff00; +} +.rootcolor_link { + background: #ffffff00; +} +.rootshape_rounded_showStartIcon { + padding-left: 16px; +} +.rootshowEndIcon_shape_rounded { + padding-right: 16px; +} +.rootshape_round_size_compact { + padding: 6px; +} +.root___focusVisibleWithin { + box-shadow: 0px 0px 0px 3px #96c7f2; + outline: none; +} +.root:focus-within:focus-within { + box-shadow: 0px 0px 0px 3px #96c7f2; + outline: none; +} +.root:hover:hover { + background: #282826; +} +.root:active:active { + background: #2e2e2b; +} +.rootcolor_blue:hover:hover { + background: #369eff; +} +.rootcolor_blue:active:active { + background: #52a9ff; +} +.rootcolor_green:hover:hover { + background: #3cb179; +} +.rootcolor_green:active:active { + background: #4cc38a; +} +.rootcolor_yellow:hover:hover { + background: #ffef5c; +} +.rootcolor_yellow:active:active { + background: #f0c000; +} +.rootcolor_red:hover:hover { + background: #ec5e41; +} +.rootcolor_red:active:active { + background: #f16a50; +} +.rootcolor_sand:hover:hover { + background: #7f7e77; +} +.rootcolor_sand:active:active { + background: #a1a09a; +} +.rootcolor_white:hover:hover { + background: #ffef5c; +} +.rootcolor_white:active:active { + background: #f0c000; +} +.rootcolor_softBlue:hover:hover { + background: #e1f0ff; +} +.rootcolor_softBlue:active:active { + background: #cee7fe; +} +.rootcolor_softGreen:active:active { + background: #ccebd7; +} +.rootcolor_softGreen:hover:hover { + background: #ddf3e4; +} +.rootcolor_softYellow:active:active { + background: #fef2a4; +} +.rootcolor_softYellow:hover:hover { + background: #fff8bb; +} +.rootcolor_softRed:active:active { + background: #fdd8d3; +} +.rootcolor_softRed:hover:hover { + background: #ffe6e2; +} +.rootcolor_softSand:hover:hover { + background: #e9e9e6; +} +.rootcolor_softSand:active:active { + background: #e3e3e0; +} +.rootcolor_clear:hover:hover { + background: #e9e9e6; +} +.rootcolor_clear:active:active { + background: #e3e3e0; +} +.rootcolor_link:hover:hover { + background: #ffffff00; +} +.rootcolor_link:active:active { + background: #ffffff00; +} +.startIconContainer { + display: flex; + position: relative; + flex-direction: row; + align-items: stretch; + justify-content: flex-start; +} +.startIconContainershowStartIcon { + display: flex; +} +.slotTargetStartIcon { + color: #ededec; +} +.slotTargetStartIconcolor_yellow { + color: #35290f; +} +.slotTargetStartIconcolor_white { + color: #35290f; +} +.slotTargetStartIconcolor_softBlue { + color: #006adc; +} +.slotTargetStartIconcolor_softGreen { + color: #18794e; +} +.slotTargetStartIconcolor_softYellow { + color: #946800; +} +.slotTargetStartIconcolor_softRed { + color: #ca3214; +} +.slotTargetStartIconcolor_softSand { + color: #706f6c; +} +.slotTargetStartIconcolor_clear { + color: #1b1b18; +} +.slotTargetStartIconcolor_link { + color: #0091ff; +} +.rootcolor_link:hover .slotTargetStartIconcolor_link { + color: #0081f1; +} +.rootcolor_link:active .slotTargetStartIconcolor_link { + color: #006adc; +} +.svg__s6Xxe { + position: relative; + object-fit: cover; + width: auto; + height: 1em; +} +.contentContainer { + display: flex; + position: relative; + flex-direction: row; + align-items: stretch; + justify-content: flex-start; +} +.root .contentContainer___focusVisibleWithin { + outline: none; +} +.slotTargetChildren { + color: #ededec; + font-weight: 500; + white-space: pre; +} +.slotTargetChildrencolor_blue { + color: #ffffff; +} +.slotTargetChildrencolor_green { + color: #ffffff; +} +.slotTargetChildrencolor_yellow { + color: #35290f; +} +.slotTargetChildrencolor_red { + color: #ffffff; +} +.slotTargetChildrencolor_sand { + color: #ffffff; +} +.slotTargetChildrencolor_white { + color: #1b1b18; +} +.slotTargetChildrencolor_softBlue { + color: #006adc; +} +.slotTargetChildrencolor_softGreen { + color: #18794e; +} +.slotTargetChildrencolor_softYellow { + color: #946800; +} +.slotTargetChildrencolor_softRed { + color: #ca3214; +} +.slotTargetChildrencolor_softSand { + color: #1b1b18; +} +.slotTargetChildrencolor_clear { + color: #1b1b18; +} +.slotTargetChildrencolor_link { + color: #0091ff; +} +.root:focus-within .slotTargetChildren > *, +.root:focus-within .slotTargetChildren > :global(.__wab_slot) > *, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root:focus-within .slotTargetChildren > picture > img, +.root:focus-within .slotTargetChildren > :global(.__wab_slot) > picture > img, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img { + outline: none; +} +.root .slotTargetChildren___focusVisibleWithin > *, +.root .slotTargetChildren___focusVisibleWithin > :global(.__wab_slot) > *, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root .slotTargetChildren___focusVisibleWithin > picture > img, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > picture + > img, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img { + outline: none; +} +.rootcolor_link:hover .slotTargetChildrencolor_link { + color: #0081f1; +} +.rootcolor_link:hover .slotTargetChildrencolor_link > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot-string-wrapper), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot-string-wrapper), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot-string-wrapper), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot-string-wrapper) { + text-decoration-line: underline; +} +.rootcolor_link:active .slotTargetChildrencolor_link { + color: #006adc; +} +.endIconContainer { + display: flex; + position: relative; + flex-direction: row; + align-items: stretch; + justify-content: flex-start; +} +.endIconContainershowEndIcon { + display: flex; +} +.slotTargetEndIcon { + color: #ededec; +} +.slotTargetEndIconcolor_yellow { + color: #35290f; +} +.slotTargetEndIconcolor_white { + color: #35290f; +} +.slotTargetEndIconcolor_softBlue { + color: #006adc; +} +.slotTargetEndIconcolor_softGreen { + color: #18794e; +} +.slotTargetEndIconcolor_softYellow { + color: #946800; +} +.slotTargetEndIconcolor_softRed { + color: #ca3214; +} +.slotTargetEndIconcolor_softSand { + color: #706f6c; +} +.slotTargetEndIconcolor_clear { + color: #1b1b18; +} +.slotTargetEndIconcolor_link { + color: #0091ff; +} +.rootcolor_link:hover .slotTargetEndIconcolor_link { + color: #0081f1; +} +.rootcolor_link:active .slotTargetEndIconcolor_link { + color: #006adc; +} +.svg__liJa { + position: relative; + object-fit: cover; + width: auto; + height: 1em; +} diff --git a/packages/create-plasmic-app/cpa-out/react-codegen-js/src/components/plasmic/create_plasmic_app/PlasmicDynamicPage.jsx b/packages/create-plasmic-app/cpa-out/react-codegen-js/src/components/plasmic/create_plasmic_app/PlasmicDynamicPage.jsx index ddd69d4ee1..5b8da5584e 100644 --- a/packages/create-plasmic-app/cpa-out/react-codegen-js/src/components/plasmic/create_plasmic_app/PlasmicDynamicPage.jsx +++ b/packages/create-plasmic-app/cpa-out/react-codegen-js/src/components/plasmic/create_plasmic_app/PlasmicDynamicPage.jsx @@ -15,10 +15,11 @@ import { deriveRenderOpts } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; +import { unstable_usePlasmicQueries } from "@plasmicapp/react-web/lib/data-sources"; import RandomDynamicPageButton from "../../RandomDynamicPageButton"; // plasmic-import: Q23H1_1M_P/component import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic.module.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss +import "./plasmic.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss import sty from "./PlasmicDynamicPage.module.css"; // plasmic-import: AO44A-w7hh/css const emptyProxy = new Proxy(() => "", { @@ -53,6 +54,38 @@ export const PlasmicDynamicPage__ArgProps = new Array(); const $$ = {}; +export const serverQueryTree = { + type: "component", + queries: { + sha256: { + id: "custom-code:krgWtF9Kkesx", + fn: async ({ $q, $props, $ctx, $state }) => { + console.log("Running SHA-256"); + const data = new TextEncoder().encode($ctx.params.slug); + const hash = await crypto.subtle.digest("SHA-256", data); + return [...new Uint8Array(hash)] + .map(b => b.toString(16).padStart(2, "0")) + .join("-"); + }, + args: ({ $q, $props, $ctx, $state }) => { + return [ + { + $ctx: { + params: $ctx["params"] + }, + $props: {}, + $q: {}, + $state: {} + } + ]; + } + } + }, + propsContext: {}, + stateSpecs: [], + children: [] +}; + function PlasmicDynamicPage__RenderFunc(props) { const { variants, overrides, forNode } = props; const args = React.useMemo( @@ -72,20 +105,21 @@ function PlasmicDynamicPage__RenderFunc(props) { const $ctx = useDataEnv?.() || {}; const refsRef = React.useRef({}); const $refs = refsRef.current; + const $q = unstable_usePlasmicQueries(serverQueryTree, $ctx, $props, null); const styleTokensClassNames = _useStyleTokens(); return ( -
+
-

+ {$ctx.params.slug} +

+ - - {(() => { - try { - return $ctx.params.slug; - } catch (e) { - if ( - e instanceof TypeError || - e?.plasmicType === "PlasmicUndefinedDataError" - ) { - return "Page 1"; - } - throw e; - } - })()} - - + {`SHA-256(${$ctx.params.slug}): ${$q.sha256.data}`} + "", { @@ -78,17 +78,17 @@ function PlasmicHomepage__RenderFunc(props) { const styleTokensClassNames = _useStyleTokens(); return ( -
+

- {"create-plasmic-app"} + {hasVariant(globalVariants, "screen", "desktopOnly") + ? "create-plasmic-app" + : "cpa"}

- {hasVariant(globalVariants, "screen", "desktopOnly") ? ( - - - { - "This project is used by run-cpa.ts in the create-plasmic-app repo.\n\nrun-cpa.ts runs create-plasmic-app for many combinations of args (e.g. nextjs + appDir + loader + typescript) to check for changes in generated files. Any changes to this project will result in lots of changes to the generated files. " - } - - - {"Therefore, please avoid changing this project."} - - - ) : ( - - - { - "If you haven't already done so, go back and learn the basics by going through the Plasmic Levels tutorial.\n\nIt's always easier to start from examples! Add a new page using a template\u2014do this from the list of pages in the top left (the gray + button).\n\nOr press the big blue + button to start dragging items into this page.\n\nIntegrate this project into your codebase\u2014press the " - } - - - {"Code"} - - - { - " button in the top right and follow the quickstart instructions.\n\nJoin our Slack community (icon in bottom left) for help any time." - } - - - )} + { + "This project is used by run-cpa.ts in the create-plasmic-app repo.\n\n\nrun-cpa.ts runs create-plasmic-app for many combinations of args (e.g. nextjs + appDir + loader + typescript) to check for changes in generated files. Any changes to this project will result in lots of changes to the generated files. Therefore, please avoid changing this project.\n" + }
* { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) { + font-family: var(--mixin-prihNuSPt-kU_font-family); + font-size: var(--mixin-prihNuSPt-kU_font-size); + font-weight: var(--mixin-prihNuSPt-kU_font-weight); + font-style: var(--mixin-prihNuSPt-kU_font-style); + color: var(--mixin-prihNuSPt-kU_color); + text-align: var(--mixin-prihNuSPt-kU_text-align); + text-transform: var(--mixin-prihNuSPt-kU_text-transform); + line-height: var(--mixin-prihNuSPt-kU_line-height); + letter-spacing: var(--mixin-prihNuSPt-kU_letter-spacing); + white-space: var(--mixin-prihNuSPt-kU_white-space); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h4:where(.h4__47tFX), +h4:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h4__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h4, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h4, +h4:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-pKcLzBwr6rlS_font-size); + font-weight: var(--mixin-pKcLzBwr6rlS_font-weight); + letter-spacing: var(--mixin-pKcLzBwr6rlS_letter-spacing); + line-height: var(--mixin-pKcLzBwr6rlS_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h5:where(.h5__47tFX), +h5:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h5__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h5, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h5, +h5:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-Q3MZaojcv1qw_font-size); + font-weight: var(--mixin-Q3MZaojcv1qw_font-weight); + letter-spacing: var(--mixin-Q3MZaojcv1qw_letter-spacing); + line-height: var(--mixin-Q3MZaojcv1qw_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h6:where(.h6__47tFX), +h6:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h6__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h6, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h6, +h6:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-WQN-U7Y-Mt0i_font-size); + font-weight: var(--mixin-WQN-U7Y-Mt0i_font-weight); + line-height: var(--mixin-WQN-U7Y-Mt0i_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) a:where(.a__47tFX), +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.a__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) a, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) a, +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + color: var(--mixin-_NIhBtBbqybq_color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) blockquote:where(.blockquote__47tFX), +blockquote:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.blockquote__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) blockquote, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) blockquote, +blockquote:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + color: var(--mixin-5965DRLFNjWi_color); + padding-left: var(--mixin-5965DRLFNjWi_padding-left); + border-left: var(--mixin-5965DRLFNjWi_border-left-width) + var(--mixin-5965DRLFNjWi_border-left-style) + var(--mixin-5965DRLFNjWi_border-left-color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h1:where(.h1__47tFX), +h1:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h1__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h1, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h1, +h1:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-_J1_6dhZex0j_font-size); + font-weight: var(--mixin-_J1_6dhZex0j_font-weight); + letter-spacing: var(--mixin-_J1_6dhZex0j_letter-spacing); + line-height: var(--mixin-_J1_6dhZex0j_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h2:where(.h2__47tFX), +h2:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h2__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h2, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h2, +h2:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-tyWR-eqFmXa2R_font-size); + font-weight: var(--mixin-tyWR-eqFmXa2R_font-weight); + letter-spacing: var(--mixin-tyWR-eqFmXa2R_letter-spacing); + line-height: var(--mixin-tyWR-eqFmXa2R_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h3:where(.h3__47tFX), +h3:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h3__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h3, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h3, +h3:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-VSfYlZt0xLESb_font-size); + font-weight: var(--mixin-VSfYlZt0xLESb_font-weight); + letter-spacing: var(--mixin-VSfYlZt0xLESb_letter-spacing); + line-height: var(--mixin-VSfYlZt0xLESb_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) code:where(.code__47tFX), +code:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.code__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) code, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) code, +code:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + background: #f8f8f8; + font-family: var(--mixin-2Dy3yomrqskwe_font-family); + border-radius: var(--mixin-2Dy3yomrqskwe_border-top-left-radius) + var(--mixin-2Dy3yomrqskwe_border-top-right-radius) + var(--mixin-2Dy3yomrqskwe_border-bottom-right-radius) + var(--mixin-2Dy3yomrqskwe_border-bottom-left-radius); + padding: var(--mixin-2Dy3yomrqskwe_padding-top) + var(--mixin-2Dy3yomrqskwe_padding-right) + var(--mixin-2Dy3yomrqskwe_padding-bottom) + var(--mixin-2Dy3yomrqskwe_padding-left); + border-top: var(--mixin-2Dy3yomrqskwe_border-top-width) + var(--mixin-2Dy3yomrqskwe_border-top-style) + var(--mixin-2Dy3yomrqskwe_border-top-color); + border-right: var(--mixin-2Dy3yomrqskwe_border-right-width) + var(--mixin-2Dy3yomrqskwe_border-right-style) + var(--mixin-2Dy3yomrqskwe_border-right-color); + border-bottom: var(--mixin-2Dy3yomrqskwe_border-bottom-width) + var(--mixin-2Dy3yomrqskwe_border-bottom-style) + var(--mixin-2Dy3yomrqskwe_border-bottom-color); + border-left: var(--mixin-2Dy3yomrqskwe_border-left-width) + var(--mixin-2Dy3yomrqskwe_border-left-style) + var(--mixin-2Dy3yomrqskwe_border-left-color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) pre:where(.pre__47tFX), +pre:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.pre__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) pre, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) pre, +pre:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + background: #f8f8f8; + font-family: var(--mixin-0u7VwjXF8Kvpe_font-family); + border-radius: var(--mixin-0u7VwjXF8Kvpe_border-top-left-radius) + var(--mixin-0u7VwjXF8Kvpe_border-top-right-radius) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-right-radius) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-left-radius); + padding: var(--mixin-0u7VwjXF8Kvpe_padding-top) + var(--mixin-0u7VwjXF8Kvpe_padding-right) + var(--mixin-0u7VwjXF8Kvpe_padding-bottom) + var(--mixin-0u7VwjXF8Kvpe_padding-left); + border-top: var(--mixin-0u7VwjXF8Kvpe_border-top-width) + var(--mixin-0u7VwjXF8Kvpe_border-top-style) + var(--mixin-0u7VwjXF8Kvpe_border-top-color); + border-right: var(--mixin-0u7VwjXF8Kvpe_border-right-width) + var(--mixin-0u7VwjXF8Kvpe_border-right-style) + var(--mixin-0u7VwjXF8Kvpe_border-right-color); + border-bottom: var(--mixin-0u7VwjXF8Kvpe_border-bottom-width) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-style) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-color); + border-left: var(--mixin-0u7VwjXF8Kvpe_border-left-width) + var(--mixin-0u7VwjXF8Kvpe_border-left-style) + var(--mixin-0u7VwjXF8Kvpe_border-left-color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) ol:where(.ol__47tFX), +ol:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.ol__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) ol, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) ol, +ol:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + display: var(--mixin-D70_omI9mm34j_display); + flex-direction: var(--mixin-D70_omI9mm34j_flex-direction); + align-items: var(--mixin-D70_omI9mm34j_align-items); + justify-content: var(--mixin-D70_omI9mm34j_justify-content); + list-style-position: var(--mixin-D70_omI9mm34j_list-style-position); + padding-left: var(--mixin-D70_omI9mm34j_padding-left); + position: var(--mixin-D70_omI9mm34j_position); + list-style-type: var(--mixin-D70_omI9mm34j_list-style-type); + column-gap: var(--mixin-D70_omI9mm34j_column-gap); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) ul:where(.ul__47tFX), +ul:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.ul__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) ul, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) ul, +ul:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + display: var(--mixin-6zRO9vzPQi4g5_display); + flex-direction: var(--mixin-6zRO9vzPQi4g5_flex-direction); + align-items: var(--mixin-6zRO9vzPQi4g5_align-items); + justify-content: var(--mixin-6zRO9vzPQi4g5_justify-content); + list-style-position: var(--mixin-6zRO9vzPQi4g5_list-style-position); + padding-left: var(--mixin-6zRO9vzPQi4g5_padding-left); + position: var(--mixin-6zRO9vzPQi4g5_position); + list-style-type: var(--mixin-6zRO9vzPQi4g5_list-style-type); + column-gap: var(--mixin-6zRO9vzPQi4g5_column-gap); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) a:where(.a__47tFX):hover, +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.a__47tFX):hover, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) a:hover, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) a:hover, +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags):hover { + color: var(--mixin-u1gAzUhZSVyWj_color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) li:where(.li__47tFX), +li:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.li__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) li, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) li, +li:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { +} diff --git a/packages/create-plasmic-app/cpa-out/react-codegen-js/src/components/plasmic/plasmic__default_style.css b/packages/create-plasmic-app/cpa-out/react-codegen-js/src/components/plasmic/plasmic__default_style.css new file mode 100644 index 0000000000..b347b0c883 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/react-codegen-js/src/components/plasmic/plasmic__default_style.css @@ -0,0 +1,363 @@ +:where(.all) { + display: block; + white-space: inherit; + grid-row: auto; + grid-column: auto; + position: relative; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + text-decoration-line: none; + margin: 0; + border-width: 0px; +} +:where(.__wab_expr_html_text *) { + white-space: inherit; + grid-row: auto; + grid-column: auto; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + margin: 0; + border-width: 0px; +} + +:where(.img) { + display: inline-block; +} +:where(.__wab_expr_html_text img) { + white-space: inherit; +} + +:where(.li) { + display: list-item; +} +:where(.__wab_expr_html_text li) { + white-space: inherit; +} + +:where(.span) { + display: inline; + position: static; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text span) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.input) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text input) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} + +:where(.textarea) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text textarea) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} + +:where(.button) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text button) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} + +:where(.code) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text code) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.pre) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text pre) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.p) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text p) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.i) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text i) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.em) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text em) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.strong) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text strong) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.h1) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h1) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h2) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h2) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h3) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h3) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h4) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h4) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h5) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h5) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h6) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h6) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.address) { + font-style: inherit; +} +:where(.__wab_expr_html_text address) { + white-space: inherit; + font-style: inherit; +} + +:where(.a) { + color: inherit; +} +:where(.__wab_expr_html_text a) { + white-space: inherit; + color: inherit; +} + +:where(.ol) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ol) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.ul) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ul) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.select) { + padding: 2px 6px; +} +:where(.__wab_expr_html_text select) { + white-space: inherit; + padding: 2px 6px; +} + +.plasmic_default__component_wrapper { + display: grid; +} +.plasmic_default__inline { + display: inline; +} +.plasmic_page_wrapper { + display: flex; + width: 100%; + min-height: 100vh; + align-items: stretch; + align-self: start; +} +.plasmic_page_wrapper > * { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} diff --git a/packages/create-plasmic-app/cpa-out/react-codegen-js/src/index.css b/packages/create-plasmic-app/cpa-out/react-codegen-js/src/index.css new file mode 100644 index 0000000000..6119ad9a8f --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/react-codegen-js/src/index.css @@ -0,0 +1,68 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/packages/create-plasmic-app/cpa-out/react-codegen-ts/package.json b/packages/create-plasmic-app/cpa-out/react-codegen-ts/package.json index fe307cd776..39dc331a12 100644 --- a/packages/create-plasmic-app/cpa-out/react-codegen-ts/package.json +++ b/packages/create-plasmic-app/cpa-out/react-codegen-ts/package.json @@ -10,8 +10,8 @@ "preview": "vite preview" }, "dependencies": { - "@plasmicapp/cli": "^0.1.359", - "@plasmicapp/react-web": "^1.0.0", + "@plasmicapp/cli": "^0.1.364", + "@plasmicapp/react-web": "^1.0.12", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/packages/create-plasmic-app/cpa-out/react-codegen-ts/plasmic.json b/packages/create-plasmic-app/cpa-out/react-codegen-ts/plasmic.json index c176beebe3..ef6e6fc46f 100644 --- a/packages/create-plasmic-app/cpa-out/react-codegen-ts/plasmic.json +++ b/packages/create-plasmic-app/cpa-out/react-codegen-ts/plasmic.json @@ -7,7 +7,7 @@ }, "style": { "scheme": "css-modules", - "defaultStyleCssFilePath": "plasmic/plasmic__default_style.module.css" + "defaultStyleCssFilePath": "plasmic/plasmic__default_style.css" }, "images": { "scheme": "inlined", @@ -26,7 +26,7 @@ "projectApiToken": "7BRFratDxPLMGZHnd2grV5QP6mlHcZ1AK3BJSIeh7xzUlHgWh25XpgXvUaKAqHXFMXQQuzpADqboibF6nqNWQ", "projectName": "create-plasmic-app", "version": "latest", - "cssFilePath": "plasmic/create_plasmic_app/plasmic.module.css", + "cssFilePath": "plasmic/create_plasmic_app/plasmic.css", "components": [ { "id": "6uuAAE1jiCew", @@ -132,6 +132,6 @@ }, "wrapPagesWithGlobalContexts": true, "preserveJsImportExtensions": false, - "cliVersion": "0.1.359", - "$schema": "https://unpkg.com/@plasmicapp/cli@0.1.359/dist/plasmic.schema.json" + "cliVersion": "0.1.364", + "$schema": "https://unpkg.com/@plasmicapp/cli@0.1.364/dist/plasmic.schema.json" } diff --git a/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/RandomDynamicPageButton.tsx b/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/RandomDynamicPageButton.tsx index 7bb41e78a2..4b45114ca9 100644 --- a/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/RandomDynamicPageButton.tsx +++ b/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/RandomDynamicPageButton.tsx @@ -19,8 +19,7 @@ import { // // You can also stop extending from DefaultRandomDynamicPageButtonProps altogether and have // total control over the props for your component. -export interface RandomDynamicPageButtonProps - extends DefaultRandomDynamicPageButtonProps {} +export interface RandomDynamicPageButtonProps extends DefaultRandomDynamicPageButtonProps {} function RandomDynamicPageButton(props: RandomDynamicPageButtonProps) { // Use PlasmicRandomDynamicPageButton to render this component as it was diff --git a/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicButton.module.css b/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicButton.module.css new file mode 100644 index 0000000000..7da840be69 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicButton.module.css @@ -0,0 +1,468 @@ +.root { + display: flex; + position: relative; + flex-direction: row; + align-items: center; + justify-content: center; + background: #232320; + cursor: pointer; + transition-property: background; + transition-duration: 0.1s; + column-gap: 8px; + -webkit-transition-property: background; + -webkit-transition-duration: 0.1s; + border-radius: 6px; + padding: 12px 20px; + border-width: 0px; +} +.rootshowStartIcon { + padding-left: 16px; +} +.rootshowEndIcon { + padding-right: 16px; +} +.rootisDisabled { + cursor: not-allowed; + opacity: 0.6; +} +.rootshape_rounded { + padding-left: 20px; + padding-right: 20px; + min-width: 100px; + border-radius: 999px; +} +.rootshape_round { + border-radius: 50%; + padding: 12px; +} +.rootshape_sharp { + border-radius: 0px; +} +.rootsize_compact { + padding: 6px 16px; +} +.rootsize_minimal { + padding: 0px; +} +.rootcolor_blue { + background: #0091ff; +} +.rootcolor_green { + background: #30a46c; +} +.rootcolor_yellow { + background: #f5d90a; +} +.rootcolor_red { + background: #e54d2e; +} +.rootcolor_sand { + background: #717069; +} +.rootcolor_white { + background: #ffffff; +} +.rootcolor_softBlue { + background: #edf6ff; +} +.rootcolor_softGreen { + background: #e9f9ee; +} +.rootcolor_softYellow { + background: #fffbd1; +} +.rootcolor_softRed { + background: #fff0ee; +} +.rootcolor_softSand { + background: #eeeeec; +} +.rootcolor_clear { + background: #ffffff00; +} +.rootcolor_link { + background: #ffffff00; +} +.rootshape_rounded_showStartIcon { + padding-left: 16px; +} +.rootshowEndIcon_shape_rounded { + padding-right: 16px; +} +.rootshape_round_size_compact { + padding: 6px; +} +.root___focusVisibleWithin { + box-shadow: 0px 0px 0px 3px #96c7f2; + outline: none; +} +.root:focus-within:focus-within { + box-shadow: 0px 0px 0px 3px #96c7f2; + outline: none; +} +.root:hover:hover { + background: #282826; +} +.root:active:active { + background: #2e2e2b; +} +.rootcolor_blue:hover:hover { + background: #369eff; +} +.rootcolor_blue:active:active { + background: #52a9ff; +} +.rootcolor_green:hover:hover { + background: #3cb179; +} +.rootcolor_green:active:active { + background: #4cc38a; +} +.rootcolor_yellow:hover:hover { + background: #ffef5c; +} +.rootcolor_yellow:active:active { + background: #f0c000; +} +.rootcolor_red:hover:hover { + background: #ec5e41; +} +.rootcolor_red:active:active { + background: #f16a50; +} +.rootcolor_sand:hover:hover { + background: #7f7e77; +} +.rootcolor_sand:active:active { + background: #a1a09a; +} +.rootcolor_white:hover:hover { + background: #ffef5c; +} +.rootcolor_white:active:active { + background: #f0c000; +} +.rootcolor_softBlue:hover:hover { + background: #e1f0ff; +} +.rootcolor_softBlue:active:active { + background: #cee7fe; +} +.rootcolor_softGreen:active:active { + background: #ccebd7; +} +.rootcolor_softGreen:hover:hover { + background: #ddf3e4; +} +.rootcolor_softYellow:active:active { + background: #fef2a4; +} +.rootcolor_softYellow:hover:hover { + background: #fff8bb; +} +.rootcolor_softRed:active:active { + background: #fdd8d3; +} +.rootcolor_softRed:hover:hover { + background: #ffe6e2; +} +.rootcolor_softSand:hover:hover { + background: #e9e9e6; +} +.rootcolor_softSand:active:active { + background: #e3e3e0; +} +.rootcolor_clear:hover:hover { + background: #e9e9e6; +} +.rootcolor_clear:active:active { + background: #e3e3e0; +} +.rootcolor_link:hover:hover { + background: #ffffff00; +} +.rootcolor_link:active:active { + background: #ffffff00; +} +.startIconContainer { + display: flex; + position: relative; + flex-direction: row; + align-items: stretch; + justify-content: flex-start; +} +.startIconContainershowStartIcon { + display: flex; +} +.slotTargetStartIcon { + color: #ededec; +} +.slotTargetStartIconcolor_yellow { + color: #35290f; +} +.slotTargetStartIconcolor_white { + color: #35290f; +} +.slotTargetStartIconcolor_softBlue { + color: #006adc; +} +.slotTargetStartIconcolor_softGreen { + color: #18794e; +} +.slotTargetStartIconcolor_softYellow { + color: #946800; +} +.slotTargetStartIconcolor_softRed { + color: #ca3214; +} +.slotTargetStartIconcolor_softSand { + color: #706f6c; +} +.slotTargetStartIconcolor_clear { + color: #1b1b18; +} +.slotTargetStartIconcolor_link { + color: #0091ff; +} +.rootcolor_link:hover .slotTargetStartIconcolor_link { + color: #0081f1; +} +.rootcolor_link:active .slotTargetStartIconcolor_link { + color: #006adc; +} +.svg__s6Xxe { + position: relative; + object-fit: cover; + width: auto; + height: 1em; +} +.contentContainer { + display: flex; + position: relative; + flex-direction: row; + align-items: stretch; + justify-content: flex-start; +} +.root .contentContainer___focusVisibleWithin { + outline: none; +} +.slotTargetChildren { + color: #ededec; + font-weight: 500; + white-space: pre; +} +.slotTargetChildrencolor_blue { + color: #ffffff; +} +.slotTargetChildrencolor_green { + color: #ffffff; +} +.slotTargetChildrencolor_yellow { + color: #35290f; +} +.slotTargetChildrencolor_red { + color: #ffffff; +} +.slotTargetChildrencolor_sand { + color: #ffffff; +} +.slotTargetChildrencolor_white { + color: #1b1b18; +} +.slotTargetChildrencolor_softBlue { + color: #006adc; +} +.slotTargetChildrencolor_softGreen { + color: #18794e; +} +.slotTargetChildrencolor_softYellow { + color: #946800; +} +.slotTargetChildrencolor_softRed { + color: #ca3214; +} +.slotTargetChildrencolor_softSand { + color: #1b1b18; +} +.slotTargetChildrencolor_clear { + color: #1b1b18; +} +.slotTargetChildrencolor_link { + color: #0091ff; +} +.root:focus-within .slotTargetChildren > *, +.root:focus-within .slotTargetChildren > :global(.__wab_slot) > *, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root:focus-within .slotTargetChildren > picture > img, +.root:focus-within .slotTargetChildren > :global(.__wab_slot) > picture > img, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img, +.root:focus-within + .slotTargetChildren + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img { + outline: none; +} +.root .slotTargetChildren___focusVisibleWithin > *, +.root .slotTargetChildren___focusVisibleWithin > :global(.__wab_slot) > *, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > *, +.root .slotTargetChildren___focusVisibleWithin > picture > img, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > picture + > img, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img, +.root + .slotTargetChildren___focusVisibleWithin + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > picture + > img { + outline: none; +} +.rootcolor_link:hover .slotTargetChildrencolor_link { + color: #0081f1; +} +.rootcolor_link:hover .slotTargetChildrencolor_link > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot-string-wrapper), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot-string-wrapper), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot-string-wrapper), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_expr_html_text), +.rootcolor_link:hover + .slotTargetChildrencolor_link + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot) + > :global(.__wab_slot-string-wrapper) { + text-decoration-line: underline; +} +.rootcolor_link:active .slotTargetChildrencolor_link { + color: #006adc; +} +.endIconContainer { + display: flex; + position: relative; + flex-direction: row; + align-items: stretch; + justify-content: flex-start; +} +.endIconContainershowEndIcon { + display: flex; +} +.slotTargetEndIcon { + color: #ededec; +} +.slotTargetEndIconcolor_yellow { + color: #35290f; +} +.slotTargetEndIconcolor_white { + color: #35290f; +} +.slotTargetEndIconcolor_softBlue { + color: #006adc; +} +.slotTargetEndIconcolor_softGreen { + color: #18794e; +} +.slotTargetEndIconcolor_softYellow { + color: #946800; +} +.slotTargetEndIconcolor_softRed { + color: #ca3214; +} +.slotTargetEndIconcolor_softSand { + color: #706f6c; +} +.slotTargetEndIconcolor_clear { + color: #1b1b18; +} +.slotTargetEndIconcolor_link { + color: #0091ff; +} +.rootcolor_link:hover .slotTargetEndIconcolor_link { + color: #0081f1; +} +.rootcolor_link:active .slotTargetEndIconcolor_link { + color: #006adc; +} +.svg__liJa { + position: relative; + object-fit: cover; + width: auto; + height: 1em; +} diff --git a/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicButton.tsx b/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicButton.tsx index 11e1447b67..a7b09d4767 100644 --- a/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicButton.tsx +++ b/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicButton.tsx @@ -62,7 +62,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic.module.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss +import "./plasmic.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss import sty from "./PlasmicButton.module.css"; // plasmic-import: TQcvW_pSKi3/css import CheckSvgIcon from "./icons/PlasmicIcon__CheckSvg"; // plasmic-import: gj-_D7n31Ho/icon @@ -242,6 +242,7 @@ function PlasmicButton__RenderFunc(props: { ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, @@ -267,12 +268,12 @@ function PlasmicButton__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.button, - projectcss.button__47tFX, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "button", + "button__47tFX", + "root_reset_47tFXWjN2C4NyHFGGpaYQ3", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { @@ -339,7 +340,7 @@ function PlasmicButton__RenderFunc(props: {
), @@ -427,7 +428,7 @@ function PlasmicButton__RenderFunc(props: {
), diff --git a/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicDynamicPage.module.css b/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicDynamicPage.module.css new file mode 100644 index 0000000000..77a456651f --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicDynamicPage.module.css @@ -0,0 +1,44 @@ +.root { + display: flex; + position: relative; + width: 100%; + height: 100%; + flex-direction: column; + justify-content: flex-start; + align-items: center; + min-width: 0; + min-height: 0; + padding: 0px; +} +.section { + display: flex; + position: relative; + flex-direction: column; + align-items: center; + justify-content: flex-start; + width: 100%; + height: auto; + max-width: 100%; + row-gap: 16px; + min-width: 0; + padding: 96px 24px; +} +.h2 { + position: relative; + width: 100%; + height: auto; + max-width: 800px; + text-align: center; + min-width: 0; +} +.span { + position: relative; + width: 100%; + height: auto; + max-width: 800px; + text-align: center; + min-width: 0; +} +.randomDynamicPageButton:global(.__wab_instance):global(.__wab_instance) { + position: relative; +} diff --git a/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicDynamicPage.tsx b/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicDynamicPage.tsx index f42643542a..e385b3944e 100644 --- a/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicDynamicPage.tsx +++ b/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicDynamicPage.tsx @@ -55,13 +55,22 @@ import { useGlobalActions } from "@plasmicapp/react-web/lib/host"; +import { useMutablePlasmicQueryData } from "@plasmicapp/query"; + +import { unstable_usePlasmicQueries } from "@plasmicapp/react-web/lib/data-sources"; +import type { + PlasmicQuery, + PlasmicQueryResult +} from "@plasmicapp/react-web/lib/data-sources"; +import type { QueryComponentNode } from "@plasmicapp/react-web/lib/data-sources"; + import RandomDynamicPageButton from "../../RandomDynamicPageButton"; // plasmic-import: Q23H1_1M_P/component import { _useGlobalVariants } from "./plasmic"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectModule import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic.module.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss +import "./plasmic.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss import sty from "./PlasmicDynamicPage.module.css"; // plasmic-import: AO44A-w7hh/css const emptyProxy: any = new Proxy(() => "", { @@ -109,7 +118,8 @@ export const PlasmicDynamicPage__ArgProps = new Array(); export type PlasmicDynamicPage__OverridesType = { root?: Flex__<"div">; section?: Flex__<"section">; - h1?: Flex__<"h1">; + h2?: Flex__<"h2">; + span?: Flex__<"span">; randomDynamicPageButton?: Flex__; }; @@ -119,6 +129,38 @@ export interface DefaultDynamicPageProps { const $$ = {}; +export const serverQueryTree: QueryComponentNode = { + type: "component", + queries: { + sha256: { + id: "custom-code:krgWtF9Kkesx", + fn: async ({ $q, $props, $ctx, $state }) => { + console.log("Running SHA-256"); + const data = new TextEncoder().encode($ctx.params.slug); + const hash = await crypto.subtle.digest("SHA-256", data); + return [...new Uint8Array(hash)] + .map(b => b.toString(16).padStart(2, "0")) + .join("-"); + }, + args: ({ $q, $props, $ctx, $state }) => { + return [ + { + $ctx: { + params: $ctx["params"] + }, + $props: {}, + $q: {}, + $state: {} + } + ]; + } + } + }, + propsContext: {}, + stateSpecs: [], + children: [] +}; + function PlasmicDynamicPage__RenderFunc(props: { variants: PlasmicDynamicPage__VariantsArgs; args: PlasmicDynamicPage__ArgsType; @@ -147,21 +189,23 @@ function PlasmicDynamicPage__RenderFunc(props: { const refsRef = React.useRef({}); const $refs = refsRef.current; + const $q = unstable_usePlasmicQueries(serverQueryTree, $ctx, $props, null); + const styleTokensClassNames = _useStyleTokens(); return ( -
+
-

+ {$ctx.params.slug} +

+ - - {(() => { - try { - return $ctx.params.slug; - } catch (e) { - if ( - e instanceof TypeError || - e?.plasmicType === "PlasmicUndefinedDataError" - ) { - return "Page 1"; - } - throw e; - } - })()} - - + {`SHA-256(${$ctx.params.slug}): ${$q.sha256.data}`} + = type NodeDefaultElementType = { root: "div"; section: "section"; - h1: "h1"; + h2: "h2"; + span: "span"; randomDynamicPageButton: typeof RandomDynamicPageButton; }; @@ -292,7 +337,8 @@ export const PlasmicDynamicPage = Object.assign( { // Helper components rendering sub-elements section: makeNodeComponent("section"), - h1: makeNodeComponent("h1"), + h2: makeNodeComponent("h2"), + span: makeNodeComponent("span"), randomDynamicPageButton: makeNodeComponent("randomDynamicPageButton"), // Metadata about props expected for PlasmicDynamicPage diff --git a/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicHomepage.module.css b/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicHomepage.module.css new file mode 100644 index 0000000000..333527f4b2 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicHomepage.module.css @@ -0,0 +1,43 @@ +.root { + display: flex; + position: relative; + width: 100%; + height: 100%; + flex-direction: column; + justify-content: flex-start; + align-items: center; + min-width: 0; + min-height: 0; + padding: 0px; +} +.section { + display: flex; + position: relative; + flex-direction: column; + align-items: center; + justify-content: flex-start; + width: 100%; + height: auto; + max-width: 100%; + row-gap: 16px; + min-width: 0; + padding: 96px 24px; +} +.h1 { + position: relative; + max-width: 800px; + height: auto; + width: 100%; + min-width: 0; +} +.text { + position: relative; + max-width: 800px; + height: auto; + width: 100%; + min-width: 0; +} +.randomDynamicPageButton:global(.__wab_instance):global(.__wab_instance) { + max-width: 100%; + position: relative; +} diff --git a/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx b/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx index f84881d5f2..58e467707b 100644 --- a/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx +++ b/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx @@ -56,13 +56,12 @@ import { } from "@plasmicapp/react-web/lib/host"; import RandomDynamicPageButton from "../../RandomDynamicPageButton"; // plasmic-import: Q23H1_1M_P/component -import { Fetcher } from "@plasmicapp/react-web/lib/data-sources"; import { _useGlobalVariants } from "./plasmic"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectModule import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic.module.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss +import "./plasmic.css"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectcss import sty from "./PlasmicHomepage.module.css"; // plasmic-import: 6uuAAE1jiCew/css const emptyProxy: any = new Proxy(() => "", { @@ -155,17 +154,17 @@ function PlasmicHomepage__RenderFunc(props: { return ( -
+

- {"create-plasmic-app"} + {hasVariant(globalVariants, "screen", "desktopOnly") + ? "create-plasmic-app" + : "cpa"}

- {hasVariant(globalVariants, "screen", "desktopOnly") ? ( - - - { - "This project is used by run-cpa.ts in the create-plasmic-app repo.\n\nrun-cpa.ts runs create-plasmic-app for many combinations of args (e.g. nextjs + appDir + loader + typescript) to check for changes in generated files. Any changes to this project will result in lots of changes to the generated files. " - } - - - {"Therefore, please avoid changing this project."} - - - ) : ( - - - { - "If you haven't already done so, go back and learn the basics by going through the Plasmic Levels tutorial.\n\nIt's always easier to start from examples! Add a new page using a template\u2014do this from the list of pages in the top left (the gray + button).\n\nOr press the big blue + button to start dragging items into this page.\n\nIntegrate this project into your codebase\u2014press the " - } - - - {"Code"} - - - { - " button in the top right and follow the quickstart instructions.\n\nJoin our Slack community (icon in bottom left) for help any time." - } - - - )} + { + "This project is used by run-cpa.ts in the create-plasmic-app repo.\n\n\nrun-cpa.ts runs create-plasmic-app for many combinations of args (e.g. nextjs + appDir + loader + typescript) to check for changes in generated files. Any changes to this project will result in lots of changes to the generated files. Therefore, please avoid changing this project.\n" + }
* { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) { + font-family: var(--mixin-prihNuSPt-kU_font-family); + font-size: var(--mixin-prihNuSPt-kU_font-size); + font-weight: var(--mixin-prihNuSPt-kU_font-weight); + font-style: var(--mixin-prihNuSPt-kU_font-style); + color: var(--mixin-prihNuSPt-kU_color); + text-align: var(--mixin-prihNuSPt-kU_text-align); + text-transform: var(--mixin-prihNuSPt-kU_text-transform); + line-height: var(--mixin-prihNuSPt-kU_line-height); + letter-spacing: var(--mixin-prihNuSPt-kU_letter-spacing); + white-space: var(--mixin-prihNuSPt-kU_white-space); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h4:where(.h4__47tFX), +h4:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h4__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h4, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h4, +h4:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-pKcLzBwr6rlS_font-size); + font-weight: var(--mixin-pKcLzBwr6rlS_font-weight); + letter-spacing: var(--mixin-pKcLzBwr6rlS_letter-spacing); + line-height: var(--mixin-pKcLzBwr6rlS_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h5:where(.h5__47tFX), +h5:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h5__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h5, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h5, +h5:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-Q3MZaojcv1qw_font-size); + font-weight: var(--mixin-Q3MZaojcv1qw_font-weight); + letter-spacing: var(--mixin-Q3MZaojcv1qw_letter-spacing); + line-height: var(--mixin-Q3MZaojcv1qw_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h6:where(.h6__47tFX), +h6:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h6__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h6, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h6, +h6:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-WQN-U7Y-Mt0i_font-size); + font-weight: var(--mixin-WQN-U7Y-Mt0i_font-weight); + line-height: var(--mixin-WQN-U7Y-Mt0i_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) a:where(.a__47tFX), +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.a__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) a, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) a, +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + color: var(--mixin-_NIhBtBbqybq_color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) blockquote:where(.blockquote__47tFX), +blockquote:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.blockquote__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) blockquote, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) blockquote, +blockquote:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + color: var(--mixin-5965DRLFNjWi_color); + padding-left: var(--mixin-5965DRLFNjWi_padding-left); + border-left: var(--mixin-5965DRLFNjWi_border-left-width) + var(--mixin-5965DRLFNjWi_border-left-style) + var(--mixin-5965DRLFNjWi_border-left-color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h1:where(.h1__47tFX), +h1:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h1__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h1, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h1, +h1:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-_J1_6dhZex0j_font-size); + font-weight: var(--mixin-_J1_6dhZex0j_font-weight); + letter-spacing: var(--mixin-_J1_6dhZex0j_letter-spacing); + line-height: var(--mixin-_J1_6dhZex0j_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h2:where(.h2__47tFX), +h2:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h2__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h2, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h2, +h2:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-tyWR-eqFmXa2R_font-size); + font-weight: var(--mixin-tyWR-eqFmXa2R_font-weight); + letter-spacing: var(--mixin-tyWR-eqFmXa2R_letter-spacing); + line-height: var(--mixin-tyWR-eqFmXa2R_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) h3:where(.h3__47tFX), +h3:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.h3__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) h3, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) h3, +h3:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + font-size: var(--mixin-VSfYlZt0xLESb_font-size); + font-weight: var(--mixin-VSfYlZt0xLESb_font-weight); + letter-spacing: var(--mixin-VSfYlZt0xLESb_letter-spacing); + line-height: var(--mixin-VSfYlZt0xLESb_line-height); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) code:where(.code__47tFX), +code:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.code__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) code, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) code, +code:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + background: #f8f8f8; + font-family: var(--mixin-2Dy3yomrqskwe_font-family); + border-radius: var(--mixin-2Dy3yomrqskwe_border-top-left-radius) + var(--mixin-2Dy3yomrqskwe_border-top-right-radius) + var(--mixin-2Dy3yomrqskwe_border-bottom-right-radius) + var(--mixin-2Dy3yomrqskwe_border-bottom-left-radius); + padding: var(--mixin-2Dy3yomrqskwe_padding-top) + var(--mixin-2Dy3yomrqskwe_padding-right) + var(--mixin-2Dy3yomrqskwe_padding-bottom) + var(--mixin-2Dy3yomrqskwe_padding-left); + border-top: var(--mixin-2Dy3yomrqskwe_border-top-width) + var(--mixin-2Dy3yomrqskwe_border-top-style) + var(--mixin-2Dy3yomrqskwe_border-top-color); + border-right: var(--mixin-2Dy3yomrqskwe_border-right-width) + var(--mixin-2Dy3yomrqskwe_border-right-style) + var(--mixin-2Dy3yomrqskwe_border-right-color); + border-bottom: var(--mixin-2Dy3yomrqskwe_border-bottom-width) + var(--mixin-2Dy3yomrqskwe_border-bottom-style) + var(--mixin-2Dy3yomrqskwe_border-bottom-color); + border-left: var(--mixin-2Dy3yomrqskwe_border-left-width) + var(--mixin-2Dy3yomrqskwe_border-left-style) + var(--mixin-2Dy3yomrqskwe_border-left-color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) pre:where(.pre__47tFX), +pre:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.pre__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) pre, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) pre, +pre:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + background: #f8f8f8; + font-family: var(--mixin-0u7VwjXF8Kvpe_font-family); + border-radius: var(--mixin-0u7VwjXF8Kvpe_border-top-left-radius) + var(--mixin-0u7VwjXF8Kvpe_border-top-right-radius) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-right-radius) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-left-radius); + padding: var(--mixin-0u7VwjXF8Kvpe_padding-top) + var(--mixin-0u7VwjXF8Kvpe_padding-right) + var(--mixin-0u7VwjXF8Kvpe_padding-bottom) + var(--mixin-0u7VwjXF8Kvpe_padding-left); + border-top: var(--mixin-0u7VwjXF8Kvpe_border-top-width) + var(--mixin-0u7VwjXF8Kvpe_border-top-style) + var(--mixin-0u7VwjXF8Kvpe_border-top-color); + border-right: var(--mixin-0u7VwjXF8Kvpe_border-right-width) + var(--mixin-0u7VwjXF8Kvpe_border-right-style) + var(--mixin-0u7VwjXF8Kvpe_border-right-color); + border-bottom: var(--mixin-0u7VwjXF8Kvpe_border-bottom-width) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-style) + var(--mixin-0u7VwjXF8Kvpe_border-bottom-color); + border-left: var(--mixin-0u7VwjXF8Kvpe_border-left-width) + var(--mixin-0u7VwjXF8Kvpe_border-left-style) + var(--mixin-0u7VwjXF8Kvpe_border-left-color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) ol:where(.ol__47tFX), +ol:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.ol__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) ol, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) ol, +ol:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + display: var(--mixin-D70_omI9mm34j_display); + flex-direction: var(--mixin-D70_omI9mm34j_flex-direction); + align-items: var(--mixin-D70_omI9mm34j_align-items); + justify-content: var(--mixin-D70_omI9mm34j_justify-content); + list-style-position: var(--mixin-D70_omI9mm34j_list-style-position); + padding-left: var(--mixin-D70_omI9mm34j_padding-left); + position: var(--mixin-D70_omI9mm34j_position); + list-style-type: var(--mixin-D70_omI9mm34j_list-style-type); + column-gap: var(--mixin-D70_omI9mm34j_column-gap); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) ul:where(.ul__47tFX), +ul:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.ul__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) ul, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) ul, +ul:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { + display: var(--mixin-6zRO9vzPQi4g5_display); + flex-direction: var(--mixin-6zRO9vzPQi4g5_flex-direction); + align-items: var(--mixin-6zRO9vzPQi4g5_align-items); + justify-content: var(--mixin-6zRO9vzPQi4g5_justify-content); + list-style-position: var(--mixin-6zRO9vzPQi4g5_list-style-position); + padding-left: var(--mixin-6zRO9vzPQi4g5_padding-left); + position: var(--mixin-6zRO9vzPQi4g5_position); + list-style-type: var(--mixin-6zRO9vzPQi4g5_list-style-type); + column-gap: var(--mixin-6zRO9vzPQi4g5_column-gap); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) a:where(.a__47tFX):hover, +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.a__47tFX):hover, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) a:hover, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) a:hover, +a:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags):hover { + color: var(--mixin-u1gAzUhZSVyWj_color); +} + +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3) li:where(.li__47tFX), +li:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3.li__47tFX), +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3 .__wab_expr_html_text) li, +:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) li, +li:where(.root_reset_47tFXWjN2C4NyHFGGpaYQ3_tags) { +} diff --git a/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/plasmic__default_style.css b/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/plasmic__default_style.css new file mode 100644 index 0000000000..b347b0c883 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/components/plasmic/plasmic__default_style.css @@ -0,0 +1,363 @@ +:where(.all) { + display: block; + white-space: inherit; + grid-row: auto; + grid-column: auto; + position: relative; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + text-decoration-line: none; + margin: 0; + border-width: 0px; +} +:where(.__wab_expr_html_text *) { + white-space: inherit; + grid-row: auto; + grid-column: auto; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + margin: 0; + border-width: 0px; +} + +:where(.img) { + display: inline-block; +} +:where(.__wab_expr_html_text img) { + white-space: inherit; +} + +:where(.li) { + display: list-item; +} +:where(.__wab_expr_html_text li) { + white-space: inherit; +} + +:where(.span) { + display: inline; + position: static; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text span) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.input) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text input) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} + +:where(.textarea) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text textarea) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} + +:where(.button) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text button) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} + +:where(.code) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text code) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.pre) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text pre) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.p) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text p) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.i) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text i) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.em) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text em) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.strong) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text strong) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.h1) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h1) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h2) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h2) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h3) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h3) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h4) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h4) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h5) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h5) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h6) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h6) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.address) { + font-style: inherit; +} +:where(.__wab_expr_html_text address) { + white-space: inherit; + font-style: inherit; +} + +:where(.a) { + color: inherit; +} +:where(.__wab_expr_html_text a) { + white-space: inherit; + color: inherit; +} + +:where(.ol) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ol) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.ul) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ul) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.select) { + padding: 2px 6px; +} +:where(.__wab_expr_html_text select) { + white-space: inherit; + padding: 2px 6px; +} + +.plasmic_default__component_wrapper { + display: grid; +} +.plasmic_default__inline { + display: inline; +} +.plasmic_page_wrapper { + display: flex; + width: 100%; + min-height: 100vh; + align-items: stretch; + align-self: start; +} +.plasmic_page_wrapper > * { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} diff --git a/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/index.css b/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/index.css new file mode 100644 index 0000000000..6119ad9a8f --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/react-codegen-ts/src/index.css @@ -0,0 +1,68 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/package.json b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/package.json index e9ca3dd249..6f21c02675 100644 --- a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/package.json +++ b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/package.json @@ -12,11 +12,11 @@ "test": "vitest run" }, "dependencies": { - "@plasmicapp/cli": "^0.1.359", - "@plasmicapp/react-web": "^0.2.425", + "@plasmicapp/cli": "^0.1.363", + "@plasmicapp/react-web": "^1.0.10", "@tailwindcss/vite": "^4.1.18", "@tanstack/react-devtools": "latest", - "@tanstack/react-query": "^5.90.21", + "@tanstack/react-query": "^5.101.0", "@tanstack/react-router": "latest", "@tanstack/react-router-devtools": "latest", "@tanstack/router-plugin": "^1.132.0", @@ -34,12 +34,11 @@ "@types/node": "^22.10.2", "@types/react": "^19.2.0", "@types/react-dom": "^19.2.0", - "@vitejs/plugin-react": "^5.1.4", + "@vitejs/plugin-react": "^6.0.1", "jsdom": "^28.1.0", - "typescript": "^5.7.2", - "vite": "^7.3.1", - "vite-tsconfig-paths": "^5.1.4", - "vitest": "^3.0.5" + "typescript": "^6.0.2", + "vite": "^8.0.0", + "vitest": "^4.1.5" }, "pnpm": { "onlyBuiltDependencies": [ diff --git a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/plasmic.json b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/plasmic.json index e21ee9da6b..dae7957484 100644 --- a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/plasmic.json +++ b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/plasmic.json @@ -135,6 +135,6 @@ "tanstackConfig": { "pagesDir": "../routes" }, - "cliVersion": "0.1.359", - "$schema": "https://unpkg.com/@plasmicapp/cli@0.1.359/dist/plasmic.schema.json" + "cliVersion": "0.1.363", + "$schema": "https://unpkg.com/@plasmicapp/cli@0.1.363/dist/plasmic.schema.json" } diff --git a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/Footer.tsx b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/Footer.tsx deleted file mode 100644 index c8bfd17b5c..0000000000 --- a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/Footer.tsx +++ /dev/null @@ -1,44 +0,0 @@ -export default function Footer() { - const year = new Date().getFullYear() - - return ( - - ) -} diff --git a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/Header.tsx b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/Header.tsx deleted file mode 100644 index fa196d6047..0000000000 --- a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/Header.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import { Link } from '@tanstack/react-router' -import ThemeToggle from './ThemeToggle' - -export default function Header() { - return ( -
- -
- ) -} diff --git a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/RandomDynamicPageButton.tsx b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/RandomDynamicPageButton.tsx index 7bb41e78a2..4b45114ca9 100644 --- a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/RandomDynamicPageButton.tsx +++ b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/RandomDynamicPageButton.tsx @@ -19,8 +19,7 @@ import { // // You can also stop extending from DefaultRandomDynamicPageButtonProps altogether and have // total control over the props for your component. -export interface RandomDynamicPageButtonProps - extends DefaultRandomDynamicPageButtonProps {} +export interface RandomDynamicPageButtonProps extends DefaultRandomDynamicPageButtonProps {} function RandomDynamicPageButton(props: RandomDynamicPageButtonProps) { // Use PlasmicRandomDynamicPageButton to render this component as it was diff --git a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/ThemeToggle.tsx b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/ThemeToggle.tsx deleted file mode 100644 index 081ebe2b49..0000000000 --- a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/ThemeToggle.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import { useEffect, useState } from 'react' - -type ThemeMode = 'light' | 'dark' | 'auto' - -function getInitialMode(): ThemeMode { - if (typeof window === 'undefined') { - return 'auto' - } - - const stored = window.localStorage.getItem('theme') - if (stored === 'light' || stored === 'dark' || stored === 'auto') { - return stored - } - - return 'auto' -} - -function applyThemeMode(mode: ThemeMode) { - const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches - const resolved = mode === 'auto' ? (prefersDark ? 'dark' : 'light') : mode - - document.documentElement.classList.remove('light', 'dark') - document.documentElement.classList.add(resolved) - - if (mode === 'auto') { - document.documentElement.removeAttribute('data-theme') - } else { - document.documentElement.setAttribute('data-theme', mode) - } - - document.documentElement.style.colorScheme = resolved -} - -export default function ThemeToggle() { - const [mode, setMode] = useState('auto') - - useEffect(() => { - const initialMode = getInitialMode() - setMode(initialMode) - applyThemeMode(initialMode) - }, []) - - useEffect(() => { - if (mode !== 'auto') { - return - } - - const media = window.matchMedia('(prefers-color-scheme: dark)') - const onChange = () => applyThemeMode('auto') - - media.addEventListener('change', onChange) - return () => { - media.removeEventListener('change', onChange) - } - }, [mode]) - - function toggleMode() { - const nextMode: ThemeMode = - mode === 'light' ? 'dark' : mode === 'dark' ? 'auto' : 'light' - setMode(nextMode) - applyThemeMode(nextMode) - window.localStorage.setItem('theme', nextMode) - } - - const label = - mode === 'auto' - ? 'Theme mode: auto (system). Click to switch to light mode.' - : `Theme mode: ${mode}. Click to switch mode.` - - return ( - - ) -} diff --git a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicButton.css b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicButton.css new file mode 100644 index 0000000000..27b7c1253a --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicButton.css @@ -0,0 +1,495 @@ +.Button__root__gpc3K { + display: flex; + position: relative; + flex-direction: row; + align-items: center; + justify-content: center; + background: #232320; + cursor: pointer; + transition-property: background; + transition-duration: 0.1s; + column-gap: 8px; + -webkit-transition-property: background; + -webkit-transition-duration: 0.1s; + border-radius: 6px; + padding: 12px 20px; + border-width: 0px; +} +.Button__rootshowStartIcon__gpc3KzX0Z8 { + padding-left: 16px; +} +.Button__rootshowEndIcon__gpc3Kyu4Va { + padding-right: 16px; +} +.Button__rootisDisabled__gpc3Kwr3Ff { + cursor: not-allowed; + opacity: 0.6; +} +.Button__rootshape_rounded__gpc3KYlIzA { + padding-left: 20px; + padding-right: 20px; + min-width: 100px; + border-radius: 999px; +} +.Button__rootshape_round__gpc3Kq33Mv { + border-radius: 50%; + padding: 12px; +} +.Button__rootshape_sharp__gpc3K0LUp { + border-radius: 0px; +} +.Button__rootsize_compact__gpc3Kn6Abw { + padding: 6px 16px; +} +.Button__rootsize_minimal__gpc3KklAxP { + padding: 0px; +} +.Button__rootcolor_blue__gpc3K7OS1A { + background: #0091ff; +} +.Button__rootcolor_green__gpc3Kwu3Pw { + background: #30a46c; +} +.Button__rootcolor_yellow__gpc3KoEjPn { + background: #f5d90a; +} +.Button__rootcolor_red__gpc3KlyFe7 { + background: #e54d2e; +} +.Button__rootcolor_sand__gpc3K2T7KH { + background: #717069; +} +.Button__rootcolor_white__gpc3K5R3VM { + background: #ffffff; +} +.Button__rootcolor_softBlue__gpc3KnZeg { + background: #edf6ff; +} +.Button__rootcolor_softGreen__gpc3KqOip { + background: #e9f9ee; +} +.Button__rootcolor_softYellow__gpc3K95U0X { + background: #fffbd1; +} +.Button__rootcolor_softRed__gpc3KEt128 { + background: #fff0ee; +} +.Button__rootcolor_softSand__gpc3K8XvkE { + background: #eeeeec; +} +.Button__rootcolor_clear__gpc3KpPAgM { + background: #ffffff00; +} +.Button__rootcolor_link__gpc3Kf1H09 { + background: #ffffff00; +} +.Button__rootshape_rounded_showStartIcon__gpc3KYlIzAZX0Z8 { + padding-left: 16px; +} +.Button__rootshowEndIcon_shape_rounded__gpc3Kyu4VaYlIzA { + padding-right: 16px; +} +.Button__rootshape_round_size_compact__gpc3Kq33MvN6Abw { + padding: 6px; +} +.Button__root___focusVisibleWithin__gpc3KcjR25 { + box-shadow: 0px 0px 0px 3px #96c7f2; + outline: none; +} +.Button__root__gpc3K:focus-within:focus-within { + box-shadow: 0px 0px 0px 3px #96c7f2; + outline: none; +} +.Button__root__gpc3K:hover:hover { + background: #282826; +} +.Button__root__gpc3K:active:active { + background: #2e2e2b; +} +.Button__rootcolor_blue__gpc3K7OS1A:hover:hover { + background: #369eff; +} +.Button__rootcolor_blue__gpc3K7OS1A:active:active { + background: #52a9ff; +} +.Button__rootcolor_green__gpc3Kwu3Pw:hover:hover { + background: #3cb179; +} +.Button__rootcolor_green__gpc3Kwu3Pw:active:active { + background: #4cc38a; +} +.Button__rootcolor_yellow__gpc3KoEjPn:hover:hover { + background: #ffef5c; +} +.Button__rootcolor_yellow__gpc3KoEjPn:active:active { + background: #f0c000; +} +.Button__rootcolor_red__gpc3KlyFe7:hover:hover { + background: #ec5e41; +} +.Button__rootcolor_red__gpc3KlyFe7:active:active { + background: #f16a50; +} +.Button__rootcolor_sand__gpc3K2T7KH:hover:hover { + background: #7f7e77; +} +.Button__rootcolor_sand__gpc3K2T7KH:active:active { + background: #a1a09a; +} +.Button__rootcolor_white__gpc3K5R3VM:hover:hover { + background: #ffef5c; +} +.Button__rootcolor_white__gpc3K5R3VM:active:active { + background: #f0c000; +} +.Button__rootcolor_softBlue__gpc3KnZeg:hover:hover { + background: #e1f0ff; +} +.Button__rootcolor_softBlue__gpc3KnZeg:active:active { + background: #cee7fe; +} +.Button__rootcolor_softGreen__gpc3KqOip:active:active { + background: #ccebd7; +} +.Button__rootcolor_softGreen__gpc3KqOip:hover:hover { + background: #ddf3e4; +} +.Button__rootcolor_softYellow__gpc3K95U0X:active:active { + background: #fef2a4; +} +.Button__rootcolor_softYellow__gpc3K95U0X:hover:hover { + background: #fff8bb; +} +.Button__rootcolor_softRed__gpc3KEt128:active:active { + background: #fdd8d3; +} +.Button__rootcolor_softRed__gpc3KEt128:hover:hover { + background: #ffe6e2; +} +.Button__rootcolor_softSand__gpc3K8XvkE:hover:hover { + background: #e9e9e6; +} +.Button__rootcolor_softSand__gpc3K8XvkE:active:active { + background: #e3e3e0; +} +.Button__rootcolor_clear__gpc3KpPAgM:hover:hover { + background: #e9e9e6; +} +.Button__rootcolor_clear__gpc3KpPAgM:active:active { + background: #e3e3e0; +} +.Button__rootcolor_link__gpc3Kf1H09:hover:hover { + background: #ffffff00; +} +.Button__rootcolor_link__gpc3Kf1H09:active:active { + background: #ffffff00; +} +.Button__startIconContainer__men7Z { + display: flex; + position: relative; + flex-direction: row; + align-items: stretch; + justify-content: flex-start; +} +.Button__startIconContainershowStartIcon__men7ZzX0Z8 { + display: flex; +} +.Button__slotTargetStartIcon__tvHa9 { + color: #ededec; +} +.Button__slotTargetStartIconcolor_yellow__tvHa9OEjPn { + color: #35290f; +} +.Button__slotTargetStartIconcolor_white__tvHa95R3VM { + color: #35290f; +} +.Button__slotTargetStartIconcolor_softBlue__tvHa9NZeg { + color: #006adc; +} +.Button__slotTargetStartIconcolor_softGreen__tvHa9QOip { + color: #18794e; +} +.Button__slotTargetStartIconcolor_softYellow__tvHa995U0X { + color: #946800; +} +.Button__slotTargetStartIconcolor_softRed__tvHa9Et128 { + color: #ca3214; +} +.Button__slotTargetStartIconcolor_softSand__tvHa98XvkE { + color: #706f6c; +} +.Button__slotTargetStartIconcolor_clear__tvHa9PPAgM { + color: #1b1b18; +} +.Button__slotTargetStartIconcolor_link__tvHa9F1H09 { + color: #0091ff; +} +.Button__rootcolor_link__gpc3Kf1H09:hover + .Button__slotTargetStartIconcolor_link__tvHa9F1H09 { + color: #0081f1; +} +.Button__rootcolor_link__gpc3Kf1H09:active + .Button__slotTargetStartIconcolor_link__tvHa9F1H09 { + color: #006adc; +} +.Button__svg__s6Xxe { + position: relative; + object-fit: cover; + width: auto; + height: 1em; +} +.Button__contentContainer__sXXwU { + display: flex; + position: relative; + flex-direction: row; + align-items: stretch; + justify-content: flex-start; +} +.Button__root__gpc3K + .Button__contentContainer___focusVisibleWithin__sXXwUcjR25 { + outline: none; +} +.Button__slotTargetChildren__yzBwr { + color: #ededec; + font-weight: 500; + white-space: pre; +} +.Button__slotTargetChildrencolor_blue__yzBwr7OS1A { + color: #ffffff; +} +.Button__slotTargetChildrencolor_green__yzBwRwu3Pw { + color: #ffffff; +} +.Button__slotTargetChildrencolor_yellow__yzBwRoEjPn { + color: #35290f; +} +.Button__slotTargetChildrencolor_red__yzBwrlyFe7 { + color: #ffffff; +} +.Button__slotTargetChildrencolor_sand__yzBwr2T7KH { + color: #ffffff; +} +.Button__slotTargetChildrencolor_white__yzBwr5R3VM { + color: #1b1b18; +} +.Button__slotTargetChildrencolor_softBlue__yzBwRnZeg { + color: #006adc; +} +.Button__slotTargetChildrencolor_softGreen__yzBwrqOip { + color: #18794e; +} +.Button__slotTargetChildrencolor_softYellow__yzBwr95U0X { + color: #946800; +} +.Button__slotTargetChildrencolor_softRed__yzBwrEt128 { + color: #ca3214; +} +.Button__slotTargetChildrencolor_softSand__yzBwr8XvkE { + color: #1b1b18; +} +.Button__slotTargetChildrencolor_clear__yzBwRpPAgM { + color: #1b1b18; +} +.Button__slotTargetChildrencolor_link__yzBwRf1H09 { + color: #0091ff; +} +.Button__root__gpc3K:focus-within .Button__slotTargetChildren__yzBwr > *, +.Button__root__gpc3K:focus-within + .Button__slotTargetChildren__yzBwr + > .__wab_slot + > *, +.Button__root__gpc3K:focus-within + .Button__slotTargetChildren__yzBwr + > .__wab_slot + > .__wab_slot + > *, +.Button__root__gpc3K:focus-within + .Button__slotTargetChildren__yzBwr + > .__wab_slot + > .__wab_slot + > .__wab_slot + > *, +.Button__root__gpc3K:focus-within + .Button__slotTargetChildren__yzBwr + > picture + > img, +.Button__root__gpc3K:focus-within + .Button__slotTargetChildren__yzBwr + > .__wab_slot + > picture + > img, +.Button__root__gpc3K:focus-within + .Button__slotTargetChildren__yzBwr + > .__wab_slot + > .__wab_slot + > picture + > img, +.Button__root__gpc3K:focus-within + .Button__slotTargetChildren__yzBwr + > .__wab_slot + > .__wab_slot + > .__wab_slot + > picture + > img { + outline: none; +} +.Button__root__gpc3K + .Button__slotTargetChildren___focusVisibleWithin__yzBwRcjR25 + > *, +.Button__root__gpc3K + .Button__slotTargetChildren___focusVisibleWithin__yzBwRcjR25 + > .__wab_slot + > *, +.Button__root__gpc3K + .Button__slotTargetChildren___focusVisibleWithin__yzBwRcjR25 + > .__wab_slot + > .__wab_slot + > *, +.Button__root__gpc3K + .Button__slotTargetChildren___focusVisibleWithin__yzBwRcjR25 + > .__wab_slot + > .__wab_slot + > .__wab_slot + > *, +.Button__root__gpc3K + .Button__slotTargetChildren___focusVisibleWithin__yzBwRcjR25 + > picture + > img, +.Button__root__gpc3K + .Button__slotTargetChildren___focusVisibleWithin__yzBwRcjR25 + > .__wab_slot + > picture + > img, +.Button__root__gpc3K + .Button__slotTargetChildren___focusVisibleWithin__yzBwRcjR25 + > .__wab_slot + > .__wab_slot + > picture + > img, +.Button__root__gpc3K + .Button__slotTargetChildren___focusVisibleWithin__yzBwRcjR25 + > .__wab_slot + > .__wab_slot + > .__wab_slot + > picture + > img { + outline: none; +} +.Button__rootcolor_link__gpc3Kf1H09:hover + .Button__slotTargetChildrencolor_link__yzBwRf1H09 { + color: #0081f1; +} +.Button__rootcolor_link__gpc3Kf1H09:hover + .Button__slotTargetChildrencolor_link__yzBwRf1H09 + > .__wab_text, +.Button__rootcolor_link__gpc3Kf1H09:hover + .Button__slotTargetChildrencolor_link__yzBwRf1H09 + > .__wab_expr_html_text, +.Button__rootcolor_link__gpc3Kf1H09:hover + .Button__slotTargetChildrencolor_link__yzBwRf1H09 + > .__wab_slot-string-wrapper, +.Button__rootcolor_link__gpc3Kf1H09:hover + .Button__slotTargetChildrencolor_link__yzBwRf1H09 + > .__wab_slot + > .__wab_text, +.Button__rootcolor_link__gpc3Kf1H09:hover + .Button__slotTargetChildrencolor_link__yzBwRf1H09 + > .__wab_slot + > .__wab_expr_html_text, +.Button__rootcolor_link__gpc3Kf1H09:hover + .Button__slotTargetChildrencolor_link__yzBwRf1H09 + > .__wab_slot + > .__wab_slot-string-wrapper, +.Button__rootcolor_link__gpc3Kf1H09:hover + .Button__slotTargetChildrencolor_link__yzBwRf1H09 + > .__wab_slot + > .__wab_slot + > .__wab_text, +.Button__rootcolor_link__gpc3Kf1H09:hover + .Button__slotTargetChildrencolor_link__yzBwRf1H09 + > .__wab_slot + > .__wab_slot + > .__wab_expr_html_text, +.Button__rootcolor_link__gpc3Kf1H09:hover + .Button__slotTargetChildrencolor_link__yzBwRf1H09 + > .__wab_slot + > .__wab_slot + > .__wab_slot-string-wrapper, +.Button__rootcolor_link__gpc3Kf1H09:hover + .Button__slotTargetChildrencolor_link__yzBwRf1H09 + > .__wab_slot + > .__wab_slot + > .__wab_slot + > .__wab_text, +.Button__rootcolor_link__gpc3Kf1H09:hover + .Button__slotTargetChildrencolor_link__yzBwRf1H09 + > .__wab_slot + > .__wab_slot + > .__wab_slot + > .__wab_expr_html_text, +.Button__rootcolor_link__gpc3Kf1H09:hover + .Button__slotTargetChildrencolor_link__yzBwRf1H09 + > .__wab_slot + > .__wab_slot + > .__wab_slot + > .__wab_slot-string-wrapper { + text-decoration-line: underline; +} +.Button__rootcolor_link__gpc3Kf1H09:active + .Button__slotTargetChildrencolor_link__yzBwRf1H09 { + color: #006adc; +} +.Button__endIconContainer___3CzAx { + display: flex; + position: relative; + flex-direction: row; + align-items: stretch; + justify-content: flex-start; +} +.Button__endIconContainershowEndIcon___3CzAxYu4Va { + display: flex; +} +.Button__slotTargetEndIcon__eGy7P { + color: #ededec; +} +.Button__slotTargetEndIconcolor_yellow__eGy7PoEjPn { + color: #35290f; +} +.Button__slotTargetEndIconcolor_white__eGy7P5R3VM { + color: #35290f; +} +.Button__slotTargetEndIconcolor_softBlue__eGy7PnZeg { + color: #006adc; +} +.Button__slotTargetEndIconcolor_softGreen__eGy7PqOip { + color: #18794e; +} +.Button__slotTargetEndIconcolor_softYellow__eGy7P95U0X { + color: #946800; +} +.Button__slotTargetEndIconcolor_softRed__eGy7PEt128 { + color: #ca3214; +} +.Button__slotTargetEndIconcolor_softSand__eGy7P8XvkE { + color: #706f6c; +} +.Button__slotTargetEndIconcolor_clear__eGy7PpPAgM { + color: #1b1b18; +} +.Button__slotTargetEndIconcolor_link__eGy7Pf1H09 { + color: #0091ff; +} +.Button__rootcolor_link__gpc3Kf1H09:hover + .Button__slotTargetEndIconcolor_link__eGy7Pf1H09 { + color: #0081f1; +} +.Button__rootcolor_link__gpc3Kf1H09:active + .Button__slotTargetEndIconcolor_link__eGy7Pf1H09 { + color: #006adc; +} +.Button__svg__liJa { + position: relative; + object-fit: cover; + width: auto; + height: 1em; +} diff --git a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicButton.tsx b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicButton.tsx index 7f636cc632..d3e9e8c371 100644 --- a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicButton.tsx +++ b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicButton.tsx @@ -254,6 +254,7 @@ function PlasmicButton__RenderFunc(props: { ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, @@ -281,6 +282,7 @@ function PlasmicButton__RenderFunc(props: { className={classNames( "plasmic_default__all", "plasmic_default__button", + "plasmic_default__button__47tFX", "root_reset_47tFXWjN2C4NyHFGGpaYQ3", "plasmic_default_styles", "plasmic_mixins", @@ -425,7 +427,6 @@ function PlasmicButton__RenderFunc(props: { data-plasmic-override={overrides.startIconContainer} className={classNames( "plasmic_default__all", - "plasmic_default__div", "Button__startIconContainer__men7Z", { Button__startIconContainercolor_blue__men7Z7OS1A: hasVariant( @@ -449,7 +450,6 @@ function PlasmicButton__RenderFunc(props: { (); export type PlasmicDynamicPage__OverridesType = { root?: Flex__<"div">; section?: Flex__<"section">; - h1?: Flex__<"h1">; + h2?: Flex__<"h2">; + span?: Flex__<"span">; randomDynamicPageButton?: Flex__; }; @@ -121,6 +131,38 @@ export interface DefaultDynamicPageProps {} const $$ = {}; +export const serverQueryTree: QueryComponentNode = { + type: "component", + queries: { + sha256: { + id: "custom:krgWtF9Kkesx", + fn: async ({ $q, $props, $ctx, $state }) => { + console.log("Running SHA-256"); + const data = new TextEncoder().encode($ctx.params.slug); + const hash = await crypto.subtle.digest("SHA-256", data); + return [...new Uint8Array(hash)] + .map(b => b.toString(16).padStart(2, "0")) + .join("-"); + }, + args: ({ $q, $props, $ctx, $state }) => { + return [ + { + $ctx: { + params: $ctx["params"] + }, + $props: {}, + $q: {}, + $state: {} + } + ]; + } + } + }, + propsContext: {}, + stateSpecs: [], + children: [] +}; + function useTanStackRouter() { try { return useRouter(); @@ -157,6 +199,8 @@ function PlasmicDynamicPage__RenderFunc(props: { const refsRef = React.useRef({}); const $refs = refsRef.current; + const $q = unstable_usePlasmicQueries(serverQueryTree, $ctx, $props, null); + const styleTokensClassNames = _useStyleTokens(); return ( @@ -175,7 +219,6 @@ function PlasmicDynamicPage__RenderFunc(props: { data-plasmic-for-node={forNode} className={classNames( "plasmic_default__all", - "plasmic_default__div", "root_reset_47tFXWjN2C4NyHFGGpaYQ3", "plasmic_default_styles", "plasmic_mixins", @@ -188,36 +231,35 @@ function PlasmicDynamicPage__RenderFunc(props: { data-plasmic-override={overrides.section} className={classNames( "plasmic_default__all", - "plasmic_default__section", "DynamicPage__section__mbqxB" )} > -

+ {$ctx.params.slug} +

+ - - {(() => { - try { - return $ctx.params.slug; - } catch (e) { - if ( - e instanceof TypeError || - e?.plasmicType === "PlasmicUndefinedDataError" - ) { - return "Page 1"; - } - throw e; - } - })()} - - + {`SHA-256(${$ctx.params.slug}): ${$q.sha256.data}`} + = type NodeDefaultElementType = { root: "div"; section: "section"; - h1: "h1"; + h2: "h2"; + span: "span"; randomDynamicPageButton: typeof RandomDynamicPageButton; }; @@ -312,7 +356,8 @@ export const PlasmicDynamicPage = Object.assign( { // Helper components rendering sub-elements section: makeNodeComponent("section"), - h1: makeNodeComponent("h1"), + h2: makeNodeComponent("h2"), + span: makeNodeComponent("span"), randomDynamicPageButton: makeNodeComponent("randomDynamicPageButton"), // Metadata about props expected for PlasmicDynamicPage diff --git a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicHomepage.css b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicHomepage.css new file mode 100644 index 0000000000..4eb3c5a9a8 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicHomepage.css @@ -0,0 +1,43 @@ +.Homepage__root__qtZIr { + display: flex; + position: relative; + width: 100%; + height: 100%; + flex-direction: column; + justify-content: flex-start; + align-items: center; + min-width: 0; + min-height: 0; + padding: 0px; +} +.Homepage__section__pXQ { + display: flex; + position: relative; + flex-direction: column; + align-items: center; + justify-content: flex-start; + width: 100%; + height: auto; + max-width: 100%; + row-gap: 16px; + min-width: 0; + padding: 96px 24px; +} +.Homepage__h1__equfk { + position: relative; + max-width: 800px; + height: auto; + width: 100%; + min-width: 0; +} +.Homepage__text__aC4Gm { + position: relative; + max-width: 800px; + height: auto; + width: 100%; + min-width: 0; +} +.Homepage__randomDynamicPageButton__y0MM.__wab_instance.__wab_instance { + max-width: 100%; + position: relative; +} diff --git a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx index 54024bb656..45a67fa08f 100644 --- a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx +++ b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx @@ -59,7 +59,6 @@ import { } from "@plasmicapp/react-web/lib/host"; import RandomDynamicPageButton from "../../RandomDynamicPageButton"; // plasmic-import: Q23H1_1M_P/component -import { Fetcher } from "@plasmicapp/react-web/lib/data-sources"; import { _useGlobalVariants } from "./plasmic"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/projectModule import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: 47tFXWjN2C4NyHFGGpaYQ3/styleTokensProvider @@ -179,7 +178,6 @@ function PlasmicHomepage__RenderFunc(props: { data-plasmic-for-node={forNode} className={classNames( "plasmic_default__all", - "plasmic_default__div", "root_reset_47tFXWjN2C4NyHFGGpaYQ3", "plasmic_default_styles", "plasmic_mixins", @@ -192,7 +190,6 @@ function PlasmicHomepage__RenderFunc(props: { data-plasmic-override={overrides.section} className={classNames( "plasmic_default__all", - "plasmic_default__section", "Homepage__section__pXQ" )} > @@ -202,56 +199,27 @@ function PlasmicHomepage__RenderFunc(props: { className={classNames( "plasmic_default__all", "plasmic_default__h1", + "plasmic_default__h1__47tFX", "__wab_text", "Homepage__h1__equfk" )} > - {"create-plasmic-app"} + {hasVariant(globalVariants, "screen", "desktopOnly") + ? "create-plasmic-app" + : "cpa"}
- {hasVariant(globalVariants, "screen", "desktopOnly") ? ( - - - { - "This project is used by run-cpa.ts in the create-plasmic-app repo.\n\nrun-cpa.ts runs create-plasmic-app for many combinations of args (e.g. nextjs + appDir + loader + typescript) to check for changes in generated files. Any changes to this project will result in lots of changes to the generated files. " - } - - - {"Therefore, please avoid changing this project."} - - - ) : ( - - - { - "If you haven't already done so, go back and learn the basics by going through the Plasmic Levels tutorial.\n\nIt's always easier to start from examples! Add a new page using a template\u2014do this from the list of pages in the top left (the gray + button).\n\nOr press the big blue + button to start dragging items into this page.\n\nIntegrate this project into your codebase\u2014press the " - } - - - {"Code"} - - - { - " button in the top right and follow the quickstart instructions.\n\nJoin our Slack community (icon in bottom left) for help any time." - } - - - )} + { + "This project is used by run-cpa.ts in the create-plasmic-app repo.\n\n\nrun-cpa.ts runs create-plasmic-app for many combinations of args (e.g. nextjs + appDir + loader + typescript) to check for changes in generated files. Any changes to this project will result in lots of changes to the generated files. Therefore, please avoid changing this project.\n" + }
* { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} diff --git a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/router.tsx b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/router.tsx index dfab11bef6..e7b1c4d2aa 100644 --- a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/router.tsx +++ b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/router.tsx @@ -4,7 +4,6 @@ import { routeTree } from './routeTree.gen' export function getRouter() { const router = createTanStackRouter({ routeTree, - scrollRestoration: true, defaultPreload: 'intent', defaultPreloadStaleTime: 0, diff --git a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/routes/dynamic/$slug/index.tsx b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/routes/dynamic/$slug/index.tsx index cb40507c04..90039c5b8f 100644 --- a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/routes/dynamic/$slug/index.tsx +++ b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/routes/dynamic/$slug/index.tsx @@ -5,15 +5,35 @@ import { PageParamsProvider as PageParamsProvider__ } from "@plasmicapp/react-we import { PlasmicDynamicPage, - PlasmicDynamicPage__HeadOptions + PlasmicDynamicPage__HeadOptions, + serverQueryTree } from "../../../components/plasmic/create_plasmic_app/PlasmicDynamicPage"; import { createFileRoute } from "@tanstack/react-router"; +import { unstable_executePlasmicQueries } from "@plasmicapp/react-web/lib/data-sources"; +import { PlasmicQueryDataProvider } from "@plasmicapp/react-web/lib/query"; export const Route = createFileRoute("/dynamic/$slug/")({ head: () => ({ meta: [...PlasmicDynamicPage__HeadOptions.meta], links: [...PlasmicDynamicPage__HeadOptions.links] }), + loaderDeps: ({ search }) => ({ search }), + loader: async ({ params, location, deps }) => { + const $ctx = { + pageRoute: "/dynamic/[slug]", + pagePath: location.pathname, + params: (params ?? {}) as Record, + query: (deps.search ?? {}) as Record< + string, + string | string[] | undefined + > + }; + const { cache: prefetchedCache } = await unstable_executePlasmicQueries( + serverQueryTree, + { $props: {}, $ctx } + ); + return { prefetchedCache: prefetchedCache as Record }; + }, component: DynamicPage }); @@ -35,14 +55,17 @@ function DynamicPage() { // TanStack Router __root Route // (https://tanstack.com/router/latest/docs/framework/react/guide/tanstack-start#the-root-of-your-application). + const { prefetchedCache } = Route.useLoaderData(); return ( - - - + + + + + ); } diff --git a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/styles.css b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/styles.css new file mode 100644 index 0000000000..50dba6e823 --- /dev/null +++ b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/src/styles.css @@ -0,0 +1,17 @@ + +@import "tailwindcss"; + +* { + box-sizing: border-box; +} + +html, +body, +#app { + min-height: 100%; +} + +body { + margin: 0; +} + diff --git a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/tsconfig.json b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/tsconfig.json index 4f7d2504d5..6d718396fb 100644 --- a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/tsconfig.json +++ b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/tsconfig.json @@ -4,7 +4,6 @@ "target": "ES2022", "jsx": "react-jsx", "module": "ESNext", - "baseUrl": ".", "paths": { "#/*": ["./src/*"], "@/*": ["./src/*"] diff --git a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/vite.config.ts b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/vite.config.ts index bad350a744..fda1d66b41 100644 --- a/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/vite.config.ts +++ b/packages/create-plasmic-app/cpa-out/tanstack-codegen-ts/vite.config.ts @@ -1,6 +1,5 @@ import { defineConfig } from 'vite' import { devtools } from '@tanstack/devtools-vite' -import tsconfigPaths from 'vite-tsconfig-paths' import { tanstackRouter } from '@tanstack/router-plugin/vite' @@ -17,9 +16,9 @@ const config = defineConfig({ "@plasmicapp/react-web", ], }, + resolve: { tsconfigPaths: true }, plugins: [ devtools(), - tsconfigPaths({ projects: ['./tsconfig.json'] }), tailwindcss(), tanstackRouter({ target: 'react', autoCodeSplitting: true }), viteReact(), diff --git a/packages/create-plasmic-app/package.json b/packages/create-plasmic-app/package.json index 62d88551a5..8a9deb7c13 100644 --- a/packages/create-plasmic-app/package.json +++ b/packages/create-plasmic-app/package.json @@ -1,7 +1,13 @@ { "name": "create-plasmic-app", - "version": "0.0.141", + "version": "0.0.163", "description": "Create Plasmic-powered React apps", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "packages/create-plasmic-app" + }, "main": "./dist/lib.js", "types": "./dist/lib.d.ts", "license": "MIT", @@ -12,39 +18,39 @@ "create-plasmic-app": "./dist/index.js" }, "scripts": { - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", - "coverage": "TEST_CWD=`pwd` yarn --cwd=../.. test --coverage --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", + "coverage": "TEST_CWD=`pwd` pnpm -w test --coverage --passWithNoTests", "build": "eslint 'src/**' && tsc", - "run-cpa": "yarn build && tsx run-cpa.ts", + "run-cpa": "pnpm build && tsx run-cpa.ts", "create-plasmic-app": "tsx src/index.ts", "prepublishOnly": "npm run build" }, "devDependencies": { "@types/findup-sync": "^2.0.2", - "@types/glob": "^7.1.3", - "@types/inquirer": "^8.2.5", - "@types/jest": "^26.0.20", - "@types/lodash": "^4.14.168", - "@types/node": "^14.14.33", - "@types/semver": "^7.3.5", - "@types/update-notifier": "^5.0.0", + "@types/glob": "^7.2.0", + "@types/inquirer": "^8.2.13", + "@types/jest": "^26.0.24", + "@types/lodash": "^4.17.24", + "@types/node": "^14.18.63", + "@types/semver": "^7.7.1", + "@types/update-notifier": "^5.1.0", "@types/validate-npm-package-name": "^3.0.2", - "@types/yargs": "^16.0.0", - "tsx": "^4.20.6" + "@types/yargs": "^16.0.11", + "tsx": "^4.21.0" }, "dependencies": { - "@plasmicapp/cli": "0.1.360", + "@plasmicapp/cli": "0.1.369", "@sentry/node": "^6.2.2", "chalk": "^4.1.0", "execa": "^5.0.0", "findup-sync": "^4.0.0", "glob": "^7.1.6", - "inquirer": "^8.0.0", + "inquirer": "^8.2.7", "lodash": "^4.17.21", "semver": "^7.3.5", "upath": "^2.0.1", "update-notifier": "^5.1.0", "validate-npm-package-name": "^3.0.0", - "yargs": "^16.2.0" + "yargs": "^16.2.2" } } diff --git a/packages/create-plasmic-app/src/gatsby/gatsby.ts b/packages/create-plasmic-app/src/gatsby/gatsby.ts index cd6f6dc3ad..c12000ba3b 100644 --- a/packages/create-plasmic-app/src/gatsby/gatsby.ts +++ b/packages/create-plasmic-app/src/gatsby/gatsby.ts @@ -1,24 +1,23 @@ -import { createReadStream, existsSync, promises as fs } from "fs"; +import { existsSync, promises as fs } from "fs"; import L from "lodash"; import path from "path"; -import * as readline from "readline"; import { spawnOrFail } from "../utils/cmd-utils"; import { installCodegenDeps, runCodegenSync } from "../utils/codegen"; import { deleteGlob, generateWelcomePage, getPlasmicConfig, - ifTs, } from "../utils/file-utils"; import { ensure } from "../utils/lang-utils"; import { installUpgrade } from "../utils/npm-utils"; import { CPAStrategy } from "../utils/strategy"; import { GATSBY_404, - GATSBY_PLUGIN_CONFIG, GATSBY_SSR_CONFIG, + makeGatsbyConfig, makeGatsbyDefaultPage, makeGatsbyHostPage, + makeGatsbyNode, makeGatsbyPlasmicInit, wrapAppRootForCodegen, } from "./template"; @@ -89,33 +88,18 @@ export const gatsbyStrategy: CPAStrategy = { ); if (scheme === "loader") { - // create-gatsby will create a default gatsby-config that we need to modify const gatsbyConfigFile = path.join( projectPath, `gatsby-config.${jsOrTs}` ); - const rl = readline.createInterface({ - input: createReadStream(gatsbyConfigFile), - crlfDelay: Infinity, - }); - // Typescript doesn't accept require.resolve - // https://www.gatsbyjs.com/docs/how-to/custom-configuration/typescript/#requireresolve - let result = ifTs(jsOrTs, `import path from "path";\n`); - const pluginConfig = GATSBY_PLUGIN_CONFIG( - projectId, - ensure(projectApiToken, "Missing projectApiToken"), - jsOrTs + await fs.writeFile( + gatsbyConfigFile, + makeGatsbyConfig( + projectId, + ensure(projectApiToken, "Missing projectApiToken"), + jsOrTs + ) ); - for await (const line of rl) { - if (line.includes("plugins: []")) { - result += " plugins: [" + pluginConfig + "]\n"; - } else if (line.includes("plugins: [")) { - result += line + pluginConfig + "\n"; - } else { - result += line + "\n"; - } - } - await fs.writeFile(gatsbyConfigFile, result); } }, generateFiles: async (args) => { @@ -140,8 +124,12 @@ export const gatsbyStrategy: CPAStrategy = { }) ); - // Start with an empty gatsby-node - await fs.writeFile(path.join(projectPath, `gatsby-node.${jsOrTs}`), ""); + // gatsby-node implements onCreatePage to prefetch query data for SSG. + // For codegen scheme, leave it empty. + await fs.writeFile( + path.join(projectPath, `gatsby-node.${jsOrTs}`), + scheme === "loader" ? makeGatsbyNode(jsOrTs) : "" + ); // Updates `gatsby-ssr` to include script tag for preamble await fs.writeFile( diff --git a/packages/create-plasmic-app/src/gatsby/template.ts b/packages/create-plasmic-app/src/gatsby/template.ts index 7bfe65e519..6916cb5174 100644 --- a/packages/create-plasmic-app/src/gatsby/template.ts +++ b/packages/create-plasmic-app/src/gatsby/template.ts @@ -25,15 +25,18 @@ export const query = graphql\` ${ifTs( jsOrTs, - `interface PlasmicGatsbyPageProps extends PageProps { + `export interface PlasmicGatsbyPageProps extends PageProps { data: { plasmicOptions: InitOptions plasmicComponents: ComponentRenderData } + pageContext: { + queryCache?: Record + } } ` )} -const PlasmicGatsbyPage = ({ data, location }${ifTs( +const PlasmicGatsbyPage = ({ data, location, pageContext }${ifTs( jsOrTs, ": PlasmicGatsbyPageProps" )}) => { @@ -47,9 +50,11 @@ const PlasmicGatsbyPage = ({ data, location }${ifTs( @@ -73,29 +78,127 @@ export const GATSBY_404 = `const NotFound = () => { export default NotFound; `; -export function GATSBY_PLUGIN_CONFIG( +export function makeGatsbyConfig( projectId: string, projectApiToken: string, jsOrTs: JsOrTs ): string { - return `{ - resolve: "@plasmicapp/loader-gatsby", - options: { - projects: [ - { - id: "${projectId}", - token: "${projectApiToken}", - }, - ], // An array of project ids. - preview: false, - defaultPlasmicPage: ${ - jsOrTs === "ts" ? "path" : "require" - }.resolve("./src/templates/defaultPlasmicPage.${jsOrTs}x"), + return `${ + jsOrTs === "ts" + ? `import path from "path"; +import type { GatsbyConfig } from "gatsby";` + : `const path = require("path");` + } + +${ + jsOrTs === "ts" ? `` : `/** @type {import("gatsby").GatsbyConfig} */\n` +}const config${ifTs(jsOrTs, `: GatsbyConfig`)} = { + siteMetadata: { + siteUrl: \`https://www.yourdomain.tld\`, }, -}, -{ - resolve: "gatsby-plugin-react-helmet", + graphqlTypegen: true, + plugins: [ + { + resolve: "@plasmicapp/loader-gatsby", + options: { + projects: [ + { + id: "${projectId}", + token: "${projectApiToken}", + }, + ], // An array of project ids. + preview: false, + defaultPlasmicPage: path.resolve("./src/templates/defaultPlasmicPage.${jsOrTs}x"), + }, + }, + { + resolve: "gatsby-plugin-react-helmet", + }, + ], +}; + +${jsOrTs === "ts" ? `export default config` : `module.exports = config`}; +`; } + +export function makeGatsbyNode(jsOrTs: JsOrTs): string { + return `/** + * Implement Gatsby's Node APIs in this file. + * + * See: https://www.gatsbyjs.com/docs/node-apis/ + * + * \`onCreatePage\` runs \`extractPlasmicQueryData\` at build time so that the + * SSG'd HTML for each Plasmic page contains its actual rendered content, + * rather than the \`\` ("Loading...") of unresolved data + * queries. + */ +${ + jsOrTs === "ts" + ? `import type { CreatePageArgs } from "gatsby"; +import * as React from "react"; +import { + extractPlasmicQueryData, + PlasmicComponent, + PlasmicRootProvider, +} from "@plasmicapp/loader-gatsby"; +import type { GatsbyPluginOptions } from "@plasmicapp/loader-gatsby"; +import gatsbyConfig from "./gatsby-config"; +import { initPlasmicLoaderWithRegistrations } from "./src/plasmic-init"; +import type { PlasmicGatsbyPageProps } from "./src/templates/defaultPlasmicPage";` + : `const React = require("react"); +const { + extractPlasmicQueryData, + PlasmicComponent, + PlasmicRootProvider, +} = require("@plasmicapp/loader-gatsby"); +const gatsbyConfig = require("./gatsby-config"); +const { initPlasmicLoaderWithRegistrations } = require("./src/plasmic-init");` +} + +const plasmicLoaderOptions = gatsbyConfig.plugins.find( + (p) => p && p.resolve === "@plasmicapp/loader-gatsby" +)${ifTs(jsOrTs, `!`)}.options${ifTs(jsOrTs, ` as GatsbyPluginOptions`)}; +const PLASMIC = initPlasmicLoaderWithRegistrations(plasmicLoaderOptions); + +${ + jsOrTs === "ts" ? `export const onCreatePage =` : `exports.onCreatePage =` +} async ({ page, actions }${ifTs( + jsOrTs, + `: CreatePageArgs` + )}) => { + if (page.component !== plasmicLoaderOptions.defaultPlasmicPage) { + return; + } + if (page.context?.queryCache) { + return; + } + + const componentData = await PLASMIC.maybeFetchComponentData(page.path); + if (!componentData) { + return; + } + const meta = componentData.entryCompMetas[0]; + + const queryCache = await extractPlasmicQueryData( + React.createElement( + PlasmicRootProvider, + { + loader: PLASMIC, + prefetchedData: componentData, + pageRoute: meta.path, + pageParams: meta.params, + pageQuery: {}, + }, + React.createElement(PlasmicComponent, { component: meta.displayName }) + ) + ); + + actions.deletePage(page); + actions.createPage({ + ...page, + context: { ...page.context, queryCache }, + }); +}; `; } @@ -202,17 +305,21 @@ exports.onRenderBody = ({ pathname, setHeadComponents }) => { `; export function makeGatsbyPlasmicInit(jsOrTs: JsOrTs): string { - return `import { - initPlasmicLoader,${ifTs( - jsOrTs, - ` - InitOptions,` - )} -} from "@plasmicapp/loader-gatsby"; + return `${ + jsOrTs === "ts" + ? `import { + initPlasmicLoader, + InitOptions, +} from "@plasmicapp/loader-gatsby";` + : `const { initPlasmicLoader } = require("@plasmicapp/loader-gatsby");` + } -export function initPlasmicLoaderWithRegistrations(plasmicOptions${ifTs( +${ifTs( + jsOrTs, + `export ` +)}function initPlasmicLoaderWithRegistrations(plasmicOptions${ifTs( jsOrTs, - ": InitOptions" + `: InitOptions` )}) { const PLASMIC = initPlasmicLoader(plasmicOptions); @@ -227,7 +334,11 @@ export function initPlasmicLoaderWithRegistrations(plasmicOptions${ifTs( return PLASMIC; } -`; +${ + jsOrTs === "ts" + ? `` + : `\nmodule.exports = { initPlasmicLoaderWithRegistrations };\n` +}`; } export function wrapAppRootForCodegen(): string { diff --git a/packages/create-plasmic-app/src/index.ts b/packages/create-plasmic-app/src/index.ts index b95005b894..8dd1bd7314 100644 --- a/packages/create-plasmic-app/src/index.ts +++ b/packages/create-plasmic-app/src/index.ts @@ -61,7 +61,7 @@ const argv = yargs boolean: true, }) .option("appDir", { - describe: "(Next.js) Use app directory (experimental)?", + describe: "(Next.js) Use app directory?", boolean: true, }) .strict() @@ -212,8 +212,7 @@ async function run(): Promise { const platformOptions: PlatformOptions = {}; if (platform === "nextjs") { - // TODO: re-enable when app dir is released - const showAppDirQuestion = false; + const showAppDirQuestion = true; if (showAppDirQuestion) { platformOptions.nextjs = { appDir: await maybePrompt({ diff --git a/packages/create-plasmic-app/src/nextjs/nextjs.ts b/packages/create-plasmic-app/src/nextjs/nextjs.ts index 51e14de292..42ea5082cc 100644 --- a/packages/create-plasmic-app/src/nextjs/nextjs.ts +++ b/packages/create-plasmic-app/src/nextjs/nextjs.ts @@ -1,4 +1,5 @@ -import { promises as fs } from "fs"; +import { PlasmicConfig } from "@plasmicapp/cli/dist/utils/config-utils"; +import { existsSync, promises as fs } from "fs"; import L from "lodash"; import path from "path"; import { spawnOrFail } from "../utils/cmd-utils"; @@ -11,7 +12,10 @@ import { import { ensure } from "../utils/lang-utils"; import { installUpgrade } from "../utils/npm-utils"; import { CPAStrategy, GenerateFilesArgs } from "../utils/strategy"; +import { PlasmicCssImport } from "../utils/types"; import { makeLayout_app_codegen } from "./templates/app-codegen/layout"; +import { makePlasmicHostPage_app_codegen } from "./templates/app-codegen/plasmic-host"; +import { makePlasmicInitClient_app_codegen } from "./templates/app-codegen/plasmic-init-client"; import { makeCatchallPage_app_loader } from "./templates/app-loader/catchall-page"; import { makePlasmicHostPage_app_loader } from "./templates/app-loader/plasmic-host"; import { makePlasmicInit_app_loader } from "./templates/app-loader/plasmic-init"; @@ -29,10 +33,10 @@ export const nextjsStrategy: CPAStrategy = { const experimentalAppArg = platformOptions.nextjs?.appDir ? "--app" : "--no-app"; - const templateArg = template ? ` --template ${template}` : ""; - // TODO: Change to latest when nextjs stops using react@19-rc + const templateArg = template ? ` --example ${template}` : ""; + // NOTE: Not using create-next-app@latest to keep major version bumps deliberate const createCommand = - `npx create-next-app@14 ${projectPath} ${typescriptArg} ${experimentalAppArg} ${templateArg}` + + `npx create-next-app@16 ${projectPath} ${typescriptArg} ${experimentalAppArg} ${templateArg}` + ` --eslint --no-src-dir --import-alias "@/*" --no-tailwind`; // Default Next.js starter already supports Typescript @@ -49,17 +53,32 @@ export const nextjsStrategy: CPAStrategy = { } }, overwriteConfig: async (args) => { - const { projectPath, scheme } = args; - const nextjsConfigFile = path.join(projectPath, "next.config.mjs"); + const { projectPath, scheme, jsOrTs } = args; + + // create-next-app's globals.css forces a dark background with `prefers-color-scheme: dark`. + // It's imported by the /plasmic-host layout/_app and paints the Studio canvas black. + const globalsCssCandidates = [ + path.join(projectPath, "app", "globals.css"), + path.join(projectPath, "src", "app", "globals.css"), + path.join(projectPath, "styles", "globals.css"), + path.join(projectPath, "src", "styles", "globals.css"), + ]; + for (const globalsCssPath of globalsCssCandidates) { + if (existsSync(globalsCssPath)) { + await fs.writeFile(globalsCssPath, makeNeutralGlobalsCss()); + } + } + if (scheme === "codegen") { + const isTs = jsOrTs === "ts"; + const typePragma = isTs + ? `import type { NextConfig } from "next";\n\n` + : `/** @type {import('next').NextConfig} */\n`; + const typeAnnotation = isTs ? ": NextConfig" : ""; + await fs.writeFile( - nextjsConfigFile, - ` -/** @type {import('next').NextConfig} */ -const nextConfig = { - eslint: { - ignoreDuringBuilds: true, - }, + path.join(projectPath, `next.config.${isTs ? "ts" : "mjs"}`), + `${typePragma}const nextConfig${typeAnnotation} = { trailingSlash: true, reactStrictMode: true, }; @@ -81,6 +100,24 @@ export default nextConfig;` }, }; +/** + * Canvas-safe globals.css: no body background/color or dark `color-scheme`, + * since it's loaded by /plasmic-host (for Studio canvas). + */ +function makeNeutralGlobalsCss(): string { + return `* { + box-sizing: border-box; + padding: 0; + margin: 0; +} + +a { + color: inherit; + text-decoration: none; +} +`; +} + async function generateFilesAppDir(args: GenerateFilesArgs) { const { projectPath, scheme, jsOrTs, projectId, projectApiToken } = args; @@ -117,17 +154,17 @@ async function generateFilesAppDir(args: GenerateFilesArgs) { makeCatchallPage_app_loader(jsOrTs) ); } else { - // ./app/layout.tsx + // ./plasmic-init-client.tsx await fs.writeFile( - path.join(projectPath, "app", `layout.${jsOrTs}x`), - makeLayout_app_codegen(jsOrTs) + path.join(projectPath, `plasmic-init-client.${jsOrTs}x`), + makePlasmicInitClient_app_codegen(jsOrTs) ); // ./app/plasmic-host/page.tsx await fs.mkdir(path.join(projectPath, "app", "plasmic-host")); await fs.writeFile( path.join(projectPath, "app", "plasmic-host", `page.${jsOrTs}x`), - makePlasmicHostPage_pages_codegen() // plasmic-host page contents are the same as the pages router + makePlasmicHostPage_app_codegen() ); // This should generate @@ -140,8 +177,26 @@ async function generateFilesAppDir(args: GenerateFilesArgs) { projectPath, }); - // Make an index (/) page if the project didn't have one. + // Read plasmic.json so we can wire each top-level project's plasmic.css + // import directly into the root layout template. const config = await getPlasmicConfig(projectPath, "nextjs", scheme); + const layoutAbsPath = path.join(projectPath, "app", `layout.${jsOrTs}x`); + const cssImports = getPlasmicCssImports({ + projectPath, + rootFileAbsPath: layoutAbsPath, + config, + }); + + // Replace starter layout. Removes app/layout.js in JS projects before writing layout.jsx. + deleteGlob(path.join(projectPath, "app", "layout.*")); + + // ./app/layout.tsx + await fs.writeFile( + path.join(projectPath, "app", `layout.${jsOrTs}x`), + makeLayout_app_codegen(jsOrTs, cssImports) + ); + + // Make an index (/) page if the project didn't have one. const plasmicFiles = L.map( L.flatMap(config.projects, (p) => p.components), (c) => c.importSpec.modulePath @@ -183,12 +238,6 @@ async function generateFilesPagesDir(args: GenerateFilesArgs) { makeCatchallPage_pages_loader(jsOrTs) ); } else { - // ./pages/_app.tsx - await fs.writeFile( - path.join(projectPath, "pages", `_app.${jsOrTs}x`), - makeCustomApp_pages_codegen(jsOrTs) - ); - // ./pages/plasmic-host.tsx await fs.writeFile( path.join(projectPath, "pages", `plasmic-host.${jsOrTs}x`), @@ -205,8 +254,23 @@ async function generateFilesPagesDir(args: GenerateFilesArgs) { projectPath, }); - // Make an index page if the project didn't have one. + // Read plasmic.json so we can wire each top-level project's plasmic.css + // import directly into the _app template. const config = await getPlasmicConfig(projectPath, "nextjs", scheme); + const appAbsPath = path.join(projectPath, "pages", `_app.${jsOrTs}x`); + const cssImports = getPlasmicCssImports({ + projectPath, + rootFileAbsPath: appAbsPath, + config, + }); + + // ./pages/_app.tsx + await fs.writeFile( + appAbsPath, + makeCustomApp_pages_codegen(jsOrTs, cssImports) + ); + + // Make an index page if the project didn't have one. const plasmicFiles = L.map( L.flatMap(config.projects, (p) => p.components), (c) => c.importSpec.modulePath @@ -219,3 +283,42 @@ async function generateFilesPagesDir(args: GenerateFilesArgs) { } } } + +/** + * Builds the list of `plasmic.css` imports the Next.js root file (Pages Router + * `_app.{ext}`, App Router `app/layout.{ext}`) needs for every top-level + * project in `plasmic.json`. Next.js disallows global non-module CSS imports + * outside of those files. + * + * The marker comment in the emitted import (plasmic-import: /projectcss) + * matches the convention used by @plasmicapp/cli sync, so subsequent syncs + * can update paths in-place without producing duplicates. + * + * @param rootFileAbsPath Absolute path to the Next.js root file (`_app.{ext}` + * for Pages Router, `app/layout.{ext}` for App Router). + */ +function getPlasmicCssImports(args: { + projectPath: string; + rootFileAbsPath: string; + config: PlasmicConfig; +}): PlasmicCssImport[] { + const { projectPath, rootFileAbsPath, config } = args; + return (config.projects || []) + .filter((p) => !p.indirect && !!p.cssFilePath) + .map((p) => { + const absoluteCssPath = path.join( + projectPath, + config.srcDir, + p.cssFilePath + ); + let relPath = path.relative( + path.dirname(rootFileAbsPath), + absoluteCssPath + ); + if (!relPath.startsWith(".")) { + relPath = `./${relPath}`; + } + + return { projectId: p.projectId, importPath: relPath }; + }); +} diff --git a/packages/create-plasmic-app/src/nextjs/templates/app-codegen/layout.ts b/packages/create-plasmic-app/src/nextjs/templates/app-codegen/layout.ts index c4626e8e6f..12b9615407 100644 --- a/packages/create-plasmic-app/src/nextjs/templates/app-codegen/layout.ts +++ b/packages/create-plasmic-app/src/nextjs/templates/app-codegen/layout.ts @@ -1,10 +1,22 @@ import { ifTs } from "../../../utils/file-utils"; -import { JsOrTs } from "../../../utils/types"; +import { JsOrTs, PlasmicCssImport } from "../../../utils/types"; -export function makeLayout_app_codegen(jsOrTs: JsOrTs): string { - return `import '@/app/globals.css' -import { PlasmicRootProvider } from "@plasmicapp/react-web"; -import Link from "next/link"; +export function makeLayout_app_codegen( + jsOrTs: JsOrTs, + cssImports: PlasmicCssImport[] = [] +): string { + const plasmicCssImportLines = cssImports + .map( + (i) => + `import "${i.importPath}"; // plasmic-import: ${i.projectId}/projectcss` + ) + .join("\n"); + const plasmicCssImportsBlock = plasmicCssImportLines + ? `${plasmicCssImportLines}\n` + : ""; + + return `${plasmicCssImportsBlock}import '@/app/globals.css' +import { ClientPlasmicRootProvider } from "@/plasmic-init-client"; export default function RootLayout({ children, @@ -17,9 +29,9 @@ export default function RootLayout({ return ( - + {children} - + ); diff --git a/packages/create-plasmic-app/src/nextjs/templates/app-codegen/plasmic-host.ts b/packages/create-plasmic-app/src/nextjs/templates/app-codegen/plasmic-host.ts new file mode 100644 index 0000000000..3468967d14 --- /dev/null +++ b/packages/create-plasmic-app/src/nextjs/templates/app-codegen/plasmic-host.ts @@ -0,0 +1,7 @@ +import { makePlasmicHostPage_pages_codegen } from "../pages-codegen/plasmic-host"; + +export function makePlasmicHostPage_app_codegen(): string { + return `"use client"; + +${makePlasmicHostPage_pages_codegen()}`; +} diff --git a/packages/create-plasmic-app/src/nextjs/templates/app-codegen/plasmic-init-client.ts b/packages/create-plasmic-app/src/nextjs/templates/app-codegen/plasmic-init-client.ts new file mode 100644 index 0000000000..bceeff1db0 --- /dev/null +++ b/packages/create-plasmic-app/src/nextjs/templates/app-codegen/plasmic-init-client.ts @@ -0,0 +1,28 @@ +import { ifTs } from "../../../utils/file-utils"; +import { JsOrTs } from "../../../utils/types"; + +export function makePlasmicInitClient_app_codegen(jsOrTs: JsOrTs): string { + return `"use client"; + +${ifTs( + jsOrTs, + 'import type * as React from "react";\n' +)}import { PlasmicRootProvider } from "@plasmicapp/react-web"; +import Link from "next/link"; + +/** + * ClientPlasmicRootProvider is a Client Component that passes Next's Link to PlasmicRootProvider. + * + * Props passed from a Server Component to a Client Component must be serializable. + * https://nextjs.org/docs/app/getting-started/server-and-client-components#passing-data-from-server-to-client-components + */ +export function ClientPlasmicRootProvider( + props${ifTs( + jsOrTs, + ': Omit, "Link">' + )} +) { + return ; +} +`; +} diff --git a/packages/create-plasmic-app/src/nextjs/templates/app-loader/catchall-page.ts b/packages/create-plasmic-app/src/nextjs/templates/app-loader/catchall-page.ts index c178c39099..868d470ea2 100644 --- a/packages/create-plasmic-app/src/nextjs/templates/app-loader/catchall-page.ts +++ b/packages/create-plasmic-app/src/nextjs/templates/app-loader/catchall-page.ts @@ -51,7 +51,7 @@ export async function generateMetadata( return parent${ifTs(jsOrTs, ` as Promise`)}; } const pageMeta = componentData.entryCompMetas[0]; - const metadata = await PLASMIC.unstable__generateMetadata(componentData, { + const metadata = await PLASMIC.getPlasmicMetadata(componentData, { params: pageMeta.params ?? {}, query: {}, }); @@ -68,7 +68,7 @@ export default async function PlasmicLoaderPage({ notFound(); } const pageMeta = componentData.entryCompMetas[0]; - const prefetchedQueryData = await PLASMIC.unstable__getServerQueriesData( + const prefetchedQueryData = await PLASMIC.getPlasmicQueriesData( componentData, { pagePath, @@ -83,6 +83,7 @@ export default async function PlasmicLoaderPage({ prefetchedQueryData={prefetchedQueryData} pageParams={pageMeta.params} pageRoute={pageMeta.path} + trackQueryParams > diff --git a/packages/create-plasmic-app/src/nextjs/templates/app-loader/plasmic-init-client.ts b/packages/create-plasmic-app/src/nextjs/templates/app-loader/plasmic-init-client.ts index 4473ef14ed..098a2bec05 100644 --- a/packages/create-plasmic-app/src/nextjs/templates/app-loader/plasmic-init-client.ts +++ b/packages/create-plasmic-app/src/nextjs/templates/app-loader/plasmic-init-client.ts @@ -17,48 +17,10 @@ import { PLASMIC } from "@/plasmic-init"; // PLASMIC.registerComponent(...); /** - * ClientPlasmicRootProvider is a Client Component that passes in the loader for you. + * ClientPlasmicRootProvider is a Client Component that passes the loader to PlasmicRootProvider. * - * Why? Props passed from Server to Client Components must be serializable. + * Props passed from a Server Component to a Client Component must be serializable. * https://nextjs.org/docs/app/getting-started/server-and-client-components#passing-data-from-server-to-client-components - * However, PlasmicRootProvider requires a loader, but the loader is NOT serializable. - * - * In a Server Component like app//path.tsx, rendering the following would not work: - * - * \`\`\`tsx - * import { PLASMIC } from "@/plasmic-init"; - * import { PlasmicRootProvider } from "plasmicapp/loader-nextjs"; - * export default function MyPage() { - * const prefetchedData = await PLASMIC.fetchComponentData("YourPage"); - * return ( - * - * {yourContent()} - * ; - * ); - * } - * \`\`\` - * - * Therefore, we define ClientPlasmicRootProvider as a Client Component (this file is marked "use client"). - * ClientPlasmicRootProvider wraps the PlasmicRootProvider and passes in the loader for you, - * while allowing your Server Component to pass in prefetched data and other serializable props: - * - * \`\`\`tsx - * import { PLASMIC } from "@/plasmic-init"; - * import { ClientPlasmicRootProvider } from "@/plasmic-init-client"; // changed - * export default function MyPage() { - * const prefetchedData = await PLASMIC.fetchComponentData("YourPage"); - * return ( - * - * {yourContent()} - * ; - * ); - * } - * \`\`\` */ export function ClientPlasmicRootProvider( props${ifTs( diff --git a/packages/create-plasmic-app/src/nextjs/templates/app-loader/plasmic-init.ts b/packages/create-plasmic-app/src/nextjs/templates/app-loader/plasmic-init.ts index 1d879ceda1..24b1b4146a 100644 --- a/packages/create-plasmic-app/src/nextjs/templates/app-loader/plasmic-init.ts +++ b/packages/create-plasmic-app/src/nextjs/templates/app-loader/plasmic-init.ts @@ -27,11 +27,6 @@ export const PLASMIC = initPlasmicLoader({ // Register custom functions here so they are available during SSR. // See https://docs.plasmic.app/learn/registering-custom-functions/ // -// IMPORTANT for app-router projects: any custom function used by a server -// query must be registered here, which runs on the server. Registrations in -// plasmic-init-client.tsx are only available in the browser and will cause -// a runtime error if referenced by a server query during SSR. -// // PLASMIC.registerFunction(...); `; } diff --git a/packages/create-plasmic-app/src/nextjs/templates/pages-codegen/app.ts b/packages/create-plasmic-app/src/nextjs/templates/pages-codegen/app.ts index e236edea9f..9d52a635be 100644 --- a/packages/create-plasmic-app/src/nextjs/templates/pages-codegen/app.ts +++ b/packages/create-plasmic-app/src/nextjs/templates/pages-codegen/app.ts @@ -1,8 +1,21 @@ import { ifTs } from "../../../utils/file-utils"; -import { JsOrTs } from "../../../utils/types"; +import { JsOrTs, PlasmicCssImport } from "../../../utils/types"; -export function makeCustomApp_pages_codegen(jsOrTs: JsOrTs): string { - return `import '@/styles/globals.css' +export function makeCustomApp_pages_codegen( + jsOrTs: JsOrTs, + cssImports: PlasmicCssImport[] = [] +): string { + const plasmicCssImportLines = cssImports + .map( + (i) => + `import "${i.importPath}"; // plasmic-import: ${i.projectId}/projectcss` + ) + .join("\n"); + const plasmicCssImportsBlock = plasmicCssImportLines + ? `${plasmicCssImportLines}\n` + : ""; + + return `${plasmicCssImportsBlock}import '@/styles/globals.css' import { PlasmicRootProvider } from "@plasmicapp/react-web";${ifTs( jsOrTs, ` diff --git a/packages/create-plasmic-app/src/nextjs/templates/pages-loader/catchall-page.ts b/packages/create-plasmic-app/src/nextjs/templates/pages-loader/catchall-page.ts index 47f58e7e9c..1dd446c872 100644 --- a/packages/create-plasmic-app/src/nextjs/templates/pages-loader/catchall-page.ts +++ b/packages/create-plasmic-app/src/nextjs/templates/pages-loader/catchall-page.ts @@ -35,6 +35,7 @@ export default function PlasmicLoaderPage(props${ifTs( pageRoute={pageMeta.path} pageParams={pageMeta.params} pageQuery={router.query} + trackQueryParams > diff --git a/packages/create-plasmic-app/src/tanstack/tanstack.ts b/packages/create-plasmic-app/src/tanstack/tanstack.ts index 026d3bfa9f..802d4ff702 100644 --- a/packages/create-plasmic-app/src/tanstack/tanstack.ts +++ b/packages/create-plasmic-app/src/tanstack/tanstack.ts @@ -10,7 +10,12 @@ import { makeCustomRoot_file_router_codegen } from "./templates/file-router/root export const tanstackStrategy: CPAStrategy = { create: async (args) => { - const { projectPath } = args; + const { projectPath, template } = args; + if (template) { + console.warn( + `Warning: Ignoring template '${template}' (argument is not supported by TanStack).` + ); + } /* create-tsrouter-app package receives the projectName as an argument, when we provide a fullProjectPath, it creates package.json with name having the fullProjectPath causing illegal characters in the name field error. @@ -29,7 +34,17 @@ export const tanstackStrategy: CPAStrategy = { const parentDir = path.dirname(fullProjectPath); process.chdir(parentDir); - const createCommand = `npx create-tsrouter-app@latest ${projectName} --template file-router --add-ons start`; + const createCommand = [ + `npx create-tsrouter-app@latest ${projectName}`, + "--framework React", + "--router-only", + "--no-toolchain", + "--package-manager yarn", + "--git", + "--no-intent", + "--no-examples", + "--yes", + ].join(" "); await spawnOrFail(createCommand); diff --git a/packages/create-plasmic-app/src/utils/types.ts b/packages/create-plasmic-app/src/utils/types.ts index 90143836b6..f431625d63 100644 --- a/packages/create-plasmic-app/src/utils/types.ts +++ b/packages/create-plasmic-app/src/utils/types.ts @@ -7,6 +7,11 @@ export type PlatformOptions = { }; export type SchemeType = "codegen" | "loader"; +export type PlasmicCssImport = { + projectId: string; + importPath: string; +}; + export function platformTypeToString(s: PlatformType): string { return s === "nextjs" ? "Next.js" diff --git a/packages/data-sources-context/package.json b/packages/data-sources-context/package.json index a0e7eeb997..c671e13ff4 100644 --- a/packages/data-sources-context/package.json +++ b/packages/data-sources-context/package.json @@ -1,5 +1,12 @@ { - "version": "0.1.23", + "version": "0.1.25", + "description": "React context that supplies the current user and auth token to Plasmic data source queries.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "packages/data-sources-context" + }, "license": "MIT", "types": "./dist/index.d.ts", "main": "./dist/index.js", @@ -18,10 +25,10 @@ "node": ">=10" }, "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.tsx --use-client", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "eslint", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh", diff --git a/packages/data-sources/api/index.api.md b/packages/data-sources/api/index.api.md index cd3c8c4428..a701ed8dbb 100644 --- a/packages/data-sources/api/index.api.md +++ b/packages/data-sources/api/index.api.md @@ -56,6 +56,15 @@ export function deriveFieldConfigs(specifiedFieldsPar // @public @deprecated (undocumented) export function executePlasmicDataOp(op: DataOp, opts?: ExecuteOpts): Promise; +// @public +export function executePlasmicQueries(rootNode: QueryComponentNode, env: InitialQueryExecutionContext): Promise; + +// @public @deprecated (undocumented) +export function executeServerQuery any>(_query?: any): Promise<{ + data: ReturnType; + isLoading: boolean; +}>; + // @public @deprecated (undocumented) export function Fetcher(props: FetcherProps): React_2.ReactElement | null; @@ -72,6 +81,9 @@ export interface FetcherProps extends DataOpConfig { queries?: Record; } +// @public (undocumented) +export function isPlasmicUndefinedDataErrorPromise(x: any): x is PlasmicUndefinedDataErrorPromise; + // @public @deprecated (undocumented) export function makeCacheKey(dataOp: DataOp, opts?: { paginate?: Pagination; @@ -93,6 +105,9 @@ export interface ManyRowsResult { total?: number; } +// @public +export function matchesQueryCacheKey(cacheKey: string, invalidationKey: string): boolean; + // @public @deprecated (undocumented) export function normalizeData(rawData: unknown): NormalizedData | undefined; @@ -113,9 +128,9 @@ export interface Pagination { } // @internal (undocumented) -export interface PlasmicQuery Promise = (...args: unknown[]) => Promise> { +export interface PlasmicQuery Promise = (...args: any[]) => Promise> { // (undocumented) - execParams: () => Parameters; + args: ContextFn>; // (undocumented) fn: F; // (undocumented) @@ -130,6 +145,14 @@ export interface PlasmicQueryResult { key: string | null; } +// @public (undocumented) +export interface PlasmicUndefinedDataErrorPromise extends Promise { + // (undocumented) + message: string; + // (undocumented) + plasmicType: "PlasmicUndefinedDataError"; +} + // @internal (undocumented) export interface QueryComponentNode { // (undocumented) @@ -137,17 +160,35 @@ export interface QueryComponentNode { // (undocumented) propsContext: Record>; // (undocumented) - queries: Record; + queries: Record; + stateSpecs: $StateSpec[]; // (undocumented) type: "component"; } +// @internal +export type QueryExecutionContext = { + $ctx: Record; + $props: Record; + $state: Record; + $q: Record; +}; + // @public @deprecated (undocumented) export type QueryResult = Partial> & { error?: any; isLoading?: boolean; }; +// @public +export function _safeExecResult(tryData: () => T): { + data: T; +} | { + promise: PlasmicUndefinedDataErrorPromise; +} | { + error: unknown; +}; + // @public @deprecated (undocumented) export interface SingleRowResult { // (undocumented) @@ -182,9 +223,12 @@ export class _StatefulQueryResult implements PlasmicQueryResult removeListener(listener: _StateListener): void; // (undocumented) reset(): void; + // (undocumented) resolvePromise(key: string, data: T): void; // (undocumented) settable: SettablePromise; + // (undocumented) + toJSON(): _StatefulQueryState; } // @internal (undocumented) @@ -238,14 +282,8 @@ export interface TableSchema { schema?: string; } -// @public -export function unstable_executePlasmicQueries(rootNode: QueryComponentNode, options: QueryExecutionInitialContext): Promise; - -// @internal -export function unstable_usePlasmicQueries(tree: QueryComponentNode, $props: Record, $ctx: Record, $state?: Record): Record; - -// @internal -export function unstable_wrapDollarQueriesForMetadata>($queries: T, ifUndefined?: (promise: PlasmicUndefinedDataErrorPromise) => unknown, ifError?: (err: unknown) => unknown): T; +// @public (undocumented) +export function throwIfPlasmicUndefinedDataError(err: unknown): void; // @public @deprecated (undocumented) export function useNormalizedData(rawData: unknown): NormalizedData | undefined; @@ -261,9 +299,15 @@ export function usePlasmicDataOp; -// @public @deprecated (undocumented) +// @public export function usePlasmicInvalidate(): (invalidatedKeys: string[] | null | undefined) => Promise; +// @internal +export function usePlasmicQueries(tree: QueryComponentNode, env: ClientQueryExecutionContext): Record; + +// @internal +export function wrapPlasmicQueriesForMetadata>(queries: T, ifUndefined?: (promise: PlasmicUndefinedDataErrorPromise) => unknown, ifError?: (err: unknown) => unknown): T; + // (No @packageDocumentation comment for this package) ``` diff --git a/packages/data-sources/package.json b/packages/data-sources/package.json index 1277726e16..55b4b680ce 100644 --- a/packages/data-sources/package.json +++ b/packages/data-sources/package.json @@ -1,5 +1,12 @@ { - "version": "1.0.2", + "version": "1.0.23", + "description": "Runtime for executing Plasmic data source queries and mutations in your React app.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "packages/data-sources" + }, "name": "@plasmicapp/data-sources", "license": "MIT", "types": "./dist/index.d.ts", @@ -16,13 +23,13 @@ "dist" ], "engines": { - "node": ">=10" + "node": ">=18" }, "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.tsx", - "test": "vitest --silent=passed-only", + "test": "vitest run --silent=passed-only", "lint": "eslint", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh", @@ -38,13 +45,13 @@ "devDependencies": { "@types/react": "^18", "react": "^18.3.1", - "vitest": "3.2.4" + "vite": "8.1.5", + "vitest": "4.1.10" }, "dependencies": { - "@plasmicapp/data-sources-context": "0.1.23", - "@plasmicapp/host": "2.0.1", - "@plasmicapp/isomorphic-unfetch": "1.0.3", - "@plasmicapp/query": "0.1.84", + "@plasmicapp/data-sources-context": "0.1.25", + "@plasmicapp/host": "2.0.14", + "@plasmicapp/query": "0.1.87", "fast-stringify": "^2.0.0" }, "peerDependencies": { diff --git a/packages/data-sources/src/common.test.ts b/packages/data-sources/src/common.test.ts new file mode 100644 index 0000000000..3a2c4d2791 --- /dev/null +++ b/packages/data-sources/src/common.test.ts @@ -0,0 +1,26 @@ +import { describe, expect, it } from "vitest"; +import { + tagPlasmicUndefinedDataErrorPromise, + throwIfPlasmicUndefinedDataError, +} from "./common"; + +describe("throwIfPlasmicUndefinedDataError", () => { + it("rethrows PlasmicUndefinedDataError promises", () => { + const promise = Promise.resolve(); + tagPlasmicUndefinedDataErrorPromise(promise); + + let thrown: unknown; + try { + throwIfPlasmicUndefinedDataError(promise); + } catch (err) { + thrown = err; + } + expect(thrown).toBe(promise); + }); + + it("ignores normal errors", () => { + expect(() => + throwIfPlasmicUndefinedDataError(new Error("normal error")) + ).not.toThrow(); + }); +}); diff --git a/packages/data-sources/src/common.ts b/packages/data-sources/src/common.ts index a4356fc51f..9072491421 100644 --- a/packages/data-sources/src/common.ts +++ b/packages/data-sources/src/common.ts @@ -22,6 +22,12 @@ export function isPlasmicUndefinedDataErrorPromise( ); } +export function throwIfPlasmicUndefinedDataError(err: unknown): void { + if (isPlasmicUndefinedDataErrorPromise(err)) { + throw err; + } +} + export function tagPlasmicUndefinedDataErrorPromise( promise: Promise ): void { diff --git a/packages/data-sources/src/executor.tsx b/packages/data-sources/src/executor.tsx index 4b745f22d3..588b3eaa12 100644 --- a/packages/data-sources/src/executor.tsx +++ b/packages/data-sources/src/executor.tsx @@ -1,5 +1,4 @@ import { PlasmicDataSourceContextValue } from "@plasmicapp/data-sources-context"; -import fetch from "@plasmicapp/isomorphic-unfetch"; import { wrapLoadingFetcher } from "@plasmicapp/query"; import stringify from "fast-stringify"; import { addPlaceholdersToUserArgs } from "./placeholders"; diff --git a/packages/data-sources/src/hooks/usePlasmicDataOp.tsx b/packages/data-sources/src/hooks/usePlasmicDataOp.tsx index cbb54fc2a5..7cb0e1d3df 100644 --- a/packages/data-sources/src/hooks/usePlasmicDataOp.tsx +++ b/packages/data-sources/src/hooks/usePlasmicDataOp.tsx @@ -6,6 +6,7 @@ import { import * as React from "react"; import { isPlasmicUndefinedDataErrorPromise, usePlasmicFetch } from "../common"; import { executePlasmicDataOp } from "../executor"; +import { matchesQueryCacheKey } from "../serverQueries/makeQueryCacheKey"; import { ClientQueryResult, DataOp, @@ -32,7 +33,10 @@ export function makeCacheKey( : queryDependencies; } -/** @deprecated See https://docs.plasmic.app/learn/integrations */ +/** + * Returns a function that invalidates cached query data. Accepts a list of invalidation keys + * or `plasmic_refresh_all` to invalidate everything. + */ export function usePlasmicInvalidate() { // NOTE: we use `revalidateIfStale: false` with SWR. // One quirk of this is that if you supply fallback data to swr, @@ -71,7 +75,7 @@ export function usePlasmicInvalidate() { return allKeys; } return allKeys.filter((key) => - invalidatedKeys.some((k) => key.includes(`.$.${k}.$.`)) + invalidatedKeys.some((k) => matchesQueryCacheKey(key, k)) ); }; diff --git a/packages/data-sources/src/index.tsx b/packages/data-sources/src/index.tsx index 7e8e816dde..86fbaf7fc4 100644 --- a/packages/data-sources/src/index.tsx +++ b/packages/data-sources/src/index.tsx @@ -1,16 +1,27 @@ -export { usePlasmicQueries as unstable_usePlasmicQueries } from "./serverQueries/client"; +export { + isPlasmicUndefinedDataErrorPromise, + throwIfPlasmicUndefinedDataError, +} from "./common"; +export type { PlasmicUndefinedDataErrorPromise } from "./common"; +export { usePlasmicInvalidate } from "./hooks/usePlasmicDataOp"; +export { usePlasmicQueries } from "./serverQueries/client"; export { StatefulQueryResult as _StatefulQueryResult, - wrapDollarQueriesForMetadata as unstable_wrapDollarQueriesForMetadata, + safeExecResult as _safeExecResult, + wrapPlasmicQueriesForMetadata, type StateListener as _StateListener, type StatefulQueryState as _StatefulQueryState, } from "./serverQueries/common"; -export { makeQueryCacheKey } from "./serverQueries/makeQueryCacheKey"; -export { executePlasmicQueries as unstable_executePlasmicQueries } from "./serverQueries/server"; +export { + makeQueryCacheKey, + matchesQueryCacheKey, +} from "./serverQueries/makeQueryCacheKey"; +export { executePlasmicQueries } from "./serverQueries/server"; export type { PlasmicQuery, PlasmicQueryResult, QueryComponentNode, + QueryExecutionContext, } from "./serverQueries/types"; // exports below are deprecated and will be removed in major version bump @@ -29,8 +40,8 @@ export { makeCacheKey, usePlasmicDataMutationOp, usePlasmicDataOp, - usePlasmicInvalidate, } from "./hooks/usePlasmicDataOp"; +export { executeServerQuery } from "./serverQueries/server"; export type { ClientQueryResult, DataOp, diff --git a/packages/data-sources/src/serverQueries/client.test.tsx b/packages/data-sources/src/serverQueries/client.test.tsx index baf3dbca6f..50e9df35c5 100644 --- a/packages/data-sources/src/serverQueries/client.test.tsx +++ b/packages/data-sources/src/serverQueries/client.test.tsx @@ -7,11 +7,13 @@ import { act, getByText, render, renderHook } from "@testing-library/react"; import * as React from "react"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { _testonly, usePlasmicQueries } from "./client"; +import { StatefulQueryResult } from "./common"; import { makeQueryCacheKey } from "./makeQueryCacheKey"; import { asyncFunc, asyncFuncCalls, expectQueryLoading, + expectQueryRejected, expectQueryResolved, findAsyncFuncCall, } from "./testonly/test-common"; @@ -67,7 +69,12 @@ describe("usePlasmicQueries", () => { it("resolves with global shared cache", async () => { const renderHookResult = renderHook( - () => usePlasmicQueries(defaultTree, {}, {}), + () => + usePlasmicQueries(defaultTree, { + $ctx: {}, + $props: {}, + $state: null, + }), { // can only have 1 test like this since it uses global shared cache wrapper: undefined, @@ -87,7 +94,12 @@ describe("usePlasmicQueries", () => { describe("default queries", () => { beforeEach(async () => { const renderHookResult = renderHook( - (props: TestQueriesProps) => usePlasmicQueries(tree, props, {}), + (props: TestQueriesProps) => + usePlasmicQueries(tree, { + $ctx: {}, + $props: props, + $state: null, + }), { initialProps: {}, wrapper: TestProvider, @@ -198,7 +210,8 @@ describe("usePlasmicQueries", () => { describe("cached queries", () => { it("resolves immediately if cached", async () => { const renderHookResult = renderHook( - () => usePlasmicQueries(tree, {}, {}), + () => + usePlasmicQueries(tree, { $ctx: {}, $props: {}, $state: null }), { wrapper: ({ children }) => ( { it("resolves zero values immediately if cached", async () => { const renderHookResult = renderHook( - () => usePlasmicQueries(tree, {}, {}), + () => + usePlasmicQueries(tree, { $ctx: {}, $props: {}, $state: null }), { wrapper: ({ children }) => ( { }, }, propsContext: {}, + stateSpecs: [], children: [], }; it("does not rerun when props object is recreated with the same values", async () => { const renderHookResult = renderHook( ({ multiplier }: { multiplier: number }) => - usePlasmicQueries(tree, { multiplier }, {}), + usePlasmicQueries(tree, { + $ctx: {}, + $props: { multiplier }, + $state: null, + }), { initialProps: { multiplier: 1 }, wrapper: TestProvider, @@ -316,7 +335,11 @@ describe("usePlasmicQueries", () => { it("reruns when prop values actually change", async () => { const renderHookResult = renderHook( ({ multiplier }: { multiplier: number }) => - usePlasmicQueries(tree, { multiplier }, {}), + usePlasmicQueries(tree, { + $ctx: {}, + $props: { multiplier }, + $state: null, + }), { initialProps: { multiplier: 1 }, wrapper: TestProvider, @@ -343,6 +366,320 @@ describe("usePlasmicQueries", () => { expectedAsyncFuncCalls = 2; }); }); + + describe("$state references", () => { + // Shared "list of ids → state.ids → get by ids" scenario. + // - listIds fetches a list of ids. + // - state.ids derives from $q.listIds.data via initFunc. + // - getByIds fetches details by reading $state.ids. + const listIdsTree: QueryComponentNode = { + type: "component", + queries: { + listIds: { + id: "listIdsFn", + fn: asyncFunc, + args: () => ["list-all"], + }, + getByIds: { + id: "getByIdsFn", + fn: asyncFunc, + args: ({ $state }) => [($state as any).ids], + }, + }, + propsContext: {}, + stateSpecs: [ + { + path: "ids", + type: "private" as const, + initFunc: ({ $q }: any) => $q.listIds.data as string[], + }, + ], + children: [], + }; + + it("resolves immediately when queries are prefetched", async () => { + const cachedIds = ["id1", "id2"]; + const renderHookResult = renderHook( + () => + usePlasmicQueries(listIdsTree, { + $ctx: {}, + $props: {}, + $state: null, + }), + { + wrapper: ({ children }) => ( + + {children} + + ), + } + ); + unmount = renderHookResult.unmount; + + expect(asyncFuncCalls).toHaveLength(0); + expectQueryResolved(renderHookResult.result.current.listIds, cachedIds); + expectQueryResolved(renderHookResult.result.current.getByIds, [ + "item1", + "item2", + ]); + + expectedAsyncFuncCalls = 0; + }); + + it("rejects query when referenced state-source query rejects", async () => { + const renderHookResult = renderHook( + () => + usePlasmicQueries(listIdsTree, { + $ctx: {}, + $props: {}, + $state: null, + }), + { wrapper: TestProvider } + ); + unmount = renderHookResult.unmount; + + await vi.waitFor(() => expect(asyncFuncCalls).toHaveLength(1)); + findAsyncFuncCall("list-all").reject(new Error("listIds-failed")); + + await vi.waitFor(() => + expectQueryRejected( + renderHookResult.result.current.listIds, + "listIds-failed" + ) + ); + await vi.waitFor(() => + expectQueryRejected( + renderHookResult.result.current.getByIds, + "Error resolving function params" + ) + ); + + expectedAsyncFuncCalls = 1; + }); + + it("reruns query when referenced state value changes", async () => { + const renderHookResult = renderHook( + ({ $state }: { $state: Record | null }) => + usePlasmicQueries(listIdsTree, { $ctx: {}, $props: {}, $state }), + { + initialProps: { $state: { ids: ["id1"] } }, + wrapper: TestProvider, + } + ); + unmount = renderHookResult.unmount; + + // listIds runs with its fixed param; getByIds runs with $state.ids. + await vi.waitFor(() => expect(asyncFuncCalls).toHaveLength(2)); + findAsyncFuncCall("list-all").resolve(["id1", "id2"]); + findAsyncFuncCall(["id1"]).resolve(["item1"]); + await vi.waitFor(() => + expectQueryResolved(renderHookResult.result.current.getByIds, [ + "item1", + ]) + ); + + // Rerender with a different $state.ids. + renderHookResult.rerender({ $state: { ids: ["id2"] } }); + await vi.waitFor(() => expect(asyncFuncCalls).toHaveLength(3)); + expect(asyncFuncCalls[2]?.args).toEqual([["id2"]]); + // listIds does not refetch; getByIds refetches with id2 + expectQueryResolved(renderHookResult.result.current.listIds, [ + "id1", + "id2", + ]); + expectQueryLoading(renderHookResult.result.current.getByIds); + findAsyncFuncCall(["id2"]).resolve(["item2"]); + await vi.waitFor(() => + expectQueryResolved(renderHookResult.result.current.getByIds, [ + "item2", + ]) + ); + + expectedAsyncFuncCalls = 3; + }); + + it("does not rerun query when an unreferenced $state value changes", async () => { + const renderHookResult = renderHook( + ({ $state }: { $state: Record | null }) => + usePlasmicQueries(listIdsTree, { $ctx: {}, $props: {}, $state }), + { + initialProps: { $state: { ids: ["id1"], unrelated: 1 } }, + wrapper: TestProvider, + } + ); + unmount = renderHookResult.unmount; + + await vi.waitFor(() => expect(asyncFuncCalls).toHaveLength(2)); + findAsyncFuncCall("list-all").resolve(["id1"]); + findAsyncFuncCall(["id1"]).resolve(["item1"]); + await vi.waitFor(() => + expectQueryResolved(renderHookResult.result.current.getByIds, [ + "item1", + ]) + ); + + // Mutate only the unrelated key. + renderHookResult.rerender({ + $state: { ids: ["id1"], unrelated: 2 }, + }); + await act(async () => { + await new Promise((resolve) => setTimeout(resolve, 50)); + }); + + expect(asyncFuncCalls).toHaveLength(2); + expectQueryResolved(renderHookResult.result.current.getByIds, [ + "item1", + ]); + + expectedAsyncFuncCalls = 2; + }); + + it("does not reset queries when $state ref changes but values are stable", async () => { + const tree: QueryComponentNode = { + type: "component", + queries: { + pageQuery: { + id: "pageFn", + fn: asyncFunc, + args: () => ["page-param"], + }, + }, + propsContext: {}, + stateSpecs: [], + children: [], + }; + + const renderHookResult = renderHook( + ({ $state }: { $state: Record | null }) => + usePlasmicQueries(tree, { $ctx: {}, $props: {}, $state }), + { initialProps: { $state: null }, wrapper: TestProvider } + ); + unmount = renderHookResult.unmount; + + await vi.waitFor(() => expect(asyncFuncCalls).toHaveLength(1)); + findAsyncFuncCall("page-param").resolve("page-data"); + await vi.waitFor(() => + expectQueryResolved( + renderHookResult.result.current.pageQuery, + "page-data" + ) + ); + + const stateTransitions: string[] = []; + ( + renderHookResult.result.current + .pageQuery as unknown as StatefulQueryResult + ).addListener((next, prev) => { + stateTransitions.push(`${prev.state}->${next.state}`); + }); + + renderHookResult.rerender({ $state: {} }); + await act(async () => { + await new Promise((resolve) => setTimeout(resolve, 50)); + }); + + expect(stateTransitions).toHaveLength(0); + expectQueryResolved( + renderHookResult.result.current.pageQuery, + "page-data" + ); + + expectedAsyncFuncCalls = 1; + }); + + it("resolves state → state → query chain", async () => { + const stateSpecs = [ + { path: "stateA", type: "private" as const, initVal: "base" }, + { + path: "stateB", + type: "private" as const, + initFunc: ({ $state }: any) => + ($state.stateA as string) + "-derived", + }, + ]; + + const tree: QueryComponentNode = { + type: "component", + queries: { + items: { + id: "itemsFn", + fn: asyncFunc, + args: ({ $state }) => [($state as any).stateB], + }, + }, + propsContext: {}, + stateSpecs: stateSpecs, + children: [], + }; + + const renderHookResult = renderHook( + () => usePlasmicQueries(tree, { $ctx: {}, $props: {}, $state: null }), + { wrapper: TestProvider } + ); + unmount = renderHookResult.unmount; + + await vi.waitFor(() => expect(asyncFuncCalls).toHaveLength(1)); + expect(asyncFuncCalls[0]!.args).toEqual(["base-derived"]); + + findAsyncFuncCall("base-derived").resolve(["result1", "result2"]); + await vi.waitFor(() => + expectQueryResolved(renderHookResult.result.current.items, [ + "result1", + "result2", + ]) + ); + + expectedAsyncFuncCalls = 1; + }); + + it("resolves state → query → state → query chain", async () => { + const renderHookResult = renderHook( + () => + usePlasmicQueries(listIdsTree, { + $ctx: {}, + $props: {}, + $state: null, + }), + { wrapper: TestProvider } + ); + unmount = renderHookResult.unmount; + + await vi.waitFor(() => expect(asyncFuncCalls).toHaveLength(1)); + expect(asyncFuncCalls[0]!.args).toEqual(["list-all"]); + expectQueryLoading(renderHookResult.result.current.listIds); + expectQueryLoading(renderHookResult.result.current.getByIds); + + findAsyncFuncCall("list-all").resolve(["id1", "id2"]); + await vi.waitFor(() => + expectQueryResolved(renderHookResult.result.current.listIds, [ + "id1", + "id2", + ]) + ); + + await vi.waitFor(() => expect(asyncFuncCalls).toHaveLength(2)); + expect(asyncFuncCalls[1]!.args).toEqual([["id1", "id2"]]); + expectQueryLoading(renderHookResult.result.current.getByIds); + + findAsyncFuncCall(["id1", "id2"]).resolve(["item1", "item2"]); + await vi.waitFor(() => + expectQueryResolved(renderHookResult.result.current.getByIds, [ + "item1", + "item2", + ]) + ); + + expectedAsyncFuncCalls = 2; + }); + }); }); describe("test as component", () => { @@ -370,7 +707,7 @@ describe("usePlasmicQueries", () => { await runResolveTestInComponent(container); - expectedSuspenseCount = 2; + expectedSuspenseCount = 1; expectedAsyncFuncCalls = 4; }); @@ -420,7 +757,7 @@ describe("usePlasmicQueries", () => { await act(async () => { expect(container.innerHTML).toContain("TestProvider SUSPENDED"); - expect(container.innerHTML).toContain("suspense count: 3"); + expect(container.innerHTML).toContain("suspense count: 2"); expect(asyncFuncCalls).toHaveLength(5); // Resolve dep1 to same result findAsyncFuncCall("dep1-param-changed").resolve("dep1-done"); @@ -430,7 +767,7 @@ describe("usePlasmicQueries", () => { expect(container.innerHTML).toContain("result-done"); }); - expectedSuspenseCount = 3; + expectedSuspenseCount = 2; expectedAsyncFuncCalls = 5; }); @@ -453,7 +790,7 @@ describe("usePlasmicQueries", () => { await act(async () => { expect(container.innerHTML).toContain("TestProvider SUSPENDED"); - expect(container.innerHTML).toContain("suspense count: 3"); + expect(container.innerHTML).toContain("suspense count: 2"); await vi.waitFor(() => expect(asyncFuncCalls).toHaveLength(5)); // Resolve dep2 with changed result findAsyncFuncCall("dep2-param-changed").resolve( @@ -473,11 +810,11 @@ describe("usePlasmicQueries", () => { ); }); await act(async () => { - expect(container.innerHTML).toContain("suspense count: 4"); + expect(container.innerHTML).toContain("suspense count: 2"); expect(container.innerHTML).toContain("result-done-changed"); }); - expectedSuspenseCount = 4; + expectedSuspenseCount = 2; expectedAsyncFuncCalls = 7; }); }); @@ -487,7 +824,11 @@ describe("usePlasmicQueries", () => { beforeEach(async () => { const InvalidateTestComponent = () => { const { mutate } = usePlasmicDataConfig(); - const $q = usePlasmicQueries(defaultTree, {}, {}); + const $q = usePlasmicQueries(defaultTree, { + $ctx: {}, + $props: {}, + $state: null, + }); return ( <> {JSON.stringify($q.result.data)} @@ -551,7 +892,7 @@ describe("usePlasmicQueries", () => { ); }); await act(async () => { - expect(container.innerHTML).toContain("suspense count: 3"); + expect(container.innerHTML).toContain("suspense count: 2"); expect(asyncFuncCalls).toHaveLength(1); findAsyncFuncCall("result-param").resolve("result-redone"); }); @@ -559,7 +900,7 @@ describe("usePlasmicQueries", () => { expect(container.innerHTML).toContain("result-redone"); }); - expectedSuspenseCount = 3; + expectedSuspenseCount = 2; expectedAsyncFuncCalls = 1; }); @@ -574,7 +915,7 @@ describe("usePlasmicQueries", () => { }); await act(async () => { expect(container.innerHTML).toContain("TestProvider SUSPENDED"); - expect(container.innerHTML).toContain("[suspense count: 3]"); + expect(container.innerHTML).toContain("[suspense count: 2]"); expect(asyncFuncCalls).toHaveLength(2); findAsyncFuncCall("result-param", "dep3-redone").resolve( "result-redone" @@ -584,7 +925,7 @@ describe("usePlasmicQueries", () => { expect(container.innerHTML).toContain("result-redone"); }); - expectedSuspenseCount = 3; + expectedSuspenseCount = 2; expectedAsyncFuncCalls = 2; }); @@ -606,7 +947,7 @@ describe("usePlasmicQueries", () => { }); await act(async () => { expect(container.innerHTML).toContain("TestProvider SUSPENDED"); - expect(container.innerHTML).toContain("[suspense count: 3]"); + expect(container.innerHTML).toContain("[suspense count: 2]"); expect(asyncFuncCalls).toHaveLength(3); findAsyncFuncCall("result-param", "dep3-redone").resolve( "result-redone" @@ -616,7 +957,7 @@ describe("usePlasmicQueries", () => { expect(container.innerHTML).toContain("result-redone"); }); - expectedSuspenseCount = 3; + expectedSuspenseCount = 2; expectedAsyncFuncCalls = 3; }); @@ -638,7 +979,7 @@ describe("usePlasmicQueries", () => { }); await act(async () => { expect(container.innerHTML).toContain("TestProvider SUSPENDED"); - expect(container.innerHTML).toContain("[suspense count: 3]"); + expect(container.innerHTML).toContain("[suspense count: 2]"); expect(asyncFuncCalls).toHaveLength(3); findAsyncFuncCall("result-param", "dep3-redone").resolve( "result-redone" @@ -648,7 +989,7 @@ describe("usePlasmicQueries", () => { expect(container.innerHTML).toContain("result-redone"); }); - expectedSuspenseCount = 3; + expectedSuspenseCount = 2; expectedAsyncFuncCalls = 3; }); }); @@ -668,7 +1009,7 @@ async function runResolveTestInComponent(container: HTMLElement) { findAsyncFuncCall("result-param").resolve("result-done"); }); await act(async () => { - expect(container.innerHTML).toContain(`[suspense count: 2]`); + expect(container.innerHTML).toContain(`[suspense count: 1]`); expect(container.innerHTML).toContain("result-done"); }); } diff --git a/packages/data-sources/src/serverQueries/client.ts b/packages/data-sources/src/serverQueries/client.ts index 8d5096d143..10e77264e5 100644 --- a/packages/data-sources/src/serverQueries/client.ts +++ b/packages/data-sources/src/serverQueries/client.ts @@ -7,19 +7,35 @@ import { import * as React from "react"; import { mapRecordEntries, mapRecords, noopFn, notNil } from "../utils"; import { + ResolveParamsResult, StatefulQueryResult, - StatefulQueryState, SyncPromise, createDollarQueries, + createInitial$State, resolveParams, - shallowEqualRecords, - useRenderEffect, + usePrevious, } from "./common"; import { makeQueryCacheKey } from "./makeQueryCacheKey"; -import { PlasmicQuery, PlasmicQueryResult, QueryComponentNode } from "./types"; +import { + PlasmicQuery, + PlasmicQueryResult, + QueryComponentNode, + QueryExecutionContext, +} from "./types"; const GLOBAL_CACHE = new Map>(); +/** + * Initial context just before execution. + * @internal + */ +type ClientQueryExecutionContext = Pick< + QueryExecutionContext, + "$ctx" | "$props" +> & { + $state: QueryExecutionContext["$state"] | null; +}; + /** * @internal * This hook's job is to execute queries and re-render when query state changes. @@ -32,7 +48,7 @@ const GLOBAL_CACHE = new Map>(); * * Example codegen: * - * export const serverQueryTree = { + * export const queryTree = { * type: "component", * queries: { * films: { fn: $$.fetch, id: "fetch", args: ({ $q, $props, $ctx }) => [...] } @@ -41,47 +57,15 @@ const GLOBAL_CACHE = new Map>(); * }; * * export function ClientComponent($props, $ctx) { - * const $q = usePlasmicQueries(serverQueryTree, $props, $ctx); + * const $q = usePlasmicQueries(queryTree, { $ctx, $props, $state: null }); * return
{$q.films.data}
* } */ export function usePlasmicQueries( tree: QueryComponentNode, - $props: Record, - $ctx: Record, - $state?: Record + env: ClientQueryExecutionContext ): Record { - // Query invalidation should follow top-level prop/context changes, - // not object recreation from re-renders. - const stableProps = useShallowStableRecord($props); - const stableCtx = useShallowStableRecord($ctx); - // $state is a valtio proxy with a stable reference, so we use a ref to - // capture the latest value lazily at execParams call time. This avoids a - // circular dependency with useDollarState (which depends on $q). - const $stateRef = React.useRef($state ?? {}); - $stateRef.current = $state ?? {}; - const $queries = React.useMemo( - () => createDollarQueries(Object.keys(tree.queries)), - [tree] - ); - const queries = React.useMemo(() => { - return mapRecords( - (_name, q) => ({ - id: q.id, - fn: q.fn, - execParams: () => - q.args({ - $q: $queries, - $props: stableProps, - $ctx: stableCtx, - $state: $stateRef.current, - $scopedItemVars: {}, - }), - }), - tree.queries - ); - }, [$queries, stableCtx, stableProps, tree]); - + const { $ctx, $props } = env; // Since we codegen components with data fetching and content rendering // together, the component will be suspended when query data is not loaded. // Therefore, this hook's primary complexity is handling component suspension @@ -99,99 +83,134 @@ export function usePlasmicQueries( // since SWR is responsible for other behaviors like revalidation. // Wrap queries with the GLOBAL_CACHE. - const wrappedQueries = React.useMemo(() => wrapQueries(queries), [queries]); + const wrappedQueries = React.useMemo(() => wrapQueries(tree.queries), [tree]); + + const $queries = React.useMemo( + () => createDollarQueries(Object.keys(tree.queries)), + [tree] + ); const $queryStates = $queries as Record; + + // $state should be null on the first render only since useDollarState + // is run AFTER usePlasmicQueries. This gives usePlasmicQueries the chance + // to resolve query/state interdependencies on the first render via + // createInitial$State, which lazily evaluates initial state values. + let $state = env.$state; + if (!$state) { + $state = createInitial$State($ctx, $props, $queryStates, tree.stateSpecs); + } + const { fallback: prefetchedCache, cache: swrCache } = usePlasmicDataConfig(); - // Normally, useMutablePlasmicQueryData re-renders when its own query settles. - // However, it will NOT re-render when dependent queries settle or reset due to prop change. - // This counter forces useMutablePlasmicQueryData to re-resolve params. - const [settledCount, setSettledCount] = React.useState(0); - React.useEffect(() => { - let cleanup = false; - const resultListener = ( - next: StatefulQueryState, - prev: StatefulQueryState - ) => { - if (cleanup) { + // Holds the latest resolved params per query for this render. + // Used later by usePlasmicQuery. + const paramsResults: Record = {}; + + // Execution context changes every render, don't bother memo-ing this. + // Our memoization will be based on the resolved params cache key instead. + const executionCtx: QueryExecutionContext = { + $ctx, + $props, + $q: $queryStates, + $state, + }; + + // Check if params resolve consistently with $queryStates. + // If the queries changed, or any params don't resolve consistently, + // then reset all queries to "initial" to ensure we don't show stale data. + // The invariant after this block of code is that all $queryStates in + // "loading" or "done" states are in paramsResults. + // $queryStates in "initial" state will be resolved in initPlasmicQueriesSync. + const prevWrappedQueries = usePrevious(wrappedQueries); + let consistent = + prevWrappedQueries === undefined || + Object.is(prevWrappedQueries, wrappedQueries); + mapRecords( + (queryName, $query, query) => { + if (!consistent || $query.current.state === "initial") { return; } - if (prev.state === "done" || next.state === "done") { - // Queue microtask since the listener may run during the render phase - // due to useRenderEffect. - queueMicrotask(() => setSettledCount((v) => v + 1)); + const paramsResult = resolveParams(query.id, () => + query.args(executionCtx) + ); + paramsResults[queryName] = paramsResult; + + if (paramsResult.status === "blocked") { + consistent = false; + } else if ( + paramsResult.status === "error" && + $query.current.key !== null + ) { + consistent = false; + } else if ( + paramsResult.status === "ready" && + paramsResult.cacheKey !== $query.current.key + ) { + consistent = false; } - }; + }, + $queryStates, + wrappedQueries + ); + if (!consistent) { mapRecords((_queryName, $query) => { - $query.addListener(resultListener); + $query.reset(); }, $queryStates); - return () => { - cleanup = true; - mapRecords((_queryName, $query) => { - $query.removeListener(resultListener); - }, $queryStates); + for (const k of Object.keys(paramsResults)) { + delete paramsResults[k]; + } + } + + // Core loop that starts queries outside SWR and checks caches. + // Stop when a new render starts or the component unmounts. + const stopRef = React.useRef<() => void>(); + stopRef.current?.(); + let stopped = false; + const stop = new Promise((resolve) => { + stopRef.current = () => { + stopped = true; + resolve(); }; - }, [$queryStates]); - - // Start queries during the render phase with useRenderEffect. - useRenderEffect( - (prevDeps) => { - // If wrappedQueries changed, something in the query execParams changed ($ctx or $props) - // Existing resolved params may no longer be correct, so we reset all $queries to force params - // to re-resolve. If params are unchanged, cached data will be resolved immediately. - if (prevDeps) { - const prevWrappedQueries: Record = prevDeps[0]; - if (!Object.is(prevWrappedQueries, wrappedQueries)) { - mapRecords((_queryName, $query) => { - $query.reset(); - }, $queryStates); + }); + React.useEffect(() => () => stopRef.current?.(), []); + const loop = async () => { + while (true) { + initPlasmicQueriesSync( + $queryStates, + wrappedQueries, + paramsResults, + executionCtx, + prefetchedCache, + swrCache + ); + + const loadingQueries = mapRecordEntries((_queryName, $query) => { + if ($query.isLoading) { + return $query.getDoneResult(); + } else { + return null; } - } + }, $queryStates).filter(notNil); - // Core loop that starts queries outside SWR and checks caches. - let cleanup = false; - const loop = async () => { - while (true) { - initPlasmicQueriesSync( - $queryStates, - wrappedQueries, - prefetchedCache, - swrCache - ); - - const loadingQueries = mapRecordEntries((_queryName, $query) => { - if ($query.isLoading) { - return $query.getDoneResult(); - } else { - return null; - } - }, $queryStates).filter(notNil); + if (loadingQueries.length === 0) { + break; + } - if (loadingQueries.length === 0) { - break; - } + await Promise.race([stop, ...loadingQueries]); + if (stopped) { + break; + } + } + }; - await Promise.race(loadingQueries); - if (cleanup) { - break; - } - } - }; - - loop() - // Avoid PromiseRejectionHandledWarning on internal promise that users can't catch. - .catch(noopFn); - return () => { - cleanup = true; - }; - }, - [wrappedQueries, $queryStates, settledCount] - ); + loop() + // Avoid PromiseRejectionHandledWarning on internal promise that users can't catch. + .catch(noopFn); mapRecords( - (_queryName, $query, query) => { - usePlasmicQuery($query, query, settledCount); + (queryName, $query, query) => { + usePlasmicQuery($query, query, paramsResults[queryName]); }, $queryStates, wrappedQueries @@ -226,7 +245,7 @@ function wrapQueries( return { id: query.id, fn: wrappedFn, - execParams: query.execParams, + args: query.args, }; }, queries); } @@ -234,10 +253,14 @@ function wrapQueries( /** * Synchronously resolves params and resolves from cache or starts loading. * This function does as much as possible without awaiting any promises. + * + * Resolved params will be assigned to paramsResults. */ function initPlasmicQueriesSync( $queries: Record, queries: Record, + paramsResults: Record, + executionCtx: QueryExecutionContext, prefetchedCache: { [k: string]: unknown }, clientCache: { get: (k: string) => unknown } ): void { @@ -249,12 +272,16 @@ function initPlasmicQueriesSync( anySettled = false; mapRecords( - (_queryName, $query, query) => { + (queryName, $query, query) => { if ($query.current.state !== "initial") { return; } - const paramsResult = resolveParams(query.execParams); + const paramsResult = resolveParams(query.id, () => + query.args(executionCtx) + ); + paramsResults[queryName] = paramsResult; + if (paramsResult.status === "error") { // params errored, reject and don't try again next iteration $query.rejectPromise(null, paramsResult.error); @@ -263,7 +290,7 @@ function initPlasmicQueriesSync( } else if (paramsResult.status === "blocked") { // params blocked, try again next iteration if any resolved return; - } // else paramsResult.status === "ready + } // else paramsResult.status === "ready" const cacheKey = makeQueryCacheKey( query.id, @@ -309,23 +336,13 @@ function initPlasmicQueriesSync( } while (anySettled); } -/** - * TODO: Use paramsResult from usePlasmicQueries to avoid double param resolution. - */ -function usePlasmicQuery Promise>( +function usePlasmicQuery Promise>( $query: PlasmicQueryResult, query: PlasmicQuery, - settledCount?: number + paramsResult: ResolveParamsResult> ): SWRResponse { const $queryState = $query as StatefulQueryResult; - // Since query.execParams never changes, we need a way to know when to retry - // resolving params. The parent can pass in settledCount that increments as - // queries settle. - const paramsResult = React.useMemo(() => { - return resolveParams(query.execParams); - }, [query.execParams, settledCount]); - const { key, fetcher } = React.useMemo((): { key: string | null; fetcher: () => Promise; @@ -348,11 +365,33 @@ function usePlasmicQuery Promise>( return { key: cacheKey, fetcher: () => { - const promise = query.fn(...paramsResult.resolvedParams); - $queryState.loadingPromise(cacheKey, promise); - return promise.finally(() => { - GLOBAL_CACHE.delete(cacheKey); - }); + const clientCachedPromise = GLOBAL_CACHE.get(cacheKey); + if (clientCachedPromise?.result) { + // If in global cache, transition directly to resolved/rejected. + if (clientCachedPromise.result.state === "resolved") { + $queryState.resolvePromise( + cacheKey, + clientCachedPromise.result.value as T + ); + } else { + $queryState.rejectPromise( + cacheKey, + clientCachedPromise.result.error + ); + } + return (clientCachedPromise.promise as Promise).finally(() => { + // Delete key from global cache after we're sure SWR has it + GLOBAL_CACHE.delete(cacheKey); + }); + } else { + // Otherwise, transition to loading and call the function. + const promise = query.fn(...paramsResult.resolvedParams); + $queryState.loadingPromise(cacheKey, promise); + return promise.finally(() => { + // Delete key from global cache after we're sure SWR has it + GLOBAL_CACHE.delete(cacheKey); + }); + } }, }; } @@ -381,16 +420,6 @@ function usePlasmicQuery Promise>( return result; } -function useShallowStableRecord>( - value: T -): T { - const ref = React.useRef(value); - if (!shallowEqualRecords(ref.current, value)) { - ref.current = value; - } - return ref.current; -} - export const _testonly = { GLOBAL_CACHE, }; diff --git a/packages/data-sources/src/serverQueries/common.test.ts b/packages/data-sources/src/serverQueries/common.test.ts index b674bc0847..5fabdd6bf0 100644 --- a/packages/data-sources/src/serverQueries/common.test.ts +++ b/packages/data-sources/src/serverQueries/common.test.ts @@ -1,12 +1,15 @@ +/** + * @vitest-environment jsdom + */ import { beforeEach, describe, expect, it, vi } from "vitest"; import { StatefulQueryResult, createDollarQueries, + createInitial$State, resolveParams, safeExec, - shallowEqualRecords, - wrapDollarQueriesForMetadata, - wrapDollarQueriesWithFallbacks, + wrapPlasmicQueriesForMetadata, + wrapPlasmicQueriesWithFallbacks, } from "./common"; import { asyncFunc, asyncFuncCalls } from "./testonly/test-common"; import { PlasmicQueryResult } from "./types"; @@ -53,6 +56,12 @@ describe("StatefulQueryResult", () => { expect(() => unwrapData(result)).toThrowError(error); await expect(originalPromise).rejects.toBe(error); }); + + it("toJSON", () => { + const result = new StatefulQueryResult(); + expect(result.toJSON()).toBe(result.current); + expect(JSON.stringify(result)).toEqual('{"state":"initial","key":null}'); + }); }); describe("createDollarQueries", () => { @@ -75,32 +84,38 @@ describe("createDollarQueries", () => { describe("resolveParams", () => { it("returns ready for empty params", () => { - expect(resolveParams(() => [] as [])).toEqual({ + expect(resolveParams("queryId", () => [] as [])).toEqual({ status: "ready", resolvedParams: [], + cacheKey: "$q.$.queryId.$.[]", }); }); it("returns ready for null params", () => { - expect(resolveParams(() => [null])).toEqual({ + expect(resolveParams("queryId", () => [null])).toEqual({ status: "ready", resolvedParams: [null], + cacheKey: "$q.$.queryId.$.[null]", }); }); it("returns ready for undefined params", () => { - expect(resolveParams(() => [undefined])).toEqual({ + expect(resolveParams("queryId", () => [undefined])).toEqual({ status: "ready", resolvedParams: [undefined], + cacheKey: '$q.$.queryId.$.["ρ:UNDEFINED"]', }); }); it("returns ready for simple params", () => { - expect(resolveParams(() => ["foo", 42] as [string, number])).toEqual({ + expect( + resolveParams("queryId", () => ["foo", 42] as [string, number]) + ).toEqual({ status: "ready", resolvedParams: ["foo", 42], + cacheKey: '$q.$.queryId.$.["foo",42]', }); }); it("returns error for other errors", () => { expect( - resolveParams(() => { + resolveParams("queryId", () => { throw new Error("other error"); }) ).toMatchObject({ @@ -113,26 +128,29 @@ describe("resolveParams", () => { }); it("works with StatefulQueryResult, blocked -> ready", () => { const queryResult = new StatefulQueryResult(); - expect(resolveParams(() => ["foo", queryResult.data])).toEqual({ + expect(resolveParams("queryId", () => ["foo", queryResult.data])).toEqual({ status: "blocked", promise: queryResult.settable.promise, }); queryResult.resolvePromise("key", "done"); - expect(resolveParams(() => ["foo", queryResult.data])).toEqual({ + expect(resolveParams("queryId", () => ["foo", queryResult.data])).toEqual({ status: "ready", resolvedParams: ["foo", "done"], + cacheKey: '$q.$.queryId.$.["foo","done"]', }); }); it("works with StatefulQueryResult, blocked -> error", () => { const queryResult = new StatefulQueryResult(); - expect(resolveParams(() => ["foo", queryResult.data])).toEqual({ + expect(resolveParams("queryId", () => ["foo", queryResult.data])).toEqual({ status: "blocked", promise: queryResult.settable.promise, }); queryResult.rejectPromise("key", new Error("other error")); - expect(resolveParams(() => ["foo", queryResult.data])).toMatchObject({ + expect( + resolveParams("queryId", () => ["foo", queryResult.data]) + ).toMatchObject({ status: "error", error: { message: "Error resolving function params", @@ -142,13 +160,13 @@ describe("resolveParams", () => { }); }); -describe("wrapDollarQueriesWithFallbacks, wrapDollarQueriesForMetadata", () => { +describe("wrapPlasmicQueriesWithFallbacks, wrapPlasmicQueriesForMetadata", () => { const ifUndefined = () => "LOADING"; const ifError = () => "ERROR"; it("replaces undefined/error with fallback values", () => { const $queries = createDollarQueries(["loading", "rejected", "resolved"]); - const $fallback = wrapDollarQueriesWithFallbacks( + const $fallback = wrapPlasmicQueriesWithFallbacks( $queries, ifUndefined, ifError @@ -175,7 +193,7 @@ describe("wrapDollarQueriesWithFallbacks, wrapDollarQueriesForMetadata", () => { expect(String($fallback.rejected.data)).toEqual("ERROR"); expect($fallback.resolved.data).toEqual("RESOLVED"); - const $metadata = wrapDollarQueriesForMetadata($queries); + const $metadata = wrapPlasmicQueriesForMetadata($queries); expect( `loading:${$metadata.loading.data} rejected:${$metadata.rejected.data} resolved:${$metadata.resolved.data}` ).toEqual("loading:… rejected:[ERROR] resolved:RESOLVED"); @@ -183,7 +201,7 @@ describe("wrapDollarQueriesWithFallbacks, wrapDollarQueriesForMetadata", () => { it("replaces fallback values in nested accesses", () => { const $queries = createDollarQueries(["loading", "rejected"]); - const $fallback = wrapDollarQueriesWithFallbacks( + const $fallback = wrapPlasmicQueriesWithFallbacks( $queries, ifUndefined, ifError @@ -222,36 +240,209 @@ describe("wrapDollarQueriesWithFallbacks, wrapDollarQueriesForMetadata", () => { }); }); -describe("shallowEqualRecords", () => { - it("returns true for same reference", () => { - const a = { x: 1 }; - expect(shallowEqualRecords(a, a)).toBe(true); +describe("createInitial$State", () => { + it("returns undefined without initVal", () => { + const $state = createInitial$State({}, {}, {}, [ + { path: "count", type: "private" }, + ]); + expect($state.count).toBeUndefined(); + }); + + it("returns propValue", () => { + const $state = createInitial$State({}, { value: "from prop" }, {}, [ + { + path: "value", + valueProp: "value", + type: "writable", + }, + ]); + expect($state.value).toEqual("from prop"); + }); + + it("returns initVal", () => { + const $state = createInitial$State({}, {}, {}, [ + { path: "value", initVal: "from initVal", type: "private" }, + ]); + expect($state.value).toBe("from initVal"); + }); + + it("invokes initFunc with execution context and returns it", () => { + const $ctx = { ctxName: "ctxValue" }; + const $props = { propName: "propValue" }; + const $queryStates = { queryName: new StatefulQueryResult() }; + $queryStates.queryName.resolvePromise("queryKey", "queryValue"); + + const $state = createInitial$State($ctx, $props, $queryStates, [ + { + path: "stateName", + initVal: "stateValue", + type: "private", + }, + { + path: "merged", + initFunc: (executionCtx) => + [ + executionCtx.$ctx.ctxName, + executionCtx.$props.propName, + `${executionCtx.$q.queryName.key}:${executionCtx.$q.queryName.data}`, + executionCtx.$state.stateName, + ].join(","), + type: "private", + }, + ]); + expect($state.merged).toEqual( + "ctxValue,propValue,queryKey:queryValue,stateValue" + ); + expect($state.stateName).toEqual("stateValue"); + }); + + it("returns or throws from query", () => { + const $queryStates = { query: new StatefulQueryResult() }; + const $state = createInitial$State({}, {}, $queryStates, [ + { + path: "dependsOnQuery", + initFunc: ({ $q }) => $q.query.data, + type: "private", + }, + ]); + expect(() => $state.dependsOnQuery).toThrow("Query is not done"); + + $queryStates.query.resolvePromise("qureyKey", "done"); + expect($state.dependsOnQuery).toEqual("done"); }); - it("returns true for equal records", () => { - expect(shallowEqualRecords({ x: 1, y: "a" }, { x: 1, y: "a" })).toBe(true); + it("caches successful initFunc results but retries on throw", () => { + const $queryStates = { query: new StatefulQueryResult() }; + const initFunc = vi.fn(({ $q }) => $q.query.data); + const $state = createInitial$State({}, {}, $queryStates, [ + { path: "value", initFunc, type: "private" }, + ]); + + // Throws keep re-running so the next read can pick up a settled query. + expect(() => $state.value).toThrow(); + expect(() => $state.value).toThrow(); + expect(initFunc).toHaveBeenCalledTimes(2); + + // First successful read computes and caches. + $queryStates.query.resolvePromise("k", "done"); + expect($state.value).toEqual("done"); + expect(initFunc).toHaveBeenCalledTimes(3); + + // Subsequent reads return the cached value without re-invoking initFunc. + expect($state.value).toEqual("done"); + expect($state.value).toEqual("done"); + expect(initFunc).toHaveBeenCalledTimes(3); }); - it("returns false for different values", () => { - expect(shallowEqualRecords({ x: 1 }, { x: 2 })).toBe(false); + it("returns objects for nested path prefixes", () => { + const $state = createInitial$State({}, {}, {}, [ + { path: "tpl.value", initVal: "from initVal", type: "private" }, + { path: "tpl.noInit", type: "private" }, + { path: "tpl2.noInit", type: "private" }, + ]); + + expect($state.tpl).toBeTypeOf("object"); + const $stateTpl = $state.tpl as Record; + expect($stateTpl.value).toEqual("from initVal"); + expect($stateTpl.noInit).toBeUndefined(); + + expect($state.tpl2).toBeTypeOf("object"); + const $stateTpl2 = $state.tpl2 as Record; + expect($stateTpl2.noInit).toBeUndefined(); + + expect($state.value).toBeUndefined(); + expect($state.noInit).toBeUndefined(); }); - it("returns false for different keys", () => { - expect(shallowEqualRecords({ x: 1 }, { y: 1 })).toBe(false); + it("returns stable sub-proxies (same reference on repeated access)", () => { + const $state = createInitial$State({}, {}, {}, [ + { path: "tpl.value", type: "private" }, + ]); + expect($state.tpl).toBe($state.tpl); }); - it("returns false for different key counts", () => { - expect(shallowEqualRecords({ x: 1 }, { x: 1, y: 2 })).toBe(false); + it("returns undefined for repeated specs", () => { + const $state = createInitial$State({}, {}, {}, [ + { path: "items[].selected", initVal: "", type: "private" }, + ]); + expect($state["items"]).toBeUndefined(); + expect($state["items[]"]).toBeUndefined(); }); - it("uses reference equality for values", () => { - const obj = {}; - expect(shallowEqualRecords({ x: obj }, { x: obj })).toBe(true); - expect(shallowEqualRecords({ x: obj }, { x: {} })).toBe(false); + it("skips only [] specs and still builds the rest of the state", () => { + const $queryStates = { query: new StatefulQueryResult() }; + $queryStates.query.resolvePromise("k", "queryValue"); + + const $state = createInitial$State({}, {}, $queryStates, [ + { path: "items[].selected", initVal: "", type: "private" }, + { path: "count", initVal: 7, type: "private" }, + { path: "tpl.label", initVal: "hi", type: "private" }, + { + path: "fromQuery", + initFunc: ({ $q }) => $q.query.data, + type: "private", + }, + { path: "after[].x", initVal: "", type: "private" }, + ]); + + // The [] specs are skipped entirely. + expect($state["items"]).toBeUndefined(); + expect($state["items[]"]).toBeUndefined(); + expect($state["after"]).toBeUndefined(); + + // ...but every non-[] spec around them still works. + expect($state.count).toBe(7); + expect(($state.tpl as Record).label).toBe("hi"); + expect($state.fromQuery).toBe("queryValue"); + expect(Object.keys($state)).toEqual(["count", "tpl", "fromQuery"]); }); - it("returns true for two empty records", () => { - expect(shallowEqualRecords({}, {})).toBe(true); + it("matches JavaScript object behavior", () => { + const jsState = { + foo: "$.foo", + tpl: { foo: "$.tpl.foo" }, + }; + + const $state = createInitial$State({}, {}, {}, [ + { path: "foo", initVal: "$.foo", type: "private" }, + { path: "tpl.foo", initVal: "$.tpl.foo", type: "private" }, + ]); + + function expectJavaScriptBehavior(state: typeof jsState) { + // is typeof object + expect(state).toBeTypeOf("object"); + expect(state.tpl).toBeTypeOf("object"); + + // implements keys, values, entries + expect(Object.keys(state)).toEqual(["foo", "tpl"]); + expect(Object.values(state)).toEqual(["$.foo", { foo: "$.tpl.foo" }]); + expect(Object.entries(state)).toEqual([ + ["foo", "$.foo"], + ["tpl", { foo: "$.tpl.foo" }], + ]); + expect(Object.keys(state.tpl)).toEqual(["foo"]); + expect(Object.values(state.tpl)).toEqual(["$.tpl.foo"]); + expect(Object.entries(state.tpl)).toEqual([["foo", "$.tpl.foo"]]); + + // implements in + expect("foo" in state).toBe(true); + expect("tpl" in state).toBe(true); + expect("unknown" in state).toBe(false); + expect("foo" in state.tpl).toBe(true); + expect("unknown" in state.tpl).toBe(false); + + // unknown keys return undefined + expect(state["unknown"]).toBeUndefined(); + expect(state["tpl"]["unknown"]).toBeUndefined(); + + // implements conversion + expect(String(state)).toEqual("[object Object]"); + expect(JSON.stringify(state)).toEqual( + '{"foo":"$.foo","tpl":{"foo":"$.tpl.foo"}}' + ); + } + expectJavaScriptBehavior(jsState); + expectJavaScriptBehavior($state as typeof jsState); }); }); diff --git a/packages/data-sources/src/serverQueries/common.ts b/packages/data-sources/src/serverQueries/common.ts index f1769f80d0..c19b2c11c4 100644 --- a/packages/data-sources/src/serverQueries/common.ts +++ b/packages/data-sources/src/serverQueries/common.ts @@ -1,14 +1,13 @@ import React from "react"; - import { isPlasmicUndefinedDataErrorPromise, PlasmicUndefinedDataErrorPromise, tagPlasmicUndefinedDataErrorPromise, untagPlasmicUndefinedDataErrorPromise, } from "../common"; - import { mapRecords, noopFn } from "../utils"; -import { PlasmicQueryResult } from "./types"; +import { makeQueryCacheKey } from "./makeQueryCacheKey"; +import { $StateSpec, PlasmicQueryResult, QueryExecutionContext } from "./types"; /** * @internal @@ -135,11 +134,6 @@ export class StatefulQueryResult implements PlasmicQueryResult { ); } - /** - * Resolve is allowed if: - * 1) no key / state is initial, which means we are resolving from cache - * 2) key / state is loading, which means we need to check the keys match - */ resolvePromise(key: string, data: T): void { if (this.current.key === null || this.current.key === key) { this.transitionState({ @@ -174,6 +168,11 @@ export class StatefulQueryResult implements PlasmicQueryResult { } } + toJSON() { + // Serialize only the state, not promise nor listeners + return this.current; + } + get key() { return this.current.key; } @@ -246,7 +245,7 @@ export function assertUnexpectedNodeType(x: never): never { } export type ResolveParamsResult = - | { status: "ready"; resolvedParams: Params } + | { status: "ready"; resolvedParams: Params; cacheKey: string } | { status: "blocked"; promise: PlasmicUndefinedDataErrorPromise } | { status: "error"; error: Error }; @@ -258,13 +257,19 @@ export type ResolveParamsResult = * - "error" if we encounter any other error */ export function resolveParams any>( + queryId: string, params: () => Parameters ): ResolveParamsResult> { return safeExec>>( - () => ({ - status: "ready", - resolvedParams: params(), - }), + () => { + const resolvedParams = params(); + const cacheKey = makeQueryCacheKey(queryId, resolvedParams); + return { + status: "ready", + resolvedParams, + cacheKey, + }; + }, (promise) => ({ status: "blocked", promise, @@ -281,15 +286,15 @@ export function resolveParams any>( * Wraps each PlasmicQueryResult so that they return a hardcoded string for * undefined/loading and error cases. */ -export function wrapDollarQueriesForMetadata< +export function wrapPlasmicQueriesForMetadata< T extends Record >( - $queries: T, + queries: T, ifUndefined?: (promise: PlasmicUndefinedDataErrorPromise) => unknown, ifError?: (err: unknown) => unknown ): T { - return wrapDollarQueriesWithFallbacks( - $queries, + return wrapPlasmicQueriesWithFallbacks( + queries, ifUndefined ?? (() => "…"), ifError ?? (() => "[ERROR]") ); @@ -299,17 +304,17 @@ export function wrapDollarQueriesForMetadata< * Wraps each PlasmicQueryResult with a FallbackQueryResult to allow * setting fallbacks for undefined/loading and error cases. */ -export function wrapDollarQueriesWithFallbacks< +export function wrapPlasmicQueriesWithFallbacks< T extends Record >( - $queries: T, + queries: T, ifUndefined: (promise: PlasmicUndefinedDataErrorPromise) => unknown, ifError: (err: unknown) => unknown ): T { return mapRecords( (_queryName, $query): PlasmicQueryResult => new FallbackQueryResult($query, ifUndefined, ifError), - $queries + queries ) as T; } @@ -389,24 +394,6 @@ export class SyncPromise { * Wraps a Promise so that it can be easily resolved/rejected * outside the executor param of the Promise constructor. */ -export function shallowEqualRecords( - a: Record, - b: Record -) { - if (Object.is(a, b)) { - return true; - } - const aKeys = Object.keys(a); - const bKeys = Object.keys(b); - if (aKeys.length !== bKeys.length) { - return false; - } - return aKeys.every( - (key) => - Object.prototype.hasOwnProperty.call(b, key) && Object.is(a[key], b[key]) - ); -} - class SettablePromise { readonly promise: Promise; private _resolve!: (value: T) => void; @@ -428,52 +415,77 @@ class SettablePromise { } } -type EffectCallback = ( - prevDeps: { [K in keyof Deps]: Deps[K] } | undefined -) => void | (() => void); -type EffectCallbackDeps = readonly unknown[]; +/** Returns the value passed on the previous render, or undefined on the first. */ +export function usePrevious(value: T): T | undefined { + const ref = React.useRef(undefined); + const prev = ref.current; + ref.current = value; + return prev; +} /** - * Like useEffect, but executes during the render phase instead of after commit. - * - * The effect runs synchronously during render when dependencies change. - * Cleanup functions are called before the next effect runs or when deps change. + * Creates a $state object that only contains initial values. * - * The effect receives the previous dependency values (or undefined on first run), - * allowing it to compare and decide whether to perform its logic. - * - * Note: Since this runs during render, the effect should not cause side effects - * that would be problematic if React discards the render (e.g., in concurrent mode). + * Initial values with dynamic expressions have initFunc, which is + * lazily-evaluated as a getter function. */ -export function useRenderEffect( - effect: EffectCallback, - deps: Deps -): void { - const ref = React.useRef<{ - deps: Deps | undefined; - cleanup: (() => void) | void; - }>({ deps: undefined, cleanup: undefined }); - - const depsChanged = - ref.current.deps === undefined || - deps.length !== ref.current.deps.length || - deps.some((dep, i) => !Object.is(dep, ref.current.deps![i])); - - if (depsChanged) { - if (ref.current.cleanup) { - ref.current.cleanup(); +export function createInitial$State( + $ctx: QueryExecutionContext["$ctx"], + $props: QueryExecutionContext["$props"], + $q: QueryExecutionContext["$q"], + stateSpecs: $StateSpec[] +): Record { + const root: Record = {}; + + for (const stateSpec of stateSpecs) { + if (stateSpec.path.includes("[]")) { + continue; } - const prevDeps = ref.current.deps; - ref.current.cleanup = effect(prevDeps); - ref.current.deps = deps; - } + // Parse path to find parent and leaf + const parts = stateSpec.path.split("."); + const parentPath = parts.slice(0, parts.length - 1); + const leaf = parts[parts.length - 1]; - React.useEffect(() => { - return () => { - if (ref.current.cleanup) { - ref.current.cleanup(); + // Find parent of leaf + let parent = root; + for (const part of parentPath) { + if (!(part in parent)) { + parent[part] = {}; } - }; - }, []); + parent = parent[part] as Record; + } + + // Set initial value or getter function for initial value + if (stateSpec.valueProp) { + parent[leaf] = $props[stateSpec.valueProp]; + } else if ("initVal" in stateSpec) { + parent[leaf] = stateSpec.initVal; + } else if (stateSpec.initFunc) { + const initFunc = stateSpec.initFunc; + // Cache successes, which should never change on the initial render. + let cached: { value: unknown } | undefined; + Object.defineProperty(parent, leaf, { + get: () => { + if (cached) { + return cached.value; + } + const value = initFunc({ + $ctx, + $props, + $q, + $state: root, + $refs: {}, + $queries: {}, + }); + cached = { value }; + return value; + }, + enumerable: true, + configurable: true, + }); + } + } + + return root; } diff --git a/packages/data-sources/src/serverQueries/e2e.test.tsx b/packages/data-sources/src/serverQueries/e2e.test.tsx index 170013321e..25e576ea56 100644 --- a/packages/data-sources/src/serverQueries/e2e.test.tsx +++ b/packages/data-sources/src/serverQueries/e2e.test.tsx @@ -6,40 +6,15 @@ import { render } from "@testing-library/react"; import * as React from "react"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { _testonly } from "./client"; -import { QueryComponentNode, executePlasmicQueries } from "./server"; +import { executePlasmicQueries } from "./server"; import { TestComponent, TestProvider, - create$Queries, - createQueries, + createTestTree, } from "./testonly/test-queries"; const { GLOBAL_CACHE } = _testonly; -function makeE2ERootNode( - fn: (...args: unknown[]) => Promise -): QueryComponentNode { - return { - type: "component", - queries: { - dep1: { id: "depFn", fn, args: () => ["dep1-param"] }, - dep2: { id: "depFn", fn, args: () => ["dep2-param"] }, - dep3: { - id: "depFn", - fn, - args: ({ $q }) => ["dep3-param", $q.dep1.data, $q.dep2.data], - }, - result: { - id: "resultFn", - fn, - args: ({ $q }) => ["result-param", $q.dep3.data], - }, - }, - propsContext: {}, - children: [], - }; -} - describe("executePlasmicQueries -> usePlasmicQueries (e2e)", () => { let unmount: () => void; let container: HTMLElement; @@ -54,36 +29,45 @@ describe("executePlasmicQueries -> usePlasmicQueries (e2e)", () => { }); it("server prefetched cache hydrates client-side queries without suspend", async () => { - // Server-side: execute queries with immediate-resolve functions const asyncFunc = async (...args: unknown[]) => `${args[0]}-server-done`; - const rootNode = makeE2ERootNode(asyncFunc); + const rootNode = createTestTree(); + // Override args to not depend on $q so the server can execute them directly. + rootNode.queries = { + dep1: { id: "depFn", fn: asyncFunc, args: () => ["dep1-param"] }, + dep2: { id: "depFn", fn: asyncFunc, args: () => ["dep2-param"] }, + dep3: { + id: "depFn", + fn: asyncFunc, + args: ({ $q }) => ["dep3-param", $q.dep1.data, $q.dep2.data], + }, + result: { + id: "resultFn", + fn: asyncFunc, + args: ({ $q }) => ["result-param", $q.dep3.data], + }, + }; + const { cache: serverQueryData } = await executePlasmicQueries(rootNode, { $props: {}, $ctx: {}, }); - // Verify server produced expected cache expect(Object.keys(serverQueryData)).toHaveLength(4); - // Client-side: render with prefetched cache - const renderResult = render( - , - { - wrapper: ({ children }) => ( - - {children} - - ), - } - ); + const renderResult = render(, { + wrapper: ({ children }) => ( + + {children} + + ), + }); container = renderResult.container; unmount = renderResult.unmount; - // Should not suspend (data is prefetched) + // Should not suspend — all data was prefetched expect(container.innerHTML).not.toContain("TestProvider SUSPENDED"); + // asyncFunc returns `${args[0]}-server-done`, so the result query returns "result-param-server-done" + expect(container.innerHTML).toContain("result-param-server-done"); }); }); diff --git a/packages/data-sources/src/serverQueries/makeQueryCacheKey.test.ts b/packages/data-sources/src/serverQueries/makeQueryCacheKey.test.ts index 0ed5532e50..a0a36fd6f1 100644 --- a/packages/data-sources/src/serverQueries/makeQueryCacheKey.test.ts +++ b/packages/data-sources/src/serverQueries/makeQueryCacheKey.test.ts @@ -1,18 +1,21 @@ import { describe, expect, it } from "vitest"; import { noopFn } from "../utils"; -import { makeQueryCacheKey } from "./makeQueryCacheKey"; +import { StatefulQueryResult } from "./common"; +import { makeQueryCacheKey, matchesQueryCacheKey } from "./makeQueryCacheKey"; describe("makeQueryCacheKey", () => { it("returns id and params in JSON array", () => { - expect(makeQueryCacheKey("foo", ["bar"])).toEqual(`foo:["bar"]`); - expect(makeQueryCacheKey("q", [])).toEqual(`q:[]`); + expect(makeQueryCacheKey("foo", ["bar"])).toEqual(`$q.$.foo.$.["bar"]`); + expect(makeQueryCacheKey("q", [])).toEqual(`$q.$.q.$.[]`); expect(makeQueryCacheKey("q", [null, false, 0, ""])).toEqual( - `q:[null,false,0,""]` + `$q.$.q.$.[null,false,0,""]` + ); + expect(makeQueryCacheKey("q", [1, "a", {}, []])).toEqual( + `$q.$.q.$.[1,"a",{},[]]` ); - expect(makeQueryCacheKey("q", [1, "a", {}, []])).toEqual(`q:[1,"a",{},[]]`); expect(makeQueryCacheKey("q", [{ a: { b: { c: [1, 2, 3] } } }])).toEqual( - `q:[{"a":{"b":{"c":[1,2,3]}}}]` + `$q.$.q.$.[{"a":{"b":{"c":[1,2,3]}}}]` ); }); it("sorts objects", () => { @@ -21,38 +24,78 @@ describe("makeQueryCacheKey", () => { { b: 2, a: 1, c: 3 }, [{ deep: { c: 3, b: 2, a: 1 } }], ]) - ).toEqual(`q:[{"a":1,"b":2,"c":3},[{"deep":{"a":1,"b":2,"c":3}}]]`); + ).toEqual(`$q.$.q.$.[{"a":1,"b":2,"c":3},[{"deep":{"a":1,"b":2,"c":3}}]]`); }); it("converts special values that JSON.stringify normally doesn't handle", () => { - expect(makeQueryCacheKey("q", [undefined])).toEqual(`q:["ρ:UNDEFINED"]`); - expect(makeQueryCacheKey("q", [() => {}])).toEqual(`q:["ρ:FUNCTION:"]`); - expect(makeQueryCacheKey("q", [noopFn])).toEqual(`q:["ρ:FUNCTION:noopFn"]`); + expect(makeQueryCacheKey("q", [undefined])).toEqual( + `$q.$.q.$.["ρ:UNDEFINED"]` + ); + expect(makeQueryCacheKey("q", [() => {}])).toEqual( + `$q.$.q.$.["ρ:FUNCTION:"]` + ); + expect(makeQueryCacheKey("q", [noopFn])).toEqual( + `$q.$.q.$.["ρ:FUNCTION:noopFn"]` + ); expect(makeQueryCacheKey("q", [Symbol()])).toEqual( - `q:["ρ:SYMBOL:undefined"]` + `$q.$.q.$.["ρ:SYMBOL:undefined"]` ); expect(makeQueryCacheKey("q", [Symbol("description")])).toEqual( - `q:["ρ:SYMBOL:description"]` + `$q.$.q.$.["ρ:SYMBOL:description"]` ); expect(makeQueryCacheKey("q", [BigInt("9007199254740992")])).toEqual( - `q:["9007199254740992"]` + `$q.$.q.$.["9007199254740992"]` ); }); it("replaces circular object reference to root", () => { const self: any = {}; self.self = self; - expect(makeQueryCacheKey("q", [self])).toEqual(`q:[{"self":"ρ:REF:$.0"}]`); + expect(makeQueryCacheKey("q", [self])).toEqual( + `$q.$.q.$.[{"self":"ρ:REF:$.0"}]` + ); }); it("replaces circular array reference to root", () => { const self: any[] = []; self.push(self); - expect(makeQueryCacheKey("q", [self])).toEqual(`q:[["ρ:REF:$.0"]]`); + expect(makeQueryCacheKey("q", [self])).toEqual(`$q.$.q.$.[["ρ:REF:$.0"]]`); }); it("replaces circular reference to inner objects", () => { const obj: any = { items: [{ id: 1 }, { id: 2 }] }; obj.first = obj.items[0]; obj.last = obj.items[1]; expect(makeQueryCacheKey("q", [obj, obj.items[1]])).toEqual( - `q:[{"first":{"id":1},"items":["ρ:REF:$.0.first",{"id":2}],"last":"ρ:REF:$.0.items.1"},"ρ:REF:$.0.items.1"]` + `$q.$.q.$.[{"first":{"id":1},"items":["ρ:REF:$.0.first",{"id":2}],"last":"ρ:REF:$.0.items.1"},"ρ:REF:$.0.items.1"]` ); }); + it("serializes StatefulQueryResult is each state", () => { + const initial = new StatefulQueryResult(); + + const done = new StatefulQueryResult(); + done.resolvePromise("key1", { b: 2, a: 1, c: 3 }); + + const errored = new StatefulQueryResult(); + errored.rejectPromise("key2", new Error("boom")); + + expect(makeQueryCacheKey("fn", [initial, done, errored])).toEqual( + `$q.$.fn.$.[{"key":null,"state":"initial"},{"data":{"a":1,"b":2,"c":3},"key":"key1","state":"done"},{"error":{},"key":"key2","state":"done"}]` + ); + }); +}); + +describe("matchesQueryCacheKey", () => { + it("matches server query cache keys by exact id", () => { + const key = makeQueryCacheKey("myns.myFunc", ["bar"]); + expect(matchesQueryCacheKey(key, "myns.myFunc")).toBe(true); + expect(matchesQueryCacheKey(key, "myns")).toBe(false); + expect(matchesQueryCacheKey(key, "myFunc")).toBe(false); + expect(matchesQueryCacheKey(key, "myns.myFunc2")).toBe(false); + }); + it("does not prefix-match unrelated keys", () => { + expect(matchesQueryCacheKey(`user:123`, "user")).toBe(false); + }); + it("matches data op cache keys", () => { + const dataOpKey = `plasmic.$.myCacheKey.$.someOpId.$.{"sourceId":"s"}`; + expect(matchesQueryCacheKey(dataOpKey, "myCacheKey")).toBe(true); + expect(matchesQueryCacheKey(dataOpKey, "someOpId")).toBe(true); + expect(matchesQueryCacheKey(dataOpKey, "otherOpId")).toBe(false); + }); }); diff --git a/packages/data-sources/src/serverQueries/makeQueryCacheKey.ts b/packages/data-sources/src/serverQueries/makeQueryCacheKey.ts index c40399333a..81085f5fe7 100644 --- a/packages/data-sources/src/serverQueries/makeQueryCacheKey.ts +++ b/packages/data-sources/src/serverQueries/makeQueryCacheKey.ts @@ -1,6 +1,22 @@ -/** @internal Make a cache key for a query */ +/** + * @internal Make a cache key for a query. + * + * Wrapped in `.$.` delimiters to match data op cache keys, so invalidation can match + * the id via `matchesQueryCacheKey` without colliding with other SWR cache keys. + */ export function makeQueryCacheKey(id: string, params: any[]) { - return `${id}:${safeStableStringify(params)}`; + return `$q.$.${id}.$.${safeStableStringify(params)}`; +} + +/** + * Returns whether `cacheKey` is invalidated by `invalidationKey`. Works for both server + * query cache keys (built by `makeQueryCacheKey`) and data op cache keys. + */ +export function matchesQueryCacheKey( + cacheKey: string, + invalidationKey: string +) { + return cacheKey.includes(`.$.${invalidationKey}.$.`); } const shortPlasmicPrefix = "ρ"; @@ -54,6 +70,10 @@ function sortObjectsDeep(value: any, visitedObjects: Map): any { return visitedValue; } + if (typeof value.toJSON === "function") { + return sortObjectsDeep(value.toJSON(), visitedObjects); + } + if (Array.isArray(value)) { // create new value early to avoid infinite recursion const newArr = [] as any; diff --git a/packages/data-sources/src/serverQueries/server.test.ts b/packages/data-sources/src/serverQueries/server.test.ts index 1d6ea26f55..cda47ede09 100644 --- a/packages/data-sources/src/serverQueries/server.test.ts +++ b/packages/data-sources/src/serverQueries/server.test.ts @@ -7,6 +7,81 @@ import { noopFn } from "../utils"; import { executePlasmicQueries } from "./server"; import { ContextFn, QueryComponentNode } from "./types"; +// ─── regression: synchronous fn return value ──────────────────────────────── +// +// Bug: executePlasmicQuery called $query.loadingPromise(key, query.fn(...args)) +// directly. If query.fn returns a plain value (not a Promise), loadingPromise +// received it as the `promise` argument and called `value.then(...)`, which +// throws TypeError for non-thenable values. The TypeError was swallowed by +// .catch(() => {}), leaving the query permanently in "loading" state and the +// cache empty. +// +// Fix: wrap query.fn(...args) in Promise.resolve() so that synchronous return +// values are promoted to resolved Promises before entering loadingPromise. + +describe("regression: synchronous fn return value", () => { + it("resolves a query whose fn returns synchronously (non-Promise)", async () => { + const syncFn = (name: unknown) => `hello-${name}`; + + const rootNode: QueryComponentNode = { + type: "component", + queries: { + greeting: { + id: "greetFn", + fn: syncFn as any, + args: () => ["world"], + }, + }, + propsContext: {}, + stateSpecs: [], + children: [], + }; + + const result = await executePlasmicQueries(rootNode, { + $props: {}, + $ctx: {}, + }); + + // Without Promise.resolve(): syncFn returns "hello-world", loadingPromise calls + // "hello-world".then(...) → TypeError, query stays in "loading", cache is {}. + expect(result.cache).toEqual({ '$q.$.greetFn.$.["world"]': "hello-world" }); + }); + + it("resolves a dependent query whose upstream fn returns synchronously", async () => { + const syncFirst = () => "first-value"; + const syncSecond = (dep: unknown) => `second-got-${dep}`; + + const rootNode: QueryComponentNode = { + type: "component", + queries: { + first: { + id: "firstFn", + fn: syncFirst as any, + args: () => [], + }, + second: { + id: "secondFn", + fn: syncSecond as any, + args: ({ $q }) => [$q.first.data], + }, + }, + propsContext: {}, + stateSpecs: [], + children: [], + }; + + const result = await executePlasmicQueries(rootNode, { + $props: {}, + $ctx: {}, + }); + + expect(result.cache).toEqual({ + "$q.$.firstFn.$.[]": "first-value", + '$q.$.secondFn.$.["first-value"]': "second-got-first-value", + }); + }); +}); + const asyncFunc = async (...args: unknown[]) => `${args[0]}-done`; function makeTestRootNodeWithFn( @@ -40,6 +115,7 @@ function makeTestRootNodeWithFn( queryOrder.map((key) => [key, allQueries[key]]) ), propsContext: {}, + stateSpecs: [], children: [], }; } @@ -60,11 +136,12 @@ describe("executePlasmicQueries (flat-style via tree)", () => { $ctx: {}, }); expect(result.cache).toEqual({ - 'depFn:["dep1-param"]': "dep1-param-done", - 'depFn:["dep2-param"]': "dep2-param-done", - 'depFn:["dep3-param","dep1-param-done","dep2-param-done"]': + '$q.$.depFn.$.["dep1-param"]': "dep1-param-done", + '$q.$.depFn.$.["dep2-param"]': "dep2-param-done", + '$q.$.depFn.$.["dep3-param","dep1-param-done","dep2-param-done"]': "dep3-param-done", - 'resultFn:["result-param","dep3-param-done"]': "result-param-done", + '$q.$.resultFn.$.["result-param","dep3-param-done"]': + "result-param-done", }); }); @@ -83,10 +160,10 @@ describe("executePlasmicQueries (flat-style via tree)", () => { $ctx: {}, }); expect(result.cache).toEqual({ - 'depFn:["dep1-param"]': null, - 'depFn:["dep2-param"]': false, - 'depFn:["dep3-param",null,false]': 0, - 'resultFn:["result-param",0]': "", + '$q.$.depFn.$.["dep1-param"]': null, + '$q.$.depFn.$.["dep2-param"]': false, + '$q.$.depFn.$.["dep3-param",null,false]': 0, + '$q.$.resultFn.$.["result-param",0]': "", }); }); @@ -123,6 +200,7 @@ describe("executePlasmicQueries (tree)", () => { }, }, propsContext: {}, + stateSpecs: [], children: [], }; @@ -147,6 +225,7 @@ describe("executePlasmicQueries (tree)", () => { item: { id: "getItem", fn: getItem, args: ({ $q }) => [$q.list.data] }, }, propsContext: {}, + stateSpecs: [], children: [], }; @@ -157,12 +236,12 @@ describe("executePlasmicQueries (tree)", () => { expect(Object.keys(cache)).toHaveLength(2); expect(queries.list).toEqual({ - key: "getList:[]", + key: "$q.$.getList.$.[]", data: ["a", "b", "c"], isLoading: false, }); expect(queries.item).toEqual({ - key: 'getItem:[["a","b","c"]]', + key: '$q.$.getItem.$.[["a","b","c"]]', data: { count: 3 }, isLoading: false, }); @@ -175,6 +254,7 @@ describe("executePlasmicQueries (tree)", () => { type: "component", queries: {}, propsContext: {}, + stateSpecs: [], children: [ { type: "visibility", @@ -190,6 +270,7 @@ describe("executePlasmicQueries (tree)", () => { }, }, propsContext: {}, + stateSpecs: [], children: [], }, ], @@ -215,6 +296,7 @@ describe("executePlasmicQueries (tree)", () => { }, }, propsContext: {}, + stateSpecs: [], children: [ { type: "visibility", @@ -230,6 +312,7 @@ describe("executePlasmicQueries (tree)", () => { }, }, propsContext: {}, + stateSpecs: [], children: [], }, ], @@ -254,6 +337,7 @@ describe("executePlasmicQueries (tree)", () => { type: "component", queries: {}, propsContext: {}, + stateSpecs: [], children: [ { type: "repeated", @@ -274,6 +358,7 @@ describe("executePlasmicQueries (tree)", () => { currentItem: ({ $scopedItemVars }) => $scopedItemVars.currentItem, }, + stateSpecs: [], children: [], }, ], @@ -309,6 +394,7 @@ describe("executePlasmicQueries (tree)", () => { films: { id: "getFilms", fn: getFilms, args: () => [] }, }, propsContext: {}, + stateSpecs: [], children: [ { type: "repeated", @@ -336,6 +422,7 @@ describe("executePlasmicQueries (tree)", () => { currentItem: ({ $scopedItemVars }) => $scopedItemVars.currentItem, }, + stateSpecs: [], children: [], }, ], @@ -352,7 +439,7 @@ describe("executePlasmicQueries (tree)", () => { expect(Object.keys(result.cache)).toHaveLength(5); const summaryEntries = Object.entries(result.cache).filter(([k]) => - k.startsWith("getSummary") + k.includes(".$.getSummary.$.") ); expect(summaryEntries).toHaveLength(2); expect(summaryEntries.map(([, v]) => v)).toEqual( @@ -371,6 +458,7 @@ describe("executePlasmicQueries (tree)", () => { type: "component", queries: {}, propsContext: {}, + stateSpecs: [], children: [ { type: "repeated", @@ -399,6 +487,7 @@ describe("executePlasmicQueries (tree)", () => { propsContext: { item: ({ $scopedItemVars }) => $scopedItemVars.item, }, + stateSpecs: [], children: [], }, ], @@ -429,6 +518,7 @@ describe("executePlasmicQueries (tree)", () => { type: "component", queries: {}, propsContext: {}, + stateSpecs: [], children: [ { type: "dataProvider", @@ -445,6 +535,7 @@ describe("executePlasmicQueries (tree)", () => { }, }, propsContext: {}, + stateSpecs: [], children: [], }, ], @@ -489,6 +580,7 @@ describe("executePlasmicQueries (tree)", () => { }, }, propsContext: {}, + stateSpecs: [], children: [ { type: "component", @@ -507,6 +599,7 @@ describe("executePlasmicQueries (tree)", () => { propsContext: { passedProp: ({ $props }) => $props.userId, }, + stateSpecs: [], children: [], }, ], @@ -521,11 +614,11 @@ describe("executePlasmicQueries (tree)", () => { expect(Object.keys(result.cache)).toHaveLength(4); const nestedEntry = Object.entries(result.cache).find(([k]) => - k.startsWith("fetchNested:") + k.includes(".$.fetchNested.$.") ); expect(nestedEntry?.[1]).toEqual({ nested: 999 }); const dependentEntry = Object.entries(result.cache).find(([k]) => - k.startsWith("fetchNestedDependent") + k.includes(".$.fetchNestedDependent.$.") ); expect(dependentEntry?.[1]).toEqual({ dependent: 999 }); }); @@ -541,7 +634,10 @@ describe("executePlasmicQueries (tree)", () => { nestedDependentFn = nestedDependentMock; await expect( - executePlasmicQueries(rootNode, { $props: { userId: 999 }, $ctx: {} }) + executePlasmicQueries(rootNode, { + $props: { userId: 999 }, + $ctx: {}, + }) ).rejects.toBe(nestedDependentError); expect(nestedDependentMock).toHaveBeenCalledTimes(1); @@ -549,17 +645,18 @@ describe("executePlasmicQueries (tree)", () => { }); }); - it("codeComponent with serverRenderingConfig=false skips all children", async () => { + it("codeComponent with subtreePrefetchingConfig=false skips all children", async () => { const fetchData = async () => ({ data: "should not run" }); const rootNode: QueryComponentNode = { type: "component", queries: {}, propsContext: {}, + stateSpecs: [], children: [ { type: "codeComponent", - serverRenderingConfig: false, + subtreePrefetchingConfig: false, propsContext: {}, children: [ { @@ -572,6 +669,7 @@ describe("executePlasmicQueries (tree)", () => { }, }, propsContext: {}, + stateSpecs: [], children: [], }, ], @@ -593,6 +691,7 @@ describe("executePlasmicQueries (tree)", () => { type: "component", queries: {}, propsContext: {}, + stateSpecs: [], children: [ { type: "codeComponent", @@ -612,6 +711,7 @@ describe("executePlasmicQueries (tree)", () => { propsContext: { propFromCode: ({ $props }) => $props.passedProp, }, + stateSpecs: [], children: [], }, ], @@ -638,6 +738,7 @@ describe("executePlasmicQueries (tree)", () => { }, }, propsContext: {}, + stateSpecs: [], children: [ { type: "component", @@ -649,6 +750,7 @@ describe("executePlasmicQueries (tree)", () => { }, }, propsContext: {}, + stateSpecs: [], children: [], }, ], @@ -668,3 +770,226 @@ describe("executePlasmicQueries (tree)", () => { expect(result.queries["childQuery"]).toBeUndefined(); }); }); + +describe("executePlasmicQueries (stateSpecs)", () => { + it("resolves initVal, initFunc using $props/$ctx/$q, nested paths, sibling refs, and state→query chains", async () => { + // Covers in one scenario: + // - initVal driving a query arg + // - initFunc reading $props and $ctx + // - nested state paths + // - sibling state reference + // - state initFunc reading $q (blocked until query resolves) + // - state → query: another query's args depend on such a state + // - per-component stateSpecs on a child component, isolated from root + const listIds = async () => ["a", "b", "c"]; + const fetchTenant = async (t: unknown) => ({ t }); + const fetchRange = async (lo: unknown, hi: unknown) => ({ lo, hi }); + const fetchItems = async (ids: unknown) => ({ + count: (ids as string[]).length, + ids, + }); + const fetchCount = async (n: unknown) => ({ n }); + const fetchChildLabel = async (label: unknown) => ({ label }); + const fetchChildSize = async (n: unknown) => ({ size: n }); + const childList = async () => ["x", "y", "z"]; + + const rootNode: QueryComponentNode = { + type: "component", + queries: { + // Resolves immediately (no deps) — unblocks $state.selectedIds. + listIds: { id: "listIds", fn: listIds, args: () => [] }, + // Uses initialized state that references $props/$ctx. + tenantQuery: { + id: "fetchTenant", + fn: fetchTenant, + args: ({ $state }) => [$state.tenant], + }, + // Uses nested state: one initVal, one sibling-dependent initFunc. + rangeQuery: { + id: "fetchRange", + fn: fetchRange, + args: ({ $state }) => [ + ($state.filters as any).minPrice, + ($state.filters as any).maxPrice, + ], + }, + // Uses state whose initFunc reads $q.listIds (state → query chain). + fetchItems: { + id: "fetchItems", + fn: fetchItems, + args: ({ $state }) => [$state.selectedIds], + }, + // Uses state that references another query-dependent state + fetchCount: { + id: "fetchCount", + fn: fetchCount, + args: ({ $state }) => [$state.selectedCount], + }, + }, + propsContext: {}, + stateSpecs: [ + { + path: "tenant", + type: "private", + initFunc: ({ $props, $ctx }) => `${$ctx.region}/${$props.userId}`, + }, + { path: "filters.minPrice", type: "private", initVal: 10 }, + { + path: "filters.maxPrice", + type: "private", + initFunc: ({ $state }) => + (($state as any).filters.minPrice as number) * 10, + }, + { + path: "selectedIds", + type: "private", + initFunc: ({ $q }) => $q.listIds.data as string[], + }, + { + path: "selectedCount", + type: "private", + initFunc: ({ $state }) => + (($state as any).selectedIds as string[]).length, + }, + ], + children: [ + // Child component with its own stateSpecs. Its $state is isolated from parent + // (so $state.tenant is not visible here) and resolves against the child $props/$q. + { + type: "component", + queries: { + // Resolves immediately — unblocks the child's derived state. + childList: { id: "childList", fn: childList, args: () => [] }, + // Child state initFunc reads child's $props.passedUser. + childLabel: { + id: "fetchChildLabel", + fn: fetchChildLabel, + args: ({ $state }) => [$state.label], + }, + // Child state → child $q chain. + childSize: { + id: "fetchChildSize", + fn: fetchChildSize, + args: ({ $state }) => [$state.size], + }, + }, + propsContext: { + passedUser: ({ $props }) => $props.userId, + }, + stateSpecs: [ + { + path: "label", + type: "private", + initFunc: ({ $props }) => `child-of-${$props.passedUser}`, + }, + { + path: "size", + type: "private", + initFunc: ({ $q }) => ($q.childList.data as string[]).length, + }, + ], + children: [], + }, + ], + }; + + const result = await executePlasmicQueries(rootNode, { + $props: { userId: 7 }, + $ctx: { region: "us-east" }, + }); + + expect(result.cache).toEqual({ + "$q.$.listIds.$.[]": ["a", "b", "c"], + '$q.$.fetchTenant.$.["us-east/7"]': { t: "us-east/7" }, + "$q.$.fetchRange.$.[10,100]": { lo: 10, hi: 100 }, + '$q.$.fetchItems.$.[["a","b","c"]]': { count: 3, ids: ["a", "b", "c"] }, + "$q.$.fetchCount.$.[3]": { n: 3 }, + "$q.$.childList.$.[]": ["x", "y", "z"], + '$q.$.fetchChildLabel.$.["child-of-7"]': { label: "child-of-7" }, + "$q.$.fetchChildSize.$.[3]": { size: 3 }, + }); + }); + + it("propagates rejection from a query that a state initFunc depends on", async () => { + const failingListIds = async () => { + throw new Error("listIds-fail"); + }; + const fetchItems = vi.fn(async (ids: unknown) => ({ ids })); + + const rootNode: QueryComponentNode = { + type: "component", + queries: { + listIds: { id: "listIds", fn: failingListIds, args: () => [] }, + fetchItems: { + id: "fetchItems", + fn: fetchItems, + args: ({ $state }) => [$state.selectedIds], + }, + }, + propsContext: {}, + stateSpecs: [ + { + path: "selectedIds", + type: "private", + initFunc: ({ $q }) => $q.listIds.data as string[], + }, + ], + children: [], + }; + + const queryData = executePlasmicQueries(rootNode, { + $props: {}, + $ctx: {}, + }); + queryData.catch(noopFn); + await expect(queryData).rejects.toThrow(); + + // fetchItems never runs since params depend on state backed by a failed query. + expect(fetchItems).not.toHaveBeenCalled(); + }); + + it("does NOT expose root $state to child component queries", async () => { + const rootRead = vi.fn(async (val: unknown) => ({ read: val })); + const childRead = vi.fn(async (val: unknown) => ({ read: val })); + + const rootNode: QueryComponentNode = { + type: "component", + queries: { + rootQuery: { + id: "rootRead", + fn: rootRead, + args: ({ $state }) => [$state.value], + }, + }, + propsContext: {}, + stateSpecs: [{ path: "value", type: "private", initVal: "from-root" }], + children: [ + { + type: "component", + queries: { + childQuery: { + id: "childRead", + fn: childRead, + args: ({ $state }) => [$state.value], + }, + }, + propsContext: {}, + stateSpecs: [], + children: [], + }, + ], + }; + + const result = await executePlasmicQueries(rootNode, { + $props: {}, + $ctx: {}, + }); + + expect(rootRead).toHaveBeenCalledWith("from-root"); + expect(childRead).toHaveBeenCalledWith(undefined); + expect(result.cache).toEqual({ + '$q.$.rootRead.$.["from-root"]': { read: "from-root" }, + '$q.$.childRead.$.["ρ:UNDEFINED"]': { read: undefined }, + }); + }); +}); diff --git a/packages/data-sources/src/serverQueries/server.ts b/packages/data-sources/src/serverQueries/server.ts index c71297d3ee..550cc20cb6 100644 --- a/packages/data-sources/src/serverQueries/server.ts +++ b/packages/data-sources/src/serverQueries/server.ts @@ -1,10 +1,10 @@ import { assertUnexpectedNodeType, + createInitial$State, resolveParams, safeExecResult, StatefulQueryResult, } from "./common"; -import { makeQueryCacheKey } from "./makeQueryCacheKey"; import { ExecutePlasmicQueriesResult, PlasmicQuery, @@ -13,15 +13,32 @@ import { QueryComponentNode, QueryDataProviderNode, QueryExecutionContext, - QueryExecutionInitialContext, QueryNode, QueryRepeatedNode, QueryVisibilityNode, } from "./types"; +/** + * Server-side QueryExecutionContext has an extra $scopedItemVars + * for nested component/element context. + */ +type ServerQueryExecutionContext = QueryExecutionContext & { + $scopedItemVars: Record; +}; + +/** + * Initial context just before execution. + * @internal + */ +type InitialQueryExecutionContext = Pick< + QueryExecutionContext, + "$ctx" | "$props" +>; + interface DiscoveredQuery { $query: StatefulQueryResult; query: PlasmicQuery; + ctx: ServerQueryExecutionContext; } const ROOT_COMPONENT_KEY_PATH = "root"; @@ -32,14 +49,16 @@ function appendKeyPath(currentKeyPath: string, currentInput: string): string { function executeQueryTree( rootNode: QueryComponentNode, - options: QueryExecutionInitialContext, + env: InitialQueryExecutionContext, queriesByComponent: Map> ): DiscoveredQuery[] { - const { $props, $ctx } = options; + const { $props, $ctx } = env; - const initialContext: QueryExecutionContext = { + const initialContext: ServerQueryExecutionContext = { $props, $ctx, + // Placeholder; executeComponentNode replaces this with an initial + // $state derived from the component's own stateSpecs. $state: {}, $q: {} as Record, $scopedItemVars: {}, @@ -54,7 +73,7 @@ function executeQueryTree( } interface ExecuteNodeParams { - context: QueryExecutionContext; + context: ServerQueryExecutionContext; parentKeyPath: string; childIndex: number; queriesByComponent: Map>; @@ -126,10 +145,22 @@ function executeComponentNode( queriesByComponent.set(componentKeyPath, componentQueries); } - const componentContext: QueryExecutionContext = { + // Each component owns its own $state derived from node.stateSpecs. Parent-scope state + // does not leak into this component's $state. + const $state: ServerQueryExecutionContext["$state"] = + node.stateSpecs.length > 0 + ? createInitial$State( + parentContext.$ctx, + evaluatedProps, + componentQueries as Record, + node.stateSpecs + ) + : {}; + + const componentContext: ServerQueryExecutionContext = { $props: evaluatedProps, $ctx: parentContext.$ctx, - $state: parentContext.$state, + $state, $q: componentQueries, $scopedItemVars: parentContext.$scopedItemVars, }; @@ -144,16 +175,7 @@ function executeComponentNode( const $query = new StatefulQueryResult(); componentQueries[queryName] = $query; - const capturedContext = componentContext; - const capturedArgsFn = query.args; - - const plasmicQuery: PlasmicQuery = { - id: query.id, - fn: query.fn, - execParams: () => capturedArgsFn(capturedContext), - }; - - discovered.push({ $query, query: plasmicQuery }); + discovered.push({ $query, query, ctx: componentContext }); } node.children.forEach((child, idx) => { @@ -174,7 +196,7 @@ function executeCodeComponentNode( node: QueryCodeComponentNode, params: ExecuteNodeParams ): DiscoveredQuery[] { - if (node.serverRenderingConfig === false) { + if (node.subtreePrefetchingConfig === false) { return []; } @@ -191,7 +213,7 @@ function executeCodeComponentNode( } } - const childContext: QueryExecutionContext = { + const childContext: ServerQueryExecutionContext = { $props: evaluatedProps, $ctx: context.$ctx, $state: context.$state, @@ -221,7 +243,7 @@ function executeDataProviderNode( return []; } - const childContext: QueryExecutionContext = { + const childContext: ServerQueryExecutionContext = { $props: context.$props, $ctx: { ...context.$ctx, @@ -275,7 +297,7 @@ function executeRepeatedNode( } return collectionResult.data.flatMap((item, index) => { - const itemContext: QueryExecutionContext = { + const itemContext: ServerQueryExecutionContext = { $props: context.$props, $ctx: context.$ctx, $state: context.$state, @@ -310,7 +332,7 @@ function executeRepeatedNode( */ export async function executePlasmicQueries( rootNode: QueryComponentNode, - options: QueryExecutionInitialContext + env: InitialQueryExecutionContext ): Promise { const queriesByComponent = new Map< string, @@ -320,7 +342,7 @@ export async function executePlasmicQueries( const discoveredQueries: DiscoveredQuery[] = []; while (true) { - const newQueries = executeQueryTree(rootNode, options, queriesByComponent); + const newQueries = executeQueryTree(rootNode, env, queriesByComponent); if (newQueries.length === 0) { break; @@ -329,7 +351,7 @@ export async function executePlasmicQueries( await Promise.all( newQueries.map((d) => - executePlasmicQuery(d.$query, d.query).catch(() => { + executePlasmicQuery(d.$query, d.query, d.ctx).catch(() => { // Errors are stored in the StatefulQueryResult }) ) @@ -366,16 +388,20 @@ export async function executePlasmicQueries( return { cache, queries }; } -export async function executePlasmicQuery( +export async function executePlasmicQuery< + T, + F extends (...args: unknown[]) => Promise +>( $query: StatefulQueryResult, - query: PlasmicQuery<(...args: unknown[]) => Promise> + query: PlasmicQuery, + ctx: ServerQueryExecutionContext ): Promise & { current: { state: "done" } }> { if ($query.current.state === "loading" || $query.current.state === "done") { return $query.getDoneResult(); } do { - const paramsResult = resolveParams(query.execParams); + const paramsResult = resolveParams(query.id, () => query.args(ctx)); switch (paramsResult.status) { case "blocked": { try { @@ -387,13 +413,9 @@ export async function executePlasmicQuery( continue; } case "ready": { - const cacheKey = makeQueryCacheKey( - query.id, - paramsResult.resolvedParams - ); $query.loadingPromise( - cacheKey, - query.fn(...paramsResult.resolvedParams) + paramsResult.cacheKey, + Promise.resolve(query.fn(...paramsResult.resolvedParams)) ); return $query.getDoneResult(); } @@ -404,3 +426,10 @@ export async function executePlasmicQuery( } } while (true); } + +/** @deprecated no-op function for compatibility only */ +export async function executeServerQuery any>( + _query?: any +): Promise<{ data: ReturnType; isLoading: boolean }> { + return { data: undefined as any, isLoading: false }; +} diff --git a/packages/data-sources/src/serverQueries/testonly/test-common.ts b/packages/data-sources/src/serverQueries/testonly/test-common.ts index 5125661713..f9ab3f7719 100644 --- a/packages/data-sources/src/serverQueries/testonly/test-common.ts +++ b/packages/data-sources/src/serverQueries/testonly/test-common.ts @@ -13,13 +13,33 @@ export const asyncFunc = (...args: unknown[]) => { }); }; +function shallowEqual(a: unknown, b: unknown): boolean { + if (a === b) { + return true; + } + if (Array.isArray(a) && Array.isArray(b)) { + return a.length === b.length && a.every((v, i) => v === b[i]); + } + if (a && b && typeof a === "object" && typeof b === "object") { + const aKeys = Object.keys(a); + const bKeys = Object.keys(b); + return ( + aKeys.length === bKeys.length && + aKeys.every((k) => (a as any)[k] === (b as any)[k]) + ); + } + return false; +} + /** - * Find the first call whose arguments match the given args. + * Find the first call whose arguments match the given args using shallow equality. * For example, [1] matches [1] or [1, 2] but not [2, 1]. + * Arrays and objects are compared shallowly, so findAsyncFuncCall(["a", "b"]) + * matches a call made with asyncFunc(["a", "b"]). */ export function findAsyncFuncCall(...args: unknown[]) { const found = asyncFuncCalls.find((call) => - args.every((arg, i) => call.args[i] === arg) + args.every((arg, i) => shallowEqual(call.args[i], arg)) ); if (!found) { throw new Error( diff --git a/packages/data-sources/src/serverQueries/testonly/test-queries.tsx b/packages/data-sources/src/serverQueries/testonly/test-queries.tsx index b815b510ba..0621493980 100644 --- a/packages/data-sources/src/serverQueries/testonly/test-queries.tsx +++ b/packages/data-sources/src/serverQueries/testonly/test-queries.tsx @@ -60,6 +60,7 @@ export function createTestTree(): QueryComponentNode { }, }, propsContext: {}, + stateSpecs: [], children: [], }; } @@ -71,7 +72,11 @@ export function TestComponent({ tree: QueryComponentNode; $props?: TestQueriesProps; }) { - const $q = usePlasmicQueries(tree, $props ?? {}, {}); + const $q = usePlasmicQueries(tree, { + $ctx: {}, + $props: $props ?? {}, + $state: null, + }); return JSON.stringify($q.result.data); } diff --git a/packages/data-sources/src/serverQueries/types.ts b/packages/data-sources/src/serverQueries/types.ts index db0bdce578..f0ab53eb7b 100644 --- a/packages/data-sources/src/serverQueries/types.ts +++ b/packages/data-sources/src/serverQueries/types.ts @@ -1,11 +1,11 @@ /** @internal */ export interface PlasmicQuery< - F extends (...args: unknown[]) => Promise = ( - ...args: unknown[] + F extends (...args: any[]) => Promise = ( + ...args: any[] ) => Promise > { fn: F; - execParams: () => Parameters; + args: ContextFn>; id: string; } @@ -24,13 +24,16 @@ export interface PlasmicQueryResult { isLoading: boolean; } -export interface QueryExecutionContext { - $props: Record; +/** + * Context during execution. + * @internal + */ +export type QueryExecutionContext = { $ctx: Record; + $props: Record; $state: Record; $q: Record; - $scopedItemVars: Record; -} +}; /** * A function that takes the execution context and returns a value. @@ -38,30 +41,25 @@ export interface QueryExecutionContext { */ export type ContextFn = (ctx: QueryExecutionContext) => R; -export interface SerializedServerQuery { - // cache key identifier - id: string; - // direct function reference (closed over from module scope) - fn: (...args: unknown[]) => Promise; - // function returning ordered args evaluated against runtime context - args: ContextFn; -} - /** @internal */ export interface QueryComponentNode { type: "component"; - queries: Record; + queries: Record; propsContext: Record>; + /** + * Lazily initializes $state proxy for this component. + */ + stateSpecs: $StateSpec[]; children: QueryNode[]; } -export type SerializedServerRenderingConfig = boolean; +export type SerializedSubtreePrefetchingConfig = boolean; /** @internal */ export interface QueryCodeComponentNode { type: "codeComponent"; propsContext: Record>; - serverRenderingConfig?: SerializedServerRenderingConfig; + subtreePrefetchingConfig?: SerializedSubtreePrefetchingConfig; children: QueryNode[]; } @@ -97,15 +95,26 @@ export type QueryNode = | QueryDataProviderNode | QueryVisibilityNode; -/** @internal */ -export type QueryExecutionInitialContext = Pick< - QueryExecutionContext, - "$props" | "$ctx" ->; - export interface ExecutePlasmicQueriesResult { /** All queries, including nested, by query cache key hash. Passed to PlasmicRootProvider */ cache: Record; /** Root component query results keyed by query name. */ queries: Record; } + +// TODO: Move $StateSpec to common package of data-sources and react-web? + +export interface $StateSpec { + path: string; + initFunc?: ( + env: QueryExecutionContext & { + /** @deprecated This field is here to conform to react-web's $StateSpec. */ + $queries: Record; + /** @deprecated This field is here to conform to react-web's $StateSpec. */ + $refs: Record; + } + ) => T; + initVal?: T; + type: "private" | "readonly" | "writable"; + valueProp?: string; +} diff --git a/packages/host/package.json b/packages/host/package.json index ded3d85149..444e55c48d 100644 --- a/packages/host/package.json +++ b/packages/host/package.json @@ -1,7 +1,9 @@ { "name": "@plasmicapp/host", - "version": "2.0.1", + "version": "2.0.14", "description": "plasmic library for app hosting", + "homepage": "https://www.plasmic.app", + "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/plasmicapp/plasmic.git", @@ -41,31 +43,35 @@ ], "scripts": { "build": "./update_version.sh && rollup -c", - "test": "tstyche --config ../../tstyche.config.json", + "test": "vitest run --silent=passed-only && npm run test:types", + "test:types": "tstyche --config ../../tstyche.config.json", "lint": "eslint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "dependencies": { - "@plasmicapp/query": "0.1.84", + "@plasmicapp/query": "0.1.87", "csstype": "^3.1.2", "window-or-global": "^1.0.1" }, "devDependencies": { "@rollup/plugin-commonjs": "^25.0.2", - "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^15.1.0", - "@types/classnames": "^2.3.0", - "@types/node": "^20.3.3", + "@testing-library/react": "^14.0.0", + "@types/classnames": "^2.3.4", + "@types/node": "^20.19.43", "@types/react": "^18", "@types/react-dom": "^18", "react": "18.3.1", "react-dom": "18.3.1", "rollup": "^3.26.1", - "rollup-plugin-banner2": "^1.2.2", + "rollup-plugin-banner2": "^1.3.1", "rollup-plugin-dts": "^5.3.0", - "rollup-plugin-typescript2": "^0.36.0" + "rollup-plugin-typescript2": "^0.36.0", + "vite": "8.1.5", + "vitest": "4.1.10" }, "peerDependencies": { "react": ">=18.0.0", diff --git a/packages/host/src/__tests__/custom-functions.spec-d.ts b/packages/host/src/__tests__/custom-functions.spec-d.ts index 77bc4904db..7db4ebe5a5 100644 --- a/packages/host/src/__tests__/custom-functions.spec-d.ts +++ b/packages/host/src/__tests__/custom-functions.spec-d.ts @@ -7,6 +7,7 @@ import type { ChoiceType, CustomFunctionMeta, FunctionControlContext, + FunctionControlExtras, GenericType, MultiChoiceType, NumberType, @@ -385,8 +386,8 @@ describe("custom-function param type regression tests", () => { it("GraphQL ContextDependentConfig receives function context as 3-tuple", () => { // Test that GraphQL context dependency functions for custom functions receive: - // [Partial, Data, unknown] (3-element tuple) - // Unlike component contexts which have typed data and ControlExtras + // [Partial, Data, FunctionControlExtras] (3-element tuple) + // Unlike component contexts which have typed data and component ControlExtras type FunctionParams = [string, boolean, number?]; @@ -394,11 +395,11 @@ describe("custom-function param type regression tests", () => { const testContext: FunctionControlContext = [ ["test", true, 5], { someData: "value" }, - undefined, + { path: [], mode: "mutation" }, ]; expect(testContext).type.toBe>(); expect(testContext).type.toBe< - [PartialParams, any, unknown] + [PartialParams, any, FunctionControlExtras] >(); const [params, _d, _e] = testContext; @@ -725,6 +726,30 @@ describe("custom-function param defaultValue support", () => { expect>().type.toBeAssignableWith(meta); }); + it("CustomFunctionMeta with context-dependent defaultValue on params", () => { + function fetchData(opts: { method?: "GET" | "POST" }): Promise { + return Promise.resolve(opts); + } + type FetchData = CustomFunctionMeta; + + const meta: FetchData = { + name: "fetchData", + importPath: "./fetchData", + params: [ + { + name: "opts", + type: "object", + defaultValue: (_params, _data, extras) => + extras.mode === "mutation" ? { method: "POST" } : undefined, + fields: { + method: { type: "choice", options: ["GET", "POST"] }, + }, + }, + ], + }; + expect().type.toBeAssignableWith(meta); + }); + it("CustomFunctionMeta with mixed defaultValues", () => { function calculate( base: number, diff --git a/packages/host/src/canvas-host.tsx b/packages/host/src/canvas-host.tsx index 4ef23b6231..62cde76409 100644 --- a/packages/host/src/canvas-host.tsx +++ b/packages/host/src/canvas-host.tsx @@ -1,6 +1,5 @@ import * as React from "react"; import * as ReactDOM from "react-dom"; -import { ensure } from "./lang-utils"; import useForceUpdate from "./useForceUpdate"; declare global { @@ -29,12 +28,8 @@ function getHashParams() { return new URLSearchParams(location.hash.replace(/^#/, "?")); } -function getPlasmicOrigin() { - const params = getHashParams(); - return ensure( - params.get("origin"), - "Missing information from Plasmic window." - ); +function getPlasmicStaticBaseUrl() { + return getHashParams().get("staticBaseUrl") ?? getHashParams().get("origin"); } function getStudioHash() { @@ -48,14 +43,27 @@ function getStudioHash() { function renderStudioIntoIframe() { const script = document.createElement("script"); - const plasmicOrigin = getPlasmicOrigin(); + const staticBaseUrl = getPlasmicStaticBaseUrl(); const hash = getStudioHash(); - script.src = `${plasmicOrigin}/static/js/studio${ - hash ? `.${hash}.js` : `.js` - }`; + script.src = `${staticBaseUrl}/js/studio${hash ? `.${hash}.js` : `.js`}`; document.body.appendChild(script); } +const HIDE_HOST_OVERLAYS_STYLE_ID = "plasmic-hide-host-overlays"; + +/** + * Hide the NextJS dev overlay, rendered as a , when running in an iframe + */ +function hideHostOverlaysInStudioIframe() { + if (document.getElementById(HIDE_HOST_OVERLAYS_STYLE_ID)) { + return; + } + const style = document.createElement("style"); + style.id = HIDE_HOST_OVERLAYS_STYLE_ID; + style.textContent = `nextjs-portal { display: none !important; }`; + document.head.appendChild(style); +} + let renderCount = 0; export function setPlasmicRootNode(node: React.ReactElement | null) { // Keep track of renderCount, which we use as key to ErrorBoundary, so @@ -104,6 +112,12 @@ function _PlasmicCanvasHost() { } }; }, [forceUpdate]); + React.useEffect(() => { + // Hide framework dev overlays when running in Studio + if (isFrameAttached && window.parent !== window) { + hideHostOverlaysInStudioIframe(); + } + }, [isFrameAttached]); React.useEffect(() => { if (shouldRenderStudio && isFrameAttached && window.parent !== window) { renderStudioIntoIframe(); @@ -113,7 +127,7 @@ function _PlasmicCanvasHost() { if (!shouldRenderStudio && !document.querySelector("#getlibs") && isLive) { const scriptElt = document.createElement("script"); scriptElt.id = "getlibs"; - scriptElt.src = getPlasmicOrigin() + "/static/js/getlibs.js"; + scriptElt.src = `${getPlasmicStaticBaseUrl()}/js/getlibs.js`; scriptElt.async = false; scriptElt.onload = () => { (window as any).__GetlibsReadyResolver?.(); @@ -180,39 +194,22 @@ function _PlasmicCanvasHost() { interface PlasmicCanvasHostProps { /** - * Webpack hmr uses EventSource to listen to hot reloads, but that - * resultsin a persistent connection from each window. In Plasmic - * Studio, if a project is configured to use app-hosting with a - * nextjs or gatsby server running in dev mode, each artboard will - * be holding a persistent connection to the dev server. - * Because browsers have a limit to how many connections can - * be held at a time by domain, this means after X artboards, new - * artboards will freeze and not load. - * - * By default, will globally mutate - * window.EventSource to avoid using EventSource for HMR, which you - * typically don't need for your custom host page. If you do still - * want to retain HRM, then youc an pass enableWebpackHmr={true}. + * @deprecated HMR handling is now managed by Plasmic Studio. This prop is + * retained for backward compatibility and has no effect. */ enableWebpackHmr?: boolean; } export const PlasmicCanvasHost: React.FunctionComponent< PlasmicCanvasHostProps -> = (props) => { - const { enableWebpackHmr } = props; +> = () => { const [node, setNode] = React.useState | null>( null ); React.useEffect(() => { setNode(<_PlasmicCanvasHost />); }, []); - return ( - <> - {!enableWebpackHmr && } - {node} - - ); + return <>{node}; }; type RenderErrorListener = (err: Error) => void; @@ -261,34 +258,6 @@ class ErrorBoundary extends React.Component< } } -function DisableWebpackHmr() { - if (process.env.NODE_ENV === "production") { - return null; - } - return ( - - ); -} - function deriveCanvasContextValue(): PlasmicCanvasContextValue | false { const hash = window.location.hash; if (hash && hash.length > 0) { diff --git a/packages/host/src/data.test.tsx b/packages/host/src/data.test.tsx new file mode 100644 index 0000000000..05ea6a4154 --- /dev/null +++ b/packages/host/src/data.test.tsx @@ -0,0 +1,155 @@ +// @vitest-environment jsdom + +import { act, cleanup, render, screen } from "@testing-library/react"; +import React from "react"; +import { renderToString } from "react-dom/server.node"; +import { afterEach, beforeEach, describe, expect, it } from "vitest"; +import { DataCtxReader, PageParamsProvider } from "./data"; + +function formatQueryValue(value: string | string[]) { + return Array.isArray(value) ? value.join(",") : value; +} + +function QueryReader({ name }: { name: string }) { + return ( + + {($ctx) => ( +
+ {formatQueryValue($ctx?.query?.[name] ?? "")} +
+ )} +
+ ); +} + +function queryText(name: string) { + return screen.getByTestId(name).textContent; +} + +describe("PageParamsProvider query params", () => { + beforeEach(() => { + window.history.replaceState({}, "", "/"); + }); + + afterEach(cleanup); + + it("provides query params from props during server rendering", () => { + const html = renderToString( + + + + + ); + + expect(html).toContain("from-props"); + expect(html).toContain("a,b"); + }); + + it("uses prop query params verbatim by default, ignoring the browser URL", () => { + window.history.replaceState( + {}, + "", + "/page?test=from-browser&onlyBrowser=x" + ); + + render( + + + + + + ); + + expect(queryText("test")).toBe("from-props"); + expect(queryText("propOnly")).toBe("kept"); + expect(queryText("onlyBrowser")).toBe(""); + }); + + it("does not re-render on history changes when trackQueryParams is off", () => { + window.history.replaceState({}, "", "/page?test=initial"); + + render( + + + + ); + + expect(queryText("test")).toBe("from-props"); + + act(() => { + window.history.pushState({}, "", "/page?test=changed"); + }); + expect(queryText("test")).toBe("from-props"); + }); + + it("reads query params from the current browser location when trackQueryParams is on", () => { + window.history.replaceState({}, "", "/page?test=Hello&multi=1&multi=2"); + + render( + + + + + ); + + expect(queryText("test")).toBe("Hello"); + expect(queryText("multi")).toBe("1,2"); + }); + + it("uses empty browser query params over prop query params during client rendering when trackQueryParams is on", () => { + render( + + + + + ); + + expect(queryText("test")).toBe(""); + expect(queryText("multi")).toBe(""); + }); + + it("uses browser query params as the source of truth when trackQueryParams is on, dropping prop-only keys", () => { + window.history.replaceState({}, "", "/page?test=from-browser"); + + render( + + + + + ); + + expect(queryText("test")).toBe("from-browser"); + expect(queryText("propOnly")).toBe(""); + }); + + it("updates when browser history changes query params and trackQueryParams is on", () => { + window.history.replaceState({}, "", "/page?test=initial"); + + render( + + + + + ); + + expect(queryText("test")).toBe("initial"); + + act(() => { + window.history.pushState({}, "", "/page?test=Hello&multi=1&multi=2"); + }); + expect(queryText("test")).toBe("Hello"); + expect(queryText("multi")).toBe("1,2"); + + act(() => { + window.history.replaceState({}, "", "/page?test=Goodbye"); + }); + expect(queryText("test")).toBe("Goodbye"); + expect(queryText("multi")).toBe(""); + }); +}); diff --git a/packages/host/src/data.tsx b/packages/host/src/data.tsx index 978b54d7ad..00b79c6992 100644 --- a/packages/host/src/data.tsx +++ b/packages/host/src/data.tsx @@ -6,6 +6,7 @@ import React, { useMemo, } from "react"; import { tuple } from "./common"; +import { useBrowserQueryParams } from "./history"; export type DataDict = Record; @@ -176,6 +177,12 @@ export interface PageParamsProviderProps { * Page query params (e.g. { q: "search term" }) */ query?: Record; + + /** + * Defaults to false. If true, query params derived from `location.search` sync + * with client-side history changes. `query` prop is used as a fallback during SSR. + */ + trackQueryParams?: boolean; } export function PageParamsProvider({ @@ -183,9 +190,12 @@ export function PageParamsProvider({ route, params = {}, query = {}, + trackQueryParams = false, }: PageParamsProviderProps) { params = fixCatchallParams(params); const $ctx = useDataEnv() || {}; + const browserQuery = useBrowserQueryParams(trackQueryParams); + const effectiveQuery = trackQueryParams ? browserQuery ?? query : query; const path = route ? mkPathFromRouteAndParams(route, params) : undefined; return ( {children} diff --git a/packages/host/src/exports.ts b/packages/host/src/exports.ts index 73dbe7989c..c17dd1e486 100644 --- a/packages/host/src/exports.ts +++ b/packages/host/src/exports.ts @@ -39,6 +39,7 @@ export { CustomFunctionRegistration, FunctionContextConfig, FunctionControlContext, + FunctionControlExtras, ParamType, default as registerFunction, } from "./registerFunction"; diff --git a/packages/host/src/history.ts b/packages/host/src/history.ts new file mode 100644 index 0000000000..485911b18f --- /dev/null +++ b/packages/host/src/history.ts @@ -0,0 +1,72 @@ +import { useMemo, useSyncExternalStore } from "react"; + +function readBrowserQueryParams(search: string) { + const searchParams = new URLSearchParams(search); + const query: Record = {}; + searchParams.forEach((value, key) => { + const existing = query[key]; + if (existing === undefined) { + query[key] = value; + } else if (Array.isArray(existing)) { + existing.push(value); + } else { + query[key] = [existing, value]; + } + }); + return query; +} + +const LOCATION_CHANGE_EVENT = "plasmic:locationchange"; +const HISTORY_PATCHED_KEY = "__plasmicHistoryPatched"; + +function ensureHistoryChangeEvents() { + const history = window.history as History & { + [HISTORY_PATCHED_KEY]?: boolean; + }; + if (history[HISTORY_PATCHED_KEY]) { + return; + } + history[HISTORY_PATCHED_KEY] = true; + + const pushState = history.pushState; + const replaceState = history.replaceState; + history.pushState = function (...args) { + const result = pushState.apply(this, args); + window.dispatchEvent(new Event(LOCATION_CHANGE_EVENT)); + return result; + }; + history.replaceState = function (...args) { + const result = replaceState.apply(this, args); + window.dispatchEvent(new Event(LOCATION_CHANGE_EVENT)); + return result; + }; +} + +export function useBrowserQueryParams(enabled: boolean) { + const search = useSyncExternalStore( + (onStoreChange) => { + if (!enabled || typeof window === "undefined") { + return () => {}; + } + ensureHistoryChangeEvents(); + window.addEventListener("popstate", onStoreChange); + window.addEventListener(LOCATION_CHANGE_EVENT, onStoreChange); + return () => { + window.removeEventListener("popstate", onStoreChange); + window.removeEventListener(LOCATION_CHANGE_EVENT, onStoreChange); + }; + }, + () => + !enabled || typeof window === "undefined" + ? undefined + : window.location.search, + () => undefined + ); + + return useMemo(() => { + if (search === undefined) { + return undefined; + } + return readBrowserQueryParams(search); + }, [search]); +} diff --git a/packages/host/src/registerComponent.ts b/packages/host/src/registerComponent.ts index 873d99a8a6..c780ff2266 100644 --- a/packages/host/src/registerComponent.ts +++ b/packages/host/src/registerComponent.ts @@ -234,6 +234,12 @@ export interface CodeComponentMeta

{ * Whether the element can be repeated in Studio. If unset, defaults to true. */ isRepeatable?: boolean; + /** + * Whether `executePlasmicQueries` should prefetch $q queries in this + * component's subtree during SSR/SSG. If unset, defaults to true. When false, + * `executePlasmicQueries` skips $q queries in the slot contents. + */ + subtreePrefetchingConfig?: boolean; /** * The path to be used when importing the component in the generated code. * It can be the name of the package that contains the component, or the path diff --git a/packages/host/src/types/component-types.ts b/packages/host/src/types/component-types.ts index d4e5b1eba0..04f749feb5 100644 --- a/packages/host/src/types/component-types.ts +++ b/packages/host/src/types/component-types.ts @@ -48,7 +48,6 @@ export type ComponentContextConfig = ContextDependentConfig< export interface PropTypeBase extends CommonTypeBase { displayName?: string; - required?: boolean; readOnly?: boolean | ContextDependentConfig; /** * If set to true, the component will be remounted when the prop value is updated. @@ -56,7 +55,7 @@ export interface PropTypeBase extends CommonTypeBase { */ forceRemount?: boolean; /** - * If true, the prop can't be overriden in different variants. + * If true, the prop can't be overridden in different variants. */ invariantable?: boolean; /** @@ -231,7 +230,7 @@ export interface RichSlotType

{ */ allowedComponents?: string[]; /** - * Wheter Plasmic Components with a root component included in the + * Whether Plasmic Components with a root component included in the * "allowedComponents" list are valid or not. * Only used if the "allowedComponents" list is set. */ diff --git a/packages/host/src/types/function-types.ts b/packages/host/src/types/function-types.ts index a7cbd03cef..df32340cbd 100644 --- a/packages/host/src/types/function-types.ts +++ b/packages/host/src/types/function-types.ts @@ -23,9 +23,16 @@ export type PartialParams

= { [K in keyof P]: P[K] | undefined; }; +export interface FunctionControlExtras { + path: (string | number)[]; + item?: any; + mode?: "query" | "mutation"; +} + export type FunctionControlContext

= GenericContext< PartialParams

, // Function params, each may be undefined - any // Data from fnContext + any, // Data from fnContext + FunctionControlExtras >; export type FunctionContextConfig

= ContextDependentConfig< diff --git a/packages/host/src/types/shared-controls.ts b/packages/host/src/types/shared-controls.ts index 1d972bc402..e3c7e6da44 100644 --- a/packages/host/src/types/shared-controls.ts +++ b/packages/host/src/types/shared-controls.ts @@ -47,13 +47,18 @@ export interface CommonTypeBase { * If true, does not allow the user to use a dynamic expression for this prop */ disableDynamicValue?: boolean; + /** + * Mark field as required (not null / undefined). Editor will attempt to + * enforce the field is present, but it is not guaranteed. + */ + required?: boolean; } export interface Defaultable { /** * Default value to set for this prop when the component is instantiated */ - defaultValue?: T; + defaultValue?: T | ContextDependentConfig; /** * Specify that default when no prop/param is provided, diff --git a/packages/host/tsconfig.json b/packages/host/tsconfig.json index 2ac9349532..7440fd9445 100644 --- a/packages/host/tsconfig.json +++ b/packages/host/tsconfig.json @@ -3,6 +3,7 @@ "include": ["src"], "exclude": ["src/**/*.spec.ts", "src/**/*.spec-d.ts"], "compilerOptions": { + "types": ["node", "react"], "module": "esnext", "lib": ["dom", "esnext"], "importHelpers": true, diff --git a/packages/loader-core/package.json b/packages/loader-core/package.json index da8c476729..35468ebb82 100644 --- a/packages/loader-core/package.json +++ b/packages/loader-core/package.json @@ -1,5 +1,12 @@ { - "version": "2.0.0", + "version": "2.0.4", + "description": "Core runtime for fetching and evaluating Plasmic component bundles, shared by the Plasmic loader SDKs.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "packages/loader-core" + }, "license": "MIT", "types": "./dist/index.d.ts", "main": "./dist/index.js", @@ -15,14 +22,14 @@ "dist" ], "engines": { - "node": ">=10" + "node": ">=18" }, "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.ts", "yalcp": "yalc publish --push", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test", + "test": "TEST_CWD=`pwd` pnpm -w test", "lint": "eslint", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh", @@ -38,11 +45,10 @@ } ], "devDependencies": { - "@types/node": "^20.8.9" + "@types/node": "^20.19.43" }, "dependencies": { - "@plasmicapp/isomorphic-unfetch": "1.0.3", - "@plasmicapp/loader-fetcher": "2.0.0" + "@plasmicapp/loader-fetcher": "2.0.4" }, "gitHead": "fa53f7d79f0e26d8b061102fda0c06788da6f8a7" } diff --git a/packages/loader-edge/README.md b/packages/loader-edge/README.md index 24f8bce287..799b3da9e7 100644 --- a/packages/loader-edge/README.md +++ b/packages/loader-edge/README.md @@ -1,3 +1,3 @@ # @plasmicapp/loader-edge -Library to perform A/B instrumentation on edge enviroment. +Library to perform A/B instrumentation on edge environment. diff --git a/packages/loader-edge/package.json b/packages/loader-edge/package.json index b216567ac8..ee2cbd9014 100644 --- a/packages/loader-edge/package.json +++ b/packages/loader-edge/package.json @@ -1,5 +1,12 @@ { - "version": "1.0.76", + "version": "1.0.81", + "description": "Edge-runtime helpers for applying Plasmic A/B tests and content splits in middleware.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "packages/loader-edge" + }, "license": "MIT", "types": "./dist/index.d.ts", "main": "./dist/index.js", @@ -15,15 +22,15 @@ "dist" ], "engines": { - "node": ">=10" + "node": ">=18" }, "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.ts", "yalcp": "yalc publish --push", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", - "coverage": "TEST_CWD=`pwd` yarn --cwd=../.. test --coverage --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", + "coverage": "TEST_CWD=`pwd` pnpm -w test --coverage --passWithNoTests", "lint": "eslint", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh", @@ -39,10 +46,10 @@ } ], "dependencies": { - "@plasmicapp/loader-splits": "1.0.70" + "@plasmicapp/loader-splits": "1.0.75" }, "devDependencies": { - "@plasmicapp/loader-fetcher": "2.0.0" + "@plasmicapp/loader-fetcher": "2.0.4" }, "publishConfig": { "access": "public" diff --git a/packages/loader-fetcher/api/index.api.md b/packages/loader-fetcher/api/index.api.md index eed760e6bc..c2a86a5f24 100644 --- a/packages/loader-fetcher/api/index.api.md +++ b/packages/loader-fetcher/api/index.api.md @@ -111,7 +111,7 @@ export interface FetcherOptions { }; // (undocumented) manualRedirect?: boolean; - // (undocumented) + // @deprecated (undocumented) nativeFetch?: boolean; // (undocumented) platform?: "react" | "nextjs" | "gatsby"; diff --git a/packages/loader-fetcher/package.json b/packages/loader-fetcher/package.json index fd6305b408..e3721f2494 100644 --- a/packages/loader-fetcher/package.json +++ b/packages/loader-fetcher/package.json @@ -1,5 +1,12 @@ { - "version": "2.0.0", + "version": "2.0.4", + "description": "Low-level fetcher for downloading Plasmic project bundles from the Plasmic API.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "packages/loader-fetcher" + }, "license": "MIT", "types": "./dist/index.d.ts", "main": "./dist/index.js", @@ -15,14 +22,14 @@ "dist" ], "engines": { - "node": ">=10" + "node": ">=18" }, "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.ts", "yalcp": "yalc publish --push", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test", + "test": "TEST_CWD=`pwd` pnpm -w test", "lint": "eslint", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh", @@ -37,11 +44,8 @@ "limit": "10 KB" } ], - "dependencies": { - "@plasmicapp/isomorphic-unfetch": "1.0.3" - }, "devDependencies": { - "@types/node": "^20.8.9", + "@types/node": "^20.19.43", "typescript": "^5.2.2" }, "publishConfig": { diff --git a/packages/loader-fetcher/src/api.ts b/packages/loader-fetcher/src/api.ts index 21b5593b27..d2888f8214 100644 --- a/packages/loader-fetcher/src/api.ts +++ b/packages/loader-fetcher/src/api.ts @@ -1,5 +1,3 @@ -import unfetch from "@plasmicapp/isomorphic-unfetch"; - export interface ComponentMeta { id: string; usedComponents: string[]; @@ -170,6 +168,7 @@ export class Api { host?: string; apiHost?: string; cdnHost?: string; + /** @deprecated No-op. Native fetch is always used now. */ nativeFetch?: boolean; manualRedirect?: boolean; } @@ -177,9 +176,7 @@ export class Api { this.apiHost = opts.apiHost ?? opts.host ?? "https://codegen-origin.plasmic.app"; this.cdnHost = opts.cdnHost ?? opts.host ?? "https://codegen.plasmic.app"; - this.fetch = ( - opts.nativeFetch && globalThis.fetch ? globalThis.fetch : unfetch - ).bind(globalThis); + this.fetch = globalThis.fetch.bind(globalThis); } async fetchLoaderData( diff --git a/packages/loader-fetcher/src/fetcher.ts b/packages/loader-fetcher/src/fetcher.ts index 12d3c7aed8..3710fba809 100644 --- a/packages/loader-fetcher/src/fetcher.ts +++ b/packages/loader-fetcher/src/fetcher.ts @@ -25,6 +25,7 @@ export interface FetcherOptions { tagPrefix?: string; }; skipHead?: boolean; + /** @deprecated No-op. Native fetch is always used now. */ nativeFetch?: boolean; manualRedirect?: boolean; } diff --git a/packages/loader-gatsby/api/index.api.md b/packages/loader-gatsby/api/index.api.md index fb4c9063ce..cd11eeaad3 100644 --- a/packages/loader-gatsby/api/index.api.md +++ b/packages/loader-gatsby/api/index.api.md @@ -9,6 +9,7 @@ import { ComponentMeta } from '@plasmicapp/loader-react'; import { ComponentRenderData } from '@plasmicapp/loader-react'; import { DataCtxReader } from '@plasmicapp/loader-react'; import { DataProvider } from '@plasmicapp/loader-react'; +import { extractPlasmicQueryData } from '@plasmicapp/loader-react'; import { GatsbyNode } from 'gatsby'; import { InitOptions } from '@plasmicapp/loader-react'; import { PageMeta } from '@plasmicapp/loader-react'; @@ -47,6 +48,14 @@ export { DataCtxReader } export { DataProvider } +export { extractPlasmicQueryData } + +// @public (undocumented) +export type GatsbyPluginOptions = PluginOptions & InitOptions & { + defaultPlasmicPage?: string; + ignorePaths?: string[]; +}; + export { InitOptions } // @public (undocumented) diff --git a/packages/loader-gatsby/package.json b/packages/loader-gatsby/package.json index 16dd111c65..882391de81 100644 --- a/packages/loader-gatsby/package.json +++ b/packages/loader-gatsby/package.json @@ -1,6 +1,13 @@ { "name": "@plasmicapp/loader-gatsby", - "version": "2.0.2", + "version": "2.0.19", + "description": "Plasmic loader SDK for Gatsby — render pages and components designed in Plasmic.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "packages/loader-gatsby" + }, "types": "./dist/index.d.ts", "main": "./dist/index.js", "exports": { @@ -25,8 +32,8 @@ "gatsby-ssr.js" ], "scripts": { - "build": "yarn build:types && yarn build:index && yarn build:gatsby-node && yarn build:gatsby-ssr", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index && pnpm build:gatsby-node && pnpm build:gatsby-ssr", + "build:types": "tsc", "build:index": "node ../../build.mjs src/index.ts --no-esm", "build:gatsby-node": "node ../../build.mjs src/gatsby-node.ts --no-esm", "build:gatsby-ssr": "node ../../build.mjs src/gatsby-ssr.ts --no-esm", @@ -53,13 +60,13 @@ } ], "dependencies": { - "@plasmicapp/loader-core": "2.0.0", - "@plasmicapp/loader-react": "2.0.2", - "@plasmicapp/watcher": "1.0.84", + "@plasmicapp/loader-core": "2.0.4", + "@plasmicapp/loader-react": "2.0.17", + "@plasmicapp/watcher": "1.0.86", "lodash": "^4.17.21" }, "devDependencies": { - "@types/lodash": "^4.14.195", + "@types/lodash": "^4.17.24", "@types/react-dom": "^18", "gatsby": "^5.11.0" }, diff --git a/packages/loader-gatsby/src/index.ts b/packages/loader-gatsby/src/index.ts index c99ab29218..d921a1755f 100644 --- a/packages/loader-gatsby/src/index.ts +++ b/packages/loader-gatsby/src/index.ts @@ -7,6 +7,7 @@ export { PlasmicCanvasHost, PlasmicComponent, PlasmicRootProvider, + extractPlasmicQueryData, repeatedElement, useDataEnv, usePlasmicCanvasComponentInfo, @@ -27,5 +28,6 @@ export type { TokenRegistration, } from "@plasmicapp/loader-react"; export { createPages, createResolvers, sourceNodes } from "./gatsby-node"; +export type { GatsbyPluginOptions } from "./gatsby-node"; export { replaceRenderer } from "./gatsby-ssr"; export { initPlasmicLoader } from "./loader"; diff --git a/packages/loader-nextjs/package.json b/packages/loader-nextjs/package.json index a3f3cc9313..5ae98da84b 100644 --- a/packages/loader-nextjs/package.json +++ b/packages/loader-nextjs/package.json @@ -1,7 +1,8 @@ { - "version": "2.0.2", + "version": "2.0.20", "name": "@plasmicapp/loader-nextjs", "description": "Plasmic loader SDK for Next.js", + "homepage": "https://www.plasmic.app", "license": "MIT", "repository": { "type": "git", @@ -50,14 +51,14 @@ "node": ">=18.17" }, "scripts": { - "build": "yarn build:types && yarn build:index && yarn build:edge && yarn build:react-server", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index && pnpm build:edge && pnpm build:react-server", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.tsx --use-client", "build:edge": "node ../../build.mjs ./src/edge.ts --no-esm", "build:react-server": "node ../../build.mjs ./src/react-server.tsx", "yalcp": "yalc publish --push", "test": "jest packages/loader-nextjs --config=../../jest.config.js --passWithNoTests", - "coverage": "yarn test --coverage", + "coverage": "pnpm test --coverage", "lint": "eslint", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh", @@ -75,11 +76,10 @@ } ], "dependencies": { - "@plasmicapp/loader-core": "2.0.0", - "@plasmicapp/loader-edge": "1.0.76", - "@plasmicapp/loader-react": "2.0.2", - "@plasmicapp/nextjs-app-router": "1.0.22", - "@plasmicapp/watcher": "1.0.84", + "@plasmicapp/loader-core": "2.0.4", + "@plasmicapp/loader-edge": "1.0.81", + "@plasmicapp/loader-react": "2.0.17", + "@plasmicapp/watcher": "1.0.86", "server-only": "0.0.1" }, "devDependencies": { diff --git a/packages/loader-react/api/index.api.md b/packages/loader-react/api/index.api.md index eac6382426..4b5ede357e 100644 --- a/packages/loader-react/api/index.api.md +++ b/packages/loader-react/api/index.api.md @@ -156,6 +156,7 @@ export interface InitOptions { tagPrefix?: string; }; manualRedirect?: boolean; + // @deprecated (undocumented) nativeFetch?: boolean; // (undocumented) onClientSideFetch?: "warn" | "error"; @@ -250,6 +251,13 @@ export class PlasmicComponentLoader { getExecFuncModule(renderData: ComponentRenderData, fileNameKey: "serverQueriesExecFuncFileName"): any; // (undocumented) getExternalVariation(variation: Record, filters?: Parameters[2]): Record; + // (undocumented) + getPlasmicMetadata(renderData: ComponentRenderData, props: { + params: Promise | ParamsRecord; + query: Promise | ParamsRecord; + }): Promise; + // (undocumented) + getPlasmicQueriesData(renderData: ComponentRenderData, ctx: Record, props?: Record): Promise; maybeFetchComponentData(...specs: ComponentLookupSpec[]): Promise; // (undocumented) maybeFetchComponentData(specs: ComponentLookupSpec[], opts?: FetchComponentDataOpts): Promise; @@ -266,13 +274,13 @@ export class PlasmicComponentLoader { registerTrait(trait: string, meta: TraitMeta): void; setGlobalVariants(globalVariants: GlobalVariantSpec[]): void; substituteComponent

(component: React.ComponentType

, name: ComponentLookupSpec): void; - // (undocumented) + // @deprecated (undocumented) unstable__generateMetadata(renderData: ComponentRenderData, props: { params: Promise | ParamsRecord; query: Promise | ParamsRecord; }): Promise; - // (undocumented) - unstable__getServerQueriesData(renderData: ComponentRenderData, $ctx: Record): Promise; + // @deprecated (undocumented) + unstable__getServerQueriesData(renderData: ComponentRenderData, ctx: Record, props?: Record): Promise; } // @public @@ -293,6 +301,7 @@ export function PlasmicRootProvider(props: { pageRoute?: string; pageParams?: Record; pageQuery?: Record; + trackQueryParams?: boolean; disableLoadingBoundary?: boolean; disableRootLoadingBoundary?: boolean; suspenseFallback?: React_2.ReactNode; diff --git a/packages/loader-react/api/react-server.api.md b/packages/loader-react/api/react-server.api.md index f57d684059..128708e83a 100644 --- a/packages/loader-react/api/react-server.api.md +++ b/packages/loader-react/api/react-server.api.md @@ -75,6 +75,7 @@ export interface InitOptions { tagPrefix?: string; }; manualRedirect?: boolean; + // @deprecated (undocumented) nativeFetch?: boolean; // (undocumented) onClientSideFetch?: "warn" | "error"; @@ -151,6 +152,13 @@ export class PlasmicComponentLoader { getExecFuncModule(renderData: ComponentRenderData, fileNameKey: "serverQueriesExecFuncFileName"): any; // (undocumented) getExternalVariation(variation: Record, filters?: Parameters[2]): Record; + // (undocumented) + getPlasmicMetadata(renderData: ComponentRenderData, props: { + params: Promise | ParamsRecord; + query: Promise | ParamsRecord; + }): Promise; + // (undocumented) + getPlasmicQueriesData(renderData: ComponentRenderData, ctx: Record, props?: Record): Promise; maybeFetchComponentData(...specs: ComponentLookupSpec[]): Promise; // (undocumented) maybeFetchComponentData(specs: ComponentLookupSpec[], opts?: FetchComponentDataOpts): Promise; @@ -167,13 +175,13 @@ export class PlasmicComponentLoader { registerTrait(trait: string, meta: TraitMeta): void; setGlobalVariants(globalVariants: GlobalVariantSpec[]): void; substituteComponent

(component: React.ComponentType

, name: ComponentLookupSpec): void; - // (undocumented) + // @deprecated (undocumented) unstable__generateMetadata(renderData: ComponentRenderData, props: { params: Promise | ParamsRecord; query: Promise | ParamsRecord; }): Promise; - // (undocumented) - unstable__getServerQueriesData(renderData: ComponentRenderData, $ctx: Record): Promise; + // @deprecated (undocumented) + unstable__getServerQueriesData(renderData: ComponentRenderData, ctx: Record, props?: Record): Promise; } // (No @packageDocumentation comment for this package) diff --git a/packages/loader-react/package.json b/packages/loader-react/package.json index 36976bfe30..37449ebbb7 100644 --- a/packages/loader-react/package.json +++ b/packages/loader-react/package.json @@ -1,7 +1,8 @@ { "name": "@plasmicapp/loader-react", - "version": "2.0.2", + "version": "2.0.17", "description": "Plasmic loader SDK for React", + "homepage": "https://www.plasmic.app", "license": "MIT", "repository": { "type": "git", @@ -42,16 +43,16 @@ "react-server-conditional.d.ts" ], "engines": { - "node": ">=12" + "node": ">=18" }, "scripts": { - "build": "yarn build:types && yarn build:index && yarn build:react-server", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index && pnpm build:react-server", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.ts --use-client", "build:react-server": "node ../../build.mjs ./src/react-server.ts", "yalcp": "yalc publish --push", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test", - "coverage": "TEST_CWD=`pwd` yarn --cwd=../.. test --coverage --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test", + "coverage": "TEST_CWD=`pwd` pnpm -w test --coverage --passWithNoTests", "lint": "eslint", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh", @@ -59,19 +60,19 @@ "analyze": "size-limit --why" }, "dependencies": { - "@plasmicapp/data-sources-context": "0.1.23", - "@plasmicapp/host": "2.0.1", - "@plasmicapp/loader-core": "2.0.0", - "@plasmicapp/loader-fetcher": "2.0.0", - "@plasmicapp/loader-splits": "1.0.70", - "@plasmicapp/prepass": "1.0.24", - "@plasmicapp/query": "0.1.84", + "@plasmicapp/data-sources-context": "0.1.25", + "@plasmicapp/host": "2.0.14", + "@plasmicapp/loader-core": "2.0.4", + "@plasmicapp/loader-fetcher": "2.0.4", + "@plasmicapp/loader-splits": "1.0.75", + "@plasmicapp/prepass": "1.0.27", + "@plasmicapp/query": "0.1.87", "pascalcase": "^1.0.0", "server-only": "0.0.1" }, "devDependencies": { "@types/node": "^22", - "@types/pascalcase": "^1.0.0", + "@types/pascalcase": "^1.0.3", "@types/react": "^18", "@types/react-dom": "^18", "react": "18.3.1", diff --git a/packages/loader-react/src/PlasmicRootProvider.tsx b/packages/loader-react/src/PlasmicRootProvider.tsx index 814fc47a33..289eab7333 100644 --- a/packages/loader-react/src/PlasmicRootProvider.tsx +++ b/packages/loader-react/src/PlasmicRootProvider.tsx @@ -136,6 +136,11 @@ export function PlasmicRootProvider( * /some/path?q=foo). */ pageQuery?: Record; + /** + * Defaults to false. If true, query params derived from `location.search` sync + * with client-side history changes. `pageQuery` prop is used as a fallback during SSR. + */ + trackQueryParams?: boolean; /** * Whether the internal Plasmic React.Suspense boundaries should be removed */ @@ -174,6 +179,7 @@ export function PlasmicRootProvider( pageRoute, pageParams, pageQuery, + trackQueryParams, suspenseFallback, disableLoadingBoundary, disableRootLoadingBoundary, @@ -300,6 +306,7 @@ export function PlasmicRootProvider( route={pageRoute} params={pageParams} query={pageQuery} + trackQueryParams={trackQueryParams} > + ctx: Record, + props?: Record ) { const module = this.getExecFuncModule( renderData, @@ -945,15 +946,26 @@ export class PlasmicComponentLoader { ); try { - const $serverQueries = await module?.executeServerQueries($ctx); - return $serverQueries; + const queries = await module?.getPlasmicQueriesData(ctx, props); + return queries; } catch (err) { - console.error("Error executing server queries function", err); + console.error("Error executing queries function", err); return {}; } } - async unstable__generateMetadata( + /** + * @deprecated Use {@link PlasmicComponentLoader.getPlasmicQueriesData} instead. + */ + async unstable__getServerQueriesData( + renderData: ComponentRenderData, + ctx: Record, + props?: Record + ) { + return this.getPlasmicQueriesData(renderData, ctx, props); + } + + async getPlasmicMetadata( renderData: ComponentRenderData, props: { params: Promise | ParamsRecord; @@ -979,4 +991,17 @@ export class PlasmicComponentLoader { return fallback; } } + + /** + * @deprecated Use {@link PlasmicComponentLoader.getPlasmicMetadata} instead. + */ + async unstable__generateMetadata( + renderData: ComponentRenderData, + props: { + params: Promise | ParamsRecord; + query: Promise | ParamsRecord; + } + ) { + return this.getPlasmicMetadata(renderData, props); + } } diff --git a/packages/loader-splits/package.json b/packages/loader-splits/package.json index f1e8c83f94..5228e62bed 100644 --- a/packages/loader-splits/package.json +++ b/packages/loader-splits/package.json @@ -1,5 +1,12 @@ { - "version": "1.0.70", + "version": "1.0.75", + "description": "Utilities for running Plasmic A/B tests, feature flags, and audience segmentation.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "packages/loader-splits" + }, "license": "MIT", "types": "./dist/index.d.ts", "main": "./dist/index.js", @@ -15,15 +22,15 @@ "dist" ], "engines": { - "node": ">=10" + "node": ">=18" }, "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.ts", "yalcp": "yalc publish --push", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", - "coverage": "TEST_CWD=`pwd` yarn --cwd=../.. test --coverage --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", + "coverage": "TEST_CWD=`pwd` pnpm -w test --coverage --passWithNoTests", "lint": "eslint", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh", @@ -39,7 +46,7 @@ } ], "devDependencies": { - "@plasmicapp/loader-fetcher": "2.0.0", + "@plasmicapp/loader-fetcher": "2.0.4", "@types/json-logic-js": "^1.2.1" }, "dependencies": { diff --git a/packages/loader-splits/src/variation.ts b/packages/loader-splits/src/variation.ts index 29dbc6c90f..6ecc310f65 100644 --- a/packages/loader-splits/src/variation.ts +++ b/packages/loader-splits/src/variation.ts @@ -86,17 +86,17 @@ export function getActiveVariation(opts: { const seed = opts.traits[PLASMIC_SEED]; const buckets: string[] = []; const totalBuckets = opts.seedRange ?? 1; - let avaiableBuckets = totalBuckets; + let availableBuckets = totalBuckets; for (let i = 0; i < numSlices; i++) { const slice = split.slices[i]; const numBuckets = Math.min( Math.floor(slice.prob * totalBuckets), - avaiableBuckets + availableBuckets ); for (let j = 0; j < numBuckets; j++) { buckets.push(slice.id); } - avaiableBuckets -= numBuckets; + availableBuckets -= numBuckets; } if (buckets.length > 0) { // We need to stable shuffle the buckets to ensure that the order of the diff --git a/packages/nextjs-app-router/README.md b/packages/nextjs-app-router/README.md index 67a03f7c52..63381faa92 100644 --- a/packages/nextjs-app-router/README.md +++ b/packages/nextjs-app-router/README.md @@ -1,3 +1,5 @@ +> **Deprecated:** `@plasmicapp/nextjs-app-router` is deprecated. See the docs for up to date Next.js App Router support: https://docs.plasmic.app/learn/migrate-to-app-router/ + This package provides helpers for doing extractPlasmicQueryData() with Next.js App Router. We normally use react-ssr-prepass to fake-render a React tree to gather data requirements. We can't do so in RSC mode, because all the client components are imported as placeholders, so we cannot fake-render them. @@ -33,14 +35,14 @@ export default async function PlasmicLoaderPage({ const pageMeta = prefetchedData.entryCompMetas[0]; return withExtractPlasmicQueryData( - - , + , { pathname, searchParams, @@ -56,7 +58,7 @@ async function fetchPlasmicComponentData(catchall: string[] | undefined) { /** * Helper function to extract Plasmic data. * - * Given the element and current pathname + search + * Given the element and current pathname + search * params, returns: * - The extracted query data, if `plasmicSsr` search param is set * - A copy of the root provider element with the extracted query data, otherwise @@ -114,7 +116,7 @@ async function withExtractPlasmicQueryData( `${prepassHost}${pathname}?${newSearchParams.toString()}` ); - // Provide the query data to + // Provide the query data to return React.cloneElement(plasmicRootProvider, { prefetchedQueryData, }); diff --git a/packages/nextjs-app-router/package.json b/packages/nextjs-app-router/package.json index 2c219d1ae0..aa7f32ac3a 100644 --- a/packages/nextjs-app-router/package.json +++ b/packages/nextjs-app-router/package.json @@ -1,6 +1,13 @@ { "name": "@plasmicapp/nextjs-app-router", - "version": "1.0.22", + "version": "1.0.29", + "description": "(DEPRECATED) Helpers for extracting Plasmic query data under the Next.js App Router.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "packages/nextjs-app-router" + }, "types": "./dist/index.d.ts", "main": "./dist/index.js", "module": "./dist/index.esm.js", @@ -14,19 +21,18 @@ "node": ">=16" }, "scripts": { - "build": "yarn build:types && yarn build:index && yarn build:react-server && yarn build:with-dev-server", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index && pnpm build:react-server && pnpm build:with-dev-server", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.ts --use-client", "build:with-dev-server": "esbuild --format=cjs --target=node18 --bundle --outfile=./dist/with-plasmic-prepass.cjs.js --platform=node ./src/with-dev-server.mts", "build:react-server": "node ../../build.mjs ./src/react-server.ts", - "test": "yarn --cwd=../.. test", - "coverage": "yarn --cwd=../.. test --coverage --passWithNoTests", - "lint": "eslint", - "prepare": "if-env PREPARE_NO_BUILD=true || yarn build" + "test": "pnpm -w test", + "coverage": "pnpm -w test --coverage --passWithNoTests", + "lint": "eslint" }, "dependencies": { - "@plasmicapp/prepass": "1.0.24", - "@plasmicapp/query": "0.1.84", + "@plasmicapp/prepass": "1.0.27", + "@plasmicapp/query": "0.1.87", "cross-port-killer": "1.4.0", "cross-spawn": "^7.0.3", "get-port": "^7.0.0", @@ -67,9 +73,9 @@ }, "devDependencies": { "@types/cross-spawn": "^6.0.6", - "@types/node": "^20.8.9", + "@types/node": "^20.19.43", "@types/react": "^18", - "@types/yargs": "^17.0.32", + "@types/yargs": "^17.0.35", "next": "^13.5.11", "react": "^18.2.0", "typescript": "^5.2.2" diff --git a/packages/prepass/package.json b/packages/prepass/package.json index be06b3ed30..e6715b3313 100644 --- a/packages/prepass/package.json +++ b/packages/prepass/package.json @@ -1,6 +1,13 @@ { "name": "@plasmicapp/prepass", - "version": "1.0.24", + "version": "1.0.27", + "description": "Server-side prepass that fake-renders a React tree to prefetch all @plasmicapp/query data requirements.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "packages/prepass" + }, "types": "./dist/index.d.ts", "main": "./dist/index.cjs.js", "module": "./dist/index.esm.js", @@ -11,11 +18,11 @@ "node": ">=12" }, "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc --emitDeclarationOnly", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc --emitDeclarationOnly", "build:index": "esbuild --format=cjs --outfile=./dist/index.cjs.js ./src/index.tsx && esbuild --format=esm --outfile=./dist/index.esm.js ./src/index.tsx", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test", - "coverage": "TEST_CWD=`pwd` yarn --cwd=../.. test --coverage --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test", + "coverage": "TEST_CWD=`pwd` pnpm -w test --coverage --passWithNoTests", "lint": "eslint", "prepublishOnly": "npm run build" }, @@ -23,7 +30,7 @@ "@types/react": "^18" }, "dependencies": { - "@plasmicapp/query": "0.1.84", + "@plasmicapp/query": "0.1.87", "@plasmicapp/react-ssr-prepass": "^2.0.9" }, "peerDependencies": { diff --git a/packages/prepass/yarn.lock b/packages/prepass/yarn.lock deleted file mode 100644 index 3e0eb4007a..0000000000 --- a/packages/prepass/yarn.lock +++ /dev/null @@ -1,38 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@plasmicapp/data-sources-context@0.1.11": - version "0.1.11" - resolved "https://registry.yarnpkg.com/@plasmicapp/data-sources-context/-/data-sources-context-0.1.11.tgz#30765e1eff677ac06d0ec6e8d0cecdbf8759f9bc" - integrity sha512-JFrtPCjdLIRnmZujWFuh025Id4bgd2fwllOOm2qMo4yoSm4oGDg6/2rRpD0qRC6DiN47RGt8tDR+ancYboxPjw== - -"@plasmicapp/host@1.0.149": - version "1.0.149" - resolved "https://registry.yarnpkg.com/@plasmicapp/host/-/host-1.0.149.tgz#a44035b4ab3d8f171e98f96a305f64eeb533bc80" - integrity sha512-hA6vcy3a0JtgbXrorxopHE90j5YKygNnbWBpONG32rbUxiE9jnRMYq+R9j92uaHTe3g5kPpON4f8dT45DywGhw== - dependencies: - "@plasmicapp/query" "0.1.67" - window-or-global "^1.0.1" - -"@plasmicapp/query@0.1.67": - version "0.1.67" - resolved "https://registry.yarnpkg.com/@plasmicapp/query/-/query-0.1.67.tgz#64515dc7782093fae5c3c741ad016fdcc9281200" - integrity sha512-BS+NrTtknKeaPhOD14K0AsUe8Mvq6qmnL/B9TE80Ac0dq1mwD7SIyptV7JGpYmiFzsO1v1XZ/RkR3jtpsKrpoQ== - dependencies: - swr "^1.0.0" - -"@plasmicapp/react-ssr-prepass@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@plasmicapp/react-ssr-prepass/-/react-ssr-prepass-2.0.2.tgz#0ebe044d4b89080cac1f3ac0a3bc152eea5b9cb5" - integrity sha512-axZF7/lVsCqsDED40VkJOjf/Iow/RjfxLjdT3IRwP8KkjsLvy06ir0IfPhXJ+7TcHOiW87f79VmR4aMwJxy0sg== - -swr@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/swr/-/swr-1.3.0.tgz#c6531866a35b4db37b38b72c45a63171faf9f4e8" - integrity sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw== - -window-or-global@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/window-or-global/-/window-or-global-1.0.1.tgz#dbe45ba2a291aabc56d62cf66c45b7fa322946de" - integrity sha512-tE12J/NenOv4xdVobD+AD3fT06T4KNqnzRhkv5nBIu7K+pvOH2oLCEgYP+i+5mF2jtI6FEADheOdZkA8YWET9w== diff --git a/packages/query/package.json b/packages/query/package.json index 7f1fca0de8..48ffb7967f 100644 --- a/packages/query/package.json +++ b/packages/query/package.json @@ -1,5 +1,12 @@ { - "version": "0.1.84", + "version": "0.1.87", + "description": "Isomorphic, component-level data fetching for React, built on SWR, with server-side prefetching.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "packages/query" + }, "license": "MIT", "types": "./dist/index.d.ts", "main": "./dist/index.js", @@ -18,10 +25,10 @@ "node": ">=10" }, "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.tsx --use-client", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "eslint", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh", @@ -46,6 +53,6 @@ "react-dom": "^18.2.0" }, "dependencies": { - "swr": "^1.0.0" + "swr": "^1.3.0" } } diff --git a/packages/react-web-runtime/package.json b/packages/react-web-runtime/package.json index f977d96533..90ee185201 100644 --- a/packages/react-web-runtime/package.json +++ b/packages/react-web-runtime/package.json @@ -1,6 +1,14 @@ { "name": "@plasmicapp/react-web-runtime", - "version": "1.0.2", + "version": "1.0.28", + "description": "Custom JSX runtime for @plasmicapp/react-web, used by Plasmic-generated code.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "packages/react-web-runtime" + }, + "license": "MIT", "files": [ "jsx-runtime", "jsx-dev-runtime" @@ -10,13 +18,13 @@ "prepublishOnly": "npm run build" }, "devDependencies": { - "@plasmicapp/react-web": "1.0.2", + "@plasmicapp/react-web": "1.0.28", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-replace": "^5.0.4", "@types/react": "^18", "react": "18.3.1", - "rollup": "^4.1.4", + "rollup": "^4.60.2", "rollup-plugin-terser": "^7.0.2", "rollup-plugin-typescript2": "^0.36.0" }, diff --git a/packages/react-web-runtime/yarn.lock b/packages/react-web-runtime/yarn.lock deleted file mode 100644 index edb1cd2f70..0000000000 --- a/packages/react-web-runtime/yarn.lock +++ /dev/null @@ -1,1286 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.10.4": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== - dependencies: - "@babel/highlight" "^7.12.13" - -"@babel/helper-validator-identifier@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" - integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== - -"@babel/highlight@^7.12.13": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" - integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.0" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@formatjs/ecma402-abstract@1.17.2": - version "1.17.2" - resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.17.2.tgz#d197c6e26b9fd96ff7ba3b3a0cc2f25f1f2dcac3" - integrity sha512-k2mTh0m+IV1HRdU0xXM617tSQTi53tVR2muvYOsBeYcUgEAyxV1FOC7Qj279th3fBVQ+Dj6muvNJZcHSPNdbKg== - dependencies: - "@formatjs/intl-localematcher" "0.4.2" - tslib "^2.4.0" - -"@formatjs/fast-memoize@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz#33bd616d2e486c3e8ef4e68c99648c196887802b" - integrity sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA== - dependencies: - tslib "^2.4.0" - -"@formatjs/icu-messageformat-parser@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.0.tgz#9b13f2710a3b4efddfeb544480f684f27a53483b" - integrity sha512-7uqC4C2RqOaBQtcjqXsSpGRYVn+ckjhNga5T/otFh6MgxRrCJQqvjfbrGLpX1Lcbxdm5WH3Z2WZqt1+Tm/cn/Q== - dependencies: - "@formatjs/ecma402-abstract" "1.17.2" - "@formatjs/icu-skeleton-parser" "1.6.2" - tslib "^2.4.0" - -"@formatjs/icu-skeleton-parser@1.6.2": - version "1.6.2" - resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.6.2.tgz#00303034dc08583973c8aa67b96534c49c0bad8d" - integrity sha512-VtB9Slo4ZL6QgtDFJ8Injvscf0xiDd4bIV93SOJTBjUF4xe2nAWOoSjLEtqIG+hlIs1sNrVKAaFo3nuTI4r5ZA== - dependencies: - "@formatjs/ecma402-abstract" "1.17.2" - tslib "^2.4.0" - -"@formatjs/intl-localematcher@0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.4.2.tgz#7e6e596dbaf2f0c5a7c22da5a01d5c55f4c37e9a" - integrity sha512-BGdtJFmaNJy5An/Zan4OId/yR9Ih1OojFjcduX/xOvq798OgWSyDtd6Qd5jqJXwJs1ipe4Fxu9+cshic5Ox2tA== - dependencies: - tslib "^2.4.0" - -"@internationalized/date@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.5.0.tgz#67f1dd62355f05140cc80e324842e9bfb4553abe" - integrity sha512-nw0Q+oRkizBWMioseI8+2TeUPEyopJVz5YxoYVzR0W1v+2YytiYah7s/ot35F149q/xAg4F1gT/6eTd+tsUpFQ== - dependencies: - "@swc/helpers" "^0.5.0" - -"@internationalized/message@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@internationalized/message/-/message-3.1.1.tgz#0f29c5a239b5dcd457b55f21dcd38d1a44a1236a" - integrity sha512-ZgHxf5HAPIaR0th+w0RUD62yF6vxitjlprSxmLJ1tam7FOekqRSDELMg4Cr/DdszG5YLsp5BG3FgHgqquQZbqw== - dependencies: - "@swc/helpers" "^0.5.0" - intl-messageformat "^10.1.0" - -"@internationalized/number@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@internationalized/number/-/number-3.3.0.tgz#92233d130a0591085f93be86a9e6356cfa0e2de2" - integrity sha512-PuxgnKE5NJMOGKUcX1QROo8jq7sW7UWLrL5B6Rfe8BdWgU/be04cVvLyCeALD46vvbAv3d1mUvyHav/Q9a237g== - dependencies: - "@swc/helpers" "^0.5.0" - -"@internationalized/string@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@internationalized/string/-/string-3.1.1.tgz#2ab7372d58bbb7ffd3de62fc2a311e4690186981" - integrity sha512-fvSr6YRoVPgONiVIUhgCmIAlifMVCeej/snPZVzbzRPxGpHl3o1GRe+d/qh92D8KhgOciruDUH8I5mjdfdjzfA== - dependencies: - "@swc/helpers" "^0.5.0" - -"@jridgewell/sourcemap-codec@^1.4.15": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@plasmicapp/auth-api@0.0.12": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@plasmicapp/auth-api/-/auth-api-0.0.12.tgz#43d1b3e2ff14640c278e8d1d61dc1d0c1805899e" - integrity sha512-LmtOAUCAofKnTH3uDCCwMsuXjPhrmmS4ZQfNzNvdA72Eio0VUkZYlfBJ4ViiVSljePBTXx6NYImu7kzvxo6PDw== - dependencies: - "@plasmicapp/isomorphic-unfetch" "1.0.3" - -"@plasmicapp/auth-react@0.0.15": - version "0.0.15" - resolved "https://registry.yarnpkg.com/@plasmicapp/auth-react/-/auth-react-0.0.15.tgz#43b4c93bffd9c112ff494447bc455a65e742f687" - integrity sha512-GuvuX0MeZd4/jT1YhoA0T4YB4JA2IAgRetwEH4fbLKX90gZOZ4ApIIOylfwWKK0guZcwcXP37SwmESUAkdztEA== - dependencies: - "@plasmicapp/auth-api" "0.0.12" - "@plasmicapp/isomorphic-unfetch" "1.0.3" - "@plasmicapp/query" "0.1.74" - -"@plasmicapp/data-sources-context@0.1.17": - version "0.1.17" - resolved "https://registry.yarnpkg.com/@plasmicapp/data-sources-context/-/data-sources-context-0.1.17.tgz#d42ee31a945ada2037c56e335fb8802afe3a5f25" - integrity sha512-vCAcgcxT6+MOn+rGlVszGDHPqBTGszzNZ4FuwXkX5RjN4W7VG8Vep6qpZC2KUZI0KpjGmGq3uLkeK4BcvciRzA== - -"@plasmicapp/data-sources@0.1.133": - version "0.1.133" - resolved "https://registry.yarnpkg.com/@plasmicapp/data-sources/-/data-sources-0.1.133.tgz#9d8a670278f5db5024257f9074c3d8ef27f03a7d" - integrity sha512-2YHyRDPH0h+D2FpqG5YJHhRcRPbN6GqLgEO7qKLPhbXrWq0t7Fsb9lN6tJTjy8O0rLNu6xkAWfsWVUCABp6Mhw== - dependencies: - "@plasmicapp/data-sources-context" "0.1.17" - "@plasmicapp/host" "1.0.177" - "@plasmicapp/isomorphic-unfetch" "1.0.3" - "@plasmicapp/query" "0.1.74" - fast-stringify "^2.0.0" - -"@plasmicapp/host@1.0.177": - version "1.0.177" - resolved "https://registry.yarnpkg.com/@plasmicapp/host/-/host-1.0.177.tgz#4bc0975f5144a4ed945417d9f2d724c40d9a9e55" - integrity sha512-TqipEiPaTZyz8wqQe/XJrdDAs0SIB99QINxZwtgvGjil47biFO0dhCk8Mv1JsrKyRTxRu5MCBToND8xpatXsBQ== - dependencies: - "@plasmicapp/query" "0.1.74" - csstype "^3.1.2" - window-or-global "^1.0.1" - -"@plasmicapp/isomorphic-unfetch@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@plasmicapp/isomorphic-unfetch/-/isomorphic-unfetch-1.0.3.tgz#baa334f5190d49461c26b1aa3fda073f5cfa7e33" - integrity sha512-cJtPOCf2/FWlFB42Q/n0MK/C47NSZr+YQJbCvQwvyjOrOgOQ4gJ/+gkr4avpMa7UPMa8qLovDAuaR+5k+hMlZQ== - dependencies: - unfetch "^4.2.0" - -"@plasmicapp/loader-splits@1.0.43": - version "1.0.43" - resolved "https://registry.yarnpkg.com/@plasmicapp/loader-splits/-/loader-splits-1.0.43.tgz#cd3ba58566e5f4f2dd6f6d633be534953794c867" - integrity sha512-XdSiD/N9ddD/HTjsk6EUhU0SSLFzQl0G4vlapdcHIBI9vBZRLAJQLGPIS98OJJnEK3DsE7j4kMYzKevoE/bycQ== - dependencies: - json-logic-js "^2.0.2" - -"@plasmicapp/prepass@1.0.9": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@plasmicapp/prepass/-/prepass-1.0.9.tgz#2eeace2cf12614d2bb779ef6ad49fda1a3c864ed" - integrity sha512-0iG7iCD/Kf0I1Qaxw/steVPm3p2ciBPeA8Xa4i/E34gEat5qRsGl6cMi4V2EaPLWOF4cL6B+PEdtHCmZBscOGw== - dependencies: - "@plasmicapp/query" "0.1.74" - "@plasmicapp/react-ssr-prepass" "2.0.3" - -"@plasmicapp/query@0.1.74": - version "0.1.74" - resolved "https://registry.yarnpkg.com/@plasmicapp/query/-/query-0.1.74.tgz#e633600cf8473522d587d874d0a3d9518abe149a" - integrity sha512-5ZwplvH/ObqBFTgB3hG2nA72F5DqV8bCsDnxM/O+Z8o1IsFRI4xkdj1pMQY/bkrLshMFA6uu6jZJTPU/dRnxJA== - dependencies: - swr "^1.0.0" - -"@plasmicapp/react-ssr-prepass@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@plasmicapp/react-ssr-prepass/-/react-ssr-prepass-2.0.3.tgz#d946d81c3d1e3a8f4f3cfcb8751edfe14b90d09e" - integrity sha512-jFde/wfL8NlJEr76Mshyju/3GvJD5Z9YijCG1/8DR+KOEv7m5uRvORjxtEEw2GKDXRp2GqpQqj97iWGLFUsOzA== - -"@plasmicapp/react-web@^0.2.282": - version "0.2.282" - resolved "https://registry.yarnpkg.com/@plasmicapp/react-web/-/react-web-0.2.282.tgz#c16f4b774ef6e3814bdfc4b6e3736bc089484159" - integrity sha512-uY9YbwBxtKPL1Q1dGrlqj20vpLjtX0WSpNfomQ+7KTTtKY+xXgrNZWdxPBhwwUcMAQT95zELqqMZqxl6yI24cQ== - dependencies: - "@plasmicapp/auth-react" "0.0.15" - "@plasmicapp/data-sources" "0.1.133" - "@plasmicapp/data-sources-context" "0.1.17" - "@plasmicapp/host" "1.0.177" - "@plasmicapp/loader-splits" "1.0.43" - "@plasmicapp/prepass" "1.0.9" - "@plasmicapp/query" "0.1.74" - "@react-aria/checkbox" "^3.5.0" - "@react-aria/focus" "^3.7.0" - "@react-aria/interactions" "^3.10.0" - "@react-aria/listbox" "^3.6.0" - "@react-aria/menu" "^3.6.0" - "@react-aria/overlays" "^3.10.0" - "@react-aria/select" "^3.8.0" - "@react-aria/separator" "^3.2.2" - "@react-aria/ssr" "^3.3.0" - "@react-aria/switch" "^3.2.2" - "@react-aria/visually-hidden" "^3.4.0" - "@react-stately/collections" "^3.4.2" - "@react-stately/list" "^3.5.2" - "@react-stately/menu" "^3.4.0" - "@react-stately/overlays" "^3.4.0" - "@react-stately/select" "^3.3.0" - "@react-stately/toggle" "^3.4.0" - "@react-stately/tree" "^3.3.2" - classnames "^2.2.6" - clone "^2.1.2" - dlv "^1.1.3" - fast-deep-equal "^3.1.3" - valtio "^1.6.3" - -"@react-aria/checkbox@^3.5.0": - version "3.11.2" - resolved "https://registry.yarnpkg.com/@react-aria/checkbox/-/checkbox-3.11.2.tgz#9e1045edf282298cb8337fd3fd1d953c6cf5f667" - integrity sha512-8cgXxpc7IMJ9buw+Rbhr1xc66zNp2ePuFpjw3uWyH7S3IJEd2f5kXUDNWLXQRADJso95UlajRlJQiG4QIObEnA== - dependencies: - "@react-aria/label" "^3.7.2" - "@react-aria/toggle" "^3.8.2" - "@react-aria/utils" "^3.21.1" - "@react-stately/checkbox" "^3.5.1" - "@react-stately/toggle" "^3.6.3" - "@react-types/checkbox" "^3.5.2" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - -"@react-aria/focus@^3.14.3", "@react-aria/focus@^3.7.0": - version "3.14.3" - resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.14.3.tgz#5e66dbf47e1d92aebf67d52b3b08d1631591f5b6" - integrity sha512-gvO/frZ7SxyfyHJYC+kRsUXnXct8hGHKlG1TwbkzCCXim9XIPKDgRzfNGuFfj0i8ZpR9xmsjOBUkHZny0uekFA== - dependencies: - "@react-aria/interactions" "^3.19.1" - "@react-aria/utils" "^3.21.1" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - clsx "^1.1.1" - -"@react-aria/i18n@^3.8.4": - version "3.8.4" - resolved "https://registry.yarnpkg.com/@react-aria/i18n/-/i18n-3.8.4.tgz#e7ecd3edcaa66ceaf9ebb1034395e021685163af" - integrity sha512-YlTJn7YJlUxds/T5dNtme551qc118NoDQhK+IgGpzcmPQ3xSnwBAQP4Zwc7wCpAU+xEwnNcsGw+L1wJd49He/A== - dependencies: - "@internationalized/date" "^3.5.0" - "@internationalized/message" "^3.1.1" - "@internationalized/number" "^3.3.0" - "@internationalized/string" "^3.1.1" - "@react-aria/ssr" "^3.8.0" - "@react-aria/utils" "^3.21.1" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - -"@react-aria/interactions@^3.10.0", "@react-aria/interactions@^3.19.1": - version "3.19.1" - resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.19.1.tgz#b17b1f9dc84624d4222c7fa0a4fa6b4c14fe125a" - integrity sha512-2QFOvq/rJfMGEezmtYcGcJmfaD16kHKcSTLFrZ8aeBK6hYFddGVZJZk+dXf+G7iNaffa8rMt6uwzVe/malJPBA== - dependencies: - "@react-aria/ssr" "^3.8.0" - "@react-aria/utils" "^3.21.1" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - -"@react-aria/label@^3.7.2": - version "3.7.2" - resolved "https://registry.yarnpkg.com/@react-aria/label/-/label-3.7.2.tgz#6563495cad2af9262e722514e88406baede48852" - integrity sha512-rS0xQy+4RH1+JLESzLZd9H285McjNNf2kKwBhzU0CW3akjlu7gqaMKEJhX9MlpPDIVOUc2oEObGdU3UMmqa8ew== - dependencies: - "@react-aria/utils" "^3.21.1" - "@react-types/label" "^3.8.1" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - -"@react-aria/listbox@^3.11.1", "@react-aria/listbox@^3.6.0": - version "3.11.1" - resolved "https://registry.yarnpkg.com/@react-aria/listbox/-/listbox-3.11.1.tgz#2a2c88daf6a67e07ab17440f72a859913161e6e8" - integrity sha512-AkguQaIkqpP5oe++EZqYHowD7FfeQs+yY0QZVSsVPpNExcBug8/GcXvhSclcOxdh6ekZg4Wwcq7K0zhuTSOPzg== - dependencies: - "@react-aria/focus" "^3.14.3" - "@react-aria/interactions" "^3.19.1" - "@react-aria/label" "^3.7.2" - "@react-aria/selection" "^3.17.1" - "@react-aria/utils" "^3.21.1" - "@react-stately/collections" "^3.10.2" - "@react-stately/list" "^3.10.0" - "@react-types/listbox" "^3.4.5" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - -"@react-aria/menu@^3.11.1", "@react-aria/menu@^3.6.0": - version "3.11.1" - resolved "https://registry.yarnpkg.com/@react-aria/menu/-/menu-3.11.1.tgz#fb31c5533d5106c41ed73c14516ecbf74742976a" - integrity sha512-1eVVDrGnSExaL7e8IiaM9ndWTjT23rsnQGUK3p66R1Ojs8Q5rPBuJpP74rsmIpYiKOCr8WyZunjm5Fjv5KfA5Q== - dependencies: - "@react-aria/focus" "^3.14.3" - "@react-aria/i18n" "^3.8.4" - "@react-aria/interactions" "^3.19.1" - "@react-aria/overlays" "^3.18.1" - "@react-aria/selection" "^3.17.1" - "@react-aria/utils" "^3.21.1" - "@react-stately/collections" "^3.10.2" - "@react-stately/menu" "^3.5.6" - "@react-stately/tree" "^3.7.3" - "@react-types/button" "^3.9.0" - "@react-types/menu" "^3.9.5" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - -"@react-aria/overlays@^3.10.0", "@react-aria/overlays@^3.18.1": - version "3.18.1" - resolved "https://registry.yarnpkg.com/@react-aria/overlays/-/overlays-3.18.1.tgz#b53093b2e1004feff155c81730e0101179cd6c47" - integrity sha512-C74eZbTp3OA/gXy9/+4iPrZiz7g27Zy6Q1+plbg5QTLpsFLBt2Ypy9jTTANNRZfW7a5NW/Bnw9WIRjCdtTBRXw== - dependencies: - "@react-aria/focus" "^3.14.3" - "@react-aria/i18n" "^3.8.4" - "@react-aria/interactions" "^3.19.1" - "@react-aria/ssr" "^3.8.0" - "@react-aria/utils" "^3.21.1" - "@react-aria/visually-hidden" "^3.8.6" - "@react-stately/overlays" "^3.6.3" - "@react-types/button" "^3.9.0" - "@react-types/overlays" "^3.8.3" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - -"@react-aria/select@^3.8.0": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@react-aria/select/-/select-3.13.1.tgz#c6d7eda36b8f8887c9baf0f1dea06f30806d71fc" - integrity sha512-tWWOnMnrV1nlZzdO04Ntvf5GCJ6MPkg8Gwv6y0klDDjt12Qyc7J8INluW5A4eMUdtxCkWdaiEsXjyYBHT14ILQ== - dependencies: - "@react-aria/i18n" "^3.8.4" - "@react-aria/interactions" "^3.19.1" - "@react-aria/label" "^3.7.2" - "@react-aria/listbox" "^3.11.1" - "@react-aria/menu" "^3.11.1" - "@react-aria/selection" "^3.17.1" - "@react-aria/utils" "^3.21.1" - "@react-aria/visually-hidden" "^3.8.6" - "@react-stately/select" "^3.5.5" - "@react-types/button" "^3.9.0" - "@react-types/select" "^3.8.4" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - -"@react-aria/selection@^3.17.1": - version "3.17.1" - resolved "https://registry.yarnpkg.com/@react-aria/selection/-/selection-3.17.1.tgz#12df277b8806fd26093e16f6a2734bd1e6fbb3e2" - integrity sha512-g5gkSc/M+zJiVgWbUpKN095ea0D4fxdluH9ZcXxN4AAvcrVfEJyAnMmWOIKRebN8xR0KPfNRnKB7E6jld2tbuQ== - dependencies: - "@react-aria/focus" "^3.14.3" - "@react-aria/i18n" "^3.8.4" - "@react-aria/interactions" "^3.19.1" - "@react-aria/utils" "^3.21.1" - "@react-stately/collections" "^3.10.2" - "@react-stately/selection" "^3.14.0" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - -"@react-aria/separator@^3.2.2": - version "3.3.7" - resolved "https://registry.yarnpkg.com/@react-aria/separator/-/separator-3.3.7.tgz#258f52a64d9ec58d62d3257edac542007b54a142" - integrity sha512-5XjDhvGVmGHxxOrXLFCQhOs75v579nPTaSlrKhG/5BjTN3JrByAtuNAw8XZf3HbtiCRZnnL2bKdVbHBjmbuvDw== - dependencies: - "@react-aria/utils" "^3.21.1" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - -"@react-aria/ssr@^3.3.0", "@react-aria/ssr@^3.8.0": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.8.0.tgz#e7f467ac42f72504682724304ce221f785d70d49" - integrity sha512-Y54xs483rglN5DxbwfCPHxnkvZ+gZ0LbSYmR72LyWPGft8hN/lrl1VRS1EW2SMjnkEWlj+Km2mwvA3kEHDUA0A== - dependencies: - "@swc/helpers" "^0.5.0" - -"@react-aria/switch@^3.2.2": - version "3.5.6" - resolved "https://registry.yarnpkg.com/@react-aria/switch/-/switch-3.5.6.tgz#2f3d4b4198f26848fac9876233981b232c151620" - integrity sha512-W6H/0TFa72MJY02AatUERt5HKgaDTF8lOaTjNNmS6U6U20+//uvrVCqcBof8OMe4M60mQpkp7Bd6756CJAMX1w== - dependencies: - "@react-aria/toggle" "^3.8.2" - "@react-stately/toggle" "^3.6.3" - "@react-types/switch" "^3.4.2" - "@swc/helpers" "^0.5.0" - -"@react-aria/toggle@^3.8.2": - version "3.8.2" - resolved "https://registry.yarnpkg.com/@react-aria/toggle/-/toggle-3.8.2.tgz#4336f0d70e33347c7bcf43f3ec4e617ce449127b" - integrity sha512-0+RmlOQtyRmU+Dd9qM9od4DPpITC7jqA+n3aZn732XtCsosz5gPGbhFuLbSdWRZ42FQgqo7pZQWaDRZpJPkipA== - dependencies: - "@react-aria/focus" "^3.14.3" - "@react-aria/interactions" "^3.19.1" - "@react-aria/utils" "^3.21.1" - "@react-stately/toggle" "^3.6.3" - "@react-types/checkbox" "^3.5.2" - "@react-types/shared" "^3.21.0" - "@react-types/switch" "^3.4.2" - "@swc/helpers" "^0.5.0" - -"@react-aria/utils@^3.21.1": - version "3.21.1" - resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.21.1.tgz#35f5d545757ea38f05a0d2f5492f13217ebb03ce" - integrity sha512-tySfyWHXOhd/b6JSrSOl7krngEXN3N6pi1hCAXObRu3+MZlaZOMDf/j18aoteaIF2Jpv8HMWUJUJtQKGmBJGRA== - dependencies: - "@react-aria/ssr" "^3.8.0" - "@react-stately/utils" "^3.8.0" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - clsx "^1.1.1" - -"@react-aria/visually-hidden@^3.4.0", "@react-aria/visually-hidden@^3.8.6": - version "3.8.6" - resolved "https://registry.yarnpkg.com/@react-aria/visually-hidden/-/visually-hidden-3.8.6.tgz#9b149851ac41e9c72c7819f8d4ad47ddfb45b863" - integrity sha512-6DmS/JLbK9KgU/ClK1WjwOyvpn8HtwYn+uisMLdP7HlCm692peYOkXDR1jqYbHL4GlyLCD0JLI+/xGdVh5aR/w== - dependencies: - "@react-aria/interactions" "^3.19.1" - "@react-aria/utils" "^3.21.1" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - clsx "^1.1.1" - -"@react-stately/checkbox@^3.5.1": - version "3.5.1" - resolved "https://registry.yarnpkg.com/@react-stately/checkbox/-/checkbox-3.5.1.tgz#a6f6ad01852aded85f4baa7c3e97e44d2c47a607" - integrity sha512-j+EbHpZgS8J2LbysbVDK3vQAJc7YZHOjHRX20auEzVmulAFKwkRpevo/R5gEL4EpOz4bRyu+BH/jbssHXG+Ezw== - dependencies: - "@react-stately/toggle" "^3.6.3" - "@react-stately/utils" "^3.8.0" - "@react-types/checkbox" "^3.5.2" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - -"@react-stately/collections@^3.10.2", "@react-stately/collections@^3.4.2": - version "3.10.2" - resolved "https://registry.yarnpkg.com/@react-stately/collections/-/collections-3.10.2.tgz#c739d9d596ecb744be15fde6f064ad85dd6145db" - integrity sha512-h+LzCa1gWhVRWVH8uR+ZxsKmFSx7kW3RIlcjWjhfyc59BzXCuojsOJKTTAyPVFP/3kOdJeltw8g/reV1Cw/x6Q== - dependencies: - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - -"@react-stately/list@^3.10.0", "@react-stately/list@^3.5.2": - version "3.10.0" - resolved "https://registry.yarnpkg.com/@react-stately/list/-/list-3.10.0.tgz#6b2c66778b687d8c197809059f102029a9bb5079" - integrity sha512-Yspumiln2fvzoO8AND8jNAIfBu1XPaYioeeDmsB5Vrya2EvOkzEGsauQSNBJ6Vhee1fQqpnmzH1HB0jfIKUfzg== - dependencies: - "@react-stately/collections" "^3.10.2" - "@react-stately/selection" "^3.14.0" - "@react-stately/utils" "^3.8.0" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - -"@react-stately/menu@^3.4.0", "@react-stately/menu@^3.5.6": - version "3.5.6" - resolved "https://registry.yarnpkg.com/@react-stately/menu/-/menu-3.5.6.tgz#21861b7cfba579d69272509aef8197d3fad7463a" - integrity sha512-Cm82SVda1qP71Fcz8ohIn3JYKmKCuSUIFr1WsEo/YwDPkX0x9+ev6rmphHTsxDdkCLcYHSTQL6e2KL0wAg50zA== - dependencies: - "@react-stately/overlays" "^3.6.3" - "@react-stately/utils" "^3.8.0" - "@react-types/menu" "^3.9.5" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - -"@react-stately/overlays@^3.4.0", "@react-stately/overlays@^3.6.3": - version "3.6.3" - resolved "https://registry.yarnpkg.com/@react-stately/overlays/-/overlays-3.6.3.tgz#cdfe5edb1ed6ad84fc1022af931586489cb23552" - integrity sha512-K3eIiYAdAGTepYqNf2pVb+lPqLoVudXwmxPhyOSZXzjgpynD6tR3E9QfWQtkMazBuU73PnNX7zkH4l87r2AmTg== - dependencies: - "@react-stately/utils" "^3.8.0" - "@react-types/overlays" "^3.8.3" - "@swc/helpers" "^0.5.0" - -"@react-stately/select@^3.3.0", "@react-stately/select@^3.5.5": - version "3.5.5" - resolved "https://registry.yarnpkg.com/@react-stately/select/-/select-3.5.5.tgz#e0b6dc9635bf46632efeba552e7ff3641c2f581f" - integrity sha512-nDkvFeAZbN7dK/Ty+mk1h4LZYYaoPpkwrG49wa67DTHkCc8Zk2+UEjhKPwOK20th4vfJKHzKjVa0Dtq4DIj0rw== - dependencies: - "@react-stately/collections" "^3.10.2" - "@react-stately/list" "^3.10.0" - "@react-stately/menu" "^3.5.6" - "@react-stately/selection" "^3.14.0" - "@react-stately/utils" "^3.8.0" - "@react-types/select" "^3.8.4" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - -"@react-stately/selection@^3.14.0": - version "3.14.0" - resolved "https://registry.yarnpkg.com/@react-stately/selection/-/selection-3.14.0.tgz#26a574bf2e35657db1988974df8bd2747b09f5c6" - integrity sha512-E5rNH+gVGDJQDSnPO30ynu6jZ0Z0++VPUbM5Bu3P/bZ3+TgoTtDDvlONba3fspgSBDfdnHpsuG9eqYnDtEAyYA== - dependencies: - "@react-stately/collections" "^3.10.2" - "@react-stately/utils" "^3.8.0" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - -"@react-stately/toggle@^3.4.0", "@react-stately/toggle@^3.6.3": - version "3.6.3" - resolved "https://registry.yarnpkg.com/@react-stately/toggle/-/toggle-3.6.3.tgz#4de25fd458890e37f6c363d058b018e5f11a9882" - integrity sha512-4kIMTjRjtaapFk4NVmBoFDUYfkmyqDaYAmHpRyEIHTDpBYn0xpxZL/MHv9WuLYa4MjJLRp0MeicuWiZ4ai7f6Q== - dependencies: - "@react-stately/utils" "^3.8.0" - "@react-types/checkbox" "^3.5.2" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - -"@react-stately/tree@^3.3.2", "@react-stately/tree@^3.7.3": - version "3.7.3" - resolved "https://registry.yarnpkg.com/@react-stately/tree/-/tree-3.7.3.tgz#d0b3da5db553e64e8f3def5bae45f765f62a3fd8" - integrity sha512-wB/68qetgCYTe7OMqbTFmtWRrEqVdIH2VlACPCsMlECr3lW9TrrbrOwlHIJfLhkxWvY3kSCoKcOJ5KTiJC9LGA== - dependencies: - "@react-stately/collections" "^3.10.2" - "@react-stately/selection" "^3.14.0" - "@react-stately/utils" "^3.8.0" - "@react-types/shared" "^3.21.0" - "@swc/helpers" "^0.5.0" - -"@react-stately/utils@^3.8.0": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.8.0.tgz#88a45742c58bde804f6cbecb20ea3833915cfdf0" - integrity sha512-wCIoFDbt/uwNkWIBF+xV+21k8Z8Sj5qGO3uptTcVmjYcZngOaGGyB4NkiuZhmhG70Pkv+yVrRwoC1+4oav9cCg== - dependencies: - "@swc/helpers" "^0.5.0" - -"@react-types/button@^3.9.0": - version "3.9.0" - resolved "https://registry.yarnpkg.com/@react-types/button/-/button-3.9.0.tgz#66df80cafaa98aaa34c331e927d21fdf4a0bdc4a" - integrity sha512-YhbchUDB7yL88ZFA0Zqod6qOMdzCLD5yVRmhWymk0yNLvB7EB1XX4c5sRANalfZSFP0RpCTlkjB05Hzp4+xOYg== - dependencies: - "@react-types/shared" "^3.21.0" - -"@react-types/checkbox@^3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@react-types/checkbox/-/checkbox-3.5.2.tgz#f463befdd37bc2c9e5c6febd62e53131e8983fa4" - integrity sha512-iRQrbY8vRRya3bt3i7sHAifhP/ozfkly1/TItkRK5MNPRNPRDKns55D8ZFkRMj4NSyKQpjVt1zzlBXrnSOxWdQ== - dependencies: - "@react-types/shared" "^3.21.0" - -"@react-types/label@^3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@react-types/label/-/label-3.8.1.tgz#b076a0fb955051307bfa3fed7e18ce0dc76d8c7b" - integrity sha512-fA6zMTF2TmfU7H8JBJi0pNd8t5Ak4gO+ZA3cZBysf8r3EmdAsgr3LLqFaGTnZzPH1Fux6c7ARI3qjVpyNiejZQ== - dependencies: - "@react-types/shared" "^3.21.0" - -"@react-types/listbox@^3.4.5": - version "3.4.5" - resolved "https://registry.yarnpkg.com/@react-types/listbox/-/listbox-3.4.5.tgz#c18fbfe38412f7ce42b381fd4aa7bf443dcb6a59" - integrity sha512-nuRY3l8h/rBYQWTXWdZz5YJdl6QDDmXpHrnPuX7PxTwbXcwjhoMK+ZkJ0arA8Uv3MPs1OUcT6K6CInsPnG2ARQ== - dependencies: - "@react-types/shared" "^3.21.0" - -"@react-types/menu@^3.9.5": - version "3.9.5" - resolved "https://registry.yarnpkg.com/@react-types/menu/-/menu-3.9.5.tgz#9f67aebda9f491f0e94e2de7a15898c6cabf0772" - integrity sha512-KB5lJM0p9PxwpVlHV9sRdpjh+sqINeHrJgGizy/cQI9bj26nupiEgamSD14dULNI6BFT9DkgKCsobBtE04DDKQ== - dependencies: - "@react-types/overlays" "^3.8.3" - "@react-types/shared" "^3.21.0" - -"@react-types/overlays@^3.8.3": - version "3.8.3" - resolved "https://registry.yarnpkg.com/@react-types/overlays/-/overlays-3.8.3.tgz#47132f08ae3a115273036d98b9441a51d4a4ab09" - integrity sha512-TrCG2I2+V+TD0PGi3CqfnyU5jEzcelSGgYJQvVxsl5Vv3ri7naBLIsOjF9x66tPxhINLCPUtOze/WYRAexp8aw== - dependencies: - "@react-types/shared" "^3.21.0" - -"@react-types/select@^3.8.4": - version "3.8.4" - resolved "https://registry.yarnpkg.com/@react-types/select/-/select-3.8.4.tgz#564e6d89095d736ed580a733dd8baa7fadab05bc" - integrity sha512-jHBaLiAHTcYPz52kuJpypBbR0WAA+YCZHy2HH+W8711HuTqePZCEp6QAWHK9Fw0qwSZQ052jYaWvOsgEZZ6ojQ== - dependencies: - "@react-types/shared" "^3.21.0" - -"@react-types/shared@^3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.21.0.tgz#1af41fdf7dfbdbd33bbc1210617c43ed0d4ef20c" - integrity sha512-wJA2cUF8dP4LkuNUt9Vh2kkfiQb2NLnV2pPXxVnKJZ7d4x2/7VPccN+LYPnH8m0X3+rt50cxWuPKQmjxSsCFOg== - -"@react-types/switch@^3.4.2": - version "3.4.2" - resolved "https://registry.yarnpkg.com/@react-types/switch/-/switch-3.4.2.tgz#8c0a8f8dfcaae29ccd9409a2beaac0d31a131027" - integrity sha512-OQWpawikWhF+ET1/kE0/JeJVr6gHjkR72p/idTsT7RUJySBcehhAscbIA8iWzVWJvdFCVF2hG7uzBAJTeDMr9A== - dependencies: - "@react-types/checkbox" "^3.5.2" - "@react-types/shared" "^3.21.0" - -"@rollup/plugin-commonjs@^25.0.7": - version "25.0.7" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz#145cec7589ad952171aeb6a585bbeabd0fd3b4cf" - integrity sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ== - dependencies: - "@rollup/pluginutils" "^5.0.1" - commondir "^1.0.1" - estree-walker "^2.0.2" - glob "^8.0.3" - is-reference "1.2.1" - magic-string "^0.30.3" - -"@rollup/plugin-node-resolve@^15.2.3": - version "15.2.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz#e5e0b059bd85ca57489492f295ce88c2d4b0daf9" - integrity sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ== - dependencies: - "@rollup/pluginutils" "^5.0.1" - "@types/resolve" "1.20.2" - deepmerge "^4.2.2" - is-builtin-module "^3.2.1" - is-module "^1.0.0" - resolve "^1.22.1" - -"@rollup/plugin-replace@^5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.4.tgz#fef548dc751d06747e8dca5b0e8e1fbf647ac7e1" - integrity sha512-E2hmRnlh09K8HGT0rOnnri9OTh+BILGr7NVJGB30S4E3cLRn3J0xjdiyOZ74adPs4NiAMgrjUMGAZNJDBgsdmQ== - dependencies: - "@rollup/pluginutils" "^5.0.1" - magic-string "^0.30.3" - -"@rollup/pluginutils@^4.1.2": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" - integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== - dependencies: - estree-walker "^2.0.1" - picomatch "^2.2.2" - -"@rollup/pluginutils@^5.0.1": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.5.tgz#bbb4c175e19ebfeeb8c132c2eea0ecb89941a66c" - integrity sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q== - dependencies: - "@types/estree" "^1.0.0" - estree-walker "^2.0.2" - picomatch "^2.3.1" - -"@rollup/rollup-android-arm-eabi@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.1.4.tgz#e9bc2540174972b559ded126e6f9bf12f36c1bb1" - integrity sha512-WlzkuFvpKl6CLFdc3V6ESPt7gq5Vrimd2Yv9IzKXdOpgbH4cdDSS1JLiACX8toygihtH5OlxyQzhXOph7Ovlpw== - -"@rollup/rollup-android-arm64@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.1.4.tgz#50c4e7668cb00a63d9a6810d0a607496ad4f0d09" - integrity sha512-D1e+ABe56T9Pq2fD+R3ybe1ylCDzu3tY4Qm2Mj24R9wXNCq35+JbFbOpc2yrroO2/tGhTobmEl2Bm5xfE/n8RA== - -"@rollup/rollup-darwin-arm64@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.1.4.tgz#96b8ad0c21582fe8223c66ed4b39b30ff592da1c" - integrity sha512-7vTYrgEiOrjxnjsgdPB+4i7EMxbVp7XXtS+50GJYj695xYTTEMn3HZVEvgtwjOUkAP/Q4HDejm4fIAjLeAfhtg== - -"@rollup/rollup-darwin-x64@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.1.4.tgz#5f0f6bd8f0a29e4b2b32ab831e953a6ca2d8f45b" - integrity sha512-eGJVZScKSLZkYjhTAESCtbyTBq9SXeW9+TX36ki5gVhDqJtnQ5k0f9F44jNK5RhAMgIj0Ht9+n6HAgH0gUUyWQ== - -"@rollup/rollup-linux-arm-gnueabihf@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.1.4.tgz#52d706c87a05f91ff6f14f444685b662d3a6f96a" - integrity sha512-HnigYSEg2hOdX1meROecbk++z1nVJDpEofw9V2oWKqOWzTJlJf1UXVbDE6Hg30CapJxZu5ga4fdAQc/gODDkKg== - -"@rollup/rollup-linux-arm64-gnu@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.1.4.tgz#5afa269b26467a7929c23816e3e2cf417b973d3b" - integrity sha512-TzJ+N2EoTLWkaClV2CUhBlj6ljXofaYzF/R9HXqQ3JCMnCHQZmQnbnZllw7yTDp0OG5whP4gIPozR4QiX+00MQ== - -"@rollup/rollup-linux-arm64-musl@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.1.4.tgz#08d30969483a804769deb6e674fe963c21815ad9" - integrity sha512-aVPmNMdp6Dlo2tWkAduAD/5TL/NT5uor290YvjvFvCv0Q3L7tVdlD8MOGDL+oRSw5XKXKAsDzHhUOPUNPRHVTQ== - -"@rollup/rollup-linux-x64-gnu@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.1.4.tgz#e5000b4e6e2a81364083d64a608b915f4e92a9c1" - integrity sha512-77Fb79ayiDad0grvVsz4/OB55wJRyw9Ao+GdOBA9XywtHpuq5iRbVyHToGxWquYWlEf6WHFQQnFEttsAzboyKg== - -"@rollup/rollup-linux-x64-musl@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.1.4.tgz#6f356e16b275287f61c61ce8b9e1718fc5b24d4c" - integrity sha512-/t6C6niEQTqmQTVTD9TDwUzxG91Mlk69/v0qodIPUnjjB3wR4UA3klg+orR2SU3Ux2Cgf2pWPL9utK80/1ek8g== - -"@rollup/rollup-win32-arm64-msvc@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.1.4.tgz#acb619a959c7b03fad63017b328fa60641b75239" - integrity sha512-ZY5BHHrOPkMbCuGWFNpJH0t18D2LU6GMYKGaqaWTQ3CQOL57Fem4zE941/Ek5pIsVt70HyDXssVEFQXlITI5Gg== - -"@rollup/rollup-win32-ia32-msvc@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.1.4.tgz#6aab05c9a60f952cf5a263ebca244aa225fbde63" - integrity sha512-XG2mcRfFrJvYyYaQmvCIvgfkaGinfXrpkBuIbJrTl9SaIQ8HumheWTIwkNz2mktCKwZfXHQNpO7RgXLIGQ7HXA== - -"@rollup/rollup-win32-x64-msvc@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.1.4.tgz#482022c71466e653aa6e1afc7a8323298743609b" - integrity sha512-ANFqWYPwkhIqPmXw8vm0GpBEHiPpqcm99jiiAp71DbCSqLDhrtr019C5vhD0Bw4My+LmMvciZq6IsWHqQpl2ZQ== - -"@swc/helpers@^0.5.0": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.3.tgz#98c6da1e196f5f08f977658b80d6bd941b5f294f" - integrity sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A== - dependencies: - tslib "^2.4.0" - -"@types/estree@*": - version "0.0.47" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4" - integrity sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg== - -"@types/estree@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.3.tgz#2be19e759a3dd18c79f9f436bd7363556c1a73dd" - integrity sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ== - -"@types/node@*": - version "15.0.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.3.tgz#ee09fcaac513576474c327da5818d421b98db88a" - integrity sha512-/WbxFeBU+0F79z9RdEOXH4CsDga+ibi5M8uEYr91u3CkT/pdWcV8MCook+4wDPnZBexRdwWS+PiVZ2xJviAzcQ== - -"@types/prop-types@*": - version "15.7.3" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" - integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== - -"@types/react@^18.2.32": - version "18.2.32" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.32.tgz#7ec787730c45ee9a3c0ed150b19e95c31fe4608a" - integrity sha512-F0FVIZQ1x5Gxy/VYJb7XcWvCcHR28Sjwt1dXLspdIatfPq1MVACfnBDwKe6ANLxQ64riIJooXClpUR6oxTiepg== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/resolve@1.20.2": - version "1.20.2" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" - integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== - -"@types/scheduler@*": - version "0.16.1" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275" - integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -builtin-modules@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -classnames@^2.2.6: - version "2.3.1" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" - integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== - -clone@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== - -clsx@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" - integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -csstype@^3.0.2: - version "3.0.8" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" - integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== - -csstype@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" - integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -dlv@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" - integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -estree-walker@^2.0.1, estree-walker@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-stringify/-/fast-stringify-2.0.0.tgz#bb5dd243fce053e91d04f68e595405ca656167e4" - integrity sha512-+b+ki4C5K/tw+RmyiehpRzHjWmeqPb3Wn0whMsi+JPrYjzdapybfGejhCTblfLBErPMRSToYXDObawLG9BN78A== - -find-cache-dir@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -fs-extra@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -glob@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -hasown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" - integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== - dependencies: - function-bind "^1.1.2" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -intl-messageformat@^10.1.0: - version "10.5.4" - resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.5.4.tgz#7b212b083f1b354d7e282518e78057e025134af9" - integrity sha512-z+hrFdiJ/heRYlzegrdFYqU1m/KOMOVMqNilIArj+PbsuU8TNE7v4TWdQgSoxlxbT4AcZH3Op3/Fu15QTp+W1w== - dependencies: - "@formatjs/ecma402-abstract" "1.17.2" - "@formatjs/fast-memoize" "2.2.0" - "@formatjs/icu-messageformat-parser" "2.7.0" - tslib "^2.4.0" - -is-builtin-module@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" - integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== - dependencies: - builtin-modules "^3.3.0" - -is-core-module@^2.13.0: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= - -is-reference@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" - integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== - dependencies: - "@types/estree" "*" - -jest-worker@^26.2.1: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -json-logic-js@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/json-logic-js/-/json-logic-js-2.0.2.tgz#b613e095f5e598cb78f7b9a2bbf638e74cf98158" - integrity sha512-ZBtBdMJieqQcH7IX/LaBsr5pX+Y5JIW+EhejtM3Ffg2jdN9Iwf+Ht6TbHnvAZ/YtwyuhPaCBlnvzrwVeWdvGDQ== - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -loose-envify@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -magic-string@^0.30.3: - version "0.30.5" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" - integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.15" - -make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -picomatch@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" - integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== - -picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pkg-dir@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -proxy-compare@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-2.5.1.tgz#17818e33d1653fbac8c2ec31406bce8a2966f600" - integrity sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA== - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -react@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - dependencies: - loose-envify "^1.1.0" - -resolve@^1.22.1: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -rollup-plugin-terser@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" - integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== - dependencies: - "@babel/code-frame" "^7.10.4" - jest-worker "^26.2.1" - serialize-javascript "^4.0.0" - terser "^5.0.0" - -rollup-plugin-typescript2@^0.36.0: - version "0.36.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.36.0.tgz#309564eb70d710412f5901344ca92045e180ed53" - integrity sha512-NB2CSQDxSe9+Oe2ahZbf+B4bh7pHwjV5L+RSYpCu7Q5ROuN94F9b6ioWwKfz3ueL3KTtmX4o2MUH2cgHDIEUsw== - dependencies: - "@rollup/pluginutils" "^4.1.2" - find-cache-dir "^3.3.2" - fs-extra "^10.0.0" - semver "^7.5.4" - tslib "^2.6.2" - -rollup@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.1.4.tgz#cf0ab00d9183a3d11fcc5d630270463b13831221" - integrity sha512-U8Yk1lQRKqCkDBip/pMYT+IKaN7b7UesK3fLSTuHBoBJacCE+oBqo/dfG/gkUdQNNB2OBmRP98cn2C2bkYZkyw== - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.1.4" - "@rollup/rollup-android-arm64" "4.1.4" - "@rollup/rollup-darwin-arm64" "4.1.4" - "@rollup/rollup-darwin-x64" "4.1.4" - "@rollup/rollup-linux-arm-gnueabihf" "4.1.4" - "@rollup/rollup-linux-arm64-gnu" "4.1.4" - "@rollup/rollup-linux-arm64-musl" "4.1.4" - "@rollup/rollup-linux-x64-gnu" "4.1.4" - "@rollup/rollup-linux-x64-musl" "4.1.4" - "@rollup/rollup-win32-arm64-msvc" "4.1.4" - "@rollup/rollup-win32-ia32-msvc" "4.1.4" - "@rollup/rollup-win32-x64-msvc" "4.1.4" - fsevents "~2.3.2" - -safe-buffer@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -semver@^6.0.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -source-map-support@~0.5.19: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -swr@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/swr/-/swr-1.3.0.tgz#c6531866a35b4db37b38b72c45a63171faf9f4e8" - integrity sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw== - -terser@^5.0.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693" - integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g== - dependencies: - commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.19" - -tslib@^2.4.0, tslib@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -unfetch@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" - integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -use-sync-external-store@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" - integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== - -valtio@^1.6.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.11.3.tgz#92aabcc79458f6af7cf3b2b18cbaef34956dcd8f" - integrity sha512-HL50LlM6YrYfai5H9QKSU0HJYOkghyGvZeRMCJSI6q79DWSng0PdCzT3S3M2UAcvtqBSteThqmhh6jHYyxPUTg== - dependencies: - proxy-compare "2.5.1" - use-sync-external-store "1.2.0" - -window-or-global@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/window-or-global/-/window-or-global-1.0.1.tgz#dbe45ba2a291aabc56d62cf66c45b7fa322946de" - integrity sha512-tE12J/NenOv4xdVobD+AD3fT06T4KNqnzRhkv5nBIu7K+pvOH2oLCEgYP+i+5mF2jtI6FEADheOdZkA8YWET9w== - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== diff --git a/packages/react-web/lib/nextjs-app-router/package.json b/packages/react-web/lib/nextjs-app-router/package.json deleted file mode 100644 index 25696144c9..0000000000 --- a/packages/react-web/lib/nextjs-app-router/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "exports": { - "import": "./index.js", - "require": "./index.cjs.js" - }, - "module": "./index.js", - "main": "./index.cjs.js" -} diff --git a/packages/react-web/lib/nextjs-app-router/react-server/package.json b/packages/react-web/lib/nextjs-app-router/react-server/package.json deleted file mode 100644 index 25696144c9..0000000000 --- a/packages/react-web/lib/nextjs-app-router/react-server/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "exports": { - "import": "./index.js", - "require": "./index.cjs.js" - }, - "module": "./index.js", - "main": "./index.cjs.js" -} diff --git a/packages/react-web/package.json b/packages/react-web/package.json index 92370dd59b..67760a837d 100644 --- a/packages/react-web/package.json +++ b/packages/react-web/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicapp/react-web", - "version": "1.0.2", - "description": "plasmic library for rendering in the presentational style", + "version": "1.0.28", + "description": "Runtime library for rendering Plasmic-generated React components — variants, slots, overrides, and styling.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "packages/react-web" + }, + "license": "MIT", "main": "dist/index.cjs.js", "types": "dist/index.d.ts", "module": "dist/react-web.esm.js", @@ -75,7 +82,7 @@ "scripts": { "build": "rollup -c && mkdir -p lib && cp src/styles/plasmic.css lib/", "clean": "rm -rf dist/ skinny/dist/ lib/host/*js lib/host/*.ts lib/host/*.map lib/data-sources/*js lib/data-sources/*.ts lib/data-sources/*.map lib/query/*js lib/query/*.ts lib/query/*.map lib/auth/*js lib/auth/*.ts lib/auth/*.map lib/splits/*js lib/splits/*.ts lib/splits/*.map", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test", + "test": "TEST_CWD=`pwd` pnpm -w test", "lint": "eslint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -85,14 +92,13 @@ "test-storybook": "test-storybook" }, "dependencies": { - "@plasmicapp/auth-react": "0.0.27", - "@plasmicapp/data-sources": "1.0.2", - "@plasmicapp/data-sources-context": "0.1.23", - "@plasmicapp/host": "2.0.1", - "@plasmicapp/loader-splits": "1.0.70", - "@plasmicapp/nextjs-app-router": "1.0.22", - "@plasmicapp/prepass": "1.0.24", - "@plasmicapp/query": "0.1.84", + "@plasmicapp/auth-react": "0.0.30", + "@plasmicapp/data-sources": "1.0.23", + "@plasmicapp/data-sources-context": "0.1.25", + "@plasmicapp/host": "2.0.14", + "@plasmicapp/loader-splits": "1.0.75", + "@plasmicapp/prepass": "1.0.27", + "@plasmicapp/query": "0.1.87", "@react-aria/checkbox": "^3.15.5", "@react-aria/focus": "^3.20.3", "@react-aria/interactions": "^3.25.1", @@ -117,19 +123,19 @@ "valtio": "^1.6.4" }, "devDependencies": { - "@babel/core": "^7.14.6", - "@babel/preset-env": "^7.22.15", - "@babel/preset-react": "^7.22.15", - "@babel/preset-typescript": "^7.22.15", + "@babel/core": "^7.29.0", + "@babel/preset-env": "^7.29.2", + "@babel/preset-react": "^7.28.5", + "@babel/preset-typescript": "^7.28.5", "@react-types/overlays": "^3.8.15", "@react-types/select": "^3.9.2", "@react-types/shared": "^3.22.1", "@rollup/plugin-commonjs": "^25.0.2", - "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^15.1.0", - "@types/classnames": "^2.3.1", - "@types/clone": "^2.1.1", - "@types/dlv": "^1.1.2", + "@types/classnames": "^2.3.4", + "@types/clone": "^2.1.4", + "@types/dlv": "^1.1.5", "@types/react": "^18", "@types/react-dom": "^18", "react": "18.3.1", diff --git a/packages/react-web/src/index-common.tsx b/packages/react-web/src/index-common.tsx index 165c62f2aa..dd5a67ab63 100644 --- a/packages/react-web/src/index-common.tsx +++ b/packages/react-web/src/index-common.tsx @@ -49,3 +49,14 @@ export { useTrigger } from "./render/triggers"; export * from "./states"; // Using any while classnames package is not updated to have the correct types exported export const classNames: any = _classNames; + +/** + * Props for generated page components. + * @internal + */ +export type ParamsRecord = Record; +/** @internal */ +export interface PlasmicPageProps { + params?: Promise | ParamsRecord; + searchParams?: Promise | ParamsRecord; +} diff --git a/packages/react-web/src/render/ssr.tsx b/packages/react-web/src/render/ssr.tsx index 9ac87613e8..49ee3669c7 100644 --- a/packages/react-web/src/render/ssr.tsx +++ b/packages/react-web/src/render/ssr.tsx @@ -37,6 +37,63 @@ export interface PlasmicRootProviderProps suspenseFallback?: React.ReactNode; } +/** + * PlasmicRootProvider sets up the React context that Plasmic-generated components + * rely on including data sources, i18n, Head, and Link. + * + * In Next.js app router, props passed from a Server to a Client Components must be serializable + * but several PlasmicRootProvider props are not (e.g. `loader`, `Link` from `next/link`). + * We recommend defining a Client Component wrapper (`ClientPlasmicRootProvider` in + * `plasmic-init-client.tsx`) that imports non-serializable values and passes them to + * PlasmicRootProvider (and only accepts serializable props from its caller). + * + * Loader example: + * + * ```tsx + * // plasmic-init-client.tsx + * "use client"; + * import { PlasmicRootProvider } from "@plasmicapp/loader-nextjs"; + * import { PLASMIC } from "@/plasmic-init"; + * export function ClientPlasmicRootProvider( + * props: Omit, "loader"> + * ) { + * return ; + * } + * ``` + * + * Codegen example: + * + * ```tsx + * // plasmic-init-client.tsx + * "use client"; + * import { PlasmicRootProvider } from "@plasmicapp/react-web"; + * import Link from "next/link"; + * export function ClientPlasmicRootProvider( + * props: Omit, "Link"> + * ) { + * return ; + * } + * ``` + * + * A Server Component can then render `ClientPlasmicRootProvider` and pass + * serializable props such as prefetched data and children: + * + * ```tsx + * import { PLASMIC } from "@/plasmic-init"; + * import { ClientPlasmicRootProvider } from "@/plasmic-init-client"; + * export default async function MyPage() { + * const prefetchedData = await PLASMIC.fetchComponentData("YourPage"); + * return ( + * + * {yourContent()} + * + * ); + * } + * ``` + * + * See https://nextjs.org/docs/app/getting-started/server-and-client-components#passing-data-from-server-to-client-components + * for more on the Server/Client Component boundary. + */ export function PlasmicRootProvider(props: PlasmicRootProviderProps) { const { platform, diff --git a/packages/watcher/package.json b/packages/watcher/package.json index 1aeb4cacb9..ace5bb5d5d 100644 --- a/packages/watcher/package.json +++ b/packages/watcher/package.json @@ -1,5 +1,12 @@ { - "version": "1.0.84", + "version": "1.0.86", + "description": "Watch a Plasmic project for changes over socket.io and trigger live updates during development.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "packages/watcher" + }, "license": "MIT", "sideEffects": false, "types": "./dist/index.d.ts", @@ -19,10 +26,10 @@ "node": ">=10" }, "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.ts", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test", + "test": "TEST_CWD=`pwd` pnpm -w test", "lint": "eslint", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh", diff --git a/plasmicpkgs-dev/app/[[...catchall]]/page.tsx b/plasmicpkgs-dev/app/[[...catchall]]/page.tsx index 5ebce70dbd..c94fa3259a 100644 --- a/plasmicpkgs-dev/app/[[...catchall]]/page.tsx +++ b/plasmicpkgs-dev/app/[[...catchall]]/page.tsx @@ -1,5 +1,5 @@ import { PLASMIC } from "@/plasmic-init"; -import { PlasmicClientRootProvider } from "@/plasmic-init-client"; +import { ClientPlasmicRootProvider } from "@/plasmic-init-client"; import { ComponentRenderData, PlasmicComponent, @@ -32,10 +32,11 @@ export async function generateStaticParams(): Promise { interface LoaderPageProps { params: Promise; + searchParams: Promise>; } export async function generateMetadata( - { params }: LoaderPageProps, + { params, searchParams }: LoaderPageProps, parent: ResolvingMetadata ): Promise { const { componentData } = await getPageData(params); @@ -44,39 +45,42 @@ export async function generateMetadata( return parent as Promise; } const pageMeta = componentData.entryCompMetas[0]; - const metadata = await PLASMIC.unstable__generateMetadata(componentData, { + const metadata = await PLASMIC.getPlasmicMetadata(componentData, { params: pageMeta.params ?? {}, - query: {}, + query: searchParams, }); return { ...(await parent), ...metadata }; } -export default async function PlasmicLoaderPage({ params }: LoaderPageProps) { - const { pagePath, componentData } = await getPageData(params); +export default async function PlasmicLoaderPage({ + params, + searchParams, +}: LoaderPageProps) { + const { componentData } = await getPageData(params); if (!componentData) { notFound(); } const pageMeta = componentData.entryCompMetas[0]; - const prefetchedQueryData = await PLASMIC.unstable__getServerQueriesData( + const prefetchedQueryData = await PLASMIC.getPlasmicQueriesData( componentData, { - pagePath, params: pageMeta.params, - query: {}, + query: searchParams, } ); return ( - - + ); } diff --git a/plasmicpkgs-dev/package.json b/plasmicpkgs-dev/package.json index 4f0f519c46..0a9176ded0 100644 --- a/plasmicpkgs-dev/package.json +++ b/plasmicpkgs-dev/package.json @@ -1,6 +1,6 @@ { "name": "plasmicpkgs-dev", - "version": "0.0.61", + "version": "0.0.82", "private": true, "scripts": { "dev": "next dev --port 3001", @@ -8,6 +8,7 @@ "test": "vitest run" }, "dependencies": { +<<<<<<< HEAD "@elasticpath/plasmic-ep-commerce-elastic-path": "0.0.3", "@elasticpath/plasmic-mcp-registry": "file:../packages/plasmic-mcp-registry", "@plasmicapp/loader-nextjs": "2.0.2", @@ -22,6 +23,20 @@ "@plasmicpkgs/plasmic-strapi": "0.1.200", "@plasmicpkgs/strapi": "0.0.19", "@plasmicpkgs/wordpress": "0.0.20", +======= + "@plasmicapp/loader-nextjs": "2.0.20", + "@plasmicpkgs/cms": "0.0.35", + "@plasmicpkgs/commerce": "0.0.255", + "@plasmicpkgs/commerce-shopify": "0.0.263", + "@plasmicpkgs/contentful": "0.0.29", + "@plasmicpkgs/fetch": "0.0.49", + "@plasmicpkgs/graphql": "0.0.43", + "@plasmicpkgs/plasmic-basic-components": "0.0.286", + "@plasmicpkgs/plasmic-cms": "0.0.326", + "@plasmicpkgs/plasmic-strapi": "0.1.214", + "@plasmicpkgs/strapi": "0.0.33", + "@plasmicpkgs/wordpress": "0.0.34", +>>>>>>> upstream/master "next": "^15.5.9", "react": "^19", "react-dom": "^19" diff --git a/plasmicpkgs-dev/plasmic-init-client.tsx b/plasmicpkgs-dev/plasmic-init-client.tsx index 2a84709581..2a6f3b7bb2 100644 --- a/plasmicpkgs-dev/plasmic-init-client.tsx +++ b/plasmicpkgs-dev/plasmic-init-client.tsx @@ -38,7 +38,7 @@ if (useDevNames) { } /** - * PlasmicClientRootProvider is a Client Component that passes in the loader for you. + * ClientPlasmicRootProvider is a Client Component that passes in the loader for you. * * Why? Props passed from Server to Client Components must be serializable. * https://beta.nextjs.org/docs/rendering/server-and-client-components#passing-props-from-server-to-client-components-serialization @@ -62,26 +62,26 @@ if (useDevNames) { * } * ``` * - * Therefore, we define PlasmicClientRootProvider as a Client Component (this file is marked "use client"). - * PlasmicClientRootProvider wraps the PlasmicRootProvider and passes in the loader for you, + * Therefore, we define ClientPlasmicRootProvider as a Client Component (this file is marked "use client"). + * ClientPlasmicRootProvider wraps the PlasmicRootProvider and passes in the loader for you, * while allowing your Server Component to pass in prefetched data and other serializable props: * * ```tsx * import { PLASMIC } from "@/plasmic-init"; - * import { PlasmicClientRootProvider } from "@/plasmic-init-client"; // changed + * import { ClientPlasmicRootProvider } from "@/plasmic-init-client"; // changed * export default function MyPage() { * const prefetchedData = await PLASMIC.fetchComponentData("YourPage"); * return ( - * * {yourContent()} - * ; + * ; * ); * } * ``` */ -export function PlasmicClientRootProvider( +export function ClientPlasmicRootProvider( props: Omit, "loader"> ) { return ( diff --git a/plasmicpkgs/airtable/package.json b/plasmicpkgs/airtable/package.json index 0a3b9cc436..6513280b48 100644 --- a/plasmicpkgs/airtable/package.json +++ b/plasmicpkgs/airtable/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/airtable", - "version": "0.0.258", - "description": "Plasmic registration call for the HTML5 video element", + "version": "0.0.271", + "description": "Plasmic code components for displaying Airtable records and collections.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/airtable" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/airtable.esm.js", @@ -21,15 +28,15 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@types/node": "^14.18.63", "@types/react": "^18", "tsdx": "^0.14.1", "tslib": "^2.2.0" diff --git a/plasmicpkgs/antd/package.json b/plasmicpkgs/antd/package.json index 3a958c378a..ae6b065a7f 100644 --- a/plasmicpkgs/antd/package.json +++ b/plasmicpkgs/antd/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/antd", - "version": "2.0.166", - "description": "Plasmic registration calls for antd components", + "version": "2.0.179", + "description": "Plasmic registration calls for Ant Design v4 components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/antd" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/antd.esm.js", @@ -48,8 +55,8 @@ } ], "scripts": { - "build": "rollup -c rollup.config.mjs && yarn copy_css_files && yarn gentypes", - "gentypes": "yarn tsc --emitDeclarationOnly --declaration src/index.ts --incremental --tsBuildInfoFile ./dist/.tsbuildinfo --skipLibCheck --jsx react --lib dom,es2019 --esModuleInterop --strict --outDir ./dist/ && cp ./dist/*.d.ts skinny/ && rm skinny/index.d.ts", + "build": "rollup -c rollup.config.mjs && pnpm copy_css_files && pnpm gentypes", + "gentypes": "tsc --emitDeclarationOnly --declaration src/index.ts --incremental --tsBuildInfoFile ./dist/.tsbuildinfo --skipLibCheck --jsx react --lib dom,es2019 --esModuleInterop --strict --outDir ./dist/ && cp ./dist/*.d.ts skinny/ && rm skinny/index.d.ts", "prepublishOnly": "npm run build", "copy_css_files": "cp src/*.css dist/", "size": "size-limit", @@ -59,12 +66,12 @@ "antd": "^4.19.5" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@rollup/plugin-commonjs": "^11.0.0", "@rollup/plugin-json": "^4.0.0", "@rollup/plugin-node-resolve": "^9.0.0", - "@types/glob": "^7.1.3", - "@types/node": "^14.0.26", + "@types/glob": "^7.2.0", + "@types/node": "^14.18.63", "@types/react": "^18", "glob": "^7.1.3", "rc-menu": "~9.8.0", diff --git a/plasmicpkgs/antd5/package.json b/plasmicpkgs/antd5/package.json index 7e4c71cf36..54d1ebe921 100644 --- a/plasmicpkgs/antd5/package.json +++ b/plasmicpkgs/antd5/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/antd5", - "version": "0.0.339", - "description": "Plasmic registration calls for antd components", + "version": "0.0.365", + "description": "Plasmic registration calls for Ant Design v5 components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/antd5" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/antd.esm.js", @@ -47,13 +54,13 @@ } ], "scripts": { - "build": "rollup -c rollup.config.mjs && yarn tsc --emitDeclarationOnly --declaration src/index.ts --incremental --tsBuildInfoFile ./dist/.tsbuildinfo --skipLibCheck --jsx react --lib dom,esnext --esModuleInterop --strict --outDir ./dist/ && cp ./dist/*.d.ts skinny/ && rm skinny/index.d.ts", + "build": "rollup -c rollup.config.mjs && tsc --emitDeclarationOnly --declaration src/index.ts --incremental --tsBuildInfoFile ./dist/.tsbuildinfo --skipLibCheck --jsx react --lib dom,esnext --esModuleInterop --strict --outDir ./dist/ && cp ./dist/*.d.ts skinny/ && rm skinny/index.d.ts", "prepublishOnly": "npm run build", "clean": "rm -rf dist/ skinny/*.ts skinny/*.map skinny/*.js", "storybook": "storybook dev -p 6006 --no-open", "build-storybook": "storybook build", "test-storybook": "test-storybook", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test" + "test": "TEST_CWD=`pwd` pnpm -w test" }, "dependencies": { "antd": "^5.12.7", @@ -66,15 +73,15 @@ "@babel/preset-env": "^7.22.15", "@babel/preset-react": "^7.22.15", "@babel/preset-typescript": "^7.22.15", - "@plasmicapp/data-sources": "1.0.2", - "@plasmicapp/host": "2.0.1", - "@plasmicapp/query": "0.1.84", - "@plasmicapp/react-web": "1.0.2", + "@plasmicapp/data-sources": "1.0.23", + "@plasmicapp/host": "2.0.14", + "@plasmicapp/query": "0.1.87", + "@plasmicapp/react-web": "1.0.28", "@rollup/plugin-commonjs": "^11.0.0", "@rollup/plugin-json": "^4.0.0", "@rollup/plugin-node-resolve": "^9.0.0", - "@types/lodash": "^4.14.200", - "@types/node": "^14.0.26", + "@types/lodash": "^4.17.24", + "@types/node": "^14.18.63", "@types/react": "^18", "@types/react-dom": "^18", "glob": "^8.1.0", diff --git a/plasmicpkgs/chakra-ui/package.json b/plasmicpkgs/chakra-ui/package.json index 405de640f3..90c20a9916 100644 --- a/plasmicpkgs/chakra-ui/package.json +++ b/plasmicpkgs/chakra-ui/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-chakra-ui", - "version": "0.0.74", + "version": "0.0.87", "description": "Plasmic registration calls for chakra ui components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/chakra-ui" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/plasmic-chakra-ui.esm.js", @@ -13,8 +20,8 @@ ], "scripts": { "start": "tsdx watch", - "build": "rollup -c rollup.config.mjs && yarn tsc --emitDeclarationOnly --declaration src/index.ts --incremental --tsBuildInfoFile ./dist/.tsbuildinfo --skipLibCheck --jsx react --esModuleInterop --strict --outDir ./dist/", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "build": "rollup -c rollup.config.mjs && tsc --emitDeclarationOnly --declaration src/index.ts --incremental --tsBuildInfoFile ./dist/.tsbuildinfo --skipLibCheck --jsx react --esModuleInterop --strict --outDir ./dist/", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -35,11 +42,11 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@rollup/plugin-commonjs": "^25.0.2", "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-node-resolve": "^15.1.0", - "@types/node": "^14.0.26", + "@types/node": "^14.18.63", "@types/react": "^18", "@types/react-dom": "^18", "react": "^18.2.0", diff --git a/plasmicpkgs/cms/package.json b/plasmicpkgs/cms/package.json index 331759feb3..10317e271e 100644 --- a/plasmicpkgs/cms/package.json +++ b/plasmicpkgs/cms/package.json @@ -1,7 +1,9 @@ { "name": "@plasmicpkgs/cms", - "version": "0.0.21", - "description": "Plasmic CMS custom functions", + "version": "0.0.35", + "description": "Custom functions for querying Plasmic CMS content from Plasmic data queries.", + "homepage": "https://www.plasmic.app", + "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/plasmicapp/plasmic.git", @@ -24,18 +26,18 @@ "dist" ], "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.ts", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test", + "test": "TEST_CWD=`pwd` pnpm -w test", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@react-awesome-query-builder/core": "^6.6.15", "@types/json-logic-js": "^2.0.8", - "@types/node": "^17.0.14" + "@types/node": "^17.0.45" }, "peerDependencies": { "@plasmicapp/host": ">=1.0.211" diff --git a/plasmicpkgs/cms/src/index.ts b/plasmicpkgs/cms/src/index.ts index 0b670aec19..77f574f993 100644 --- a/plasmicpkgs/cms/src/index.ts +++ b/plasmicpkgs/cms/src/index.ts @@ -69,20 +69,25 @@ const hostParam = { const cmsIdParam = { type: "string", + displayName: "CMS ID", description: "ID of the CMS.", + required: true, helpText: "Find the CMS ID on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)", } as const; const cmsPublicTokenParam = { type: "string", + displayName: "CMS public token", description: "Public token of the CMS.", + required: true, helpText: "Find the public token on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)", } as const; const tableIdParam = { type: "choice", + required: true, options: (_args: unknown, ctx: FnContext) => { if (!ctx?.tables) { return []; @@ -109,6 +114,7 @@ const selectParam = { const whereLogicParam = { type: "queryBuilder", + displayName: "Filter", description: "Filter fetched entries. Defaults to fetch all entries.", config: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => { const tableId = opts?.tableId; @@ -133,7 +139,7 @@ const orderByParam = { } as const; const orderDirectionParam = { - label: "Direction", + displayName: "Direction", type: "choice", options: [ { diff --git a/plasmicpkgs/commerce-providers/commerce/package.json b/plasmicpkgs/commerce-providers/commerce/package.json index 9c7535795a..4925371764 100644 --- a/plasmicpkgs/commerce-providers/commerce/package.json +++ b/plasmicpkgs/commerce-providers/commerce/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/commerce", - "version": "0.0.242", - "description": "Plasmic registration calls for commerce components", + "version": "0.0.255", + "description": "Plasmic code components for building ecommerce storefronts — product lists, carts, and checkout.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/commerce-providers/commerce" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/commerce.esm.js", @@ -11,19 +18,19 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@plasmicapp/query": "0.1.84", - "@types/debounce": "^1.2.1", - "@types/js-cookie": "^3.0.1", + "@plasmicapp/host": "2.0.14", + "@plasmicapp/query": "0.1.87", + "@types/debounce": "^1.2.4", + "@types/js-cookie": "^3.0.6", "@types/lodash.debounce": "^4.0.7", - "@types/node": "^14.0.26", + "@types/node": "^14.18.63", "@types/react": "^18", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/plasmicpkgs/commerce-providers/commerce/src/api/endpoints/cart.ts b/plasmicpkgs/commerce-providers/commerce/src/api/endpoints/cart.ts index 42a790fa60..246bd00dcc 100644 --- a/plasmicpkgs/commerce-providers/commerce/src/api/endpoints/cart.ts +++ b/plasmicpkgs/commerce-providers/commerce/src/api/endpoints/cart.ts @@ -54,8 +54,8 @@ const cartEndpoint: GetAPISchema>['endpoint']['handler'] = const message = error instanceof CommerceAPIError - ? 'An unexpected error ocurred with the Commerce API' - : 'An unexpected error ocurred' + ? 'An unexpected error occurred with the Commerce API' + : 'An unexpected error occurred' res.status(500).json({ data: null, errors: [{ message }] }) } diff --git a/plasmicpkgs/commerce-providers/commerce/src/api/endpoints/catalog/products.ts b/plasmicpkgs/commerce-providers/commerce/src/api/endpoints/catalog/products.ts index d41885775f..b13e4dca09 100644 --- a/plasmicpkgs/commerce-providers/commerce/src/api/endpoints/catalog/products.ts +++ b/plasmicpkgs/commerce-providers/commerce/src/api/endpoints/catalog/products.ts @@ -25,8 +25,8 @@ const productsEndpoint: GetAPISchema< const message = error instanceof CommerceAPIError - ? 'An unexpected error ocurred with the Commerce API' - : 'An unexpected error ocurred' + ? 'An unexpected error occurred with the Commerce API' + : 'An unexpected error occurred' res.status(500).json({ data: null, errors: [{ message }] }) } diff --git a/plasmicpkgs/commerce-providers/commercetools/package.json b/plasmicpkgs/commerce-providers/commercetools/package.json index 1db7c4d178..a6a2f48a56 100644 --- a/plasmicpkgs/commerce-providers/commercetools/package.json +++ b/plasmicpkgs/commerce-providers/commercetools/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/commerce-commercetools", - "version": "0.0.192", - "description": "Plasmic registration calls for commercetools commerce provider", + "version": "0.0.205", + "description": "commercetools provider for Plasmic commerce components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/commerce-providers/commercetools" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/commerce-commercetools.esm.js", @@ -11,18 +18,18 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@plasmicapp/query": "0.1.84", + "@plasmicapp/host": "2.0.14", + "@plasmicapp/query": "0.1.87", "@types/debounce": "^1.2.4", - "@types/js-cookie": "^3.0.1", - "@types/node": "^14.0.26", + "@types/js-cookie": "^3.0.6", + "@types/node": "^14.18.63", "@types/react": "^18", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -36,7 +43,7 @@ "dependencies": { "@commercetools/platform-sdk": "^2.8.0", "@commercetools/sdk-client-v2": "^2.2.2", - "@plasmicpkgs/commerce": "0.0.242", + "@plasmicpkgs/commerce": "0.0.255", "debounce": "^2.0.0", "js-cookie": "^3.0.5", "qs": "^6.11.0" diff --git a/plasmicpkgs/commerce-providers/commercetools/src/cart/use-cart.tsx b/plasmicpkgs/commerce-providers/commercetools/src/cart/use-cart.tsx index 9dcdb17c0d..053627d590 100644 --- a/plasmicpkgs/commerce-providers/commercetools/src/cart/use-cart.tsx +++ b/plasmicpkgs/commerce-providers/commercetools/src/cart/use-cart.tsx @@ -1,17 +1,23 @@ -import { useMemo } from 'react' -import { useCart as useCommerceCart, UseCart } from '@plasmicpkgs/commerce' -import { SWRHook } from '@plasmicpkgs/commerce' -import { getActiveCart, normalizeCart } from '../utils' -import { GetCartHook } from '../types/cart' +import { + SWRHook, + UseCart, + useCart as useCommerceCart, +} from "@plasmicpkgs/commerce"; +import { useMemo } from "react"; +import { GetCartHook } from "../types/cart"; +import { getActiveCart, normalizeCart } from "../utils"; -export default useCommerceCart as UseCart +const _default: UseCart = useCommerceCart as UseCart< + typeof handler +>; +export default _default; export const handler: SWRHook = { fetchOptions: { query: "cart", method: "get", }, - async fetcher({ input, options, fetch, provider }) { + async fetcher({ fetch, provider }) { const activeCart = await getActiveCart(fetch); return activeCart ? normalizeCart(activeCart, provider!.locale) : null; }, @@ -20,18 +26,18 @@ export const handler: SWRHook = { (input) => { const response = useData({ swrOptions: { revalidateOnFocus: false, ...input?.swrOptions }, - }) + }); return useMemo( () => Object.create(response, { isEmpty: { get() { - return (response.data?.lineItems.length ?? 0) <= 0 + return (response.data?.lineItems.length ?? 0) <= 0; }, enumerable: true, }, }), [response] - ) + ); }, -} +}; diff --git a/plasmicpkgs/commerce-providers/commercetools/src/product/use-product.tsx b/plasmicpkgs/commerce-providers/commercetools/src/product/use-product.tsx index bb6ef21751..de03c312d5 100644 --- a/plasmicpkgs/commerce-providers/commercetools/src/product/use-product.tsx +++ b/plasmicpkgs/commerce-providers/commercetools/src/product/use-product.tsx @@ -1,51 +1,47 @@ -import { SWRHook } from '@plasmicpkgs/commerce' -import { useProduct, UseProduct } from '@plasmicpkgs/commerce' -import { - Product, - ProductProjection, - ClientResponse, -} from '@commercetools/platform-sdk' -import { normalizeProduct } from '../utils' -import type { GetProductHook } from '@plasmicpkgs/commerce' +import { ClientResponse, ProductProjection } from "@commercetools/platform-sdk"; +import type { GetProductHook } from "@plasmicpkgs/commerce"; +import { SWRHook, useProduct, UseProduct } from "@plasmicpkgs/commerce"; +import { normalizeProduct } from "../utils"; export type GetProductInput = { - id?: string -} + id?: string; +}; -export default useProduct as UseProduct +const _default: UseProduct = useProduct as UseProduct< + typeof handler +>; +export default _default; export const handler: SWRHook = { fetchOptions: { query: "productProjections", - method: "get" + method: "get", }, async fetcher({ input, options, fetch, provider }) { - const { id } = input + const { id } = input; if (!id) { - return null + return null; } const product = await fetch>({ ...options, variables: { - id + id, }, }); - return product.body + return product.body ? normalizeProduct(product.body, provider!.locale) - : null + : null; }, useHook: ({ useData }) => (input = {}) => { return useData({ - input: [ - ['id', input.id], - ], + input: [["id", input.id]], swrOptions: { revalidateOnFocus: false, ...input.swrOptions, }, - }) + }); }, -} +}; diff --git a/plasmicpkgs/commerce-providers/commercetools/src/site/use-brands.tsx b/plasmicpkgs/commerce-providers/commercetools/src/site/use-brands.tsx index bb5adc43f8..b8a517107e 100644 --- a/plasmicpkgs/commerce-providers/commercetools/src/site/use-brands.tsx +++ b/plasmicpkgs/commerce-providers/commercetools/src/site/use-brands.tsx @@ -1,15 +1,17 @@ -import { SWRHook } from '@plasmicpkgs/commerce' -import { UseBrands, useBrands } from '@plasmicpkgs/commerce' +import { SWRHook, UseBrands, useBrands } from "@plasmicpkgs/commerce"; import { useMemo } from "react"; -import { GetBrandsHook } from "../types/site" +import { GetBrandsHook } from "../types/site"; -export default useBrands as UseBrands +const _default: UseBrands = useBrands as UseBrands< + typeof handler +>; +export default _default; export const handler: SWRHook = { fetchOptions: { - query: "" + query: "", }, - async fetcher({ input, options, fetch }) { + async fetcher() { return null; }, useHook: @@ -17,18 +19,18 @@ export const handler: SWRHook = { (input) => { const response = useData({ swrOptions: { revalidateOnFocus: false, ...input?.swrOptions }, - }) + }); return useMemo( () => Object.create(response, { isEmpty: { get() { - return (response.data?.length ?? 0) <= 0 + return (response.data?.length ?? 0) <= 0; }, enumerable: true, }, }), [response] - ) + ); }, -} +}; diff --git a/plasmicpkgs/commerce-providers/commercetools/src/site/use-categories.tsx b/plasmicpkgs/commerce-providers/commercetools/src/site/use-categories.tsx index 85d4f3dafc..b70b353611 100644 --- a/plasmicpkgs/commerce-providers/commercetools/src/site/use-categories.tsx +++ b/plasmicpkgs/commerce-providers/commercetools/src/site/use-categories.tsx @@ -1,14 +1,17 @@ -import { SWRHook, UseCategories, useCategories } from "@plasmicpkgs/commerce"; -import { useMemo } from "react"; -import { GetCategoriesHook } from "../types/site"; import { - ClientResponse, Category, CategoryPagedQueryResponse, -} from '@commercetools/platform-sdk' + ClientResponse, +} from "@commercetools/platform-sdk"; +import { SWRHook, UseCategories, useCategories } from "@plasmicpkgs/commerce"; +import { useMemo } from "react"; +import { GetCategoriesHook } from "../types/site"; import { normalizeCategory } from "../utils"; -export default useCategories as UseCategories; +const _default: UseCategories = useCategories as UseCategories< + typeof handler +>; +export default _default; export const handler: SWRHook = { fetchOptions: { @@ -18,36 +21,46 @@ export const handler: SWRHook = { async fetcher({ input, options, fetch, provider }) { const { categoryId } = input; if (!categoryId) { - const categories = await fetch>({ - ...options - }) - return categories.body ? categories.body.results.map((category) => normalizeCategory(category, provider!.locale)) : []; + const categories = await fetch< + ClientResponse + >({ + ...options, + }); + return categories.body + ? categories.body.results.map((category) => + normalizeCategory(category, provider!.locale) + ) + : []; } else { - const category = await fetch>({ + const category = await fetch>({ ...options, variables: { - ...(categoryId ? { id: categoryId } : { }) - } - }) - return category.body ? [normalizeCategory(category.body, provider!.locale)] : []; + ...(categoryId ? { id: categoryId } : {}), + }, + }); + return category.body + ? [normalizeCategory(category.body, provider!.locale)] + : []; } }, - useHook: ({ useData }) => (input) => { - const response = useData({ - input: [["categoryId", input?.categoryId]], - swrOptions: { revalidateOnFocus: false, ...input?.swrOptions }, - }); - return useMemo( - () => - Object.create(response, { - isEmpty: { - get() { - return (response.data?.length ?? 0) <= 0; + useHook: + ({ useData }) => + (input) => { + const response = useData({ + input: [["categoryId", input?.categoryId]], + swrOptions: { revalidateOnFocus: false, ...input?.swrOptions }, + }); + return useMemo( + () => + Object.create(response, { + isEmpty: { + get() { + return (response.data?.length ?? 0) <= 0; + }, + enumerable: true, }, - enumerable: true, - }, - }), - [response] - ); - }, + }), + [response] + ); + }, }; diff --git a/plasmicpkgs/commerce-providers/local/package.json b/plasmicpkgs/commerce-providers/local/package.json index 2a7417931c..b0ac2e74dc 100644 --- a/plasmicpkgs/commerce-providers/local/package.json +++ b/plasmicpkgs/commerce-providers/local/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/commerce-local", - "version": "0.0.242", - "description": "Plasmic registration calls for local provider components", + "version": "0.0.255", + "description": "Local mock data provider for Plasmic commerce components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/commerce-providers/local" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/commerce-local.esm.js", @@ -18,12 +25,12 @@ "analyze": "size-limit --why" }, "dependencies": { - "@plasmicpkgs/commerce": "0.0.242" + "@plasmicpkgs/commerce": "0.0.255" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/js-cookie": "^3.0.1", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@types/js-cookie": "^3.0.6", + "@types/node": "^14.18.63", "@types/react": "^18", "js-cookie": "^3.0.1", "react": "^18.2.0", diff --git a/plasmicpkgs/commerce-providers/saleor/package.json b/plasmicpkgs/commerce-providers/saleor/package.json index 9fa67886cb..e538a87571 100644 --- a/plasmicpkgs/commerce-providers/saleor/package.json +++ b/plasmicpkgs/commerce-providers/saleor/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/commerce-saleor", - "version": "0.0.206", - "description": "Plasmic registration calls for saleor commerce provider", + "version": "0.0.219", + "description": "Saleor provider for Plasmic commerce components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/commerce-providers/saleor" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/commerce-saleor.esm.js", @@ -11,14 +18,14 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "dependencies": { - "@plasmicpkgs/commerce": "0.0.242", + "@plasmicpkgs/commerce": "0.0.255", "debounce": "^1.2.1", "js-cookie": "^3.0.5" }, @@ -27,10 +34,10 @@ "react": ">=16.8.0" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/debounce": "^1.2.1", - "@types/js-cookie": "^3.0.5", - "@types/node": "^17.0.8", + "@plasmicapp/host": "2.0.14", + "@types/debounce": "^1.2.4", + "@types/js-cookie": "^3.0.6", + "@types/node": "^17.0.45", "@types/react": "^18", "next": "^12.3.7", "prettier": "^2.5.1", diff --git a/plasmicpkgs/commerce-providers/saleor/src/cart/use-cart.tsx b/plasmicpkgs/commerce-providers/saleor/src/cart/use-cart.tsx index 6d89d6098e..6419bc8b7a 100644 --- a/plasmicpkgs/commerce-providers/saleor/src/cart/use-cart.tsx +++ b/plasmicpkgs/commerce-providers/saleor/src/cart/use-cart.tsx @@ -3,15 +3,18 @@ Changes:None */ +import { UseCart, useCart as useCommerceCart } from "@plasmicpkgs/commerce"; import { useMemo } from "react"; -import { useCart as useCommerceCart, UseCart } from "@plasmicpkgs/commerce"; import { SWRHook } from "@plasmicpkgs/commerce"; +import { GetCartHook } from "../types/cart"; import { checkoutCreate, checkoutToCart, getCheckoutId } from "../utils"; import * as query from "../utils/queries"; -import { GetCartHook } from "../types/cart"; -export default useCommerceCart as UseCart; +const _default: UseCart = useCommerceCart as UseCart< + typeof handler +>; +export default _default; export const handler: SWRHook = { fetchOptions: { @@ -21,10 +24,10 @@ export const handler: SWRHook = { let checkout; if (checkoutId) { - const checkoutId = getCheckoutId().checkoutToken; + const checkoutToken = getCheckoutId().checkoutToken; const data = await fetch({ ...options, - variables: { checkoutId }, + variables: { checkoutId: checkoutToken }, }); checkout = data; diff --git a/plasmicpkgs/commerce-providers/saleor/src/product/use-product.tsx b/plasmicpkgs/commerce-providers/saleor/src/product/use-product.tsx index f9049c699c..67d4edc77c 100644 --- a/plasmicpkgs/commerce-providers/saleor/src/product/use-product.tsx +++ b/plasmicpkgs/commerce-providers/saleor/src/product/use-product.tsx @@ -1,24 +1,26 @@ -import { SWRHook } from "@plasmicpkgs/commerce"; -import { useProduct, UseProduct } from "@plasmicpkgs/commerce"; +import { SWRHook, useProduct, UseProduct } from "@plasmicpkgs/commerce"; -import { normalizeProduct } from "../utils"; import type { GetProductHook } from "@plasmicpkgs/commerce"; +import { normalizeProduct } from "../utils"; import { ProductOneById } from "../utils/queries/product-one-by-id"; -import { ProductOneBySlug } from '../utils/queries/product-one-by-slug'; +import { ProductOneBySlug } from "../utils/queries/product-one-by-slug"; export type GetProductInput = { id?: string; - slug?: string + slug?: string; }; -export default useProduct as UseProduct; +const _default: UseProduct = useProduct as UseProduct< + typeof handler +>; +export default _default; export const handler: SWRHook = { fetchOptions: { query: ProductOneById, }, - async fetcher({ input, options, fetch }) { + async fetcher({ input, fetch }) { const { id } = input; if (!id) { return null; @@ -30,21 +32,21 @@ export const handler: SWRHook = { if (!data.product) { const response = await fetch({ query: ProductOneBySlug, - variables: { slug: id } - }) + variables: { slug: id }, + }); return response.product ? normalizeProduct(response.product) : null; } return data.product ? normalizeProduct(data.product) : null; }, useHook: ({ useData }) => - (input = {}) => { - return useData({ - input: [["id", input.id]], - swrOptions: { - revalidateOnFocus: false, - ...input.swrOptions, - }, - }); - }, + (input = {}) => { + return useData({ + input: [["id", input.id]], + swrOptions: { + revalidateOnFocus: false, + ...input.swrOptions, + }, + }); + }, }; diff --git a/plasmicpkgs/commerce-providers/saleor/src/site/use-brands.tsx b/plasmicpkgs/commerce-providers/saleor/src/site/use-brands.tsx index c9fff0fe17..4567c35e8f 100644 --- a/plasmicpkgs/commerce-providers/saleor/src/site/use-brands.tsx +++ b/plasmicpkgs/commerce-providers/saleor/src/site/use-brands.tsx @@ -1,20 +1,18 @@ -import { SWRHook } from "@plasmicpkgs/commerce"; -import { UseBrands, useBrands } from "@plasmicpkgs/commerce"; +import { SWRHook, UseBrands, useBrands } from "@plasmicpkgs/commerce"; import { useMemo } from "react"; -import { - GetAllProductPathsQuery, - GetAllProductPathsQueryVariables, -} from "../schema"; import { GetBrandsHook } from "../types/site"; import { getAllProductVendors } from "../utils"; -export default useBrands as UseBrands; +const _default: UseBrands = useBrands as UseBrands< + typeof handler +>; +export default _default; export const handler: SWRHook = { fetchOptions: { query: getAllProductVendors, }, - async fetcher({ input, options, fetch }) { + async fetcher() { return []; // brands it's not available on saleor }, useHook: diff --git a/plasmicpkgs/commerce-providers/saleor/src/site/use-categories.tsx b/plasmicpkgs/commerce-providers/saleor/src/site/use-categories.tsx index 7826fa2d49..3c53983291 100644 --- a/plasmicpkgs/commerce-providers/saleor/src/site/use-categories.tsx +++ b/plasmicpkgs/commerce-providers/saleor/src/site/use-categories.tsx @@ -1,17 +1,19 @@ -import { SWRHook } from "@plasmicpkgs/commerce"; -import { UseCategories, useCategories } from "@plasmicpkgs/commerce"; +import { SWRHook, UseCategories, useCategories } from "@plasmicpkgs/commerce"; import { useMemo } from "react"; import { CollectionCountableEdge } from "../schema"; import { GetCategoriesHook } from "../types/site"; import { CollectionMany, CollectionOne, normalizeCategory } from "../utils"; -export default useCategories as UseCategories; +const _default: UseCategories = useCategories as UseCategories< + typeof handler +>; +export default _default; export const handler: SWRHook = { fetchOptions: { query: CollectionMany, }, - async fetcher({ input, options, fetch }) { + async fetcher({ input, fetch }) { const { categoryId } = input; if (!categoryId) { const data = await fetch({ @@ -19,7 +21,7 @@ export const handler: SWRHook = { variables: { first: 250, }, - }) + }); return ( data.collections?.edges?.map(({ node }: CollectionCountableEdge) => @@ -31,27 +33,27 @@ export const handler: SWRHook = { query: CollectionOne, variables: { categoryId }, }); - return !!data?.collection ? [normalizeCategory(data?.collection)] : []; + return data?.collection ? [normalizeCategory(data?.collection)] : []; } }, useHook: ({ useData }) => - (input) => { - const response = useData({ - input: [["categoryId", input?.categoryId]], - swrOptions: { revalidateOnFocus: false, ...input?.swrOptions }, - }); - return useMemo( - () => - Object.create(response, { - isEmpty: { - get() { - return (response.data?.length ?? 0) <= 0; - }, - enumerable: true, + (input) => { + const response = useData({ + input: [["categoryId", input?.categoryId]], + swrOptions: { revalidateOnFocus: false, ...input?.swrOptions }, + }); + return useMemo( + () => + Object.create(response, { + isEmpty: { + get() { + return (response.data?.length ?? 0) <= 0; }, - }), - [response] - ); - }, -}; \ No newline at end of file + enumerable: true, + }, + }), + [response] + ); + }, +}; diff --git a/plasmicpkgs/commerce-providers/shopify/package.json b/plasmicpkgs/commerce-providers/shopify/package.json index 12aeb81d12..9b1c89f942 100644 --- a/plasmicpkgs/commerce-providers/shopify/package.json +++ b/plasmicpkgs/commerce-providers/shopify/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/commerce-shopify", - "version": "0.0.250", - "description": "Plasmic registration calls for shopify commerce provider", + "version": "0.0.263", + "description": "Shopify provider for Plasmic commerce components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/commerce-providers/shopify" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/commerce-shopify.esm.js", @@ -11,7 +18,7 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../../.. test", + "test": "TEST_CWD=`pwd` pnpm -w test", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -20,10 +27,10 @@ }, "devDependencies": { "@graphql-codegen/cli": "^5.0.3", - "@plasmicapp/host": "2.0.1", - "@types/debounce": "^1.2.3", - "@types/js-cookie": "^3.0.1", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@types/debounce": "^1.2.4", + "@types/js-cookie": "^3.0.6", + "@types/node": "^14.18.63", "@types/react": "^18", "nock": "14.0.0", "react": "^18.2.0", @@ -35,7 +42,7 @@ "react": ">=16.8.0" }, "dependencies": { - "@plasmicpkgs/commerce": "0.0.242", + "@plasmicpkgs/commerce": "0.0.255", "debounce": "^1.2.1", "js-cookie": "^3.0.5" } diff --git a/plasmicpkgs/commerce-providers/shopify/src/cart/use-cart.tsx b/plasmicpkgs/commerce-providers/shopify/src/cart/use-cart.tsx index 4afae2c250..8144bbf5c8 100644 --- a/plasmicpkgs/commerce-providers/shopify/src/cart/use-cart.tsx +++ b/plasmicpkgs/commerce-providers/shopify/src/cart/use-cart.tsx @@ -18,7 +18,10 @@ import { import { normalizeCart } from "../utils/normalize"; import { getCartQuery } from "../utils/queries/get-cart-query"; -export default useCommerceCart as UseCart; +const _default: UseCart = useCommerceCart as UseCart< + typeof handler +>; +export default _default; export const handler: SWRHook = { fetchOptions: { diff --git a/plasmicpkgs/commerce-providers/shopify/src/product/use-product.tsx b/plasmicpkgs/commerce-providers/shopify/src/product/use-product.tsx index 680f3fdb8a..8add8bb24c 100644 --- a/plasmicpkgs/commerce-providers/shopify/src/product/use-product.tsx +++ b/plasmicpkgs/commerce-providers/shopify/src/product/use-product.tsx @@ -10,7 +10,10 @@ import { getProductQueryBySlug, } from "../utils/queries/get-product-query"; -export default useProduct as UseProduct; +const _default: UseProduct = useProduct as UseProduct< + typeof handler +>; +export default _default; export const handler: SWRHook = { fetchOptions: { diff --git a/plasmicpkgs/commerce-providers/shopify/src/site/use-brands.tsx b/plasmicpkgs/commerce-providers/shopify/src/site/use-brands.tsx index cd735dce27..3a0efd0fde 100644 --- a/plasmicpkgs/commerce-providers/shopify/src/site/use-brands.tsx +++ b/plasmicpkgs/commerce-providers/shopify/src/site/use-brands.tsx @@ -11,13 +11,16 @@ import { } from "../utils/graphql/gen/graphql"; import { getAllProductVendors } from "../utils/queries/get-all-product-vendors-query"; -export default useBrands as UseBrands; +const _default: UseBrands = useBrands as UseBrands< + typeof handler +>; +export default _default; export const handler: SWRHook = { fetchOptions: { query: getAllProductVendors.toString(), }, - async fetcher({ input, options, fetch }) { + async fetcher({ fetch }) { const data = await fetch< GetAllProductVendorsQuery, GetAllProductVendorsQueryVariables @@ -28,7 +31,7 @@ export const handler: SWRHook = { }, }); - let vendorsStrings = data.products.edges.map( + const vendorsStrings = data.products.edges.map( ({ node: { vendor } }) => vendor ); return Array.from(new Set(vendorsStrings).values()).map((v) => { diff --git a/plasmicpkgs/commerce-providers/shopify/src/site/use-categories.tsx b/plasmicpkgs/commerce-providers/shopify/src/site/use-categories.tsx index 7639cc6bcf..7115ed03a8 100644 --- a/plasmicpkgs/commerce-providers/shopify/src/site/use-categories.tsx +++ b/plasmicpkgs/commerce-providers/shopify/src/site/use-categories.tsx @@ -10,7 +10,10 @@ import { normalizeCategory } from "../utils/normalize"; import { getSiteCollectionsQuery } from "../utils/queries/get-all-collections-query"; import { getCollectionQueryById } from "../utils/queries/get-collection-query"; -export default useCategories as UseCategories; +const _default: UseCategories = useCategories as UseCategories< + typeof handler +>; +export default _default; export const handler: SWRHook = { fetchOptions: { @@ -40,7 +43,7 @@ export const handler: SWRHook = { : { handle: categoryId }), }, }); - return !!data?.collection ? [normalizeCategory(data?.collection)] : []; + return data?.collection ? [normalizeCategory(data?.collection)] : []; } }, useHook: diff --git a/plasmicpkgs/commerce-providers/swell/package.json b/plasmicpkgs/commerce-providers/swell/package.json index 6c67145b67..c959f22896 100644 --- a/plasmicpkgs/commerce-providers/swell/package.json +++ b/plasmicpkgs/commerce-providers/swell/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/commerce-swell", - "version": "0.0.252", - "description": "Plasmic registration calls for swell commerce provider", + "version": "0.0.265", + "description": "Swell provider for Plasmic commerce components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/commerce-providers/swell" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/commerce-swell.esm.js", @@ -11,17 +18,17 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/debounce": "^1.2.3", - "@types/js-cookie": "^3.0.1", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@types/debounce": "^1.2.4", + "@types/js-cookie": "^3.0.6", + "@types/node": "^14.18.63", "@types/react": "^18", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -32,7 +39,7 @@ "react": ">=16.8.0" }, "dependencies": { - "@plasmicpkgs/commerce": "0.0.242", + "@plasmicpkgs/commerce": "0.0.255", "debounce": "^1.2.1", "js-cookie": "^3.0.5", "swell-js": "^3.13.0" diff --git a/plasmicpkgs/commerce-providers/swell/src/cart/use-cart.tsx b/plasmicpkgs/commerce-providers/swell/src/cart/use-cart.tsx index c33bbd1040..a3418c2a8f 100644 --- a/plasmicpkgs/commerce-providers/swell/src/cart/use-cart.tsx +++ b/plasmicpkgs/commerce-providers/swell/src/cart/use-cart.tsx @@ -2,44 +2,44 @@ Forked from https://github.com/vercel/commerce/tree/main/packages/swell/src Changes: None */ -import { useCart, UseCart } from '@plasmicpkgs/commerce' -import { SWRHook } from '@plasmicpkgs/commerce' -import { useMemo } from 'react' -import { normalizeCart } from '../utils/normalize' -import { checkoutCreate, checkoutToCart } from './utils' -import type { CartType } from '@plasmicpkgs/commerce' +import type { CartType } from "@plasmicpkgs/commerce"; +import { SWRHook, useCart, UseCart } from "@plasmicpkgs/commerce"; +import { useMemo } from "react"; +import { normalizeCart } from "../utils/normalize"; +import { checkoutCreate } from "./utils"; -export default useCart as UseCart +const _default: UseCart = useCart as UseCart; +export default _default; type GetCartHook = CartType.GetCartHook; export const handler: SWRHook = { fetchOptions: { - query: 'cart', - method: 'get', + query: "cart", + method: "get", }, async fetcher({ fetch }) { - const cart = await checkoutCreate(fetch) + const cart = await checkoutCreate(fetch); - return cart ? normalizeCart(cart) : null + return cart ? normalizeCart(cart) : null; }, useHook: ({ useData }) => (input) => { const response = useData({ swrOptions: { revalidateOnFocus: false, ...input?.swrOptions }, - }) + }); return useMemo( () => Object.create(response, { isEmpty: { get() { - return (response.data?.lineItems.length ?? 0) <= 0 + return (response.data?.lineItems.length ?? 0) <= 0; }, enumerable: true, }, }), [response] - ) + ); }, -} +}; diff --git a/plasmicpkgs/commerce-providers/swell/src/product/use-product.tsx b/plasmicpkgs/commerce-providers/swell/src/product/use-product.tsx index 8ea387e986..1e0eacb33e 100644 --- a/plasmicpkgs/commerce-providers/swell/src/product/use-product.tsx +++ b/plasmicpkgs/commerce-providers/swell/src/product/use-product.tsx @@ -1,17 +1,24 @@ -import { GetProductHook, SWRHook, UseProduct, useProduct } from '@plasmicpkgs/commerce' -import { normalizeProduct } from '../utils' -import { SwellProduct } from '../types' +import { + GetProductHook, + SWRHook, + UseProduct, + useProduct, +} from "@plasmicpkgs/commerce"; +import { normalizeProduct } from "../utils"; export type GetProductInput = { id?: string; -} +}; -export default useProduct as UseProduct +const _default: UseProduct = useProduct as UseProduct< + typeof handler +>; +export default _default; export const handler: SWRHook = { fetchOptions: { - query: 'products', - method: 'get', + query: "products", + method: "get", }, async fetcher({ input, options, fetch }) { const { id } = input; @@ -29,13 +36,11 @@ export const handler: SWRHook = { ({ useData }) => (input = {}) => { return useData({ - input: [ - ['id', input.id], - ], + input: [["id", input.id]], swrOptions: { revalidateOnFocus: false, ...input.swrOptions, }, - }) + }); }, -} +}; diff --git a/plasmicpkgs/commerce-providers/swell/src/provider.ts b/plasmicpkgs/commerce-providers/swell/src/provider.ts index 295072ad97..3a9dd6a6c6 100644 --- a/plasmicpkgs/commerce-providers/swell/src/provider.ts +++ b/plasmicpkgs/commerce-providers/swell/src/provider.ts @@ -17,9 +17,8 @@ import { handler as useBrands } from "./site/use-brands"; import { handler as useCategories } from "./site/use-categories"; export const getSwellProvider = (storeId: string, publicKey: string) => { - // Their types claim `init` is a named export, but examining the JS files in - // dist/, you can see it's actually a function on the default export. - // @ts-expect-error swell-js types are wrong + // swell-js exports `init` as a named function; with esModuleInterop the + // default import resolves it as a method on the namespace, so this typechecks. swell.init(storeId, publicKey); return { diff --git a/plasmicpkgs/commerce-providers/swell/src/site/use-brands.ts b/plasmicpkgs/commerce-providers/swell/src/site/use-brands.ts index 5ba261feb6..9df1786bd2 100644 --- a/plasmicpkgs/commerce-providers/swell/src/site/use-brands.ts +++ b/plasmicpkgs/commerce-providers/swell/src/site/use-brands.ts @@ -6,7 +6,10 @@ import { } from "@plasmicpkgs/commerce"; import { useMemo } from "react"; -export default useBrands as UseBrands; +const _default: UseBrands = useBrands as UseBrands< + typeof handler +>; +export default _default; type GetBrandsHook = SiteTypes.GetBrandsHook; @@ -30,21 +33,23 @@ export const handler: SWRHook = { path: `brands/${v}`, })); }, - useHook: ({ useData }) => (input) => { - const response = useData({ - swrOptions: { revalidateOnFocus: false, ...input?.swrOptions }, - }); - return useMemo( - () => - Object.create(response, { - isEmpty: { - get() { - return (response.data?.length ?? 0) <= 0; + useHook: + ({ useData }) => + (input) => { + const response = useData({ + swrOptions: { revalidateOnFocus: false, ...input?.swrOptions }, + }); + return useMemo( + () => + Object.create(response, { + isEmpty: { + get() { + return (response.data?.length ?? 0) <= 0; + }, + enumerable: true, }, - enumerable: true, - }, - }), - [response] - ); - }, + }), + [response] + ); + }, }; diff --git a/plasmicpkgs/commerce-providers/swell/src/site/use-categories.ts b/plasmicpkgs/commerce-providers/swell/src/site/use-categories.ts index 8fbd14ddcb..6c7037efe1 100644 --- a/plasmicpkgs/commerce-providers/swell/src/site/use-categories.ts +++ b/plasmicpkgs/commerce-providers/swell/src/site/use-categories.ts @@ -10,7 +10,10 @@ import { normalizeCategory } from "../utils"; import { topologicalSortForCategoryTree } from "../utils/category-tree"; import { ensureNoNilFields } from "../utils/common"; -export default useCategories as UseCategories; +const _default: UseCategories = useCategories as UseCategories< + typeof handler +>; +export default _default; type GetCategoriesHook = SiteTypes.GetCategoriesHook; @@ -61,25 +64,27 @@ export const handler: SWRHook = { } return normalizedCategories; }, - useHook: ({ useData }) => (input) => { - const response = useData({ - input: [ - ["addIsEmptyField", input?.addIsEmptyField], - ["categoryId", input?.categoryId], - ], - swrOptions: { revalidateOnFocus: false, ...input?.swrOptions }, - }); - return useMemo( - () => - Object.create(response, { - isEmpty: { - get() { - return (response.data?.length ?? 0) <= 0; + useHook: + ({ useData }) => + (input) => { + const response = useData({ + input: [ + ["addIsEmptyField", input?.addIsEmptyField], + ["categoryId", input?.categoryId], + ], + swrOptions: { revalidateOnFocus: false, ...input?.swrOptions }, + }); + return useMemo( + () => + Object.create(response, { + isEmpty: { + get() { + return (response.data?.length ?? 0) <= 0; + }, + enumerable: true, }, - enumerable: true, - }, - }), - [response] - ); - }, + }), + [response] + ); + }, }; diff --git a/plasmicpkgs/contentful/package.json b/plasmicpkgs/contentful/package.json index eaafca0f21..2fd7be6459 100644 --- a/plasmicpkgs/contentful/package.json +++ b/plasmicpkgs/contentful/package.json @@ -1,7 +1,9 @@ { "name": "@plasmicpkgs/contentful", - "version": "0.0.16", - "description": "Plasmic registration for Contentful", + "version": "0.0.29", + "description": "Custom functions for querying Contentful content from Plasmic data queries.", + "homepage": "https://www.plasmic.app", + "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/plasmicapp/plasmic.git", @@ -24,19 +26,20 @@ "dist" ], "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.ts", "test": "vitest run", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@react-awesome-query-builder/core": "^6.6.15", "@types/json-logic-js": "^2.0.8", "typescript": "^5.7.3", - "vitest": "3.2.4" + "vite": "8.1.5", + "vitest": "4.1.10" }, "peerDependencies": { "@plasmicapp/host": ">=1.0.211" diff --git a/plasmicpkgs/contentful/src/query-contentful.ts b/plasmicpkgs/contentful/src/query-contentful.ts index 0cbe7ff6a8..1cbb01b77d 100644 --- a/plasmicpkgs/contentful/src/query-contentful.ts +++ b/plasmicpkgs/contentful/src/query-contentful.ts @@ -316,10 +316,12 @@ export const queryContentfulMeta: CustomFunctionMeta = { space: { type: "string", description: "Contentful space ID", + required: true, }, accessToken: { type: "string", description: "Contentful access token", + required: true, }, environment: { type: "string", @@ -329,6 +331,7 @@ export const queryContentfulMeta: CustomFunctionMeta = { type: "choice", displayName: "Content Type", description: "Content type to query", + required: true, options: (_: any, ctx: any) => { return ( ctx?.contentTypes?.map((ct: ContentTypeSchema) => ({ diff --git a/plasmicpkgs/dnd-kit/package.json b/plasmicpkgs/dnd-kit/package.json index 105bd47b41..224eaee78e 100644 --- a/plasmicpkgs/dnd-kit/package.json +++ b/plasmicpkgs/dnd-kit/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/dnd-kit", - "version": "0.0.21", - "description": "Plasmic Spotify components.", + "version": "0.0.35", + "description": "Plasmic code components for building sortable drag-and-drop lists with dnd-kit.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/dnd-kit" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/dnd-kit.esm.js", @@ -14,7 +21,7 @@ "scripts": { "start": "tsdx watch", "build": "tsdx build", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -34,7 +41,7 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@types/react": "^18", "@types/react-dom": "^18", "husky": "^7.0.4", diff --git a/plasmicpkgs/dnd-kit/src/sortable.tsx b/plasmicpkgs/dnd-kit/src/sortable.tsx index c6151afb3d..0b774f9772 100644 --- a/plasmicpkgs/dnd-kit/src/sortable.tsx +++ b/plasmicpkgs/dnd-kit/src/sortable.tsx @@ -265,8 +265,6 @@ export function Sortable({ activationConstraint, }), useSensor(KeyboardSensor, { - // Disable smooth scrolling in Cypress automated tests - scrollBehavior: "Cypress" in globalThis ? "auto" : undefined, coordinateGetter, }) ); diff --git a/plasmicpkgs/fetch/package.json b/plasmicpkgs/fetch/package.json index 53a0038ccf..b0b3ca2494 100644 --- a/plasmicpkgs/fetch/package.json +++ b/plasmicpkgs/fetch/package.json @@ -1,7 +1,9 @@ { "name": "@plasmicpkgs/fetch", - "version": "0.0.34", - "description": "Plasmic registration call for fetch function", + "version": "0.0.49", + "description": "Custom function for making HTTP requests from Plasmic data queries.", + "homepage": "https://www.plasmic.app", + "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/plasmicapp/plasmic.git", @@ -24,14 +26,14 @@ "dist" ], "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.ts", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "typescript": "^5.7.3" }, "peerDependencies": { diff --git a/plasmicpkgs/fetch/src/index.ts b/plasmicpkgs/fetch/src/index.ts index 49d5aa4589..9d86a8364f 100644 --- a/plasmicpkgs/fetch/src/index.ts +++ b/plasmicpkgs/fetch/src/index.ts @@ -1,5 +1,6 @@ import registerFunction, { CustomFunctionMeta, + FunctionControlExtras, } from "@plasmicapp/host/registerFunction"; type Registerable = { @@ -18,7 +19,18 @@ class HttpError extends Error { } // Some functions were extracted from platform/wab/src/wab/server/data-sources/http-fetcher.ts -type HTTPMethod = "GET" | "POST" | "PUT" | "DELETE"; +const HTTP_METHODS = [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE", + "HEAD", + "OPTIONS", +] as const; +type HTTPMethod = (typeof HTTP_METHODS)[number]; + +const METHODS_WITHOUT_BODY: ReadonlySet = new Set(["GET", "HEAD"]); function base64StringToBuffer(bstr: string) { try { @@ -106,6 +118,7 @@ const registerFetchParams: CustomFunctionMeta = { importPath: "@plasmicpkgs/fetch", displayName: "HTTP Fetch", isQuery: true, + isMutation: true, params: [ { name: "opts", @@ -114,17 +127,25 @@ const registerFetchParams: CustomFunctionMeta = { fields: { url: { type: "string", + displayName: "URL", + required: true, }, method: { type: "choice", - options: ["GET", "POST", "PUT", "DELETE"], + options: [...HTTP_METHODS], + defaultValue: ( + _args: unknown, + _data: unknown, + extras: FunctionControlExtras + ) => (extras.mode === "mutation" ? "POST" : undefined), }, headers: { type: "object", }, body: { type: "object", - hidden: ([opts]) => opts?.method === "GET", + hidden: ([opts]) => + !!opts?.method && METHODS_WITHOUT_BODY.has(opts.method), }, }, }, diff --git a/plasmicpkgs/framer-motion/package.json b/plasmicpkgs/framer-motion/package.json index 7265f516ad..8224dac2b2 100644 --- a/plasmicpkgs/framer-motion/package.json +++ b/plasmicpkgs/framer-motion/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/framer-motion", - "version": "0.0.242", + "version": "0.0.255", "description": "Plasmic registration call for Framer Motion", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/framer-motion" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/framer-motion.esm.js", @@ -21,15 +28,15 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@types/node": "^14.18.63", "@types/react": "^18", "tsdx": "^0.14.1", "tslib": "^2.2.0" diff --git a/plasmicpkgs/google-maps/package.json b/plasmicpkgs/google-maps/package.json index 3b05ab8927..8cca737ed8 100644 --- a/plasmicpkgs/google-maps/package.json +++ b/plasmicpkgs/google-maps/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-google-maps", - "version": "0.0.23", + "version": "0.0.36", "description": "Plasmic Google maps components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/google-maps" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/plasmic-google-maps.esm.js", @@ -14,7 +21,7 @@ "scripts": { "start": "tsdx watch", "build": "tsdx build", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -34,7 +41,7 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@types/react": "^18", "@types/react-dom": "^18", "husky": "^7.0.4", diff --git a/plasmicpkgs/graphql/package.json b/plasmicpkgs/graphql/package.json index 8f56b45ada..0916036787 100644 --- a/plasmicpkgs/graphql/package.json +++ b/plasmicpkgs/graphql/package.json @@ -1,7 +1,9 @@ { "name": "@plasmicpkgs/graphql", - "version": "0.0.28", - "description": "Plasmic registration for GraphQL", + "version": "0.0.43", + "description": "Custom functions for running GraphQL queries from Plasmic data queries.", + "homepage": "https://www.plasmic.app", + "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/plasmicapp/plasmic.git", @@ -24,15 +26,15 @@ "dist" ], "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.ts", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@plasmicpkgs/fetch": "0.0.34", + "@plasmicapp/host": "2.0.14", + "@plasmicpkgs/fetch": "0.0.49", "typescript": "^5.7.3" }, "peerDependencies": { diff --git a/plasmicpkgs/graphql/src/index.ts b/plasmicpkgs/graphql/src/index.ts index 859d7178fb..830a88e6d5 100644 --- a/plasmicpkgs/graphql/src/index.ts +++ b/plasmicpkgs/graphql/src/index.ts @@ -57,6 +57,7 @@ const registerGraphqlFetchParams: CustomFunctionMeta = { importPath: "@plasmicpkgs/graphql", displayName: "GraphQL", isQuery: true, + isMutation: true, params: [ { name: "opts", @@ -65,10 +66,13 @@ const registerGraphqlFetchParams: CustomFunctionMeta = { fields: { url: { type: "string", + displayName: "URL", + required: true, }, method: { type: "choice", options: ["GET", "POST", "PUT", "DELETE"], + defaultValue: "POST", }, headers: { type: "object", @@ -76,11 +80,13 @@ const registerGraphqlFetchParams: CustomFunctionMeta = { request: { type: "code", lang: "graphql", + required: true, headers: ([opts]) => opts?.headers, endpoint: ([opts]) => opts?.url ?? "", }, varOverrides: { type: "object", + displayName: "Variable overrides", }, }, }, diff --git a/plasmicpkgs/keen-slider/package.json b/plasmicpkgs/keen-slider/package.json index 19eeed0143..58e49f4cf7 100644 --- a/plasmicpkgs/keen-slider/package.json +++ b/plasmicpkgs/keen-slider/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-keen-slider", - "version": "0.0.87", + "version": "0.0.100", "description": "Plasmic Keen slider components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/keen-slider" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/plasmic-keen-slider.esm.js", @@ -14,7 +21,7 @@ "scripts": { "start": "tsdx watch", "build": "tsdx build", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -34,7 +41,7 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@types/react": "^18", "@types/react-dom": "^18", "@types/resize-observer-browser": "^0.1.7", diff --git a/plasmicpkgs/lottie-react/package.json b/plasmicpkgs/lottie-react/package.json index e5144d0b7a..b130d4eee6 100644 --- a/plasmicpkgs/lottie-react/package.json +++ b/plasmicpkgs/lottie-react/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/lottie-react", - "version": "0.0.236", - "description": "Plasmic registration call for the HTML5 video element", + "version": "0.0.249", + "description": "Plasmic registration calls for lottie-react animations.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/lottie-react" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/lottie-react.esm.js", @@ -21,15 +28,15 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@types/node": "^14.18.63", "@types/react": "^18", "tsdx": "^0.14.1", "tslib": "^2.2.0" @@ -37,9 +44,6 @@ "dependencies": { "lottie-react": "^2.4.0" }, - "resolutions": { - "lottie-web": ">=5.13.0" - }, "peerDependencies": { "@plasmicapp/host": ">=1.0.0", "react": ">=16.8.0", diff --git a/plasmicpkgs/mailchimp/package.json b/plasmicpkgs/mailchimp/package.json index 73a86e6a72..0b6af8a502 100644 --- a/plasmicpkgs/mailchimp/package.json +++ b/plasmicpkgs/mailchimp/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-mailchimp", - "version": "0.0.21", + "version": "0.0.34", "description": "Plasmic Mailchimp components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/mailchimp" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/plasmic-mailchimp.esm.js", @@ -14,7 +21,7 @@ "scripts": { "start": "tsdx watch", "build": "tsdx build", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -34,7 +41,7 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@types/react": "^18", "@types/react-dom": "^18", "husky": "^7.0.4", diff --git a/plasmicpkgs/plasmic-basic-components/package.json b/plasmicpkgs/plasmic-basic-components/package.json index 936d92bef0..cd1c05adf4 100644 --- a/plasmicpkgs/plasmic-basic-components/package.json +++ b/plasmicpkgs/plasmic-basic-components/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-basic-components", - "version": "0.0.273", - "description": "Plasmic registration call for the HTML5 video element", + "version": "0.0.286", + "description": "Assorted basic Plasmic code components: embeds, iframes, timers, conditionals, data providers, and more.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-basic-components" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/plasmic-basic-components.esm.js", @@ -21,7 +28,7 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -31,9 +38,9 @@ "test-storybook": "test-storybook" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@plasmicapp/query": "0.1.84", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@plasmicapp/query": "0.1.87", + "@types/node": "^14.18.63", "@types/react": "^18", "@types/react-dom": "^18", "react": "18.2.0", diff --git a/plasmicpkgs/plasmic-calendly/package.json b/plasmicpkgs/plasmic-calendly/package.json index 84813db8e4..eb14c9d9cb 100644 --- a/plasmicpkgs/plasmic-calendly/package.json +++ b/plasmicpkgs/plasmic-calendly/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-calendly", - "version": "0.0.90", + "version": "0.0.103", "description": "Plasmic Calendly components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-calendly" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/plasmic-calendly.esm.js", @@ -14,7 +21,7 @@ "scripts": { "start": "tsdx watch", "build": "tsdx build", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -34,7 +41,7 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@types/react": "^18", "@types/react-dom": "^18", "husky": "^7.0.4", diff --git a/plasmicpkgs/plasmic-cms/package.json b/plasmicpkgs/plasmic-cms/package.json index 69d3510da0..21913d7706 100644 --- a/plasmicpkgs/plasmic-cms/package.json +++ b/plasmicpkgs/plasmic-cms/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-cms", - "version": "0.0.312", - "description": "Plasmic CMS components", + "version": "0.0.326", + "description": "Plasmic code components for querying and rendering Plasmic CMS content.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-cms" + }, + "license": "MIT", "main": "./dist/index.js", "types": "./dist/index.d.ts", "module": "./dist/index.esm.js", @@ -26,22 +33,22 @@ } ], "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.tsx", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@plasmicapp/query": "0.1.84", - "@types/node": "^17.0.14", + "@plasmicapp/host": "2.0.14", + "@plasmicapp/query": "0.1.87", + "@types/node": "^17.0.45", "@types/react": "^18" }, "dependencies": { - "@plasmicpkgs/cms": "0.0.21", + "@plasmicpkgs/cms": "0.0.35", "dayjs": "^1.10.7" }, "peerDependencies": { diff --git a/plasmicpkgs/plasmic-content-stack/package.json b/plasmicpkgs/plasmic-content-stack/package.json index e208b7857b..50d5ce4476 100644 --- a/plasmicpkgs/plasmic-content-stack/package.json +++ b/plasmicpkgs/plasmic-content-stack/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-content-stack", - "version": "0.0.198", + "version": "0.0.211", "description": "Plasmic ContentStack components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-content-stack" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/index.mjs", @@ -13,7 +20,7 @@ ], "scripts": { "build": "tsup-node src/index.tsx --dts --format esm,cjs --target es2019", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" @@ -32,9 +39,9 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@plasmicapp/query": "0.1.84", - "@types/dlv": "^1.1.2", + "@plasmicapp/host": "2.0.14", + "@plasmicapp/query": "0.1.87", + "@types/dlv": "^1.1.5", "@types/react": "^18", "@types/react-dom": "^18", "husky": "^7.0.4", diff --git a/plasmicpkgs/plasmic-contentful/package.json b/plasmicpkgs/plasmic-contentful/package.json index 4350acd343..3a813b1bdd 100644 --- a/plasmicpkgs/plasmic-contentful/package.json +++ b/plasmicpkgs/plasmic-contentful/package.json @@ -1,7 +1,9 @@ { "name": "@plasmicpkgs/plasmic-contentful", - "version": "0.0.192", - "description": "Plasmic Contentful components.", + "version": "0.0.205", + "description": "Plasmic code components for fetching and rendering Contentful content.", + "homepage": "https://www.plasmic.app", + "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/plasmicapp/plasmic.git", @@ -24,10 +26,10 @@ "dist" ], "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.tsx", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh" }, @@ -42,10 +44,10 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@plasmicapp/query": "0.1.84", - "@plasmicpkgs/contentful": "0.0.16", - "@types/dlv": "^1.1.2", + "@plasmicapp/host": "2.0.14", + "@plasmicapp/query": "0.1.87", + "@plasmicpkgs/contentful": "0.0.29", + "@types/dlv": "^1.1.5", "@types/react": "^18", "@types/react-dom": "^18", "react": "^18.2.0", diff --git a/plasmicpkgs/plasmic-embed-css/package.json b/plasmicpkgs/plasmic-embed-css/package.json index 6d7c20f625..26e9cc5185 100644 --- a/plasmicpkgs/plasmic-embed-css/package.json +++ b/plasmicpkgs/plasmic-embed-css/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-embed-css", - "version": "0.1.228", + "version": "0.1.241", "description": "Plasmic embed css code components", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-embed-css" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/plasmic-embed-css.esm.js", @@ -21,15 +28,15 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/node": "^17.0.14", + "@plasmicapp/host": "2.0.14", + "@types/node": "^17.0.45", "@types/react": "^18", "tsdx": "^0.14.1", "tslib": "^2.3.1" diff --git a/plasmicpkgs/plasmic-eventbrite/package.json b/plasmicpkgs/plasmic-eventbrite/package.json index a2bc31ca7a..58940421e8 100644 --- a/plasmicpkgs/plasmic-eventbrite/package.json +++ b/plasmicpkgs/plasmic-eventbrite/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-eventbrite", - "version": "0.0.76", + "version": "0.0.89", "description": "Plasmic Eventbrite components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-eventbrite" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/plasmic-eventbrite.esm.js", @@ -14,7 +21,7 @@ "scripts": { "start": "tsdx watch", "build": "tsdx build", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -34,7 +41,7 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@types/react": "^18", "@types/react-dom": "^18", "husky": "^7.0.4", @@ -44,7 +51,7 @@ "tslib": "^2.3.1" }, "dependencies": { - "@types/uuid": "^9.0.2", + "@types/uuid": "^9.0.8", "change-case": "^4.1.2", "uuid": "^9.0.0" } diff --git a/plasmicpkgs/plasmic-giphy/package.json b/plasmicpkgs/plasmic-giphy/package.json index ac7ec8dae0..2b50da3be0 100644 --- a/plasmicpkgs/plasmic-giphy/package.json +++ b/plasmicpkgs/plasmic-giphy/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-giphy", - "version": "0.0.76", + "version": "0.0.89", "description": "Plasmic Giphy components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-giphy" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/plasmic-giphy.esm.js", @@ -14,7 +21,7 @@ "scripts": { "start": "tsdx watch", "build": "tsdx build", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -34,7 +41,7 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@types/react": "^18", "@types/react-dom": "^18", "husky": "^7.0.4", diff --git a/plasmicpkgs/plasmic-graphcms/package.json b/plasmicpkgs/plasmic-graphcms/package.json index 5a837507b5..3984b8f16e 100644 --- a/plasmicpkgs/plasmic-graphcms/package.json +++ b/plasmicpkgs/plasmic-graphcms/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-graphcms", - "version": "0.0.215", + "version": "0.0.228", "description": "Plasmic GraphCMS components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-graphcms" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/plasmic-graphcms.esm.js", @@ -14,7 +21,7 @@ "scripts": { "start": "tsdx watch", "build": "tsdx build", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -36,9 +43,9 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@plasmicapp/query": "0.1.84", - "@types/dlv": "^1.1.2", + "@plasmicapp/host": "2.0.14", + "@plasmicapp/query": "0.1.87", + "@types/dlv": "^1.1.5", "@types/react": "^18", "@types/react-dom": "^18", "husky": "^7.0.4", diff --git a/plasmicpkgs/plasmic-hubspot/package.json b/plasmicpkgs/plasmic-hubspot/package.json index 3f4afd2f21..9cc83d4df1 100644 --- a/plasmicpkgs/plasmic-hubspot/package.json +++ b/plasmicpkgs/plasmic-hubspot/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-hubspot", - "version": "0.0.88", + "version": "0.0.101", "description": "Plasmic Hubspot components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-hubspot" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/plasmic-hubspot.esm.js", @@ -14,7 +21,7 @@ "scripts": { "start": "tsdx watch", "build": "tsdx build", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -34,7 +41,7 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@types/react": "^18", "@types/react-dom": "^18", "husky": "^7.0.4", diff --git a/plasmicpkgs/plasmic-intercom/package.json b/plasmicpkgs/plasmic-intercom/package.json index b74b20c602..fac5a076f2 100644 --- a/plasmicpkgs/plasmic-intercom/package.json +++ b/plasmicpkgs/plasmic-intercom/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-intercom", - "version": "0.0.21", + "version": "0.0.34", "description": "Plasmic intercom components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-intercom" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/plasmic-intercom.esm.js", @@ -14,7 +21,7 @@ "scripts": { "start": "tsdx watch", "build": "tsdx build", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -34,7 +41,7 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@types/react": "^18", "@types/react-dom": "^18", "husky": "^7.0.4", diff --git a/plasmicpkgs/plasmic-link-preview/package.json b/plasmicpkgs/plasmic-link-preview/package.json index 5cdf8c510f..06c8b81e91 100644 --- a/plasmicpkgs/plasmic-link-preview/package.json +++ b/plasmicpkgs/plasmic-link-preview/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-link-preview", - "version": "1.0.146", + "version": "1.0.167", "description": "A React component that renders beautiful, fully-customizable link previews.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-link-preview" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/plasmic-link-preview.esm.js", @@ -21,16 +28,16 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/data-sources": "1.0.2", - "@plasmicapp/host": "2.0.1", - "@types/node": "^14.0.26", + "@plasmicapp/data-sources": "1.0.23", + "@plasmicapp/host": "2.0.14", + "@types/node": "^14.18.63", "@types/react": "^18", "tsdx": "^0.14.1", "tslib": "^2.2.0" diff --git a/plasmicpkgs/plasmic-nav/package.json b/plasmicpkgs/plasmic-nav/package.json index 535923925a..9075b3d6e1 100644 --- a/plasmicpkgs/plasmic-nav/package.json +++ b/plasmicpkgs/plasmic-nav/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-nav", - "version": "0.0.214", + "version": "0.0.227", "description": "Plasmic mobile navigation menu and registration calls", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-nav" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/plasmic-nav.esm.js", @@ -21,15 +28,15 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@types/node": "^14.18.63", "@types/react": "^18", "tsdx": "^0.14.1", "tslib": "^2.2.0" diff --git a/plasmicpkgs/plasmic-pigeon-maps/package.json b/plasmicpkgs/plasmic-pigeon-maps/package.json index 51884c1d65..2cdcd35806 100644 --- a/plasmicpkgs/plasmic-pigeon-maps/package.json +++ b/plasmicpkgs/plasmic-pigeon-maps/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-pigeon-maps", - "version": "0.0.76", + "version": "0.0.89", "description": "Plasmic Pigeon maps components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-pigeon-maps" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/plasmic-pigeon-maps.esm.js", @@ -14,7 +21,7 @@ "scripts": { "start": "tsdx watch", "build": "tsdx build", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -34,8 +41,8 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/dlv": "^1.1.2", + "@plasmicapp/host": "2.0.14", + "@types/dlv": "^1.1.5", "@types/react": "^18", "@types/react-dom": "^18", "husky": "^7.0.4", diff --git a/plasmicpkgs/plasmic-query/package.json b/plasmicpkgs/plasmic-query/package.json index 4e4bb904d7..d495d8842e 100644 --- a/plasmicpkgs/plasmic-query/package.json +++ b/plasmicpkgs/plasmic-query/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-query", - "version": "0.0.263", + "version": "0.0.276", "description": "Plasmic components and registration calls for data fetching", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-query" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/plasmic-query.esm.js", @@ -21,16 +28,16 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@plasmicapp/query": "0.1.84", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@plasmicapp/query": "0.1.87", + "@types/node": "^14.18.63", "@types/react": "^18", "tsdx": "^0.14.1", "tslib": "^2.2.0" diff --git a/plasmicpkgs/plasmic-rich-components/package.json b/plasmicpkgs/plasmic-rich-components/package.json index 121cc00624..c5030211c3 100644 --- a/plasmicpkgs/plasmic-rich-components/package.json +++ b/plasmicpkgs/plasmic-rich-components/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-rich-components", - "version": "1.0.245", + "version": "1.0.267", "description": "Rich batteries-included general purpose components for business apps, admin panels, etc.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-rich-components" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/plasmic-rich-components.esm.js", @@ -32,8 +39,8 @@ } ], "scripts": { - "build": "rollup -c rollup.config.mjs && yarn tsc --emitDeclarationOnly --declaration src/index.tsx --incremental --tsBuildInfoFile ./dist/.tsbuildinfo --skipLibCheck --jsx react --lib dom,esnext --esModuleInterop --strict --outDir ./dist/ && rsync -r --include='*/' --include='*.d.ts' --exclude='*' ./dist/ ./skinny/ && rm skinny/index.d.ts", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "build": "rollup -c rollup.config.mjs && tsc --emitDeclarationOnly --declaration src/index.tsx --incremental --tsBuildInfoFile ./dist/.tsbuildinfo --skipLibCheck --jsx react --lib dom,esnext --esModuleInterop --strict --outDir ./dist/ && rsync -r --include='*/' --include='*.d.ts' --exclude='*' ./dist/ ./skinny/ && rm skinny/index.d.ts", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" @@ -44,13 +51,13 @@ "devDependencies": { "@ant-design/icons": "^5.0.1", "@ant-design/pro-components": "2.6.4", - "@plasmicapp/data-sources": "1.0.2", - "@plasmicapp/host": "2.0.1", + "@plasmicapp/data-sources": "1.0.23", + "@plasmicapp/host": "2.0.14", "@rollup/plugin-commonjs": "^25.0.2", "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-node-resolve": "^15.1.0", - "@types/lodash": "^4.14.200", - "@types/node": "^20.8.9", + "@types/lodash": "^4.17.24", + "@types/node": "^20.19.43", "@types/react": "^18", "antd": "^5.4.0", "glob": "^8.1.0", diff --git a/plasmicpkgs/plasmic-rich-components/src/formatting.tsx b/plasmicpkgs/plasmic-rich-components/src/formatting.tsx index bc886bdb36..e728b3e2a7 100644 --- a/plasmicpkgs/plasmic-rich-components/src/formatting.tsx +++ b/plasmicpkgs/plasmic-rich-components/src/formatting.tsx @@ -4,14 +4,14 @@ import React from "react"; import { BaseColumnConfig, BooleanSettings, - DateTimeSettings, DATETIME_TYPES, DEFAULT_BOOLEAN_SETTINGS, DEFAULT_CURRENCY_SETTINGS, DEFAULT_DATETIME_SETTINGS, DEFAULT_RELATIVE_DATETIME_SETTINGS, - NumberSettings, + DateTimeSettings, NUMBER_TYPES, + NumberSettings, RelativeDateTimeSettings, } from "./field-mappings"; import { isOneOf, maybe } from "./utils"; @@ -58,7 +58,9 @@ export function getFieldAggregateValue( cconfigs: BaseColumnConfig[] | undefined, separator = ", " ) { - if (!cconfigs?.length) return undefined; + if (!cconfigs?.length) { + return undefined; + } return cconfigs?.length ? cconfigs.map((item) => getFieldValue(record, item)).join(separator) @@ -125,16 +127,23 @@ function tryCoerceAuto(value: unknown) { return CANNOT_COERCE; } +// `new Intl.NumberFormat("", ...)` throws `RangeError: invalid language tag`, so collapse +// empty locales to undefined (host default). +function safeLocale(locale: string | undefined) { + return locale && locale.trim() !== "" ? locale : undefined; +} + function renderNumber(value: number, cconfig: NumberSettings) { + const locale = safeLocale(cconfig.locale); if (cconfig.dataType === "number") { - return new Intl.NumberFormat(cconfig.locale, cconfig).format(value); + return new Intl.NumberFormat(locale, cconfig).format(value); } else if (cconfig.dataType === "percent") { - return new Intl.NumberFormat(cconfig.locale, { + return new Intl.NumberFormat(locale, { ...cconfig, style: "percent", }).format(value); } else if (cconfig.dataType === "currency") { - return new Intl.NumberFormat(cconfig.locale, { + return new Intl.NumberFormat(locale, { ...DEFAULT_CURRENCY_SETTINGS, ...cconfig, style: "currency", @@ -155,7 +164,10 @@ function renderDate(value: Date, cconfig: DateTimeSettings) { if (opts.timeStyle === "none") { delete opts["timeStyle"]; } - return new Intl.DateTimeFormat(cconfig.locale, opts as any).format(value); + return new Intl.DateTimeFormat( + safeLocale(cconfig.locale), + opts as any + ).format(value); } const SECOND_MS = 1000; @@ -178,7 +190,10 @@ function renderRelativeDate(value: Date, cconfig: RelativeDateTimeSettings) { ...cconfig, }; const unit = cconfig.unit ?? "day"; - const formatter = new Intl.RelativeTimeFormat(cconfig.locale, opts); + const formatter = new Intl.RelativeTimeFormat( + safeLocale(cconfig.locale), + opts + ); if (isOneOf(unit, UNITS_BY_MS)) { // for "exact" units, we can do it by just calcluating the difference // by ms diff --git a/plasmicpkgs/plasmic-rich-components/src/rich-layout/RichLayout.tsx b/plasmicpkgs/plasmic-rich-components/src/rich-layout/RichLayout.tsx index 7e0aa80c90..4519bc0535 100644 --- a/plasmicpkgs/plasmic-rich-components/src/rich-layout/RichLayout.tsx +++ b/plasmicpkgs/plasmic-rich-components/src/rich-layout/RichLayout.tsx @@ -252,7 +252,6 @@ export function RichLayout({ items: [ { key: "logout", - // @ts-expect-error: https://github.com/ant-design/ant-design/issues/47886 icon: , label: "Sign out", }, diff --git a/plasmicpkgs/plasmic-rich-components/src/rich-table/RichTable.tsx b/plasmicpkgs/plasmic-rich-components/src/rich-table/RichTable.tsx index 5879a9b783..72cab561d7 100644 --- a/plasmicpkgs/plasmic-rich-components/src/rich-table/RichTable.tsx +++ b/plasmicpkgs/plasmic-rich-components/src/rich-table/RichTable.tsx @@ -191,7 +191,6 @@ export function RichTable(props: RichTableProps) { addHref && ( diff --git a/plasmicpkgs/plasmic-sanity-io/package.json b/plasmicpkgs/plasmic-sanity-io/package.json index 513aa582d8..39e225e6c4 100644 --- a/plasmicpkgs/plasmic-sanity-io/package.json +++ b/plasmicpkgs/plasmic-sanity-io/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-sanity-io", - "version": "1.0.223", + "version": "1.0.236", "description": "Plasmic Sanity.io components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-sanity-io" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/index.mjs", @@ -20,16 +27,16 @@ ], "scripts": { "build": "tsup-node src/index.tsx --dts --format esm,cjs --target es2019", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@plasmicapp/query": "0.1.84", - "@types/dlv": "^1.1.2", - "@types/node": "^17.0.14", + "@plasmicapp/host": "2.0.14", + "@plasmicapp/query": "0.1.87", + "@types/dlv": "^1.1.5", + "@types/node": "^17.0.45", "@types/react": "^18", "tslib": "^2.3.1", "tsup": "^7.2.0", diff --git a/plasmicpkgs/plasmic-soundcloud/package.json b/plasmicpkgs/plasmic-soundcloud/package.json index f251c4d1bf..7b7a209d26 100644 --- a/plasmicpkgs/plasmic-soundcloud/package.json +++ b/plasmicpkgs/plasmic-soundcloud/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-soundcloud", - "version": "0.0.88", + "version": "0.0.101", "description": "Plasmic Soundcloud components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-soundcloud" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/plasmic-soundcloud.esm.js", @@ -14,7 +21,7 @@ "scripts": { "start": "tsdx watch", "build": "tsdx build", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -34,8 +41,8 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/dlv": "^1.1.2", + "@plasmicapp/host": "2.0.14", + "@types/dlv": "^1.1.5", "@types/react": "^18", "@types/react-dom": "^18", "husky": "^7.0.4", diff --git a/plasmicpkgs/plasmic-strapi/package.json b/plasmicpkgs/plasmic-strapi/package.json index 63d062580d..6e8e996b43 100644 --- a/plasmicpkgs/plasmic-strapi/package.json +++ b/plasmicpkgs/plasmic-strapi/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-strapi", - "version": "0.1.200", - "description": "Plasmic Strapi components.", + "version": "0.1.214", + "description": "Plasmic code components for fetching and rendering Strapi content.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-strapi" + }, + "license": "MIT", "main": "./dist/index.js", "types": "./dist/index.d.ts", "module": "./dist/index.esm.js", @@ -19,10 +26,10 @@ "dist" ], "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.tsx --use-client", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" @@ -41,13 +48,13 @@ } ], "dependencies": { - "@plasmicpkgs/strapi": "0.0.19", + "@plasmicpkgs/strapi": "0.0.33", "change-case": "^4.1.2" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@plasmicapp/query": "0.1.84", - "@types/dlv": "^1.1.2", + "@plasmicapp/host": "2.0.14", + "@plasmicapp/query": "0.1.87", + "@types/dlv": "^1.1.5", "@types/react": "^18", "@types/react-dom": "^18", "react": "^18.2.0", diff --git a/plasmicpkgs/plasmic-tabs/package.json b/plasmicpkgs/plasmic-tabs/package.json index f3dd16dc6c..63896bef99 100644 --- a/plasmicpkgs/plasmic-tabs/package.json +++ b/plasmicpkgs/plasmic-tabs/package.json @@ -1,5 +1,12 @@ { - "version": "0.0.85", + "version": "0.0.98", + "description": "Plasmic code components for building customizable tab interfaces.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-tabs" + }, "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", @@ -15,7 +22,7 @@ "scripts": { "start": "tsdx watch", "build": "tsdx build", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -58,7 +65,7 @@ "tslib": "^2.3.1" }, "dependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "constate": "^3.3.2" } } diff --git a/plasmicpkgs/plasmic-typeform/package.json b/plasmicpkgs/plasmic-typeform/package.json index 8d071b6bbd..658036a201 100644 --- a/plasmicpkgs/plasmic-typeform/package.json +++ b/plasmicpkgs/plasmic-typeform/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-typeform", - "version": "0.0.88", + "version": "0.0.101", "description": "Plasmic Typeform components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-typeform" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/plasmic-typeform.esm.js", @@ -14,7 +21,7 @@ "scripts": { "start": "tsdx watch", "build": "tsdx build", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -34,7 +41,7 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@types/react": "^18", "@types/react-dom": "^18", "husky": "^7.0.4", diff --git a/plasmicpkgs/plasmic-wordpress-graphql/package.json b/plasmicpkgs/plasmic-wordpress-graphql/package.json index 25a0a26919..d8b5a66f8a 100644 --- a/plasmicpkgs/plasmic-wordpress-graphql/package.json +++ b/plasmicpkgs/plasmic-wordpress-graphql/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-wordpress-graphql", - "version": "0.0.160", + "version": "0.0.173", "description": "Plasmic Wordpress GraphQL components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-wordpress-graphql" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/plasmic-wordpress-graphql.esm.js", @@ -14,7 +21,7 @@ "scripts": { "start": "tsdx watch", "build": "tsdx build", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -34,9 +41,9 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@plasmicapp/query": "0.1.83", - "@types/dlv": "^1.1.2", + "@types/dlv": "^1.1.5", "@types/react": "^18", "@types/react-dom": "^18", "husky": "^7.0.4", diff --git a/plasmicpkgs/plasmic-wordpress/package.json b/plasmicpkgs/plasmic-wordpress/package.json index 176ab8827d..fd55806847 100644 --- a/plasmicpkgs/plasmic-wordpress/package.json +++ b/plasmicpkgs/plasmic-wordpress/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-wordpress", - "version": "0.0.170", - "description": "Plasmic Wordpress components.", + "version": "0.0.184", + "description": "Plasmic code components for fetching and rendering WordPress posts and pages.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-wordpress" + }, + "license": "MIT", "main": "./dist/index.js", "types": "./dist/index.d.ts", "module": "./dist/index.esm.js", @@ -19,10 +26,10 @@ "dist" ], "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.tsx", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh", "size": "size-limit", @@ -44,9 +51,9 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@plasmicapp/query": "0.1.84", - "@plasmicpkgs/wordpress": "0.0.20", + "@plasmicapp/host": "2.0.14", + "@plasmicapp/query": "0.1.87", + "@plasmicpkgs/wordpress": "0.0.34", "@types/react": "^18", "@types/react-dom": "^18", "husky": "^7.0.4", @@ -54,7 +61,7 @@ "react-dom": "^18.2.0" }, "dependencies": { - "@types/dlv": "^1.1.2", + "@types/dlv": "^1.1.5", "dlv": "^1.1.3" } } diff --git a/plasmicpkgs/plasmic-yotpo/package.json b/plasmicpkgs/plasmic-yotpo/package.json index 11388d7047..28a31dc07c 100644 --- a/plasmicpkgs/plasmic-yotpo/package.json +++ b/plasmicpkgs/plasmic-yotpo/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-yotpo", - "version": "0.0.87", + "version": "0.0.100", "description": "Plasmic Yotpo components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/plasmic-yotpo" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/plasmic-yotpo.esm.js", @@ -14,7 +21,7 @@ "scripts": { "start": "tsdx watch", "build": "tsdx build", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -34,9 +41,9 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@plasmicapp/query": "0.1.84", - "@types/dlv": "^1.1.2", + "@plasmicapp/host": "2.0.14", + "@plasmicapp/query": "0.1.87", + "@types/dlv": "^1.1.5", "@types/react": "^18", "@types/react-dom": "^18", "husky": "^7.0.4", @@ -46,7 +53,7 @@ "tslib": "^2.3.1" }, "dependencies": { - "@types/lodash": "^4.14.197", + "@types/lodash": "^4.17.24", "change-case": "^4.1.2", "dlv": "^1.1.3", "lodash": "^4.17.21" diff --git a/plasmicpkgs/radix-ui/package.json b/plasmicpkgs/radix-ui/package.json index 14e661df01..3c3652d9ed 100644 --- a/plasmicpkgs/radix-ui/package.json +++ b/plasmicpkgs/radix-ui/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/radix-ui", - "version": "0.0.102", + "version": "0.0.115", "description": "Radix UI components for Plasmic", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/radix-ui" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/index.mjs", @@ -20,14 +27,14 @@ ], "scripts": { "build": "tsup-node src/index.tsx --dts --format esm,cjs --target es2019", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@types/node": "^14.18.63", "@types/react": "^18", "tslib": "^2.2.0", "tsup": "^7.2.0", diff --git a/plasmicpkgs/react-aria/package.json b/plasmicpkgs/react-aria/package.json index e956b542df..7fa5cfc911 100644 --- a/plasmicpkgs/react-aria/package.json +++ b/plasmicpkgs/react-aria/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/react-aria", - "version": "0.0.176", + "version": "0.0.192", "description": "Plasmic registration calls for react-aria based components", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/react-aria" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/react-aria.esm.js", @@ -37,13 +44,13 @@ "skinny" ], "scripts": { - "build": "rollup -c rollup.config.mjs && yarn tsc --emitDeclarationOnly --declaration src/index.tsx --incremental --tsBuildInfoFile ./dist/.tsbuildinfo --skipLibCheck --lib esnext,dom,dom.iterable --jsx react --esModuleInterop --strict --outDir ./dist/ && cp ./dist/*.d.ts skinny/ && rm skinny/index.d.ts", - "prepare": "if-env PREPARE_NO_BUILD=true || yarn build", + "build": "rollup -c rollup.config.mjs && tsc --emitDeclarationOnly --declaration src/index.tsx --incremental --tsBuildInfoFile ./dist/.tsbuildinfo --skipLibCheck --lib esnext,dom,dom.iterable --jsx react --esModuleInterop --strict --outDir ./dist/ && cp ./dist/*.d.ts skinny/ && rm skinny/index.d.ts", "clean": "rm -rf dist/ skinny/*.ts skinny/*.map skinny/*.js", "storybook": "storybook dev -p 6006 --no-open", "build-storybook": "storybook build", "test-storybook": "test-storybook", - "upgrade-aria": "yarn upgrade --latest --scope @react-stately && yarn upgrade --latest --scope @react-aria && yarn upgrade --latest --scope react-aria-components" + "test": "TEST_CWD=`pwd` pnpm -w test", + "upgrade-aria": "pnpm update --latest \"@react-stately/*\" \"@react-aria/*\" react-aria-components" }, "dependencies": { "@react-aria/i18n": "^3.12.9", @@ -53,7 +60,7 @@ "react-stately": "^3.38.0" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@rollup/plugin-commonjs": "^11.0.0", "@rollup/plugin-json": "^4.0.0", "@rollup/plugin-node-resolve": "^9.0.0", diff --git a/plasmicpkgs/react-aria/src/registerComboBox.tsx b/plasmicpkgs/react-aria/src/registerComboBox.tsx index 6c5987c493..cc5facd797 100644 --- a/plasmicpkgs/react-aria/src/registerComboBox.tsx +++ b/plasmicpkgs/react-aria/src/registerComboBox.tsx @@ -61,7 +61,7 @@ export interface BaseComboboxProps Setting popover's open state to true in not enough unless, unless it has previously been opened via user interaction with combobox. Also, does not support an `isOpen` prop either. - So, we use this custom hook to access the combobox's internal state via ComboBoxStateContext and change the `open` state manually via tha available `open` method. + So, we use this custom hook to access the combobox's internal state via ComboBoxStateContext and change the `open` state manually via the available `open` method. Note: It cannot be used as a hook like useAutoOpen() within the BaseSelect component because it needs access to SelectStateContext, which is only created in the BaseSelect component's render function. diff --git a/plasmicpkgs/react-aria/src/registerDialogTrigger.stories.tsx b/plasmicpkgs/react-aria/src/registerDialogTrigger.stories.tsx index 873d472f8d..3ca9a1edc9 100644 --- a/plasmicpkgs/react-aria/src/registerDialogTrigger.stories.tsx +++ b/plasmicpkgs/react-aria/src/registerDialogTrigger.stories.tsx @@ -255,7 +255,9 @@ export const WithPopover: Story = { expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument(); }); - await expect(trigger).toHaveFocus(); + await waitFor(() => { + expect(trigger).toHaveFocus(); + }); // With keyboard navigation, press Space to open and Escape to dismiss await userEvent.keyboard("[Space]"); diff --git a/plasmicpkgs/react-aria/src/registerSwitch.stories.tsx b/plasmicpkgs/react-aria/src/registerSwitch.stories.tsx index 19336e3f37..03687aa1f8 100644 --- a/plasmicpkgs/react-aria/src/registerSwitch.stories.tsx +++ b/plasmicpkgs/react-aria/src/registerSwitch.stories.tsx @@ -20,6 +20,13 @@ const meta: Meta = { export default meta; type Story = StoryObj; +// As of react-aria-components 1.19 the Switch label uses react-aria's +// pointer-based press system (data-react-aria-pressable), so a synthetic +// userEvent click on the label no longer fires the toggle. Click the +// role="switch" input instead. +const clickSwitch = (canvas: ReturnType) => + userEvent.click(canvas.getByRole("switch")); + // Basic Switch with default state (unselected) export const Basic: Story = { play: async ({ canvasElement, args }) => { @@ -31,7 +38,7 @@ export const Basic: Story = { expect(switchEl).not.toHaveAttribute("data-selected"); // Toggle the switch on - await userEvent.click(switchEl); + await clickSwitch(canvas); expect(args.onChange).toHaveBeenCalledWith(true); expect(switchEl).toHaveAttribute("data-focused", "true"); expect(switchEl).toHaveAttribute("data-selected", "true"); @@ -60,7 +67,7 @@ export const WithInitialValue: Story = { expect(switchEl).not.toHaveAttribute("data-focused"); expect(switchEl).toHaveAttribute("data-selected", "true"); - await userEvent.click(switchEl); + await clickSwitch(canvas); expect(switchEl).not.toHaveAttribute("data-selected"); expect(args.onChange).toHaveBeenCalledWith(false); }, @@ -89,7 +96,7 @@ export const ReadOnly: Story = { expect(switchEl).not.toHaveAttribute("data-selected"); expect(switchEl).not.toHaveAttribute("data-disabled"); - await userEvent.click(switchEl); + await clickSwitch(canvas); expect(switchEl).not.toHaveAttribute("data-selected"); // unchanged expect(args.onChange).not.toHaveBeenCalled(); }, @@ -106,7 +113,7 @@ export const Disabled: Story = { expect(switchEl).not.toHaveAttribute("data-selected"); expect(switchEl).toHaveAttribute("data-disabled", "true"); - await userEvent.click(switchEl); + await clickSwitch(canvas); expect(switchEl).not.toHaveAttribute("data-selected"); // unchanged expect(args.onChange).not.toHaveBeenCalled(); }, @@ -137,13 +144,13 @@ export const Controlled: Story = { const switchEl = await canvas.findByText("Low power mode"); expect(switchEl).toHaveAttribute("data-selected", "true"); - await userEvent.click(switchEl); + await clickSwitch(canvas); expect(switchEl).not.toHaveAttribute("data-selected"); expect(args.onChange).toHaveBeenCalledWith(false); expect(args.onChange).toHaveBeenCalledOnce(); - await userEvent.click(switchEl); + await clickSwitch(canvas); expect(switchEl).toHaveAttribute("data-selected", "true"); expect(args.onChange).toHaveBeenCalledWith(true); diff --git a/plasmicpkgs/react-aria/src/utils.spec.tsx b/plasmicpkgs/react-aria/src/utils.spec.tsx new file mode 100644 index 0000000000..a936f33da8 --- /dev/null +++ b/plasmicpkgs/react-aria/src/utils.spec.tsx @@ -0,0 +1,132 @@ +import React from "react"; +import { flattenChildren } from "./utils"; + +function getKeys(nodes: React.ReactNode[]): (string | null)[] { + return nodes.map((node) => + React.isValidElement(node) ? (node.key as string | null) : null + ); +} + +describe("flattenChildren", () => { + it("returns an empty array for null/undefined", () => { + expect(flattenChildren(null)).toEqual([]); + expect(flattenChildren(undefined)).toEqual([]); + }); + + it("returns a list of elements when there are no fragments", () => { + const children = [ +

a
, +
b
, +
c
, + ]; + const result = flattenChildren(children); + expect(result).toHaveLength(3); + const keys = getKeys(result); + expect(new Set(keys).size).toBe(3); + keys.forEach((k) => expect(typeof k).toBe("string")); + }); + + it("preserves strings and numbers", () => { + const result = flattenChildren(["hello", 42,
x
]); + expect(result).toHaveLength(3); + expect(result[0]).toBe("hello"); + expect(result[1]).toBe(42); + expect(React.isValidElement(result[2])).toBe(true); + }); + + it("skips null, undefined and boolean children", () => { + const result = flattenChildren([ + null, + undefined, + true, + false, +
x
, + ]); + expect(result).toHaveLength(1); + expect(React.isValidElement(result[0])).toBe(true); + }); + + it("flattens a fragment, unwrapping its children", () => { + const result = flattenChildren( + <> +
a
+
b
+ + ); + expect(result).toHaveLength(2); + const keys = getKeys(result); + expect(new Set(keys).size).toBe(2); + }); + + it("flattens nested fragments", () => { + const result = flattenChildren( + <> +
a
+ <> +
b
+ <> +
c
+ + +
d
+ + ); + expect(result).toHaveLength(4); + const keys = getKeys(result); + expect(new Set(keys).size).toBe(4); + }); + + it("produces unique keys for duplicate keys in different fragments", () => { + const result = flattenChildren( + <> + <> +
a
+ + <> +
b
+ + + ); + expect(result).toHaveLength(2); + const keys = getKeys(result); + expect(keys[0]).not.toEqual(keys[1]); + }); + + it("preserves explicit keys on elements", () => { + const result = flattenChildren([ +
foo
, +
bar
, + ]); + expect(result).toHaveLength(2); + const keys = getKeys(result); + expect(keys[0]).toContain("foo"); + expect(keys[1]).toContain("bar"); + }); + + it("includes parent fragment key in flattened child keys", () => { + const result = flattenChildren( + +
x
+
+ ); + expect(result).toHaveLength(1); + const key = getKeys(result)[0]; + expect(key).toContain("outer"); + expect(key).toContain("inner"); + }); + + it("flattens JSX array expressions inside a fragment", () => { + const result = flattenChildren( + <> + {[
a
,
b
]} +
c
+ + ); + expect(result).toHaveLength(3); + const keys = getKeys(result); + expect(new Set(keys).size).toBe(3); + expect(keys[0]).toContain("a"); + expect(keys[1]).toContain("b"); + expect(keys[2]).toContain("c"); + }); +}); diff --git a/plasmicpkgs/react-aria/src/utils.ts b/plasmicpkgs/react-aria/src/utils.ts index b469298547..34fe266edd 100644 --- a/plasmicpkgs/react-aria/src/utils.ts +++ b/plasmicpkgs/react-aria/src/utils.ts @@ -212,10 +212,9 @@ export function filterHoverProps( } /** - * Flattens React children, unwrapping fragments and assigning stable keys. - * Inlined from react-keyed-flatten-children (9kB) to avoid its react-is peer dependency (13kB). - * Also, with plasmicpkgs, its always best to avoid pulling in unnecessary dependencies to keep bundle sizes down. - * https://github.com/grrowl/react-keyed-flatten-children/blob/master/index.ts + * flattenChildren based on https://github.com/grrowl/react-keyed-flatten-children + * + * Works for React 18 and 19. */ export function flattenChildren( children: React.ReactNode, diff --git a/plasmicpkgs/react-audio-player/package.json b/plasmicpkgs/react-audio-player/package.json index 59e2d6d5a5..2433a4f921 100644 --- a/plasmicpkgs/react-audio-player/package.json +++ b/plasmicpkgs/react-audio-player/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/react-audio-player", - "version": "0.0.71", + "version": "0.0.84", "description": "React Audio Player components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/react-audio-player" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/index.mjs", @@ -13,7 +20,7 @@ ], "scripts": { "build": "tsup-node src/index.tsx --dts --format esm,cjs --target es2019", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" @@ -32,7 +39,7 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@types/react": "^18", "@types/react-dom": "^18", "husky": "^7.0.4", diff --git a/plasmicpkgs/react-awesome-reveal/package.json b/plasmicpkgs/react-awesome-reveal/package.json index 8d00331853..0fa7161f62 100644 --- a/plasmicpkgs/react-awesome-reveal/package.json +++ b/plasmicpkgs/react-awesome-reveal/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/react-awesome-reveal", - "version": "3.8.246", + "version": "3.8.259", "description": "Plasmic registration call for react-awesome-reveal", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/react-awesome-reveal" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/react-awesome-reveal.esm.js", @@ -21,15 +28,15 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@types/node": "^14.18.63", "@types/react": "^18", "tsdx": "^0.14.1", "tslib": "^2.2.0" diff --git a/plasmicpkgs/react-chartjs-2/package.json b/plasmicpkgs/react-chartjs-2/package.json index 743e7b27c9..332e3be13e 100644 --- a/plasmicpkgs/react-chartjs-2/package.json +++ b/plasmicpkgs/react-chartjs-2/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/react-chartjs-2", - "version": "1.0.154", - "description": "Chart.js 2.x components for React", + "version": "1.0.167", + "description": "Plasmic code components for rendering Chart.js charts via react-chartjs-2.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/react-chartjs-2" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/react-chartjs-2.esm.js", @@ -21,15 +28,15 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@types/node": "^14.18.63", "@types/react": "^18", "chart.js": "^4.2.1", "react-chartjs-2": "^5.2.0", diff --git a/plasmicpkgs/react-parallax-tilt/package.json b/plasmicpkgs/react-parallax-tilt/package.json index 507c148a45..d65df7b588 100644 --- a/plasmicpkgs/react-parallax-tilt/package.json +++ b/plasmicpkgs/react-parallax-tilt/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/react-parallax-tilt", - "version": "0.0.244", - "description": "Plasmic registration call for the HTML5 video element", + "version": "0.0.257", + "description": "Plasmic registration calls for react-parallax-tilt.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/react-parallax-tilt" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/react-parallax-tilt.esm.js", @@ -21,15 +28,15 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@types/node": "^14.18.63", "@types/react": "^18", "tsdx": "^0.14.1", "tslib": "^2.2.0" diff --git a/plasmicpkgs/react-quill/package.json b/plasmicpkgs/react-quill/package.json index f6316c23ad..226f352171 100644 --- a/plasmicpkgs/react-quill/package.json +++ b/plasmicpkgs/react-quill/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/react-quill", - "version": "1.0.107", + "version": "1.0.120", "description": "Plasmic registration call for react-quill WYSIWYG Editor", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/react-quill" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/react-quill.esm.js", @@ -21,15 +28,15 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@types/node": "^14.18.63", "@types/react": "^18", "tsdx": "^0.14.1", "tslib": "^2.2.0" diff --git a/plasmicpkgs/react-scroll-parallax/package.json b/plasmicpkgs/react-scroll-parallax/package.json index 1193b0ea9f..b3adf1f198 100644 --- a/plasmicpkgs/react-scroll-parallax/package.json +++ b/plasmicpkgs/react-scroll-parallax/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/react-scroll-parallax", - "version": "0.0.253", - "description": "Plasmic registration call for the HTML5 video element", + "version": "0.0.266", + "description": "Plasmic registration calls for react-scroll-parallax scroll effects.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/react-scroll-parallax" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/react-scroll-parallax.esm.js", @@ -21,15 +28,15 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@types/node": "^14.18.63", "@types/react": "^18", "tsdx": "^0.14.1", "tslib": "^2.2.0" diff --git a/plasmicpkgs/react-slick/package.json b/plasmicpkgs/react-slick/package.json index 8a92ef74a5..74a0e9bbbe 100644 --- a/plasmicpkgs/react-slick/package.json +++ b/plasmicpkgs/react-slick/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/react-slick", - "version": "0.0.265", + "version": "0.0.278", "description": "Plasmic registration call for the React Slick Slider component", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/react-slick" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/react-slick.esm.js", @@ -21,15 +28,15 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@types/node": "^14.18.63", "@types/react": "^18", "@types/react-slick": "^0.23.7", "tsdx": "^0.14.1", diff --git a/plasmicpkgs/react-twitter-widgets/package.json b/plasmicpkgs/react-twitter-widgets/package.json index 26df167c8d..d426e7c6b9 100644 --- a/plasmicpkgs/react-twitter-widgets/package.json +++ b/plasmicpkgs/react-twitter-widgets/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/react-twitter-widgets", - "version": "0.0.242", + "version": "0.0.255", "description": "Plasmic registration calls for react-twitter-widgets", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/react-twitter-widgets" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/react-twitter-widgets.esm.js", @@ -21,15 +28,15 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@types/node": "^14.18.63", "@types/react": "^18", "tsdx": "^0.14.1", "tslib": "^2.2.0" diff --git a/plasmicpkgs/react-youtube/package.json b/plasmicpkgs/react-youtube/package.json index 9930e17aae..073d09d1cf 100644 --- a/plasmicpkgs/react-youtube/package.json +++ b/plasmicpkgs/react-youtube/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/react-youtube", - "version": "7.13.248", + "version": "7.13.261", "description": "Plasmic registration call for react-youtube", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/react-youtube" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/react-youtube.esm.js", @@ -21,15 +28,15 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@types/node": "^14.18.63", "@types/react": "^18", "@types/youtube-player": "^5.5.6", "tsdx": "^0.14.1", diff --git a/plasmicpkgs/rive/package.json b/plasmicpkgs/rive/package.json index ea5488d798..53b98b3aec 100644 --- a/plasmicpkgs/rive/package.json +++ b/plasmicpkgs/rive/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/rive", - "version": "0.0.30", + "version": "0.0.43", "description": "Plasmic registration call for rive animation", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/rive" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/rive.esm.js", @@ -21,15 +28,15 @@ "scripts": { "build": "tsdx build", "start": "tsdx watch", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", "analyze": "size-limit --why" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", - "@types/node": "^14.0.26", + "@plasmicapp/host": "2.0.14", + "@types/node": "^14.18.63", "@types/react": "^18", "tsdx": "^0.14.1", "tslib": "^2.2.0" diff --git a/plasmicpkgs/spotify/package.json b/plasmicpkgs/spotify/package.json index 17e31c27d1..1048cec8b6 100644 --- a/plasmicpkgs/spotify/package.json +++ b/plasmicpkgs/spotify/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/plasmic-spotify", - "version": "0.0.21", + "version": "0.0.34", "description": "Plasmic Spotify components.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/spotify" + }, + "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "module": "dist/plasmic-spotify.esm.js", @@ -14,7 +21,7 @@ "scripts": { "start": "tsdx watch", "build": "tsdx build", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests", + "test": "TEST_CWD=`pwd` pnpm -w test --passWithNoTests", "lint": "tsdx lint", "prepublishOnly": "npm run build", "size": "size-limit", @@ -34,7 +41,7 @@ } ], "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@types/react": "^18", "@types/react-dom": "^18", "husky": "^7.0.4", @@ -44,6 +51,6 @@ "tslib": "^2.3.1" }, "dependencies": { - "@plasmicapp/query": "0.1.84" + "@plasmicapp/query": "0.1.87" } } diff --git a/plasmicpkgs/strapi/package.json b/plasmicpkgs/strapi/package.json index 64679da5a8..16978d954a 100644 --- a/plasmicpkgs/strapi/package.json +++ b/plasmicpkgs/strapi/package.json @@ -1,7 +1,9 @@ { "name": "@plasmicpkgs/strapi", - "version": "0.0.19", - "description": "Plasmic registration for Strapi", + "version": "0.0.33", + "description": "Custom functions for querying Strapi content from Plasmic data queries.", + "homepage": "https://www.plasmic.app", + "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/plasmicapp/plasmic.git", @@ -24,10 +26,10 @@ "dist" ], "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.ts", - "test": "TEST_CWD=`pwd` yarn --cwd=../.. test", + "test": "TEST_CWD=`pwd` pnpm -w test", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh" }, @@ -35,7 +37,7 @@ "qs": "^6.11.0" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@react-awesome-query-builder/core": "^6.6.15", "@types/json-logic-js": "^2.0.8", "@types/qs": "^6.9.7", diff --git a/plasmicpkgs/strapi/src/query-strapi.tsx b/plasmicpkgs/strapi/src/query-strapi.tsx index 32ff1bce1d..104e6c9fe5 100644 --- a/plasmicpkgs/strapi/src/query-strapi.tsx +++ b/plasmicpkgs/strapi/src/query-strapi.tsx @@ -27,6 +27,7 @@ export const queryStrapiMeta: CustomFunctionMeta = { host: { type: "string", description: "The Strapi host URL (e.g., https://example.com)", + required: true, }, token: { type: "string", @@ -36,9 +37,11 @@ export const queryStrapiMeta: CustomFunctionMeta = { collection: { type: "string", description: "The name of the Strapi collection to query", + required: true, }, filterLogic: { type: "queryBuilder", + displayName: "Filter", description: "Filter fetched entries. Defaults to fetch all entries.", config: (_: any, ctx: any) => { const fields = ctx?.strapiFields || []; diff --git a/plasmicpkgs/tiptap/package.json b/plasmicpkgs/tiptap/package.json index 244c493a01..8e9f017ea3 100644 --- a/plasmicpkgs/tiptap/package.json +++ b/plasmicpkgs/tiptap/package.json @@ -1,7 +1,14 @@ { "name": "@plasmicpkgs/tiptap", - "version": "0.0.27", - "description": "Tiptap for React", + "version": "0.0.48", + "description": "Plasmic code components for the Tiptap rich text editor.", + "homepage": "https://www.plasmic.app", + "repository": { + "type": "git", + "url": "git+https://github.com/plasmicapp/plasmic.git", + "directory": "plasmicpkgs/tiptap" + }, + "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/tiptap.esm.js", @@ -47,7 +54,7 @@ } ], "scripts": { - "build": "rollup -c rollup.config.mjs && yarn tsc --emitDeclarationOnly --declaration src/index.ts --incremental --tsBuildInfoFile ./dist/.tsbuildinfo --skipLibCheck --jsx react --lib dom,esnext --esModuleInterop --strict --outDir ./dist/ && cp ./dist/*.d.ts skinny/ && rm skinny/index.d.ts", + "build": "rollup -c rollup.config.mjs && tsc --emitDeclarationOnly --declaration src/index.ts --incremental --tsBuildInfoFile ./dist/.tsbuildinfo --skipLibCheck --jsx react --lib dom,esnext --esModuleInterop --strict --outDir ./dist/ && cp ./dist/*.d.ts skinny/ && rm skinny/index.d.ts", "prepublishOnly": "npm run build", "clean": "rm -rf dist/ skinny/*.ts skinny/*.map skinny/*.js", "storybook": "storybook dev -p 6006", @@ -55,12 +62,12 @@ "test-storybook": "test-storybook" }, "devDependencies": { - "@plasmicapp/data-sources": "1.0.2", - "@plasmicapp/host": "2.0.1", + "@plasmicapp/data-sources": "1.0.23", + "@plasmicapp/host": "2.0.14", "@rollup/plugin-commonjs": "^11.0.0", "@rollup/plugin-json": "^4.0.0", "@rollup/plugin-node-resolve": "^9.0.0", - "@types/node": "^14.0.26", + "@types/node": "^14.18.63", "@types/react": "^18", "@types/react-dom": "^18", "glob": "^8.1.0", diff --git a/plasmicpkgs/vanilla-cookieconsent/package.json b/plasmicpkgs/vanilla-cookieconsent/package.json index cb1929bec1..deb6a68ca9 100644 --- a/plasmicpkgs/vanilla-cookieconsent/package.json +++ b/plasmicpkgs/vanilla-cookieconsent/package.json @@ -1,7 +1,9 @@ { "name": "@plasmicpkgs/vanilla-cookieconsent", - "version": "0.0.20", + "version": "0.0.33", "description": "Plasmic cookie consent banner component.", + "homepage": "https://www.plasmic.app", + "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/plasmicapp/plasmic.git", @@ -24,14 +26,14 @@ "dist" ], "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.ts", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "typescript": "^5.7.3" }, "peerDependencies": { diff --git a/plasmicpkgs/wordpress/package.json b/plasmicpkgs/wordpress/package.json index 4a9e2a5243..16108033f5 100644 --- a/plasmicpkgs/wordpress/package.json +++ b/plasmicpkgs/wordpress/package.json @@ -1,7 +1,9 @@ { "name": "@plasmicpkgs/wordpress", - "version": "0.0.20", - "description": "Plasmic registration for WordPress", + "version": "0.0.34", + "description": "Custom functions for querying the WordPress REST API from Plasmic data queries.", + "homepage": "https://www.plasmic.app", + "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/plasmicapp/plasmic.git", @@ -24,19 +26,20 @@ "dist" ], "scripts": { - "build": "yarn build:types && yarn build:index", - "build:types": "yarn tsc", + "build": "pnpm build:types && pnpm build:index", + "build:types": "tsc", "build:index": "node ../../build.mjs ./src/index.ts", "test": "vitest run", "prepublishOnly": "npm run build", "postpublish": "bash ../../scripts/publish-api-doc-model.sh" }, "devDependencies": { - "@plasmicapp/host": "2.0.1", + "@plasmicapp/host": "2.0.14", "@react-awesome-query-builder/core": "^6.6.15", "@types/json-logic-js": "^2.0.8", "typescript": "^5.7.3", - "vitest": "3.2.4" + "vite": "8.1.5", + "vitest": "4.1.10" }, "peerDependencies": { "@plasmicapp/host": ">=1.0.211" diff --git a/plasmicpkgs/wordpress/src/query-wordpress.ts b/plasmicpkgs/wordpress/src/query-wordpress.ts index 54ce89e6cc..12fb80f75a 100644 --- a/plasmicpkgs/wordpress/src/query-wordpress.ts +++ b/plasmicpkgs/wordpress/src/query-wordpress.ts @@ -216,6 +216,7 @@ export const queryWordpressMeta: CustomFunctionMeta = { description: "Base URL of your WordPress site (e.g., https://example.com)", helpText: "The root URL of your WordPress installation", + required: true, }, queryType: { type: "choice", @@ -230,7 +231,7 @@ export const queryWordpressMeta: CustomFunctionMeta = { filterLogic: { type: "queryBuilder", - displayName: "Filters", + displayName: "Filter", description: "Filter fetched entries. Defaults to fetch all entries.", config: (_: any, ctx: any) => { const { queryType, categories, tags } = ctx; diff --git a/plasmicpkgs/wordpress/yarn.lock b/plasmicpkgs/wordpress/yarn.lock deleted file mode 100644 index cf2008ec93..0000000000 --- a/plasmicpkgs/wordpress/yarn.lock +++ /dev/null @@ -1,39 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@plasmicapp/host@1.0.226": - version "1.0.226" - resolved "https://registry.yarnpkg.com/@plasmicapp/host/-/host-1.0.226.tgz#3807c401d2ac3c126d18973684b42db23abeba75" - integrity sha512-8tCtx2FqRaPkKREkFbwfuoVmhCmUl/BS7/7sE/xO1IlZXrKWh4qQV4t2iXQLaz4QmectkNaFm38BUjlnnpKYvA== - dependencies: - "@plasmicapp/query" "0.1.80" - csstype "^3.1.2" - window-or-global "^1.0.1" - -"@plasmicapp/query@0.1.80": - version "0.1.80" - resolved "https://registry.yarnpkg.com/@plasmicapp/query/-/query-0.1.80.tgz#264e34431a3392ef5f2ce1e1ba52cf72ab16f159" - integrity sha512-mcE6KpbTE6uMhzk/OAeA1n2l2mDfFzQSjFCc+ASp6wBAhHmgGmozFsutgUMttduV20UPR9Nv/23thnOHMuYlaQ== - dependencies: - swr "^1.0.0" - -csstype@^3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== - -swr@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/swr/-/swr-1.3.0.tgz#c6531866a35b4db37b38b72c45a63171faf9f4e8" - integrity sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw== - -typescript@^5.7.3: - version "5.9.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f" - integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== - -window-or-global@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/window-or-global/-/window-or-global-1.0.1.tgz#dbe45ba2a291aabc56d62cf66c45b7fa322946de" - integrity sha512-tE12J/NenOv4xdVobD+AD3fT06T4KNqnzRhkv5nBIu7K+pvOH2oLCEgYP+i+5mF2jtI6FEADheOdZkA8YWET9w== diff --git a/platform/canvas-packages/esbuild.js b/platform/canvas-packages/esbuild.js index 22959ebc16..dd063d0949 100644 --- a/platform/canvas-packages/esbuild.js +++ b/platform/canvas-packages/esbuild.js @@ -142,7 +142,7 @@ const clientConfigs = clientEntries.map(({ pkg, useSubJSXRuntime }) => ({ name: "antd-fixup", setup(build) { build.onLoad({ filter: /FormItem\.js$/ }, async (args) => { - let text = await fs.promises.readFile(args.path, "utf8"); + const text = await fs.promises.readFile(args.path, "utf8"); return { contents: text.replace( /FormContext, FormItemStatusContext, NoStyleItemContext/, @@ -246,7 +246,7 @@ const clientConfigs = clientEntries.map(({ pkg, useSubJSXRuntime }) => ({ console.log("watching..."); } }) - .catch((err) => { + .catch((_err) => { // console.error(err); process.exit(1); }) @@ -254,7 +254,7 @@ const clientConfigs = clientEntries.map(({ pkg, useSubJSXRuntime }) => ({ // We also use esbuild to build server-side packages, which are used for upgrading // hostless packages via PublishHostless or for creating new hostless packages -// for cypress tests. All we need to do is to be able to run the +// for Playwright tests. All we need to do is to be able to run the // registerAll() call to see and update component metadata -- we do not need to // actually use or render the components! So we can just bundle them enough to // do so, and don't have to worry about all the plugin package-swapping we have diff --git a/platform/canvas-packages/package.json b/platform/canvas-packages/package.json index e55e27033b..8a2f8cf94a 100644 --- a/platform/canvas-packages/package.json +++ b/platform/canvas-packages/package.json @@ -14,6 +14,7 @@ "dependencies": { "@ant-design/icons": "^5.0.1", "@ant-design/pro-components": "2.6.4", +<<<<<<< HEAD "@elasticpath/plasmic-ep-commerce-elastic-path": "^0.0.3", "@emotion/react": "^11.10.4", "@emotion/styled": "^11.10.4", @@ -74,37 +75,98 @@ "@types/pluralize": "^0.0.31", "@types/semver": "^7.5.3", "@types/tinycolor2": "^1.4.4", +======= + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.1", + "@faker-js/faker": "^8.4.1", + "@plasmicapp/react-web": "^1.0.28", + "@plasmicpkgs/airtable": "^0.0.271", + "@plasmicpkgs/antd": "^2.0.179", + "@plasmicpkgs/antd5": "^0.0.365", + "@plasmicpkgs/cms": "^0.0.35", + "@plasmicpkgs/commerce": "^0.0.255", + "@plasmicpkgs/commerce-commercetools": "^0.0.205", + "@plasmicpkgs/commerce-local": "^0.0.255", + "@plasmicpkgs/commerce-saleor": "^0.0.219", + "@plasmicpkgs/commerce-shopify": "^0.0.263", + "@plasmicpkgs/commerce-swell": "^0.0.265", + "@plasmicpkgs/contentful": "^0.0.29", + "@plasmicpkgs/fetch": "^0.0.49", + "@plasmicpkgs/framer-motion": "^0.0.255", + "@plasmicpkgs/graphql": "^0.0.43", + "@plasmicpkgs/lottie-react": "^0.0.249", + "@plasmicpkgs/plasmic-basic-components": "^0.0.286", + "@plasmicpkgs/plasmic-chakra-ui": "^0.0.87", + "@plasmicpkgs/plasmic-cms": "^0.0.326", + "@plasmicpkgs/plasmic-content-stack": "^0.0.211", + "@plasmicpkgs/plasmic-contentful": "^0.0.205", + "@plasmicpkgs/plasmic-embed-css": "^0.1.241", + "@plasmicpkgs/plasmic-graphcms": "^0.0.228", + "@plasmicpkgs/plasmic-link-preview": "^1.0.167", + "@plasmicpkgs/plasmic-nav": "^0.0.227", + "@plasmicpkgs/plasmic-query": "^0.0.276", + "@plasmicpkgs/plasmic-rich-components": "^1.0.267", + "@plasmicpkgs/plasmic-sanity-io": "^1.0.236", + "@plasmicpkgs/plasmic-strapi": "^0.1.214", + "@plasmicpkgs/plasmic-tabs": "^0.0.98", + "@plasmicpkgs/plasmic-wordpress": "^0.0.184", + "@plasmicpkgs/plasmic-wordpress-graphql": "^0.0.173", + "@plasmicpkgs/radix-ui": "^0.0.115", + "@plasmicpkgs/react-aria": "^0.0.192", + "@plasmicpkgs/react-awesome-reveal": "^3.8.259", + "@plasmicpkgs/react-chartjs-2": "^1.0.167", + "@plasmicpkgs/react-parallax-tilt": "^0.0.257", + "@plasmicpkgs/react-quill": "^1.0.120", + "@plasmicpkgs/react-scroll-parallax": "^0.0.266", + "@plasmicpkgs/react-slick": "^0.0.278", + "@plasmicpkgs/react-twitter-widgets": "^0.0.255", + "@plasmicpkgs/react-youtube": "^7.13.261", + "@plasmicpkgs/rive": "^0.0.43", + "@plasmicpkgs/strapi": "^0.0.33", + "@plasmicpkgs/tiptap": "^0.0.48", + "@plasmicpkgs/vanilla-cookieconsent": "^0.0.33", + "@plasmicpkgs/wordpress": "^0.0.34", + "@react-aria/focus": "3.21.5", + "@react-aria/interactions": "3.27.1", + "@react-aria/overlays": "3.31.2", + "@types/isomorphic-fetch": "^0.0.39", + "@types/md5": "^2.3.6", + "@types/papaparse": "^5.5.2", + "@types/pluralize": "^0.0.33", + "@types/semver": "^7.7.1", + "@types/tinycolor2": "^1.4.6", +>>>>>>> upstream/master "@types/uuid": "^9.0.5", "antd": "^5.12.7", "axios": "^1.15.0", - "chart.js": "^4.2.1", + "chart.js": "^4.5.1", "classnames": "^2.3.2", "copy-to-clipboard": "^3.3.3", "date-fns": "^2.30.0", - "dayjs": "^1.11.10", + "dayjs": "^1.11.20", "fast-stringify": "^2.0.0", "framer-motion": "^7.6.1", - "html-to-image": "^1.11.11", - "immer": "^10.0.3", + "html-to-image": "^1.11.13", + "immer": "^10.2.0", "internal-react-slick": "link:./internal_pkgs/react-slick", "isomorphic-fetch": "^3.0.0", "jquery": "^3.7.1", "lodash": "^4.18.1", "marked": "^9.1.1", "md5": "^2.3.0", - "nanoid": "^5.0.2", - "papaparse": "^5.4.1", + "nanoid": "^5.1.7", + "papaparse": "^5.5.3", "pluralize": "^8.0.0", - "postcss": "^8.4.12", + "postcss": "^8.5.9", "random": "^4.1.0", "rc-util": "^5.44.4", - "react-chartjs-2": "^5.2.0", + "react-chartjs-2": "^5.3.1", "react-quill": "^2.0.0", "register-library": "file:../wab/src/wab/shared/register-library", "resize-observer-polyfill": "^1.5.1", - "semver": "^7.5.4", - "slate": "^0.124.0", - "slate-dom": "^0.124.0", + "semver": "^7.7.4", + "slate": "^0.124.1", + "slate-dom": "^0.124.1", "slate-react": "^0.124.0", "slick-carousel": "^1.8.1", "tinycolor2": "^1.6.0", @@ -113,9 +175,9 @@ "zod": "^3.22.4" }, "devDependencies": { - "@babel/core": "^7.28.4", - "@babel/preset-react": "^7.27.1", - "@plasmicapp/host": "^2.0.1", + "@babel/core": "^7.29.0", + "@babel/preset-react": "^7.28.5", + "@plasmicapp/host": "^2.0.14", "@rollup/plugin-alias": "^3.1.8", "@rollup/plugin-babel": "^5.3.1", "@rollup/plugin-commonjs": "^21.0.2", @@ -123,11 +185,11 @@ "@rollup/plugin-replace": "^4.0.0", "@rollup/plugin-sucrase": "^4.0.2", "@rollup/plugin-typescript": "^8.3.1", - "@size-limit/preset-app": "^12.0.0", + "@size-limit/preset-app": "^12.1.0", "@types/jquery": "^3.5.22", - "@types/react": "^18", + "@types/react": "^18.3.28", "@types/react-dom": "^18", - "@types/react-slick": "^0.23.8", + "@types/react-slick": "^0.23.13", "@yarnpkg/lockfile": "^1.1.0", "esbuild": "^0.15.11", "esbuild-plugin-alias": "^0.2.1", @@ -138,7 +200,7 @@ "rollup-plugin-postcss": "^4.0.2", "rollup-plugin-terser": "^7.0.2", "sha256": "^0.2.0", - "size-limit": "^12.0.0", + "size-limit": "^12.1.0", "typescript": "6.0.3" }, "resolutions": { diff --git a/platform/canvas-packages/yarn.lock b/platform/canvas-packages/yarn.lock index 15ca30d7e3..9dc857d032 100644 --- a/platform/canvas-packages/yarn.lock +++ b/platform/canvas-packages/yarn.lock @@ -10,16 +10,16 @@ "@ctrl/tinycolor" "^3.4.0" "@ant-design/colors@^7.0.0", "@ant-design/colors@^7.0.2": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-7.0.2.tgz#c5c753a467ce8d86ba7ca4736d2c01f599bb5492" - integrity sha512-7KJkhTiPiLHSu+LmMJnehfJ6242OCxSlR3xHVBecYxnMW8MS/878NXct1GqYARyL59fyeFdKRxXTfvR9SnDgJg== + version "7.2.1" + resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-7.2.1.tgz#3bbc1c6c18550020d1622a0067ff03492318df98" + integrity sha512-lCHDcEzieu4GA3n8ELeZ5VQ8pKQAWcGGLRTQ50aQM2iqPpq2evTxER84jfdPvsPAtEcZ7m44NI45edFMo8oOYQ== dependencies: - "@ctrl/tinycolor" "^3.6.1" + "@ant-design/fast-color" "^2.0.6" "@ant-design/cssinjs@^1.11.0", "@ant-design/cssinjs@^1.18.2": - version "1.18.2" - resolved "https://registry.yarnpkg.com/@ant-design/cssinjs/-/cssinjs-1.18.2.tgz#d993a64c1d0bf51f4a9d662ddc8ed8426977b5c3" - integrity sha512-514V9rjLaFYb3v4s55/8bg2E6fb81b99s3crDZf4nSwtiDLLXs8axnIph+q2TVkY2hbJPZOn/cVsVcnLkzFy7w== + version "1.24.0" + resolved "https://registry.yarnpkg.com/@ant-design/cssinjs/-/cssinjs-1.24.0.tgz#7db091f03f189abc77a13cbd27a2293802cd7285" + integrity sha512-K4cYrJBsgvL+IoozUXYjbT6LHHNt+19a9zkvpBPxLjFHas1UpPM2A5MlhROb0BT8N8WoavM5VsP9MeSeNK/3mg== dependencies: "@babel/runtime" "^7.11.1" "@emotion/hash" "^0.8.0" @@ -27,7 +27,14 @@ classnames "^2.3.1" csstype "^3.1.3" rc-util "^5.35.0" - stylis "^4.0.13" + stylis "^4.3.4" + +"@ant-design/fast-color@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@ant-design/fast-color/-/fast-color-2.0.6.tgz#ab4d4455c1542c9017d367c2fa8ca3e4215d0ba2" + integrity sha512-y2217gk4NqL35giHl72o6Zzqji9O7vHh9YmhUVkPtAOpoTCH4uWxo/pr4VE8t0+ChEPs0qo4eJRC5Q1eXWo3vA== + dependencies: + "@babel/runtime" "^7.24.7" "@ant-design/icons-svg@^4.2.1", "@ant-design/icons-svg@^4.3.0": version "4.3.1" @@ -253,34 +260,34 @@ resize-observer-polyfill "^1.5.1" throttle-debounce "^5.0.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" - integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c" + integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== dependencies: - "@babel/helper-validator-identifier" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" js-tokens "^4.0.0" picocolors "^1.1.1" -"@babel/compat-data@^7.27.2": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.4.tgz#96fdf1af1b8859c8474ab39c295312bfb7c24b04" - integrity sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw== - -"@babel/core@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.4.tgz#12a550b8794452df4c8b084f95003bce1742d496" - integrity sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.3" - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-module-transforms" "^7.28.3" - "@babel/helpers" "^7.28.4" - "@babel/parser" "^7.28.4" - "@babel/template" "^7.27.2" - "@babel/traverse" "^7.28.4" - "@babel/types" "^7.28.4" +"@babel/compat-data@^7.28.6": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d" + integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg== + +"@babel/core@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322" + integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA== + dependencies: + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helpers" "^7.28.6" + "@babel/parser" "^7.29.0" + "@babel/template" "^7.28.6" + "@babel/traverse" "^7.29.0" + "@babel/types" "^7.29.0" "@jridgewell/remapping" "^2.3.5" convert-source-map "^2.0.0" debug "^4.1.0" @@ -288,13 +295,13 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.3.tgz#9626c1741c650cbac39121694a0f2d7451b8ef3e" - integrity sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw== +"@babel/generator@^7.29.0": + version "7.29.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50" + integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw== dependencies: - "@babel/parser" "^7.28.3" - "@babel/types" "^7.28.2" + "@babel/parser" "^7.29.0" + "@babel/types" "^7.29.0" "@jridgewell/gen-mapping" "^0.3.12" "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" @@ -306,12 +313,12 @@ dependencies: "@babel/types" "^7.27.3" -"@babel/helper-compilation-targets@^7.27.2": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" - integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== +"@babel/helper-compilation-targets@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25" + integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA== dependencies: - "@babel/compat-data" "^7.27.2" + "@babel/compat-data" "^7.28.6" "@babel/helper-validator-option" "^7.27.1" browserslist "^4.24.0" lru-cache "^5.1.1" @@ -322,22 +329,22 @@ resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" - integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.27.1", "@babel/helper-module-imports@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c" + integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw== dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" + "@babel/traverse" "^7.28.6" + "@babel/types" "^7.28.6" -"@babel/helper-module-transforms@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz#a2b37d3da3b2344fe085dab234426f2b9a2fa5f6" - integrity sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw== +"@babel/helper-module-transforms@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e" + integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@babel/traverse" "^7.28.3" + "@babel/helper-module-imports" "^7.28.6" + "@babel/helper-validator-identifier" "^7.28.5" + "@babel/traverse" "^7.28.6" "@babel/helper-plugin-utils@^7.27.1": version "7.27.1" @@ -349,30 +356,30 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" - integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== +"@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== "@babel/helper-validator-option@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== -"@babel/helpers@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.4.tgz#fe07274742e95bdf7cf1443593eeb8926ab63827" - integrity sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w== +"@babel/helpers@^7.28.6": + version "7.29.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.29.2.tgz#9cfbccb02b8e229892c0b07038052cc1a8709c49" + integrity sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw== dependencies: - "@babel/template" "^7.27.2" - "@babel/types" "^7.28.4" + "@babel/template" "^7.28.6" + "@babel/types" "^7.29.0" -"@babel/parser@^7.27.2", "@babel/parser@^7.28.3", "@babel/parser@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.4.tgz#da25d4643532890932cc03f7705fe19637e03fa8" - integrity sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg== +"@babel/parser@^7.28.6", "@babel/parser@^7.29.0": + version "7.29.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.2.tgz#58bd50b9a7951d134988a1ae177a35ef9a703ba1" + integrity sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA== dependencies: - "@babel/types" "^7.28.4" + "@babel/types" "^7.29.0" "@babel/plugin-syntax-jsx@^7.27.1": version "7.27.1" @@ -381,7 +388,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-react-display-name@^7.27.1": +"@babel/plugin-transform-react-display-name@^7.28.0": version "7.28.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz#6f20a7295fea7df42eb42fed8f896813f5b934de" integrity sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA== @@ -414,54 +421,52 @@ "@babel/helper-annotate-as-pure" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/preset-react@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.27.1.tgz#86ea0a5ca3984663f744be2fd26cb6747c3fd0ec" - integrity sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA== +"@babel/preset-react@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.28.5.tgz#6fcc0400fa79698433d653092c3919bb4b0878d9" + integrity sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ== dependencies: "@babel/helper-plugin-utils" "^7.27.1" "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-transform-react-display-name" "^7.27.1" + "@babel/plugin-transform-react-display-name" "^7.28.0" "@babel/plugin-transform-react-jsx" "^7.27.1" "@babel/plugin-transform-react-jsx-development" "^7.27.1" "@babel/plugin-transform-react-pure-annotations" "^7.27.1" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.16.7", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.6", "@babel/runtime@^7.8.4": - version "7.23.8" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.8.tgz#8ee6fe1ac47add7122902f257b8ddf55c898f650" - integrity sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw== - dependencies: - regenerator-runtime "^0.14.0" +"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.16.7", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.6", "@babel/runtime@^7.24.7", "@babel/runtime@^7.8.4": + version "7.29.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.2.tgz#9a6e2d05f4b6692e1801cd4fb176ad823930ed5e" + integrity sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g== -"@babel/template@^7.27.2": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" - integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== +"@babel/template@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57" + integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/parser" "^7.27.2" - "@babel/types" "^7.27.1" + "@babel/code-frame" "^7.28.6" + "@babel/parser" "^7.28.6" + "@babel/types" "^7.28.6" -"@babel/traverse@^7.27.1", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.4.tgz#8d456101b96ab175d487249f60680221692b958b" - integrity sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ== +"@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a" + integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.3" + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.28.4" - "@babel/template" "^7.27.2" - "@babel/types" "^7.28.4" + "@babel/parser" "^7.29.0" + "@babel/template" "^7.28.6" + "@babel/types" "^7.29.0" debug "^4.3.1" -"@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.4.tgz#0a4e618f4c60a7cd6c11cb2d48060e4dbe38ac3a" - integrity sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q== +"@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.6", "@babel/types@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" + integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== dependencies: "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" "@chakra-ui/accordion@2.3.1": version "2.3.1" @@ -1385,6 +1390,7 @@ dependencies: tslib "^2.0.0" +<<<<<<< HEAD "@elasticpath/plasmic-ep-commerce-elastic-path@^0.0.3": version "0.0.3" resolved "https://registry.yarnpkg.com/@elasticpath/plasmic-ep-commerce-elastic-path/-/plasmic-ep-commerce-elastic-path-0.0.3.tgz#005a9253fbbb40da4089d6c6a70f2717e7127c2d" @@ -1406,12 +1412,18 @@ version "11.11.0" resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== +======= +"@emotion/babel-plugin@^11.13.5": + version "11.13.5" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz#eab8d65dbded74e0ecfd28dc218e75607c4e7bc0" + integrity sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ== +>>>>>>> upstream/master dependencies: "@babel/helper-module-imports" "^7.16.7" "@babel/runtime" "^7.18.3" - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/serialize" "^1.1.2" + "@emotion/hash" "^0.9.2" + "@emotion/memoize" "^0.9.0" + "@emotion/serialize" "^1.3.3" babel-plugin-macros "^3.1.0" convert-source-map "^1.5.0" escape-string-regexp "^4.0.0" @@ -1419,15 +1431,15 @@ source-map "^0.5.7" stylis "4.2.0" -"@emotion/cache@^11.11.0": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" - integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== +"@emotion/cache@^11.14.0": + version "11.14.0" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.14.0.tgz#ee44b26986eeb93c8be82bb92f1f7a9b21b2ed76" + integrity sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA== dependencies: - "@emotion/memoize" "^0.8.1" - "@emotion/sheet" "^1.2.2" - "@emotion/utils" "^1.2.1" - "@emotion/weak-memoize" "^0.3.1" + "@emotion/memoize" "^0.9.0" + "@emotion/sheet" "^1.4.0" + "@emotion/utils" "^1.4.2" + "@emotion/weak-memoize" "^0.4.0" stylis "4.2.0" "@emotion/hash@^0.8.0": @@ -1435,10 +1447,10 @@ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== -"@emotion/hash@^0.9.1": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" - integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== +"@emotion/hash@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.2.tgz#ff9221b9f58b4dfe61e619a7788734bd63f6898b" + integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g== "@emotion/is-prop-valid@^0.8.2": version "0.8.8" @@ -1447,89 +1459,89 @@ dependencies: "@emotion/memoize" "0.7.4" -"@emotion/is-prop-valid@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" - integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== +"@emotion/is-prop-valid@^1.3.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.4.0.tgz#e9ad47adff0b5c94c72db3669ce46de33edf28c0" + integrity sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw== dependencies: - "@emotion/memoize" "^0.8.0" + "@emotion/memoize" "^0.9.0" "@emotion/memoize@0.7.4": version "0.7.4" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== -"@emotion/memoize@^0.8.0", "@emotion/memoize@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" - integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== +"@emotion/memoize@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.9.0.tgz#745969d649977776b43fc7648c556aaa462b4102" + integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ== -"@emotion/react@^11.10.4", "@emotion/react@^11.11.4": - version "11.11.4" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.4.tgz#3a829cac25c1f00e126408fab7f891f00ecc3c1d" - integrity sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw== +"@emotion/react@^11.11.4", "@emotion/react@^11.14.0": + version "11.14.0" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.14.0.tgz#cfaae35ebc67dd9ef4ea2e9acc6cd29e157dd05d" + integrity sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA== dependencies: "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.11.0" - "@emotion/cache" "^11.11.0" - "@emotion/serialize" "^1.1.3" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" - "@emotion/utils" "^1.2.1" - "@emotion/weak-memoize" "^0.3.1" + "@emotion/babel-plugin" "^11.13.5" + "@emotion/cache" "^11.14.0" + "@emotion/serialize" "^1.3.3" + "@emotion/use-insertion-effect-with-fallbacks" "^1.2.0" + "@emotion/utils" "^1.4.2" + "@emotion/weak-memoize" "^0.4.0" hoist-non-react-statics "^3.3.1" -"@emotion/serialize@^1.1.1", "@emotion/serialize@^1.1.2", "@emotion/serialize@^1.1.3": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.4.tgz#fc8f6d80c492cfa08801d544a05331d1cc7cd451" - integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== +"@emotion/serialize@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.3.tgz#d291531005f17d704d0463a032fe679f376509e8" + integrity sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA== dependencies: - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/unitless" "^0.8.1" - "@emotion/utils" "^1.2.1" + "@emotion/hash" "^0.9.2" + "@emotion/memoize" "^0.9.0" + "@emotion/unitless" "^0.10.0" + "@emotion/utils" "^1.4.2" csstype "^3.0.2" -"@emotion/sheet@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" - integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== +"@emotion/sheet@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.4.0.tgz#c9299c34d248bc26e82563735f78953d2efca83c" + integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg== -"@emotion/styled@^11.10.4": - version "11.10.5" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.10.5.tgz#1fe7bf941b0909802cb826457e362444e7e96a79" - integrity sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw== +"@emotion/styled@^11.14.1": + version "11.14.1" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.14.1.tgz#8c34bed2948e83e1980370305614c20955aacd1c" + integrity sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw== dependencies: "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.10.5" - "@emotion/is-prop-valid" "^1.2.0" - "@emotion/serialize" "^1.1.1" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@emotion/utils" "^1.2.0" + "@emotion/babel-plugin" "^11.13.5" + "@emotion/is-prop-valid" "^1.3.0" + "@emotion/serialize" "^1.3.3" + "@emotion/use-insertion-effect-with-fallbacks" "^1.2.0" + "@emotion/utils" "^1.4.2" + +"@emotion/unitless@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.10.0.tgz#2af2f7c7e5150f497bdabd848ce7b218a27cf745" + integrity sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg== "@emotion/unitless@^0.7.5": version "0.7.5" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== -"@emotion/unitless@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" - integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== - -"@emotion/use-insertion-effect-with-fallbacks@^1.0.0", "@emotion/use-insertion-effect-with-fallbacks@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" - integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== +"@emotion/use-insertion-effect-with-fallbacks@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz#8a8cb77b590e09affb960f4ff1e9a89e532738bf" + integrity sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg== -"@emotion/utils@^1.2.0", "@emotion/utils@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" - integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== +"@emotion/utils@^1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.2.tgz#6df6c45881fcb1c412d6688a311a98b7f59c1b52" + integrity sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA== -"@emotion/weak-memoize@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" - integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== +"@emotion/weak-memoize@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6" + integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg== "@epcc-sdk/sdks-shopper@^0.0.40": version "0.0.40" @@ -1548,10 +1560,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.15.tgz#32c65517a09320b62530867345222fde7794fbe1" integrity sha512-lhz6UNPMDXUhtXSulw8XlFAtSYO26WmHQnCi2Lg2p+/TMiJKNLtZCYUxV4wG6rZMzXmr8InGpNwk+DLT2Hm0PA== -"@faker-js/faker@^8.2.0": - version "8.2.0" - resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-8.2.0.tgz#d4656d2cb485fe6ec4e7b340da9f16fac2c36c4a" - integrity sha512-VacmzZqVxdWdf9y64lDOMZNDMM/FQdtM9IsaOPKOm2suYwEatb8VkdHqOzXcDnZbk7YDE2BmsJmy/2Hmkn563g== +"@faker-js/faker@^8.4.1": + version "8.4.1" + resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-8.4.1.tgz#5d5e8aee8fce48f5e189bf730ebd1f758f491451" + integrity sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg== "@floating-ui/core@^1.4.2": version "1.5.0" @@ -1619,6 +1631,7 @@ dependencies: tslib "2.4.0" +<<<<<<< HEAD "@hey-api/client-fetch@0.6.0": version "0.6.0" resolved "https://registry.yarnpkg.com/@hey-api/client-fetch/-/client-fetch-0.6.0.tgz#50e10b29d3d08ff740061fd9fe54cc4445571a8b" @@ -1633,28 +1646,34 @@ version "3.8.1" resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.8.1.tgz#fb3709440060a9efa0722615e83550e682e83221" integrity sha512-PgVE6B6eIZtzf9Gu5HvJxRK3ufUFz9DhspELuhW/N0GuMGMTLvPQNRkHP2hTuP9lblOk+f+1xi96sPiPXANXAA== +======= +"@internationalized/date@^3.12.0", "@internationalized/date@^3.8.1": + version "3.12.0" + resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.12.0.tgz#cdcd12adf36e1ccb05ec7b964f4857e7ec62137d" + integrity sha512-/PyIMzK29jtXaGU23qTvNZxvBXRtKbNnGDFD+PY6CZw/Y8Ex8pFUzkuCJCG9aOqmShjqhS9mPqP6Dk5onQY8rQ== +>>>>>>> upstream/master dependencies: "@swc/helpers" "^0.5.0" -"@internationalized/message@^3.1.7": - version "3.1.7" - resolved "https://registry.yarnpkg.com/@internationalized/message/-/message-3.1.7.tgz#bf5d3332a685d946949bfb7447aa212bbe44ad5d" - integrity sha512-gLQlhEW4iO7DEFPf/U7IrIdA3UyLGS0opeqouaFwlMObLUzwexRjbygONHDVbC9G9oFLXsLyGKYkJwqXw/QADg== +"@internationalized/message@^3.1.8": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@internationalized/message/-/message-3.1.8.tgz#7181e8178f0868535f4507a573bf285e925832cb" + integrity sha512-Rwk3j/TlYZhn3HQ6PyXUV0XP9Uv42jqZGNegt0BXlxjE6G3+LwHjbQZAGHhCnCPdaA6Tvd3ma/7QzLlLkJxAWA== dependencies: "@swc/helpers" "^0.5.0" intl-messageformat "^10.1.0" -"@internationalized/number@^3.6.2": - version "3.6.2" - resolved "https://registry.yarnpkg.com/@internationalized/number/-/number-3.6.2.tgz#504bf772238420c06b63ec58957c1cfcf6d92755" - integrity sha512-E5QTOlMg9wo5OrKdHD6edo1JJlIoOsylh0+mbf0evi1tHJwMZfJSaBpGtnJV9N7w3jeiioox9EG/EWRWPh82vg== +"@internationalized/number@^3.6.2", "@internationalized/number@^3.6.5": + version "3.6.5" + resolved "https://registry.yarnpkg.com/@internationalized/number/-/number-3.6.5.tgz#1103f2832ca8d9dd3e4eecf95733d497791dbbbe" + integrity sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g== dependencies: "@swc/helpers" "^0.5.0" -"@internationalized/string@^3.2.6": - version "3.2.6" - resolved "https://registry.yarnpkg.com/@internationalized/string/-/string-3.2.6.tgz#dc46f771aeb63a3f1823e060270c4cce8ad44d37" - integrity sha512-LR2lnM4urJta5/wYJVV7m8qk5DrMZmLRTuFhbQO5b9/sKLHgty6unQy1Li4+Su2DWydmB4aZdS5uxBRXIq2aAw== +"@internationalized/string@^3.2.6", "@internationalized/string@^3.2.7": + version "3.2.7" + resolved "https://registry.yarnpkg.com/@internationalized/string/-/string-3.2.7.tgz#76ae10f1e6e1fdaec7d0028a3f807d37a71bd2dd" + integrity sha512-D4OHBjrinH+PFZPvfCXvG28n2LSykWcJ7GIioQL+ok0LON15SdfoUssoHzzOUmVZLbRoREsQXVzA6r8JKsbP6A== dependencies: "@swc/helpers" "^0.5.0" @@ -1763,44 +1782,43 @@ hey-listen "^1.0.8" tslib "^2.3.1" -"@plasmicapp/auth-api@0.0.17": - version "0.0.17" - resolved "https://registry.yarnpkg.com/@plasmicapp/auth-api/-/auth-api-0.0.17.tgz#a24045a79bd0e28b7ffb8755073d35cd6fc9f82b" - integrity sha512-mdcQgmYTxzFrmOSEV3FkHfX22KqzWAQFRaxYEC1DZqm5Jc/vvYVLO+TwkW1Y7O7TV9tUDEMDuy3JAFz9z5tsbw== +"@plasmicapp/auth-api@0.0.19": + version "0.0.19" + resolved "https://registry.yarnpkg.com/@plasmicapp/auth-api/-/auth-api-0.0.19.tgz#3228e3cc67d0dbc68a9aa68dbacd89224252d84f" + integrity sha512-loDxQFCUYDk6hKxHl0GCyp+AwodnB4Mqda08ydIjBhB0p8Y2Z2rKjDtuI3kFeABUzTiF13FPu3whUWFA2e4o5g== dependencies: "@plasmicapp/isomorphic-unfetch" "1.0.3" -"@plasmicapp/auth-react@0.0.27": - version "0.0.27" - resolved "https://registry.yarnpkg.com/@plasmicapp/auth-react/-/auth-react-0.0.27.tgz#90edb75f2f4533de9000485a8ea1ce07802bc0a4" - integrity sha512-0rd3bp/jCrbdV1+GIeGiYsCFrSN3z3d1GbNEzMrDdATW/TPytT12GdHQGSpeGn/GjruFKh7KRm+AvEQRiyJ76w== +"@plasmicapp/auth-react@0.0.30": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@plasmicapp/auth-react/-/auth-react-0.0.30.tgz#adc750817bb4805d8fae1f004a69284b339bdd4d" + integrity sha512-e0hNmn5EVDoOqlwTVyYhoWJv0dVacwwJd7i20SbXxmxWQGTER+Ig/GLMnVpmKWFhV57pAD/mx4iyUM02Tndt6A== dependencies: - "@plasmicapp/auth-api" "0.0.17" + "@plasmicapp/auth-api" "0.0.19" "@plasmicapp/isomorphic-unfetch" "1.0.3" - "@plasmicapp/query" "0.1.84" + "@plasmicapp/query" "0.1.87" -"@plasmicapp/data-sources-context@0.1.23": - version "0.1.23" - resolved "https://registry.yarnpkg.com/@plasmicapp/data-sources-context/-/data-sources-context-0.1.23.tgz#7888d6ba33ba0c02509203368f230fdd431a14dc" - integrity sha512-F006Wr7s/RD4uCORY9EXYDYKgNUDxhY9qpUgT7a0Nyp9s6rw5qEZbcuMrM8Miy90DK3H5AfSuWaOl1+/pjxKZA== +"@plasmicapp/data-sources-context@0.1.25": + version "0.1.25" + resolved "https://registry.yarnpkg.com/@plasmicapp/data-sources-context/-/data-sources-context-0.1.25.tgz#c8b74048a81ba6b400d34226b11091c04132b1cc" + integrity sha512-wCU+uxslvoPns/gWdUd615v1yBS9rVjyWmcc0qEhiEKCk8qHh0adc0e4hxbf34A4la0EaKj93B0iXw69m7GH+A== -"@plasmicapp/data-sources@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@plasmicapp/data-sources/-/data-sources-1.0.2.tgz#476b89651a7c97f414b9cd3d735eaecf145d6ebf" - integrity sha512-qj7LOe87JA6iywufQdpCkqRJWTetVOWUzn19VLSRUoxM5mmqauLF2FWZQTcyQKFHdrxox4YFaJAk7o09SymXCQ== +"@plasmicapp/data-sources@1.0.23": + version "1.0.23" + resolved "https://registry.yarnpkg.com/@plasmicapp/data-sources/-/data-sources-1.0.23.tgz#afc302fec26bfdd2945be784176e6c6bd3096229" + integrity sha512-Ct3nzuwm2FFXlkzKeU6Mtb1AdP7gTF3cYLUuuiEuxs36A9kGJ/a4SHT0FPe6ycHuoXBNfPaayt2nFfsmmBHt3A== dependencies: - "@plasmicapp/data-sources-context" "0.1.23" - "@plasmicapp/host" "2.0.1" - "@plasmicapp/isomorphic-unfetch" "1.0.3" - "@plasmicapp/query" "0.1.84" + "@plasmicapp/data-sources-context" "0.1.25" + "@plasmicapp/host" "2.0.14" + "@plasmicapp/query" "0.1.87" fast-stringify "^2.0.0" -"@plasmicapp/host@2.0.1", "@plasmicapp/host@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@plasmicapp/host/-/host-2.0.1.tgz#92d8d1c9c7ae1f246cb33a10e90f80e2c05557e6" - integrity sha512-ghYXBzHihKemrq7RDmwGoUQrBMMba+biMfOLZFeXCm+S9cIXNM93KCk5rEst/pkwSt4Z9KOEqGAV1tTJqg7JHQ== +"@plasmicapp/host@2.0.14", "@plasmicapp/host@^2.0.14": + version "2.0.14" + resolved "https://registry.yarnpkg.com/@plasmicapp/host/-/host-2.0.14.tgz#686957ba238424a35a7eb3d110323291d497d0c5" + integrity sha512-eMRM41Z3A7tDvUF+82HaCSUOC9gFbUug2dkuB/mVuQ8y0aEtHjKgrncEAHuMBUpos6R/Akk6WVUYz7DeF41NQA== dependencies: - "@plasmicapp/query" "0.1.84" + "@plasmicapp/query" "0.1.87" csstype "^3.1.2" window-or-global "^1.0.1" @@ -1811,59 +1829,45 @@ dependencies: unfetch "^4.2.0" -"@plasmicapp/loader-splits@1.0.70": - version "1.0.70" - resolved "https://registry.yarnpkg.com/@plasmicapp/loader-splits/-/loader-splits-1.0.70.tgz#7dd89bd2877f731430f286af579153af0f4003cd" - integrity sha512-iS2IIrWmmCgh0qhyaHliTj6D0q4vQebsWEiATLblGaIF4cUyOZO8KAeBG/MWiT8HNyvCE/nimFbwaI7yd2ZfBA== +"@plasmicapp/loader-splits@1.0.75": + version "1.0.75" + resolved "https://registry.yarnpkg.com/@plasmicapp/loader-splits/-/loader-splits-1.0.75.tgz#8fbe6778d5caccb39f7ae1544246a863b0a146b4" + integrity sha512-MLG2CjR3/XGlnTWvxBz0QjAnvL4RZOKKWbreoxVRpTBChO3Uh1BORNis+NqITiS05U3OQlT7UUEv6cgi9lHVHg== dependencies: json-logic-js "^2.0.2" -"@plasmicapp/nextjs-app-router@1.0.22": - version "1.0.22" - resolved "https://registry.yarnpkg.com/@plasmicapp/nextjs-app-router/-/nextjs-app-router-1.0.22.tgz#fb0c9f279ed1669d037159b77ff149347f87c8af" - integrity sha512-PwxE4c6e0jbARKwkPvyksUBSzHmUnk5ZnCq+QZgPujVOYOWnmqpYj0GBrX2dl7jNp9RwQebOwHLWNcEbH9ixPw== - dependencies: - "@plasmicapp/prepass" "1.0.24" - "@plasmicapp/query" "0.1.84" - cross-port-killer "1.4.0" - cross-spawn "^7.0.3" - get-port "^7.0.0" - node-html-parser "^6.1.5" - yargs "^17.7.2" - -"@plasmicapp/prepass@1.0.24": - version "1.0.24" - resolved "https://registry.yarnpkg.com/@plasmicapp/prepass/-/prepass-1.0.24.tgz#ba1f720b0aada99711b49553980714018a20b856" - integrity sha512-v9meFetG2cF1KNBlHXQ0mqJMQp73n4wiZ1C+4Hwg/sjCr34g5h/h4AF1MHKCeBZi5LiNSy6MMmgi7pp6GdA7kg== +"@plasmicapp/prepass@1.0.27": + version "1.0.27" + resolved "https://registry.yarnpkg.com/@plasmicapp/prepass/-/prepass-1.0.27.tgz#b890771ca10a11f645af962b581780d4e21b35c8" + integrity sha512-5XyT78LjJR+u0jXo2dMsWsTIKFDlp8m1pllHNv9i5Z4iR26MdKVuY7XOPfszwZBWz9wgQsLRjR07huo+BuHSQg== dependencies: - "@plasmicapp/query" "0.1.84" + "@plasmicapp/query" "0.1.87" "@plasmicapp/react-ssr-prepass" "^2.0.9" -"@plasmicapp/query@0.1.84": - version "0.1.84" - resolved "https://registry.yarnpkg.com/@plasmicapp/query/-/query-0.1.84.tgz#d7ad0a411243ea972d1e88049e8f47faf9f6763b" - integrity sha512-mOgXmccl82cSSX4DMOGisCUYb9+pPSPsQqUJ0OfTkrTz+bsNbluTjIGIFwGtvQZiBXMP2c7/MGrxtqXtt/qzLw== +"@plasmicapp/query@0.1.87": + version "0.1.87" + resolved "https://registry.yarnpkg.com/@plasmicapp/query/-/query-0.1.87.tgz#5179bd931d6ee54d7bbe7f47d845e0f81ab936ea" + integrity sha512-4M4QvE9IE8DtVv/LuEruGkMLo3bPhTZIwrYpQpcaXj6FQCL2G5XdhjhcH6JzSW2LxqjhyC+2xDLlZKUAzYqpvw== dependencies: - swr "^1.0.0" + swr "^1.3.0" "@plasmicapp/react-ssr-prepass@^2.0.9": version "2.0.9" resolved "https://registry.yarnpkg.com/@plasmicapp/react-ssr-prepass/-/react-ssr-prepass-2.0.9.tgz#1cfdd8d4c0e90fd4fed7d7204f70c44914871d31" integrity sha512-HO932uH/Y4otaDmjwzJbCLlokxNAdtU9VhDVUZUuVbzh0DhWaNyn/MINCu1oeZ4a6MIjdXFIm/U2VaxNxHYdsw== -"@plasmicapp/react-web@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@plasmicapp/react-web/-/react-web-1.0.2.tgz#410a5b1cf76b4be9abc7c3f1371dbe247a90d7b2" - integrity sha512-MsJk2hBNuJwA2cBywZCvAN+2YLanFX605sWzYWDPm+/hnjMvDdHfcyInvtq2+j5IafJAJmEo2iGTZwBhru7NyQ== - dependencies: - "@plasmicapp/auth-react" "0.0.27" - "@plasmicapp/data-sources" "1.0.2" - "@plasmicapp/data-sources-context" "0.1.23" - "@plasmicapp/host" "2.0.1" - "@plasmicapp/loader-splits" "1.0.70" - "@plasmicapp/nextjs-app-router" "1.0.22" - "@plasmicapp/prepass" "1.0.24" - "@plasmicapp/query" "0.1.84" +"@plasmicapp/react-web@^1.0.28": + version "1.0.28" + resolved "https://registry.yarnpkg.com/@plasmicapp/react-web/-/react-web-1.0.28.tgz#6bb1938ce7ac1eec3218d20cf64ce8fbf174bec4" + integrity sha512-sJGZkIUNdqpRQ3KB/O1G+OuqW61Sx8BDuhS7llEWpFlBJFLfWRZc+FapI9KLJorz76Oxei+pYaefH45U1OR/kA== + dependencies: + "@plasmicapp/auth-react" "0.0.30" + "@plasmicapp/data-sources" "1.0.23" + "@plasmicapp/data-sources-context" "0.1.25" + "@plasmicapp/host" "2.0.14" + "@plasmicapp/loader-splits" "1.0.75" + "@plasmicapp/prepass" "1.0.27" + "@plasmicapp/query" "0.1.87" "@react-aria/checkbox" "^3.15.5" "@react-aria/focus" "^3.20.3" "@react-aria/interactions" "^3.25.1" @@ -1887,15 +1891,15 @@ dlv "^1.1.3" valtio "^1.6.4" -"@plasmicpkgs/airtable@^0.0.258": - version "0.0.258" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/airtable/-/airtable-0.0.258.tgz#e6ef47262d4fc5fa97733533d592076abfbd8f31" - integrity sha512-k8Ek9sq9NVW3kRvECY2MskTDDxcVE1j2AVI0tD0uzPQOQXdNpIsAPLYvK+RAbmO8LCEdYJD/ay1M9YAKWj3Niw== +"@plasmicpkgs/airtable@^0.0.271": + version "0.0.271" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/airtable/-/airtable-0.0.271.tgz#7671c6022923d653da5152958cdac13f020dad45" + integrity sha512-Gyz3QsLZB4uxt4T6eqEneQRH9xh2gqc0Vmutbaywd6AiPYWEwxz65LYcqP+o7V3ZK+XmDSB/5Qqxs+uuk4Yixg== -"@plasmicpkgs/antd5@^0.0.339": - version "0.0.339" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/antd5/-/antd5-0.0.339.tgz#e43dd0037d289ddfd6a5d49f71c3b9cc5d5c66c5" - integrity sha512-9gSZnFGPjABkc1p4DcCjpyYMCDcZ1fAe13TyryFFxV/MfNSn1zfjXOvdavop5h3hPxa/tTR8kd42N3XbvKqr6A== +"@plasmicpkgs/antd5@^0.0.365": + version "0.0.365" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/antd5/-/antd5-0.0.365.tgz#d86360a90464aa31a1935658c57a594a1866e37a" + integrity sha512-xVOIcEXcX/IBMH2E31f+NSUOztmWNl7TK4UNwiM2hd2Leg66NWlSrQzBdLkG0RZlWoEwtcl/3zliYbiPj62THQ== dependencies: antd "^5.12.7" classnames "^2.3.2" @@ -1903,65 +1907,66 @@ fast-deep-equal "^3.1.3" lodash "^4.17.21" -"@plasmicpkgs/antd@^2.0.166": - version "2.0.166" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/antd/-/antd-2.0.166.tgz#8b6a10c6b8978358fd7bc80a6c8d7f06f8e33ffb" - integrity sha512-kTXJnc6Sn5HX0dVptwmlPhUHDcx2woYjkGXNHTol8e/rsLWeXrIPZpfqRrrwEoG1qmnizQMz6BYMtS76T4XYkA== +"@plasmicpkgs/antd@^2.0.179": + version "2.0.179" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/antd/-/antd-2.0.179.tgz#50a21e55b68f011627eebe10789d7d7530e9b0c2" + integrity sha512-ETeKKfq4IYF7kXdnqCWff3TM6mZNIAT+Wcg1KOG3fQKbbnYxae25TRvNJRSJAf6YjWTrAM5u/j74yA1aXzGD1w== dependencies: antd "^4.19.5" -"@plasmicpkgs/cms@0.0.21", "@plasmicpkgs/cms@^0.0.21": - version "0.0.21" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/cms/-/cms-0.0.21.tgz#e8a8bdad755f6f2756d1d8cdca877329671aa15a" - integrity sha512-Ht/5dydxOCFTsgWUXeXJeDBjb86T3xl7YDb7UOm2cCHxjMFmH38TTffVW8sQVmmujjcM+xF+B2bVnyZfeMDanw== +"@plasmicpkgs/cms@0.0.35", "@plasmicpkgs/cms@^0.0.35": + version "0.0.35" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/cms/-/cms-0.0.35.tgz#609c614454698d323872e6af2901883afa50aa48" + integrity sha512-4xET+OAyWzTPZX78FmqG3ZFVdLatll1xsvar7wL6/Kq0YPfhL4q0hytLAtXEipquMITJMLFmCL4umjFLPKaHwA== -"@plasmicpkgs/commerce-commercetools@^0.0.192": - version "0.0.192" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-commercetools/-/commerce-commercetools-0.0.192.tgz#2c4995b69576d86acd6eba581a7822bb88e40301" - integrity sha512-Bc1iEqMK2/t/xJUl8/dHAuzBFefpiDxRB7/RX2CxH5+LQY0eNd8DAy9w8E/vWVOVY+Fz7gCTxKQSa9P/jJ5SnA== +"@plasmicpkgs/commerce-commercetools@^0.0.205": + version "0.0.205" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-commercetools/-/commerce-commercetools-0.0.205.tgz#c90dc254afeb0dbc494756b6349996073e594042" + integrity sha512-AmJGDb3NvUnZr5j7gTGhsVcpruoAseb4/k7yaiQaPOOHXa5AJK2fsujP+Yl1FCy4cUv+47hDgofU+iprBsmX+Q== dependencies: "@commercetools/platform-sdk" "^2.8.0" "@commercetools/sdk-client-v2" "^2.2.2" - "@plasmicpkgs/commerce" "0.0.242" + "@plasmicpkgs/commerce" "0.0.255" debounce "^2.0.0" js-cookie "^3.0.5" qs "^6.11.0" -"@plasmicpkgs/commerce-local@^0.0.242": - version "0.0.242" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-local/-/commerce-local-0.0.242.tgz#b20546b111a62c33019a1243261e3aaba3ba7fe5" - integrity sha512-Q7SE14BwKTsbYbosPAjbTFwadp2jQWjRvLq/YK4ZNBOYKQB4vuiJuAARUwg/L7WrWCOTODYZGAwYcqNy+1r7Cg== +"@plasmicpkgs/commerce-local@^0.0.255": + version "0.0.255" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-local/-/commerce-local-0.0.255.tgz#85fdcb2d44de75b8f458e743b3a003f277109a5b" + integrity sha512-9SwBmBxTCN/JmX8/mhdSEBtiiwX+1aZMIqYEFFM9hae8asjWNxGX652h9ajL0AUp0V/RNJeoFGNzZ8qkzGfSNw== dependencies: - "@plasmicpkgs/commerce" "0.0.242" + "@plasmicpkgs/commerce" "0.0.255" -"@plasmicpkgs/commerce-saleor@^0.0.206": - version "0.0.206" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-saleor/-/commerce-saleor-0.0.206.tgz#edcf8b28b849b156fcf6c1048064da6423386d35" - integrity sha512-HVMqO4OyySxQ7M4jksF82nYAB3Up9HT095GXGmNgXG9+V20DYM/Z8EpItETHBRCn1MpBxgB1bEiS+7WnGuPoLw== +"@plasmicpkgs/commerce-saleor@^0.0.219": + version "0.0.219" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-saleor/-/commerce-saleor-0.0.219.tgz#aac80cfaea342250bc01b8f458d2b31ff0e19d27" + integrity sha512-T5Sn3w5mV1iD7sWgrtKnf4hFzxt72oZtU84I1XwS86kB7zWj91dhOAzAmyCdQ2hTIZdiRN9VNzItIMATj0KdSQ== dependencies: - "@plasmicpkgs/commerce" "0.0.242" + "@plasmicpkgs/commerce" "0.0.255" debounce "^1.2.1" js-cookie "^3.0.5" -"@plasmicpkgs/commerce-shopify@^0.0.250": - version "0.0.250" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-shopify/-/commerce-shopify-0.0.250.tgz#870d5d6c10133c1f0d101420d62bba590f65dd5d" - integrity sha512-ePBM57ZyKcB1gH1PsR0TDNAdew2WHsWt+4dag98Yg5Zgq1FT93S40NfgUn+Q2obhfcpl6ngi9W9xNll5d8K/nA== +"@plasmicpkgs/commerce-shopify@^0.0.263": + version "0.0.263" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-shopify/-/commerce-shopify-0.0.263.tgz#a3ef655f5240c1dbb241a6c1169c1a8812807572" + integrity sha512-pNpcZ37eb6MXVXwJwbyrEN0WryBGrsNxulC8hBCeOL2bJkYRWgkHXev5n/yTNbNx2rqoO6xF18WWuWM77o2Ucg== dependencies: - "@plasmicpkgs/commerce" "0.0.242" + "@plasmicpkgs/commerce" "0.0.255" debounce "^1.2.1" js-cookie "^3.0.5" -"@plasmicpkgs/commerce-swell@^0.0.252": - version "0.0.252" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-swell/-/commerce-swell-0.0.252.tgz#106c091503714b7c93dc2400f424f2f95f9cbd3b" - integrity sha512-UiFDBGgfjuB4Ry3oDBplJd+E3Ex8xXoAL122YsLirzQtwOkjtyn1163pz5UQsv1rktCrX7xPQzBxKaxv+INomg== +"@plasmicpkgs/commerce-swell@^0.0.265": + version "0.0.265" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-swell/-/commerce-swell-0.0.265.tgz#e56775cbf6e42d88b82c913c23c8923570a29e9a" + integrity sha512-chAPrc0Dsl6npxo/7+sovffKL+GB4aXal93DIf/wWEILIOhEhlFyCZdZpovPG8Q+76xLJYlTnHAYBhHxNUbxcg== dependencies: - "@plasmicpkgs/commerce" "0.0.242" + "@plasmicpkgs/commerce" "0.0.255" debounce "^1.2.1" js-cookie "^3.0.5" swell-js "^3.13.0" +<<<<<<< HEAD "@plasmicpkgs/commerce@0.0.232": version "0.0.232" resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce/-/commerce-0.0.232.tgz#1f32f70cc00eab79a076fd3c477d79c19ad0fd18" @@ -1979,6 +1984,12 @@ version "0.0.242" resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce/-/commerce-0.0.242.tgz#8f84f4c4447510d4623b811fe83e82bb8a8e3c04" integrity sha512-1zY/ZEMkUktoddyrQkBPE+oNSgJ271yjuVd38gqlJsYCteN/a6iKo6leMm9iu67iKjTzmBPneFEnyBCZ4Va13w== +======= +"@plasmicpkgs/commerce@0.0.255", "@plasmicpkgs/commerce@^0.0.255": + version "0.0.255" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce/-/commerce-0.0.255.tgz#ac9df2628d3ae814d68bb9b21e5bda16bf443d9c" + integrity sha512-nUkE4GtQMGzlLga1K+FHXFhItvbAkiwNw1zzm/dnofSCtBJ58xAMcpV+4mfC6Nd9pNYDEtfI5qosMNWpXsnLwQ== +>>>>>>> upstream/master dependencies: "@vercel/fetch" "^6.2.0" debounce "^1.2.1" @@ -1987,32 +1998,32 @@ react-hook-form "^7.28.0" swr "^1.2.2" -"@plasmicpkgs/contentful@^0.0.16": - version "0.0.16" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/contentful/-/contentful-0.0.16.tgz#87074cec54d25cbaab072ccfca4729775600ce46" - integrity sha512-uhFJ2SXVqHA+9TmLNB3g9T190G/olHVccWAVyocFqlTSN9GJQyyMNFZ1EtZ0O4ldaS+xdzI2I1WTRpwG8J9PnQ== +"@plasmicpkgs/contentful@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/contentful/-/contentful-0.0.29.tgz#9ae22181b644ca6808d19e69bc504aaa4771125c" + integrity sha512-H6zW+3XTRBv2xBlG+vWa74GiK/XqzYhBcXpkbpfOZkx9nH2Z18QajnbUPYII9drgAbQU3bsS/1/LIVoxzgxF/g== -"@plasmicpkgs/fetch@^0.0.34": - version "0.0.34" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/fetch/-/fetch-0.0.34.tgz#2b74a469b7548427dec38eb9cbdf9430420f8bc6" - integrity sha512-gnRwiHWVgoLFeaKiNREaimBzNNmERxI82/yRktD3wiSrtl1uf9iLRvSDgs5iTafL9c94ix9Xp3znz1/tyzKq4A== +"@plasmicpkgs/fetch@^0.0.49": + version "0.0.49" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/fetch/-/fetch-0.0.49.tgz#c5c8d3ac7bdad9cbc68ea03a355017a0fdc3ac0e" + integrity sha512-uWEjDXbLFWb/PKwrNjOqOIOpnY/aB6ZPL6lIwEgbF3PPgXqZaK4QYRmahe0i2MSkaWgbQt17lXJIr6k+3tuprQ== -"@plasmicpkgs/framer-motion@^0.0.242": - version "0.0.242" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/framer-motion/-/framer-motion-0.0.242.tgz#c81f682b6c2a70c41c58f7995091c3765a3f9605" - integrity sha512-DzjYbkyIX/40P7A53EDiO6zEudnu2l5ZnJzFAdaiA2o088s5cCcv9GiB+GjvKPmxl4Xt/CR8FK3Vc4JHOR+9Mg== +"@plasmicpkgs/framer-motion@^0.0.255": + version "0.0.255" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/framer-motion/-/framer-motion-0.0.255.tgz#265e1670471cdb0c2b776020f00c12c24088faa1" + integrity sha512-IXFIlyt0QVsXKLurpou05B1dbG1F8Q0Yg6C+nvZr92OJ/wnCX375NWVeUtTyvmLztrIxTHNzXyf1W8avHTVsxA== dependencies: framer-motion "^5.3.0" -"@plasmicpkgs/graphql@^0.0.28": - version "0.0.28" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/graphql/-/graphql-0.0.28.tgz#3c7669b4b09ff0e4a8fdbcb3ce96b337ea280166" - integrity sha512-rpfBor5G/pTTae3RDKVCXPMEqQDk0yDWQs8tFdV5HrU3b2ynwDSIO+WcGQklmkmxXxajv+55yrDiZsUu1NiaJA== +"@plasmicpkgs/graphql@^0.0.43": + version "0.0.43" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/graphql/-/graphql-0.0.43.tgz#2abafbe2ee9f6f5fb0d7563bfa358ac35f564e48" + integrity sha512-UaGHRL4cQ3xw9XchXgxqldzIN53JXiehE1x4FtjF0YRk5Hrzxpzq6PRfuHRLNcxUcBYAOhdd0IYl3ZOEfnmRDg== -"@plasmicpkgs/lottie-react@^0.0.236": - version "0.0.236" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/lottie-react/-/lottie-react-0.0.236.tgz#e5ecdd09d89afb488c9b8c51c722bf691c97b224" - integrity sha512-e34A6RsSOG9uX4thVjQvUk7QWnupluUj9prMf2CYg4Fju69sRGBuNurwUU2On6Yr/546yEd5AHglF2wEio+9Zw== +"@plasmicpkgs/lottie-react@^0.0.249": + version "0.0.249" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/lottie-react/-/lottie-react-0.0.249.tgz#2c9621747140e8c09cfa36d0c352b80621f8f358" + integrity sha512-rTcFgBi/iPr4zWfFd9rR6KIibUomScEeZ5CsIxgDSuqeQHMVE1TNhxnAdAsXs8/trOi4SLIApDevCEMe2+6ckg== dependencies: lottie-react "^2.4.0" @@ -2021,78 +2032,78 @@ resolved "https://registry.yarnpkg.com/@plasmicpkgs/luxon-parser/-/luxon-parser-3.4.4.tgz#32150fc2c7bbad1e9e0242c897518680c6dc5fed" integrity sha512-VN/nwVehURL1TeHt7WlxuYXD7v9f87MG58YLrZeBQOcGDA9ck/gZNz7m1S1MeJ67gpnbpyJ3uFUPt+t1KnMQxw== -"@plasmicpkgs/plasmic-basic-components@^0.0.273": - version "0.0.273" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-basic-components/-/plasmic-basic-components-0.0.273.tgz#00bb6c5ef4d253820d366b99f9fb3e10d3c19ddc" - integrity sha512-px2l3GZ1CSPhLG83fH2W227nDWn8Gyrchm+PsmtPeYk9UwiqIugYcfUfUAbM5ZmFvKdP9ylAiMCylR+gcWFRHA== +"@plasmicpkgs/plasmic-basic-components@^0.0.286": + version "0.0.286" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-basic-components/-/plasmic-basic-components-0.0.286.tgz#8e789e87fd460fcd2c1789998d898d449ca18fde" + integrity sha512-U4ZzhvMW6gKy3fK9XrlsQAmmZb3Wh90weLAESLinG7aOtzx1dj0EaEGh2eDhgOiHyzFGHQk1Ts5UrMyRjR9b1A== -"@plasmicpkgs/plasmic-chakra-ui@^0.0.74": - version "0.0.74" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-chakra-ui/-/plasmic-chakra-ui-0.0.74.tgz#c604f20bf0446db59a220e4cd0ba6d80c89293ac" - integrity sha512-pCmbxEK40OS8kPgdCl449+KcURU8/RkGRtTsfevlJf+KwgXPdDfMcS0QFyPzURcym2m36aeV46wqESha3BdUDQ== +"@plasmicpkgs/plasmic-chakra-ui@^0.0.87": + version "0.0.87" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-chakra-ui/-/plasmic-chakra-ui-0.0.87.tgz#ed8211302f381fe06d15111eb0097879de823648" + integrity sha512-hssIqOFNX+4Hi7dG3MMvrN+QIJVBzf/ZSOk/OWYEk3eY97YUIK3vWX89IcTt9sWRyrpUmLYi/GLM/tcy8vccuA== dependencies: "@chakra-ui/react" "^2.8.1" -"@plasmicpkgs/plasmic-cms@^0.0.312": - version "0.0.312" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-cms/-/plasmic-cms-0.0.312.tgz#a09945c48e3b073a3e63ccd1daccaa63907625ec" - integrity sha512-LOyep0lGP7yyqOewXLqAXEu8QFzdM2WV1a+cNpQUhyYG2BLG1CHvND++2l9yrLDkConazv1EfhNguPzJDclMyA== +"@plasmicpkgs/plasmic-cms@^0.0.326": + version "0.0.326" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-cms/-/plasmic-cms-0.0.326.tgz#f5470f0d2b2819a344c82bcc9ab084c0bd7cfdb0" + integrity sha512-/80xWIR+zu6QQSD2XILRotwQ/4O1C+8fOtyAqH6cgVTD0Ur3I7/MZ5sc1DZQpkVu5UG8RovPtdPry6jyQOjLKQ== dependencies: - "@plasmicpkgs/cms" "0.0.21" + "@plasmicpkgs/cms" "0.0.35" dayjs "^1.10.7" -"@plasmicpkgs/plasmic-content-stack@^0.0.198": - version "0.0.198" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-content-stack/-/plasmic-content-stack-0.0.198.tgz#aa7fc36964441cdf8b7256c6ea275b5c74691dfe" - integrity sha512-ZjxCt//oMfTDDgYm6tnBJyDAg/Ni07QbBLG5G0VNRio/R8dKQdMKlRwWZUPddvrXBWRWBXCHoLFddJIccgZPKw== +"@plasmicpkgs/plasmic-content-stack@^0.0.211": + version "0.0.211" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-content-stack/-/plasmic-content-stack-0.0.211.tgz#4df68dc00a054969f1005214f5c53572e1f4fbe0" + integrity sha512-DZLMlUuR+/Dj1oLs8TcPy+/CwnC58jNEkKAb3LXohD2vZSvj83tDa89TGy81PhxtDIpBQgLwrmyDXrDwlLAm6g== dependencies: change-case "^4.1.2" contentstack "^3.15.1" dlv "^1.1.3" -"@plasmicpkgs/plasmic-contentful@^0.0.192": - version "0.0.192" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-contentful/-/plasmic-contentful-0.0.192.tgz#b5d5638bf73be92784013eaaf5cd959ef7ec0741" - integrity sha512-yvhjPIrg3oMZRDNHfB5Dwht0DajxVIFiK7+L1jLWJj1aHfJ5xq1t4mvny/szC3uIiNLEMmociQqEcEuQQKULZA== +"@plasmicpkgs/plasmic-contentful@^0.0.205": + version "0.0.205" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-contentful/-/plasmic-contentful-0.0.205.tgz#c34b99f328b6f34f0d0b270839466828c5cf9e31" + integrity sha512-pccbh746lP1zA6YeaWx/EQKr914ESU5a+H+SO77Hci1XFdMeuj6A4aJdbDYb7HwWVaxaDQPCfbQ7LugarmkSvw== dependencies: "@contentful/rich-text-html-renderer" "^15.13.1" "@contentful/rich-text-react-renderer" "^15.12.1" change-case "^4.1.2" dlv "^1.1.3" -"@plasmicpkgs/plasmic-embed-css@^0.1.228": - version "0.1.228" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-embed-css/-/plasmic-embed-css-0.1.228.tgz#bf5efc2f37f38826a7c195a1eb6e7f23d349310e" - integrity sha512-SeZU83SZSnQfysGzkvzOkfjrde20FZMnYjWvuxeadj+jck0Oe5UDjAdchD9NXRSScYud7178Pr+QpkILq+ezog== +"@plasmicpkgs/plasmic-embed-css@^0.1.241": + version "0.1.241" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-embed-css/-/plasmic-embed-css-0.1.241.tgz#db490117ad7a6d44501f5152b59e9949f511e31e" + integrity sha512-DmU9fHKsHMPgeWwi3/aWLh9pht4eyQ83r6k8VZMm6EYGkv03BJldBUqXlf0FlMKf2jnKsn3QwyeYNEPtOl+ktA== -"@plasmicpkgs/plasmic-graphcms@^0.0.215": - version "0.0.215" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-graphcms/-/plasmic-graphcms-0.0.215.tgz#3a1186cc234597f78eaabfe86dc52c3e40745a7a" - integrity sha512-7/0qCW6U5GaTrT7/1qRLZj01v+lVBxFhPlyBhclzPebPz7toHFsd3WYFh7kr1zJVcSh2Ix1wqkkpEBTAkcUBig== +"@plasmicpkgs/plasmic-graphcms@^0.0.228": + version "0.0.228" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-graphcms/-/plasmic-graphcms-0.0.228.tgz#3011d42700e1c6df51a1e90c20602f389908d56d" + integrity sha512-oBlheemq0WcEJgD7BeaotU5YanK1Q8cxhojtP1e3GUcO9tc3TEMux1ZdZ4mmmlZ1AYPOSjVtNyWKvjTyOPPZLQ== dependencies: dlv "^1.1.3" -"@plasmicpkgs/plasmic-link-preview@^1.0.146": - version "1.0.146" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-link-preview/-/plasmic-link-preview-1.0.146.tgz#5f786398b0822d0f2448b90260f7c6a19c3ea56b" - integrity sha512-6t7shZxAeUE0laLaRH4vAluqad0q/cTz0/90O9tEqVO+ojBXiD2lWDmYEWbp4ii72p71GZ7FVdOQnnKeOx2a0g== +"@plasmicpkgs/plasmic-link-preview@^1.0.167": + version "1.0.167" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-link-preview/-/plasmic-link-preview-1.0.167.tgz#c9d417b845dd61069dfef6fd38fd5957ee526a09" + integrity sha512-l3ogxSew52zS/oBCiDrY0yNPEo3AQ1KJ06p0oiVd5I6E6+7Q6B3eUdJQza02SCuRoE2TgX0tBsM9IYqRN9QrSg== dependencies: node-html-parser "^6.1.11" -"@plasmicpkgs/plasmic-nav@^0.0.214": - version "0.0.214" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-nav/-/plasmic-nav-0.0.214.tgz#c5b20b6d9fd155b800b9506aa36373e9ca3cb886" - integrity sha512-KTZUuKXGKGtY2FHmGdGiSQ+p0jMh2lR4gcVYDiUo5s+yDkP3whDjkkTPIVVZhupw9ljlKZBcC8EzjbdfUQr11Q== +"@plasmicpkgs/plasmic-nav@^0.0.227": + version "0.0.227" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-nav/-/plasmic-nav-0.0.227.tgz#59c2e0983789c1d252997eb8153abe54e8f0fd4c" + integrity sha512-Sp4ApW5/BcPaDBnFyNgzP33lNjWkdn3tXZlIOETpHI518GoHeHzuAgTcXhcM/GFmDeAJCdM5m19kF+sJLxJguQ== -"@plasmicpkgs/plasmic-query@^0.0.263": - version "0.0.263" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-query/-/plasmic-query-0.0.263.tgz#c8f4ef14165bc6e29fe692a5ef739e7a206f5ed6" - integrity sha512-5m8MbAd3x9k8umglyIqbmNLZFCFUL+ySIwOoX16RfhGC/CYLFWmb2gug8+Mj7EVn5qwBdjl6zCqcQtZZQ/4Glw== +"@plasmicpkgs/plasmic-query@^0.0.276": + version "0.0.276" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-query/-/plasmic-query-0.0.276.tgz#76ce4e101039b4f7c4dc52d7680432fe157d4217" + integrity sha512-7uQMHzDgRcTrWD2mcwN/0VlpftIkcA7XLZBmfiE3fCfyKtxf/p9/zPL49PTVeQ2MlgW0pSNOIKXRZsT6NRiMVA== -"@plasmicpkgs/plasmic-rich-components@^1.0.245": - version "1.0.245" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-rich-components/-/plasmic-rich-components-1.0.245.tgz#ef28968b42a51d05f692ccab47ae63fc9afa9c15" - integrity sha512-XvdibpnUvEV2Vs5ETnb/68uXLb5/luWF/u5wLrc+ykFZUFANl1f1Lnc3N+625VWr1GFWSELG6AWsNRPibegYhg== +"@plasmicpkgs/plasmic-rich-components@^1.0.267": + version "1.0.267" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-rich-components/-/plasmic-rich-components-1.0.267.tgz#47c53ddf0878919e3cc04de3efd9a6ab4b45c107" + integrity sha512-BeKYm041uOyV2oJ74sJQp6OjDYBi72UlZHzXU6h0zb84ieHK7Z9T7B4eGJsGb9CeULchmGpPVWpg2VOW/2yK1A== dependencies: "@ctrl/tinycolor" "^3.6.1" "@plasmicpkgs/luxon-parser" "^3.4.4" @@ -2102,51 +2113,51 @@ fast-stringify "^2.0.0" lodash "^4.17.21" -"@plasmicpkgs/plasmic-sanity-io@^1.0.223": - version "1.0.223" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-sanity-io/-/plasmic-sanity-io-1.0.223.tgz#b69643a6b4abe7af0a1204e55706bde861b07555" - integrity sha512-ESESlcBlogXJeTXqSKr7zpqyB40JPJmnlCEDBPrtDyaKDMZfcDXAwhhctCRQYcGuhEB3yQkulSi4bqQkqwKj4A== +"@plasmicpkgs/plasmic-sanity-io@^1.0.236": + version "1.0.236" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-sanity-io/-/plasmic-sanity-io-1.0.236.tgz#c896b9e2f1a72549b73072de3800ba43e80e1884" + integrity sha512-zHToI19JIo8uAWC/coRVMbiGd+Ee2WjXuHiH97c6Vcc6PUIvrP4/MwNXJnSnMoXXxif4t5XyCg3WOjMg8GvsZA== dependencies: "@sanity/client" "^6.2.0" "@sanity/image-url" "^1.0.2" change-case "^4.1.2" dlv "^1.1.3" -"@plasmicpkgs/plasmic-strapi@^0.1.200": - version "0.1.200" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-strapi/-/plasmic-strapi-0.1.200.tgz#2ff3dabc9d259138f06f582447992d315c068cc7" - integrity sha512-OMNWiT5jhFqXOC13p82T8EEXGJ1Ew4RS4/7NWb+uKX4IJSmf0dJVyvNRVx5p7/aDs5XwDy6xZU6pt3Q1xLgJRQ== +"@plasmicpkgs/plasmic-strapi@^0.1.214": + version "0.1.214" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-strapi/-/plasmic-strapi-0.1.214.tgz#240dac54880788161a183ad2b9e1760312717079" + integrity sha512-YAv96Dce+XnUrzl9cDNVEpQSgLz5WZPbCOwyejIJEtTMOwZb4f8fmvl220Gwr51wx/2Oir7jj/AJhcLTA7diqw== dependencies: - "@plasmicpkgs/strapi" "0.0.19" + "@plasmicpkgs/strapi" "0.0.33" change-case "^4.1.2" -"@plasmicpkgs/plasmic-tabs@^0.0.85": - version "0.0.85" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-tabs/-/plasmic-tabs-0.0.85.tgz#430665f85a594ef460d7a19d0910b27ba9152468" - integrity sha512-lB97CWegZRQJ6a4ObLvh823LNE5V4JdeHLwN8kW5DgUwYwcRu5y0x8dIV+Zu2PWE1bg/mSsBoVFP+SuNTcrsng== +"@plasmicpkgs/plasmic-tabs@^0.0.98": + version "0.0.98" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-tabs/-/plasmic-tabs-0.0.98.tgz#94c2e3f882c75f08f1387eb09569e43dcf31766a" + integrity sha512-pA1ExxpCuUC8iocwON0OrQp4/IvaWuWzeIDgQlqwwhN+aESFdt1MI/t+vrkPIipUacwZdz8XNe4RWN4G4yT0AQ== dependencies: - "@plasmicapp/host" "2.0.1" + "@plasmicapp/host" "2.0.14" constate "^3.3.2" -"@plasmicpkgs/plasmic-wordpress-graphql@^0.0.160": - version "0.0.160" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-wordpress-graphql/-/plasmic-wordpress-graphql-0.0.160.tgz#6636030fe983349ffc49307e786afb3f9bfd5b27" - integrity sha512-yKTKffpMG8JyTkYbaAmXWsCJjpBGYlsxeU3W3hP5/BBo9aZiKpNanL5RQpdf7aGzYk3WicQ7mXrSdj2/xxkGkg== +"@plasmicpkgs/plasmic-wordpress-graphql@^0.0.173": + version "0.0.173" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-wordpress-graphql/-/plasmic-wordpress-graphql-0.0.173.tgz#62ffb7c6bd2cc21dceffe6150d439082b2deffc9" + integrity sha512-YYtqK1U435udAW56XdnjZ69LFdDFDgnLlC5SfwXFSjYr2/r1O6nXIyvddBanzdWfd6DfUQS8J/dl+Hbg2iy9xA== dependencies: dlv "^1.1.3" -"@plasmicpkgs/plasmic-wordpress@^0.0.170": - version "0.0.170" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-wordpress/-/plasmic-wordpress-0.0.170.tgz#9ea7edd69bdb858191a8cb0327a40b4e9bf1492d" - integrity sha512-hUz9fz4MJqbDD8PbQMeAaIlr2RVTGdOSsfz7wd0AYrg1WVR/Wq2AJXGOQ0uCgJ9Kcd0ZVfgE9qhmdYgMLCxoQg== +"@plasmicpkgs/plasmic-wordpress@^0.0.184": + version "0.0.184" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-wordpress/-/plasmic-wordpress-0.0.184.tgz#e65757d24e2948a3dec98f4fd6778c7614f9d15b" + integrity sha512-xlldsmaN+Ka40huZzuBcu4+8mKfaTCRaqP4qbmV6jg5V4U4El0eXdRfC/ztH+zubqYU6zFKHr1SPuJveH/mAPg== dependencies: - "@types/dlv" "^1.1.2" + "@types/dlv" "^1.1.5" dlv "^1.1.3" -"@plasmicpkgs/radix-ui@^0.0.102": - version "0.0.102" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/radix-ui/-/radix-ui-0.0.102.tgz#166e9e32cb9313b6d87c1554f7dd23ed0fc5cc4c" - integrity sha512-7EINlM5xK6WXYEmVo48a9gxhlWIkRWVLZpIp7AYtTHiOvH1R0zciCwgbyhmI0viAxyGB7bLGmwi5SIk+nXHJKQ== +"@plasmicpkgs/radix-ui@^0.0.115": + version "0.0.115" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/radix-ui/-/radix-ui-0.0.115.tgz#e54f64f3444a9eb6db0e51ffd195d9c1d76c4aa5" + integrity sha512-GjPkXtE1e40yKMGflg3t3K1cCX/ZF7xN4avyZXk5bspz7CVPw297pGKRhL9uerrzoRJpYxq/3+N4uoJPhEleGA== dependencies: "@radix-ui/react-context-menu" "^2.1.4" "@radix-ui/react-dialog" "^1.0.5" @@ -2160,10 +2171,10 @@ lucide-react "^0.279.0" remeda "^1.27.0" -"@plasmicpkgs/react-aria@^0.0.176": - version "0.0.176" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-aria/-/react-aria-0.0.176.tgz#f3ef2e1691c7bdddbfdb7938618a60493384599f" - integrity sha512-F8wQfUu3CCPQhsg+uC6fDLCGMklCvP3mo+xpL0UYyie1ZXhfMP5WdAc7kcOZOCw3Ft/BViTdU9cWdUYstoVR5w== +"@plasmicpkgs/react-aria@^0.0.192": + version "0.0.192" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-aria/-/react-aria-0.0.192.tgz#8f224375d71137d47039c38ecd23381450168b75" + integrity sha512-lLjbdEfFbmqKqFJxX8b/YYnAz1i+eztTZ3WgTH0hPmy8pixHB9f/5GukN1ft8DnTen04gzlISHYuCD/EUyHYIg== dependencies: "@react-aria/i18n" "^3.12.9" "@react-aria/utils" "^3.29.0" @@ -2171,84 +2182,84 @@ react-aria-components "^1.9.0" react-stately "^3.38.0" -"@plasmicpkgs/react-awesome-reveal@^3.8.246": - version "3.8.246" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-awesome-reveal/-/react-awesome-reveal-3.8.246.tgz#cf735430db2c45aa84e92f96ba8cf6ff2a33beff" - integrity sha512-0J4UGcAEP4VrL52H+Q110y/1XPNvaVdBzW42Mn/Ls5BRU5KGRlSdOQszyk/dCtvBFtSpoh8EDOZg6xpF6ECDRg== +"@plasmicpkgs/react-awesome-reveal@^3.8.259": + version "3.8.259" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-awesome-reveal/-/react-awesome-reveal-3.8.259.tgz#aeb0bf339b23cce3719b8f781734ff37346106de" + integrity sha512-mT3Fo2toewU1X2dUpE//NN8Y+kwJVWzuYwxfGxPPG3i5jOCrqMpYSdmK9OXEEopOJzbRPsAGHwyYiYi0Dz6vEA== dependencies: "@emotion/react" "^11.11.4" react-awesome-reveal "^4.2.12" -"@plasmicpkgs/react-chartjs-2@^1.0.154": - version "1.0.154" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-chartjs-2/-/react-chartjs-2-1.0.154.tgz#f4e0e302d73ff3a9f3c4a6fe2baada8c0accb944" - integrity sha512-2Y6C9v2jPzsvMPcBiYnSEpmhoqLKoLkVVSwtcRwBdQXxk6KPHe30ZKuCdLAJXFocbhyuZgymnXrKGhMa0shMaQ== +"@plasmicpkgs/react-chartjs-2@^1.0.167": + version "1.0.167" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-chartjs-2/-/react-chartjs-2-1.0.167.tgz#063d3cf8edbc9d80eb68eca11c7ac7b429d77050" + integrity sha512-lqFHvSFp/kZzBjTovmcjtxeCyX3PVNtmD7JCjFrUhQVWDk7RZ7AVj6/8rPH2OOUlw/CDlczMgr/rpYv8UqAm5g== dependencies: deepmerge "^4.3.1" -"@plasmicpkgs/react-parallax-tilt@^0.0.244": - version "0.0.244" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-parallax-tilt/-/react-parallax-tilt-0.0.244.tgz#ee45d1ed2c17eb6160c6004e1e3f5aa294e18658" - integrity sha512-PZf/bYvdihb6bT6PBU5p/GIbFHxkpQXziHvOXZLZpGTdL44waE7xZXGIFYg9LCKOHeh0chkxHrc02yFM4T/LKw== +"@plasmicpkgs/react-parallax-tilt@^0.0.257": + version "0.0.257" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-parallax-tilt/-/react-parallax-tilt-0.0.257.tgz#fad56085155c38fd484288ee8f121a6b98741c18" + integrity sha512-Jm06Jeh7cmTqFXUMy5X2/jXRdR35kfEWroRWcVShDsDF6mEdRCzOP1ymW15PsLdm6JfH0sS77miX6/l8Bp7Maw== dependencies: react-parallax-tilt "^1.5.74" -"@plasmicpkgs/react-quill@^1.0.107": - version "1.0.107" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-quill/-/react-quill-1.0.107.tgz#dc14846ec99c8f07d06ce736074501103d097011" - integrity sha512-l/U+DJe76Q+z38bLm/yJkfQKWVI+mJEnADxh/+uegj3ny4+rZSkOzoKXnrht96VhHqRuFt04wyrIwh5c4UNEjg== +"@plasmicpkgs/react-quill@^1.0.120": + version "1.0.120" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-quill/-/react-quill-1.0.120.tgz#137299773834ce5caa60a7ca32356349f2071362" + integrity sha512-qICZAJfabNkPjDQ3laRNolkTHesrJutqIwNS6I+y8rjFtn8WdLDBSi0iRm5ImXXXPptQsupUcRqofKRwd7GWow== dependencies: react-quill "^2.0.0" -"@plasmicpkgs/react-scroll-parallax@^0.0.253": - version "0.0.253" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-scroll-parallax/-/react-scroll-parallax-0.0.253.tgz#abef3f0b61889b47e92311dabc0fbc3e22bb472e" - integrity sha512-F2Oqoq+j4/gxn3PORH3i9Xqh7LlqxAVUdDiZG3Q4vahPLub0NYZqztCrWOZV33b/FKyu49gLymsNjg90aS01HA== +"@plasmicpkgs/react-scroll-parallax@^0.0.266": + version "0.0.266" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-scroll-parallax/-/react-scroll-parallax-0.0.266.tgz#e967964b48e65cf9e03533e7ef0d549f104b508e" + integrity sha512-94IzZzoTjnXzYovoSjs38P45Aeto08mnFDu0Vi1RvgmA0dwb/ZgPWeNwRhXfp46ekdzN3qsqiyF1sKoHw1R47Q== dependencies: react-scroll-parallax "^3.5.0" resize-observer-polyfill "^1.5.1" -"@plasmicpkgs/react-slick@^0.0.265": - version "0.0.265" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-slick/-/react-slick-0.0.265.tgz#10a57be3c2ca74845581889d48a5be7067e053c2" - integrity sha512-hLEiG4WhdvC4MtUI8hKyh4tpzq6jSoDNtTQStNMD9OIrkWiAW9vf94LRy+Y7cMGLF61UTQ6TI09rsrESGtYkLQ== +"@plasmicpkgs/react-slick@^0.0.278": + version "0.0.278" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-slick/-/react-slick-0.0.278.tgz#73a656123aebbee11f8701e414f02d4a3ebb44db" + integrity sha512-cjw+uoQn0v+HK42yC5qi0XaUtwX6KM7ZtLX/nGm4SYMBkWeKVgToKL2M1e8OTZI6lVB6HfD42cCtzLXoXr/52Q== dependencies: "@seznam/compose-react-refs" "^1.0.6" react-slick "^0.28.1" slick-carousel "^1.8.1" -"@plasmicpkgs/react-twitter-widgets@^0.0.242": - version "0.0.242" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-twitter-widgets/-/react-twitter-widgets-0.0.242.tgz#d5fe2f03246401d11cc62af8556357c31071f0a6" - integrity sha512-GyzgLFHqZivxD3GO7agB6xqoZhTF8feR6ksT/WYh8IOJngSYwRIoTHaU+MOim3BlrLEnrGatCi4SEpX2rd4+aw== +"@plasmicpkgs/react-twitter-widgets@^0.0.255": + version "0.0.255" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-twitter-widgets/-/react-twitter-widgets-0.0.255.tgz#36766fba840e69735859a9bfffb052fe9cfe55df" + integrity sha512-d0WsKLavhVk9fOs5JyfvipHI/OJXbRGnpLnDtzwqvwfnrut+/FhJ1GfmOKpws7vdlOS5BMxrEbzLKtHRXg6tLQ== dependencies: react-twitter-widgets "^1.10.0" -"@plasmicpkgs/react-youtube@^7.13.248": - version "7.13.248" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-youtube/-/react-youtube-7.13.248.tgz#fc59c6e08fde4880a3d725023cfd6197c76429fb" - integrity sha512-ALI9+j3fUKlKfZJruYHbC2LojEP98V45OHY2PZB7NZcymqBWis3wAXhEc50/4YNGXmizEKs9E0nAc3gFVPcflw== +"@plasmicpkgs/react-youtube@^7.13.261": + version "7.13.261" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-youtube/-/react-youtube-7.13.261.tgz#4c3a13189ea3400847a2807bd93653d30a28d876" + integrity sha512-feU9fkKYRKePZ76Y693PgHQ/HfFXdkLhZWivVXXhH5p/qrLSeLoKOuCplWD5USyb6+5Ahv7P90QbC947nXQBdg== dependencies: react-youtube "9.0.2" -"@plasmicpkgs/rive@^0.0.30": - version "0.0.30" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/rive/-/rive-0.0.30.tgz#b159bfc6292c1fc3989450429b7913a6493fb097" - integrity sha512-qq7JSiDcfc3TBo1iDuuw7iQqgs1AhDP0f0OH9JwvsFbAgamjTM0q4PN0Fx3pWBDl/T4+ZHyUrlTBLHsFvCeUpg== +"@plasmicpkgs/rive@^0.0.43": + version "0.0.43" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/rive/-/rive-0.0.43.tgz#2be8827bae3d235493d9e65b35b16902944a65f3" + integrity sha512-H0sSCo7fX+bukfkqrcBvWjJSnaPQz6ybyCyPvA8Ro+RxSPUS1DzNdsoKvoa+sHkd/KQZ73s7z3WVtXAuO4+eDw== dependencies: "@rive-app/react-canvas" "^4.18.8" -"@plasmicpkgs/strapi@0.0.19", "@plasmicpkgs/strapi@^0.0.19": - version "0.0.19" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/strapi/-/strapi-0.0.19.tgz#176514015586dd4bca6f16970ad2d2875328f9d2" - integrity sha512-J6f+aFTm17bIsLswmLxec38LcIc8CulExNGSqQQz6/kMelB3EagHQ1GNrVWE2peEGBsCdNmn4e8Oo5wE4SXPyA== +"@plasmicpkgs/strapi@0.0.33", "@plasmicpkgs/strapi@^0.0.33": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/strapi/-/strapi-0.0.33.tgz#d018b76f63c7658e3de10fa3357ef41c845e683b" + integrity sha512-8QQvjZNFctMsZElzTtQBU+76CCuO8mO5zc8/Pk3CAfECnoJbBOauAzVFjnxY076A/NPAmrScuxZkgSCpVn6TTw== dependencies: qs "^6.11.0" -"@plasmicpkgs/tiptap@^0.0.27": - version "0.0.27" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/tiptap/-/tiptap-0.0.27.tgz#a9d7fca038574f7f9f8f2498c0dbc82a4648c5f9" - integrity sha512-DMaHT33U6KmyrLeTIgJaRH2/qvfM4EgfDeGOxsV1dr1u4pgFCamVtUJrUsQPl8wHrPbqD/6dl+ms4sOyPw6/Mg== +"@plasmicpkgs/tiptap@^0.0.48": + version "0.0.48" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/tiptap/-/tiptap-0.0.48.tgz#f01e0729b79353b52b8feb3d9a8b21a1e8743726" + integrity sha512-IiLoPqcwEeA1V/nyZ2oz2itdG1G4mIWQqpFCWHTKXfAnnjouHLdqgpNg02mTMZVRpN0W8Pap5JwkwHAm2WNZUw== dependencies: "@tiptap/core" "^2.1.12" "@tiptap/extension-bold" "^2.1.12" @@ -2267,17 +2278,17 @@ antd "^5.11.5" tippy.js "^6.3.7" -"@plasmicpkgs/vanilla-cookieconsent@^0.0.20": - version "0.0.20" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/vanilla-cookieconsent/-/vanilla-cookieconsent-0.0.20.tgz#16ee140227fd6965d8a59be9ec57671c3a478edb" - integrity sha512-8noJc6W5C6f6RPefdTK/bFyaaYP4r5PZtPRsWYqtceXOLlWAIrvrYt6RJEfC9go+ih5vIraOY1LJQlpSrXbYAg== +"@plasmicpkgs/vanilla-cookieconsent@^0.0.33": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/vanilla-cookieconsent/-/vanilla-cookieconsent-0.0.33.tgz#452c6cced8230fb2196aee2dd69eb0fc292c06ac" + integrity sha512-WKdWrD2tsTI4Ohodcb5y8a4DGStwGwvOFoJqRZz5TLMg/L6HPMvGu/5AzmMXHJ8Bfyh0XMC0ucdczx3ePZJVTw== dependencies: vanilla-cookieconsent "^3.1.0" -"@plasmicpkgs/wordpress@^0.0.20": - version "0.0.20" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/wordpress/-/wordpress-0.0.20.tgz#4cbf04196e7d65c648f8e39b43755ca27becd870" - integrity sha512-hQETHX6nVULU4/PQs4FvIqgR92X1Ub4jOFAHS4ifq0CtT6Nbt5nqkGSvUMo1oMBFQEvDSxME3rl0jBHAmrnF4w== +"@plasmicpkgs/wordpress@^0.0.34": + version "0.0.34" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/wordpress/-/wordpress-0.0.34.tgz#0fe52836ed6e73f03c079e9414b23b37beb46a34" + integrity sha512-TjfVd0MqT7rFTwx3YxtKYBc0wMEjs9rJmrm0xakgcFR1bxZqvmnat9X1LlGdEpEXqvC8nKFHRHiaRe3OGdWt3g== "@popperjs/core@^2.9.0", "@popperjs/core@^2.9.3": version "2.11.8" @@ -2623,9 +2634,9 @@ "@babel/runtime" "^7.13.10" "@rc-component/color-picker@~1.5.1": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@rc-component/color-picker/-/color-picker-1.5.1.tgz#5d41a10f96aab8eb020999bd397fb4419431814c" - integrity sha512-onyAFhWKXuG4P162xE+7IgaJkPkwM94XlOYnQuu69XdXWMfxpeFi6tpJBsieIMV7EnyLV5J3lDzdLiFeK0iEBA== + version "1.5.3" + resolved "https://registry.yarnpkg.com/@rc-component/color-picker/-/color-picker-1.5.3.tgz#f3b0e14bb67ec5ee77d1fd5d261f63dd4fd00449" + integrity sha512-+tGGH3nLmYXTalVe0L8hSZNs73VTP5ueSHwUlDC77KKRaN7G4DS4wcpG5DTDzdcV/Yas+rzA6UGgIyzd8fS4cw== dependencies: "@babel/runtime" "^7.23.6" "@ctrl/tinycolor" "^3.6.1" @@ -2677,9 +2688,9 @@ rc-util "^5.24.4" "@rc-component/trigger@^1.17.0", "@rc-component/trigger@^1.18.0", "@rc-component/trigger@^1.18.2", "@rc-component/trigger@^1.3.6", "@rc-component/trigger@^1.5.0", "@rc-component/trigger@^1.7.0": - version "1.18.2" - resolved "https://registry.yarnpkg.com/@rc-component/trigger/-/trigger-1.18.2.tgz#dc52c4c66fa8aaccaf0710498f2429fc05454e3b" - integrity sha512-jRLYgFgjLEPq3MvS87fIhcfuywFSRDaDrYw1FLku7Cm4esszvzTbA0JBsyacAyLrK9rF3TiHFcvoEDMzoD3CTA== + version "1.18.3" + resolved "https://registry.yarnpkg.com/@rc-component/trigger/-/trigger-1.18.3.tgz#b323b9e33f2700ca8d24a96f21401ab7b0eafdcd" + integrity sha512-Ksr25pXreYe1gX6ayZ1jLrOrl9OAUHUqnuhEx6MeHnNa1zVM5Y2Aj3Q35UrER0ns8D2cJYtmJtVli+i+4eKrvA== dependencies: "@babel/runtime" "^7.23.2" "@rc-component/portal" "^1.1.0" @@ -2882,14 +2893,14 @@ "@react-types/shared" "^3.29.1" "@swc/helpers" "^0.5.0" -"@react-aria/focus@3.20.3", "@react-aria/focus@^3.20.3": - version "3.20.3" - resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.20.3.tgz#ef0c14f5bf7f2b5613d9e2719c099ffddb3d7797" - integrity sha512-rR5uZUMSY4xLHmpK/I8bP1V6vUNHFo33gTvrvNUsAKKqvMfa7R2nu5A6v97dr5g6tVH6xzpdkPsOJCWh90H2cw== +"@react-aria/focus@3.21.5", "@react-aria/focus@^3.20.3", "@react-aria/focus@^3.21.5": + version "3.21.5" + resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.21.5.tgz#1d9692f9ac97057be83a5878382d1ddd3e443500" + integrity sha512-V18fwCyf8zqgJdpLQeDU5ZRNd9TeOfBbhLgmX77Zr5ae9XwaoJ1R3SFJG1wCJX60t34AW+aLZSEEK+saQElf3Q== dependencies: - "@react-aria/interactions" "^3.25.1" - "@react-aria/utils" "^3.29.0" - "@react-types/shared" "^3.29.1" + "@react-aria/interactions" "^3.27.1" + "@react-aria/utils" "^3.33.1" + "@react-types/shared" "^3.33.1" "@swc/helpers" "^0.5.0" clsx "^2.0.0" @@ -2940,29 +2951,29 @@ "@react-types/shared" "^3.29.1" "@swc/helpers" "^0.5.0" -"@react-aria/i18n@^3.12.9": - version "3.12.9" - resolved "https://registry.yarnpkg.com/@react-aria/i18n/-/i18n-3.12.9.tgz#acc4c86b64177c17a9ac473f51575b20a4d93364" - integrity sha512-Fim0FLfY05kcpIILdOtqcw58c3sksvmVY8kICSwKCuSek4wYfwJdU28p/sRptw4adJhqN8Cbssvkf/J8zL2GgA== - dependencies: - "@internationalized/date" "^3.8.1" - "@internationalized/message" "^3.1.7" - "@internationalized/number" "^3.6.2" - "@internationalized/string" "^3.2.6" - "@react-aria/ssr" "^3.9.8" - "@react-aria/utils" "^3.29.0" - "@react-types/shared" "^3.29.1" +"@react-aria/i18n@^3.12.16", "@react-aria/i18n@^3.12.9": + version "3.12.16" + resolved "https://registry.yarnpkg.com/@react-aria/i18n/-/i18n-3.12.16.tgz#f11950d43db23a6a50cea22f2f908d6090afc895" + integrity sha512-Km2CAz6MFQOUEaattaW+2jBdWOHUF8WX7VQoNbjlqElCP58nSaqi9yxTWUDRhAcn8/xFUnkFh4MFweNgtrHuEA== + dependencies: + "@internationalized/date" "^3.12.0" + "@internationalized/message" "^3.1.8" + "@internationalized/number" "^3.6.5" + "@internationalized/string" "^3.2.7" + "@react-aria/ssr" "^3.9.10" + "@react-aria/utils" "^3.33.1" + "@react-types/shared" "^3.33.1" "@swc/helpers" "^0.5.0" -"@react-aria/interactions@3.25.1", "@react-aria/interactions@^3.25.1": - version "3.25.1" - resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.25.1.tgz#097210e8f4ee474be30b53a7606a6a9b70508dcd" - integrity sha512-ntLrlgqkmZupbbjekz3fE/n3eQH2vhncx8gUp0+N+GttKWevx7jos11JUBjnJwb1RSOPgRUFcrluOqBp0VgcfQ== +"@react-aria/interactions@3.27.1", "@react-aria/interactions@^3.25.1", "@react-aria/interactions@^3.27.1": + version "3.27.1" + resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.27.1.tgz#0f4d3eafb7a9acd25d864e9ab1e4a8a68602db2a" + integrity sha512-M3wLpTTmDflI0QGNK0PJNUaBXXfeBXue8ZxLMngfc1piHNiH4G5lUvWd9W14XVbqrSCVY8i8DfGrNYpyyZu0tw== dependencies: - "@react-aria/ssr" "^3.9.8" - "@react-aria/utils" "^3.29.0" - "@react-stately/flags" "^3.1.1" - "@react-types/shared" "^3.29.1" + "@react-aria/ssr" "^3.9.10" + "@react-aria/utils" "^3.33.1" + "@react-stately/flags" "^3.1.2" + "@react-types/shared" "^3.33.1" "@swc/helpers" "^0.5.0" "@react-aria/label@^3.7.18": @@ -3064,21 +3075,22 @@ "@react-types/shared" "^3.29.1" "@swc/helpers" "^0.5.0" -"@react-aria/overlays@3.27.1", "@react-aria/overlays@^3.27.1": - version "3.27.1" - resolved "https://registry.yarnpkg.com/@react-aria/overlays/-/overlays-3.27.1.tgz#ceedc3f7c624d05595ac43670e3c80683dd833ea" - integrity sha512-wepzwNLkgem6kVlLm6yk7zNIMAt0KPy8vAWlxdfpXWD/hBI30ULl71gL/BxRa5EYG1GMvlOwNti3whzy9lm3eQ== - dependencies: - "@react-aria/focus" "^3.20.3" - "@react-aria/i18n" "^3.12.9" - "@react-aria/interactions" "^3.25.1" - "@react-aria/ssr" "^3.9.8" - "@react-aria/utils" "^3.29.0" - "@react-aria/visually-hidden" "^3.8.23" - "@react-stately/overlays" "^3.6.16" - "@react-types/button" "^3.12.1" - "@react-types/overlays" "^3.8.15" - "@react-types/shared" "^3.29.1" +"@react-aria/overlays@3.31.2", "@react-aria/overlays@^3.27.1": + version "3.31.2" + resolved "https://registry.yarnpkg.com/@react-aria/overlays/-/overlays-3.31.2.tgz#e2186fd6f72052d52aab6c4b1da4ecb6af49fdab" + integrity sha512-78HYI08r6LvcfD34gyv19ArRIjy1qxOKuXl/jYnjLDyQzD4pVb634IQWcm0zt10RdKgyuH6HTqvuDOgZTLet7Q== + dependencies: + "@react-aria/focus" "^3.21.5" + "@react-aria/i18n" "^3.12.16" + "@react-aria/interactions" "^3.27.1" + "@react-aria/ssr" "^3.9.10" + "@react-aria/utils" "^3.33.1" + "@react-aria/visually-hidden" "^3.8.31" + "@react-stately/flags" "^3.1.2" + "@react-stately/overlays" "^3.6.23" + "@react-types/button" "^3.15.1" + "@react-types/overlays" "^3.9.4" + "@react-types/shared" "^3.33.1" "@swc/helpers" "^0.5.0" "@react-aria/progress@^3.4.23": @@ -3191,10 +3203,10 @@ "@react-types/shared" "^3.29.1" "@swc/helpers" "^0.5.0" -"@react-aria/ssr@^3.9.8": - version "3.9.8" - resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.9.8.tgz#9c06f1860abac629517898c1b5424be5d03bc112" - integrity sha512-lQDE/c9uTfBSDOjaZUJS8xP2jCKVk4zjQeIlCH90xaLhHDgbpCdns3xvFpJJujfj3nI4Ll9K7A+ONUBDCASOuw== +"@react-aria/ssr@^3.9.10", "@react-aria/ssr@^3.9.8": + version "3.9.10" + resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.9.10.tgz#7fdc09e811944ce0df1d7e713de1449abd7435e6" + integrity sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ== dependencies: "@swc/helpers" "^0.5.0" @@ -3338,15 +3350,15 @@ "@react-types/shared" "^3.29.1" "@swc/helpers" "^0.5.0" -"@react-aria/utils@^3.29.0": - version "3.29.0" - resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.29.0.tgz#eb07bd3403d8a26886c9ad953242451de15e1c2c" - integrity sha512-jSOrZimCuT1iKNVlhjIxDkAhgF7HSp3pqyT6qjg/ZoA0wfqCi/okmrMPiWSAKBnkgX93N8GYTLT3CIEO6WZe9Q== +"@react-aria/utils@^3.29.0", "@react-aria/utils@^3.33.1": + version "3.33.1" + resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.33.1.tgz#a80321f51ad1dc09071b9c55863c0808ba5b3038" + integrity sha512-kIx1Sj6bbAT0pdqCegHuPanR9zrLn5zMRiM7LN12rgRf55S19ptd9g3ncahArifYTRkfEU9VIn+q0HjfMqS9/w== dependencies: - "@react-aria/ssr" "^3.9.8" - "@react-stately/flags" "^3.1.1" - "@react-stately/utils" "^3.10.6" - "@react-types/shared" "^3.29.1" + "@react-aria/ssr" "^3.9.10" + "@react-stately/flags" "^3.1.2" + "@react-stately/utils" "^3.11.0" + "@react-types/shared" "^3.33.1" "@swc/helpers" "^0.5.0" clsx "^2.0.0" @@ -3362,14 +3374,14 @@ "@react-types/shared" "^3.29.1" "@swc/helpers" "^0.5.0" -"@react-aria/visually-hidden@^3.8.23": - version "3.8.23" - resolved "https://registry.yarnpkg.com/@react-aria/visually-hidden/-/visually-hidden-3.8.23.tgz#ed1c5881ec5851010939f81938b2898e2a023c6f" - integrity sha512-D37GHtAcxCck8BtCiGTNDniGqtldJuN0cRlW1PJ684zM4CdmkSPqKbt5IUKUfqheS9Vt7HxYsj1VREDW+0kaGA== +"@react-aria/visually-hidden@^3.8.23", "@react-aria/visually-hidden@^3.8.31": + version "3.8.31" + resolved "https://registry.yarnpkg.com/@react-aria/visually-hidden/-/visually-hidden-3.8.31.tgz#38ac652201f87c428fc58d13c6a8f5bb19e06513" + integrity sha512-RTOHHa4n56a9A3criThqFHBifvZoV71+MCkSuNP2cKO662SUWjqKkd0tJt/mBRMEJPkys8K7Eirp6T8Wt5FFRA== dependencies: - "@react-aria/interactions" "^3.25.1" - "@react-aria/utils" "^3.29.0" - "@react-types/shared" "^3.29.1" + "@react-aria/interactions" "^3.27.1" + "@react-aria/utils" "^3.33.1" + "@react-types/shared" "^3.33.1" "@swc/helpers" "^0.5.0" "@react-stately/autocomplete@3.0.0-beta.1": @@ -3480,10 +3492,10 @@ "@react-types/shared" "^3.29.1" "@swc/helpers" "^0.5.0" -"@react-stately/flags@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@react-stately/flags/-/flags-3.1.1.tgz#c47d540c4196798f4cc0ee83f844099b4d57b876" - integrity sha512-XPR5gi5LfrPdhxZzdIlJDz/B5cBf63l4q6/AzNqVWFKgd0QqY5LvWJftXkklaIUpKSJkIKQb8dphuZXDtkWNqg== +"@react-stately/flags@^3.1.1", "@react-stately/flags@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@react-stately/flags/-/flags-3.1.2.tgz#5c8e5ae416d37d37e2e583d2fcb3a046293504f2" + integrity sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg== dependencies: "@swc/helpers" "^0.5.0" @@ -3551,13 +3563,13 @@ "@react-types/numberfield" "^3.8.11" "@swc/helpers" "^0.5.0" -"@react-stately/overlays@^3.6.16": - version "3.6.16" - resolved "https://registry.yarnpkg.com/@react-stately/overlays/-/overlays-3.6.16.tgz#57f33bfb8bdfe3cbb18623e8d8b593df36036e92" - integrity sha512-+Ve/TBlUNg3otVC4ZfCq1a8q8FwC7xNebWkVOCGviTqiYodPCGqBwR9Z1xonuFLF/HuQYqALHHTOZtxceU+nVQ== +"@react-stately/overlays@^3.6.16", "@react-stately/overlays@^3.6.23": + version "3.6.23" + resolved "https://registry.yarnpkg.com/@react-stately/overlays/-/overlays-3.6.23.tgz#f6d6b84b22580fa0c8c9cd7fe1cc773c4f57cd46" + integrity sha512-RzWxots9A6gAzQMP4s8hOAHV7SbJRTFSlQbb6ly1nkWQXacOSZSFNGsKOaS0eIatfNPlNnW4NIkgtGws5UYzfw== dependencies: - "@react-stately/utils" "^3.10.6" - "@react-types/overlays" "^3.8.15" + "@react-stately/utils" "^3.11.0" + "@react-types/overlays" "^3.9.4" "@swc/helpers" "^0.5.0" "@react-stately/radio@^3.10.13": @@ -3675,10 +3687,10 @@ "@react-types/shared" "^3.29.1" "@swc/helpers" "^0.5.0" -"@react-stately/utils@^3.10.6": - version "3.10.6" - resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.10.6.tgz#2ae25c2773e53a4ebdaf39264aa27145b758dc1b" - integrity sha512-O76ip4InfTTzAJrg8OaZxKU4vvjMDOpfA/PGNOytiXwBbkct2ZeZwaimJ8Bt9W1bj5VsZ81/o/tW4BacbdDOMA== +"@react-stately/utils@^3.10.6", "@react-stately/utils@^3.11.0": + version "3.11.0" + resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.11.0.tgz#95a05d9633f4614ca89f630622566e7e5709d79e" + integrity sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw== dependencies: "@swc/helpers" "^0.5.0" @@ -3708,12 +3720,12 @@ "@react-types/link" "^3.6.1" "@react-types/shared" "^3.29.1" -"@react-types/button@^3.12.1": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@react-types/button/-/button-3.12.1.tgz#665c79ce85b24b6bec522b5142f3be8e8063bca6" - integrity sha512-z87stl4llWTi4C5qhUK1PKcEsG59uF/ZQpkRhMzX0KfgXobJY6yiIrry2xrpnlTPIVST6K1+kARhhSDOZ8zhLw== +"@react-types/button@^3.12.1", "@react-types/button@^3.15.1": + version "3.15.1" + resolved "https://registry.yarnpkg.com/@react-types/button/-/button-3.15.1.tgz#9ecd04f0ebee05e6d12bfa21b464ee014799a7b0" + integrity sha512-M1HtsKreJkigCnqceuIT22hDJBSStbPimnpmQmsl7SNyqCFY3+DHS7y/Sl3GvqCkzxF7j9UTL0dG38lGQ3K4xQ== dependencies: - "@react-types/shared" "^3.29.1" + "@react-types/shared" "^3.33.1" "@react-types/calendar@^3.7.1": version "3.7.1" @@ -3813,12 +3825,12 @@ dependencies: "@react-types/shared" "^3.29.1" -"@react-types/overlays@^3.8.15": - version "3.8.15" - resolved "https://registry.yarnpkg.com/@react-types/overlays/-/overlays-3.8.15.tgz#581a635ca86d0fc2de4549e336aa7ccc8c699991" - integrity sha512-ppDfezvVYOJDHLZmTSmIXajxAo30l2a1jjy4G65uBYy8J8kTZU7mcfQql5Pii1TwybcNMsayf2WtPItiWmJnOA== +"@react-types/overlays@^3.8.15", "@react-types/overlays@^3.9.4": + version "3.9.4" + resolved "https://registry.yarnpkg.com/@react-types/overlays/-/overlays-3.9.4.tgz#1775d1b096a14dcebbf68c61c213da3fb3cf8a72" + integrity sha512-7Z9HaebMFyYBqtv3XVNHEmVkm7AiYviV7gv0c98elEN2Co+eQcKFGvwBM9Gy/lV57zlTqFX1EX/SAqkMEbCLOA== dependencies: - "@react-types/shared" "^3.29.1" + "@react-types/shared" "^3.33.1" "@react-types/progress@^3.5.12": version "3.5.12" @@ -3849,10 +3861,10 @@ dependencies: "@react-types/shared" "^3.29.1" -"@react-types/shared@^3.29.1": - version "3.29.1" - resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.29.1.tgz#81c685e54aab7abe890b2a93e6758d0163b04c54" - integrity sha512-KtM+cDf2CXoUX439rfEhbnEdAgFZX20UP2A35ypNIawR7/PFFPjQDWyA2EnClCcW/dLWJDEPX2U8+EJff8xqmQ== +"@react-types/shared@^3.29.1", "@react-types/shared@^3.33.1": + version "3.33.1" + resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.33.1.tgz#2c0b97bef8f7c2f99d0a030eda083d32cf503629" + integrity sha512-oJHtjvLG43VjwemQDadlR5g/8VepK56B/xKO2XORPHt9zlW6IZs3tZrYlvH29BMvoqC7RtE7E5UjgbnbFtDGag== "@react-types/slider@^3.7.11": version "3.7.11" @@ -4058,24 +4070,24 @@ dependencies: debug "^4.1.1" -"@size-limit/file@12.0.0": - version "12.0.0" - resolved "https://registry.yarnpkg.com/@size-limit/file/-/file-12.0.0.tgz#4ce4352e8b19ab688e59d4f8bd9a7d6665d6c7c9" - integrity sha512-OzKYpDzWJ2jo6cAIzVsaPuvzZTmMLDoVCViEvsctmImxpXzwJZcuBEpPohFKKdgVdZuNTU8WstmvywPq55Njdw== +"@size-limit/file@12.1.0": + version "12.1.0" + resolved "https://registry.yarnpkg.com/@size-limit/file/-/file-12.1.0.tgz#3e0740e98cbb5c46c7e53939a37df5de68269fe2" + integrity sha512-eGwDcIufnNnvJRzv3liDOn6MAOGgmOTUdpeGQ2KuRTlgIgO54AJH1ilvktlJc6PIjNfwpYY0dOGyap1QgM1swQ== -"@size-limit/preset-app@^12.0.0": - version "12.0.0" - resolved "https://registry.yarnpkg.com/@size-limit/preset-app/-/preset-app-12.0.0.tgz#89c75613faad9f9006f616c9e815c0a59e7628f8" - integrity sha512-Us6LL0OIvx3XuEzMu7ZfUoE/WscH2/+nTPhNAyCFiJZKrsDDMPAvdZBcWIYNpIAG3ADMi/wIQrUXLCRCsEUF4Q== +"@size-limit/preset-app@^12.1.0": + version "12.1.0" + resolved "https://registry.yarnpkg.com/@size-limit/preset-app/-/preset-app-12.1.0.tgz#7d6e40fd3d0e93ee5ab624749957bdb2c6237327" + integrity sha512-pGGOxzDMM6MUXCzTwUjIcgex9RYbGdvQYni1rUtsZ1oojm7JvOSbBMiJPe9PhpmDq/aMsVzjP1oN0guq1RptVw== dependencies: - "@size-limit/file" "12.0.0" - "@size-limit/time" "12.0.0" - size-limit "12.0.0" + "@size-limit/file" "12.1.0" + "@size-limit/time" "12.1.0" + size-limit "12.1.0" -"@size-limit/time@12.0.0": - version "12.0.0" - resolved "https://registry.yarnpkg.com/@size-limit/time/-/time-12.0.0.tgz#15d309f0e44903c7f2a604b21ace49a1ee96580c" - integrity sha512-MAMr1OK1qEEoxbrYjA79cGzncY6KVhNRx6Hid4L1vZLbR6P+k0Cs8zREzCslS4XtOXqyxMtvIJfpq10MN+pAtg== +"@size-limit/time@12.1.0": + version "12.1.0" + resolved "https://registry.yarnpkg.com/@size-limit/time/-/time-12.1.0.tgz#438fe7b5967c1bdaf6591e2c9ee53dd209696fec" + integrity sha512-ekYPeZcvkPSLsHtqNmz7F5jx3R0HV7CpY7kGasBW2yKR3NrD0JWMAcswS9OCR8OzK9hyLACRTNYTpLI9PXLczQ== dependencies: estimo "^3.0.5" @@ -4223,10 +4235,10 @@ dependencies: "@types/retry" "*" -"@types/dlv@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/dlv/-/dlv-1.1.2.tgz#02d4fcc41c5f707753427867c64fdae543031fb9" - integrity sha512-OyiZ3jEKu7RtGO1yp9oOdK0cTwZ/10oE9PDJ6fyN3r9T5wkyOcvr6awdugjYdqF6KVO5eUvt7jx7rk2Eylufow== +"@types/dlv@^1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@types/dlv/-/dlv-1.1.5.tgz#14aab363b57cd38828e9e380fe44b1bb6b08f732" + integrity sha512-JHOWNfiWepAhfwlSw17kiWrWrk6od2dEQgHltJw9AS0JPFoLZJBge5+Dnil2NfdjAvJ/+vGSX60/BRW20PpUXw== "@types/estree@*", "@types/estree@0.0.39": version "0.0.39" @@ -4243,10 +4255,10 @@ resolved "https://registry.yarnpkg.com/@types/eventsource/-/eventsource-1.1.11.tgz#a2c0bfd0436b7db42ed1b2b2117f7ec2e8478dc7" integrity sha512-L7wLDZlWm5mROzv87W0ofIYeQP5K2UhoFnnUyEWLKM6UBb0ZNRgAqp98qE5DkgfBXdWfc2kYmw9KZm4NLjRbsw== -"@types/isomorphic-fetch@^0.0.37": - version "0.0.37" - resolved "https://registry.yarnpkg.com/@types/isomorphic-fetch/-/isomorphic-fetch-0.0.37.tgz#d3efed60248923ae14f797ad20b82b4ae4b0ca83" - integrity sha512-+27HulrbyFpcalE4Agl+KHfGi4Qkcdmxv/ISi+DmUs5NECAFxRHeuZaLJj6DBfDRle6yxCOqLHJrfyVy9y5x9w== +"@types/isomorphic-fetch@^0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/isomorphic-fetch/-/isomorphic-fetch-0.0.39.tgz#889573a72ca637bc1a665910a41ff1cb3b52011f" + integrity sha512-I0gou/ZdA1vMG7t7gMzL7VYu2xAKU78rW9U1l10MI0nn77pEHq3tQqHQ8hMmXdMpBlkxZOorjI4sO594Z3kKJw== "@types/jquery@^3.5.22": version "3.5.22" @@ -4272,10 +4284,10 @@ resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-4.1.1.tgz#b2d87a5e3df8d4b18ca426c5105cd701c2306d40" integrity sha512-8mNEUG6diOrI6pMqOHrHPDBB1JsrpedeMK9AWGzVCQ7StRRribiT9BRvUmF8aUws9iBbVlgVekOT5Sgzc1MTKw== -"@types/md5@^2.3.3": - version "2.3.3" - resolved "https://registry.yarnpkg.com/@types/md5/-/md5-2.3.3.tgz#1f03ce6a9b1462981a1283777b30aaa30e319e22" - integrity sha512-4K40FjTW0tiIx9NfV+/DHJ56ih3fcdkDqBYz5CffKwJVWYho1FxzjkddGcgEEIs+fP2DqmQ3lujC5c4bUOESTQ== +"@types/md5@^2.3.6": + version "2.3.6" + resolved "https://registry.yarnpkg.com/@types/md5/-/md5-2.3.6.tgz#db6901a9fc1d95eeed851a62c5ce5dedfac8ff9a" + integrity sha512-WD69gNXtRBnpknfZcb4TRQ0XJQbUPZcai/Qdhmka3sxUR3Et8NrXoeAoknG/LghYHTf4ve795rInVYHBTQdNVA== "@types/node-fetch@^2.6.1": version "2.6.13" @@ -4300,10 +4312,10 @@ resolved "https://registry.yarnpkg.com/@types/object.pick/-/object.pick-1.3.4.tgz#1a38b6e69a35f36ec2dcc8b9f5ffd555c1c4d7fc" integrity sha512-5PjwB0uP2XDp3nt5u5NJAG2DORHIRClPzWT/TTZhJ2Ekwe8M5bA9tvPdi9NO/n2uvu2/ictat8kgqvLfcIE1SA== -"@types/papaparse@^5.3.9": - version "5.3.9" - resolved "https://registry.yarnpkg.com/@types/papaparse/-/papaparse-5.3.9.tgz#5f955949eae512c1eec70bba4bfeb2e7f4396564" - integrity sha512-sZcrKD63qA4/6GyBcVvX6AIp0AkpfyYk00CUQHMBvb4+OVXTZWyXUvidUZaai1wyKUVyJoxO7mgREam/pMRrDw== +"@types/papaparse@^5.5.2": + version "5.5.2" + resolved "https://registry.yarnpkg.com/@types/papaparse/-/papaparse-5.5.2.tgz#cb450a1cd183deb43728e593eb1ac2da60f4fa4d" + integrity sha512-gFnFp/JMzLHCwRf7tQHrNnfhN4eYBVYYI897CGX4MY1tzY9l2aLkVyx2IlKZ/SAqDbB3I1AOZW5gTMGGsqWliA== dependencies: "@types/node" "*" @@ -4312,10 +4324,10 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/pluralize@^0.0.31": - version "0.0.31" - resolved "https://registry.yarnpkg.com/@types/pluralize/-/pluralize-0.0.31.tgz#9e7408526c28e265795e83454a141ec8375d3508" - integrity sha512-MQh69PPwFlYAL2qz/Mw5Zc34VTdt7pTck0Xbb6pbPSzdt5oaLB87iyJJxEMS5Dco/s7lXHunEezAvQurZZdrsQ== +"@types/pluralize@^0.0.33": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@types/pluralize/-/pluralize-0.0.33.tgz#8ad9018368c584d268667dd9acd5b3b806e8c82a" + integrity sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg== "@types/prop-types@*": version "15.7.5" @@ -4334,20 +4346,20 @@ resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.7.tgz#b89ddf2cd83b4feafcc4e2ea41afdfb95a0d194f" integrity sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ== -"@types/react-slick@^0.23.8": - version "0.23.10" - resolved "https://registry.yarnpkg.com/@types/react-slick/-/react-slick-0.23.10.tgz#56126e6e4e95cdce7771535b2811c2c1931a7caa" - integrity sha512-ZiqdencANDZy6sWOWJ54LDvebuXFEhDlHtXU9FFipQR2BcYU2QJxZhvJPW6YK7cocibUiNn+YvDTbt1HtCIBVA== +"@types/react-slick@^0.23.13": + version "0.23.13" + resolved "https://registry.yarnpkg.com/@types/react-slick/-/react-slick-0.23.13.tgz#037434e73a58063047b121e08565f7185d811f36" + integrity sha512-bNZfDhe/L8t5OQzIyhrRhBr/61pfBcWaYJoq6UDqFtv5LMwfg4NsVDD2J8N01JqdAdxLjOt66OZEp6PX+dGs/A== dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^18": - version "18.3.25" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.25.tgz#b37e3b05b6762b49f3944760f3bce3d5b6afa19b" - integrity sha512-oSVZmGtDPmRZtVDqvdKUi/qgCsWp5IDY29wp8na8Bj4B3cc99hfNzvNhlMkVVxctkAOGUA3Km7MMpBHAnWfcIA== +"@types/react@*", "@types/react@^18.3.28": + version "18.3.28" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.28.tgz#0a85b1a7243b4258d9f626f43797ba18eb5f8781" + integrity sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw== dependencies: "@types/prop-types" "*" - csstype "^3.0.2" + csstype "^3.2.2" "@types/react@^18.0.27": version "18.3.28" @@ -4369,10 +4381,10 @@ resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.5.tgz#f090ff4bd8d2e5b940ff270ab39fd5ca1834a07e" integrity sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw== -"@types/semver@^7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" - integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== +"@types/semver@^7.7.1": + version "7.7.1" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.7.1.tgz#3ce3af1a5524ef327d2da9e4fd8b6d95c8d70528" + integrity sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA== "@types/sizzle@*": version "2.3.3" @@ -4384,10 +4396,10 @@ resolved "https://registry.yarnpkg.com/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz#1c3df624bfc4b62f992d3012b84c56d41eab3776" integrity sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ== -"@types/tinycolor2@^1.4.4": - version "1.4.4" - resolved "https://registry.yarnpkg.com/@types/tinycolor2/-/tinycolor2-1.4.4.tgz#bca7469668247469087d6eba588c02e7709fcab5" - integrity sha512-FYK4mlLxUUajo/mblv7EUDHku20qT6ThYNsGZsTHilcHRvIkF8WXqtZO+DVTYkpHWCaAT97LueV59H/5Ve3bGA== +"@types/tinycolor2@^1.4.6": + version "1.4.6" + resolved "https://registry.yarnpkg.com/@types/tinycolor2/-/tinycolor2-1.4.6.tgz#670cbc0caf4e58dd61d1e3a6f26386e473087f06" + integrity sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw== "@types/uuid@^9.0.5": version "9.0.5" @@ -4894,10 +4906,10 @@ charenc@0.0.2: resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== -chart.js@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-4.2.1.tgz#d2bd5c98e9a0ae35408975b638f40513b067ba1d" - integrity sha512-6YbpQ0nt3NovAgOzbkSSeeAQu/3za1319dPUQTXn9WcOpywM8rGKxJHrhS8V8xEkAlk8YhEfjbuAPfUyp6jIsw== +chart.js@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-4.5.1.tgz#19dd1a9a386a3f6397691672231cb5fc9c052c35" + integrity sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw== dependencies: "@kurkle/color" "^0.3.0" @@ -4999,7 +5011,7 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== -compute-scroll-into-view@3.0.3: +compute-scroll-into-view@3.0.3, compute-scroll-into-view@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-3.0.3.tgz#c418900a5c56e2b04b885b54995df164535962b1" integrity sha512-nadqwNxghAGTamwIqQSG433W6OADZx2vCo3UXHNrzTRHK/htu+7+L0zhjEoaeaQVNAi3YgqWDv8+tzf0hRfR+A== @@ -5009,11 +5021,6 @@ compute-scroll-into-view@^1.0.17: resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz#6a88f18acd9d42e9cf4baa6bec7e0522607ab7ab" integrity sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg== -compute-scroll-into-view@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz#753f11d972596558d8fe7c6bcbc8497690ab4c87" - integrity sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -5098,20 +5105,6 @@ crelt@^1.0.0: resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72" integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g== -cross-port-killer@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cross-port-killer/-/cross-port-killer-1.4.0.tgz#9e37b79c613b830e08122e342d31d5dadc3c7b67" - integrity sha512-ujqfftKsSeorFMVI6JP25xMBixHEaDWVK+NarRZAGnJjR5AhebRQU+g+k/Lj8OHwM6f+wrrs8u5kkCdI7RLtxQ== - -cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - crypt@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" @@ -5225,10 +5218,10 @@ csso@^4.2.0: dependencies: css-tree "^1.1.2" -csstype@^3.0.11, csstype@^3.0.2, csstype@^3.1.2, csstype@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== +csstype@^3.0.11, csstype@^3.0.2, csstype@^3.1.2, csstype@^3.1.3, csstype@^3.2.2: + version "3.2.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.2.3.tgz#ec48c0f3e993e50648c86da559e2610995cf989a" + integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ== csstype@^3.2.2: version "3.2.3" @@ -5257,10 +5250,10 @@ date-fns@2.x, date-fns@^2.30.0: dependencies: "@babel/runtime" "^7.21.0" -dayjs@1.x, dayjs@^1.10.7, dayjs@^1.11.10, dayjs@^1.11.9: - version "1.11.10" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" - integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== +dayjs@1.x, dayjs@^1.10.7, dayjs@^1.11.10, dayjs@^1.11.20, dayjs@^1.11.9: + version "1.11.20" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.20.tgz#88d919fd639dc991415da5f4cb6f1b6650811938" + integrity sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ== debounce@^1.2.1: version "1.2.1" @@ -5959,11 +5952,6 @@ get-nonce@^1.0.0: resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== -get-port@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-7.1.0.tgz#d5a500ebfc7aa705294ec2b83cc38c5d0e364fec" - integrity sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw== - get-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" @@ -5989,7 +5977,7 @@ get-uri@^6.0.1: debug "^4.3.4" fs-extra "^11.2.0" -glob@7.1.6: +glob@7.1.6, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -6001,18 +5989,6 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.6: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - gopd@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" @@ -6079,10 +6055,10 @@ hoist-non-react-statics@^3.3.1: dependencies: react-is "^16.7.0" -html-to-image@^1.11.11: - version "1.11.11" - resolved "https://registry.yarnpkg.com/html-to-image/-/html-to-image-1.11.11.tgz#c0f8a34dc9e4b97b93ff7ea286eb8562642ebbea" - integrity sha512-9gux8QhvjRO/erSnDPv28noDZcPZmYE7e1vFsBLKLlRlKDSqNJYebj6Qz1TGd5lsRV+X+xYyjCKjuZdABinWjA== +html-to-image@^1.11.13: + version "1.11.13" + resolved "https://registry.yarnpkg.com/html-to-image/-/html-to-image-1.11.13.tgz#adbc989c993b7aaf90b629c0cacf833db84d5f43" + integrity sha512-cuOPoI7WApyhBElTTb9oqsawRvZ0rHhaHwghRLlTuffoD1B2aDemlCruLeZrUIIdvG7gs9xeELEPm6PhuASqrg== http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1: version "7.0.2" @@ -6122,10 +6098,10 @@ ieee754@^1.2.1: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -immer@^10.0.3: - version "10.0.3" - resolved "https://registry.yarnpkg.com/immer/-/immer-10.0.3.tgz#a8de42065e964aa3edf6afc282dfc7f7f34ae3c9" - integrity sha512-pwupu3eWfouuaowscykeckFmVTpqbzW+rXFCX8rQLkZzM9ftBmU/++Ra+o+L27mz03zJTlyV4UUr+fdKNffo4A== +immer@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/immer/-/immer-10.2.0.tgz#88a4ce06a1af64172d254b70f7cb04df51c871b1" + integrity sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw== import-cwd@^3.0.0: version "3.0.0" @@ -6302,11 +6278,6 @@ isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" @@ -6595,7 +6566,7 @@ mimic-response@^3.1.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== -minimatch@^3.0.4, minimatch@^3.1.1: +minimatch@^3.0.4: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -6631,15 +6602,20 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@5.1.5, nanoid@^5.0.2: +nanoid@5.1.5: version "5.1.5" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-5.1.5.tgz#f7597f9d9054eb4da9548cdd53ca70f1790e87de" integrity sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw== -nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== +nanoid@^3.3.11: + version "3.3.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + +nanoid@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-5.1.7.tgz#a9f09a4ce73ba0b88830af36ee49666bad7827b6" + integrity sha512-ua3NDgISf6jdwezAheMOk4mbE1LXjm1DfMUDMuJf4AqxLFK3ccGpgWizwa5YV7Yz9EpXwEaWoRXSb/BnV0t5dQ== nanospinner@^1.2.2: version "1.2.2" @@ -6676,7 +6652,7 @@ node-html-parser@^5.4.1: css-select "^4.2.1" he "1.2.0" -node-html-parser@^6.1.11, node-html-parser@^6.1.5: +node-html-parser@^6.1.11: version "6.1.13" resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-6.1.13.tgz#a1df799b83df5c6743fcd92740ba14682083b7e4" integrity sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg== @@ -6802,10 +6778,10 @@ pac-resolver@^7.0.1: degenerator "^5.0.0" netmask "^2.0.2" -papaparse@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.4.1.tgz#f45c0f871853578bd3a30f92d96fdcfb6ebea127" - integrity sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw== +papaparse@^5.5.3: + version "5.5.3" + resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.5.3.tgz#07f8994dec516c6dab266e952bed68e1de59fa9a" + integrity sha512-5QvjGxYVjxO59MGU2lHVYpRWBBtKHnlIAcSe1uNFCkkptUh63NFRj0FJQm7nR67puEruUci/ZkjmEFrjCAyP4A== parallax-controller@^1.7.1: version "1.7.1" @@ -6870,11 +6846,6 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -6905,10 +6876,10 @@ picomatch@^2.2.2: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -picomatch@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" - integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== +picomatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.4.tgz#fd6f5e00a143086e074dffe4c924b8fb293b0589" + integrity sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A== pify@^5.0.0: version "5.0.0" @@ -7205,14 +7176,14 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.4.12: - version "8.4.19" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.19.tgz#61178e2add236b17351897c8bcc0b4c8ecab56fc" - integrity sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA== +postcss@^8.5.9: + version "8.5.9" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.9.tgz#f6ee9e0b94f0f19c97d2f172bfbd7fc71fe1cca4" + integrity sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw== dependencies: - nanoid "^3.3.4" - picocolors "^1.0.0" - source-map-js "^1.0.2" + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" process-nextick-args@~2.0.0: version "2.0.1" @@ -7456,9 +7427,9 @@ puppeteer-core@24.22.0: ws "^8.18.3" qrcode.react@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/qrcode.react/-/qrcode.react-3.1.0.tgz#5c91ddc0340f768316fbdb8fff2765134c2aecd8" - integrity sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q== + version "3.2.0" + resolved "https://registry.yarnpkg.com/qrcode.react/-/qrcode.react-3.2.0.tgz#97daabd4ff641a3f3c678f87be106ebc55f9cd07" + integrity sha512-YietHHltOHA4+l5na1srdaMx4sVSOjV9tamHs+mwiLWAMr6QVACRUw1Neax5CptFILcNoITctJY0Ipyn5enQ8g== qs@^6.11.0, qs@^6.11.1: version "6.14.0" @@ -7572,9 +7543,9 @@ rc-collapse@~3.1.0: shallowequal "^1.1.0" rc-collapse@~3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-3.7.2.tgz#d11538ff9c705a5c988d9a4dfcc051a919692fe3" - integrity sha512-ZRw6ipDyOnfLFySxAiCMdbHtb5ePAsB9mT17PA6y1mRD/W6KHRaZeb5qK/X9xDV1CqgyxMpzw0VdS74PCcUk4A== + version "3.7.3" + resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-3.7.3.tgz#68161683d8fd1004bef4eb281fc106f3c8dc16eb" + integrity sha512-60FJcdTRn0X5sELF18TANwtVi7FtModq649H11mYF1jh83DniMoM4MqY627sEKRCTm4+WXfGDcB7hY5oW6xhyw== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" @@ -7622,17 +7593,7 @@ rc-drawer@~6.5.2: rc-motion "^2.6.1" rc-util "^5.36.0" -rc-dropdown@^3.2.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-3.6.2.tgz#d23b8b2762941ac39e665673946f67ca9c39118f" - integrity sha512-Wsw7GkVbUXADEs8FPL0v8gd+3mWQiydPFXBlr2imMScQaf8hh79pG9KrBc1DwK+nqHmYOpQfK2gn6jG2AQw9Pw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - rc-trigger "^5.0.4" - rc-util "^5.17.0" - -rc-dropdown@~3.3.2: +rc-dropdown@^3.2.0, rc-dropdown@~3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-3.3.3.tgz#17ba32ebd066ae397b00e9e4d570c7c21daed88f" integrity sha512-UNe68VpvtrpU0CS4jh5hD4iGqzi4Pdp7uOya6+H3QIEZxe7K+Xs11BNjZm6W4MaL0jTmzUj+bxvnq5bP3rRoVQ== @@ -7781,13 +7742,13 @@ rc-menu@~9.3.2: shallowequal "^1.1.0" rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.3, rc-motion@^2.4.4, rc-motion@^2.6.1, rc-motion@^2.6.2, rc-motion@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.9.0.tgz#9e18a1b8d61e528a97369cf9a7601e9b29205710" - integrity sha512-XIU2+xLkdIr1/h6ohPZXyPBMvOmuyFZQ/T0xnawz+Rh+gh4FINcnZmMT5UTIj6hgI0VLDjTaPeRd+smJeSPqiQ== + version "2.9.5" + resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.9.5.tgz#12c6ead4fd355f94f00de9bb4f15df576d677e0c" + integrity sha512-w+XTUrfh7ArbYEd2582uDrEhmBHwK1ZENJiSJVb7uRxdE7qJSYjbO2eksRXmndqyKqKoYPc9ClpPh5242mV1vA== dependencies: "@babel/runtime" "^7.11.1" classnames "^2.2.1" - rc-util "^5.21.0" + rc-util "^5.44.0" rc-notification@~4.5.7: version "4.5.7" @@ -7810,14 +7771,14 @@ rc-notification@~5.3.0: rc-util "^5.20.1" rc-overflow@^1.0.0, rc-overflow@^1.2.0, rc-overflow@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/rc-overflow/-/rc-overflow-1.3.1.tgz#03224cf90c66aa570eb0deeb4eff6cc96401e979" - integrity sha512-RY0nVBlfP9CkxrpgaLlGzkSoh9JhjJLu6Icqs9E7CW6Ewh9s0peF9OHIex4OhfoPsR92LR0fN6BlCY9Z4VoUtA== + version "1.5.0" + resolved "https://registry.yarnpkg.com/rc-overflow/-/rc-overflow-1.5.0.tgz#02e58a15199e392adfcc87e0d6e9e7c8e57f2771" + integrity sha512-Lm/v9h0LymeUYJf0x39OveU52InkdRXqnn2aYXfWmo8WdOonIKB2kfau+GF0fWq6jPgtdO9yMqveGcK6aIhJmg== dependencies: "@babel/runtime" "^7.11.1" classnames "^2.2.1" rc-resize-observer "^1.0.0" - rc-util "^5.19.2" + rc-util "^5.37.0" rc-pagination@~3.1.9: version "3.1.17" @@ -7851,9 +7812,9 @@ rc-picker@~2.6.4: shallowequal "^1.1.0" rc-picker@~3.14.6: - version "3.14.6" - resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-3.14.6.tgz#60fc34f9883272e10f6c593fa6d82e7e7a70781b" - integrity sha512-AdKKW0AqMwZsKvIpwUWDUnpuGKZVrbxVTZTNjcO+pViGkjC1EBcjMgxVe8tomOEaIHJL5Gd13vS8Rr3zzxWmag== + version "3.14.7" + resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-3.14.7.tgz#112f270ee933a1be3a59b32af1ea96c139bb9bac" + integrity sha512-+craFcClAOwu4R7lSlaiTAZRY4cWPgtE0+yji9stQkQR28C7WGTrZcyiq5AD7xfhXNV+82QmoJ8Aqg3duDYF6A== dependencies: "@babel/runtime" "^7.10.1" "@rc-component/trigger" "^1.5.0" @@ -7907,13 +7868,13 @@ rc-resize-observer@^0.2.3: resize-observer-polyfill "^1.5.1" rc-resize-observer@^1.0.0, rc-resize-observer@^1.1.0, rc-resize-observer@^1.2.0, rc-resize-observer@^1.3.1, rc-resize-observer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.4.0.tgz#7bba61e6b3c604834980647cce6451914750d0cc" - integrity sha512-PnMVyRid9JLxFavTjeDXEXo65HCRqbmLBw9xX9gfC4BZiSzbLXKzW3jPz+J0P71pLbD5tBMTT+mkstV5gD0c9Q== + version "1.4.3" + resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.4.3.tgz#4fd41fa561ba51362b5155a07c35d7c89a1ea569" + integrity sha512-YZLjUbyIWox8E9i9C3Tm7ia+W7euPItNWSPX5sCcQTYbnwDb5uNpnLHQCG1f22oZWUhLw4Mv2tFmeWe68CDQRQ== dependencies: "@babel/runtime" "^7.20.7" classnames "^2.2.1" - rc-util "^5.38.0" + rc-util "^5.44.1" resize-observer-polyfill "^1.5.1" rc-segmented@~2.2.2: @@ -8128,9 +8089,9 @@ rc-tree@~5.4.3: rc-virtual-list "^3.4.2" rc-tree@~5.8.1, rc-tree@~5.8.2: - version "5.8.2" - resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-5.8.2.tgz#ed3a3f7c56597bbeab3303407a9e1739bbf15621" - integrity sha512-xH/fcgLHWTLmrSuNphU8XAqV7CdaOQgm4KywlLGNoTMhDAcNR3GVNP6cZzb0GrKmIZ9yae+QLot/cAgUdPRMzg== + version "5.8.8" + resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-5.8.8.tgz#650a13ec825a5a4feec6bbaf6a380465986ee0db" + integrity sha512-S+mCMWo91m5AJqjz3PdzKilGgbFm7fFJRFiTDOcoRbD7UfMOPnerXwMworiga0O2XIo383UoWuEfeHs1WOltag== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" @@ -8167,7 +8128,7 @@ rc-upload@~4.5.2: classnames "^2.2.5" rc-util "^5.2.0" -rc-util@^4.19.0, rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.12.0, rc-util@^5.14.0, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.19.2, rc-util@^5.19.3, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.23.0, rc-util@^5.24.4, rc-util@^5.25.2, rc-util@^5.27.0, rc-util@^5.28.0, rc-util@^5.3.0, rc-util@^5.30.0, rc-util@^5.31.1, rc-util@^5.32.2, rc-util@^5.34.1, rc-util@^5.35.0, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.38.0, rc-util@^5.38.1, rc-util@^5.4.0, rc-util@^5.44.4, rc-util@^5.5.0, rc-util@^5.6.1, rc-util@^5.7.0, rc-util@^5.8.0, rc-util@^5.9.4: +rc-util@^4.19.0, rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.12.0, rc-util@^5.14.0, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.19.2, rc-util@^5.19.3, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.23.0, rc-util@^5.24.4, rc-util@^5.25.2, rc-util@^5.27.0, rc-util@^5.28.0, rc-util@^5.3.0, rc-util@^5.30.0, rc-util@^5.31.1, rc-util@^5.32.2, rc-util@^5.34.1, rc-util@^5.35.0, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.38.0, rc-util@^5.38.1, rc-util@^5.4.0, rc-util@^5.44.0, rc-util@^5.44.1, rc-util@^5.44.4, rc-util@^5.5.0, rc-util@^5.6.1, rc-util@^5.7.0, rc-util@^5.8.0, rc-util@^5.9.4: version "5.44.4" resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.44.4.tgz#89ee9037683cca01cd60f1a6bbda761457dd6ba5" integrity sha512-resueRJzmHG9Q6rI/DfK6Kdv9/Lfls05vzMs1Sk3M2P+3cJa+MakaZyWY8IPfehVuhPJFKrIY1IK4GqbiaiY5w== @@ -8176,9 +8137,9 @@ rc-util@^4.19.0, rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.12.0 react-is "^18.2.0" rc-virtual-list@^3.11.1, rc-virtual-list@^3.2.0, rc-virtual-list@^3.4.2, rc-virtual-list@^3.5.1, rc-virtual-list@^3.5.2: - version "3.11.3" - resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.11.3.tgz#77d4e12e20c1ba314b43c0e37e118296674c5401" - integrity sha512-tu5UtrMk/AXonHwHxUogdXAWynaXsrx1i6dsgg+lOo/KJSF8oBAcprh1z5J3xgnPJD5hXxTL58F8s8onokdt0Q== + version "3.19.2" + resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.19.2.tgz#1dd2d782c9a3ccbe537bb873447d73f83af8de0f" + integrity sha512-Ys6NcjwGkuwkeaWBDqfI3xWuZ7rDiQXlH1o2zLfFzATfEgXcqpk8CkgMfbJD81McqjcJVez25a3kPxCR807evA== dependencies: "@babel/runtime" "^7.20.0" classnames "^2.2.6" @@ -8275,10 +8236,10 @@ react-awesome-reveal@^4.2.12: react-intersection-observer "^9.10.3" react-is "^18.3.1" -react-chartjs-2@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/react-chartjs-2/-/react-chartjs-2-5.2.0.tgz#43c1e3549071c00a1a083ecbd26c1ad34d385f5d" - integrity sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA== +react-chartjs-2@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/react-chartjs-2/-/react-chartjs-2-5.3.1.tgz#2b29995ce8b07f5c95c6ea3696838569e88453aa" + integrity sha512-h5IPXKg9EXpjoBzUfyWJvllMjG2mQ4EiuHQFhms/AjUm0XSZHhyRy2xVmLXHKrtcdrPO4mnGqRtYoD0vp95A0A== react-clientside-effect@^1.2.6: version "1.2.6" @@ -8495,11 +8456,6 @@ readable-stream@^2.0.0, readable-stream@~2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -regenerator-runtime@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" - integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== - regexp.prototype.flags@^1.2.0: version "1.5.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" @@ -8611,12 +8567,7 @@ rxjs@^7.0.0: dependencies: tslib "^2.1.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== @@ -8662,10 +8613,10 @@ semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.5.4, semver@^7.7.2: - version "7.7.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" - integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== +semver@^7.7.2, semver@^7.7.4: + version "7.7.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" + integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== sentence-case@^3.0.4: version "3.0.4" @@ -8696,18 +8647,6 @@ shallowequal@^1.1.0: resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - side-channel-list@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" @@ -8753,26 +8692,26 @@ sister@^3.0.0: resolved "https://registry.yarnpkg.com/sister/-/sister-3.0.2.tgz#bb3e39f07b1f75bbe1945f29a27ff1e5a2f26be4" integrity sha512-p19rtTs+NksBRKW9qn0UhZ8/TUI9BPw9lmtHny+Y3TinWlOa9jWh9xB0AtPSdmOy49NJJJSSe0Ey4C7h0TrcYA== -size-limit@12.0.0, size-limit@^12.0.0: - version "12.0.0" - resolved "https://registry.yarnpkg.com/size-limit/-/size-limit-12.0.0.tgz#9f714026a1bae632d7516d37cb02a5e884fe3c9a" - integrity sha512-JBG8dioIs0m2kHOhs9jD6E/tZKD08vmbf2bfqj/rJyNWqJxk/ZcakixjhYtsqdbi+AKVbfPkt3g2RRZiKaizYA== +size-limit@12.1.0, size-limit@^12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/size-limit/-/size-limit-12.1.0.tgz#4e62d95773f3ea86d4dac7727fa6de8478050782" + integrity sha512-VnDS2fycANrJFVPQwjaD+h+hkISY7EB3LsPsYWje4lBCjQwwsZLxjwwRwVJKHrcj2ZqyG+DdXykWm9mbZklZrw== dependencies: bytes-iec "^3.1.1" lilconfig "^3.1.3" nanospinner "^1.2.2" picocolors "^1.1.1" - tinyglobby "^0.2.15" + tinyglobby "^0.2.16" slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slate-dom@^0.124.0: - version "0.124.0" - resolved "https://registry.yarnpkg.com/slate-dom/-/slate-dom-0.124.0.tgz#8c477be096d6e1ac631fef96cad9f00641dd6d79" - integrity sha512-dPabNlzo67xWRNFT5HtSc0M/F9mfiQSnjJAEx0Uzk7oC++WaRuBy897F+rNzfvM+zH9exMc3hsTMtM7jGDhIiQ== +slate-dom@^0.124.1: + version "0.124.1" + resolved "https://registry.yarnpkg.com/slate-dom/-/slate-dom-0.124.1.tgz#76f58a8e395c44533feba7e1841e6a4c454a0fdc" + integrity sha512-D3yVibjLZM4Oj4MmXxOEXbjrlf4wJez3OvGABBNYrAP7gXb0d96tKNtWZ0hGm/5y84idw/LHjZ7W1uTYqFR9rQ== dependencies: "@juggle/resize-observer" "^3.4.0" direction "^1.0.4" @@ -8794,10 +8733,10 @@ slate-react@^0.124.0: scroll-into-view-if-needed "^3.1.0" tiny-invariant "1.3.1" -slate@^0.124.0: - version "0.124.0" - resolved "https://registry.yarnpkg.com/slate/-/slate-0.124.0.tgz#83fe8cef72b78d40440634f207aebf671f9abc4f" - integrity sha512-yhtJ0MSV+Z63UTaZtGZDp1goO9XZb5VGER9bmwX+38yJUb7nijPkYEcxD5mpezsSLqL6NedUb4wyvoZa+HDWuQ== +slate@^0.124.1: + version "0.124.1" + resolved "https://registry.yarnpkg.com/slate/-/slate-0.124.1.tgz#e899490f71227f934d818b3e4871ae9048d79c33" + integrity sha512-ii7DwezgvbLAyKtHBIunjTR1kzbNfYLCUKLMzJELlbTZkvHzX4DzN7HKIwcakf6dPxO6AoeT/P7kHOcyTym/hA== slick-carousel@^1.8.1: version "1.8.1" @@ -8834,10 +8773,10 @@ socks@^2.8.3: ip-address "^9.0.5" smart-buffer "^4.2.0" -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== source-map-support@~0.5.20: version "0.5.21" @@ -8948,11 +8887,16 @@ stylehacks@^5.1.1: browserslist "^4.21.4" postcss-selector-parser "^6.0.4" -stylis@4.2.0, stylis@^4.0.13: +stylis@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== +stylis@^4.3.4: + version "4.3.6" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.6.tgz#7c7b97191cb4f195f03ecab7d52f7902ed378320" + integrity sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ== + sucrase@^3.20.0: version "3.29.0" resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.29.0.tgz#3207c5bc1b980fdae1e539df3f8a8a518236da7d" @@ -8999,7 +8943,7 @@ swell-js@^3.13.0: fast-case "^1.7.0" qs "^6.11.1" -swr@^1.0.0, swr@^1.2.2: +swr@^1.2.2, swr@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/swr/-/swr-1.3.0.tgz#c6531866a35b4db37b38b72c45a63171faf9f4e8" integrity sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw== @@ -9068,9 +9012,9 @@ throttle-debounce@^3.0.1: integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg== throttle-debounce@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-5.0.0.tgz#a17a4039e82a2ed38a5e7268e4132d6960d41933" - integrity sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg== + version "5.0.2" + resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-5.0.2.tgz#ec5549d84e053f043c9fd0f2a6dd892ff84456b1" + integrity sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A== through2@~2.0.3: version "2.0.5" @@ -9090,13 +9034,13 @@ tinycolor2@^1.4.2, tinycolor2@^1.6.0: resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e" integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== -tinyglobby@^0.2.15: - version "0.2.15" - resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" - integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== +tinyglobby@^0.2.16: + version "0.2.16" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.16.tgz#1c3b7eb953fce42b226bc5a1ee06428281aff3d6" + integrity sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg== dependencies: fdir "^6.5.0" - picomatch "^4.0.3" + picomatch "^4.0.4" tippy.js@^6.3.7: version "6.3.7" @@ -9120,16 +9064,11 @@ ts-interface-checker@^0.1.9: resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -tslib@2.4.0: +tslib@2.4.0, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== -tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" - integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -9283,13 +9222,6 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - window-or-global@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/window-or-global/-/window-or-global-1.0.1.tgz#dbe45ba2a291aabc56d62cf66c45b7fa322946de" diff --git a/platform/host-test/README.md b/platform/host-test/README.md index 10e2b35ffc..01a9088f21 100644 --- a/platform/host-test/README.md +++ b/platform/host-test/README.md @@ -1,3 +1,3 @@ # host-test -This is used for Cypress specs that are testing host app functionality, like host-app.spec.ts. +This is used for Playwright specs that are testing host app functionality, like host-app.spec.ts. diff --git a/platform/host-test/package.json b/platform/host-test/package.json index ca5ed181e9..305fcec98d 100644 --- a/platform/host-test/package.json +++ b/platform/host-test/package.json @@ -9,7 +9,7 @@ "lint": "next lint" }, "dependencies": { - "@plasmicapp/host": "^2.0.1", + "@plasmicapp/host": "^2.0.14", "lodash": "^4.18.1", "next": "13.5.11", "plasmicapp__host_old": "npm:@plasmicapp/host@1.0.77", @@ -18,8 +18,8 @@ }, "devDependencies": { "@types/node": "20.3.1", - "@types/react": "^18.2.12", - "@types/react-dom": "^18.2.5", + "@types/react": "^18.3.28", + "@types/react-dom": "^18.3.7", "eslint": "8.57.1", "eslint-config-next": "13.5.11", "typescript": "6.0.3" diff --git a/platform/host-test/yarn.lock b/platform/host-test/yarn.lock index d138145ea2..487c94398e 100644 --- a/platform/host-test/yarn.lock +++ b/platform/host-test/yarn.lock @@ -167,21 +167,21 @@ resolved "https://registry.yarnpkg.com/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz#3dc35ba0f1e66b403c00b39344f870298ebb1c8e" integrity sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA== -"@plasmicapp/host@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@plasmicapp/host/-/host-2.0.1.tgz#92d8d1c9c7ae1f246cb33a10e90f80e2c05557e6" - integrity sha512-ghYXBzHihKemrq7RDmwGoUQrBMMba+biMfOLZFeXCm+S9cIXNM93KCk5rEst/pkwSt4Z9KOEqGAV1tTJqg7JHQ== +"@plasmicapp/host@^2.0.14": + version "2.0.14" + resolved "https://registry.yarnpkg.com/@plasmicapp/host/-/host-2.0.14.tgz#686957ba238424a35a7eb3d110323291d497d0c5" + integrity sha512-eMRM41Z3A7tDvUF+82HaCSUOC9gFbUug2dkuB/mVuQ8y0aEtHjKgrncEAHuMBUpos6R/Akk6WVUYz7DeF41NQA== dependencies: - "@plasmicapp/query" "0.1.84" + "@plasmicapp/query" "0.1.87" csstype "^3.1.2" window-or-global "^1.0.1" -"@plasmicapp/query@0.1.84": - version "0.1.84" - resolved "https://registry.yarnpkg.com/@plasmicapp/query/-/query-0.1.84.tgz#d7ad0a411243ea972d1e88049e8f47faf9f6763b" - integrity sha512-mOgXmccl82cSSX4DMOGisCUYb9+pPSPsQqUJ0OfTkrTz+bsNbluTjIGIFwGtvQZiBXMP2c7/MGrxtqXtt/qzLw== +"@plasmicapp/query@0.1.87": + version "0.1.87" + resolved "https://registry.yarnpkg.com/@plasmicapp/query/-/query-0.1.87.tgz#5179bd931d6ee54d7bbe7f47d845e0f81ab936ea" + integrity sha512-4M4QvE9IE8DtVv/LuEruGkMLo3bPhTZIwrYpQpcaXj6FQCL2G5XdhjhcH6JzSW2LxqjhyC+2xDLlZKUAzYqpvw== dependencies: - swr "^1.0.0" + swr "^1.3.0" "@rtsao/scc@^1.1.0": version "1.1.0" @@ -222,18 +222,18 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.15.tgz#e6e5a86d602beaca71ce5163fadf5f95d70931c7" integrity sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw== -"@types/react-dom@^18.2.5": +"@types/react-dom@^18.3.7": version "18.3.7" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.7.tgz#b89ddf2cd83b4feafcc4e2ea41afdfb95a0d194f" integrity sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ== -"@types/react@^18.2.12": - version "18.3.24" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.24.tgz#f6a5a4c613242dfe3af0dcee2b4ec47b92d9b6bd" - integrity sha512-0dLEBsA1kI3OezMBF8nSsb7Nk19ZnsyE1LLhB8r27KbgU5H4pvuqZLdtE+aUkJVoXgTVuA+iLIwmZ0TuK4tx6A== +"@types/react@^18.3.28": + version "18.3.28" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.28.tgz#0a85b1a7243b4258d9f626f43797ba18eb5f8781" + integrity sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw== dependencies: "@types/prop-types" "*" - csstype "^3.0.2" + csstype "^3.2.2" "@typescript-eslint/parser@^5.4.2 || ^6.0.0": version "6.21.0" @@ -657,11 +657,16 @@ cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" -csstype@^3.0.2, csstype@^3.1.2: +csstype@^3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== +csstype@^3.2.2: + version "3.2.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.2.3.tgz#ec48c0f3e993e50648c86da559e2610995cf989a" + integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ== + damerau-levenshtein@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" @@ -2365,7 +2370,7 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -swr@^1.0.0: +swr@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/swr/-/swr-1.3.0.tgz#c6531866a35b4db37b38b72c45a63171faf9f4e8" integrity sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw== diff --git a/platform/integration-tests/README.md b/platform/integration-tests/README.md index 1198f12927..78e4e68380 100644 --- a/platform/integration-tests/README.md +++ b/platform/integration-tests/README.md @@ -6,12 +6,12 @@ Contains integration tests between our public packages and the server. Run them Jenkins runs the tests using Docker. To run them with the same setup (that's useful to debug when tests are not passing CI), run: - $ docker build --no-cache --build-arg PLASMIC_AUTH_USER=testing@plasmic.app --build-arg PLASMIC_AUTH_TOKEN=OfjA0Py2vZrBwkzOozYNGSK3zMHwWevKXTv8ZgAjXmlxQLUjuJ9KsVdQFB6lqM7Atq3IdqWPxrVIYZLA -t integration-tests . - $ docker run --rm integration-tests +$ docker build --no-cache --build-arg PLASMIC_AUTH_USER=testing@plasmic.app --build-arg PLASMIC_AUTH_TOKEN=OfjA0Py2vZrBwkzOozYNGSK3zMHwWevKXTv8ZgAjXmlxQLUjuJ9KsVdQFB6lqM7Atq3IdqWPxrVIYZLA -t integration-tests . +$ docker run --rm integration-tests ## Dev notes -Tests are written using Jest. For tests that interacts with the UI we have Cypress, which is used as a Node module. See some of the tests for examples. +Tests are written using Jest. See some of the tests for examples. Testing user: testing@plasmic.app Testing project: https://studio.plasmic.app/projects/jrK3EHVDvsuNrYohN5Dhrt diff --git a/platform/integration-tests/package.json b/platform/integration-tests/package.json index c79f306b89..fea4037fe6 100644 --- a/platform/integration-tests/package.json +++ b/platform/integration-tests/package.json @@ -12,8 +12,8 @@ "execa": "^5.0.0" }, "devDependencies": { - "@babel/preset-env": "^7.12.16", - "@babel/preset-typescript": "^7.12.16", + "@babel/preset-env": "^7.29.2", + "@babel/preset-typescript": "^7.28.5", "@types/jest": "^27.0.1", "@types/node": "^14.14.28", "@types/tmp": "^0.2.0", diff --git a/platform/integration-tests/src/create-plasmic-app.spec.ts b/platform/integration-tests/src/create-plasmic-app.spec.ts index 3fde05c312..8207c7ea13 100644 --- a/platform/integration-tests/src/create-plasmic-app.spec.ts +++ b/platform/integration-tests/src/create-plasmic-app.spec.ts @@ -8,87 +8,69 @@ const PROJECT_NAME = "my-app"; /* * The tests in this suite can sometimes take a lot of time, but they may also fall back - * to interactive mode. The timeout is catch these interactive cases sooner. + * to interactive mode. The timeout is set to catch these interactive cases sooner. */ const TESTS_TIMEOUT_IN_MS = 7 * 60 * 1000; // 7 minutes. -describe("create-plasmic-app", () => { - let dir: utils.TmpDir; - beforeEach(() => (dir = utils.getTempDir())); - afterEach(() => dir.removeCallback()); - it( - "nextjs codegen javascript", - async () => { - const appDir = path.join(dir.name, PROJECT_NAME); - console.log("Codegen output dir", appDir); - - const command = `npx create-plasmic-app@latest ${PROJECT_NAME} --typescript false --platform=nextjs --scheme=codegen --appDir=no --projectId=${PLASMIC_PROJECT_ID} --projectApiToken=${PLASMIC_PROJECT_API_TOKEN}`; - await utils.runCommand(command, { dir: dir.name }); - await utils.runCommand(`npm run build`, { dir: appDir }); - }, - TESTS_TIMEOUT_IN_MS - ); +interface TestCase { + platform: "nextjs" | "gatsby" | "react" | "tanstack"; + scheme: "codegen" | "loader"; + ts: boolean; + appDir?: boolean; +} - it( - "nextjs codegen typescript", - async () => { - const appDir = path.join(dir.name, PROJECT_NAME); - console.log("Codegen output dir", appDir); +function caseName(c: TestCase): string { + const lang = c.ts ? "typescript" : "javascript"; + let router = ""; + if (c.appDir !== undefined) { + router = c.appDir ? " app router" : " pages router"; + } + return `${c.platform} ${c.scheme} ${lang}${router}`; +} - const command = `npx create-plasmic-app@latest ${PROJECT_NAME} --typescript --platform=nextjs --scheme=codegen --appDir=no --projectId=${PLASMIC_PROJECT_ID} --projectApiToken=${PLASMIC_PROJECT_API_TOKEN}`; - await utils.runCommand(command, { dir: dir.name }); - await utils.runCommand(`npm run build`, { dir: appDir }); - }, - TESTS_TIMEOUT_IN_MS - ); +function buildCommand(c: TestCase): string { + const flags = [ + `--typescript=${c.ts}`, + `--platform=${c.platform}`, + `--scheme=${c.scheme}`, + ...(c.appDir !== undefined ? [`--appDir=${c.appDir}`] : []), + `--projectId=${PLASMIC_PROJECT_ID}`, + `--projectApiToken=${PLASMIC_PROJECT_API_TOKEN}`, + ]; + return `npx create-plasmic-app@latest ${PROJECT_NAME} ${flags.join(" ")}`; +} - it( - "nextjs loader javascript", - async () => { - const appDir = path.join(dir.name, PROJECT_NAME); - console.log("Codegen output dir", appDir); +const cases = ( + [ + { platform: "nextjs", scheme: "codegen", ts: false, appDir: false }, + { platform: "nextjs", scheme: "codegen", ts: false, appDir: true }, + { platform: "nextjs", scheme: "codegen", ts: true, appDir: false }, + { platform: "nextjs", scheme: "codegen", ts: true, appDir: true }, + { platform: "nextjs", scheme: "loader", ts: false, appDir: false }, + { platform: "nextjs", scheme: "loader", ts: false, appDir: true }, + { platform: "nextjs", scheme: "loader", ts: true, appDir: false }, + { platform: "nextjs", scheme: "loader", ts: true, appDir: true }, + { platform: "gatsby", scheme: "codegen", ts: false }, + { platform: "gatsby", scheme: "codegen", ts: true }, + { platform: "gatsby", scheme: "loader", ts: false }, + { platform: "gatsby", scheme: "loader", ts: true }, + { platform: "react", scheme: "codegen", ts: false }, + { platform: "react", scheme: "codegen", ts: true }, + { platform: "tanstack", scheme: "codegen", ts: true }, + ] as TestCase[] +).map((c) => ({ ...c, name: caseName(c) })); - const command = `npx create-plasmic-app@latest ${PROJECT_NAME} --typescript false --platform=nextjs --scheme=loader --appDir=no --projectId=${PLASMIC_PROJECT_ID} --projectApiToken=${PLASMIC_PROJECT_API_TOKEN}`; - await utils.runCommand(command, { dir: dir.name }); - await utils.runCommand(`npm run build`, { dir: appDir }); - }, - TESTS_TIMEOUT_IN_MS - ); - - it( - "nextjs loader typescript", - async () => { - const appDir = path.join(dir.name, PROJECT_NAME); - console.log("Codegen output dir", appDir); - - const command = `npx create-plasmic-app@latest ${PROJECT_NAME} --typescript --platform=nextjs --scheme=loader --appDir=no --projectId=${PLASMIC_PROJECT_ID} --projectApiToken=${PLASMIC_PROJECT_API_TOKEN}`; - await utils.runCommand(command, { dir: dir.name }); - await utils.runCommand(`npm run build`, { dir: appDir }); - }, - TESTS_TIMEOUT_IN_MS - ); - - it( - "react codegen javascript", - async () => { - const appDir = path.join(dir.name, PROJECT_NAME); - console.log("Codegen output dir", appDir); - - const command = `npx create-plasmic-app@latest ${PROJECT_NAME} --typescript false --platform=react --scheme=codegen --projectId=${PLASMIC_PROJECT_ID} --projectApiToken=${PLASMIC_PROJECT_API_TOKEN}`; - await utils.runCommand(command, { dir: dir.name }); - await utils.runCommand(`npm run build`, { dir: appDir }); - }, - TESTS_TIMEOUT_IN_MS - ); +describe("create-plasmic-app", () => { + let dir: utils.TmpDir; + beforeEach(() => (dir = utils.getTempDir())); + afterEach(() => dir.removeCallback()); - it( - "react codegen typescript", - async () => { + it.each(cases)( + "$name", + async (c) => { const appDir = path.join(dir.name, PROJECT_NAME); - console.log("Codegen output dir", appDir); - - const command = `npx create-plasmic-app@latest ${PROJECT_NAME} --typescript --platform=react --scheme=codegen --projectId=${PLASMIC_PROJECT_ID} --projectApiToken=${PLASMIC_PROJECT_API_TOKEN}`; - await utils.runCommand(command, { dir: dir.name }); + console.log("Output dir", appDir); + await utils.runCommand(buildCommand(c), { dir: dir.name }); await utils.runCommand(`npm run build`, { dir: appDir }); }, TESTS_TIMEOUT_IN_MS diff --git a/platform/integration-tests/yarn.lock b/platform/integration-tests/yarn.lock index 7c3f536d05..4b7594dbb2 100644 --- a/platform/integration-tests/yarn.lock +++ b/platform/integration-tests/yarn.lock @@ -2,19 +2,19 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" - integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.27.1", "@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c" + integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== dependencies: - "@babel/helper-validator-identifier" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" js-tokens "^4.0.0" picocolors "^1.1.1" -"@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.0": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.4.tgz#96fdf1af1b8859c8474ab39c295312bfb7c24b04" - integrity sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw== +"@babel/compat-data@^7.28.6", "@babel/compat-data@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d" + integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg== "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.28.4" @@ -37,13 +37,13 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.28.3", "@babel/generator@^7.7.2": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.3.tgz#9626c1741c650cbac39121694a0f2d7451b8ef3e" - integrity sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw== +"@babel/generator@^7.28.3", "@babel/generator@^7.29.0", "@babel/generator@^7.7.2": + version "7.29.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50" + integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw== dependencies: - "@babel/parser" "^7.28.3" - "@babel/types" "^7.28.2" + "@babel/parser" "^7.29.0" + "@babel/types" "^7.29.0" "@jridgewell/gen-mapping" "^0.3.12" "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" @@ -55,79 +55,79 @@ dependencies: "@babel/types" "^7.27.3" -"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" - integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== +"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2", "@babel/helper-compilation-targets@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25" + integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA== dependencies: - "@babel/compat-data" "^7.27.2" + "@babel/compat-data" "^7.28.6" "@babel/helper-validator-option" "^7.27.1" browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.27.1", "@babel/helper-create-class-features-plugin@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz#3e747434ea007910c320c4d39a6b46f20f371d46" - integrity sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg== +"@babel/helper-create-class-features-plugin@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz#611ff5482da9ef0db6291bcd24303400bca170fb" + integrity sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow== dependencies: "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-member-expression-to-functions" "^7.28.5" "@babel/helper-optimise-call-expression" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" + "@babel/helper-replace-supers" "^7.28.6" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/traverse" "^7.28.3" + "@babel/traverse" "^7.28.6" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz#05b0882d97ba1d4d03519e4bce615d70afa18c53" - integrity sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1", "@babel/helper-create-regexp-features-plugin@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz#7c1ddd64b2065c7f78034b25b43346a7e19ed997" + integrity sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - regexpu-core "^6.2.0" + "@babel/helper-annotate-as-pure" "^7.27.3" + regexpu-core "^6.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.6.5": - version "0.6.5" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz#742ccf1cb003c07b48859fc9fa2c1bbe40e5f753" - integrity sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg== +"@babel/helper-define-polyfill-provider@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz#cf1e4462b613f2b54c41e6ff758d5dfcaa2c85d1" + integrity sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA== dependencies: - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" - debug "^4.4.1" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + debug "^4.4.3" lodash.debounce "^4.0.8" - resolve "^1.22.10" + resolve "^1.22.11" "@babel/helper-globals@^7.28.0": version "7.28.0" resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== -"@babel/helper-member-expression-to-functions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44" - integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA== +"@babel/helper-member-expression-to-functions@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz#f3e07a10be37ed7a63461c63e6929575945a6150" + integrity sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg== dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" + "@babel/traverse" "^7.28.5" + "@babel/types" "^7.28.5" -"@babel/helper-module-imports@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" - integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== +"@babel/helper-module-imports@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c" + integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw== dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" + "@babel/traverse" "^7.28.6" + "@babel/types" "^7.28.6" -"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz#a2b37d3da3b2344fe085dab234426f2b9a2fa5f6" - integrity sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw== +"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.3", "@babel/helper-module-transforms@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e" + integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@babel/traverse" "^7.28.3" + "@babel/helper-module-imports" "^7.28.6" + "@babel/helper-validator-identifier" "^7.28.5" + "@babel/traverse" "^7.28.6" "@babel/helper-optimise-call-expression@^7.27.1": version "7.27.1" @@ -136,10 +136,10 @@ dependencies: "@babel/types" "^7.27.1" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" - integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.28.6", "@babel/helper-plugin-utils@^7.8.0": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz#6f13ea251b68c8532e985fd532f28741a8af9ac8" + integrity sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug== "@babel/helper-remap-async-to-generator@^7.27.1": version "7.27.1" @@ -150,14 +150,14 @@ "@babel/helper-wrap-function" "^7.27.1" "@babel/traverse" "^7.27.1" -"@babel/helper-replace-supers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0" - integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== +"@babel/helper-replace-supers@^7.27.1", "@babel/helper-replace-supers@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz#94aa9a1d7423a00aead3f204f78834ce7d53fe44" + integrity sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg== dependencies: - "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-member-expression-to-functions" "^7.28.5" "@babel/helper-optimise-call-expression" "^7.27.1" - "@babel/traverse" "^7.27.1" + "@babel/traverse" "^7.28.6" "@babel/helper-skip-transparent-expression-wrappers@^7.27.1": version "7.27.1" @@ -172,10 +172,10 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" - integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== +"@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== "@babel/helper-validator-option@^7.27.1": version "7.27.1" @@ -199,20 +199,20 @@ "@babel/template" "^7.27.2" "@babel/types" "^7.28.4" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.27.2", "@babel/parser@^7.28.3", "@babel/parser@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.4.tgz#da25d4643532890932cc03f7705fe19637e03fa8" - integrity sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.28.4", "@babel/parser@^7.28.6", "@babel/parser@^7.29.0": + version "7.29.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.2.tgz#58bd50b9a7951d134988a1ae177a35ef9a703ba1" + integrity sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA== dependencies: - "@babel/types" "^7.28.4" + "@babel/types" "^7.29.0" -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz#61dd8a8e61f7eb568268d1b5f129da3eee364bf9" - integrity sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz#fbde57974707bbfa0376d34d425ff4fa6c732421" + integrity sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q== dependencies: "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.27.1" + "@babel/traverse" "^7.28.5" "@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1": version "7.27.1" @@ -237,13 +237,13 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" "@babel/plugin-transform-optional-chaining" "^7.27.1" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz#373f6e2de0016f73caf8f27004f61d167743742a" - integrity sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz#0e8289cec28baaf05d54fd08d81ae3676065f69f" + integrity sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.28.3" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/traverse" "^7.28.6" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" @@ -278,19 +278,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-import-assertions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd" - integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg== +"@babel/plugin-syntax-import-assertions@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz#ae9bc1923a6ba527b70104dd2191b0cd872c8507" + integrity sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07" - integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== +"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz#b71d5914665f60124e133696f17cd7669062c503" + integrity sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" @@ -369,12 +369,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.27.1", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18" - integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== +"@babel/plugin-syntax-typescript@^7.28.6", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz#c7b2ddf1d0a811145b1de800d1abd146af92e3a2" + integrity sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" @@ -391,22 +391,22 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-async-generator-functions@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz#1276e6c7285ab2cd1eccb0bc7356b7a69ff842c2" - integrity sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q== +"@babel/plugin-transform-async-generator-functions@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz#63ed829820298f0bf143d5a4a68fb8c06ffd742f" + integrity sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-remap-async-to-generator" "^7.27.1" - "@babel/traverse" "^7.28.0" + "@babel/traverse" "^7.29.0" -"@babel/plugin-transform-async-to-generator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz#9a93893b9379b39466c74474f55af03de78c66e7" - integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA== +"@babel/plugin-transform-async-to-generator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz#bd97b42237b2d1bc90d74bcb486c39be5b4d7e77" + integrity sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g== dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-imports" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-remap-async-to-generator" "^7.27.1" "@babel/plugin-transform-block-scoped-functions@^7.27.1": @@ -416,64 +416,64 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-block-scoping@^7.28.0": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.4.tgz#e19ac4ddb8b7858bac1fd5c1be98a994d9726410" - integrity sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A== +"@babel/plugin-transform-block-scoping@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz#e1ef5633448c24e76346125c2534eeb359699a99" + integrity sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-class-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz#dd40a6a370dfd49d32362ae206ddaf2bb082a925" - integrity sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA== +"@babel/plugin-transform-class-properties@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz#d274a4478b6e782d9ea987fda09bdb6d28d66b72" + integrity sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-class-static-block@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz#d1b8e69b54c9993bc558203e1f49bfc979bfd852" - integrity sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg== +"@babel/plugin-transform-class-static-block@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz#1257491e8259c6d125ac4d9a6f39f9d2bf3dba70" + integrity sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.28.3" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-classes@^7.28.3": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz#75d66175486788c56728a73424d67cbc7473495c" - integrity sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA== +"@babel/plugin-transform-classes@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz#8f6fb79ba3703978e701ce2a97e373aae7dda4b7" + integrity sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q== dependencies: "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-compilation-targets" "^7.28.6" "@babel/helper-globals" "^7.28.0" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" - "@babel/traverse" "^7.28.4" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-replace-supers" "^7.28.6" + "@babel/traverse" "^7.28.6" -"@babel/plugin-transform-computed-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz#81662e78bf5e734a97982c2b7f0a793288ef3caa" - integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw== +"@babel/plugin-transform-computed-properties@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz#936824fc71c26cb5c433485776d79c8e7b0202d2" + integrity sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/template" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/template" "^7.28.6" -"@babel/plugin-transform-destructuring@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz#0f156588f69c596089b7d5b06f5af83d9aa7f97a" - integrity sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A== +"@babel/plugin-transform-destructuring@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz#b8402764df96179a2070bb7b501a1586cf8ad7a7" + integrity sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw== dependencies: "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.28.0" + "@babel/traverse" "^7.28.5" -"@babel/plugin-transform-dotall-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz#aa6821de864c528b1fecf286f0a174e38e826f4d" - integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw== +"@babel/plugin-transform-dotall-regex@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz#def31ed84e0fb6e25c71e53c124e7b76a4ab8e61" + integrity sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-duplicate-keys@^7.27.1": version "7.27.1" @@ -482,13 +482,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz#5043854ca620a94149372e69030ff8cb6a9eb0ec" - integrity sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz#8014b8a6cfd0e7b92762724443bf0d2400f26df1" + integrity sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-dynamic-import@^7.27.1": version "7.27.1" @@ -497,20 +497,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-explicit-resource-management@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz#45be6211b778dbf4b9d54c4e8a2b42fa72e09a1a" - integrity sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ== +"@babel/plugin-transform-explicit-resource-management@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz#dd6788f982c8b77e86779d1d029591e39d9d8be7" + integrity sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/plugin-transform-destructuring" "^7.28.5" -"@babel/plugin-transform-exponentiation-operator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz#fc497b12d8277e559747f5a3ed868dd8064f83e1" - integrity sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ== +"@babel/plugin-transform-exponentiation-operator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz#5e477eb7eafaf2ab5537a04aaafcf37e2d7f1091" + integrity sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-export-namespace-from@^7.27.1": version "7.27.1" @@ -536,12 +536,12 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/traverse" "^7.27.1" -"@babel/plugin-transform-json-strings@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz#a2e0ce6ef256376bd527f290da023983527a4f4c" - integrity sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q== +"@babel/plugin-transform-json-strings@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz#4c8c15b2dc49e285d110a4cf3dac52fd2dfc3038" + integrity sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-literals@^7.27.1": version "7.27.1" @@ -550,12 +550,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-logical-assignment-operators@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz#890cb20e0270e0e5bebe3f025b434841c32d5baa" - integrity sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw== +"@babel/plugin-transform-logical-assignment-operators@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz#53028a3d77e33c50ef30a8fce5ca17065936e605" + integrity sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-member-expression-literals@^7.27.1": version "7.27.1" @@ -572,23 +572,23 @@ "@babel/helper-module-transforms" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-commonjs@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832" - integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== +"@babel/plugin-transform-modules-commonjs@^7.27.1", "@babel/plugin-transform-modules-commonjs@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz#c0232e0dfe66a734cc4ad0d5e75fc3321b6fdef1" + integrity sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA== dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-modules-systemjs@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz#00e05b61863070d0f3292a00126c16c0e024c4ed" - integrity sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA== +"@babel/plugin-transform-modules-systemjs@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz#e458a95a17807c415924106a3ff188a3b8dee964" + integrity sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ== dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@babel/traverse" "^7.27.1" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-validator-identifier" "^7.28.5" + "@babel/traverse" "^7.29.0" "@babel/plugin-transform-modules-umd@^7.27.1": version "7.27.1" @@ -598,13 +598,13 @@ "@babel/helper-module-transforms" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-named-capturing-groups-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1" - integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng== +"@babel/plugin-transform-named-capturing-groups-regex@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz#a26cd51e09c4718588fc4cce1c5d1c0152102d6a" + integrity sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-new-target@^7.27.1": version "7.27.1" @@ -613,30 +613,30 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-nullish-coalescing-operator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz#4f9d3153bf6782d73dd42785a9d22d03197bc91d" - integrity sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA== +"@babel/plugin-transform-nullish-coalescing-operator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz#9bc62096e90ab7a887f3ca9c469f6adec5679757" + integrity sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-numeric-separator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz#614e0b15cc800e5997dadd9bd6ea524ed6c819c6" - integrity sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw== +"@babel/plugin-transform-numeric-separator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz#1310b0292762e7a4a335df5f580c3320ee7d9e9f" + integrity sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-object-rest-spread@^7.28.0": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz#9ee1ceca80b3e6c4bac9247b2149e36958f7f98d" - integrity sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew== +"@babel/plugin-transform-object-rest-spread@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz#fdd4bc2d72480db6ca42aed5c051f148d7b067f7" + integrity sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA== dependencies: - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/plugin-transform-destructuring" "^7.28.5" "@babel/plugin-transform-parameters" "^7.27.7" - "@babel/traverse" "^7.28.4" + "@babel/traverse" "^7.28.6" "@babel/plugin-transform-object-super@^7.27.1": version "7.27.1" @@ -646,19 +646,19 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/helper-replace-supers" "^7.27.1" -"@babel/plugin-transform-optional-catch-binding@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz#84c7341ebde35ccd36b137e9e45866825072a30c" - integrity sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q== +"@babel/plugin-transform-optional-catch-binding@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz#75107be14c78385978201a49c86414a150a20b4c" + integrity sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-optional-chaining@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz#874ce3c4f06b7780592e946026eb76a32830454f" - integrity sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg== +"@babel/plugin-transform-optional-chaining@^7.27.1", "@babel/plugin-transform-optional-chaining@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz#926cf150bd421fc8362753e911b4a1b1ce4356cd" + integrity sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" "@babel/plugin-transform-parameters@^7.27.7": @@ -668,22 +668,22 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-private-methods@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz#fdacbab1c5ed81ec70dfdbb8b213d65da148b6af" - integrity sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA== +"@babel/plugin-transform-private-methods@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz#c76fbfef3b86c775db7f7c106fff544610bdb411" + integrity sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-private-property-in-object@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz#4dbbef283b5b2f01a21e81e299f76e35f900fb11" - integrity sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ== +"@babel/plugin-transform-private-property-in-object@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz#4fafef1e13129d79f1d75ac180c52aafefdb2811" + integrity sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-property-literals@^7.27.1": version "7.27.1" @@ -692,20 +692,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-regenerator@^7.28.3": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz#9d3fa3bebb48ddd0091ce5729139cd99c67cea51" - integrity sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA== +"@babel/plugin-transform-regenerator@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz#dec237cec1b93330876d6da9992c4abd42c9d18b" + integrity sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-regexp-modifiers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz#df9ba5577c974e3f1449888b70b76169998a6d09" - integrity sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA== +"@babel/plugin-transform-regexp-modifiers@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz#7ef0163bd8b4a610481b2509c58cf217f065290b" + integrity sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-reserved-words@^7.27.1": version "7.27.1" @@ -721,12 +721,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-spread@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz#1a264d5fc12750918f50e3fe3e24e437178abb08" - integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q== +"@babel/plugin-transform-spread@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz#40a2b423f6db7b70f043ad027a58bcb44a9757b6" + integrity sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" "@babel/plugin-transform-sticky-regex@^7.27.1": @@ -750,16 +750,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-typescript@^7.27.1": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz#796cbd249ab56c18168b49e3e1d341b72af04a6b" - integrity sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg== +"@babel/plugin-transform-typescript@^7.28.5": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz#1e93d96da8adbefdfdade1d4956f73afa201a158" + integrity sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw== dependencies: "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/plugin-syntax-typescript" "^7.27.1" + "@babel/plugin-syntax-typescript" "^7.28.6" "@babel/plugin-transform-unicode-escapes@^7.27.1": version "7.27.1" @@ -768,13 +768,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-property-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz#bdfe2d3170c78c5691a3c3be934c8c0087525956" - integrity sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q== +"@babel/plugin-transform-unicode-property-regex@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz#63a7a6c21a0e75dae9b1861454111ea5caa22821" + integrity sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-unicode-regex@^7.27.1": version "7.27.1" @@ -784,88 +784,88 @@ "@babel/helper-create-regexp-features-plugin" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-sets-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz#6ab706d10f801b5c72da8bb2548561fa04193cd1" - integrity sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw== +"@babel/plugin-transform-unicode-sets-regex@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz#924912914e5df9fe615ec472f88ff4788ce04d4e" + integrity sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/preset-env@^7.12.16": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.3.tgz#2b18d9aff9e69643789057ae4b942b1654f88187" - integrity sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg== +"@babel/preset-env@^7.29.2": + version "7.29.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.29.2.tgz#5a173f22c7d8df362af1c9fe31facd320de4a86c" + integrity sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw== dependencies: - "@babel/compat-data" "^7.28.0" - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/compat-data" "^7.29.0" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.27.1" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.28.5" "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.28.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.28.6" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions" "^7.27.1" - "@babel/plugin-syntax-import-attributes" "^7.27.1" + "@babel/plugin-syntax-import-assertions" "^7.28.6" + "@babel/plugin-syntax-import-attributes" "^7.28.6" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.27.1" - "@babel/plugin-transform-async-generator-functions" "^7.28.0" - "@babel/plugin-transform-async-to-generator" "^7.27.1" + "@babel/plugin-transform-async-generator-functions" "^7.29.0" + "@babel/plugin-transform-async-to-generator" "^7.28.6" "@babel/plugin-transform-block-scoped-functions" "^7.27.1" - "@babel/plugin-transform-block-scoping" "^7.28.0" - "@babel/plugin-transform-class-properties" "^7.27.1" - "@babel/plugin-transform-class-static-block" "^7.28.3" - "@babel/plugin-transform-classes" "^7.28.3" - "@babel/plugin-transform-computed-properties" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" - "@babel/plugin-transform-dotall-regex" "^7.27.1" + "@babel/plugin-transform-block-scoping" "^7.28.6" + "@babel/plugin-transform-class-properties" "^7.28.6" + "@babel/plugin-transform-class-static-block" "^7.28.6" + "@babel/plugin-transform-classes" "^7.28.6" + "@babel/plugin-transform-computed-properties" "^7.28.6" + "@babel/plugin-transform-destructuring" "^7.28.5" + "@babel/plugin-transform-dotall-regex" "^7.28.6" "@babel/plugin-transform-duplicate-keys" "^7.27.1" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.29.0" "@babel/plugin-transform-dynamic-import" "^7.27.1" - "@babel/plugin-transform-explicit-resource-management" "^7.28.0" - "@babel/plugin-transform-exponentiation-operator" "^7.27.1" + "@babel/plugin-transform-explicit-resource-management" "^7.28.6" + "@babel/plugin-transform-exponentiation-operator" "^7.28.6" "@babel/plugin-transform-export-namespace-from" "^7.27.1" "@babel/plugin-transform-for-of" "^7.27.1" "@babel/plugin-transform-function-name" "^7.27.1" - "@babel/plugin-transform-json-strings" "^7.27.1" + "@babel/plugin-transform-json-strings" "^7.28.6" "@babel/plugin-transform-literals" "^7.27.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.27.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.28.6" "@babel/plugin-transform-member-expression-literals" "^7.27.1" "@babel/plugin-transform-modules-amd" "^7.27.1" - "@babel/plugin-transform-modules-commonjs" "^7.27.1" - "@babel/plugin-transform-modules-systemjs" "^7.27.1" + "@babel/plugin-transform-modules-commonjs" "^7.28.6" + "@babel/plugin-transform-modules-systemjs" "^7.29.0" "@babel/plugin-transform-modules-umd" "^7.27.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.29.0" "@babel/plugin-transform-new-target" "^7.27.1" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.27.1" - "@babel/plugin-transform-numeric-separator" "^7.27.1" - "@babel/plugin-transform-object-rest-spread" "^7.28.0" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.28.6" + "@babel/plugin-transform-numeric-separator" "^7.28.6" + "@babel/plugin-transform-object-rest-spread" "^7.28.6" "@babel/plugin-transform-object-super" "^7.27.1" - "@babel/plugin-transform-optional-catch-binding" "^7.27.1" - "@babel/plugin-transform-optional-chaining" "^7.27.1" + "@babel/plugin-transform-optional-catch-binding" "^7.28.6" + "@babel/plugin-transform-optional-chaining" "^7.28.6" "@babel/plugin-transform-parameters" "^7.27.7" - "@babel/plugin-transform-private-methods" "^7.27.1" - "@babel/plugin-transform-private-property-in-object" "^7.27.1" + "@babel/plugin-transform-private-methods" "^7.28.6" + "@babel/plugin-transform-private-property-in-object" "^7.28.6" "@babel/plugin-transform-property-literals" "^7.27.1" - "@babel/plugin-transform-regenerator" "^7.28.3" - "@babel/plugin-transform-regexp-modifiers" "^7.27.1" + "@babel/plugin-transform-regenerator" "^7.29.0" + "@babel/plugin-transform-regexp-modifiers" "^7.28.6" "@babel/plugin-transform-reserved-words" "^7.27.1" "@babel/plugin-transform-shorthand-properties" "^7.27.1" - "@babel/plugin-transform-spread" "^7.27.1" + "@babel/plugin-transform-spread" "^7.28.6" "@babel/plugin-transform-sticky-regex" "^7.27.1" "@babel/plugin-transform-template-literals" "^7.27.1" "@babel/plugin-transform-typeof-symbol" "^7.27.1" "@babel/plugin-transform-unicode-escapes" "^7.27.1" - "@babel/plugin-transform-unicode-property-regex" "^7.27.1" + "@babel/plugin-transform-unicode-property-regex" "^7.28.6" "@babel/plugin-transform-unicode-regex" "^7.27.1" - "@babel/plugin-transform-unicode-sets-regex" "^7.27.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.28.6" "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.14" - babel-plugin-polyfill-corejs3 "^0.13.0" - babel-plugin-polyfill-regenerator "^0.6.5" - core-js-compat "^3.43.0" + babel-plugin-polyfill-corejs2 "^0.4.15" + babel-plugin-polyfill-corejs3 "^0.14.0" + babel-plugin-polyfill-regenerator "^0.6.6" + core-js-compat "^3.48.0" semver "^6.3.1" "@babel/preset-modules@0.1.6-no-external-plugins": @@ -877,46 +877,46 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-typescript@^7.12.16": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz#190742a6428d282306648a55b0529b561484f912" - integrity sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ== +"@babel/preset-typescript@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz#540359efa3028236958466342967522fd8f2a60c" + integrity sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g== dependencies: "@babel/helper-plugin-utils" "^7.27.1" "@babel/helper-validator-option" "^7.27.1" "@babel/plugin-syntax-jsx" "^7.27.1" "@babel/plugin-transform-modules-commonjs" "^7.27.1" - "@babel/plugin-transform-typescript" "^7.27.1" + "@babel/plugin-transform-typescript" "^7.28.5" -"@babel/template@^7.27.1", "@babel/template@^7.27.2", "@babel/template@^7.3.3": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" - integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== +"@babel/template@^7.27.2", "@babel/template@^7.28.6", "@babel/template@^7.3.3": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57" + integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/parser" "^7.27.2" - "@babel/types" "^7.27.1" + "@babel/code-frame" "^7.28.6" + "@babel/parser" "^7.28.6" + "@babel/types" "^7.28.6" -"@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4", "@babel/traverse@^7.7.2": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.4.tgz#8d456101b96ab175d487249f60680221692b958b" - integrity sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ== +"@babel/traverse@^7.27.1", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4", "@babel/traverse@^7.28.5", "@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0", "@babel/traverse@^7.7.2": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a" + integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.3" + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.28.4" - "@babel/template" "^7.27.2" - "@babel/types" "^7.28.4" + "@babel/parser" "^7.29.0" + "@babel/template" "^7.28.6" + "@babel/types" "^7.29.0" debug "^4.3.1" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.4.tgz#0a4e618f4c60a7cd6c11cb2d48060e4dbe38ac3a" - integrity sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.28.5", "@babel/types@^7.28.6", "@babel/types@^7.29.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" + integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== dependencies: "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" @@ -1228,14 +1228,7 @@ jest-matcher-utils "^27.0.0" pretty-format "^27.0.0" -"@types/node@*": - version "24.6.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-24.6.2.tgz#59b99878b6fed17e698e7d09e51c729c5877736a" - integrity sha512-d2L25Y4j+W3ZlNAeMKcy7yDsK425ibcAOO2t7aPTz6gNMH0z2GThtwENCDc0d/Pw9wgyRqE5Px1wkV7naz8ang== - dependencies: - undici-types "~7.13.0" - -"@types/node@^14.14.28": +"@types/node@*", "@types/node@^14.14.28": version "14.18.63" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.63.tgz#1788fa8da838dbb5f9ea994b834278205db6ca2b" integrity sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ== @@ -1381,29 +1374,29 @@ babel-plugin-jest-hoist@^27.5.1: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-plugin-polyfill-corejs2@^0.4.14: - version "0.4.14" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz#8101b82b769c568835611542488d463395c2ef8f" - integrity sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg== +babel-plugin-polyfill-corejs2@^0.4.15: + version "0.4.17" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz#198f970f1c99a856b466d1187e88ce30bd199d91" + integrity sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w== dependencies: - "@babel/compat-data" "^7.27.7" - "@babel/helper-define-polyfill-provider" "^0.6.5" + "@babel/compat-data" "^7.28.6" + "@babel/helper-define-polyfill-provider" "^0.6.8" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz#bb7f6aeef7addff17f7602a08a6d19a128c30164" - integrity sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A== +babel-plugin-polyfill-corejs3@^0.14.0: + version "0.14.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz#6ac08d2f312affb70c4c69c0fbba4cb417ee5587" + integrity sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.5" - core-js-compat "^3.43.0" + "@babel/helper-define-polyfill-provider" "^0.6.8" + core-js-compat "^3.48.0" -babel-plugin-polyfill-regenerator@^0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz#32752e38ab6f6767b92650347bf26a31b16ae8c5" - integrity sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg== +babel-plugin-polyfill-regenerator@^0.6.6: + version "0.6.8" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz#8a6bfd5dd54239362b3d06ce47ac52b2d95d7721" + integrity sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.5" + "@babel/helper-define-polyfill-provider" "^0.6.8" babel-preset-current-node-syntax@^1.0.0: version "1.2.0" @@ -1439,10 +1432,10 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -baseline-browser-mapping@^2.8.9: - version "2.8.10" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.10.tgz#32eb5e253d633fa3fa3ffb1685fabf41680d9e8a" - integrity sha512-uLfgBi+7IBNay8ECBO2mVMGZAc1VgZWEChxm4lv+TobGdG82LnXMjuNGo/BSSZZL4UmkWhxEHP2f5ziLNwGWMA== +baseline-browser-mapping@^2.10.12: + version "2.10.18" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.18.tgz#565745085ba7743af7d4072707ad132db3a5a42f" + integrity sha512-VSnGQAOLtP5mib/DPyg2/t+Tlv65NTBz83BJBJvmLVHHuKJVaDOBvJJykiT5TR++em5nfAySPccDZDa4oSrn8A== brace-expansion@^1.1.7: version "1.1.12" @@ -1464,16 +1457,16 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.24.0, browserslist@^4.25.3: - version "4.26.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.26.3.tgz#40fbfe2d1cd420281ce5b1caa8840049c79afb56" - integrity sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w== +browserslist@^4.24.0, browserslist@^4.28.1: + version "4.28.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.2.tgz#f50b65362ef48974ca9f50b3680566d786b811d2" + integrity sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg== dependencies: - baseline-browser-mapping "^2.8.9" - caniuse-lite "^1.0.30001746" - electron-to-chromium "^1.5.227" - node-releases "^2.0.21" - update-browserslist-db "^1.1.3" + baseline-browser-mapping "^2.10.12" + caniuse-lite "^1.0.30001782" + electron-to-chromium "^1.5.328" + node-releases "^2.0.36" + update-browserslist-db "^1.2.3" bser@2.1.1: version "2.1.1" @@ -1510,10 +1503,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001746: - version "1.0.30001747" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001747.tgz#2cfbbb7f1f046439ebaf34bba337ee3d3474c7e5" - integrity sha512-mzFa2DGIhuc5490Nd/G31xN1pnBnYMadtkyTjefPI7wzypqgCEpeWu9bJr0OnDsyKrW75zA9ZAt7pbQFmwLsQg== +caniuse-lite@^1.0.30001782: + version "1.0.30001788" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001788.tgz#31e97d1bfec332b3f2d7eea7781460c97629b3bf" + integrity sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ== chalk@^4.0.0: version "4.1.2" @@ -1591,12 +1584,12 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -core-js-compat@^3.43.0: - version "3.45.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.45.1.tgz#424f3f4af30bf676fd1b67a579465104f64e9c7a" - integrity sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA== +core-js-compat@^3.48.0: + version "3.49.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.49.0.tgz#06145447d92f4aaf258a0c44f24b47afaeaffef6" + integrity sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA== dependencies: - browserslist "^4.25.3" + browserslist "^4.28.1" cross-spawn@^7.0.3: version "7.0.6" @@ -1633,7 +1626,7 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.4.1: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.4.3: version "4.4.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== @@ -1686,10 +1679,10 @@ dunder-proto@^1.0.1: es-errors "^1.3.0" gopd "^1.2.0" -electron-to-chromium@^1.5.227: - version "1.5.229" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.229.tgz#ce32e345990b031ae5fec4d99e98188b90ba3731" - integrity sha512-cwhDcZKGcT/rEthLRJ9eBlMDkh1sorgsuk+6dpsehV0g9CABsIqBxU4rLRjG+d/U6pYU1s37A4lSKrVc5lSQYg== +electron-to-chromium@^1.5.328: + version "1.5.336" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.336.tgz#d7c25c0827b8c5e2885b2c91ac6cdcf3e5a1386e" + integrity sha512-AbH9q9J455r/nLmdNZes0G0ZKcRX73FicwowalLs6ijwOmCJSRRrLX63lcAlzy9ux3dWK1w1+1nsBJEWN11hcQ== emittery@^0.8.1: version "0.8.1" @@ -2016,7 +2009,7 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -is-core-module@^2.16.0: +is-core-module@^2.16.1: version "2.16.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== @@ -2676,10 +2669,10 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-releases@^2.0.21: - version "2.0.21" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.21.tgz#f59b018bc0048044be2d4c4c04e4c8b18160894c" - integrity sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw== +node-releases@^2.0.36: + version "2.0.37" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.37.tgz#9bd4f10b77ba39c2b9402d4e8399c482a797f671" + integrity sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg== normalize-path@^3.0.0: version "3.0.0" @@ -2839,7 +2832,7 @@ regenerate@^1.4.2: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regexpu-core@^6.2.0: +regexpu-core@^6.3.1: version "6.4.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.4.0.tgz#3580ce0c4faedef599eccb146612436b62a176e5" integrity sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA== @@ -2890,12 +2883,13 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== -resolve@^1.20.0, resolve@^1.22.10: - version "1.22.10" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" - integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== +resolve@^1.20.0, resolve@^1.22.11: + version "1.22.12" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.12.tgz#f5b2a680897c69c238a13cd16b15671f8b73549f" + integrity sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA== dependencies: - is-core-module "^2.16.0" + es-errors "^1.3.0" + is-core-module "^2.16.1" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -3134,11 +3128,6 @@ typescript@^4.1.5: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== -undici-types@~7.13.0: - version "7.13.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.13.0.tgz#a20ba7c0a2be0c97bd55c308069d29d167466bff" - integrity sha512-Ov2Rr9Sx+fRgagJ5AX0qvItZG/JKKoBRAVITs1zk7IqZGTJUwgUr7qoYBpWwakpWilTZFM98rG/AFRocu10iIQ== - unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz#cb3173fe47ca743e228216e4a3ddc4c84d628cc2" @@ -3167,10 +3156,10 @@ universalify@^0.2.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== -update-browserslist-db@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" - integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== +update-browserslist-db@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d" + integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== dependencies: escalade "^3.2.0" picocolors "^1.1.1" diff --git a/platform/live-frame/package.json b/platform/live-frame/package.json index 168db5019b..99116aa4f5 100644 --- a/platform/live-frame/package.json +++ b/platform/live-frame/package.json @@ -10,11 +10,11 @@ "devDependencies": { "@rollup/plugin-commonjs": "^14.0.0", "@rollup/plugin-node-resolve": "^8.4.0", - "@rollup/plugin-replace": "^2.3.3", - "@rollup/plugin-sucrase": "^3.1.0", + "@rollup/plugin-replace": "^2.4.2", + "@rollup/plugin-sucrase": "^3.1.1", "@rollup/plugin-typescript": "^5.0.2", - "@types/react": "^16.9.44", - "@types/react-dom": "^16.9.8", + "@types/react": "^16.14.69", + "@types/react-dom": "^16.9.25", "rollup": "^2.23.0", "rollup-plugin-postcss": "^3.1.3", "rollup-plugin-terser": "^6.1.0", diff --git a/platform/loader-bundle-env/package.json b/platform/loader-bundle-env/package.json index 51c89575ef..d46dac275b 100644 --- a/platform/loader-bundle-env/package.json +++ b/platform/loader-bundle-env/package.json @@ -12,6 +12,7 @@ "dependencies": { "@ant-design/icons": "^5.1.4", "@ant-design/pro-components": "2.6.4", +<<<<<<< HEAD "@emotion/react": "^11.10.4", "@emotion/styled": "^11.10.4", "@faker-js/faker": "^8.2.0", @@ -66,35 +67,90 @@ "@plasmicpkgs/tiptap": "^0.0.27", "@plasmicpkgs/vanilla-cookieconsent": "^0.0.20", "@plasmicpkgs/wordpress": "^0.0.20", +======= + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.1", + "@faker-js/faker": "^8.4.1", + "@plasmicapp/auth-react": "^0.0.30", + "@plasmicapp/data-sources-context": "^0.1.25", + "@plasmicapp/host": "^2.0.14", + "@plasmicapp/react-web": "^1.0.28", + "@plasmicpkgs/airtable": "^0.0.271", + "@plasmicpkgs/antd": "^2.0.179", + "@plasmicpkgs/antd5": "^0.0.365", + "@plasmicpkgs/cms": "^0.0.35", + "@plasmicpkgs/commerce": "^0.0.255", + "@plasmicpkgs/commerce-commercetools": "^0.0.205", + "@plasmicpkgs/commerce-local": "^0.0.255", + "@plasmicpkgs/commerce-saleor": "^0.0.219", + "@plasmicpkgs/commerce-shopify": "^0.0.263", + "@plasmicpkgs/commerce-swell": "^0.0.265", + "@plasmicpkgs/contentful": "^0.0.29", + "@plasmicpkgs/fetch": "^0.0.49", + "@plasmicpkgs/framer-motion": "^0.0.255", + "@plasmicpkgs/graphql": "^0.0.43", + "@plasmicpkgs/lottie-react": "^0.0.249", + "@plasmicpkgs/plasmic-basic-components": "^0.0.286", + "@plasmicpkgs/plasmic-chakra-ui": "^0.0.87", + "@plasmicpkgs/plasmic-cms": "^0.0.326", + "@plasmicpkgs/plasmic-content-stack": "^0.0.211", + "@plasmicpkgs/plasmic-contentful": "^0.0.205", + "@plasmicpkgs/plasmic-embed-css": "^0.1.241", + "@plasmicpkgs/plasmic-graphcms": "^0.0.228", + "@plasmicpkgs/plasmic-link-preview": "^1.0.167", + "@plasmicpkgs/plasmic-nav": "^0.0.227", + "@plasmicpkgs/plasmic-query": "^0.0.276", + "@plasmicpkgs/plasmic-rich-components": "^1.0.267", + "@plasmicpkgs/plasmic-sanity-io": "^1.0.236", + "@plasmicpkgs/plasmic-strapi": "^0.1.214", + "@plasmicpkgs/plasmic-tabs": "^0.0.98", + "@plasmicpkgs/plasmic-wordpress": "^0.0.184", + "@plasmicpkgs/plasmic-wordpress-graphql": "^0.0.173", + "@plasmicpkgs/radix-ui": "^0.0.115", + "@plasmicpkgs/react-aria": "^0.0.192", + "@plasmicpkgs/react-awesome-reveal": "^3.8.259", + "@plasmicpkgs/react-chartjs-2": "^1.0.167", + "@plasmicpkgs/react-parallax-tilt": "^0.0.257", + "@plasmicpkgs/react-quill": "^1.0.120", + "@plasmicpkgs/react-scroll-parallax": "^0.0.266", + "@plasmicpkgs/react-slick": "^0.0.278", + "@plasmicpkgs/react-twitter-widgets": "^0.0.255", + "@plasmicpkgs/react-youtube": "^7.13.261", + "@plasmicpkgs/rive": "^0.0.43", + "@plasmicpkgs/strapi": "^0.0.33", + "@plasmicpkgs/tiptap": "^0.0.48", + "@plasmicpkgs/vanilla-cookieconsent": "^0.0.33", + "@plasmicpkgs/wordpress": "^0.0.34", +>>>>>>> upstream/master "ant-design-pro-form-stub": "link:./internal_pkgs/ant-design-pro-form-stub", "antd": "^5.7.3", "axios": "^1.15.0", - "chart.js": "^4.2.1", + "chart.js": "^4.5.1", "copy-to-clipboard": "^3.3.3", - "dayjs": "^1.11.10", + "dayjs": "^1.11.20", "enquire-js": "link:./internal_pkgs/enquire-js", "fast-stringify": "^2.0.0", "framer-motion": "^7.6.1", - "immer": "^10.0.3", + "immer": "^10.2.0", "isomorphic-fetch": "^3.0.0", "jquery": "^3.7.1", "lodash": "^4.18.1", "marked": "^9.1.1", "md5": "^2.3.0", - "nanoid": "^5.0.2", - "papaparse": "^5.4.1", + "nanoid": "^5.1.7", + "papaparse": "^5.5.3", "plasmic-internal-noop-func": "link:./internal_pkgs/noop-func", "pluralize": "^8.0.0", "random": "^4.1.0", "rc-util": "^5.44.4", - "react-chartjs-2": "^5.2.0", - "semver": "^7.5.4", + "react-chartjs-2": "^5.3.1", + "semver": "^7.7.4", "slick-carousel": "^1.8.1", "slick-carousel-theme": "link:./internal_pkgs/slick-carousel-theme", "tinycolor2": "^1.6.0", "uuid": "^9.0.1", "vanilla-cookieconsent": "^3.1.0", - "zod": "^3.22.4" + "zod": "^3.25.76" }, "resolutions": { "@plasmicpkgs/antd/antd": "4.19.3", @@ -107,7 +163,7 @@ "lottie-web": ">=5.13.0" }, "devDependencies": { - "patch-package": "^8.0.0", + "patch-package": "^8.0.1", "postinstall-postinstall": "^2.1.0" } } diff --git a/platform/loader-bundle-env/yarn.lock b/platform/loader-bundle-env/yarn.lock index e2be5bf30e..053a6462ed 100644 --- a/platform/loader-bundle-env/yarn.lock +++ b/platform/loader-bundle-env/yarn.lock @@ -10,16 +10,16 @@ "@ctrl/tinycolor" "^3.4.0" "@ant-design/colors@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-7.0.0.tgz#eb7eecead124c3533aea05d61254f0a17f2b61b3" - integrity sha512-iVm/9PfGCbC0dSMBrz7oiEXZaaGH7ceU40OJEfKmyuzR9R5CRimJYPlRiFtMQGQcbNMea/ePcoIebi4ASGYXtg== + version "7.2.1" + resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-7.2.1.tgz#3bbc1c6c18550020d1622a0067ff03492318df98" + integrity sha512-lCHDcEzieu4GA3n8ELeZ5VQ8pKQAWcGGLRTQ50aQM2iqPpq2evTxER84jfdPvsPAtEcZ7m44NI45edFMo8oOYQ== dependencies: - "@ctrl/tinycolor" "^3.4.0" + "@ant-design/fast-color" "^2.0.6" "@ant-design/cssinjs@^1.11.0", "@ant-design/cssinjs@^1.18.1": - version "1.18.2" - resolved "https://registry.yarnpkg.com/@ant-design/cssinjs/-/cssinjs-1.18.2.tgz#d993a64c1d0bf51f4a9d662ddc8ed8426977b5c3" - integrity sha512-514V9rjLaFYb3v4s55/8bg2E6fb81b99s3crDZf4nSwtiDLLXs8axnIph+q2TVkY2hbJPZOn/cVsVcnLkzFy7w== + version "1.24.0" + resolved "https://registry.yarnpkg.com/@ant-design/cssinjs/-/cssinjs-1.24.0.tgz#7db091f03f189abc77a13cbd27a2293802cd7285" + integrity sha512-K4cYrJBsgvL+IoozUXYjbT6LHHNt+19a9zkvpBPxLjFHas1UpPM2A5MlhROb0BT8N8WoavM5VsP9MeSeNK/3mg== dependencies: "@babel/runtime" "^7.11.1" "@emotion/hash" "^0.8.0" @@ -27,7 +27,14 @@ classnames "^2.3.1" csstype "^3.1.3" rc-util "^5.35.0" - stylis "^4.0.13" + stylis "^4.3.4" + +"@ant-design/fast-color@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@ant-design/fast-color/-/fast-color-2.0.6.tgz#ab4d4455c1542c9017d367c2fa8ca3e4215d0ba2" + integrity sha512-y2217gk4NqL35giHl72o6Zzqji9O7vHh9YmhUVkPtAOpoTCH4uWxo/pr4VE8t0+ChEPs0qo4eJRC5Q1eXWo3vA== + dependencies: + "@babel/runtime" "^7.24.7" "@ant-design/icons-svg@^4.2.1", "@ant-design/icons-svg@^4.3.0": version "4.3.0" @@ -293,12 +300,10 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.16.7", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.4", "@babel/runtime@^7.8.4": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.6.tgz#c05e610dc228855dc92ef1b53d07389ed8ab521d" - integrity sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ== - dependencies: - regenerator-runtime "^0.14.0" +"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.16.7", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.4", "@babel/runtime@^7.24.7", "@babel/runtime@^7.8.4": + version "7.29.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.2.tgz#9a6e2d05f4b6692e1801cd4fb176ad823930ed5e" + integrity sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g== "@babel/types@^7.18.6": version "7.19.4" @@ -1231,6 +1236,7 @@ dependencies: tslib "^2.0.0" +<<<<<<< HEAD "@elasticpath/plasmic-ep-commerce-elastic-path@^0.0.3": version "0.0.3" resolved "https://registry.yarnpkg.com/@elasticpath/plasmic-ep-commerce-elastic-path/-/plasmic-ep-commerce-elastic-path-0.0.3.tgz#005a9253fbbb40da4089d6c6a70f2717e7127c2d" @@ -1252,12 +1258,18 @@ version "11.11.0" resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== +======= +"@emotion/babel-plugin@^11.13.5": + version "11.13.5" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz#eab8d65dbded74e0ecfd28dc218e75607c4e7bc0" + integrity sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ== +>>>>>>> upstream/master dependencies: "@babel/helper-module-imports" "^7.16.7" "@babel/runtime" "^7.18.3" - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/serialize" "^1.1.2" + "@emotion/hash" "^0.9.2" + "@emotion/memoize" "^0.9.0" + "@emotion/serialize" "^1.3.3" babel-plugin-macros "^3.1.0" convert-source-map "^1.5.0" escape-string-regexp "^4.0.0" @@ -1265,15 +1277,15 @@ source-map "^0.5.7" stylis "4.2.0" -"@emotion/cache@^11.11.0": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" - integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== +"@emotion/cache@^11.14.0": + version "11.14.0" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.14.0.tgz#ee44b26986eeb93c8be82bb92f1f7a9b21b2ed76" + integrity sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA== dependencies: - "@emotion/memoize" "^0.8.1" - "@emotion/sheet" "^1.2.2" - "@emotion/utils" "^1.2.1" - "@emotion/weak-memoize" "^0.3.1" + "@emotion/memoize" "^0.9.0" + "@emotion/sheet" "^1.4.0" + "@emotion/utils" "^1.4.2" + "@emotion/weak-memoize" "^0.4.0" stylis "4.2.0" "@emotion/hash@^0.8.0": @@ -1281,10 +1293,10 @@ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== -"@emotion/hash@^0.9.1": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" - integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== +"@emotion/hash@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.2.tgz#ff9221b9f58b4dfe61e619a7788734bd63f6898b" + integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g== "@emotion/is-prop-valid@^0.8.2": version "0.8.8" @@ -1293,85 +1305,91 @@ dependencies: "@emotion/memoize" "0.7.4" -"@emotion/is-prop-valid@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" - integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== +"@emotion/is-prop-valid@^1.3.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.4.0.tgz#e9ad47adff0b5c94c72db3669ce46de33edf28c0" + integrity sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw== dependencies: - "@emotion/memoize" "^0.8.0" + "@emotion/memoize" "^0.9.0" "@emotion/memoize@0.7.4": version "0.7.4" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== -"@emotion/memoize@^0.8.0", "@emotion/memoize@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" - integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== +"@emotion/memoize@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.9.0.tgz#745969d649977776b43fc7648c556aaa462b4102" + integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ== -"@emotion/react@^11.10.4", "@emotion/react@^11.11.4": - version "11.11.4" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.4.tgz#3a829cac25c1f00e126408fab7f891f00ecc3c1d" - integrity sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw== +"@emotion/react@^11.11.4", "@emotion/react@^11.14.0": + version "11.14.0" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.14.0.tgz#cfaae35ebc67dd9ef4ea2e9acc6cd29e157dd05d" + integrity sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA== dependencies: "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.11.0" - "@emotion/cache" "^11.11.0" - "@emotion/serialize" "^1.1.3" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" - "@emotion/utils" "^1.2.1" - "@emotion/weak-memoize" "^0.3.1" + "@emotion/babel-plugin" "^11.13.5" + "@emotion/cache" "^11.14.0" + "@emotion/serialize" "^1.3.3" + "@emotion/use-insertion-effect-with-fallbacks" "^1.2.0" + "@emotion/utils" "^1.4.2" + "@emotion/weak-memoize" "^0.4.0" hoist-non-react-statics "^3.3.1" -"@emotion/serialize@^1.1.0", "@emotion/serialize@^1.1.2", "@emotion/serialize@^1.1.3": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.4.tgz#fc8f6d80c492cfa08801d544a05331d1cc7cd451" - integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== +"@emotion/serialize@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.3.tgz#d291531005f17d704d0463a032fe679f376509e8" + integrity sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA== dependencies: - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/unitless" "^0.8.1" - "@emotion/utils" "^1.2.1" + "@emotion/hash" "^0.9.2" + "@emotion/memoize" "^0.9.0" + "@emotion/unitless" "^0.10.0" + "@emotion/utils" "^1.4.2" csstype "^3.0.2" -"@emotion/sheet@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" - integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== +"@emotion/sheet@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.4.0.tgz#c9299c34d248bc26e82563735f78953d2efca83c" + integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg== -"@emotion/styled@^11.10.4": - version "11.10.4" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.10.4.tgz#e93f84a4d54003c2acbde178c3f97b421fce1cd4" - integrity sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ== +"@emotion/styled@^11.14.1": + version "11.14.1" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.14.1.tgz#8c34bed2948e83e1980370305614c20955aacd1c" + integrity sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw== dependencies: "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.10.0" - "@emotion/is-prop-valid" "^1.2.0" - "@emotion/serialize" "^1.1.0" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@emotion/utils" "^1.2.0" + "@emotion/babel-plugin" "^11.13.5" + "@emotion/is-prop-valid" "^1.3.0" + "@emotion/serialize" "^1.3.3" + "@emotion/use-insertion-effect-with-fallbacks" "^1.2.0" + "@emotion/utils" "^1.4.2" + +"@emotion/unitless@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.10.0.tgz#2af2f7c7e5150f497bdabd848ce7b218a27cf745" + integrity sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg== "@emotion/unitless@^0.7.5": version "0.7.5" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== -"@emotion/unitless@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" - integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== +"@emotion/use-insertion-effect-with-fallbacks@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz#8a8cb77b590e09affb960f4ff1e9a89e532738bf" + integrity sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg== -"@emotion/use-insertion-effect-with-fallbacks@^1.0.0", "@emotion/use-insertion-effect-with-fallbacks@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" - integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== +"@emotion/utils@^1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.2.tgz#6df6c45881fcb1c412d6688a311a98b7f59c1b52" + integrity sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA== -"@emotion/utils@^1.2.0", "@emotion/utils@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" - integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== +"@emotion/weak-memoize@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6" + integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg== +<<<<<<< HEAD "@emotion/weak-memoize@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" @@ -1388,6 +1406,12 @@ version "8.2.0" resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-8.2.0.tgz#d4656d2cb485fe6ec4e7b340da9f16fac2c36c4a" integrity sha512-VacmzZqVxdWdf9y64lDOMZNDMM/FQdtM9IsaOPKOm2suYwEatb8VkdHqOzXcDnZbk7YDE2BmsJmy/2Hmkn563g== +======= +"@faker-js/faker@^8.4.1": + version "8.4.1" + resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-8.4.1.tgz#5d5e8aee8fce48f5e189bf730ebd1f758f491451" + integrity sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg== +>>>>>>> upstream/master "@floating-ui/core@^1.4.2": version "1.5.0" @@ -1552,44 +1576,43 @@ hey-listen "^1.0.8" tslib "^2.3.1" -"@plasmicapp/auth-api@0.0.17": - version "0.0.17" - resolved "https://registry.yarnpkg.com/@plasmicapp/auth-api/-/auth-api-0.0.17.tgz#a24045a79bd0e28b7ffb8755073d35cd6fc9f82b" - integrity sha512-mdcQgmYTxzFrmOSEV3FkHfX22KqzWAQFRaxYEC1DZqm5Jc/vvYVLO+TwkW1Y7O7TV9tUDEMDuy3JAFz9z5tsbw== +"@plasmicapp/auth-api@0.0.19": + version "0.0.19" + resolved "https://registry.yarnpkg.com/@plasmicapp/auth-api/-/auth-api-0.0.19.tgz#3228e3cc67d0dbc68a9aa68dbacd89224252d84f" + integrity sha512-loDxQFCUYDk6hKxHl0GCyp+AwodnB4Mqda08ydIjBhB0p8Y2Z2rKjDtuI3kFeABUzTiF13FPu3whUWFA2e4o5g== dependencies: "@plasmicapp/isomorphic-unfetch" "1.0.3" -"@plasmicapp/auth-react@0.0.27", "@plasmicapp/auth-react@^0.0.27": - version "0.0.27" - resolved "https://registry.yarnpkg.com/@plasmicapp/auth-react/-/auth-react-0.0.27.tgz#90edb75f2f4533de9000485a8ea1ce07802bc0a4" - integrity sha512-0rd3bp/jCrbdV1+GIeGiYsCFrSN3z3d1GbNEzMrDdATW/TPytT12GdHQGSpeGn/GjruFKh7KRm+AvEQRiyJ76w== +"@plasmicapp/auth-react@0.0.30", "@plasmicapp/auth-react@^0.0.30": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@plasmicapp/auth-react/-/auth-react-0.0.30.tgz#adc750817bb4805d8fae1f004a69284b339bdd4d" + integrity sha512-e0hNmn5EVDoOqlwTVyYhoWJv0dVacwwJd7i20SbXxmxWQGTER+Ig/GLMnVpmKWFhV57pAD/mx4iyUM02Tndt6A== dependencies: - "@plasmicapp/auth-api" "0.0.17" + "@plasmicapp/auth-api" "0.0.19" "@plasmicapp/isomorphic-unfetch" "1.0.3" - "@plasmicapp/query" "0.1.84" + "@plasmicapp/query" "0.1.87" -"@plasmicapp/data-sources-context@0.1.23", "@plasmicapp/data-sources-context@^0.1.23": - version "0.1.23" - resolved "https://registry.yarnpkg.com/@plasmicapp/data-sources-context/-/data-sources-context-0.1.23.tgz#7888d6ba33ba0c02509203368f230fdd431a14dc" - integrity sha512-F006Wr7s/RD4uCORY9EXYDYKgNUDxhY9qpUgT7a0Nyp9s6rw5qEZbcuMrM8Miy90DK3H5AfSuWaOl1+/pjxKZA== +"@plasmicapp/data-sources-context@0.1.25", "@plasmicapp/data-sources-context@^0.1.25": + version "0.1.25" + resolved "https://registry.yarnpkg.com/@plasmicapp/data-sources-context/-/data-sources-context-0.1.25.tgz#c8b74048a81ba6b400d34226b11091c04132b1cc" + integrity sha512-wCU+uxslvoPns/gWdUd615v1yBS9rVjyWmcc0qEhiEKCk8qHh0adc0e4hxbf34A4la0EaKj93B0iXw69m7GH+A== -"@plasmicapp/data-sources@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@plasmicapp/data-sources/-/data-sources-1.0.2.tgz#476b89651a7c97f414b9cd3d735eaecf145d6ebf" - integrity sha512-qj7LOe87JA6iywufQdpCkqRJWTetVOWUzn19VLSRUoxM5mmqauLF2FWZQTcyQKFHdrxox4YFaJAk7o09SymXCQ== +"@plasmicapp/data-sources@1.0.23": + version "1.0.23" + resolved "https://registry.yarnpkg.com/@plasmicapp/data-sources/-/data-sources-1.0.23.tgz#afc302fec26bfdd2945be784176e6c6bd3096229" + integrity sha512-Ct3nzuwm2FFXlkzKeU6Mtb1AdP7gTF3cYLUuuiEuxs36A9kGJ/a4SHT0FPe6ycHuoXBNfPaayt2nFfsmmBHt3A== dependencies: - "@plasmicapp/data-sources-context" "0.1.23" - "@plasmicapp/host" "2.0.1" - "@plasmicapp/isomorphic-unfetch" "1.0.3" - "@plasmicapp/query" "0.1.84" + "@plasmicapp/data-sources-context" "0.1.25" + "@plasmicapp/host" "2.0.14" + "@plasmicapp/query" "0.1.87" fast-stringify "^2.0.0" -"@plasmicapp/host@2.0.1", "@plasmicapp/host@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@plasmicapp/host/-/host-2.0.1.tgz#92d8d1c9c7ae1f246cb33a10e90f80e2c05557e6" - integrity sha512-ghYXBzHihKemrq7RDmwGoUQrBMMba+biMfOLZFeXCm+S9cIXNM93KCk5rEst/pkwSt4Z9KOEqGAV1tTJqg7JHQ== +"@plasmicapp/host@2.0.14", "@plasmicapp/host@^2.0.14": + version "2.0.14" + resolved "https://registry.yarnpkg.com/@plasmicapp/host/-/host-2.0.14.tgz#686957ba238424a35a7eb3d110323291d497d0c5" + integrity sha512-eMRM41Z3A7tDvUF+82HaCSUOC9gFbUug2dkuB/mVuQ8y0aEtHjKgrncEAHuMBUpos6R/Akk6WVUYz7DeF41NQA== dependencies: - "@plasmicapp/query" "0.1.84" + "@plasmicapp/query" "0.1.87" csstype "^3.1.2" window-or-global "^1.0.1" @@ -1600,59 +1623,45 @@ dependencies: unfetch "^4.2.0" -"@plasmicapp/loader-splits@1.0.70": - version "1.0.70" - resolved "https://registry.yarnpkg.com/@plasmicapp/loader-splits/-/loader-splits-1.0.70.tgz#7dd89bd2877f731430f286af579153af0f4003cd" - integrity sha512-iS2IIrWmmCgh0qhyaHliTj6D0q4vQebsWEiATLblGaIF4cUyOZO8KAeBG/MWiT8HNyvCE/nimFbwaI7yd2ZfBA== +"@plasmicapp/loader-splits@1.0.75": + version "1.0.75" + resolved "https://registry.yarnpkg.com/@plasmicapp/loader-splits/-/loader-splits-1.0.75.tgz#8fbe6778d5caccb39f7ae1544246a863b0a146b4" + integrity sha512-MLG2CjR3/XGlnTWvxBz0QjAnvL4RZOKKWbreoxVRpTBChO3Uh1BORNis+NqITiS05U3OQlT7UUEv6cgi9lHVHg== dependencies: json-logic-js "^2.0.2" -"@plasmicapp/nextjs-app-router@1.0.22": - version "1.0.22" - resolved "https://registry.yarnpkg.com/@plasmicapp/nextjs-app-router/-/nextjs-app-router-1.0.22.tgz#fb0c9f279ed1669d037159b77ff149347f87c8af" - integrity sha512-PwxE4c6e0jbARKwkPvyksUBSzHmUnk5ZnCq+QZgPujVOYOWnmqpYj0GBrX2dl7jNp9RwQebOwHLWNcEbH9ixPw== - dependencies: - "@plasmicapp/prepass" "1.0.24" - "@plasmicapp/query" "0.1.84" - cross-port-killer "1.4.0" - cross-spawn "^7.0.3" - get-port "^7.0.0" - node-html-parser "^6.1.5" - yargs "^17.7.2" - -"@plasmicapp/prepass@1.0.24": - version "1.0.24" - resolved "https://registry.yarnpkg.com/@plasmicapp/prepass/-/prepass-1.0.24.tgz#ba1f720b0aada99711b49553980714018a20b856" - integrity sha512-v9meFetG2cF1KNBlHXQ0mqJMQp73n4wiZ1C+4Hwg/sjCr34g5h/h4AF1MHKCeBZi5LiNSy6MMmgi7pp6GdA7kg== +"@plasmicapp/prepass@1.0.27": + version "1.0.27" + resolved "https://registry.yarnpkg.com/@plasmicapp/prepass/-/prepass-1.0.27.tgz#b890771ca10a11f645af962b581780d4e21b35c8" + integrity sha512-5XyT78LjJR+u0jXo2dMsWsTIKFDlp8m1pllHNv9i5Z4iR26MdKVuY7XOPfszwZBWz9wgQsLRjR07huo+BuHSQg== dependencies: - "@plasmicapp/query" "0.1.84" + "@plasmicapp/query" "0.1.87" "@plasmicapp/react-ssr-prepass" "^2.0.9" -"@plasmicapp/query@0.1.84": - version "0.1.84" - resolved "https://registry.yarnpkg.com/@plasmicapp/query/-/query-0.1.84.tgz#d7ad0a411243ea972d1e88049e8f47faf9f6763b" - integrity sha512-mOgXmccl82cSSX4DMOGisCUYb9+pPSPsQqUJ0OfTkrTz+bsNbluTjIGIFwGtvQZiBXMP2c7/MGrxtqXtt/qzLw== +"@plasmicapp/query@0.1.87": + version "0.1.87" + resolved "https://registry.yarnpkg.com/@plasmicapp/query/-/query-0.1.87.tgz#5179bd931d6ee54d7bbe7f47d845e0f81ab936ea" + integrity sha512-4M4QvE9IE8DtVv/LuEruGkMLo3bPhTZIwrYpQpcaXj6FQCL2G5XdhjhcH6JzSW2LxqjhyC+2xDLlZKUAzYqpvw== dependencies: - swr "^1.0.0" + swr "^1.3.0" "@plasmicapp/react-ssr-prepass@^2.0.9": version "2.0.9" resolved "https://registry.yarnpkg.com/@plasmicapp/react-ssr-prepass/-/react-ssr-prepass-2.0.9.tgz#1cfdd8d4c0e90fd4fed7d7204f70c44914871d31" integrity sha512-HO932uH/Y4otaDmjwzJbCLlokxNAdtU9VhDVUZUuVbzh0DhWaNyn/MINCu1oeZ4a6MIjdXFIm/U2VaxNxHYdsw== -"@plasmicapp/react-web@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@plasmicapp/react-web/-/react-web-1.0.2.tgz#410a5b1cf76b4be9abc7c3f1371dbe247a90d7b2" - integrity sha512-MsJk2hBNuJwA2cBywZCvAN+2YLanFX605sWzYWDPm+/hnjMvDdHfcyInvtq2+j5IafJAJmEo2iGTZwBhru7NyQ== - dependencies: - "@plasmicapp/auth-react" "0.0.27" - "@plasmicapp/data-sources" "1.0.2" - "@plasmicapp/data-sources-context" "0.1.23" - "@plasmicapp/host" "2.0.1" - "@plasmicapp/loader-splits" "1.0.70" - "@plasmicapp/nextjs-app-router" "1.0.22" - "@plasmicapp/prepass" "1.0.24" - "@plasmicapp/query" "0.1.84" +"@plasmicapp/react-web@^1.0.28": + version "1.0.28" + resolved "https://registry.yarnpkg.com/@plasmicapp/react-web/-/react-web-1.0.28.tgz#6bb1938ce7ac1eec3218d20cf64ce8fbf174bec4" + integrity sha512-sJGZkIUNdqpRQ3KB/O1G+OuqW61Sx8BDuhS7llEWpFlBJFLfWRZc+FapI9KLJorz76Oxei+pYaefH45U1OR/kA== + dependencies: + "@plasmicapp/auth-react" "0.0.30" + "@plasmicapp/data-sources" "1.0.23" + "@plasmicapp/data-sources-context" "0.1.25" + "@plasmicapp/host" "2.0.14" + "@plasmicapp/loader-splits" "1.0.75" + "@plasmicapp/prepass" "1.0.27" + "@plasmicapp/query" "0.1.87" "@react-aria/checkbox" "^3.15.5" "@react-aria/focus" "^3.20.3" "@react-aria/interactions" "^3.25.1" @@ -1676,15 +1685,15 @@ dlv "^1.1.3" valtio "^1.6.4" -"@plasmicpkgs/airtable@^0.0.258": - version "0.0.258" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/airtable/-/airtable-0.0.258.tgz#e6ef47262d4fc5fa97733533d592076abfbd8f31" - integrity sha512-k8Ek9sq9NVW3kRvECY2MskTDDxcVE1j2AVI0tD0uzPQOQXdNpIsAPLYvK+RAbmO8LCEdYJD/ay1M9YAKWj3Niw== +"@plasmicpkgs/airtable@^0.0.271": + version "0.0.271" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/airtable/-/airtable-0.0.271.tgz#7671c6022923d653da5152958cdac13f020dad45" + integrity sha512-Gyz3QsLZB4uxt4T6eqEneQRH9xh2gqc0Vmutbaywd6AiPYWEwxz65LYcqP+o7V3ZK+XmDSB/5Qqxs+uuk4Yixg== -"@plasmicpkgs/antd5@^0.0.339": - version "0.0.339" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/antd5/-/antd5-0.0.339.tgz#e43dd0037d289ddfd6a5d49f71c3b9cc5d5c66c5" - integrity sha512-9gSZnFGPjABkc1p4DcCjpyYMCDcZ1fAe13TyryFFxV/MfNSn1zfjXOvdavop5h3hPxa/tTR8kd42N3XbvKqr6A== +"@plasmicpkgs/antd5@^0.0.365": + version "0.0.365" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/antd5/-/antd5-0.0.365.tgz#d86360a90464aa31a1935658c57a594a1866e37a" + integrity sha512-xVOIcEXcX/IBMH2E31f+NSUOztmWNl7TK4UNwiM2hd2Leg66NWlSrQzBdLkG0RZlWoEwtcl/3zliYbiPj62THQ== dependencies: antd "^5.12.7" classnames "^2.3.2" @@ -1692,65 +1701,66 @@ fast-deep-equal "^3.1.3" lodash "^4.17.21" -"@plasmicpkgs/antd@^2.0.166": - version "2.0.166" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/antd/-/antd-2.0.166.tgz#8b6a10c6b8978358fd7bc80a6c8d7f06f8e33ffb" - integrity sha512-kTXJnc6Sn5HX0dVptwmlPhUHDcx2woYjkGXNHTol8e/rsLWeXrIPZpfqRrrwEoG1qmnizQMz6BYMtS76T4XYkA== +"@plasmicpkgs/antd@^2.0.179": + version "2.0.179" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/antd/-/antd-2.0.179.tgz#50a21e55b68f011627eebe10789d7d7530e9b0c2" + integrity sha512-ETeKKfq4IYF7kXdnqCWff3TM6mZNIAT+Wcg1KOG3fQKbbnYxae25TRvNJRSJAf6YjWTrAM5u/j74yA1aXzGD1w== dependencies: antd "^4.19.5" -"@plasmicpkgs/cms@0.0.21", "@plasmicpkgs/cms@^0.0.21": - version "0.0.21" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/cms/-/cms-0.0.21.tgz#e8a8bdad755f6f2756d1d8cdca877329671aa15a" - integrity sha512-Ht/5dydxOCFTsgWUXeXJeDBjb86T3xl7YDb7UOm2cCHxjMFmH38TTffVW8sQVmmujjcM+xF+B2bVnyZfeMDanw== +"@plasmicpkgs/cms@0.0.35", "@plasmicpkgs/cms@^0.0.35": + version "0.0.35" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/cms/-/cms-0.0.35.tgz#609c614454698d323872e6af2901883afa50aa48" + integrity sha512-4xET+OAyWzTPZX78FmqG3ZFVdLatll1xsvar7wL6/Kq0YPfhL4q0hytLAtXEipquMITJMLFmCL4umjFLPKaHwA== -"@plasmicpkgs/commerce-commercetools@^0.0.192": - version "0.0.192" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-commercetools/-/commerce-commercetools-0.0.192.tgz#2c4995b69576d86acd6eba581a7822bb88e40301" - integrity sha512-Bc1iEqMK2/t/xJUl8/dHAuzBFefpiDxRB7/RX2CxH5+LQY0eNd8DAy9w8E/vWVOVY+Fz7gCTxKQSa9P/jJ5SnA== +"@plasmicpkgs/commerce-commercetools@^0.0.205": + version "0.0.205" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-commercetools/-/commerce-commercetools-0.0.205.tgz#c90dc254afeb0dbc494756b6349996073e594042" + integrity sha512-AmJGDb3NvUnZr5j7gTGhsVcpruoAseb4/k7yaiQaPOOHXa5AJK2fsujP+Yl1FCy4cUv+47hDgofU+iprBsmX+Q== dependencies: "@commercetools/platform-sdk" "^2.8.0" "@commercetools/sdk-client-v2" "^2.2.2" - "@plasmicpkgs/commerce" "0.0.242" + "@plasmicpkgs/commerce" "0.0.255" debounce "^2.0.0" js-cookie "^3.0.5" qs "^6.11.0" -"@plasmicpkgs/commerce-local@^0.0.242": - version "0.0.242" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-local/-/commerce-local-0.0.242.tgz#b20546b111a62c33019a1243261e3aaba3ba7fe5" - integrity sha512-Q7SE14BwKTsbYbosPAjbTFwadp2jQWjRvLq/YK4ZNBOYKQB4vuiJuAARUwg/L7WrWCOTODYZGAwYcqNy+1r7Cg== +"@plasmicpkgs/commerce-local@^0.0.255": + version "0.0.255" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-local/-/commerce-local-0.0.255.tgz#85fdcb2d44de75b8f458e743b3a003f277109a5b" + integrity sha512-9SwBmBxTCN/JmX8/mhdSEBtiiwX+1aZMIqYEFFM9hae8asjWNxGX652h9ajL0AUp0V/RNJeoFGNzZ8qkzGfSNw== dependencies: - "@plasmicpkgs/commerce" "0.0.242" + "@plasmicpkgs/commerce" "0.0.255" -"@plasmicpkgs/commerce-saleor@^0.0.206": - version "0.0.206" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-saleor/-/commerce-saleor-0.0.206.tgz#edcf8b28b849b156fcf6c1048064da6423386d35" - integrity sha512-HVMqO4OyySxQ7M4jksF82nYAB3Up9HT095GXGmNgXG9+V20DYM/Z8EpItETHBRCn1MpBxgB1bEiS+7WnGuPoLw== +"@plasmicpkgs/commerce-saleor@^0.0.219": + version "0.0.219" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-saleor/-/commerce-saleor-0.0.219.tgz#aac80cfaea342250bc01b8f458d2b31ff0e19d27" + integrity sha512-T5Sn3w5mV1iD7sWgrtKnf4hFzxt72oZtU84I1XwS86kB7zWj91dhOAzAmyCdQ2hTIZdiRN9VNzItIMATj0KdSQ== dependencies: - "@plasmicpkgs/commerce" "0.0.242" + "@plasmicpkgs/commerce" "0.0.255" debounce "^1.2.1" js-cookie "^3.0.5" -"@plasmicpkgs/commerce-shopify@^0.0.250": - version "0.0.250" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-shopify/-/commerce-shopify-0.0.250.tgz#870d5d6c10133c1f0d101420d62bba590f65dd5d" - integrity sha512-ePBM57ZyKcB1gH1PsR0TDNAdew2WHsWt+4dag98Yg5Zgq1FT93S40NfgUn+Q2obhfcpl6ngi9W9xNll5d8K/nA== +"@plasmicpkgs/commerce-shopify@^0.0.263": + version "0.0.263" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-shopify/-/commerce-shopify-0.0.263.tgz#a3ef655f5240c1dbb241a6c1169c1a8812807572" + integrity sha512-pNpcZ37eb6MXVXwJwbyrEN0WryBGrsNxulC8hBCeOL2bJkYRWgkHXev5n/yTNbNx2rqoO6xF18WWuWM77o2Ucg== dependencies: - "@plasmicpkgs/commerce" "0.0.242" + "@plasmicpkgs/commerce" "0.0.255" debounce "^1.2.1" js-cookie "^3.0.5" -"@plasmicpkgs/commerce-swell@^0.0.252": - version "0.0.252" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-swell/-/commerce-swell-0.0.252.tgz#106c091503714b7c93dc2400f424f2f95f9cbd3b" - integrity sha512-UiFDBGgfjuB4Ry3oDBplJd+E3Ex8xXoAL122YsLirzQtwOkjtyn1163pz5UQsv1rktCrX7xPQzBxKaxv+INomg== +"@plasmicpkgs/commerce-swell@^0.0.265": + version "0.0.265" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce-swell/-/commerce-swell-0.0.265.tgz#e56775cbf6e42d88b82c913c23c8923570a29e9a" + integrity sha512-chAPrc0Dsl6npxo/7+sovffKL+GB4aXal93DIf/wWEILIOhEhlFyCZdZpovPG8Q+76xLJYlTnHAYBhHxNUbxcg== dependencies: - "@plasmicpkgs/commerce" "0.0.242" + "@plasmicpkgs/commerce" "0.0.255" debounce "^1.2.1" js-cookie "^3.0.5" swell-js "^3.13.0" +<<<<<<< HEAD "@plasmicpkgs/commerce@0.0.232": version "0.0.232" resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce/-/commerce-0.0.232.tgz#1f32f70cc00eab79a076fd3c477d79c19ad0fd18" @@ -1768,6 +1778,12 @@ version "0.0.242" resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce/-/commerce-0.0.242.tgz#8f84f4c4447510d4623b811fe83e82bb8a8e3c04" integrity sha512-1zY/ZEMkUktoddyrQkBPE+oNSgJ271yjuVd38gqlJsYCteN/a6iKo6leMm9iu67iKjTzmBPneFEnyBCZ4Va13w== +======= +"@plasmicpkgs/commerce@0.0.255", "@plasmicpkgs/commerce@^0.0.255": + version "0.0.255" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/commerce/-/commerce-0.0.255.tgz#ac9df2628d3ae814d68bb9b21e5bda16bf443d9c" + integrity sha512-nUkE4GtQMGzlLga1K+FHXFhItvbAkiwNw1zzm/dnofSCtBJ58xAMcpV+4mfC6Nd9pNYDEtfI5qosMNWpXsnLwQ== +>>>>>>> upstream/master dependencies: "@vercel/fetch" "^6.2.0" debounce "^1.2.1" @@ -1776,32 +1792,32 @@ react-hook-form "^7.28.0" swr "^1.2.2" -"@plasmicpkgs/contentful@^0.0.16": - version "0.0.16" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/contentful/-/contentful-0.0.16.tgz#87074cec54d25cbaab072ccfca4729775600ce46" - integrity sha512-uhFJ2SXVqHA+9TmLNB3g9T190G/olHVccWAVyocFqlTSN9GJQyyMNFZ1EtZ0O4ldaS+xdzI2I1WTRpwG8J9PnQ== +"@plasmicpkgs/contentful@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/contentful/-/contentful-0.0.29.tgz#9ae22181b644ca6808d19e69bc504aaa4771125c" + integrity sha512-H6zW+3XTRBv2xBlG+vWa74GiK/XqzYhBcXpkbpfOZkx9nH2Z18QajnbUPYII9drgAbQU3bsS/1/LIVoxzgxF/g== -"@plasmicpkgs/fetch@^0.0.34": - version "0.0.34" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/fetch/-/fetch-0.0.34.tgz#2b74a469b7548427dec38eb9cbdf9430420f8bc6" - integrity sha512-gnRwiHWVgoLFeaKiNREaimBzNNmERxI82/yRktD3wiSrtl1uf9iLRvSDgs5iTafL9c94ix9Xp3znz1/tyzKq4A== +"@plasmicpkgs/fetch@^0.0.49": + version "0.0.49" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/fetch/-/fetch-0.0.49.tgz#c5c8d3ac7bdad9cbc68ea03a355017a0fdc3ac0e" + integrity sha512-uWEjDXbLFWb/PKwrNjOqOIOpnY/aB6ZPL6lIwEgbF3PPgXqZaK4QYRmahe0i2MSkaWgbQt17lXJIr6k+3tuprQ== -"@plasmicpkgs/framer-motion@^0.0.242": - version "0.0.242" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/framer-motion/-/framer-motion-0.0.242.tgz#c81f682b6c2a70c41c58f7995091c3765a3f9605" - integrity sha512-DzjYbkyIX/40P7A53EDiO6zEudnu2l5ZnJzFAdaiA2o088s5cCcv9GiB+GjvKPmxl4Xt/CR8FK3Vc4JHOR+9Mg== +"@plasmicpkgs/framer-motion@^0.0.255": + version "0.0.255" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/framer-motion/-/framer-motion-0.0.255.tgz#265e1670471cdb0c2b776020f00c12c24088faa1" + integrity sha512-IXFIlyt0QVsXKLurpou05B1dbG1F8Q0Yg6C+nvZr92OJ/wnCX375NWVeUtTyvmLztrIxTHNzXyf1W8avHTVsxA== dependencies: framer-motion "^5.3.0" -"@plasmicpkgs/graphql@^0.0.28": - version "0.0.28" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/graphql/-/graphql-0.0.28.tgz#3c7669b4b09ff0e4a8fdbcb3ce96b337ea280166" - integrity sha512-rpfBor5G/pTTae3RDKVCXPMEqQDk0yDWQs8tFdV5HrU3b2ynwDSIO+WcGQklmkmxXxajv+55yrDiZsUu1NiaJA== +"@plasmicpkgs/graphql@^0.0.43": + version "0.0.43" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/graphql/-/graphql-0.0.43.tgz#2abafbe2ee9f6f5fb0d7563bfa358ac35f564e48" + integrity sha512-UaGHRL4cQ3xw9XchXgxqldzIN53JXiehE1x4FtjF0YRk5Hrzxpzq6PRfuHRLNcxUcBYAOhdd0IYl3ZOEfnmRDg== -"@plasmicpkgs/lottie-react@^0.0.236": - version "0.0.236" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/lottie-react/-/lottie-react-0.0.236.tgz#e5ecdd09d89afb488c9b8c51c722bf691c97b224" - integrity sha512-e34A6RsSOG9uX4thVjQvUk7QWnupluUj9prMf2CYg4Fju69sRGBuNurwUU2On6Yr/546yEd5AHglF2wEio+9Zw== +"@plasmicpkgs/lottie-react@^0.0.249": + version "0.0.249" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/lottie-react/-/lottie-react-0.0.249.tgz#2c9621747140e8c09cfa36d0c352b80621f8f358" + integrity sha512-rTcFgBi/iPr4zWfFd9rR6KIibUomScEeZ5CsIxgDSuqeQHMVE1TNhxnAdAsXs8/trOi4SLIApDevCEMe2+6ckg== dependencies: lottie-react "^2.4.0" @@ -1810,78 +1826,78 @@ resolved "https://registry.yarnpkg.com/@plasmicpkgs/luxon-parser/-/luxon-parser-3.4.4.tgz#32150fc2c7bbad1e9e0242c897518680c6dc5fed" integrity sha512-VN/nwVehURL1TeHt7WlxuYXD7v9f87MG58YLrZeBQOcGDA9ck/gZNz7m1S1MeJ67gpnbpyJ3uFUPt+t1KnMQxw== -"@plasmicpkgs/plasmic-basic-components@^0.0.273": - version "0.0.273" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-basic-components/-/plasmic-basic-components-0.0.273.tgz#00bb6c5ef4d253820d366b99f9fb3e10d3c19ddc" - integrity sha512-px2l3GZ1CSPhLG83fH2W227nDWn8Gyrchm+PsmtPeYk9UwiqIugYcfUfUAbM5ZmFvKdP9ylAiMCylR+gcWFRHA== +"@plasmicpkgs/plasmic-basic-components@^0.0.286": + version "0.0.286" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-basic-components/-/plasmic-basic-components-0.0.286.tgz#8e789e87fd460fcd2c1789998d898d449ca18fde" + integrity sha512-U4ZzhvMW6gKy3fK9XrlsQAmmZb3Wh90weLAESLinG7aOtzx1dj0EaEGh2eDhgOiHyzFGHQk1Ts5UrMyRjR9b1A== -"@plasmicpkgs/plasmic-chakra-ui@^0.0.74": - version "0.0.74" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-chakra-ui/-/plasmic-chakra-ui-0.0.74.tgz#c604f20bf0446db59a220e4cd0ba6d80c89293ac" - integrity sha512-pCmbxEK40OS8kPgdCl449+KcURU8/RkGRtTsfevlJf+KwgXPdDfMcS0QFyPzURcym2m36aeV46wqESha3BdUDQ== +"@plasmicpkgs/plasmic-chakra-ui@^0.0.87": + version "0.0.87" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-chakra-ui/-/plasmic-chakra-ui-0.0.87.tgz#ed8211302f381fe06d15111eb0097879de823648" + integrity sha512-hssIqOFNX+4Hi7dG3MMvrN+QIJVBzf/ZSOk/OWYEk3eY97YUIK3vWX89IcTt9sWRyrpUmLYi/GLM/tcy8vccuA== dependencies: "@chakra-ui/react" "^2.8.1" -"@plasmicpkgs/plasmic-cms@^0.0.312": - version "0.0.312" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-cms/-/plasmic-cms-0.0.312.tgz#a09945c48e3b073a3e63ccd1daccaa63907625ec" - integrity sha512-LOyep0lGP7yyqOewXLqAXEu8QFzdM2WV1a+cNpQUhyYG2BLG1CHvND++2l9yrLDkConazv1EfhNguPzJDclMyA== +"@plasmicpkgs/plasmic-cms@^0.0.326": + version "0.0.326" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-cms/-/plasmic-cms-0.0.326.tgz#f5470f0d2b2819a344c82bcc9ab084c0bd7cfdb0" + integrity sha512-/80xWIR+zu6QQSD2XILRotwQ/4O1C+8fOtyAqH6cgVTD0Ur3I7/MZ5sc1DZQpkVu5UG8RovPtdPry6jyQOjLKQ== dependencies: - "@plasmicpkgs/cms" "0.0.21" + "@plasmicpkgs/cms" "0.0.35" dayjs "^1.10.7" -"@plasmicpkgs/plasmic-content-stack@^0.0.198": - version "0.0.198" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-content-stack/-/plasmic-content-stack-0.0.198.tgz#aa7fc36964441cdf8b7256c6ea275b5c74691dfe" - integrity sha512-ZjxCt//oMfTDDgYm6tnBJyDAg/Ni07QbBLG5G0VNRio/R8dKQdMKlRwWZUPddvrXBWRWBXCHoLFddJIccgZPKw== +"@plasmicpkgs/plasmic-content-stack@^0.0.211": + version "0.0.211" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-content-stack/-/plasmic-content-stack-0.0.211.tgz#4df68dc00a054969f1005214f5c53572e1f4fbe0" + integrity sha512-DZLMlUuR+/Dj1oLs8TcPy+/CwnC58jNEkKAb3LXohD2vZSvj83tDa89TGy81PhxtDIpBQgLwrmyDXrDwlLAm6g== dependencies: change-case "^4.1.2" contentstack "^3.15.1" dlv "^1.1.3" -"@plasmicpkgs/plasmic-contentful@^0.0.192": - version "0.0.192" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-contentful/-/plasmic-contentful-0.0.192.tgz#b5d5638bf73be92784013eaaf5cd959ef7ec0741" - integrity sha512-yvhjPIrg3oMZRDNHfB5Dwht0DajxVIFiK7+L1jLWJj1aHfJ5xq1t4mvny/szC3uIiNLEMmociQqEcEuQQKULZA== +"@plasmicpkgs/plasmic-contentful@^0.0.205": + version "0.0.205" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-contentful/-/plasmic-contentful-0.0.205.tgz#c34b99f328b6f34f0d0b270839466828c5cf9e31" + integrity sha512-pccbh746lP1zA6YeaWx/EQKr914ESU5a+H+SO77Hci1XFdMeuj6A4aJdbDYb7HwWVaxaDQPCfbQ7LugarmkSvw== dependencies: "@contentful/rich-text-html-renderer" "^15.13.1" "@contentful/rich-text-react-renderer" "^15.12.1" change-case "^4.1.2" dlv "^1.1.3" -"@plasmicpkgs/plasmic-embed-css@^0.1.228": - version "0.1.228" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-embed-css/-/plasmic-embed-css-0.1.228.tgz#bf5efc2f37f38826a7c195a1eb6e7f23d349310e" - integrity sha512-SeZU83SZSnQfysGzkvzOkfjrde20FZMnYjWvuxeadj+jck0Oe5UDjAdchD9NXRSScYud7178Pr+QpkILq+ezog== +"@plasmicpkgs/plasmic-embed-css@^0.1.241": + version "0.1.241" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-embed-css/-/plasmic-embed-css-0.1.241.tgz#db490117ad7a6d44501f5152b59e9949f511e31e" + integrity sha512-DmU9fHKsHMPgeWwi3/aWLh9pht4eyQ83r6k8VZMm6EYGkv03BJldBUqXlf0FlMKf2jnKsn3QwyeYNEPtOl+ktA== -"@plasmicpkgs/plasmic-graphcms@^0.0.215": - version "0.0.215" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-graphcms/-/plasmic-graphcms-0.0.215.tgz#3a1186cc234597f78eaabfe86dc52c3e40745a7a" - integrity sha512-7/0qCW6U5GaTrT7/1qRLZj01v+lVBxFhPlyBhclzPebPz7toHFsd3WYFh7kr1zJVcSh2Ix1wqkkpEBTAkcUBig== +"@plasmicpkgs/plasmic-graphcms@^0.0.228": + version "0.0.228" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-graphcms/-/plasmic-graphcms-0.0.228.tgz#3011d42700e1c6df51a1e90c20602f389908d56d" + integrity sha512-oBlheemq0WcEJgD7BeaotU5YanK1Q8cxhojtP1e3GUcO9tc3TEMux1ZdZ4mmmlZ1AYPOSjVtNyWKvjTyOPPZLQ== dependencies: dlv "^1.1.3" -"@plasmicpkgs/plasmic-link-preview@^1.0.146": - version "1.0.146" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-link-preview/-/plasmic-link-preview-1.0.146.tgz#5f786398b0822d0f2448b90260f7c6a19c3ea56b" - integrity sha512-6t7shZxAeUE0laLaRH4vAluqad0q/cTz0/90O9tEqVO+ojBXiD2lWDmYEWbp4ii72p71GZ7FVdOQnnKeOx2a0g== +"@plasmicpkgs/plasmic-link-preview@^1.0.167": + version "1.0.167" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-link-preview/-/plasmic-link-preview-1.0.167.tgz#c9d417b845dd61069dfef6fd38fd5957ee526a09" + integrity sha512-l3ogxSew52zS/oBCiDrY0yNPEo3AQ1KJ06p0oiVd5I6E6+7Q6B3eUdJQza02SCuRoE2TgX0tBsM9IYqRN9QrSg== dependencies: node-html-parser "^6.1.11" -"@plasmicpkgs/plasmic-nav@^0.0.214": - version "0.0.214" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-nav/-/plasmic-nav-0.0.214.tgz#c5b20b6d9fd155b800b9506aa36373e9ca3cb886" - integrity sha512-KTZUuKXGKGtY2FHmGdGiSQ+p0jMh2lR4gcVYDiUo5s+yDkP3whDjkkTPIVVZhupw9ljlKZBcC8EzjbdfUQr11Q== +"@plasmicpkgs/plasmic-nav@^0.0.227": + version "0.0.227" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-nav/-/plasmic-nav-0.0.227.tgz#59c2e0983789c1d252997eb8153abe54e8f0fd4c" + integrity sha512-Sp4ApW5/BcPaDBnFyNgzP33lNjWkdn3tXZlIOETpHI518GoHeHzuAgTcXhcM/GFmDeAJCdM5m19kF+sJLxJguQ== -"@plasmicpkgs/plasmic-query@^0.0.263": - version "0.0.263" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-query/-/plasmic-query-0.0.263.tgz#c8f4ef14165bc6e29fe692a5ef739e7a206f5ed6" - integrity sha512-5m8MbAd3x9k8umglyIqbmNLZFCFUL+ySIwOoX16RfhGC/CYLFWmb2gug8+Mj7EVn5qwBdjl6zCqcQtZZQ/4Glw== +"@plasmicpkgs/plasmic-query@^0.0.276": + version "0.0.276" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-query/-/plasmic-query-0.0.276.tgz#76ce4e101039b4f7c4dc52d7680432fe157d4217" + integrity sha512-7uQMHzDgRcTrWD2mcwN/0VlpftIkcA7XLZBmfiE3fCfyKtxf/p9/zPL49PTVeQ2MlgW0pSNOIKXRZsT6NRiMVA== -"@plasmicpkgs/plasmic-rich-components@^1.0.245": - version "1.0.245" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-rich-components/-/plasmic-rich-components-1.0.245.tgz#ef28968b42a51d05f692ccab47ae63fc9afa9c15" - integrity sha512-XvdibpnUvEV2Vs5ETnb/68uXLb5/luWF/u5wLrc+ykFZUFANl1f1Lnc3N+625VWr1GFWSELG6AWsNRPibegYhg== +"@plasmicpkgs/plasmic-rich-components@^1.0.267": + version "1.0.267" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-rich-components/-/plasmic-rich-components-1.0.267.tgz#47c53ddf0878919e3cc04de3efd9a6ab4b45c107" + integrity sha512-BeKYm041uOyV2oJ74sJQp6OjDYBi72UlZHzXU6h0zb84ieHK7Z9T7B4eGJsGb9CeULchmGpPVWpg2VOW/2yK1A== dependencies: "@ctrl/tinycolor" "^3.6.1" "@plasmicpkgs/luxon-parser" "^3.4.4" @@ -1891,51 +1907,51 @@ fast-stringify "^2.0.0" lodash "^4.17.21" -"@plasmicpkgs/plasmic-sanity-io@^1.0.223": - version "1.0.223" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-sanity-io/-/plasmic-sanity-io-1.0.223.tgz#b69643a6b4abe7af0a1204e55706bde861b07555" - integrity sha512-ESESlcBlogXJeTXqSKr7zpqyB40JPJmnlCEDBPrtDyaKDMZfcDXAwhhctCRQYcGuhEB3yQkulSi4bqQkqwKj4A== +"@plasmicpkgs/plasmic-sanity-io@^1.0.236": + version "1.0.236" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-sanity-io/-/plasmic-sanity-io-1.0.236.tgz#c896b9e2f1a72549b73072de3800ba43e80e1884" + integrity sha512-zHToI19JIo8uAWC/coRVMbiGd+Ee2WjXuHiH97c6Vcc6PUIvrP4/MwNXJnSnMoXXxif4t5XyCg3WOjMg8GvsZA== dependencies: "@sanity/client" "^6.2.0" "@sanity/image-url" "^1.0.2" change-case "^4.1.2" dlv "^1.1.3" -"@plasmicpkgs/plasmic-strapi@^0.1.200": - version "0.1.200" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-strapi/-/plasmic-strapi-0.1.200.tgz#2ff3dabc9d259138f06f582447992d315c068cc7" - integrity sha512-OMNWiT5jhFqXOC13p82T8EEXGJ1Ew4RS4/7NWb+uKX4IJSmf0dJVyvNRVx5p7/aDs5XwDy6xZU6pt3Q1xLgJRQ== +"@plasmicpkgs/plasmic-strapi@^0.1.214": + version "0.1.214" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-strapi/-/plasmic-strapi-0.1.214.tgz#240dac54880788161a183ad2b9e1760312717079" + integrity sha512-YAv96Dce+XnUrzl9cDNVEpQSgLz5WZPbCOwyejIJEtTMOwZb4f8fmvl220Gwr51wx/2Oir7jj/AJhcLTA7diqw== dependencies: - "@plasmicpkgs/strapi" "0.0.19" + "@plasmicpkgs/strapi" "0.0.33" change-case "^4.1.2" -"@plasmicpkgs/plasmic-tabs@^0.0.85": - version "0.0.85" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-tabs/-/plasmic-tabs-0.0.85.tgz#430665f85a594ef460d7a19d0910b27ba9152468" - integrity sha512-lB97CWegZRQJ6a4ObLvh823LNE5V4JdeHLwN8kW5DgUwYwcRu5y0x8dIV+Zu2PWE1bg/mSsBoVFP+SuNTcrsng== +"@plasmicpkgs/plasmic-tabs@^0.0.98": + version "0.0.98" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-tabs/-/plasmic-tabs-0.0.98.tgz#94c2e3f882c75f08f1387eb09569e43dcf31766a" + integrity sha512-pA1ExxpCuUC8iocwON0OrQp4/IvaWuWzeIDgQlqwwhN+aESFdt1MI/t+vrkPIipUacwZdz8XNe4RWN4G4yT0AQ== dependencies: - "@plasmicapp/host" "2.0.1" + "@plasmicapp/host" "2.0.14" constate "^3.3.2" -"@plasmicpkgs/plasmic-wordpress-graphql@^0.0.160": - version "0.0.160" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-wordpress-graphql/-/plasmic-wordpress-graphql-0.0.160.tgz#6636030fe983349ffc49307e786afb3f9bfd5b27" - integrity sha512-yKTKffpMG8JyTkYbaAmXWsCJjpBGYlsxeU3W3hP5/BBo9aZiKpNanL5RQpdf7aGzYk3WicQ7mXrSdj2/xxkGkg== +"@plasmicpkgs/plasmic-wordpress-graphql@^0.0.173": + version "0.0.173" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-wordpress-graphql/-/plasmic-wordpress-graphql-0.0.173.tgz#62ffb7c6bd2cc21dceffe6150d439082b2deffc9" + integrity sha512-YYtqK1U435udAW56XdnjZ69LFdDFDgnLlC5SfwXFSjYr2/r1O6nXIyvddBanzdWfd6DfUQS8J/dl+Hbg2iy9xA== dependencies: dlv "^1.1.3" -"@plasmicpkgs/plasmic-wordpress@^0.0.170": - version "0.0.170" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-wordpress/-/plasmic-wordpress-0.0.170.tgz#9ea7edd69bdb858191a8cb0327a40b4e9bf1492d" - integrity sha512-hUz9fz4MJqbDD8PbQMeAaIlr2RVTGdOSsfz7wd0AYrg1WVR/Wq2AJXGOQ0uCgJ9Kcd0ZVfgE9qhmdYgMLCxoQg== +"@plasmicpkgs/plasmic-wordpress@^0.0.184": + version "0.0.184" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/plasmic-wordpress/-/plasmic-wordpress-0.0.184.tgz#e65757d24e2948a3dec98f4fd6778c7614f9d15b" + integrity sha512-xlldsmaN+Ka40huZzuBcu4+8mKfaTCRaqP4qbmV6jg5V4U4El0eXdRfC/ztH+zubqYU6zFKHr1SPuJveH/mAPg== dependencies: - "@types/dlv" "^1.1.2" + "@types/dlv" "^1.1.5" dlv "^1.1.3" -"@plasmicpkgs/radix-ui@^0.0.102": - version "0.0.102" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/radix-ui/-/radix-ui-0.0.102.tgz#166e9e32cb9313b6d87c1554f7dd23ed0fc5cc4c" - integrity sha512-7EINlM5xK6WXYEmVo48a9gxhlWIkRWVLZpIp7AYtTHiOvH1R0zciCwgbyhmI0viAxyGB7bLGmwi5SIk+nXHJKQ== +"@plasmicpkgs/radix-ui@^0.0.115": + version "0.0.115" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/radix-ui/-/radix-ui-0.0.115.tgz#e54f64f3444a9eb6db0e51ffd195d9c1d76c4aa5" + integrity sha512-GjPkXtE1e40yKMGflg3t3K1cCX/ZF7xN4avyZXk5bspz7CVPw297pGKRhL9uerrzoRJpYxq/3+N4uoJPhEleGA== dependencies: "@radix-ui/react-context-menu" "^2.1.4" "@radix-ui/react-dialog" "^1.0.5" @@ -1949,10 +1965,10 @@ lucide-react "^0.279.0" remeda "^1.27.0" -"@plasmicpkgs/react-aria@^0.0.176": - version "0.0.176" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-aria/-/react-aria-0.0.176.tgz#f3ef2e1691c7bdddbfdb7938618a60493384599f" - integrity sha512-F8wQfUu3CCPQhsg+uC6fDLCGMklCvP3mo+xpL0UYyie1ZXhfMP5WdAc7kcOZOCw3Ft/BViTdU9cWdUYstoVR5w== +"@plasmicpkgs/react-aria@^0.0.192": + version "0.0.192" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-aria/-/react-aria-0.0.192.tgz#8f224375d71137d47039c38ecd23381450168b75" + integrity sha512-lLjbdEfFbmqKqFJxX8b/YYnAz1i+eztTZ3WgTH0hPmy8pixHB9f/5GukN1ft8DnTen04gzlISHYuCD/EUyHYIg== dependencies: "@react-aria/i18n" "^3.12.9" "@react-aria/utils" "^3.29.0" @@ -1960,84 +1976,84 @@ react-aria-components "^1.9.0" react-stately "^3.38.0" -"@plasmicpkgs/react-awesome-reveal@^3.8.246": - version "3.8.246" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-awesome-reveal/-/react-awesome-reveal-3.8.246.tgz#cf735430db2c45aa84e92f96ba8cf6ff2a33beff" - integrity sha512-0J4UGcAEP4VrL52H+Q110y/1XPNvaVdBzW42Mn/Ls5BRU5KGRlSdOQszyk/dCtvBFtSpoh8EDOZg6xpF6ECDRg== +"@plasmicpkgs/react-awesome-reveal@^3.8.259": + version "3.8.259" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-awesome-reveal/-/react-awesome-reveal-3.8.259.tgz#aeb0bf339b23cce3719b8f781734ff37346106de" + integrity sha512-mT3Fo2toewU1X2dUpE//NN8Y+kwJVWzuYwxfGxPPG3i5jOCrqMpYSdmK9OXEEopOJzbRPsAGHwyYiYi0Dz6vEA== dependencies: "@emotion/react" "^11.11.4" react-awesome-reveal "^4.2.12" -"@plasmicpkgs/react-chartjs-2@^1.0.154": - version "1.0.154" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-chartjs-2/-/react-chartjs-2-1.0.154.tgz#f4e0e302d73ff3a9f3c4a6fe2baada8c0accb944" - integrity sha512-2Y6C9v2jPzsvMPcBiYnSEpmhoqLKoLkVVSwtcRwBdQXxk6KPHe30ZKuCdLAJXFocbhyuZgymnXrKGhMa0shMaQ== +"@plasmicpkgs/react-chartjs-2@^1.0.167": + version "1.0.167" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-chartjs-2/-/react-chartjs-2-1.0.167.tgz#063d3cf8edbc9d80eb68eca11c7ac7b429d77050" + integrity sha512-lqFHvSFp/kZzBjTovmcjtxeCyX3PVNtmD7JCjFrUhQVWDk7RZ7AVj6/8rPH2OOUlw/CDlczMgr/rpYv8UqAm5g== dependencies: deepmerge "^4.3.1" -"@plasmicpkgs/react-parallax-tilt@^0.0.244": - version "0.0.244" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-parallax-tilt/-/react-parallax-tilt-0.0.244.tgz#ee45d1ed2c17eb6160c6004e1e3f5aa294e18658" - integrity sha512-PZf/bYvdihb6bT6PBU5p/GIbFHxkpQXziHvOXZLZpGTdL44waE7xZXGIFYg9LCKOHeh0chkxHrc02yFM4T/LKw== +"@plasmicpkgs/react-parallax-tilt@^0.0.257": + version "0.0.257" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-parallax-tilt/-/react-parallax-tilt-0.0.257.tgz#fad56085155c38fd484288ee8f121a6b98741c18" + integrity sha512-Jm06Jeh7cmTqFXUMy5X2/jXRdR35kfEWroRWcVShDsDF6mEdRCzOP1ymW15PsLdm6JfH0sS77miX6/l8Bp7Maw== dependencies: react-parallax-tilt "^1.5.74" -"@plasmicpkgs/react-quill@^1.0.107": - version "1.0.107" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-quill/-/react-quill-1.0.107.tgz#dc14846ec99c8f07d06ce736074501103d097011" - integrity sha512-l/U+DJe76Q+z38bLm/yJkfQKWVI+mJEnADxh/+uegj3ny4+rZSkOzoKXnrht96VhHqRuFt04wyrIwh5c4UNEjg== +"@plasmicpkgs/react-quill@^1.0.120": + version "1.0.120" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-quill/-/react-quill-1.0.120.tgz#137299773834ce5caa60a7ca32356349f2071362" + integrity sha512-qICZAJfabNkPjDQ3laRNolkTHesrJutqIwNS6I+y8rjFtn8WdLDBSi0iRm5ImXXXPptQsupUcRqofKRwd7GWow== dependencies: react-quill "^2.0.0" -"@plasmicpkgs/react-scroll-parallax@^0.0.253": - version "0.0.253" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-scroll-parallax/-/react-scroll-parallax-0.0.253.tgz#abef3f0b61889b47e92311dabc0fbc3e22bb472e" - integrity sha512-F2Oqoq+j4/gxn3PORH3i9Xqh7LlqxAVUdDiZG3Q4vahPLub0NYZqztCrWOZV33b/FKyu49gLymsNjg90aS01HA== +"@plasmicpkgs/react-scroll-parallax@^0.0.266": + version "0.0.266" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-scroll-parallax/-/react-scroll-parallax-0.0.266.tgz#e967964b48e65cf9e03533e7ef0d549f104b508e" + integrity sha512-94IzZzoTjnXzYovoSjs38P45Aeto08mnFDu0Vi1RvgmA0dwb/ZgPWeNwRhXfp46ekdzN3qsqiyF1sKoHw1R47Q== dependencies: react-scroll-parallax "^3.5.0" resize-observer-polyfill "^1.5.1" -"@plasmicpkgs/react-slick@^0.0.265": - version "0.0.265" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-slick/-/react-slick-0.0.265.tgz#10a57be3c2ca74845581889d48a5be7067e053c2" - integrity sha512-hLEiG4WhdvC4MtUI8hKyh4tpzq6jSoDNtTQStNMD9OIrkWiAW9vf94LRy+Y7cMGLF61UTQ6TI09rsrESGtYkLQ== +"@plasmicpkgs/react-slick@^0.0.278": + version "0.0.278" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-slick/-/react-slick-0.0.278.tgz#73a656123aebbee11f8701e414f02d4a3ebb44db" + integrity sha512-cjw+uoQn0v+HK42yC5qi0XaUtwX6KM7ZtLX/nGm4SYMBkWeKVgToKL2M1e8OTZI6lVB6HfD42cCtzLXoXr/52Q== dependencies: "@seznam/compose-react-refs" "^1.0.6" react-slick "^0.28.1" slick-carousel "^1.8.1" -"@plasmicpkgs/react-twitter-widgets@^0.0.242": - version "0.0.242" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-twitter-widgets/-/react-twitter-widgets-0.0.242.tgz#d5fe2f03246401d11cc62af8556357c31071f0a6" - integrity sha512-GyzgLFHqZivxD3GO7agB6xqoZhTF8feR6ksT/WYh8IOJngSYwRIoTHaU+MOim3BlrLEnrGatCi4SEpX2rd4+aw== +"@plasmicpkgs/react-twitter-widgets@^0.0.255": + version "0.0.255" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-twitter-widgets/-/react-twitter-widgets-0.0.255.tgz#36766fba840e69735859a9bfffb052fe9cfe55df" + integrity sha512-d0WsKLavhVk9fOs5JyfvipHI/OJXbRGnpLnDtzwqvwfnrut+/FhJ1GfmOKpws7vdlOS5BMxrEbzLKtHRXg6tLQ== dependencies: react-twitter-widgets "^1.10.0" -"@plasmicpkgs/react-youtube@^7.13.248": - version "7.13.248" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-youtube/-/react-youtube-7.13.248.tgz#fc59c6e08fde4880a3d725023cfd6197c76429fb" - integrity sha512-ALI9+j3fUKlKfZJruYHbC2LojEP98V45OHY2PZB7NZcymqBWis3wAXhEc50/4YNGXmizEKs9E0nAc3gFVPcflw== +"@plasmicpkgs/react-youtube@^7.13.261": + version "7.13.261" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/react-youtube/-/react-youtube-7.13.261.tgz#4c3a13189ea3400847a2807bd93653d30a28d876" + integrity sha512-feU9fkKYRKePZ76Y693PgHQ/HfFXdkLhZWivVXXhH5p/qrLSeLoKOuCplWD5USyb6+5Ahv7P90QbC947nXQBdg== dependencies: react-youtube "9.0.2" -"@plasmicpkgs/rive@^0.0.30": - version "0.0.30" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/rive/-/rive-0.0.30.tgz#b159bfc6292c1fc3989450429b7913a6493fb097" - integrity sha512-qq7JSiDcfc3TBo1iDuuw7iQqgs1AhDP0f0OH9JwvsFbAgamjTM0q4PN0Fx3pWBDl/T4+ZHyUrlTBLHsFvCeUpg== +"@plasmicpkgs/rive@^0.0.43": + version "0.0.43" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/rive/-/rive-0.0.43.tgz#2be8827bae3d235493d9e65b35b16902944a65f3" + integrity sha512-H0sSCo7fX+bukfkqrcBvWjJSnaPQz6ybyCyPvA8Ro+RxSPUS1DzNdsoKvoa+sHkd/KQZ73s7z3WVtXAuO4+eDw== dependencies: "@rive-app/react-canvas" "^4.18.8" -"@plasmicpkgs/strapi@0.0.19", "@plasmicpkgs/strapi@^0.0.19": - version "0.0.19" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/strapi/-/strapi-0.0.19.tgz#176514015586dd4bca6f16970ad2d2875328f9d2" - integrity sha512-J6f+aFTm17bIsLswmLxec38LcIc8CulExNGSqQQz6/kMelB3EagHQ1GNrVWE2peEGBsCdNmn4e8Oo5wE4SXPyA== +"@plasmicpkgs/strapi@0.0.33", "@plasmicpkgs/strapi@^0.0.33": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/strapi/-/strapi-0.0.33.tgz#d018b76f63c7658e3de10fa3357ef41c845e683b" + integrity sha512-8QQvjZNFctMsZElzTtQBU+76CCuO8mO5zc8/Pk3CAfECnoJbBOauAzVFjnxY076A/NPAmrScuxZkgSCpVn6TTw== dependencies: qs "^6.11.0" -"@plasmicpkgs/tiptap@^0.0.27": - version "0.0.27" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/tiptap/-/tiptap-0.0.27.tgz#a9d7fca038574f7f9f8f2498c0dbc82a4648c5f9" - integrity sha512-DMaHT33U6KmyrLeTIgJaRH2/qvfM4EgfDeGOxsV1dr1u4pgFCamVtUJrUsQPl8wHrPbqD/6dl+ms4sOyPw6/Mg== +"@plasmicpkgs/tiptap@^0.0.48": + version "0.0.48" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/tiptap/-/tiptap-0.0.48.tgz#f01e0729b79353b52b8feb3d9a8b21a1e8743726" + integrity sha512-IiLoPqcwEeA1V/nyZ2oz2itdG1G4mIWQqpFCWHTKXfAnnjouHLdqgpNg02mTMZVRpN0W8Pap5JwkwHAm2WNZUw== dependencies: "@tiptap/core" "^2.1.12" "@tiptap/extension-bold" "^2.1.12" @@ -2056,17 +2072,17 @@ antd "^5.11.5" tippy.js "^6.3.7" -"@plasmicpkgs/vanilla-cookieconsent@^0.0.20": - version "0.0.20" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/vanilla-cookieconsent/-/vanilla-cookieconsent-0.0.20.tgz#16ee140227fd6965d8a59be9ec57671c3a478edb" - integrity sha512-8noJc6W5C6f6RPefdTK/bFyaaYP4r5PZtPRsWYqtceXOLlWAIrvrYt6RJEfC9go+ih5vIraOY1LJQlpSrXbYAg== +"@plasmicpkgs/vanilla-cookieconsent@^0.0.33": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/vanilla-cookieconsent/-/vanilla-cookieconsent-0.0.33.tgz#452c6cced8230fb2196aee2dd69eb0fc292c06ac" + integrity sha512-WKdWrD2tsTI4Ohodcb5y8a4DGStwGwvOFoJqRZz5TLMg/L6HPMvGu/5AzmMXHJ8Bfyh0XMC0ucdczx3ePZJVTw== dependencies: vanilla-cookieconsent "^3.1.0" -"@plasmicpkgs/wordpress@^0.0.20": - version "0.0.20" - resolved "https://registry.yarnpkg.com/@plasmicpkgs/wordpress/-/wordpress-0.0.20.tgz#4cbf04196e7d65c648f8e39b43755ca27becd870" - integrity sha512-hQETHX6nVULU4/PQs4FvIqgR92X1Ub4jOFAHS4ifq0CtT6Nbt5nqkGSvUMo1oMBFQEvDSxME3rl0jBHAmrnF4w== +"@plasmicpkgs/wordpress@^0.0.34": + version "0.0.34" + resolved "https://registry.yarnpkg.com/@plasmicpkgs/wordpress/-/wordpress-0.0.34.tgz#0fe52836ed6e73f03c079e9414b23b37beb46a34" + integrity sha512-TjfVd0MqT7rFTwx3YxtKYBc0wMEjs9rJmrm0xakgcFR1bxZqvmnat9X1LlGdEpEXqvC8nKFHRHiaRe3OGdWt3g== "@popperjs/core@^2.9.0", "@popperjs/core@^2.9.3": version "2.11.8" @@ -2453,9 +2469,9 @@ rc-util "^5.24.4" "@rc-component/trigger@^1.17.0", "@rc-component/trigger@^1.18.0", "@rc-component/trigger@^1.18.2", "@rc-component/trigger@^1.3.6", "@rc-component/trigger@^1.5.0", "@rc-component/trigger@^1.7.0": - version "1.18.2" - resolved "https://registry.yarnpkg.com/@rc-component/trigger/-/trigger-1.18.2.tgz#dc52c4c66fa8aaccaf0710498f2429fc05454e3b" - integrity sha512-jRLYgFgjLEPq3MvS87fIhcfuywFSRDaDrYw1FLku7Cm4esszvzTbA0JBsyacAyLrK9rF3TiHFcvoEDMzoD3CTA== + version "1.18.3" + resolved "https://registry.yarnpkg.com/@rc-component/trigger/-/trigger-1.18.3.tgz#b323b9e33f2700ca8d24a96f21401ab7b0eafdcd" + integrity sha512-Ksr25pXreYe1gX6ayZ1jLrOrl9OAUHUqnuhEx6MeHnNa1zVM5Y2Aj3Q35UrER0ns8D2cJYtmJtVli+i+4eKrvA== dependencies: "@babel/runtime" "^7.23.2" "@rc-component/portal" "^1.1.0" @@ -3885,10 +3901,10 @@ dependencies: "@types/retry" "*" -"@types/dlv@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/dlv/-/dlv-1.1.2.tgz#02d4fcc41c5f707753427867c64fdae543031fb9" - integrity sha512-OyiZ3jEKu7RtGO1yp9oOdK0cTwZ/10oE9PDJ6fyN3r9T5wkyOcvr6awdugjYdqF6KVO5eUvt7jx7rk2Eylufow== +"@types/dlv@^1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@types/dlv/-/dlv-1.1.5.tgz#14aab363b57cd38828e9e380fe44b1bb6b08f732" + integrity sha512-JHOWNfiWepAhfwlSw17kiWrWrk6od2dEQgHltJw9AS0JPFoLZJBge5+Dnil2NfdjAvJ/+vGSX60/BRW20PpUXw== "@types/event-source-polyfill@1.0.1": version "1.0.1" @@ -3925,14 +3941,7 @@ "@types/node" "*" form-data "^3.0.0" -"@types/node@*": - version "20.8.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.10.tgz#a5448b895c753ae929c26ce85cab557c6d4a365e" - integrity sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w== - dependencies: - undici-types "~5.26.4" - -"@types/node@10.12.18": +"@types/node@*", "@types/node@10.12.18": version "10.12.18" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== @@ -4061,11 +4070,6 @@ agentkeepalive@^4.2.1: depd "^1.1.2" humanize-ms "^1.2.1" -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -4073,7 +4077,7 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0, ansi-styles@^4.1.0: +ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== @@ -4228,11 +4232,6 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - axios@^1.15.0: version "1.15.0" resolved "https://registry.yarnpkg.com/axios/-/axios-1.15.0.tgz#0fcee91ef03d386514474904b27863b2c683bf4f" @@ -4251,11 +4250,6 @@ babel-plugin-macros@^3.1.0: cosmiconfig "^7.0.0" resolve "^1.19.0" -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -4271,14 +4265,6 @@ boolbase@^1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - braces@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" @@ -4380,10 +4366,10 @@ charenc@0.0.2: resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== -chart.js@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-4.2.1.tgz#d2bd5c98e9a0ae35408975b638f40513b067ba1d" - integrity sha512-6YbpQ0nt3NovAgOzbkSSeeAQu/3za1319dPUQTXn9WcOpywM8rGKxJHrhS8V8xEkAlk8YhEfjbuAPfUyp6jIsw== +chart.js@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-4.5.1.tgz#19dd1a9a386a3f6397691672231cb5fc9c052c35" + integrity sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw== dependencies: "@kurkle/color" "^0.3.0" @@ -4409,15 +4395,6 @@ client-only@^0.0.1: resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - clone@^2.1.1, clone@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" @@ -4474,11 +4451,6 @@ compute-scroll-into-view@^1.0.17: resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz#6a88f18acd9d42e9cf4baa6bec7e0522607ab7ab" integrity sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg== -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - constant-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" @@ -4538,11 +4510,6 @@ crelt@^1.0.0: resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72" integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g== -cross-port-killer@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cross-port-killer/-/cross-port-killer-1.4.0.tgz#9e37b79c613b830e08122e342d31d5dadc3c7b67" - integrity sha512-ujqfftKsSeorFMVI6JP25xMBixHEaDWVK+NarRZAGnJjR5AhebRQU+g+k/Lj8OHwM6f+wrrs8u5kkCdI7RLtxQ== - cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -4605,10 +4572,10 @@ date-fns@2.x: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== -dayjs@1.x, dayjs@^1.10.7, dayjs@^1.11.1, dayjs@^1.11.10, dayjs@^1.11.9: - version "1.11.10" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" - integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== +dayjs@1.x, dayjs@^1.10.7, dayjs@^1.11.1, dayjs@^1.11.10, dayjs@^1.11.20, dayjs@^1.11.9: + version "1.11.20" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.20.tgz#88d919fd639dc991415da5f4cb6f1b6650811938" + integrity sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ== debounce@^1.2.1: version "1.2.1" @@ -4757,11 +4724,6 @@ dunder-proto@^1.0.1: es-errors "^1.3.0" gopd "^1.2.0" -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - "enquire-js@link:./internal_pkgs/enquire-js": version "0.0.0" uid "" @@ -4815,11 +4777,6 @@ es6-promise@^4.1.1: resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - escape-html@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -4974,21 +4931,15 @@ from2@^2.3.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-extra@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: - at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" universalify "^2.0.0" -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" @@ -4999,11 +4950,6 @@ functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - get-intrinsic@^1.0.2, get-intrinsic@^1.2.4, get-intrinsic@^1.2.6: version "1.3.0" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" @@ -5041,11 +4987,6 @@ get-nonce@^1.0.0: resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== -get-port@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-7.1.0.tgz#d5a500ebfc7aa705294ec2b83cc38c5d0e364fec" - integrity sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw== - get-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" @@ -5054,18 +4995,6 @@ get-proto@^1.0.1: dunder-proto "^1.0.1" es-object-atoms "^1.0.0" -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - gopd@^1.0.1, gopd@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" @@ -5149,10 +5078,10 @@ ieee754@^1.2.1: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -immer@^10.0.3: - version "10.0.3" - resolved "https://registry.yarnpkg.com/immer/-/immer-10.0.3.tgz#a8de42065e964aa3edf6afc282dfc7f7f34ae3c9" - integrity sha512-pwupu3eWfouuaowscykeckFmVTpqbzW+rXFCX8rQLkZzM9ftBmU/++Ra+o+L27mz03zJTlyV4UUr+fdKNffo4A== +immer@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/immer/-/immer-10.2.0.tgz#88a4ce06a1af64172d254b70f7cb04df51c871b1" + integrity sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw== import-fresh@^3.2.1: version "3.3.0" @@ -5162,15 +5091,7 @@ import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@~2.0.3: +inherits@^2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -5244,11 +5165,6 @@ is-extendable@^1.0.0: dependencies: is-plain-object "^2.0.4" -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -5563,13 +5479,6 @@ mimic-response@^3.1.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== -minimatch@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" @@ -5585,20 +5494,15 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@2.1.2: +ms@2.1.2, ms@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.0.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -nanoid@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-5.0.2.tgz#97588ebc70166d0feaf73ccd2799bb4ceaebf692" - integrity sha512-2ustYUX1R2rL/Br5B/FMhi8d5/QzvkJ912rBYxskcpu0myTHzSZfTr1LAS2Sm7jxRUObRrSBFoyzwAhL49aVSg== +nanoid@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-5.1.7.tgz#a9f09a4ce73ba0b88830af36ee49666bad7827b6" + integrity sha512-ua3NDgISf6jdwezAheMOk4mbE1LXjm1DfMUDMuJf4AqxLFK3ccGpgWizwa5YV7Yz9EpXwEaWoRXSb/BnV0t5dQ== no-case@^3.0.4: version "3.0.4" @@ -5622,7 +5526,7 @@ node-html-parser@^1.4.9: dependencies: he "1.2.0" -node-html-parser@^6.1.11, node-html-parser@^6.1.5: +node-html-parser@^6.1.11: version "6.1.13" resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-6.1.13.tgz#a1df799b83df5c6743fcd92740ba14682083b7e4" integrity sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg== @@ -5687,13 +5591,6 @@ omit.js@^2.0.2: resolved "https://registry.yarnpkg.com/omit.js/-/omit.js-2.0.2.tgz#dd9b8436fab947a5f3ff214cb2538631e313ec2f" integrity sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg== -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - open@^7.4.2: version "7.4.2" resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" @@ -5707,20 +5604,15 @@ orderedmap@^2.0.0: resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-2.1.1.tgz#61481269c44031c449915497bf5a4ad273c512d2" integrity sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g== -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - p-is-promise@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-3.0.0.tgz#58e78c7dfe2e163cf2a04ff869e7c1dba64a5971" integrity sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ== -papaparse@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.4.1.tgz#f45c0f871853578bd3a30f92d96fdcfb6ebea127" - integrity sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw== +papaparse@^5.5.3: + version "5.5.3" + resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.5.3.tgz#07f8994dec516c6dab266e952bed68e1de59fa9a" + integrity sha512-5QvjGxYVjxO59MGU2lHVYpRWBBtKHnlIAcSe1uNFCkkptUh63NFRj0FJQm7nR67puEruUci/ZkjmEFrjCAyP4A== parallax-controller@^1.7.1: version "1.7.1" @@ -5772,25 +5664,24 @@ pascal-case@^3.1.2: no-case "^3.0.4" tslib "^2.0.3" -patch-package@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61" - integrity sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA== +patch-package@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.1.tgz#79d02f953f711e06d1f8949c8a13e5d3d7ba1a60" + integrity sha512-VsKRIA8f5uqHQ7NGhwIna6Bx6D9s/1iXlA1hthBVBEbkq+t4kXD0HHt+rJhf/Z+Ci0F/HCB2hvn0qLdLG+Qxlw== dependencies: "@yarnpkg/lockfile" "^1.1.0" chalk "^4.1.2" ci-info "^3.7.0" cross-spawn "^7.0.3" find-yarn-workspace-root "^2.0.0" - fs-extra "^9.0.0" + fs-extra "^10.0.0" json-stable-stringify "^1.0.2" klaw-sync "^6.0.0" minimist "^1.2.6" open "^7.4.2" - rimraf "^2.6.3" semver "^7.5.3" slash "^2.0.0" - tmp "^0.0.33" + tmp "^0.2.4" yaml "^2.2.2" path-case@^3.0.4: @@ -5801,11 +5692,6 @@ path-case@^3.0.4: dot-case "^3.0.4" tslib "^2.0.3" -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" @@ -6057,9 +5943,9 @@ punycode.js@^2.3.1: integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== qrcode.react@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/qrcode.react/-/qrcode.react-3.1.0.tgz#5c91ddc0340f768316fbdb8fff2765134c2aecd8" - integrity sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q== + version "3.2.0" + resolved "https://registry.yarnpkg.com/qrcode.react/-/qrcode.react-3.2.0.tgz#97daabd4ff641a3f3c678f87be106ebc55f9cd07" + integrity sha512-YietHHltOHA4+l5na1srdaMx4sVSOjV9tamHs+mwiLWAMr6QVACRUw1Neax5CptFILcNoITctJY0Ipyn5enQ8g== qs@6.7.0: version "6.7.0" @@ -6171,9 +6057,9 @@ rc-collapse@~3.1.0: shallowequal "^1.1.0" rc-collapse@~3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-3.7.2.tgz#d11538ff9c705a5c988d9a4dfcc051a919692fe3" - integrity sha512-ZRw6ipDyOnfLFySxAiCMdbHtb5ePAsB9mT17PA6y1mRD/W6KHRaZeb5qK/X9xDV1CqgyxMpzw0VdS74PCcUk4A== + version "3.7.3" + resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-3.7.3.tgz#68161683d8fd1004bef4eb281fc106f3c8dc16eb" + integrity sha512-60FJcdTRn0X5sELF18TANwtVi7FtModq649H11mYF1jh83DniMoM4MqY627sEKRCTm4+WXfGDcB7hY5oW6xhyw== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" @@ -6370,13 +6256,13 @@ rc-menu@~9.3.2: shallowequal "^1.1.0" rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.3, rc-motion@^2.4.4, rc-motion@^2.6.1, rc-motion@^2.6.2, rc-motion@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.9.0.tgz#9e18a1b8d61e528a97369cf9a7601e9b29205710" - integrity sha512-XIU2+xLkdIr1/h6ohPZXyPBMvOmuyFZQ/T0xnawz+Rh+gh4FINcnZmMT5UTIj6hgI0VLDjTaPeRd+smJeSPqiQ== + version "2.9.5" + resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.9.5.tgz#12c6ead4fd355f94f00de9bb4f15df576d677e0c" + integrity sha512-w+XTUrfh7ArbYEd2582uDrEhmBHwK1ZENJiSJVb7uRxdE7qJSYjbO2eksRXmndqyKqKoYPc9ClpPh5242mV1vA== dependencies: "@babel/runtime" "^7.11.1" classnames "^2.2.1" - rc-util "^5.21.0" + rc-util "^5.44.0" rc-notification@~4.5.7: version "4.5.7" @@ -6399,14 +6285,14 @@ rc-notification@~5.3.0: rc-util "^5.20.1" rc-overflow@^1.0.0, rc-overflow@^1.2.0, rc-overflow@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/rc-overflow/-/rc-overflow-1.3.1.tgz#03224cf90c66aa570eb0deeb4eff6cc96401e979" - integrity sha512-RY0nVBlfP9CkxrpgaLlGzkSoh9JhjJLu6Icqs9E7CW6Ewh9s0peF9OHIex4OhfoPsR92LR0fN6BlCY9Z4VoUtA== + version "1.5.0" + resolved "https://registry.yarnpkg.com/rc-overflow/-/rc-overflow-1.5.0.tgz#02e58a15199e392adfcc87e0d6e9e7c8e57f2771" + integrity sha512-Lm/v9h0LymeUYJf0x39OveU52InkdRXqnn2aYXfWmo8WdOonIKB2kfau+GF0fWq6jPgtdO9yMqveGcK6aIhJmg== dependencies: "@babel/runtime" "^7.11.1" classnames "^2.2.1" rc-resize-observer "^1.0.0" - rc-util "^5.19.2" + rc-util "^5.37.0" rc-pagination@~3.1.9: version "3.1.15" @@ -6440,9 +6326,9 @@ rc-picker@~2.6.4: shallowequal "^1.1.0" rc-picker@~3.14.6: - version "3.14.6" - resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-3.14.6.tgz#60fc34f9883272e10f6c593fa6d82e7e7a70781b" - integrity sha512-AdKKW0AqMwZsKvIpwUWDUnpuGKZVrbxVTZTNjcO+pViGkjC1EBcjMgxVe8tomOEaIHJL5Gd13vS8Rr3zzxWmag== + version "3.14.7" + resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-3.14.7.tgz#112f270ee933a1be3a59b32af1ea96c139bb9bac" + integrity sha512-+craFcClAOwu4R7lSlaiTAZRY4cWPgtE0+yji9stQkQR28C7WGTrZcyiq5AD7xfhXNV+82QmoJ8Aqg3duDYF6A== dependencies: "@babel/runtime" "^7.10.1" "@rc-component/trigger" "^1.5.0" @@ -6496,13 +6382,13 @@ rc-resize-observer@^0.2.3: resize-observer-polyfill "^1.5.1" rc-resize-observer@^1.0.0, rc-resize-observer@^1.1.0, rc-resize-observer@^1.2.0, rc-resize-observer@^1.3.1, rc-resize-observer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.4.0.tgz#7bba61e6b3c604834980647cce6451914750d0cc" - integrity sha512-PnMVyRid9JLxFavTjeDXEXo65HCRqbmLBw9xX9gfC4BZiSzbLXKzW3jPz+J0P71pLbD5tBMTT+mkstV5gD0c9Q== + version "1.4.3" + resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.4.3.tgz#4fd41fa561ba51362b5155a07c35d7c89a1ea569" + integrity sha512-YZLjUbyIWox8E9i9C3Tm7ia+W7euPItNWSPX5sCcQTYbnwDb5uNpnLHQCG1f22oZWUhLw4Mv2tFmeWe68CDQRQ== dependencies: "@babel/runtime" "^7.20.7" classnames "^2.2.1" - rc-util "^5.38.0" + rc-util "^5.44.1" resize-observer-polyfill "^1.5.1" rc-segmented@~2.2.2: @@ -6718,9 +6604,9 @@ rc-tree@~5.4.3: rc-virtual-list "^3.4.2" rc-tree@~5.8.1, rc-tree@~5.8.2: - version "5.8.2" - resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-5.8.2.tgz#ed3a3f7c56597bbeab3303407a9e1739bbf15621" - integrity sha512-xH/fcgLHWTLmrSuNphU8XAqV7CdaOQgm4KywlLGNoTMhDAcNR3GVNP6cZzb0GrKmIZ9yae+QLot/cAgUdPRMzg== + version "5.8.8" + resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-5.8.8.tgz#650a13ec825a5a4feec6bbaf6a380465986ee0db" + integrity sha512-S+mCMWo91m5AJqjz3PdzKilGgbFm7fFJRFiTDOcoRbD7UfMOPnerXwMworiga0O2XIo383UoWuEfeHs1WOltag== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" @@ -6748,7 +6634,7 @@ rc-upload@~4.3.0, rc-upload@~4.3.5: classnames "^2.2.5" rc-util "^5.2.0" -rc-util@^4.19.0, rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.12.0, rc-util@^5.14.0, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.19.2, rc-util@^5.19.3, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.24.4, rc-util@^5.25.2, rc-util@^5.27.0, rc-util@^5.28.0, rc-util@^5.3.0, rc-util@^5.30.0, rc-util@^5.31.1, rc-util@^5.32.2, rc-util@^5.34.1, rc-util@^5.35.0, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.38.0, rc-util@^5.38.1, rc-util@^5.4.0, rc-util@^5.44.4, rc-util@^5.5.0, rc-util@^5.6.1, rc-util@^5.7.0, rc-util@^5.8.0, rc-util@^5.9.4, rc-util@^5.9.8: +rc-util@^4.19.0, rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.12.0, rc-util@^5.14.0, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.19.2, rc-util@^5.19.3, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.24.4, rc-util@^5.25.2, rc-util@^5.27.0, rc-util@^5.28.0, rc-util@^5.3.0, rc-util@^5.30.0, rc-util@^5.31.1, rc-util@^5.32.2, rc-util@^5.34.1, rc-util@^5.35.0, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.38.0, rc-util@^5.38.1, rc-util@^5.4.0, rc-util@^5.44.0, rc-util@^5.44.1, rc-util@^5.44.4, rc-util@^5.5.0, rc-util@^5.6.1, rc-util@^5.7.0, rc-util@^5.8.0, rc-util@^5.9.4, rc-util@^5.9.8: version "5.44.4" resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.44.4.tgz#89ee9037683cca01cd60f1a6bbda761457dd6ba5" integrity sha512-resueRJzmHG9Q6rI/DfK6Kdv9/Lfls05vzMs1Sk3M2P+3cJa+MakaZyWY8IPfehVuhPJFKrIY1IK4GqbiaiY5w== @@ -6757,9 +6643,9 @@ rc-util@^4.19.0, rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.12.0 react-is "^18.2.0" rc-virtual-list@^3.11.1, rc-virtual-list@^3.2.0, rc-virtual-list@^3.4.2, rc-virtual-list@^3.5.1, rc-virtual-list@^3.5.2: - version "3.11.3" - resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.11.3.tgz#77d4e12e20c1ba314b43c0e37e118296674c5401" - integrity sha512-tu5UtrMk/AXonHwHxUogdXAWynaXsrx1i6dsgg+lOo/KJSF8oBAcprh1z5J3xgnPJD5hXxTL58F8s8onokdt0Q== + version "3.19.2" + resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.19.2.tgz#1dd2d782c9a3ccbe537bb873447d73f83af8de0f" + integrity sha512-Ys6NcjwGkuwkeaWBDqfI3xWuZ7rDiQXlH1o2zLfFzATfEgXcqpk8CkgMfbJD81McqjcJVez25a3kPxCR807evA== dependencies: "@babel/runtime" "^7.20.0" classnames "^2.2.6" @@ -6856,10 +6742,10 @@ react-awesome-reveal@^4.2.12: react-intersection-observer "^9.10.3" react-is "^18.3.1" -react-chartjs-2@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/react-chartjs-2/-/react-chartjs-2-5.2.0.tgz#43c1e3549071c00a1a083ecbd26c1ad34d385f5d" - integrity sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA== +react-chartjs-2@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/react-chartjs-2/-/react-chartjs-2-5.3.1.tgz#2b29995ce8b07f5c95c6ea3696838569e88453aa" + integrity sha512-h5IPXKg9EXpjoBzUfyWJvllMjG2mQ4EiuHQFhms/AjUm0XSZHhyRy2xVmLXHKrtcdrPO4mnGqRtYoD0vp95A0A== react-clientside-effect@^1.2.6: version "1.2.6" @@ -7066,11 +6952,6 @@ regenerator-runtime@^0.13.2: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -regenerator-runtime@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" - integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== - regexp.prototype.flags@^1.2.0: version "1.5.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" @@ -7085,11 +6966,6 @@ remeda@^1.27.0: resolved "https://registry.yarnpkg.com/remeda/-/remeda-1.27.0.tgz#3c383018a86692c0491b210dc88475dba90f6346" integrity sha512-Vv4gz6z8WnKPA01ObvswV09bBOkB/jKjlszsfxAH82YEvEWfVvaelUuKOpKkLwlli1xyAwwlfWAAmpHlSXENRQ== -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" @@ -7119,13 +6995,6 @@ retry@0.13.1: resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== -rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rope-sequence@^1.3.0: version "1.3.4" resolved "https://registry.yarnpkg.com/rope-sequence/-/rope-sequence-1.3.4.tgz#df85711aaecd32f1e756f76e43a415171235d425" @@ -7138,12 +7007,7 @@ rxjs@^7.0.0: dependencies: tslib "^2.1.0" -safe-buffer@^5.0.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== @@ -7167,10 +7031,10 @@ seedrandom@^3.0.5: resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" integrity sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg== -semver@^7.5.3, semver@^7.5.4: - version "7.6.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" - integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== +semver@^7.5.3, semver@^7.7.4: + version "7.7.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" + integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== sentence-case@^3.0.4: version "3.0.4" @@ -7261,15 +7125,6 @@ string-convert@^0.2.0: resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" integrity sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c= -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -7277,13 +7132,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - style-value-types@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/style-value-types/-/style-value-types-5.0.0.tgz#76c35f0e579843d523187989da866729411fc8ad" @@ -7300,11 +7148,16 @@ style-value-types@5.1.2: hey-listen "^1.0.8" tslib "2.4.0" -stylis@4.2.0, stylis@^4.0.13: +stylis@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== +stylis@^4.3.4: + version "4.3.6" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.6.tgz#7c7b97191cb4f195f03ecab7d52f7902ed378320" + integrity sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -7336,7 +7189,7 @@ swell-js@^3.13.0: object-keys-normalizer "1.0.1" qs "6.7.0" -swr@^1.0.0, swr@^1.2.2: +swr@^1.2.2, swr@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/swr/-/swr-1.3.0.tgz#c6531866a35b4db37b38b72c45a63171faf9f4e8" integrity sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw== @@ -7354,9 +7207,9 @@ throttle-debounce@^3.0.1: integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg== throttle-debounce@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-5.0.0.tgz#a17a4039e82a2ed38a5e7268e4132d6960d41933" - integrity sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg== + version "5.0.2" + resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-5.0.2.tgz#ec5549d84e053f043c9fd0f2a6dd892ff84456b1" + integrity sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A== through2@~2.0.3: version "2.0.5" @@ -7383,12 +7236,10 @@ tippy.js@^6.3.7: dependencies: "@popperjs/core" "^2.9.0" -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" +tmp@^0.2.4: + version "0.2.5" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.5.tgz#b06bcd23f0f3c8357b426891726d16015abfd8f8" + integrity sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow== to-fast-properties@^2.0.0: version "2.0.0" @@ -7412,16 +7263,11 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= -tslib@2.4.0: +tslib@2.4.0, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== -tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -7439,11 +7285,6 @@ uc.micro@^2.0.0: resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.0.0.tgz#84b3c335c12b1497fd9e80fcd3bfa7634c363ff1" integrity sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig== -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - unfetch@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" @@ -7569,30 +7410,11 @@ window-or-global@^1.0.1: resolved "https://registry.yarnpkg.com/window-or-global/-/window-or-global-1.0.1.tgz#dbe45ba2a291aabc56d62cf66c45b7fa322946de" integrity sha1-2+RboqKRqrxW1iz2bEW3+jIpRt4= -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" @@ -7608,24 +7430,6 @@ yaml@^2.2.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.0.tgz#c6165a721cf8000e91c36490a41d7be25176cf5d" integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw== -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - youtube-player@5.5.2: version "5.5.2" resolved "https://registry.yarnpkg.com/youtube-player/-/youtube-player-5.5.2.tgz#052b86b1eabe21ff331095ffffeae285fa7f7cb5" @@ -7635,7 +7439,7 @@ youtube-player@5.5.2: load-script "^1.0.0" sister "^3.0.0" -zod@^3.22.4: - version "3.22.4" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" - integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== +zod@^3.25.76: + version "3.25.76" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.76.tgz#26841c3f6fd22a6a2760e7ccb719179768471e34" + integrity sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ== diff --git a/platform/loader-html-hydrate/package.json b/platform/loader-html-hydrate/package.json index 408921bd06..4e056cdedc 100644 --- a/platform/loader-html-hydrate/package.json +++ b/platform/loader-html-hydrate/package.json @@ -16,22 +16,22 @@ }, "author": "Chung Wu", "dependencies": { - "@plasmicapp/loader-react": "^2.0.2", + "@plasmicapp/loader-react": "^2.0.17", "react": "^18", "react-dom": "^18" }, "devDependencies": { - "@rollup/plugin-commonjs": "^19.0.0", + "@rollup/plugin-commonjs": "^19.0.2", "@rollup/plugin-json": "^4.1.0", - "@rollup/plugin-node-resolve": "^13.0.0", + "@rollup/plugin-node-resolve": "^13.3.0", "@rollup/plugin-replace": "^2.4.2", - "@rollup/plugin-sucrase": "^3.1.0", + "@rollup/plugin-sucrase": "^3.1.1", "@types/react": "^18", "@types/react-dom": "^18", "rollup": "^2.52.2", "rollup-plugin-sourcemaps": "^0.6.3", "rollup-plugin-terser": "^7.0.2", - "tslib": "^2.2.0", + "tslib": "^2.8.1", "typescript": "6.0.3" } } diff --git a/platform/loader-html-hydrate/yarn.lock b/platform/loader-html-hydrate/yarn.lock index fdd0d0927d..2553efe290 100644 --- a/platform/loader-html-hydrate/yarn.lock +++ b/platform/loader-html-hydrate/yarn.lock @@ -23,88 +23,104 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@plasmicapp/data-sources-context@0.1.23": - version "0.1.23" - resolved "https://registry.yarnpkg.com/@plasmicapp/data-sources-context/-/data-sources-context-0.1.23.tgz#7888d6ba33ba0c02509203368f230fdd431a14dc" - integrity sha512-F006Wr7s/RD4uCORY9EXYDYKgNUDxhY9qpUgT7a0Nyp9s6rw5qEZbcuMrM8Miy90DK3H5AfSuWaOl1+/pjxKZA== - -"@plasmicapp/host@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@plasmicapp/host/-/host-2.0.1.tgz#92d8d1c9c7ae1f246cb33a10e90f80e2c05557e6" - integrity sha512-ghYXBzHihKemrq7RDmwGoUQrBMMba+biMfOLZFeXCm+S9cIXNM93KCk5rEst/pkwSt4Z9KOEqGAV1tTJqg7JHQ== +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== dependencies: - "@plasmicapp/query" "0.1.84" - csstype "^3.1.2" - window-or-global "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" -"@plasmicapp/isomorphic-unfetch@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@plasmicapp/isomorphic-unfetch/-/isomorphic-unfetch-1.0.3.tgz#baa334f5190d49461c26b1aa3fda073f5cfa7e33" - integrity sha512-cJtPOCf2/FWlFB42Q/n0MK/C47NSZr+YQJbCvQwvyjOrOgOQ4gJ/+gkr4avpMa7UPMa8qLovDAuaR+5k+hMlZQ== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + +"@jridgewell/trace-mapping@^0.3.24": + version "0.3.31" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" + integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== dependencies: - unfetch "^4.2.0" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" -"@plasmicapp/loader-core@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@plasmicapp/loader-core/-/loader-core-2.0.0.tgz#6b5acd3ad6e4d7e6755ecffa007263b7765f6b8e" - integrity sha512-D32IfOr2P8UcwU5LHXzgED+ST9C0SjRQaEunsGNo5GcOJ7SpITdheKnHXoO8rhq7elzPU3nBBN0AbwYWZg/xcg== +"@plasmicapp/data-sources-context@0.1.25": + version "0.1.25" + resolved "https://registry.yarnpkg.com/@plasmicapp/data-sources-context/-/data-sources-context-0.1.25.tgz#c8b74048a81ba6b400d34226b11091c04132b1cc" + integrity sha512-wCU+uxslvoPns/gWdUd615v1yBS9rVjyWmcc0qEhiEKCk8qHh0adc0e4hxbf34A4la0EaKj93B0iXw69m7GH+A== + +"@plasmicapp/host@2.0.14": + version "2.0.14" + resolved "https://registry.yarnpkg.com/@plasmicapp/host/-/host-2.0.14.tgz#686957ba238424a35a7eb3d110323291d497d0c5" + integrity sha512-eMRM41Z3A7tDvUF+82HaCSUOC9gFbUug2dkuB/mVuQ8y0aEtHjKgrncEAHuMBUpos6R/Akk6WVUYz7DeF41NQA== dependencies: - "@plasmicapp/isomorphic-unfetch" "1.0.3" - "@plasmicapp/loader-fetcher" "2.0.0" + "@plasmicapp/query" "0.1.87" + csstype "^3.1.2" + window-or-global "^1.0.1" -"@plasmicapp/loader-fetcher@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@plasmicapp/loader-fetcher/-/loader-fetcher-2.0.0.tgz#379caefea6059f6070a469085f5f926d7ca0e83f" - integrity sha512-Rbx5RNPRokfy6MSXF0rE7V3BJnw6pwVUCHg3wPSuI4fysHXEC7/WnikF9E+wxLWWOFSmkR8WN6/pFGxcLFbd2A== +"@plasmicapp/loader-core@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@plasmicapp/loader-core/-/loader-core-2.0.4.tgz#f88b5e54c78353dfe7b7c487c3500c6a36f29afd" + integrity sha512-tpwxUxolJDCwoKDxn4yUcVHcf7Ct1KggamFosQetjG79JaQXnRmGG34sQJt8txZqARqaY8Zdp0v+negh9qTYUg== dependencies: - "@plasmicapp/isomorphic-unfetch" "1.0.3" + "@plasmicapp/loader-fetcher" "2.0.4" -"@plasmicapp/loader-react@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@plasmicapp/loader-react/-/loader-react-2.0.2.tgz#d8fe1482a4bb787c4c38298b08f8495adc78d7a5" - integrity sha512-pQqzYRnBUT6rxzwlppOiApBhu2mdFRLbHsVRA8VN0rnoL1dGeWQQX0pV37RTnZFkA/BzKQYAsddawWxJH5wUyA== - dependencies: - "@plasmicapp/data-sources-context" "0.1.23" - "@plasmicapp/host" "2.0.1" - "@plasmicapp/loader-core" "2.0.0" - "@plasmicapp/loader-fetcher" "2.0.0" - "@plasmicapp/loader-splits" "1.0.70" - "@plasmicapp/prepass" "1.0.24" - "@plasmicapp/query" "0.1.84" +"@plasmicapp/loader-fetcher@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@plasmicapp/loader-fetcher/-/loader-fetcher-2.0.4.tgz#5127ed7da2def7d5008e1e166867c5a889af85ad" + integrity sha512-idfTtTuRirDVomG8oe1YXpR92Rng48x3aeAzAGBps3va820PXuxkuobfEX0b7XgkwmL0N7J4lRsyoUnqWXJ+nQ== + +"@plasmicapp/loader-react@^2.0.17": + version "2.0.17" + resolved "https://registry.yarnpkg.com/@plasmicapp/loader-react/-/loader-react-2.0.17.tgz#8a8735dbea598a2b39eadacd0f323e10f5cda6c9" + integrity sha512-/iP+2JgccDsgOeQNDHc7sFL9qV723Vf4vV1oj7SlQKpyVYECek5fcisXfn6CuZNAt3f0ERiFE+WoG/kI/djvbg== + dependencies: + "@plasmicapp/data-sources-context" "0.1.25" + "@plasmicapp/host" "2.0.14" + "@plasmicapp/loader-core" "2.0.4" + "@plasmicapp/loader-fetcher" "2.0.4" + "@plasmicapp/loader-splits" "1.0.75" + "@plasmicapp/prepass" "1.0.27" + "@plasmicapp/query" "0.1.87" pascalcase "^1.0.0" server-only "0.0.1" -"@plasmicapp/loader-splits@1.0.70": - version "1.0.70" - resolved "https://registry.yarnpkg.com/@plasmicapp/loader-splits/-/loader-splits-1.0.70.tgz#7dd89bd2877f731430f286af579153af0f4003cd" - integrity sha512-iS2IIrWmmCgh0qhyaHliTj6D0q4vQebsWEiATLblGaIF4cUyOZO8KAeBG/MWiT8HNyvCE/nimFbwaI7yd2ZfBA== +"@plasmicapp/loader-splits@1.0.75": + version "1.0.75" + resolved "https://registry.yarnpkg.com/@plasmicapp/loader-splits/-/loader-splits-1.0.75.tgz#8fbe6778d5caccb39f7ae1544246a863b0a146b4" + integrity sha512-MLG2CjR3/XGlnTWvxBz0QjAnvL4RZOKKWbreoxVRpTBChO3Uh1BORNis+NqITiS05U3OQlT7UUEv6cgi9lHVHg== dependencies: json-logic-js "^2.0.2" -"@plasmicapp/prepass@1.0.24": - version "1.0.24" - resolved "https://registry.yarnpkg.com/@plasmicapp/prepass/-/prepass-1.0.24.tgz#ba1f720b0aada99711b49553980714018a20b856" - integrity sha512-v9meFetG2cF1KNBlHXQ0mqJMQp73n4wiZ1C+4Hwg/sjCr34g5h/h4AF1MHKCeBZi5LiNSy6MMmgi7pp6GdA7kg== +"@plasmicapp/prepass@1.0.27": + version "1.0.27" + resolved "https://registry.yarnpkg.com/@plasmicapp/prepass/-/prepass-1.0.27.tgz#b890771ca10a11f645af962b581780d4e21b35c8" + integrity sha512-5XyT78LjJR+u0jXo2dMsWsTIKFDlp8m1pllHNv9i5Z4iR26MdKVuY7XOPfszwZBWz9wgQsLRjR07huo+BuHSQg== dependencies: - "@plasmicapp/query" "0.1.84" + "@plasmicapp/query" "0.1.87" "@plasmicapp/react-ssr-prepass" "^2.0.9" -"@plasmicapp/query@0.1.84": - version "0.1.84" - resolved "https://registry.yarnpkg.com/@plasmicapp/query/-/query-0.1.84.tgz#d7ad0a411243ea972d1e88049e8f47faf9f6763b" - integrity sha512-mOgXmccl82cSSX4DMOGisCUYb9+pPSPsQqUJ0OfTkrTz+bsNbluTjIGIFwGtvQZiBXMP2c7/MGrxtqXtt/qzLw== +"@plasmicapp/query@0.1.87": + version "0.1.87" + resolved "https://registry.yarnpkg.com/@plasmicapp/query/-/query-0.1.87.tgz#5179bd931d6ee54d7bbe7f47d845e0f81ab936ea" + integrity sha512-4M4QvE9IE8DtVv/LuEruGkMLo3bPhTZIwrYpQpcaXj6FQCL2G5XdhjhcH6JzSW2LxqjhyC+2xDLlZKUAzYqpvw== dependencies: - swr "^1.0.0" + swr "^1.3.0" "@plasmicapp/react-ssr-prepass@^2.0.9": version "2.0.9" resolved "https://registry.yarnpkg.com/@plasmicapp/react-ssr-prepass/-/react-ssr-prepass-2.0.9.tgz#1cfdd8d4c0e90fd4fed7d7204f70c44914871d31" integrity sha512-HO932uH/Y4otaDmjwzJbCLlokxNAdtU9VhDVUZUuVbzh0DhWaNyn/MINCu1oeZ4a6MIjdXFIm/U2VaxNxHYdsw== -"@rollup/plugin-commonjs@^19.0.0": - version "19.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-19.0.0.tgz#8c3e71f9a66908e60d70cc1be205834ef3e45f71" - integrity sha512-adTpD6ATGbehdaQoZQ6ipDFhdjqsTgpOAhFiPwl+dzre4pPshsecptDPyEFb61JMJ1+mGljktaC4jI8ARMSNyw== +"@rollup/plugin-commonjs@^19.0.2": + version "19.0.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-19.0.2.tgz#1ccc3d63878d1bc9846f8969f09dd3b3e4ecc244" + integrity sha512-gBjarfqlC7qs0AutpRW/hrFNm+cd2/QKxhwyFa+srbg1oX7rDsEU3l+W7LAUhsAp9mPJMAkXDhLbQaVwEaE8bA== dependencies: "@rollup/pluginutils" "^3.1.0" commondir "^1.0.1" @@ -121,15 +137,15 @@ dependencies: "@rollup/pluginutils" "^3.0.8" -"@rollup/plugin-node-resolve@^13.0.0": - version "13.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.0.tgz#352f07e430ff377809ec8ec8a6fd636547162dc4" - integrity sha512-41X411HJ3oikIDivT5OKe9EZ6ud6DXudtfNrGbC4nniaxx2esiWjkLOzgnZsWq1IM8YIeL2rzRGLZLBjlhnZtQ== +"@rollup/plugin-node-resolve@^13.3.0": + version "13.3.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c" + integrity sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw== dependencies: "@rollup/pluginutils" "^3.1.0" "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" deepmerge "^4.2.2" + is-builtin-module "^3.1.0" is-module "^1.0.0" resolve "^1.19.0" @@ -141,15 +157,15 @@ "@rollup/pluginutils" "^3.1.0" magic-string "^0.25.7" -"@rollup/plugin-sucrase@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-sucrase/-/plugin-sucrase-3.1.0.tgz#0645fd900e61a1b30d8a733e38438f2976da2b4f" - integrity sha512-PZ70LDNgIj8rL+3pKwKwTBOQ2c9JofXeLbWz+2V4/nCt4LqwYTNqxJJf1riTJsVARVzJdA0woIzUzjKZvL8TfA== +"@rollup/plugin-sucrase@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-sucrase/-/plugin-sucrase-3.1.1.tgz#7c14daff0bb5821e4812dfeb9bf3b159a7471d08" + integrity sha512-ifMWKtajaNvR2ybaJbBMkGZXxIUj0tovg5ARvlQHbAG7leJXe48D7TrZ7HIc8ROE/zs1Zh3UOXWmkNdjPGutZg== dependencies: - "@rollup/pluginutils" "^3.0.1" - sucrase "^3.10.1" + "@rollup/pluginutils" "^3.1.0" + sucrase "^3.15.0" -"@rollup/pluginutils@^3.0.1", "@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.0.9", "@rollup/pluginutils@^3.1.0": +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.0.9", "@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== @@ -158,12 +174,7 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@types/estree@*": - version "0.0.48" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.48.tgz#18dc8091b285df90db2f25aa7d906cfc394b7f74" - integrity sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew== - -"@types/estree@0.0.39": +"@types/estree@*", "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== @@ -233,10 +244,10 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== +builtin-modules@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== chalk@^2.0.0: version "2.4.2" @@ -279,12 +290,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -csstype@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" - integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== - -csstype@^3.2.2: +csstype@^3.1.2, csstype@^3.2.2: version "3.2.3" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.2.3.tgz#ec48c0f3e993e50648c86da559e2610995cf989a" integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ== @@ -314,6 +320,11 @@ estree-walker@^2.0.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -329,18 +340,6 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@^7.1.6: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" @@ -383,6 +382,13 @@ inherits@2: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +is-builtin-module@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" + integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== + dependencies: + builtin-modules "^3.3.0" + is-core-module@^2.2.0: version "2.4.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" @@ -498,6 +504,11 @@ picomatch@^2.2.2: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== +picomatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.4.tgz#fd6f5e00a143086e074dffe4c924b8fb293b0589" + integrity sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A== + pirates@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" @@ -615,16 +626,17 @@ sourcemap-codec@^1.4.4: resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== -sucrase@^3.10.1: - version "3.18.2" - resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.18.2.tgz#d9f16f1dd4f91e0293ad6f692867772eda301e4b" - integrity sha512-xCFP35OA6uAtBUVB8jPSftiR2Udjh0d9JkQnUOYppILpN4rBSk0yxiy67GVzD3XsFGIB6LlyIfhCABtwlopMSw== +sucrase@^3.15.0: + version "3.35.1" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.1.tgz#4619ea50393fe8bd0ae5071c26abd9b2e346bfe1" + integrity sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw== dependencies: + "@jridgewell/gen-mapping" "^0.3.2" commander "^4.0.0" - glob "7.1.6" lines-and-columns "^1.1.6" mz "^2.7.0" pirates "^4.0.1" + tinyglobby "^0.2.11" ts-interface-checker "^0.1.9" supports-color@^5.3.0: @@ -641,7 +653,7 @@ supports-color@^7.0.0: dependencies: has-flag "^4.0.0" -swr@^1.0.0: +swr@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/swr/-/swr-1.3.0.tgz#c6531866a35b4db37b38b72c45a63171faf9f4e8" integrity sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw== @@ -669,26 +681,29 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" +tinyglobby@^0.2.11: + version "0.2.16" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.16.tgz#1c3b7eb953fce42b226bc5a1ee06428281aff3d6" + integrity sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.4" + ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -tslib@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== +tslib@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== typescript@6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-6.0.3.tgz#90251dc007916e972786cb94d74d15b185577d21" integrity sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw== -unfetch@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" - integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== - window-or-global@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/window-or-global/-/window-or-global-1.0.1.tgz#dbe45ba2a291aabc56d62cf66c45b7fa322946de" diff --git a/platform/loader-tests/.dockerignore b/platform/loader-tests/.dockerignore index 331576a3e7..c8dbc491de 100644 --- a/platform/loader-tests/.dockerignore +++ b/platform/loader-tests/.dockerignore @@ -1,3 +1,2 @@ .git/ -cypress/ node_modules/ diff --git a/platform/loader-tests/Dockerfile b/platform/loader-tests/Dockerfile index fdb0d699f6..d14ce41815 100644 --- a/platform/loader-tests/Dockerfile +++ b/platform/loader-tests/Dockerfile @@ -1,6 +1,7 @@ -FROM cypress/browsers:node-18.16.0-chrome-113.0.5672.92-1-ff-113.0-edge-113.0.1774.35-1 +FROM mcr.microsoft.com/playwright:v1.60.0-noble WORKDIR /app +RUN npm install -g pnpm COPY . /app RUN yarn diff --git a/platform/loader-tests/README.md b/platform/loader-tests/README.md index a28c52e74e..4148b94267 100644 --- a/platform/loader-tests/README.md +++ b/platform/loader-tests/README.md @@ -2,8 +2,6 @@ End-to-end Playwright tests for Plasmic SDK packages. Tests verify that Plasmic projects render correctly when integrated into real framework apps (Next.js, Gatsby, CRA). -> **Note:** The `cypress/` directory and Jest-based specs in `src/nextjs/*.spec.ts` are **obsolete** and no longer maintained or run by CI. All active tests use Playwright. - ## How it works There are two kinds of Playwright tests: @@ -45,9 +43,6 @@ The framework templates use pnpm with `--frozen-lockfile`. If you update a templ # All tests yarn test -# Playwright only -yarn test-playwright - # Specific test file yarn test-playwright src/playwright-tests/nextjs/antd5/tabs.spec.ts @@ -64,7 +59,10 @@ yarn update-snapshots yarn playwright-ui # To run E2e tests (requires verdaccio with local packages published) -yarn local-publish +# Publish local packages from the repo root. +(cd ../.. && pnpm local-publish) + +# Then, from platform/loader-tests, run Playwright against the local registry. yarn run local:playwright-ui ``` diff --git a/platform/loader-tests/babel.config.js b/platform/loader-tests/babel.config.js deleted file mode 100644 index dd242dc902..0000000000 --- a/platform/loader-tests/babel.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - presets: [ - ["@babel/preset-env", { targets: { node: "current" } }], - "@babel/preset-typescript", - ], -}; diff --git a/platform/loader-tests/cypress.config.ts b/platform/loader-tests/cypress.config.ts deleted file mode 100644 index 8862622fc2..0000000000 --- a/platform/loader-tests/cypress.config.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { defineConfig } from "cypress"; - -export default defineConfig({ - responseTimeout: 60000, - defaultCommandTimeout: 15000, - chromeWebSecurity: false, - video: false, - retries: { - runMode: 1, - openMode: 0, - }, - e2e: { - // We've imported your old cypress plugins here. - // You may want to clean this up later by importing these. - setupNodeEvents(on, config) { - return require("./cypress/plugins/index.js")(on, config); - }, - excludeSpecPattern: ["**/__snapshots__/*", "**/__image_snapshots__/*"], - }, -}); diff --git a/platform/loader-tests/cypress/e2e/dynamic-pages.cy.ts b/platform/loader-tests/cypress/e2e/dynamic-pages.cy.ts deleted file mode 100644 index a57529f4a2..0000000000 --- a/platform/loader-tests/cypress/e2e/dynamic-pages.cy.ts +++ /dev/null @@ -1,10 +0,0 @@ -// @ts-ignore - -describe("Dynamic pages", () => { - it("should work", () => { - cy.visit("/"); - cy.contains("Donald Knuth").click(); - cy.title().should("eq", "Donald Knuth"); - cy.matchFullPageSnapshot("dynamic-pages"); - }); -}); diff --git a/platform/loader-tests/cypress/e2e/plasmic-antd.cy.ts b/platform/loader-tests/cypress/e2e/plasmic-antd.cy.ts deleted file mode 100644 index 480d980a72..0000000000 --- a/platform/loader-tests/cypress/e2e/plasmic-antd.cy.ts +++ /dev/null @@ -1,30 +0,0 @@ -describe("Plasmic Antd", () => { - it("should work", () => { - cy.visit("/"); - cy.get(".ant-input").type("hello input!"); - cy.get(".ant-input").should("have.attr", "value", "hello input!"); - cy.contains("hello input!").should("exist"); - - cy.contains("no checkee").should("exist"); - cy.get(".ant-checkbox-wrapper").click(); - cy.contains("CHECKED YO!").should("exist"); - - // Not sure why select doesn't work on jenkins cypress :-/ - // Cypress cannot seem to make that click on .ant-select - // cy.get(".ant-select").click({ force: true }); - // cy.contains("Option 2").click(); - // cy.contains("op2").should("exist"); - - cy.contains("Collapse1").click(); - cy.contains("Collapse1 stuff").should("be.visible"); - cy.contains("Collapse1").click(); - cy.contains("Collapse1 stuff").should("not.be.visible"); - - cy.visit("/page2"); - cy.contains("Tab2 content").should("be.visible"); - cy.contains("Tab1").click(); - // after rendering, just gets hidden - cy.contains("Tab2 content").should("not.be.visible"); - cy.contains("Tab1 content").should("be.visible"); - }); -}); diff --git a/platform/loader-tests/cypress/e2e/plasmic-antd5.cy.ts b/platform/loader-tests/cypress/e2e/plasmic-antd5.cy.ts deleted file mode 100644 index 09886efeca..0000000000 --- a/platform/loader-tests/cypress/e2e/plasmic-antd5.cy.ts +++ /dev/null @@ -1,39 +0,0 @@ -describe("Plasmic Antd", () => { - it("should work", () => { - cy.visit("/"); - cy.get("input.ant-input").type("hello input!"); - cy.get("input.ant-input").should("have.attr", "value", "hello input!"); - cy.contains("hello input!").should("exist"); - - cy.get("textarea.ant-input").type("hello textarea!"); - cy.get("textarea.ant-input").should("have.value", "hello textarea!"); - cy.contains("hello textarea!").should("exist"); - - cy.contains("Not checked").should("exist"); - cy.get(".ant-checkbox-wrapper").click(); - cy.contains("Checked!").should("exist"); - - cy.get(".ant-picker input").type("2013-06-20{enter}", { force: true }); - cy.contains("2013-06-20T").should("exist"); - - cy.get("input.ant-radio-input[value='radio-option2']").click(); - cy.contains("radio-option2").should("exist"); - - cy.contains("Switched off").should("exist"); - cy.get("button.ant-switch").click(); - cy.contains("Switched on!").should("exist"); - - cy.visit("/forms"); - cy.get("input[id='name']").type("My Name"); - cy.get( - ".ant-radio-group[id='message'] input.ant-radio-input[value='blue']" - ).click(); - cy.contains(`{"name":"My Name","message":"blue"}`).should("exist"); - - cy.get("input[id='my-name']").type("Another name"); - cy.get( - ".ant-radio-group[id='my-color'] input.ant-radio-input[value='red']" - ).click(); - cy.contains(`{"my-name":"Another name","my-color":"red"}`).should("exist"); - }); -}); diff --git a/platform/loader-tests/cypress/e2e/plasmic-app-hosting.cy.ts b/platform/loader-tests/cypress/e2e/plasmic-app-hosting.cy.ts deleted file mode 100644 index 401c6fd627..0000000000 --- a/platform/loader-tests/cypress/e2e/plasmic-app-hosting.cy.ts +++ /dev/null @@ -1,48 +0,0 @@ -// @ts-ignore - -import { isDynamicMode } from "../support/commands"; - -describe("Plasmic Basic Components", () => { - it("should work", () => { - cy.spyOnFetch("/badge").as("homeHtml"); - - cy.visit("/badge"); - - if (isDynamicMode()) { - cy.waitForPlasmicDynamic(); - } else { - cy.wait("@homeHtml") - .its("response.body") - // Find "Hello Plasmic!" but ignore HTML comments from interpolation - .should( - "match", - new RegExp( - `Hello (${htmlCommentRegex.source})?Plasmic(${htmlCommentRegex.source})?!` - ) - ) - .should("include", "You havent clicked") - .should("include", "super-secret") - .should("include", "I'm in the fetcher!"); - } - cy.get('[data-test-id="badge"]') - .should("be.visible") - .should("have.css", "background-color", "rgb(51, 255, 0)") - .contains("Hello Plasmic!") - .should("exist"); - cy.contains("Click here").click(); - cy.wait(50); - cy.contains("Click here").click(); - cy.contains("You clicked 2 times").should("be.visible"); - cy.contains("super-secret"); - cy.contains("I'm in the fetcher!"); - cy.matchFullPageSnapshot("plasmic-app-hosting-example"); - }); -}); - -// From https://stackoverflow.com/questions/5653207/remove-html-comments-with-regex-in-javascript -const htmlCommentRegex = new RegExp( - ")?" + - "Hello!"); - cy.focusFrameRoot(framedC); - cy.log("Should no longer have slots"); - cy.justType("{enter}{enter}{enter}"); - cy.getSelectedTreeNode().should("contain", "CompB"); - framedC.rootElt().contains("--->Hello!").should("exist"); - cy.checkNoErrors(); - }); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/component-props.spec.ts b/platform/wab/cypress/e2e/component-props.spec.ts deleted file mode 100644 index e0e1b4e130..0000000000 --- a/platform/wab/cypress/e2e/component-props.spec.ts +++ /dev/null @@ -1,143 +0,0 @@ -import { removeCurrentProject, setupNewProject } from "../support/util"; - -describe("components-props", function () { - beforeEach(() => { - setupNewProject({ - name: "component-props", - }); - }); - - afterEach(() => { - removeCurrentProject(); - }); - - it("can create all component prop types", function () { - cy.withinStudioIframe(() => { - cy.createNewComponent("Component with all prop types").then(() => { - cy.createComponentProp({ propName: "textProp", propType: "text" }); - cy.createComponentProp({ propName: "numberProp", propType: "num" }); - cy.createComponentProp({ propName: "booleanProp", propType: "bool" }); - cy.createComponentProp({ propName: "objectProp", propType: "any" }); - cy.createComponentProp({ - propName: "queryDataProp", - propType: "queryData", - }); - cy.createComponentProp({ - propName: "eventHandlerProp", - propType: "eventHandler", - }); - cy.createComponentProp({ propName: "hrefProp", propType: "href" }); - cy.createComponentProp({ - propName: "dateProp", - propType: "dateString", - }); - cy.createComponentProp({ - propName: "dateRangeProp", - propType: "dateRangeStrings", - }); - cy.createComponentProp({ propName: "colorProp", propType: "color" }); - cy.createComponentProp({ propName: "imageProp", propType: "img" }); - }); - }); - }); - - it("can show preview values, default values correctly", function () { - cy.withinStudioIframe(() => { - cy.createNewComponent("Component with props").then((framed) => { - cy.createComponentProp({ - propName: "textProp", - propType: "text", - defaultValue: "default text", - previewValue: "preview text", - }); - cy.createComponentProp({ - propName: "numberProp", - propType: "num", - defaultValue: "0", - previewValue: "42", - }); - - cy.insertTextWithDynamic("`textProp = ${$props.textProp}`"); - cy.insertTextWithDynamic("`numberProp = ${$props.numberProp}`"); - cy.insertTextWithDynamic( - "`numberProp * 10 = ${$props.numberProp * 10}`" - ); // verify it's a number - - cy.log( - "Verify component shows preview values, or default value as fallback" - ); - framed - .rootElt() - .contains("textProp = preview text") - .should("be.visible"); - framed.rootElt().contains("numberProp = 42").should("be.visible"); - framed.rootElt().contains("numberProp * 10 = 420").should("be.visible"); - - cy.setComponentPropPreviewValue("textProp", "Hello, world!"); - framed - .rootElt() - .contains("textProp = Hello, world!") - .should("be.visible"); - - cy.setComponentPropPreviewValue("numberProp", undefined); - framed.rootElt().contains("numberProp = 0").should("be.visible"); - framed.rootElt().contains("numberProp * 10 = 0").should("be.visible"); - - cy.setComponentPropDefaultValue("numberProp", undefined); - framed - .rootElt() - .contains("numberProp = undefined") - .should("be.visible"); - framed.rootElt().contains("numberProp * 10 = NaN").should("be.visible"); - - cy.createNewPage("Page using component props").then((framed2) => { - cy.insertFromAddDrawer("Component with props"); - cy.log( - "Verify component instance shows set values, or default values as fallback" - ); - framed2 - .rootElt() - .contains("textProp = default text") - .should("be.visible"); - framed2 - .rootElt() - .contains("numberProp = undefined") - .should("be.visible"); - framed2 - .rootElt() - .contains("numberProp * 10 = NaN") - .should("be.visible"); - - cy.setDataPlasmicProp("textProp", "", { reset: true }); - framed2 - .rootElt() - .contains(/^textProp = $/) - .should("be.visible"); - - cy.removePropValue("textProp"); - framed2 - .rootElt() - .contains("textProp = default text") - .should("be.visible"); - - cy.setDataPlasmicProp("numberProp", "0", { reset: true }); - framed2.rootElt().contains("numberProp = 0").should("be.visible"); - framed2 - .rootElt() - .contains("numberProp * 10 = 0") - .should("be.visible"); - - cy.removePropValue("numberProp"); - framed2 - .rootElt() - .contains("numberProp = undefined") - .should("be.visible"); - framed2 - .rootElt() - .contains("numberProp * 10 = NaN") - .should("be.visible"); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/components.spec.ts b/platform/wab/cypress/e2e/components.spec.ts deleted file mode 100644 index f4973cfa9c..0000000000 --- a/platform/wab/cypress/e2e/components.spec.ts +++ /dev/null @@ -1,188 +0,0 @@ -import { - FREE_CONTAINER_CAP, - FREE_CONTAINER_LOWER, -} from "../../src/wab/shared/Labels"; -import { removeCurrentProject, setupNewProject } from "../support/util"; - -describe("components", function () { - beforeEach(() => { - setupNewProject({ - name: "components", - }); - }); - - afterEach(() => { - removeCurrentProject(); - }); - - it("can extract, instantiate, drill, add variants, undo select", function () { - cy.withinStudioIframe(() => { - cy.createNewFrame().then((framed) => { - // Add a child. - cy.focusFrameRoot(framed); - cy.insertFromAddDrawer(FREE_CONTAINER_CAP); - cy.justType("{enter}"); - - // Extract it as a component. - cy.extractComponentNamed("Widget"); - - // Open component in its own frame. - cy.waitForNewFrame(() => { - cy.projectPanel().contains("Widget").rightclick(); - cy.contains("in new artboard").click({ force: true }); - }).then((framed2) => { - // Back to the first component. - cy.justType("n"); - - // Drill into the instance. - cy.focusFrameRoot(framed); - framed.rootElt().children().dblclick({ force: true }); - - // Turn on auto-layout. - cy.justType("{shift}A"); - - // Add new child element. - cy.justType("r"); - cy.drawRectRelativeToElt(framed.getFrame(), 1, 1, 10, 10); - cy.switchToDesignTab(); - cy.expandSection("size-section"); - cy.setSelectedDimStyle("width", "stretch"); - cy.setSelectedDimStyle("height", "stretch"); - cy.setSelectedDimStyle("min-width", "20px"); - cy.setSelectedDimStyle("min-height", "20px"); - - // Add variant. - cy.addVariantGroup("WidgetRole"); - cy.addVariantToGroup("WidgetRole", "Blah"); - - // Hide current element for that variant. - cy.justType("{enter}{del}"); - cy.contains("Delete instead").should("be.visible"); - - // Focus on parent - cy.justType("{shift}{enter}"); - - // Add block for that variant. - cy.insertFromAddDrawer(FREE_CONTAINER_CAP); - - // Pop out of the component. - cy.focusFrameRoot(framed); - cy.expectDebugTplTree(` -${FREE_CONTAINER_LOWER} - Widget`); - - // Focus the next frame - cy.justType("n"); - cy.expectDebugTplTree(` -${FREE_CONTAINER_LOWER} - ${FREE_CONTAINER_LOWER} - ${FREE_CONTAINER_LOWER}`); - - // Drill back into the instance. - cy.focusFrameRoot(framed); - framed.rootElt().children().children().dblclick({ force: true }); - - // Click into the other frame. - cy.focusFrameRoot(framed2); - - // Select the artboard. - cy.justType("{shift}{enter}"); - - // Go back to frame 1 - cy.focusFrameRoot(framed); - cy.justType("{shift}1"); - - // Insert another widget - cy.insertFromAddDrawer("Widget"); - cy.expectDebugTplTree(` -${FREE_CONTAINER_LOWER} - Widget - Widget`); - cy.getSelectionTag().should("contain", "Widget"); - - // Set its position - cy.setSelectedPosition("top", "100px"); - cy.setSelectedPosition("left", "75px"); - cy.setSelectedDimStyle("width", "200px"); - cy.setSelectedDimStyle("height", "300px"); - - cy.getSelectedElt() - .should("have.css", "top", "100px") - .should("have.css", "left", "75px") - .should("have.css", "width", "200px") - .should("have.css", "height", "300px"); - - // Convert frame1 into a component too - cy.focusFrameRoot(framed); - cy.justType("{cmd}{alt}k"); - cy.submitPrompt("Funky"); - - cy.withinLiveMode(() => { - cy.get(".plasmic_page_wrapper > div > :nth-child(2)") - .should("have.css", "top", "100px") - .should("have.css", "left", "75px") - .should("have.css", "width", "200px") - .should("have.css", "height", "300px"); - }); - - function checkEndState() { - cy.waitAllEval(); - - cy.expectDebugTplTreeForFrame( - 0, - ` -${FREE_CONTAINER_LOWER} - Widget - Widget` - ); - cy.expectDebugTplTreeForFrame( - 1, - ` -${FREE_CONTAINER_LOWER} - ${FREE_CONTAINER_LOWER} - ${FREE_CONTAINER_LOWER}` - ); - - // Make sure that we are selecting the artboard. This is due to - // a flakiness in the redo logic. If we ensure that the selection - // state is the same after undoing/redoing, we can stop doing - // this. - cy.justType("{shift}{enter}"); - cy.justType("{shift}{enter}"); - - // Check that we're on the first artboard. - cy.getSelectionTag().should("contain", "Funky"); - - cy.checkNoErrors(); - } - - checkEndState(); - cy.undoAndRedo(); - checkEndState(); - - cy.wait(500); - cy.codegen().then((bundle) => { - console.log("codegen bundle", bundle); - expect(bundle.components.length).to.equal(2); - const widgetComp = bundle.components.find( - (c: any) => c.renderModuleFileName === "PlasmicWidget.tsx" - ); - expect(widgetComp).to.not.be.null; - expect(widgetComp.cssRules).to.not.include("top: 100px"); - expect(widgetComp.cssRules).to.include("min-width: 20px"); - expect(widgetComp.cssRules).to.include("min-height: 20px"); - - const funkyComp = bundle.components.find( - (c: any) => c.renderModuleFileName === "PlasmicFunky.tsx" - ); - expect(funkyComp).to.not.be.null; - expect(funkyComp.cssRules).to.include(`top: 100px`); - expect(funkyComp.cssRules).to.include(`left: 75px`); - expect(funkyComp.cssRules).to.include(`width: 200px`); - expect(funkyComp.cssRules).to.include(`height: 300px`); - }); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/data-binding.spec.ts b/platform/wab/cypress/e2e/data-binding.spec.ts deleted file mode 100644 index a9b714f949..0000000000 --- a/platform/wab/cypress/e2e/data-binding.spec.ts +++ /dev/null @@ -1,244 +0,0 @@ -import { VERT_CONTAINER_CAP } from "../../src/wab/shared/Labels"; -import { removeCurrentProject, setupNewProject } from "../support/util"; - -Cypress.config("defaultCommandTimeout", 10000); - -describe("data-binding", function () { - beforeEach(() => { - setupNewProject({ - name: "data-binding", - }); - }); - - afterEach(() => { - removeCurrentProject(); - }); - - it("can access $props in data picker, bind text content to them, evaluate given value, rename prop", () => { - cy.withinStudioIframe(() => { - cy.createNewFrame().then((framed) => { - // Add a child. - cy.focusFrameRoot(framed); - cy.insertFromAddDrawer(VERT_CONTAINER_CAP); - cy.justType("{enter}"); - - // Extract it as a component. - cy.extractComponentNamed("Comp"); - - // Enter Comp spotlight mode. - framed.rootElt().children().dblclick({ force: true }); - - // Create a link. - cy.insertFromAddDrawer("Link"); - - // Link a.href to new prop. - cy.get(`[data-test-id="prop-editor-row-href"] label`).rightclick(); - cy.contains("Allow external access").trigger("mouseover"); - cy.contains("Create new prop").click(); - cy.linkNewProp("linkProp"); - - // Connect text content to data. - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.get(`[data-test-id="data-picker"]`).contains("linkProp").click(); - cy.get(`[data-test-id="data-picker"]`) - .contains("button", "Save") - .click(); - - // Leave spotlight mode. - cy.focusFrameRoot(framed); - - // Check existence of link with `href` linked to prop and content bound - // to prop both in canvas and in codegen. - const checkValue = (expected: string) => { - cy.waitAllEval(); - framed.rootElt().contains(expected).should("be.visible"); - cy.withinLiveMode(() => { - cy.get("#plasmic-app a") - .should("have.attr", "href", expected) - .should("contain.text", expected); - }); - }; - checkValue("https://www.plasmic.app/"); - - // Select TplComponent and set prop. - const instancePropValue = "https://instance.prop.value"; - cy.justType("{enter}"); - cy.get(`[data-test-id="prop-editor-row-linkProp"] textarea`).type( - `{selectall}{backspace}${instancePropValue}{enter}` - ); - checkValue(instancePropValue); - - // Enter Comp spotlight mode, rename linkProp to newPropName, leave - // spotlight and check evaluated value. - framed.rootElt().children().dblclick({ force: true }); - cy.switchToComponentDataTab(); - cy.get(`[data-test-id="props-section"]`) - .contains("linkProp") - .dblclick(); - cy.justType("newPropName{enter}"); - cy.focusFrameRoot(framed); - checkValue(instancePropValue); - - cy.checkNoErrors(); - }); - }); - }); - - it("can bind tag attribute to data, component prop to data, visibility to data", () => { - cy.withinStudioIframe(() => { - cy.createNewFrame().then((framed) => { - // Add a child. - cy.focusFrameRoot(framed); - cy.insertFromAddDrawer(VERT_CONTAINER_CAP); - cy.justType("{enter}"); - cy.insertFromAddDrawer(VERT_CONTAINER_CAP); - cy.justType("{enter}"); - - // Extract it as a component. - cy.extractComponentNamed("Comp"); - - // Enter Comp spotlight mode. - framed.rootElt().children().children().dblclick({ force: true }); - - // Create a link. - cy.insertFromAddDrawer("Link"); - - // Link a.href to new prop. - cy.get(`[data-test-id="prop-editor-row-href"] label`).rightclick(); - cy.contains("Allow external access").trigger("mouseover"); - cy.contains("Create new prop").click(); - cy.linkNewProp("linkProp"); - - // Expand HTML Attributes. - cy.get( - '[data-test-id="html-attributes-section"] [data-test-id="collapse"]' - ).click({ force: true }); - - // Bind `title` attribute. - cy.get('[data-test-id="prop-editor-row-title"] label').rightclick(); - cy.contains("Use dynamic value").click(); - cy.selectPathInDataPicker(["linkProp"]); - - // Extract Link as a component. - cy.extractComponentNamed("Link"); - - // Unlink from component prop and bind to custom code expression. - cy.get(`[data-test-id="prop-editor-row-linkProp"] label`).rightclick(); - cy.contains("Unlink from component prop").click(); - cy.get('[data-test-id="prop-editor-row-linkProp"] label').rightclick(); - cy.contains("Use dynamic value").click(); - cy.selectPathInDataPicker(["linkProp"], false); - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode( - '"https://google.com/search?q=" + $props.linkProp' - ); - - // Set "Link" visibility based in linkProp content. - - cy.get(`[data-test-id="visibility-choices"]`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode('!$props.linkProp.includes("invisible")'); - - // Leave spotlight mode, duplicate "Comp" TplComponent, set linkProp to "invisible". - cy.focusFrameRoot(framed); - cy.justType("{enter}"); - cy.justType("{enter}"); - cy.justType("{cmd}d"); - cy.get(`[data-test-id="prop-editor-row-linkProp"] textarea`).type( - "invisible{enter}" - ); - - cy.withinLiveMode(() => { - cy.get("#plasmic-app a") - .should( - "have.attr", - "href", - "https://google.com/search?q=https://www.plasmic.app/" - ) - .should( - "have.attr", - "title", - "https://google.com/search?q=https://www.plasmic.app/" - ); - }); - }); - }); - }); - - it("can bind rich text children to data", () => { - cy.withinStudioIframe(() => { - cy.createNewFrame().then((framed) => { - // Add a child. - cy.focusFrameRoot(framed); - cy.insertFromAddDrawer(VERT_CONTAINER_CAP); - cy.justType("{enter}"); - - // Extract it as a component. - cy.extractComponentNamed("Comp"); - - // Enter Comp spotlight mode. - framed.rootElt().children().dblclick({ force: true }); - - // Create a text and add link inside it. - cy.insertFromAddDrawer("Text"); - cy.get("[data-test-frame-uid]") - .its("0.contentDocument.body") - .should("not.be.empty") - .then(cy.wrap) - .find(".__wab_editor") - .wait(1000) - .dblclick({ force: true }) - .find('[contenteditable="true"]') - .wait(500) - .type("{selectall}") - .wait(500) - .type("{backspace}") - .wait(500) - .type("Hello World!", { delay: 100 }) - .setSelection("World") - .type("{mod+k}") - .wait(300) - .justType("/{enter}") - .wait(300) - .justType("{esc}"); - - // Link a.href of link to new prop "linkProp" - cy.focusFrameRoot(framed); - framed.rootElt().children().dblclick({ force: true }); - cy.selectTreeNode([ - "root", - "Comp", - "vertical stack", - '"Hello [child]!"', - '"World"', - ]); - cy.get(`[data-test-id="prop-editor-row-href"] label`).rightclick(); - cy.contains("Allow external access").trigger("mouseover"); - cy.contains("Create new prop").click(); - cy.linkNewProp("linkProp"); - - // Connect link text content to data. - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.get(`[data-test-id="data-picker"]`).contains("linkProp").click(); - cy.get(`[data-test-id="data-picker"]`) - .contains("button", "Save") - .click(); - - // Check expected content (canvas and live mode). - cy.focusFrameRoot(framed); - cy.waitAllEval(); - framed.rootElt().contains("Hello /!").should("be.visible"); - cy.withinLiveMode(() => { - cy.get("#plasmic-app a") - .should("have.attr", "href", "/") - .should("contain.text", "/"); - }); - }); - }); - }); - - // TODO: test fallback -}); diff --git a/platform/wab/cypress/e2e/data-rep.spec.ts b/platform/wab/cypress/e2e/data-rep.spec.ts deleted file mode 100644 index 015f58bceb..0000000000 --- a/platform/wab/cypress/e2e/data-rep.spec.ts +++ /dev/null @@ -1,238 +0,0 @@ -import { DevFlagsType } from "../../src/wab/shared/devflags"; -import { removeCurrentProject, setupNewProject } from "../support/util"; - -describe("data-rep", function () { - let origDevFlags: DevFlagsType; - beforeEach(() => { - cy.getDevFlags().then((devFlags) => { - origDevFlags = devFlags; - cy.upsertDevFlags({ - ...origDevFlags, - plexus: false, - }); - }); - setupNewProject({ - name: "data-rep", - }); - }); - - afterEach(() => { - if (origDevFlags) { - cy.upsertDevFlags(origDevFlags); - } - removeCurrentProject(); - }); - - // it("can repeat node, bind element and index using custom code, change element and index name, remove repetition", () => { - // cy.withinStudioIframe(() => { - // cy.createNewFrame().then((framed) => { - // // Add a child and a grandchild. - // cy.focusFrameRoot(framed); - // cy.insertFromAddDrawer(VERT_CONTAINER_CAP); - // cy.justType("{enter}"); - // cy.insertFromAddDrawer(VERT_CONTAINER_CAP); - // cy.justType("{enter}"); - - // // Repeat element with collection ["foo", "bar", "baz"]. - // cy.repeatOnCustomCode(`["foo", "bar", "baz"]`); - - // // Create a text and bind it to custom code using current item and index. - // cy.insertFromAddDrawer("Text"); - // cy.bindTextContentToCustomCode("`${currentItem} (${currentIndex})`"); - - // // Focus root and test if canvas and live mode contain text bound to - // // repeating data. - // const checkValue = (expected: string[]) => { - // cy.waitAllEval(); - // for (const e of expected) { - // framed.rootElt().contains(e).should("be.visible"); - // } - // cy.withinLiveMode(() => { - // cy.get("#plasmic-app .__wab_text").each((item, index, list) => { - // expect(list).to.have.length(expected.length); - // expect(item).to.contain(expected[index]); - // }); - // }); - // }; - // const expectedRepeating = ["foo (0)", "bar (1)", "baz (2)"]; - // checkValue(expectedRepeating); - - // // Change element and index name. - // cy.focusFrameRoot(framed); - // cy.justType("{enter}"); - // cy.justType("{enter}"); - // cy.get(`[data-test-id="repeating-element-name"] input`).type( - // "{selectall}{backspace}el{enter}" - // ); - // cy.get(`[data-test-id="repeating-element-index-name"] input`).type( - // "{selectall}{backspace}idx{enter}" - // ); - - // // Fix custom code expression, check if evaluation returns fullExpectedValue. - // cy.justType("{enter}"); - // cy.justType("{enter}"); - // cy.resetMonacoEditorToCode("`${el} (${idx})`"); - // checkValue(expectedRepeating); - - // // Remove repetition, fix text and check final value. - // cy.focusFrameRoot(framed); - // cy.justType("{enter}"); - // cy.justType("{enter}"); - // cy.get('[data-test-id="repeating-element-section"]') - // .contains("Repeat element") - // .rightclick(); - // cy.contains("Remove repetition").click(); - // cy.justType("{enter}"); - // cy.get(`[data-test-id="text-content"] label`).rightclick(); - // cy.contains("Remove dynamic value").click(); - // cy.waitAllEval(); - // cy.get("[data-test-frame-uid]") - // .its("0.contentDocument.body") - // .should("not.be.empty") - // .then(cy.wrap) - // .find(".__wab_editor") - // .wait(1000) - // .dblclick({ force: true }) - // .find('[contenteditable="true"]') - // .type("{selectall}{backspace}", { delay: 100 }) - // .type("Hello World!{esc}", { delay: 100 }); - // checkValue(["Hello World!"]); - - // cy.checkNoErrors(); - // }); - // }); - // }) - - it.only("can repeat select options and have multiple levels of repetition", () => { - cy.withinStudioIframe(() => { - cy.createNewFrame().then((framed) => { - // Add a Plume Select. - cy.focusFrameRoot(framed); - cy.insertFromAddDrawer("Select"); - - // Unset options prop - cy.removePropValue("Options"); - - // Set "is open" variant, select and clear "children" slot content. - cy.get('[data-test-id="variants-picker-section"]') - .contains("Is open") - .parents(`[data-plasmic-role="labeled-item"]`) - .find("input") - .click({ force: true }); - cy.selectTreeNode(["root", "Select", 'Slot: "children"']); - - // Add OptionGroup and make it repeat. - cy.insertFromAddDrawer("Option Group"); - cy.repeatOnCustomCode(`["Group A", "Group B"]`); - - // Add Option and make it repeat. - cy.selectTreeNode([ - "root", - "Select", - 'Slot: "children"', - "Option Group", - 'Slot: "children"', - ]); - cy.getSelectedTreeNode().rightclick(); - cy.contains("Clear slot content").click(); - cy.insertFromAddDrawer("Option"); - cy.repeatOnCustomCode( - '[{label: "Opt 1", value: 1}, {label: "Opt 2", value: 2}, {label: "Opt 3", value: 3}]' - ); - - // Bind stuff to data. - cy.selectTreeNode([ - "root", - "Select", - 'Slot: "children"', - "Option Group", - 'Slot: "title"', - "Group Name", - ]); - cy.bindTextContentToCustomCode("currentItem"); - cy.selectTreeNode([ - "root", - "Select", - 'Slot: "children"', - "Option Group", - 'Slot: "children"', - "Option", - 'Slot: "children"', - '"Option"', - ]); - cy.bindTextContentToCustomCode("currentItem.label"); - - const expectedGroups = ["Group A", "Group B"]; - const expectedOptions = [ - "Opt 1", - "Opt 2", - "Opt 3", - "Opt 1", - "Opt 2", - "Opt 3", - ]; - - // Check existence of bound option groups and options in live mode. - cy.withinLiveMode(() => { - cy.get("#plasmic-app button").click(); - - cy.get('[role="presentation"]').each((group, idx, list) => { - expect(list).to.have.length(expectedGroups.length); - expect(group).to.contain(expectedGroups[idx]); - }); - - cy.get('[role="option"]').each((option, idx, list) => { - expect(list).to.have.length(expectedOptions.length); - expect(option).to.contain(expectedOptions[idx]); - }); - }); - }); - }); - }); - - it("can repeat rich text children", () => { - cy.withinStudioIframe(() => { - cy.createNewFrame().then((framed) => { - // Add a child. - cy.focusFrameRoot(framed); - - // Create a text and add link inside it. - cy.insertFromAddDrawer("Text"); - cy.get("[data-test-frame-uid]") - .its("0.contentDocument.body") - .should("not.be.empty") - .then(cy.wrap) - .find(".__wab_editor") - .dblclick({ force: true }) - .find('[contenteditable="true"]') - .type("{selectall}{backspace}", { delay: 100 }) - .type("Hello World!", { delay: 100 }) - .setSelection("World") - .type("{mod+k}") - .justType("/{enter}") - .wait(300) - .justType("{esc}"); - - // Repeat link on ["foo", "bar", "baz"] and set text content. - cy.focusFrameRoot(framed); - cy.selectTreeNode(["root", '"Hello [child]!"', '"World"']); - cy.repeatOnCustomCode(`["foo", "bar", "baz"]`); - cy.wait(500); - cy.get(`[data-test-id="repeating-element-name"] input`).type( - "{selectall}{backspace}item{enter}" - ); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.selectPathInDataPicker(["item"]); - - // Check expected content (canvas and live mode). - cy.focusFrameRoot(framed); - cy.waitAllEval(); - framed.rootElt().contains(`Hello foobarbaz!`).should("be.visible"); - cy.withinLiveMode(() => { - cy.get("#plasmic-app").should("contain.text", "Hello foobarbaz!"); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/data-sources/create-data-source.spec.ts b/platform/wab/cypress/e2e/data-sources/create-data-source.spec.ts deleted file mode 100644 index 9560009ec1..0000000000 --- a/platform/wab/cypress/e2e/data-sources/create-data-source.spec.ts +++ /dev/null @@ -1,69 +0,0 @@ -describe("create-data-source", function () { - afterEach(() => { - cy.contains(Cypress.env("dataSourceName")).rightclick(); - cy.get(".ant-dropdown-menu").contains("Delete").click({ force: true }); - cy.get(`[data-test-id="confirm"]`).click(); - }); - - it("can create postgres data source", function () { - cy.login(); - // Create Postgres data source - cy.visit(`/projects/`, { log: false, timeout: 120000 }); - const dataSourceName = "Postgres Test"; - cy.contains("Plasmic's First Workspace").click(); - cy.contains("Integrations").click(); - cy.contains("New integration").click().wait(1000); - cy.selectPropOption(`[data-test-id="data-source-picker"]`, "Postgres"); - cy.get(`[data-test-id="data-source-name"]`).click(); - cy.justType(dataSourceName); - Cypress.env("dataSourceName", dataSourceName); - cy.get(`[data-test-id="postgres-connection-string"]`).click(); - cy.get(`[data-test-id="prompt"]`).click(); - cy.justType("postgresql://wronguser:SEKRET@localhost:5432/postgres"); - cy.get(`[data-test-id="prompt-submit"]`).last().click(); - // Assert values - cy.get(`[data-test-id="host"]`).should("have.value", "localhost"); - cy.get(`[data-test-id="port"]`).should("have.value", "5432"); - cy.get(`[data-test-id="name"]`).should("have.value", "postgres"); - cy.get(`[data-test-id="user"]`).should("have.value", "wronguser"); - - // Test wrong connection - cy.get(`[data-test-id="test-connection"]`).click(); - cy.get( - ".ant-notification-notice-error:has(.ant-notification-notice-message:contains(Connection failed))" - ) - .find(".ant-notification-notice-close") - .click(); - - // Fix configuration and test again - cy.get(`[data-test-id="user"]`).click(); - cy.justType("{selectall}{backspace}cypress"); - - cy.get(`[data-test-id="test-connection"]`).click(); - cy.get( - ".ant-notification-notice-success:has(.ant-notification-notice-message:contains(Connection successful))" - ) - .find(".ant-notification-notice-close") - .click(); - - cy.get(`[data-test-id="prompt-submit"]`).click(); - }); - - it("can create HTTP data source", function () { - cy.login(); - // Create HTTP data source - cy.visit(`/projects/`, { log: false, timeout: 120000 }); - const dataSourceName = "HTTP Test"; - cy.contains("Plasmic's First Workspace").click(); - cy.contains("Integrations").click(); - cy.contains("New integration").click().wait(1000); - cy.selectPropOption(`[data-test-id="data-source-picker"]`, "HTTP"); - cy.get(`[data-test-id="data-source-name"]`).click(); - cy.justType(dataSourceName); - Cypress.env("dataSourceName", dataSourceName); - cy.get(`[data-test-id="baseUrl"]`).click(); - cy.justType("https://jsonplaceholder.typicode.com/"); - - cy.get(`[data-test-id="prompt-submit"]`).click(); - }); -}); diff --git a/platform/wab/cypress/e2e/data-sources/http.spec.ts b/platform/wab/cypress/e2e/data-sources/http.spec.ts deleted file mode 100644 index 32eff9a852..0000000000 --- a/platform/wab/cypress/e2e/data-sources/http.spec.ts +++ /dev/null @@ -1,138 +0,0 @@ -import { v4 } from "uuid"; -import { DevFlagsType } from "../../../src/wab/shared/devflags"; -import { - Framed, - removeCurrentProject, - setupNewProject, -} from "../../support/util"; - -describe("HTTP Data Source", () => { - let dsname = ""; - let origDevFlags: DevFlagsType; - beforeEach(() => { - dsname = `HTTP ${v4()}`; - cy.getDevFlags().then((devFlags) => { - origDevFlags = devFlags; - cy.upsertDevFlags({ - ...origDevFlags, - plexus: false, - }); - }); - cy.createDataSource({ - source: "http", - name: dsname, - settings: { - baseUrl: "https://jsonplaceholder.typicode.com/", - commonHeaders: { - "Content-Type": "application/json", - }, - }, - }); - return setupNewProject({ - name: "HTTP Data Source", - }); - }); - - afterEach(() => { - cy.deleteDataSourceOfCurrentTest(); - removeCurrentProject(); - if (origDevFlags) { - cy.upsertDevFlags(origDevFlags); - } - }); - - it("http basic queries", () => { - cy.withinStudioIframe(() => { - const USER_NAME = "Leanne Graham"; - cy.createNewPageInOwnArena("Homepage").then((page: Framed) => { - // Creating customers query ordered by country - cy.switchToComponentDataTab(); - cy.addComponentQuery(); - cy.pickDataSource(dsname); - cy.setDataPlasmicProp("data-source-modal-path", "users", { - clickPosition: "right", - }); - cy.setDataPlasmicProp("data-source-modal-params-key", "name"); - cy.setDataPlasmicProp("data-source-modal-params-value", USER_NAME); - cy.saveDataSourceModal(); - // Add text to render the user name - cy.insertFromAddDrawer("Heading"); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.selectPathInDataPicker(["query", "data", "response", "0", "name"]); - // Verify render on design mode and live frame - page.rootElt().should("contain", USER_NAME); - - // Create state to test $steps result of operations - cy.addState({ - name: "name", - variableType: "text", - accessType: "private", - initialValue: undefined, - }).wait(200); - cy.insertFromAddDrawer("Text"); - cy.bindTextContentToObjectPath(["name"]); - cy.addState({ - name: "statusCode", - variableType: "number", - accessType: "private", - initialValue: undefined, - }).wait(200); - cy.insertFromAddDrawer("Text"); - cy.bindTextContentToObjectPath(["statusCode"]); - - // // Create button with Post - cy.insertFromAddDrawer("Button"); - cy.bindTextContentToCustomCode(`"Post"`); - cy.addInteraction("onClick", [ - { - actionName: "dataSourceOp", - args: { - dataSourceOp: { - integration: dsname, - args: { - operation: { value: "post" }, - "data-source-modal-path": { - value: "users", - opts: { clickPosition: "right" }, - }, - "data-source-modal-body": { - inputType: "raw", - isDynamicValue: true, - value: `({name: "test",})`, - }, - }, - }, - }, - }, - { - actionName: "updateVariable", - args: { - variable: ["name"], - operation: "newValue", - value: `($steps.httpPost.data.response.name)`, - }, - }, - { - actionName: "updateVariable", - args: { - variable: ["statusCode"], - operation: "newValue", - value: `($steps.httpPost.data.statusCode)`, - }, - }, - ]); - - cy.withinLiveMode(() => { - cy.contains(USER_NAME).should("exist"); - cy.contains("Post").click(); - cy.wait(5000); - cy.contains("test").should("exist"); - cy.contains("201").should("exist"); - }); - }); - - cy.checkNoErrors(); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/data-sources/postgres.spec.ts b/platform/wab/cypress/e2e/data-sources/postgres.spec.ts deleted file mode 100644 index f315cc536e..0000000000 --- a/platform/wab/cypress/e2e/data-sources/postgres.spec.ts +++ /dev/null @@ -1,188 +0,0 @@ -import { v4 } from "uuid"; -import { DevFlagsType } from "../../../src/wab/shared/devflags"; -import { HORIZ_CONTAINER_CAP } from "../../../src/wab/shared/Labels"; -import { - createTutorialDataSource, - Framed, - removeCurrentProject, - setupNewProject, -} from "../../support/util"; - -const TUTORIAL_DB_TYPE = "northwind"; - -describe("Postgres Data Source", () => { - let dsname = ""; - let origDevFlags: DevFlagsType; - beforeEach(() => { - cy.getDevFlags().then((devFlags) => { - origDevFlags = devFlags; - cy.upsertDevFlags({ - ...origDevFlags, - plexus: false, - }); - }); - dsname = `TutorialDB ${v4()}`; - createTutorialDataSource(TUTORIAL_DB_TYPE, dsname); - return setupNewProject({ - name: "Postgres Data Source", - }); - }); - - afterEach(() => { - cy.deleteDataSourceOfCurrentTest(); - removeCurrentProject(); - if (origDevFlags) { - cy.upsertDevFlags(origDevFlags); - } - }); - - it("postgres basic queries", () => { - cy.withinStudioIframe(() => { - const customers = [ - "Maria Anders", - "Ana Trujillo", - "Antonio Moreno", - "Thomas Hardy", - "Christina Berglund", - ]; - cy.createNewPageInOwnArena("Homepage").then((page: Framed) => { - // Creating customers query ordered by country - cy.switchToComponentDataTab(); - cy.addComponentQuery(); - cy.pickDataSource(dsname); - cy.selectDataPlasmicProp( - "data-source-modal-pick-resource-btn", - "customers" - ); - cy.selectDataPlasmicProp("data-source-sort", "customer_id"); - cy.setDataPlasmicProp("data-source-pagination-size", "5"); - cy.saveDataSourceModal(); - // Add repeated stack with list of contact_name from $queries.query - cy.insertFromAddDrawer(HORIZ_CONTAINER_CAP); - cy.repeatOnCustomCode("$queries.query.data"); - cy.insertFromAddDrawer("Heading"); - cy.bindTextContentToObjectPath(["currentItem", "contact_name"]); - // Verify render on design mode and live frame - customers.forEach((c) => { - page.rootElt().should("contain", c); - }); - cy.withinLiveMode(() => { - customers.forEach((c) => { - cy.contains(c).should("exist"); - }); - }); - }); - // Verify it works on focused arenas - cy.waitForNewFrame(() => cy.turnOffDesignMode()).then((page: Framed) => { - customers.forEach((c) => { - page.rootElt().should("contain", c); - }); - }); - - cy.refreshFocusedArena(); - cy.getFramed().then((page: Framed) => { - customers.forEach((c) => { - page.rootElt().should("contain", c); - }); - - cy.focusFrameRoot(page); - // Create state to test $steps result of operations - cy.addState({ - name: "insertedId", - variableType: "text", - accessType: "private", - initialValue: undefined, - }).wait(200); - cy.insertFromAddDrawer("Text"); - cy.bindTextContentToObjectPath(["insertedId"]); - - // Create button with Update by operation - cy.insertFromAddDrawer("Button"); - cy.bindTextContentToCustomCode(`"Update"`); - cy.addInteraction("onClick", [ - { - actionName: "dataSourceOp", - args: { - dataSourceOp: { - integration: dsname, - args: { - operation: { value: "updateById" }, - resource: { value: "customers" }, - "data-source-modal-keys-customer_id-json-editor": { - isDynamicValue: true, - value: "$queries.query.data[0].customer_id", - }, - "data-source-modal-variables-contact_name-json-editor": { - value: "New Name", - }, - }, - }, - }, - }, - { - actionName: "updateVariable", - args: { - variable: ["insertedId"], - operation: "newValue", - value: `($steps.tutorialdbUpdateById.data[0].customer_id)`, - }, - }, - ]); - // Create button with Create operation - cy.insertFromAddDrawer("Button"); - cy.bindTextContentToCustomCode(`"Create"`); - cy.addInteraction("onClick", [ - { - actionName: "dataSourceOp", - args: { - dataSourceOp: { - integration: dsname, - args: { - operation: { value: "create" }, - resource: { value: "customers" }, - "data-source-modal-variables-company_name-json-editor": { - value: "Testing", - }, - "data-source-modal-variables-contact_name-json-editor": { - value: "Created Name", - }, - "data-source-modal-variables-city-json-editor": { - value: "Aaa", - }, - "data-source-modal-variables-customer_id-json-editor": { - value: "AAAAA", - }, - }, - }, - }, - }, - { - actionName: "updateVariable", - args: { - variable: ["insertedId"], - operation: "newValue", - value: `($steps.tutorialdbCreate.data[0].customer_id)`, - }, - }, - ]); - cy.withinLiveMode(() => { - cy.contains("Update").click(); - cy.wait(5000); - customers[0] = "New Name"; - customers.forEach((c) => { - cy.contains(c).should("exist"); - }); - cy.contains("ALFKI").should("exist"); - cy.contains("Create").click(); - cy.wait(5000); - customers[4] = "Created Name"; - customers.forEach((c) => { - cy.contains(c).should("exist"); - }); - cy.contains("AAAAA").should("exist"); - }); - }); - cy.checkNoErrors(); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/dynamic-pages-simplified.spec.ts b/platform/wab/cypress/e2e/dynamic-pages-simplified.spec.ts deleted file mode 100644 index 50ca81aade..0000000000 --- a/platform/wab/cypress/e2e/dynamic-pages-simplified.spec.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { v4 } from "uuid"; -import { - createTutorialDataSource, - getSelectedElt, - pickDataSource, - removeCurrentProject, - setSelectByLabel, - setupNewProject, - TUTORIAL_DB_TYPE, -} from "../support/util"; - -describe("dynamic-pages-simplified", function () { - let dsname = ""; - beforeEach(() => { - dsname = `TutorialDB ${v4()}`; - }); - - afterEach(() => { - removeCurrentProject(); - }); - - it("simplified works", () => { - createTutorialDataSource(TUTORIAL_DB_TYPE, dsname); - setupNewProject({ - name: "dynamic-pages", - }); - cy.withinStudioIframe(() => { - cy.createNewPageInOwnArena("Greeter", { - template: "Dynamic page", - after: () => { - pickDataSource(dsname); - setSelectByLabel("dataTablePickerTable", "products"); - - cy.get("button:contains(product_id)").should("be.visible"); - cy.get( - "button:not([disabled]):contains(Create dynamic page)" - ).click(); - }, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - }).then((frame) => { - cy.contains("Page data").click(); - - cy.get('[data-test-id="page-path"] input').should( - "have.value", - "/products/[product_id]" - ); - - getSelectedElt().should("have.text", "1"); - cy.get('[data-test-id="page-param-name"] input').should( - "have.value", - "1" - ); - - cy.contains("View different record").click(); - cy.contains("Show filters").click(); - cy.contains("Sort by").should("be.visible"); - const viewButtonsSel = - ".bottom-modals tbody tr[data-row-key] td:contains(View):nth-child(1)"; - cy.get(viewButtonsSel).should("have.length.gte", 10); - cy.get(viewButtonsSel).eq(1).click(); - cy.wait(200); - - getSelectedElt().should("have.text", "2"); - cy.get('[data-test-id="page-param-name"] input').should( - "have.value", - "2" - ); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/dynamic-pages.spec.ts b/platform/wab/cypress/e2e/dynamic-pages.spec.ts deleted file mode 100644 index 1910bf4a63..0000000000 --- a/platform/wab/cypress/e2e/dynamic-pages.spec.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { removeCurrentProject, setupNewProject } from "../support/util"; - -describe("dynamic-pages", function () { - beforeEach(() => {}); - - afterEach(() => { - removeCurrentProject(); - }); - - it("works", () => { - setupNewProject({ - name: "dynamic-pages", - }); - cy.withinStudioIframe(() => { - cy.createNewPage("Index").then((indexFrame) => { - // Ensure that page panel is expanded, set index URL to /. - cy.switchToComponentDataTab(); - cy.get('[data-test-id="page-path"] input').type( - "{selectall}{backspace}/{enter}", - { delay: 100 } - ); - - // Create greeter page. - cy.createNewPage("Greeter").then((helloFrame) => { - // Set path to /hello/[name]. - cy.switchToComponentDataTab(); - cy.get('[data-test-id="page-path"] input').type( - "{selectall}{backspace}/hello/[name]{enter}", - { delay: 100 } - ); - - // Set [name] preview value to "World". - cy.get('[data-test-id="page-param-name"] input').type( - "{selectall}{backspace}World{enter}" - ); - - // Insert text "Hello XXX!", extract XXX as span and bind to page param. - cy.insertFromAddDrawer("Text"); - cy.get("[data-test-frame-uid]") - .its("1.contentDocument.body") - .should("not.be.empty") - .then(cy.wrap) - .find(".__wab_editor") - .wait(1000) - .dblclick({ force: true }) - .find('[contenteditable="true"]') - .type("{selectall}{backspace}", { delay: 100 }) - .type("Hello XXX!", { delay: 100 }) - .setSelection("XXX") - .wait(300) - .type("{mod+shift+s}") - .wait(300) - .justType("{esc}"); - cy.focusFrameRoot(helloFrame); - cy.selectTreeNode(["root", '"Hello [child]!"', '"XXX"']); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.selectPathInDataPicker(["Page URL path params", "name"]); - - // Add Head component and bind title to page param. - cy.focusFrameRoot(helloFrame); - cy.insertFromAddDrawer("hostless-plasmic-head"); - cy.get('[data-test-id="prop-editor-row-title"] label').rightclick(); - cy.contains("Use dynamic value").click(); - cy.selectPathInDataPicker(["Page URL path params", "name"]); - - // Go to preview mode and test if page contains "Hello World!" - cy.withinLiveMode(() => { - cy.get("#plasmic-app .__wab_text").should( - "contain.text", - "Hello World!" - ); - }); - - // Go to index page, add links to /hello/foo, /hello/bar and /hello/baz. - cy.focusFrameRoot(indexFrame); - cy.insertFromAddDrawer("Text"); - cy.get("[data-test-frame-uid]") - .its("0.contentDocument.body") - .should("not.be.empty") - .then(cy.wrap) - .find(".__wab_editor") - .dblclick({ force: true }) - .find('[contenteditable="true"]') - .type("{selectall}{backspace}", { delay: 100 }) - .type("Say hello to NAME", { delay: 100 }) - .setSelection("NAME") - .wait(300) - .type("{mod+shift+s}") - .wait(300) - .justType("{esc}"); - cy.focusFrameRoot(indexFrame); - cy.selectTreeNode(["root", '"Say hello to [child]"']); - cy.repeatOnCustomCode(`["foo", "bar", "baz"]`); - cy.selectTreeNode(["root", '"Say hello to [child]"', '"NAME"']); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.selectPathInDataPicker(["currentItem"]); - cy.selectTreeNode(["root", '"Say hello to [child]"']); - cy.justType("{mod+alt+l}"); - cy.get(`[data-test-id="prop-editor-row-href"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.ensureDataPickerInCustomCodeMode(); - cy.resetMonacoEditorToCode("`/hello/${currentItem}`"); - const expected = [ - "Say hello to foo", - "Say hello to bar", - "Say hello to baz", - ]; - - // In live mode, click link to /hello/foo and ensure that page shows - // "Hello foo!" as expected. - cy.withinLiveMode(() => { - cy.get("#plasmic-app a.__wab_text").each((item, index, list) => { - expect(list).to.have.length(expected.length); - expect(item).to.contain(expected[index]); - }); - cy.get("#plasmic-app a.__wab_text:first-child").click(); - cy.get("#plasmic-app .__wab_text").should( - "contain.text", - "Hello foo!" - ); - }); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/forms/conversion-between-modes.spec.ts b/platform/wab/cypress/e2e/forms/conversion-between-modes.spec.ts deleted file mode 100644 index f5a7b4ea21..0000000000 --- a/platform/wab/cypress/e2e/forms/conversion-between-modes.spec.ts +++ /dev/null @@ -1,336 +0,0 @@ -import { - deleteDataSourceOfCurrentTest, - ExpectedFormItem, - removeCurrentProject, -} from "../../support/util"; - -describe("conversion-between-modes", function () { - beforeEach(() => { - cy.createFakeDataSource().then(() => { - cy.setupProjectFromTemplate("forms", { - dataSourceReplacement: { - fakeSourceId: Cypress.env("dataSourceId"), - }, - }); - }); - }); - - afterEach(() => { - deleteDataSourceOfCurrentTest(); - removeCurrentProject(); - }); - - it("simplied <-> advanced mode", function () { - cy.withinStudioIframe(() => { - cy.switchArena("Test Conversion 1").then((framed) => { - const expectedFormItems: ExpectedFormItem[] = [ - { - name: "textItem", - label: "Text Item", - type: "Text", - value: "text value", - }, - { - name: "textAreaItem", - label: "Text Area Item", - type: "Text Area", - value: "text area value", - }, - { - name: "passwordItem", - label: "Password Item", - type: "Password", - value: "password value", - }, - { - name: "numberItem", - label: "Number Item", - type: "Number", - value: 123, - }, - { - name: "selectItem", - label: "Select Item", - type: "Select", - value: "Option 1", - }, - { - name: "radioGroupItem", - label: "Radio Group Item", - type: "Radio Group", - value: "radio1", - }, - { - name: "checkboxItem", - label: "Checkbox Item", - type: "Checkbox", - value: true, - }, - { - name: "datePickerItem", - label: "Date Picker Item", - type: "DatePicker", - value: "2023-09-21T13:00:00.000Z", - }, - { name: "requiredItem", label: "Required Item", type: "Text" }, - { name: "rangeLength", label: "Range Length", type: "Text" }, - { name: "rangeValue", label: "Range Value", type: "Number" }, - ]; - - cy.checkFormValuesInCanvas(expectedFormItems, framed); - cy.selectTreeNode(["root", "Form"]); - cy.clickDataPlasmicProp("simplified-mode-toggle"); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - cy.clickDataPlasmicProp("simplified-mode-toggle"); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - }); - }); - }); - - it("advanced <-> simplified mode", function () { - cy.withinStudioIframe(() => { - cy.switchArena("Test Conversion 2").then((framed) => { - const expectedFormItems: ExpectedFormItem[] = [ - { - name: "textItem", - label: "Text Item", - type: "Text", - value: "text value", - }, - { - name: "textAreaItem", - label: "Text Area Item", - type: "Text Area", - value: "text area value", - }, - { - name: "passwordItem", - label: "Password Item", - type: "Password", - value: "password value", - }, - { - name: "numberItem", - label: "Number Item", - type: "Number", - value: 123, - }, - { - name: "selectItem", - label: "Select Item", - type: "Select", - value: "Option 1", - }, - { - name: "radioGroupItem", - label: "Radio Group Item", - type: "Radio Group", - value: "radio1", - }, - { - name: "checkboxItem", - label: "Checkbox Item", - type: "Checkbox", - value: true, - }, - { - name: "datePickerItem", - label: "Date Picker Item", - type: "DatePicker", - value: "2023-09-21T13:00:00.000Z", - }, - { name: "requiredItem", label: "Required Item", type: "Text" }, - { name: "rangeLength", label: "Range Length", type: "Text" }, - { name: "rangeValue", label: "Range Value", type: "Number" }, - ]; - - cy.checkFormValuesInCanvas(expectedFormItems, framed); - cy.selectTreeNode(["root", "Form"]); - cy.clickDataPlasmicProp("simplified-mode-toggle"); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - cy.clickDataPlasmicProp("simplified-mode-toggle"); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - }); - }); - }); - - it("schema mode: new entry", function () { - cy.withinStudioIframe(() => { - cy.switchArena("Test Conversion 3").then((framed) => { - const expectedFormItems: ExpectedFormItem[] = [ - { name: "id", label: "id", type: "Number" }, - { name: "firstName", label: "firstName", type: "Text" }, - { name: "lastName", label: "lastName", type: "Text" }, - { name: "sport", label: "sport", type: "Text" }, - { name: "age", label: "age", type: "Number" }, - ]; - - cy.selectTreeNode(["root", "Form"]); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - cy.clickDataPlasmicProp("simplified-mode-toggle"); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - cy.clickDataPlasmicProp("simplified-mode-toggle"); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - }); - }); - }); - - it("schema mode: update entry", function () { - cy.withinStudioIframe(() => { - cy.switchArena("Test Conversion 4").then((framed) => { - const expectedFormItems: ExpectedFormItem[] = [ - { name: "id", label: "id", type: "Number", value: 1 }, - { name: "name", label: "name", type: "Text" }, - { name: "price", label: "price", type: "Number", value: 2 }, - ]; - - cy.selectTreeNode(["root", "Form"]); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - cy.clickDataPlasmicProp("simplified-mode-toggle"); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - cy.clickDataPlasmicProp("simplified-mode-toggle"); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - }); - }); - }); - - it("conversion keeps dynamic values", function () { - cy.withinStudioIframe(() => { - cy.switchArena("Test Conversion 5").then((framed) => { - const expectedFormItems: ExpectedFormItem[] = [ - { name: "id", label: "id", type: "Number" }, - { - name: "firstName", - label: "First Name", - type: "Text", - value: "Hello", - }, - { - name: "Last name", - label: "lastName", - type: "Text", - value: "World", - }, - { name: "sport", label: "sport", type: "Text" }, - { name: "age", label: "age", type: "Number" }, - { name: "active", label: "Active", type: "Checkbox", value: true }, - ]; - - cy.selectTreeNode(["root", "Form"]); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - cy.clickDataPlasmicProp("simplified-mode-toggle"); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - cy.clickDataPlasmicProp("simplified-mode-toggle"); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - }); - }); - }); - - it("should miss some information when converting to simplified mode", function () { - cy.withinStudioIframe(() => { - cy.switchArena("Test Conversion 6").then((framed) => { - const expectedFormItems: ExpectedFormItem[] = [ - { - name: "textItem", - label: "Text Item", - type: "Text", - value: "text value", - }, - { - name: "textAreaItem", - label: "Text Area Item", - type: "Text Area", - value: "text area value", - }, - { - name: "passwordItem", - label: "Password Item", - type: "Password", - value: "password value", - }, - { - name: "numberItem", - label: "Number Item", - type: "Number", - value: 123, - }, - { - name: "selectItem", - label: "Select Item", - type: "Select", - value: "Option 1", - }, - { - name: "radioGroupItem", - label: "Radio Group Item", - type: "Radio Group", - value: "radio1", - }, - { - name: "checkboxItem", - label: "Checkbox Item", - type: "Checkbox", - value: true, - }, - { - name: "datePickerItem", - label: "Date Picker Item", - type: "DatePicker", - value: "2023-09-21T13:00:00.000Z", - }, - { name: "requiredItem", label: "Required Item", type: "Text" }, - { name: "rangeLength", label: "Range Length", type: "Text" }, - { name: "rangeValue", label: "Range Value", type: "Number" }, - ]; - - cy.selectTreeNode(["root", "Form"]); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - cy.clickDataPlasmicProp("simplified-mode-toggle"); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - cy.clickDataPlasmicProp("simplified-mode-toggle"); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - }); - }); - - it("convert plume components", function () { - cy.withinStudioIframe(() => { - cy.switchArena("Test Conversion 7").then((framed) => { - const expectedFormItems: ExpectedFormItem[] = [ - { name: "plumeText", label: "Plume Text Input", type: "Text" }, - { - name: "plumeSelect", - label: "Plume select", - type: "Select", - value: "option1", - }, - { - name: "plumeSelectUsingSlot", - label: "Plume select using slot", - type: "Select", - value: "Option 3 0", - }, - { - name: "plumeCheckbox", - label: "Checkbox label", - type: "Checkbox", - value: true, - }, - { - name: "plumeSwitch", - label: "Switch me", - type: "Checkbox", - value: true, - }, - ]; - - cy.selectTreeNode(["root", "Form"]); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - cy.clickDataPlasmicProp("simplified-mode-toggle"); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - cy.clickDataPlasmicProp("simplified-mode-toggle"); - cy.checkFormValuesInCanvas(expectedFormItems, framed); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/forms/dynamic-initial-value.spec.ts b/platform/wab/cypress/e2e/forms/dynamic-initial-value.spec.ts deleted file mode 100644 index fc0b43f51b..0000000000 --- a/platform/wab/cypress/e2e/forms/dynamic-initial-value.spec.ts +++ /dev/null @@ -1,310 +0,0 @@ -import { DevFlagsType } from "../../../src/wab/shared/devflags"; -import { - checkFormValuesInCanvas, - Framed, - removeCurrentProject, -} from "../../support/util"; - -describe("dynamic-initial-value", function () { - let origDevFlags: DevFlagsType; - beforeEach(() => { - cy.getDevFlags().then((devFlags) => { - origDevFlags = devFlags; - cy.upsertDevFlags({ - ...origDevFlags, - plexus: false, - }); - }); - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: [ - { - name: "antd5", - npmPkg: ["@plasmicpkgs/antd5"], - }, - ], - }); - }); - - afterEach(() => { - if (origDevFlags) { - cy.upsertDevFlags(origDevFlags); - } - removeCurrentProject(); - }); - - it("it works for simplified forms", function () { - cy.withinStudioIframe(() => { - cy.createNewComponent("Form").then((framed: Framed) => { - cy.insertFromAddDrawer("Text"); - cy.bindTextContentToCustomCode("JSON.stringify($state.form.value)"); - - cy.insertFromAddDrawer("plasmic-antd5-form"); - - cy.get(`[data-test-id="formItems-add-btn"]`).click(); - cy.wait(500); - cy.setDataPlasmicProp("name", "test"); - - cy.setDataPlasmicProp("initialValue", "hello"); - framed - .rootElt() - .contains(JSON.stringify({ test: "hello" })) - .should("exist"); - - cy.setSelectByLabel("inputType", "Text Area"); - cy.wait(200); - - cy.setDataPlasmicProp("initialValue", "foo bar", { reset: true }); - framed - .rootElt() - .contains(JSON.stringify({ test: "foo bar" })) - .should("exist"); - - cy.setSelectByLabel("inputType", "Number"); - cy.wait(200); - cy.setDataPlasmicProp("initialValue", "123", { reset: true }); - framed - .rootElt() - .contains(JSON.stringify({ test: 123 })) - .should("exist"); - - cy.setSelectByLabel("inputType", "Checkbox"); - cy.clickDataPlasmicProp("initialValue"); - framed - .rootElt() - .contains(JSON.stringify({ test: false })) - .should("exist"); - - cy.setSelectByLabel("inputType", "Checkbox"); - cy.clickDataPlasmicProp("initialValue"); - framed - .rootElt() - .contains(JSON.stringify({ test: true })) - .should("exist"); - - cy.closeSidebarModal(); - cy.checkNoErrors(); - }); - }); - }); - - const commonTplTreePath = [ - "root", - "Form", - `Slot: "children"`, - "testItem", - `Slot: "children"`, - ]; - - it("it works for advanced forms", function () { - cy.withinStudioIframe(() => { - cy.createNewComponent("Form").then((framed: Framed) => { - cy.insertFromAddDrawer("Text"); - cy.bindTextContentToCustomCode("JSON.stringify($state.form.value)"); - - cy.insertFromAddDrawer("plasmic-antd5-form"); - // remove default form items (name, message) - cy.removeItemFromArrayProp("formItems", 0); - cy.removeItemFromArrayProp("formItems", 0); - - cy.clickDataPlasmicProp("simplified-mode-toggle"); - cy.wait(500); - // nav to slot - cy.selectTreeNode(commonTplTreePath.slice(0, 3)); - cy.insertFromAddDrawer("plasmic-antd5-form-item"); - cy.get(`[data-test-id="omnibar-add-Text"]`).click(); - cy.wait(500); - cy.renameTreeNode("testItem", { programatically: true }); - cy.setDataPlasmicProp("name", "test"); - cy.setDataPlasmicProp("initialValue", "hello"); - framed - .rootElt() - .contains(JSON.stringify({ test: "hello" })) - .should("exist"); - checkFormValuesInCanvas( - [ - { - name: "test", - label: "Label", - type: "Text", - value: "hello", - }, - ], - framed - ); - cy.selectTreeNode([...commonTplTreePath, "Input"]); - cy.justType("{del}"); - cy.justType("{shift}{enter}"); - cy.clickDataPlasmicProp("initialValue"); - cy.get(`[data-test-id="data-picker"]`).contains(`"hello"`); - cy.closeDataPicker(); - - cy.selectTreeNode(commonTplTreePath); - cy.insertFromAddDrawer("plasmic-antd5-input-number"); - cy.justType("{shift}{enter}{shift}{enter}"); - cy.wait(200); - cy.setDataPlasmicProp("initialValue", "123", { reset: true }); - framed - .rootElt() - .contains(JSON.stringify({ test: 123 })) - .should("exist"); - checkFormValuesInCanvas( - [ - { - name: "test", - label: "Label", - type: "Number", - value: "123", - }, - ], - framed - ); - cy.selectTreeNode([...commonTplTreePath, "Number Input"]); - cy.justType("{del}"); - cy.justType("{shift}{enter}"); - cy.clickDataPlasmicProp("initialValue"); - cy.get(`[data-test-id="data-picker"]`).contains(`123`); - cy.closeDataPicker(); - - cy.selectTreeNode(commonTplTreePath); - cy.insertFromAddDrawer("plasmic-antd5-checkbox"); - cy.justType("{shift}{enter}{shift}{enter}"); - cy.clickDataPlasmicProp("initialValue"); - framed - .rootElt() - .contains(JSON.stringify({ test: false })) - .should("exist"); - cy.clickDataPlasmicProp("initialValue"); - framed - .rootElt() - .contains(JSON.stringify({ test: true })) - .should("exist"); - checkFormValuesInCanvas( - [ - { - name: "test", - label: "Label", - type: "Checkbox", - value: true, - }, - ], - framed - ); - cy.selectTreeNode([...commonTplTreePath, "Checkbox"]); - cy.justType("{del}"); - cy.justType("{shift}{enter}"); - cy.clickDataPlasmicProp("initialValue"); - cy.get(`[data-test-id="data-picker"]`).contains(`true`); - cy.closeDataPicker(); - - cy.selectTreeNode(commonTplTreePath); - cy.insertFromAddDrawer("plasmic-antd5-select"); - cy.justType("{shift}{enter}{shift}{enter}"); - cy.wait(200); - cy.setDataPlasmicProp("initialValue", "option1", { reset: true }); - framed - .rootElt() - .contains(JSON.stringify({ test: "option1" })) - .should("exist"); - checkFormValuesInCanvas( - [ - { - name: "test", - label: "Label", - type: "Select", - value: "Option 1", - }, - ], - framed - ); - cy.selectTreeNode([...commonTplTreePath, "Select"]); - cy.justType("{del}"); - cy.justType("{shift}{enter}"); - cy.clickDataPlasmicProp("initialValue"); - cy.get(`[data-test-id="data-picker"]`).contains(`"option1"`); - cy.closeDataPicker(); - - cy.selectTreeNode(commonTplTreePath); - cy.insertFromAddDrawer("plasmic-antd5-radio-group"); - cy.justType("{shift}{enter}{shift}{enter}"); - cy.wait(200); - cy.setDataPlasmicProp("initialValue", "option2", { reset: true }); - framed - .rootElt() - .contains(JSON.stringify({ test: "option2" })) - .should("exist"); - checkFormValuesInCanvas( - [ - { - name: "test", - label: "Label", - type: "Radio Group", - value: "option2", - }, - ], - framed - ); - cy.selectTreeNode([...commonTplTreePath, "Radio Group"]); - cy.justType("{del}"); - cy.justType("{shift}{enter}"); - cy.clickDataPlasmicProp("initialValue"); - cy.get(`[data-test-id="data-picker"]`).contains(`"option2"`); - cy.closeDataPicker(); - - cy.selectTreeNode(commonTplTreePath); - // should work with plume components too - cy.insertFromAddDrawer("Checkbox"); - cy.justType("{shift}{enter}{shift}{enter}"); - cy.clickDataPlasmicProp("initialValue"); - framed - .rootElt() - .contains(JSON.stringify({ test: false })) - .should("exist"); - cy.clickDataPlasmicProp("initialValue"); - framed - .rootElt() - .contains(JSON.stringify({ test: true })) - .should("exist"); - checkFormValuesInCanvas( - [ - { - name: "test", - label: "Label", - type: "Checkbox", - value: true, - }, - ], - framed - ); - cy.selectTreeNode([...commonTplTreePath, "Checkbox"]); - cy.justType("{del}"); - cy.justType("{shift}{enter}"); - cy.clickDataPlasmicProp("initialValue"); - cy.get(`[data-test-id="data-picker"]`).contains(`true`); - cy.closeDataPicker(); - - cy.selectTreeNode(commonTplTreePath); - cy.insertFromAddDrawer("Text Input"); - cy.justType("{shift}{enter}{shift}{enter}"); - cy.wait(200); - cy.setDataPlasmicProp("initialValue", "foo bar", { reset: true }); - framed - .rootElt() - .contains(JSON.stringify({ test: "foo bar" })) - .should("exist"); - checkFormValuesInCanvas( - [ - { - name: "test", - label: "Label", - type: "Text", - value: "foo bar", - }, - ], - framed - ); - - cy.checkNoErrors(); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/forms/schema.spec.ts b/platform/wab/cypress/e2e/forms/schema.spec.ts deleted file mode 100644 index f0f1f03284..0000000000 --- a/platform/wab/cypress/e2e/forms/schema.spec.ts +++ /dev/null @@ -1,240 +0,0 @@ -import { - deleteDataSourceOfCurrentTest, - Framed, - removeCurrentProject, -} from "../../support/util"; - -describe("schema", function () { - beforeEach(() => { - cy.createFakeDataSource(); - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: [ - { - name: "antd5", - npmPkg: ["@plasmicpkgs/antd5"], - }, - ], - }); - }); - - afterEach(() => { - deleteDataSourceOfCurrentTest(); - removeCurrentProject(); - }); - - it("can use schema forms for new entry", function () { - cy.withinStudioIframe(() => { - cy.createNewComponent("Schema Form").then((framed: Framed) => { - cy.insertFromAddDrawer("plasmic-antd5-form"); - - cy.contains("Connect to Table").click(); - - cy.wait(1000); - cy.selectDataPlasmicProp("formType", "New Entry"); - cy.pickIntegration(); - cy.setSelectByLabel("dataTablePickerTable", "athletes"); - cy.contains("Save").click(); - - const expectedFormItems = [ - { name: "firstName", label: "firstName", type: "text" }, - { name: "lastName", label: "lastName", type: "text" }, - { name: "sport", label: "sport", type: "text" }, - { name: "age", label: "age", type: "number" }, - ]; - - cy.checkFormValuesInCanvas(expectedFormItems, framed); - - cy.switchToComponentDataTab(); - cy.addComponentQuery(); - cy.setSelectByLabel("data-source-modal-pick-resource-btn", "athletes"); - cy.saveDataSourceModal(); - - cy.insertFromAddDrawer("Text"); - cy.bindTextContentToCustomCode("JSON.stringify($queries.query.data)"); - - cy.withinLiveMode(() => { - cy.checkFormValuesInLiveMode(expectedFormItems); - - cy.updateFormValuesLiveMode({ - inputs: { - firstName: "Foo", - lastName: "Bar", - sport: "Baz", - age: "123", - }, - }); - - cy.get("#plasmic-app div").contains("Submit").click(); - cy.get("#plasmic-app div").contains( - JSON.stringify({ - firstName: "Foo", - lastName: "Bar", - sport: "Baz", - age: 123, - }) - ); - }); - - cy.checkNoErrors(); - }); - }); - }); - - it("can use schema forms for update entry", function () { - cy.withinStudioIframe(() => { - cy.createNewComponent("Schema Form").then((framed: Framed) => { - cy.insertFromAddDrawer("plasmic-antd5-form"); - - cy.contains("Connect to Table").click(); - - cy.wait(1000); - cy.selectDataPlasmicProp("formType", "Update Entry"); - cy.pickIntegration(); - cy.setSelectByLabel("dataTablePickerTable", "athletes"); - cy.setSelectByLabel("dataTablePickerLookupField", "id"); - cy.setDataPlasmicProp("id", "1"); - cy.wait(2000); - cy.contains("Save").click(); - - const expectedFormItems = [ - { name: "firstName", label: "firstName", type: "text" }, - { name: "lastName", label: "lastName", type: "text" }, - { name: "sport", label: "sport", type: "text" }, - { name: "age", label: "age", type: "number" }, - ]; - - cy.checkFormValuesInCanvas(expectedFormItems, framed); - - cy.switchToComponentDataTab(); - cy.addComponentQuery(); - cy.setSelectByLabel("data-source-modal-pick-resource-btn", "athletes"); - cy.saveDataSourceModal(); - - cy.insertFromAddDrawer("Text"); - cy.bindTextContentToCustomCode("JSON.stringify($queries.query.data)"); - - cy.withinLiveMode(() => { - cy.checkFormValuesInLiveMode(expectedFormItems); - - cy.updateFormValuesLiveMode({ - inputs: { - firstName: "{selectall}{del}Foo", - lastName: "{selectall}{del}Bar", - sport: "{selectall}{del}Baz", - age: "{selectall}{del}123", - }, - }); - - cy.get("#plasmic-app div").contains("Submit").click(); - cy.get("#plasmic-app div").contains( - JSON.stringify({ - id: 1, - firstName: "Foo", - lastName: "Bar", - sport: "Baz", - age: 123, - }) - ); - }); - - cy.checkNoErrors(); - }); - }); - }); - - it("switching table resets fields/onFinish", function () { - cy.withinStudioIframe(() => { - cy.createNewComponent("Schema Form").then((framed: Framed) => { - cy.insertFromAddDrawer("plasmic-antd5-form"); - - cy.contains("Connect to Table").click(); - - cy.wait(1000); - cy.selectDataPlasmicProp("formType", "New Entry"); - cy.pickIntegration(); - cy.setSelectByLabel("dataTablePickerTable", "athletes"); - cy.contains("Save").click(); - - const expectedFormItems1 = [ - { name: "firstName", label: "firstName", type: "text" }, - { name: "lastName", label: "lastName", type: "text" }, - { name: "sport", label: "sport", type: "text" }, - { name: "age", label: "age", type: "number" }, - ]; - - cy.checkFormValuesInCanvas(expectedFormItems1, framed); - - cy.switchToComponentDataTab(); - cy.addComponentQuery(); - cy.setSelectByLabel("data-source-modal-pick-resource-btn", "athletes"); - cy.saveDataSourceModal(); - - cy.insertFromAddDrawer("Text"); - cy.bindTextContentToCustomCode("JSON.stringify($queries.query.data)"); - - cy.withinLiveMode(() => { - cy.checkFormValuesInLiveMode(expectedFormItems1); - - cy.updateFormValuesLiveMode({ - inputs: { - firstName: "Foo", - lastName: "Bar", - sport: "Baz", - age: "123", - }, - }); - - cy.get("#plasmic-app div").contains("Submit").click(); - cy.get("#plasmic-app div").contains( - JSON.stringify({ - firstName: "Foo", - lastName: "Bar", - sport: "Baz", - age: 123, - }) - ); - }); - - cy.selectTreeNode(["root", "Form"]); - cy.get(`[data-test-id="form-data"]`).click(); - cy.setSelectByLabel("dataTablePickerTable", "products"); - cy.contains("Save").click(); - cy.contains("Confirm").click(); - - const expectedFormItems2 = [ - { name: "id", label: "id", type: "text" }, - { name: "name", label: "name", type: "text" }, - { name: "price", label: "price", type: "number" }, - ]; - - cy.checkFormValuesInCanvas(expectedFormItems2, framed); - - cy.switchToComponentDataTab(); - cy.addComponentQuery(); - cy.setSelectByLabel("data-source-modal-pick-resource-btn", "products"); - cy.saveDataSourceModal(); - - cy.insertFromAddDrawer("Text"); - cy.bindTextContentToCustomCode("JSON.stringify($queries.query2.data)"); - - cy.withinLiveMode(() => { - cy.checkFormValuesInLiveMode(expectedFormItems2); - - cy.updateFormValuesLiveMode({ - inputs: { - name: "Acai", - price: "15", - }, - }); - - cy.get("#plasmic-app div").contains("Submit").click(); - cy.get("#plasmic-app div").contains( - JSON.stringify({ name: "Acai", price: 15 }) - ); - }); - - cy.checkNoErrors(); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/forms/simplified-all-form-items.spec.ts b/platform/wab/cypress/e2e/forms/simplified-all-form-items.spec.ts deleted file mode 100644 index 9dce8a490b..0000000000 --- a/platform/wab/cypress/e2e/forms/simplified-all-form-items.spec.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { cloneDeep } from "lodash"; -import { Framed, getFormValue, removeCurrentProject } from "../../support/util"; - -describe.skip("simplified-all-form-items", function () { - beforeEach(() => { - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: [ - { - name: "antd5", - npmPkg: ["@plasmicpkgs/antd5"], - }, - ], - }); - }); - - afterEach(() => { - removeCurrentProject(); - }); - - it("can create all types of form items", function () { - cy.withinStudioIframe(() => { - cy.createNewPage("Simplified Form").then((framed: Framed) => { - cy.insertFromAddDrawer("plasmic-antd5-form"); - // remove default form items (name, message) - cy.removeItemFromArrayProp("formItems", 0); - cy.removeItemFromArrayProp("formItems", 0); - - const expectedFormItems: { - label: string; - name: string; - type: string; - options?: string[]; - value: string | number; - }[] = [ - { - label: "Text Field", - name: "textField", - type: "Text", - value: "text field value", - }, - { - label: "Text Area", - name: "textArea", - type: "Text Area", - value: "text area value", - }, - { - label: "Password", - name: "password", - type: "Password", - value: "password value", - }, - { - label: "Number", - name: "number", - type: "Number", - value: 123, - }, - { - label: "Select", - name: "select", - type: "Select", - options: ["opt1", "opt2"], - value: "opt2", - }, - { - label: "Radio Group", - name: "radioGroup", - type: "Radio Group", - options: ["radio1", "radio2"], - value: "radio1", - }, - ]; - for (const formItem of expectedFormItems) { - cy.addFormItem("formItems", { - label: formItem.label, - name: formItem.name, - inputType: formItem.type, - initialValue: `${formItem.value}`, - ...(formItem.options - ? { - options: formItem.options, - } - : {}), - }); - } - - cy.checkFormValuesInCanvas(expectedFormItems, framed); - - cy.insertFromAddDrawer("Text"); - cy.bindTextContentToCustomCode( - "JSON.stringify($state.form.value, Object.keys($state.form.value).sort())" - ); - - cy.getSelectedElt().should( - "contain.text", - getFormValue(expectedFormItems) - ); - - cy.withinLiveMode(() => { - cy.checkFormValuesInLiveMode(expectedFormItems); - - const liveModeExpectedFormItems = cloneDeep(expectedFormItems); - cy.updateFormValuesLiveMode({ - inputs: { - textField: "{selectall}{del}new text", - password: "{selectall}{del}new password", - textArea: "{selectall}{del}new text area", - number: "{selectall}{del}456", - }, - selects: { select: "opt1" }, - radios: { radioGroup: "radio2" }, - }); - liveModeExpectedFormItems[0].value = "new text"; - liveModeExpectedFormItems[1].value = "new text area"; - liveModeExpectedFormItems[2].value = "new password"; - liveModeExpectedFormItems[3].value = 456; - liveModeExpectedFormItems[4].value = "opt1"; - liveModeExpectedFormItems[5].value = "radio2"; - - cy.checkFormValuesInLiveMode(liveModeExpectedFormItems); - cy.get("#plasmic-app div").contains( - getFormValue(liveModeExpectedFormItems) - ); - }); - - cy.checkNoErrors(); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/forms/simplified.spec.ts b/platform/wab/cypress/e2e/forms/simplified.spec.ts deleted file mode 100644 index 8cc04c1e35..0000000000 --- a/platform/wab/cypress/e2e/forms/simplified.spec.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { cloneDeep } from "lodash"; -import { Framed, getFormValue, removeCurrentProject } from "../../support/util"; - -describe("simplified", function () { - beforeEach(() => { - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: [ - { - name: "antd5", - npmPkg: ["@plasmicpkgs/antd5"], - }, - ], - }); - }); - - afterEach(() => { - removeCurrentProject(); - }); - - it("can create/add/remove form items in simplified mode", function () { - cy.withinStudioIframe(() => { - cy.createNewComponent("Simplified Form").then((framed: Framed) => { - cy.addState({ - name: "submittedData", - variableType: "object", - accessType: "private", - initialValue: undefined, - }); - cy.insertFromAddDrawer("plasmic-antd5-form"); - cy.addInteraction("onFinish", { - actionName: "updateVariable", - args: { - variable: ["submittedData"], - value: "$state.form.value", - }, - }); - cy.addFormItem("formItems", { label: "Field1", name: "field1" }); - cy.addFormItem("formItems", { - label: "Field2", - name: "field2", - initialValue: "hello", - }); - const expectedFormItems = [ - { name: "name", label: "Name", type: "text" }, - { name: "message", label: "Message", type: "Text Area" }, - { name: "field1", label: "Field1", type: "text" }, - { name: "field2", label: "Field2", type: "text", value: "hello" }, - ]; - cy.checkFormValuesInCanvas(expectedFormItems, framed); - cy.insertFromAddDrawer("Text"); - cy.bindTextContentToCustomCode( - "JSON.stringify($state.submittedData, Object.keys($state.submittedData).sort())" - ); - cy.withinLiveMode(() => { - cy.checkFormValuesInLiveMode(expectedFormItems); - - //submit form - cy.get("#plasmic-app div").find("button").click(); - cy.get("#plasmic-app div").contains(getFormValue(expectedFormItems)); - - const liveModeExpectedFormItems = cloneDeep(expectedFormItems); - liveModeExpectedFormItems[0].value = "foo"; - liveModeExpectedFormItems[1].value = "bar"; - - cy.updateFormValuesLiveMode({ - inputs: { name: "foo", message: "bar" }, - }); - cy.checkFormValuesInLiveMode(liveModeExpectedFormItems); - cy.get("#plasmic-app div").find("button").click(); - cy.get("#plasmic-app div").contains( - getFormValue(liveModeExpectedFormItems) - ); - }); - - cy.selectTreeNode(["Form"]); - cy.removeItemFromArrayProp("formItems", 0); - const expectedFormItems2 = cloneDeep(expectedFormItems); - expectedFormItems2.splice(0, 1); - cy.checkFormValuesInCanvas(expectedFormItems2, framed); - cy.withinLiveMode(() => { - cy.checkFormValuesInLiveMode(expectedFormItems2); - - //submit form - cy.get("#plasmic-app div").find("button").click(); - cy.get("#plasmic-app div").contains(getFormValue(expectedFormItems2)); - - const liveModeExpectedFormItems = cloneDeep(expectedFormItems2); - liveModeExpectedFormItems[0].value = "foo"; - liveModeExpectedFormItems[1].value = "bar"; - liveModeExpectedFormItems[2].value = "baz"; - - cy.updateFormValuesLiveMode({ - inputs: { - message: "foo", - field1: "bar", - field2: "{selectall}{del}baz", - }, - }); - cy.checkFormValuesInLiveMode(liveModeExpectedFormItems); - cy.get("#plasmic-app div").find("button").click(); - cy.get("#plasmic-app div").contains( - getFormValue(liveModeExpectedFormItems) - ); - }); - - cy.checkNoErrors(); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/freestyle.spec.ts b/platform/wab/cypress/e2e/freestyle.spec.ts deleted file mode 100644 index 371629ea87..0000000000 --- a/platform/wab/cypress/e2e/freestyle.spec.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { FREE_CONTAINER_LOWER } from "../../src/wab/shared/Labels"; -import { removeCurrentProject, setupNewProject } from "../support/util"; - -describe("freestyle", function () { - beforeEach(() => { - setupNewProject({ - name: "freestyle", - }); - }); - - afterEach(() => { - removeCurrentProject(); - }); - - it("can draw tweet", function () { - cy.withinStudioIframe(() => { - cy.switchToTreeTab(); - cy.createNewFrame().then((framed) => { - const frame = framed.getFrame(); - cy.waitFrameEval(framed); - - const initX = 5; - const initY = 20; - const lineHeight = 25; - const spanInterval = 35; - const imgSize = 30; - const containerWidth = 176; - const textLeft = initX + imgSize + 20; - - cy.justType("r"); - cy.drawRectRelativeToElt( - frame, - initX + 10, - initY + 10, - imgSize, - imgSize - ); - cy.waitFrameEval(framed); - - framed.plotText(textLeft + spanInterval * 0, initY + 10, `Yang`); - framed.plotText(textLeft + spanInterval * 1, initY + 10, `@yang`); - framed.plotText(textLeft + spanInterval * 2, initY + 10, `23m ago`); - framed.plotText(textLeft, initY + 10 + lineHeight * 1, `Hello world!`); - framed.plotText(textLeft, initY + 10 + lineHeight * 2, `3 likes`); - - cy.justType("h"); - cy.drawRectRelativeToElt( - frame, - textLeft - 3, - initY + 8, - containerWidth - textLeft - 3, - 25 - ); - cy.waitFrameEval(framed); - - cy.justType("v"); - cy.drawRectRelativeToElt( - frame, - textLeft - 5, - initY + 5, - containerWidth - textLeft, - 80 - ); - cy.waitFrameEval(framed); - - cy.justType("h"); - cy.drawRectRelativeToElt( - frame, - initX + 5, - initY + 3, - containerWidth - 8, - 110 - ); - cy.waitFrameEval(framed); - - cy.withinLiveMode(() => { - cy.contains("Yang").should("exist"); - cy.contains("@yang").should("exist"); - cy.contains("23m ago").should("exist"); - cy.contains("Hello world!").should("exist"); - }); - - function checkEndState() { - cy.waitAllEval(); - cy.expectDebugTplTree(` -${FREE_CONTAINER_LOWER} - ${FREE_CONTAINER_LOWER} - ${FREE_CONTAINER_LOWER} - ${FREE_CONTAINER_LOWER} - ${FREE_CONTAINER_LOWER} - text - text - text - text - text`); - - cy.checkNoErrors(); - } - - checkEndState(); - cy.undoAndRedo(); - checkEndState(); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/generic-slots.spec.ts b/platform/wab/cypress/e2e/generic-slots.spec.ts deleted file mode 100644 index b62965f633..0000000000 --- a/platform/wab/cypress/e2e/generic-slots.spec.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { - FREE_CONTAINER_CAP, - FREE_CONTAINER_LOWER, -} from "../../src/wab/shared/Labels"; -import { removeCurrentProject, setupNewProject } from "../support/util"; - -describe("generic-slots", function () { - beforeEach(() => { - setupNewProject({ - name: "generic-slots", - }); - }); - - afterEach(() => { - removeCurrentProject(); - }); - - it("can create, override content, edit default content", function () { - cy.withinStudioIframe(() => { - cy.createNewComponent("Widget").then((framed) => { - cy.focusFrameRoot(framed); - cy.justLog("Draw a rect slot."); - cy.justType("r"); - cy.drawRectRelativeToElt(framed.getFrame(), 10, 10, 50, 50); - - cy.createNewFrame().then((framed2) => { - cy.justLog("Zoom out."); - cy.justType("{shift}1"); - - cy.justLog("Insert two Widgets."); - cy.focusFrameRoot(framed2); - cy.wait(500); - cy.dragGalleryItemRelativeToElt("Widget", framed2.getFrame(), 10, 10); - cy.renameTreeNode("widget1"); - cy.wait(500); - cy.dragGalleryItemRelativeToElt( - "Widget", - framed2.getFrame(), - 10, - 100 - ); - cy.renameTreeNode("widget2"); - - cy.justLog("Back to frame 1, convert to slot."); - cy.focusFrameRoot(framed); - cy.justType("{enter}"); - cy.convertToSlot(); - - cy.justLog("Back to frame 2."); - cy.focusFrameRoot(framed2); - - cy.justLog("Edit 1st Widget's slot."); - cy.justType("{enter}{enter}"); - framed2.plotTextAtSelectedElt("so rough"); - framed2.rootElt().contains("so rough").should("exist"); - - cy.justLog("Back to frame 2 root."); - cy.focusFrameRoot(framed2); - - cy.justLog("Edit 2nd Widget's slot."); - framed2.rootElt().contains("Widget Slot").click({ force: true }); - framed2.plotTextAtSelectedElt("so tough"); - - cy.justLog("Reset 2nd Widget's slot."); - cy.justType("{shift}{enter}"); - cy.getSelectionTag().rightclick({ force: true }); - cy.contains("Revert to").click({ force: true }); - - cy.justLog("Edit the default slot contents."); - cy.focusFrameRoot(framed); - cy.justType("{enter}{enter}"); - cy.insertFromAddDrawer(FREE_CONTAINER_CAP); - - cy.justLog("Back on 2nd Widget instance, fork default contents."); - cy.focusFrameRoot(framed2); - framed2 - .rootElt() - .contains(FREE_CONTAINER_LOWER) - .click({ force: true }); - cy.insertFromAddDrawer("Text"); - - cy.justType("{shift}{enter}{enter}"); - - cy.switchToTreeTab(); - cy.withinLiveMode(() => { - cy.contains("so rough").should("exist"); - cy.contains("Enter some text").should("exist"); - }); - - const checkEndState = () => { - cy.waitAllEval(); - - framed.rebind(); - framed2.rebind(); - - // TODO: commenting to unblock failing test for now - // cy.justLog("Check that we're selecting the slot."); - // cy.getSelectionTag().should("contain", `Prop: "children"`); - - cy.justLog("Expect final text."); - framed2.rootElt().contains("so rough").should("be.visible"); - framed2.rootElt().contains("Enter some text").should("be.visible"); - - cy.checkNoErrors(); - }; - - checkEndState(); - cy.undoAndRedo(); - checkEndState(); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/host-app.spec.ts b/platform/wab/cypress/e2e/host-app.spec.ts deleted file mode 100644 index 2fb1dff20a..0000000000 --- a/platform/wab/cypress/e2e/host-app.spec.ts +++ /dev/null @@ -1,188 +0,0 @@ -// This test depends on the host-test package running. - -import { configureProjectAppHost, Framed } from "../support/util"; - -describe("host-app", function () { - it("Should work", function () { - cy.setupNewProject({ name: "host-app" }) - .then((projectId) => { - cy.withinStudioIframe(() => { - configureProjectAppHost("plasmic-host"); - }); - cy.withinStudioIframe(() => { - cy.createNewFrame().then((framed) => { - // cy.clearNotifications(); - cy.insertFromAddDrawer("Badge"); - cy.renameTreeNode("badge"); - cy.justLog("Test component rendering on the Canvas"); - framed.rootElt().contains("Happy 2022!").should("exist"); - cy.justLog("Test default value"); - framed.rootElt().contains("Hello Plasmic!").should("exist"); - framed.rootElt().contains("Click here").should("exist"); - framed.rootElt().contains("You haven't clicked").should("exist"); - framed.rootElt().contains("State value: 0").should("exist"); - framed - .rootElt() - .find(`[data-test-id="badge-component"]`) - .should("have.css", "background-color", "rgb(200, 200, 255)"); - cy.justLog("Test default styles"); - framed - .rootElt() - .find(`[data-test-id="badge-component"]`) - .should("have.css", "height", "200px"); - framed - .rootElt() - .find(`[data-test-id="badge-component"]`) - .should("have.css", "width", "150px"); - cy.justLog("Test updated styles"); - cy.setSelectedDimStyle("width", "160px"); - framed - .rootElt() - .find(`[data-test-id="badge-component"]`) - .should("have.css", "width", "160px"); - cy.withinLiveMode(() => { - cy.justLog("Test live frame rendering"); - cy.contains("Hello Plasmic!").should("exist"); - cy.contains("Happy 2022!").should("exist"); - cy.get(`[data-test-id="badge-component"]`).should( - "have.css", - "background-color", - "rgb(200, 200, 255)" - ); - cy.get(`[data-test-id="badge-component"]`).should( - "have.css", - "height", - "200px" - ); - cy.get(`[data-test-id="badge-component"]`).should( - "have.css", - "width", - "160px" - ); - cy.justLog("Test component state / hooks"); - cy.contains("You haven't clicked").should("exist"); - cy.contains("Click here").click(); - cy.contains("You clicked 1 times").should("exist"); - cy.contains("Click here").click(); - cy.contains("You clicked 2 times").should("exist"); - }); - cy.justLog("Test props"); - cy.switchToSettingsTab(); - cy.get(".canvas-editor__right-pane") - .find(`[placeholder="2022"]`) - .focus() - .type("2023") - .blur({ force: true }); - cy.justType("{enter}"); - framed.rootElt().contains("Happy 2023!").should("exist"); - cy.withinLiveMode(() => { - cy.contains("Happy 2023!").should("exist"); - }); - }); - cy.checkNoErrors(); - }); - cy.withinStudioIframe(() => { - configureProjectAppHost("plasmic-host-updated"); - }); - cy.withinStudioIframe( - () => { - cy.justLog("Test updating props"); - cy.wait(1000); - // Takes a while to get to the Confirm popup :-/ - cy.contains("Confirm", { timeout: 60000 }).click(); - cy.waitStudioLoaded(); - cy.waitForFrameToLoad(); - // cy.clearNotifications(); - cy.selectTreeNode(["root", "badge"]); - cy.justLog("Check updated default value"); - cy.get(".canvas-editor__right-pane") - .contains("Plasmician") - .should("exist"); - cy.justLog("Test updated prop type"); - cy.get(".canvas-editor__right-pane") - .contains("button", "2023") - .click(); - cy.contains(`div[role="option"]`, "2020").click({ force: true }); - cy.insertTextWithDynamic("`Clicks: ${$state.badge.clicks}`"); - cy.getFramedByName("artboard").then((framed: Framed) => { - framed.rootElt().contains("State value: 0").should("exist"); - framed.rootElt().contains("Clicks: 0").should("exist"); - }); - cy.withinLiveMode(() => { - cy.contains("Hello Plasmician!").should("exist"); - cy.contains("Happy 2020!").should("exist"); - cy.contains("Click here").click(); - cy.contains("You clicked 1 times").should("exist"); - cy.contains("State value: 1"); - cy.contains("Clicks: 1"); - cy.contains("Click here").click(); - cy.contains("You clicked 2 times").should("exist"); - cy.contains("State value: 2"); - cy.contains("Clicks: 2"); - }); - cy.checkNoErrors(); - }, - { noWaitStudioLoaded: true } - ); - cy.justLog("Check the project is not saving again once it opens"); - cy.openProject({ projectId }); - cy.withinStudioIframe(() => { - cy.curWindow().then((win) => { - cy.stub(win.console, "log").as("consoleLog"); - }); - cy.checkNoErrors(); - cy.waitForSave(); - cy.get("@consoleLog").should( - "be.calledWith", - "Save result is", - "SkipUpToDate" - ); - cy.get("@consoleLog").should( - "not.be.calledWith", - "Save result is", - "Success" - ); - }); - cy.withinStudioIframe(() => { - configureProjectAppHost("plasmic-host-updated-old-host"); - }); - cy.withinStudioIframe(() => { - cy.justLog("Test updating props"); - cy.waitStudioLoaded(); - cy.waitForFrameToLoad(); - cy.selectTreeNode(["root", "badge"]); - cy.getFramedByName("artboard").then((framed: Framed) => { - framed.rootElt().contains("State value: 0").should("exist"); - }); - cy.get( - ".ant-notification-notice-warning:has(.ant-notification-notice-message:contains(Unsupported host app detected))" - ) - .find(".ant-notification-notice-close") - .click(); - cy.checkNoErrors(); - }); - }) - .then(() => { - cy.removeCurrentProject(); - }); - }); - it("Should accept host URLs with query params", function () { - cy.setupNewProject({ name: "host-app" }).then(() => { - cy.withinStudioIframe(() => { - configureProjectAppHost("plasmic-host?"); - }); - cy.withinStudioIframe(() => { - cy.justLog("plasmic-host? loaded successfully"); - configureProjectAppHost("plasmic-host?foo=bar"); - }); - cy.withinStudioIframe(() => { - cy.justLog("plasmic-host?foo=bar loaded successfully"); - configureProjectAppHost("plasmic-host?foo=bar&baz="); - }); - cy.withinStudioIframe(() => { - // run an extra cy.withinStudioIframe to ensure Studio loaded successfully - cy.justLog("plasmic-host?foo=bar&baz= loaded successfully"); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/hostless-antd.spec.ts b/platform/wab/cypress/e2e/hostless-antd.spec.ts deleted file mode 100644 index 4936c7534a..0000000000 --- a/platform/wab/cypress/e2e/hostless-antd.spec.ts +++ /dev/null @@ -1,46 +0,0 @@ -describe("hostless-antd", () => { - it("works", () => { - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: { - name: "antd", - npmPkg: ["@plasmicpkgs/antd"], - }, - }).then(() => { - // Create a project to use it - cy.withinStudioIframe(() => { - cy.createNewFrame().then((framed) => { - cy.focusFrameRoot(framed); - - cy.insertFromAddDrawer("Vertical stack"); - cy.insertFromAddDrawer("AntdInput"); - cy.insertFromAddDrawer("Text"); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.get(`[data-test-id="data-picker"]`).contains("antdInput").click(); - cy.get(`[data-test-id="data-picker"]`) - .contains("button", "Save") - .click(); - - cy.insertFromAddDrawer("AntdCheckbox"); - cy.insertFromAddDrawer("Text"); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode( - '$state.antdCheckbox.value ? "Checkbox checked!" : "Checkbox not checked"' - ); - - cy.withinLiveMode(() => { - cy.get(".ant-input").type("hello input!"); - cy.get(".ant-input").should("have.attr", "value", "hello input!"); - cy.contains("hello input!").should("exist"); - - cy.contains("Checkbox not checked").should("exist"); - cy.get(".ant-checkbox-wrapper").click(); - cy.contains("Checkbox checked!").should("exist"); - }); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/hostless-antd5.spec.ts b/platform/wab/cypress/e2e/hostless-antd5.spec.ts deleted file mode 100644 index 8fd427bf07..0000000000 --- a/platform/wab/cypress/e2e/hostless-antd5.spec.ts +++ /dev/null @@ -1,48 +0,0 @@ -describe("hostless-antd", () => { - it("works", () => { - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: [ - { - name: "antd5", - npmPkg: ["@plasmicpkgs/antd5"], - }, - ], - }).then(() => { - // Create a project to use it - cy.withinStudioIframe(() => { - cy.createNewFrame().then((framed) => { - cy.focusFrameRoot(framed); - - cy.insertFromAddDrawer("Vertical stack"); - cy.insertFromAddDrawer("plasmic-antd5-input"); - cy.insertFromAddDrawer("Text"); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.get(`[data-test-id="data-picker"]`).contains("input").click(); - cy.get(`[data-test-id="data-picker"]`) - .contains("button", "Save") - .click(); - - cy.insertFromAddDrawer("plasmic-antd5-checkbox"); - cy.insertFromAddDrawer("Text"); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode( - '$state.checkbox.checked ? "Checkbox checked!" : "Checkbox not checked"' - ); - - cy.withinLiveMode(() => { - cy.get(".ant-input").type("hello input!"); - cy.get(".ant-input").should("have.attr", "value", "hello input!"); - cy.contains("hello input!").should("exist"); - - cy.contains("Checkbox not checked").should("exist"); - cy.get(".ant-checkbox-wrapper").click(); - cy.contains("Checkbox checked!").should("exist"); - }); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/hostless-basic-components.spec.ts b/platform/wab/cypress/e2e/hostless-basic-components.spec.ts deleted file mode 100644 index f0f00dcd39..0000000000 --- a/platform/wab/cypress/e2e/hostless-basic-components.spec.ts +++ /dev/null @@ -1,59 +0,0 @@ -describe("hostless-basic-components", function () { - it("can extract, instantiate, drill, add variants, undo select", function () { - // Create hostless plasmic project - cy.setupHostlessProject({ - name: "plasmic-basic-components", - npmPkg: "@plasmicpkgs/plasmic-basic-components", - }) - .then((hostlessProjectId: string) => { - // Create a project to use it - cy.setupNewProject({ - email: "admin@admin.example.com", - }) - .then(() => { - cy.withinStudioIframe(() => { - // Import the hostless project - cy.importProject(hostlessProjectId); - // Test the components - cy.createNewFrame().then((framed) => { - cy.focusFrameRoot(framed); - // Add Embed HTML with a div - cy.insertFromAddDrawer("hostless-embed"); - cy.contains("Paste your embed code").click(); - cy.get(".react-monaco-editor-container").click(); - cy.justType(`{cmd}a{backspace}`); - cy.justType( - `
Test embed
` - ); - cy.justType(`{cmd}s`); - cy.closeMonacoEditor(); - - // Ensure the div rendered correctly in the artboard and live frame - cy.getSelectedElt() - .children() - .should("contain.text", "Test embed"); - cy.getSelectedElt().children().should("be.visible"); - cy.getSelectedElt() - .children() - .should("have.css", "background-color", "rgb(255, 0, 0)"); - cy.withinLiveMode(() => { - cy.contains("Test embed").should("be.visible"); - cy.contains("Test embed").should("be.visible"); - cy.should("have.css", "background-color", "rgb(255, 0, 0)"); - }); - // Ensure no errors happened - cy.checkNoErrors(); - }); - }); - }) - .then(() => { - cy.removeCurrentProject("admin@admin.example.com").then(() => { - Cypress.env("projectId", hostlessProjectId); - }); - }); - }) - .then(() => { - cy.removeCurrentProject("admin@admin.example.com"); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/hostless-cms.spec.ts b/platform/wab/cypress/e2e/hostless-cms.spec.ts deleted file mode 100644 index aaaff73316..0000000000 --- a/platform/wab/cypress/e2e/hostless-cms.spec.ts +++ /dev/null @@ -1,154 +0,0 @@ -import { v4 } from "uuid"; -import { removeCurrentProject } from "../support/util"; - -describe("hostless-cms", function () { - afterEach(() => { - removeCurrentProject(); - }); - - it("can create cms with data, fetch using hostless package, change model", function () { - const cmsName = `CMS ${v4()}`; - cy.login(); - // Create CMS - cy.visit(`/projects/`, { log: false, timeout: 120000 }); - cy.contains("Plasmic's First Workspace").click(); - cy.contains("Integrations").click(); - cy.contains("New CMS").click(); - cy.get(`[data-test-id="prompt"]`).click(); - cy.wait(200); - cy.justType(cmsName); - cy.contains("Add").click(); - - // Create new model - cy.get(`[data-test-id="cmsModels"]`).click(); - cy.get(`[data-test-id="addModelButton"]`).click(); - cy.get(`[data-test-id="prompt"]`).click(); - cy.justType("First model"); - cy.contains("Add").click(); - // Create field - cy.contains("Add field").click(); - cy.contains("newField").click(); - cy.get(`[id="schema_fields_0_identifier"]`).click(); - cy.justType(`{selectAll}first field`); - // Create other field - cy.contains("Add field").click(); - cy.contains("newField").click(); - cy.get(`[id="schema_fields_1_identifier"]`).click(); - cy.justType(`{selectAll}second field`); - cy.contains("Save").click({ force: true }); - cy.contains("Saved!"); - - // Add rows - cy.get(`[data-test-id="cmsContent"]`).click(); - cy.get(`[data-test-id="addEntryButton"]`).click(); - cy.wait(500); - cy.get(`[id="number__firstField"]`).click(); - cy.justType("1 - first"); - cy.get(`[id="number__secondField"]`).click(); - cy.justType("1 - second"); - cy.wait(2000); - cy.contains("Publish").click(); - cy.contains("Your changes have been published."); - cy.get(`[data-test-id="addEntryButton"]`).click(); - cy.contains("Untitled entry"); - cy.wait(500); - cy.get(`[id="number__firstField"]`).click(); - cy.justType("2 - first"); - cy.get(`[id="number__secondField"]`).click(); - cy.justType("2 - second"); - cy.wait(2000); - cy.contains("Publish").click(); - cy.contains("Your changes have been published."); - - cy.get(`[data-test-id="cmsSettings"]`).click(); - - // const cmsId = "kALxsG6wQ2dTo2uvAA6xoz"; - // const cmsPublicToken = - // "98KAclsCAVpTh6G0syrtzx08JsjdtJAifPi11r4OzUFqfLs2t1J4v72lgEvGHDubZBiSA9cA1gx84kMO3bCA"; - cy.getTextFromId("databaseId").then((cmsId) => - cy.getTextFromId("publicToken").then((cmsPublicToken) => { - // Create new plasmic project using the cms package - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: { - name: "plasmic-cms", - npmPkg: ["@plasmicpkgs/plasmic-cms"], - }, - }).then(() => { - cy.withinStudioIframe(() => { - // Test the components - cy.switchToProjectSettingsTab(); - cy.contains("CMS Credentials Provider").click(); - cy.get(`#sidebar-modal button[data-test-id="collapse"]`).click(); - cy.wait(200); - cy.get('[data-plasmic-prop="host"]') - .wait(100) - .type("{selectall}") - .type("{backspace}") - .type(`${Cypress.config("baseUrl")}`); - cy.setSelectedDimStyle("databaseId", cmsId); - cy.setSelectedDimStyle("databaseToken", cmsPublicToken); - cy.switchToTreeTab(); - - cy.createNewFrame().then((framed) => { - cy.focusFrameRoot(framed); - // Add Data loader - cy.insertFromAddDrawer("hostless-plasmic-cms-query-repeater"); - cy.wait(2000); - cy.getSelectedElt() - .should("contain.text", "1 - first") - .should("contain.text", "2 - first"); - cy.justType("{enter}{enter}"); - cy.renameTreeNode("CMS Container", { programatically: true }); - - // Change cms field - cy.selectTreeNode(["Slot", "CMS Container", "CMS Entry Field"]); - - cy.get(".canvas-editor__right-pane") - .contains("button", "firstField") - .click(); - cy.wait(300); - cy.contains(`div[role="option"]`, "secondField").click(); - cy.selectTreeNode(["CMS Data Fetcher"]) - .getSelectedElt() - .should("contain.text", "1 - second") - .should("contain.text", "2 - second"); - - cy.checkNoErrors(); - }); - - cy.createNewFrame().then((framed) => { - cy.focusFrameRoot(framed); - // Add Data loader - cy.insertFromAddDrawer("hostless-plasmic-cms-query-repeater"); - cy.wait(2000); - cy.justType("{enter}{enter}"); - cy.renameTreeNode("CMS Container", { programatically: true }); - - // Add text to data bind - cy.selectTreeNode([ - "Slot", - "CMS Container", - "CMS Entry Field", - ]).justType("{del}"); - cy.insertFromAddDrawer("Text"); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.selectPathInDataPicker([ - "plasmicCmsFirstModelItem", - "data", - "firstField", - ]); - - cy.selectTreeNode(["CMS Data Fetcher"]) - .getSelectedElt() - .should("contain.text", "1 - first") - .should("contain.text", "2 - first"); - - cy.checkNoErrors(); - }); - }); - }); - }) - ); - }); -}); diff --git a/platform/wab/cypress/e2e/hostless-code-libs.spec.ts b/platform/wab/cypress/e2e/hostless-code-libs.spec.ts deleted file mode 100644 index 3262224bde..0000000000 --- a/platform/wab/cypress/e2e/hostless-code-libs.spec.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { Framed, removeCurrentProject, withinLiveMode } from "../support/util"; - -describe("Make sure code libs work on canvas", function () { - beforeEach(() => { - // Intercept so our tests don't depend on external URLS. - // Fetched by axios and isomorphic-fetch - cy.intercept("https://api.publicapis.org/entries?title=cats", { - body: { - count: 1, - entries: [ - { - API: "Cats", - Description: "Pictures of cats from Tumblr", - Auth: "apiKey", - HTTPS: true, - Cors: "no", - Link: "https://docs.thecatapi.com/", - Category: "Animals", - }, - ], - }, - }); - }); - afterEach(() => { - removeCurrentProject(); - }); - it("Make sure code libs work on canvas", function () { - cy.setupProjectFromTemplate("code-libs").then(() => { - cy.withinStudioIframe(() => { - cy.waitForFrameToLoad(); - cy.turnOffDesignMode(); - cy.waitForFrameToLoad(); - cy.switchInteractiveMode(); - cy.refreshFocusedArena(); - cy.waitForFrameToLoad(); - cy.curDocument() - .get(".canvas-editor__frames .canvas-editor__viewport") - .then(($frame) => { - const frame = $frame[0] as HTMLIFrameElement; - return new Framed(frame); - }) - .then((framed: Framed) => { - const checkContents = ( - chainable: () => - | Cypress.Chainable> - | typeof cy - ) => { - chainable().contains(`Axios response: "Animals"`).should("exist"); - // Cypress doesn't support accessing the clipboard :/ - chainable() - .contains(`Copy to clipboard type: "function"`) - .should("exist"); - chainable().contains(`date-fns result: 48 hours`).should("exist"); - chainable() - .contains(`day.js number of days in August: 31`) - .should("exist"); - chainable() - .contains(`Faker name: "Maddison", PT-BR name: "Maria Eduarda"`) - .should("exist"); - chainable() - .contains( - `fast-stringify: {"foo":"[ref=.]","bar":{"bar":"[ref=.bar]","foo":"[ref=.]"}}` - ) - .should("exist"); - chainable() - .contains( - `Immer - state before: "done === false"; state after: "done === true"` - ) - .should("exist"); - /* - TODO: isomorphic-fetch - chainable() - .contains(`Isomorphic-fetch response: "Animals"`) - .should("exist"); - */ - chainable().contains(`jquery: red box width: 50`).should("exist"); - chainable() - .contains(`lodash partition: [[1,3],[2,4]]`) - .should("exist"); - chainable() - .contains( - `marked:

This text is really important

` - ) - .should("exist"); - chainable() - .contains(`MD5 hash: cd946e1909bfe736ec8921983eb9115f`) - .should("exist"); - chainable() - .contains( - `nanoid with single-character alphabet for stable results: 000000` - ) - .should("exist"); - chainable().contains(`papaparse: 5 rows, 4 cols`).should("exist"); - chainable() - .contains(`pluralize "house": "houses"`) - .should("exist"); - chainable().contains(`random: 65`).should("exist"); - chainable().contains(`semver: 3.3.0`).should("exist"); - chainable() - .contains(`tinycolor2: rgb(255, 0, 0)`) - .should("exist"); - chainable() - .contains( - `uuid NIL: 00000000-0000-0000-0000-000000000000, validate: true` - ) - .should("exist"); - chainable() - .contains( - `zod parse valid: {"username":"Test"}, safeParse with invalid data success: false` - ) - .should("exist"); - }; - checkContents(() => framed.rootElt()); - withinLiveMode(() => { - checkContents(() => cy); - }); - cy.checkNoErrors(); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/hostless-commerce.spec.ts b/platform/wab/cypress/e2e/hostless-commerce.spec.ts deleted file mode 100644 index d4b70c1481..0000000000 --- a/platform/wab/cypress/e2e/hostless-commerce.spec.ts +++ /dev/null @@ -1,374 +0,0 @@ -import { - cartCookie, - localCommerceData, -} from "../../src/wab/client/test-helpers/test-commerce"; -import { VERT_CONTAINER_CAP } from "../../src/wab/shared/Labels"; -import { justType, removeCurrentProject } from "../support/util"; - -describe("hostless-commerce", function () { - const products = localCommerceData.products; - const pathToProductInstanceTreeLabel = [ - "root", - "Product Collection", - 'Slot: "children"', - "Product Container", - ]; - - afterEach(() => { - removeCurrentProject(); - }); - - it("can add product components and cart components", function () { - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: [ - { - name: "commerce", - npmPkg: ["@plasmicpkgs/commerce"], - }, - { - name: "commerce-local", - npmPkg: ["@plasmicpkgs/commerce-local"], - deps: ["commerce"], - }, - ], - }).then(() => { - cy.withinStudioIframe(() => { - cy.switchToTreeTab(); - cy.createNewPage("Collection Page").then((framed) => { - cy.focusFrameRoot(framed); - - // Adding Cart components - cy.selectTreeNode(["root"]); - cy.insertFromAddDrawer(VERT_CONTAINER_CAP); - cy.renameTreeNode("Cart Container", { programatically: true }); - cy.addHtmlAttribute("id", "cart-container"); - cy.insertFromAddDrawer("plasmic-commerce-cart"); - cy.renameTreeNode("Cart Size", { programatically: true }); - cy.selectDataPlasmicProp("field", "Size"); - cy.insertFromAddDrawer("plasmic-commerce-cart"); - cy.renameTreeNode("Cart Total Price", { programatically: true }); - cy.selectDataPlasmicProp("field", "Total Price"); - - // Adding Product components - cy.selectTreeNode(["root"]); - - cy.insertFromAddDrawer("plasmic-commerce-product-collection"); - justType("{enter}{enter}"); - cy.renameTreeNode("Product Container", { programatically: true }); - - cy.selectTreeNode(pathToProductInstanceTreeLabel).click(); - cy.addHtmlAttribute("className", "product-container"); - cy.selectTreeNode([ - ...pathToProductInstanceTreeLabel, - "Product Text Field", - ]).renameTreeNode("Product Name", { programatically: true }); - cy.insertFromAddDrawer( - "plasmic-commerce-product-text-field" - ).renameTreeNode("Product Slug", { programatically: true }); - cy.selectDataPlasmicProp("field", "slug"); - cy.insertFromAddDrawer("plasmic-commerce-product-price"); - cy.insertFromAddDrawer("plasmic-commerce-product-quantity"); - cy.insertFromAddDrawer("plasmic-commerce-product-variant-picker"); - cy.insertFromAddDrawer("plasmic-commerce-add-to-cart-button"); - - cy.insertFromAddDrawer("plasmic-commerce-product-link"); - cy.setDataPlasmicProp("linkDest", "/products/{{}slug}"); - cy.selectTreeNode([ - ...pathToProductInstanceTreeLabel, - "Product Link", - 'Slot: "children"', - ]); - cy.insertFromAddDrawer("Text"); - cy.getSelectedElt().dblclick({ force: true }); - framed.enterIntoTplTextBlock("Click here!"); - - cy.focusFrameRoot(framed); - - test_ProductComponent_InCanvas("Product Name", products[0].name); - test_ProductComponent_InCanvas( - "Product Text Field", - products[0].slug, - "Product Slug" - ); - test_ProductComponent_InCanvas( - "Product Price", - products[0].price.value - ); - test_ProductComponent_InCanvas( - "Product Media", - products[0].images[0].url - ); - test_ProductComponent_InCanvas( - "Product Variant Picker", - products[0].variants.find( - (v: any) => v.price === products[0].price.value - ).id - ); - test_ProductComponent_InCanvas("Product Quantity", "1"); - test_ProductComponent_InCanvas("Add To Cart Button", "Add To Cart"); - - test_CartComponent_InCanvas("Cart", "0", "Cart Size"); - test_CartComponent_InCanvas("Cart", "$0.00", "Cart Total Price"); - - test_ProductLink(0); - test_ProductLink(2); - - cy.withinLiveMode(async () => { - test_CommerceCartData(0, 0); - - cy.get(".product-container").each(($product, i) => { - const product = products[i]; - cy.wrap($product).contains(product.name).should("be.visible"); - cy.wrap($product).contains(product.slug).should("be.visible"); - cy.wrap($product) - .contains(product.price.value) - .should("be.visible"); - cy.wrap($product) - .find("img") - .should("be.visible") - .should("have.attr", "src", product.images[0].url); - }); - - test_AddToCart_OneProduct(0); - test_AddToCart_OneProduct(1); - test_AddToCart_SameProductTwice(0); - test_AddToCart_SameProductTwice(1); - test_AddToCart_DifferentProducts([0, 3, 2]); - test_AddToCart_DifferentProducts([1, 4, 6]); - test_AddToCart_OneProductModifyingQuantity(0, 10); - test_AddToCart_OneProductModifyingQuantity(1, 7); - test_AddToCart_OneProductDifferentVariants(0); - test_AddToCart_OneProductDifferentVariants(1); - - test_UpdateProductPrice_After_Chaging_ProductVariant(0); - }); - }); - - // Ensure no errors happened - cy.checkNoErrors(); - }); - }); - }); - - it("can use context to data bind", function () { - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: [ - { - name: "commerce", - npmPkg: ["@plasmicpkgs/commerce"], - }, - { - name: "commerce-local", - npmPkg: ["@plasmicpkgs/commerce-local"], - deps: ["commerce"], - }, - ], - }).then(() => { - cy.withinStudioIframe(() => { - cy.switchToTreeTab(); - cy.createNewPage("Collection Page").then((framed) => { - cy.focusFrameRoot(framed); - - // Adding Product components - cy.selectTreeNode(["root"]); - - cy.insertFromAddDrawer("plasmic-commerce-product-collection"); - justType("{enter}{enter}"); - cy.renameTreeNode("Product Container", { programatically: true }); - - // Binding name and image - cy.selectTreeNode(pathToProductInstanceTreeLabel) - .click() - .justType("{del}"); - cy.insertFromAddDrawer(VERT_CONTAINER_CAP); - cy.addHtmlAttribute("className", "product-container"); - cy.insertFromAddDrawer("Text").renameTreeNode("Product Name", { - programatically: true, - }); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.selectPathInDataPicker(["currentProduct", "name"]); - cy.insertFromAddDrawer("Image"); - cy.get(`[data-test-id="image-picker"]`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.selectPathInDataPicker(["currentProduct", "images", "0", "url"]); - - cy.withinLiveMode(async () => { - cy.get(".product-container").each(($product, i) => { - const product = products[i]; - cy.wrap($product).contains(product.name).should("be.visible"); - cy.wrap($product) - .find("img") - .should("be.visible") - .should("have.attr", "src", product.images[0].url); - }); - }); - }); - - // Ensure no errors happened - cy.checkNoErrors(); - }); - }); - }); - - const getProductWithinLiveMode = (index: number) => { - return cy.get(".product-container").eq(index); - }; - - const test_CartComponent_InCanvas = ( - componentName: string, - value: string, - tplTreeName?: string - ) => { - cy.selectTreeNode(["root", "Cart Container", tplTreeName ?? componentName]) - .getSelectedElt() - .should("be.visible") - .should("contain.text", value); - }; - - const test_ProductLink = (index: number) => { - cy.withinLiveMode(() => { - getProductWithinLiveMode(index).contains("Click here!").click(); - cy.contains("Page not found").should("be.visible"); - cy.contains(`products/${products[index].slug}`).should("be.visible"); - }); - }; - - const test_ProductComponent_InCanvas = ( - componentName: string, - value: string, - tplTreeName?: string - ) => { - if (componentName === "Product Media") { - cy.selectTreeNode([ - ...pathToProductInstanceTreeLabel, - tplTreeName ?? componentName, - ]) - .getSelectedElt() - .should("be.visible") - .should("have.attr", "src", value); - } else if (componentName === "Product Quantity") { - cy.selectTreeNode([ - ...pathToProductInstanceTreeLabel, - tplTreeName ?? componentName, - ]) - .getSelectedElt() - .find("input") - .should("be.visible") - .should("have.attr", "value", value); - } else if (componentName === "Add To Cart Button") { - cy.selectTreeNode([ - ...pathToProductInstanceTreeLabel, - tplTreeName ?? componentName, - ]) - .getSelectedElt() - .parent() - .find("button") - .should("be.visible") - .contains(value); - } else if (componentName === "Product Variant Picker") { - cy.selectTreeNode([ - ...pathToProductInstanceTreeLabel, - tplTreeName ?? componentName, - ]) - .getSelectedElt() - .parent() - .find("select") - .should("be.visible") - .should("have.value", value); - } else { - cy.selectTreeNode([ - ...pathToProductInstanceTreeLabel, - tplTreeName ?? componentName, - ]) - .getSelectedElt() - .should("be.visible") - .should("contain.text", value); - } - }; - - const test_AddToCart_OneProduct = (index: number) => { - cy.clearCookie(cartCookie); - getProductWithinLiveMode(index).within(() => { - cy.get("button").click(); - }); - test_CommerceCartData(1, products[index].price.value); - }; - - const test_AddToCart_SameProductTwice = (index: number) => { - cy.clearCookie(cartCookie); - getProductWithinLiveMode(index).within(() => { - cy.get("button").click(); - cy.get("button").click(); - }); - test_CommerceCartData(1, products[index].price.value * 2); - }; - - const test_AddToCart_DifferentProducts = (index: number[]) => { - cy.clearCookie(cartCookie); - index.forEach((i) => { - getProductWithinLiveMode(i).within(() => { - cy.get("button").click(); - }); - }); - test_CommerceCartData( - index.length, - index.reduce((acc: number, i: number) => acc + products[i].price.value, 0) - ); - }; - - const test_AddToCart_OneProductModifyingQuantity = ( - index: number, - quantity: number - ) => { - cy.clearCookie(cartCookie); - getProductWithinLiveMode(index).within(() => { - cy.get("input").clear({ force: true }).type(`${quantity}`); - cy.get("button").click(); - cy.get("input").clear({ force: true }).type("1"); - }); - test_CommerceCartData(1, products[index].price.value * quantity); - }; - - const test_AddToCart_OneProductDifferentVariants = (index: number) => { - cy.clearCookie(cartCookie); - getProductWithinLiveMode(index).within(() => { - cy.get("select").select(products[index].variants[0].id, { force: true }); - cy.get("button").click(); - cy.get("select").select(products[index].variants[1].id, { force: true }); - cy.get("button").click(); - }); - test_CommerceCartData( - 2, - products[index].variants[0].price + products[index].variants[1].price - ); - }; - - const test_CommerceCartData = ( - expectedSize: number, - expectedTotalPrice: number - ) => { - cy.get("#cart-container") - .children() - .eq(0) - .should(($el) => expect($el.text()).be.eq(`${expectedSize}`)); - - cy.get("#cart-container") - .children() - .eq(1) - .should(($el) => - expect($el.text()).be.eq(`$${expectedTotalPrice.toFixed(2)}`) - ); - }; - - const test_UpdateProductPrice_After_Chaging_ProductVariant = ( - index: number - ) => { - getProductWithinLiveMode(index).within(() => { - for (const variant of products[index].variants) { - cy.get("select").select(variant.id, { force: true }); - cy.contains(`$${variant.price}`); - } - }); - }; -}); diff --git a/platform/wab/cypress/e2e/hostless-react-slick-slider-carousel.spec.ts b/platform/wab/cypress/e2e/hostless-react-slick-slider-carousel.spec.ts deleted file mode 100644 index f2a1fc36b9..0000000000 --- a/platform/wab/cypress/e2e/hostless-react-slick-slider-carousel.spec.ts +++ /dev/null @@ -1,121 +0,0 @@ -describe("hostless-react-slick slider carousel", () => { - beforeEach(() => { - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: [ - { - name: "react-slick", - npmPkg: ["@plasmicpkgs/react-slick", "react-slick", "slick-carousel"], - cssImport: [ - "slick-carousel/slick/slick-theme.css", - "slick-carousel/slick/slick.css", - ], - }, - ], - }); - }); - - function assertState(value: string) { - cy.wait(300); - cy.switchToDataTab(); - cy.get( - `[data-test-id="variables-section"] [data-test-id="show-extra-content"]` - ).click(); - cy.get(`[data-test-id="sliderCarousel.currentSlide"] a`).should( - "have.text", - value - ); - cy.switchToSettingsTab(); - } - - it("works", () => { - // Create a project to use it - cy.withinStudioIframe(() => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - cy.createNewPageInOwnArena("Homepage").then((framed) => { - const textId = "slider-current-slide-state-text"; - cy.insertFromAddDrawer("hostless-slider"); - - cy.insertFromAddDrawer("Text"); - cy.addHtmlAttribute("id", textId); - cy.renameTreeNode("slider-current-slide-state-text"); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.get(`[data-test-id="data-picker"]`).contains("currentSlide").click(); - cy.get(`[data-test-id="data-picker"]`) - .contains("button", "Save") - .click(); - - assertState("0"); - cy.selectTreeNode(["Slider Carousel"]); - cy.get( - `[data-test-id="prop-editor-row-initialSlide"] label` - ).rightclick(); - cy.contains("Use dynamic value").click(); - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode(`1`); - cy.wait(1000); - - cy.contains("Append new slide").click(); - assertState("3"); - - cy.contains("Append new slide").click(); - assertState("4"); - - cy.contains("Append new slide").click(); - assertState("5"); - cy.wait(1000); - - cy.contains("Delete current slide").click(); - assertState("4"); - cy.wait(1000); - - cy.contains("Delete current slide").click(); - assertState("3"); - - cy.contains("Append new slide").click(); - cy.wait(500); - cy.contains("Append new slide").click(); - cy.wait(500); - cy.contains("Append new slide").click(); - cy.wait(500); - assertState("6"); - - cy.contains("Delete current slide").click(); - cy.wait(100); - cy.contains("Delete current slide").click(); - cy.wait(100); - cy.contains("Delete current slide").click(); - assertState("3"); - - cy.contains("Delete current slide").click(); - cy.wait(100); - cy.contains("Delete current slide").click(); - cy.wait(100); - cy.contains("Delete current slide").click(); - cy.wait(100); - cy.contains("Delete current slide").click(); - cy.wait(100); - cy.contains("Delete current slide").should("not.exist"); - assertState("0"); - - cy.contains("Append new slide").click(); - cy.wait(500); - cy.contains("Append new slide").click(); - cy.wait(500); - cy.contains("Append new slide").click(); - cy.wait(500); - assertState("2"); - - cy.contains("Next").click(); - assertState("0"); - cy.contains("Next").click(); - assertState("1"); - - // Check live mode. - cy.withinLiveMode(() => { - cy.get(`#${textId}`).should("have.text", "1"); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/hostless-rich-calendar.spec.ts b/platform/wab/cypress/e2e/hostless-rich-calendar.spec.ts deleted file mode 100644 index d6b32ea2bc..0000000000 --- a/platform/wab/cypress/e2e/hostless-rich-calendar.spec.ts +++ /dev/null @@ -1,238 +0,0 @@ -import { turnOffDesignMode } from "../support/util"; - -/** - * Adds a calendar and sets its default value. - * NOTE: Setting a default value is important, because we are dealing with dates! - * The calendar looks different depending on when the test runs - * (e.g. Next year, the calendar will show year 2024 by default). - * We don't want to break the test due to this variation, so we set a default value. - * Now it will always show the same data no matter when. - * - * Also, the year and month dropdowns use virtual list, so the items in the list will vary depending on what month/year the test runs. - * So it's also not recommended to get cypress to click on the items in virtual list and reach the desired date in the calendar. - * @param defaultValue - */ -function addCalendar(defaultValue?: string) { - cy.insertFromAddDrawer("hostless-rich-calendar"); - if (!defaultValue) { - return; - } - cy.get(`[data-test-id="prop-editor-row-value"] label`) - .contains("Value") - .rightclick(); - cy.get("#use-dynamic-value-btn").click(); // NOTE: This is not selectable by .contains("Use dynamic value"), which is strange! - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode(`"${defaultValue}"`); -} - -describe("hostless-rich-calendar", () => { - beforeEach(() => { - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: [ - { - name: "antd5", - npmPkg: ["@plasmicpkgs/antd5"], - }, - { - name: "plasmic-rich-components", - npmPkg: [ - "@plasmicpkgs/plasmic-rich-components", - "@ant-design/icons", - "@ant-design/pro-components", - ], - deps: ["antd5"], - }, - ], - }); - }); - - it("calendar states work", () => { - // Create a project to use it - cy.withinStudioIframe(() => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - cy.createNewPageInOwnArena("Homepage").then((framed) => { - turnOffDesignMode(); - - addCalendar("2022-08-01"); - - cy.insertFromAddDrawer("Text"); - cy.renameTreeNode("text-calendar-mode"); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.get(`[data-test-id="data-picker"]`).contains("mode").click(); - cy.get(`[data-test-id="data-picker"]`) - .contains("button", "Save") - .click(); - cy.insertFromAddDrawer("Text"); - cy.renameTreeNode("text-calendar-selected-date"); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.get(`[data-test-id="data-picker"]`).contains("selectedDate").click(); - cy.get(`[data-test-id="data-picker"]`) - .contains("button", "Save") - .click(); - - // Check live mode. - - cy.withinLiveMode(() => { - // checks "selectedDate" state - // NOTE: [456] indicates that the date could be 24 or 25 or 26 depending on the timezone - cy.contains(/2022-08-2[456]T\d{2}:\d{2}:\d{2}\.\d{3}Z/).should( - "not.exist" - ); - cy.get(".ant-picker-content").contains("25").click(); - cy.contains(/2022-08-2[456]T\d{2}:\d{2}:\d{2}\.\d{3}Z/).should( - "exist" - ); - - // checks "mode" state - cy.contains("month").should("not.exist"); - cy.contains("year").should("not.exist"); - cy.get(".ant-radio-button-wrapper").eq(1).click(); - cy.contains("month").should("not.exist"); - cy.contains("year").should("exist"); - cy.get(".ant-radio-button-wrapper").eq(0).click(); - cy.contains("month").should("exist"); - cy.contains("year").should("not.exist"); - }); - }); - }); - }); - - it("calendar valid range works", () => { - // Create a project to use it - cy.withinStudioIframe(() => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - cy.createNewPageInOwnArena("Homepage").then((framed) => { - turnOffDesignMode(); - - addCalendar(); - cy.get( - `#component-props-section [data-test-id="show-extra-content"]` - ).click(); - cy.get(`[data-test-id="prop-editor-row-validRange"] label`) - .contains("Valid range") - .rightclick(); - cy.get("#use-dynamic-value-btn").click(); // NOTE: This is not selectable by .contains("Use dynamic value"), which is strange! - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode('["2022-09-06", "2022-11-26"]'); - - // Check live mode. - - cy.withinLiveMode(() => { - cy.get(".ant-radio-button-wrapper").eq(1).click(); // change mode to year - cy.get(".ant-select-selector").first().click(); - cy.get(".ant-select-dropdown .rc-virtual-list-holder-inner") - .contains("2023") - .should("not.exist"); - cy.get(".ant-select-dropdown .rc-virtual-list-holder-inner") - .contains("2022") - .should("exist") - .click(); - cy.get(".ant-picker-cell-disabled").should("have.length", 9); - }); - }); - }); - }); - - it("calendar events are rendered", () => { - // Create a project to use it - cy.withinStudioIframe(() => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - cy.createNewPageInOwnArena("Homepage").then((framed) => { - turnOffDesignMode(); - - addCalendar(`2023`); - cy.get(`[data-test-id="prop-editor-row-data"] label`) - .contains("Events") - .rightclick(); - cy.get("#use-dynamic-value-btn").click(); // NOTE: This is not selectable by .contains("Use dynamic value"), which is strange! - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode( - `[ - { - "date": "2023-05-10 09:24:15", - "name": "Mustafa Birthday", - "color": "gold", - "image": "https://www.one-stop-party-ideas.com/images/First-Outfit-Boy.jpg" - }, - { - "date": "2023-05-15 09:24:15", - "name": "Affan Birthday", - "color": "red", - "image": "https://aspenjay.com/wp-content/uploads/2021/08/baby-1st-birthday-photos.jpg" - }, - { - "date": "2023-01-02T22:30:00.000+00:00", - "name": "Usman Birthday", - "color": "blue", - "image": "https://www.bakingo.com/blog/wp-content/uploads/2023/02/vanilla.jpg" - }, - { - "date": "Sun, 25 Apr 2021 13:23:12 +0630", - "name": "Sarah Birthday", - "color": "purple", - "image": "https://www.bakingo.com/blog/wp-content/uploads/2023/02/vanilla.jpg" - }, - { - "date": "2023-01-13T22:30:00.000+00:00", - "name": "Jaweria Birthday", - "color": "pink", - "image": "https://www.bakingo.com/blog/wp-content/uploads/2023/02/vanilla.jpg" - }, - { - "date": "2023-11-26T22:30:00.000+00:00", - "name": "Safi Birthday", - "color": "silver", - "image": "https://www.bakingo.com/blog/wp-content/uploads/2023/02/vanilla.jpg" - } - ]` - ); - - // Check live mode. - - cy.withinLiveMode(() => { - cy.get(".ant-radio-button-wrapper").eq(1).click(); // change mode to year - - cy.get(`.ant-picker-month-panel table td[title="2023-05"] li`).should( - "have.length", - 2 - ); - cy.get(`.ant-picker-month-panel table td[title="2023-05"] li`) - .first() - .get(".ant-badge-color-gold") - .should("exist"); - cy.get(`.ant-picker-month-panel table td[title="2023-05"] li`) - .first() - .contains("Mustafa Birthday") - .should("exist"); - cy.get(`.ant-picker-month-panel table td[title="2023-05"] li`) - .eq(1) - .get(".ant-badge-color-red") - .should("exist"); - cy.get(`.ant-picker-month-panel table td[title="2023-05"] li`) - .eq(1) - .contains("Affan Birthday") - .should("exist"); - - cy.get(`.ant-picker-month-panel table td[title="2023-01"] li`).should( - "have.length", - 2 - ); - cy.get(`.ant-picker-month-panel table td[title="2023-10"] li`).should( - "have.length", - 0 - ); - cy.get(`.ant-picker-month-panel table td[title="2023-11"] li`).should( - "have.length", - 1 - ); - cy.get(`.ant-picker-month-panel table td[title="2023-12"] li`).should( - "have.length", - 0 - ); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/hostless-rich-layout.spec.ts b/platform/wab/cypress/e2e/hostless-rich-layout.spec.ts deleted file mode 100644 index 0107690021..0000000000 --- a/platform/wab/cypress/e2e/hostless-rich-layout.spec.ts +++ /dev/null @@ -1,194 +0,0 @@ -import { - chooseDataPlasmicProp, - clickDataPlasmicProp, - closeSidebarModal, - justType, - propAddItem, - setDataPlasmicProp, - showMoreInSidebarModal, - turnOffDesignMode, -} from "../support/util"; - -let isWithinLiveFrame = false; -const maybeSelectedElt = () => - isWithinLiveFrame ? cy.get("#plasmic-app") : cy.getSelectedElt(); - -function checkLightFgColors() { - maybeSelectedElt() - .find(".ant-menu-item a") - .first() - .should(($elt) => { - const color = getComputedStyle($elt[0]).color; - expect(color).to.be.oneOf([ - "rgba(255, 255, 255, 0.65)", - "rgba(255, 255, 255, 0.75)", - ]); - }); -} - -function checkDarkFgColors() { - maybeSelectedElt() - .find(".ant-menu-item a") - .first() - .should("have.css", "color", "rgba(83, 83, 83, 0.65)"); -} - -function checkActiveNavDarkBgPrimary() { - maybeSelectedElt() - .find(".ant-menu-item") - .last() - .should(($elt) => { - const fill = getComputedStyle($elt[0]).backgroundColor; - expect(fill).to.be.oneOf(["rgb(22, 104, 220)", "rgba(0, 0, 0, 0.15)"]); - }); -} - -function checkSubmenus() { - maybeSelectedElt() - .find(".ant-menu-submenu-open") - .contains("Should be expanded") - .should("exist"); - maybeSelectedElt() - .find(".ant-menu-submenu-open") - .contains("Nested") - .should("be.visible"); -} - -function checkSiderStyles() { - maybeSelectedElt() - .find(".ant-layout-sider") - .should("have.css", "background-color", "rgb(22, 119, 255)"); - checkLightFgColors(); - // Check also that the active menu item background is darker. - checkActiveNavDarkBgPrimary(); -} - -describe("hostless-rich-components", () => { - beforeEach(() => { - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: [ - { - name: "antd5", - npmPkg: ["@plasmicpkgs/antd5"], - }, - { - name: "plasmic-rich-components", - npmPkg: [ - "@plasmicpkgs/plasmic-rich-components", - "@ant-design/icons", - "@ant-design/pro-components", - ], - deps: ["antd5"], - }, - ], - }); - }); - - it("RichLayout works", () => { - // Create a project to use it - cy.withinStudioIframe(() => { - cy.createNewPageInOwnArena("About").then(() => { - turnOffDesignMode(); - - cy.insertFromAddDrawer("hostless-rich-layout"); - - // Check white bg by default - maybeSelectedElt() - .find(".ant-layout-header") - .should("have.css", "background-color", "rgb(255, 255, 255)"); - checkDarkFgColors(); - - // Check that the current route should be styled differently. - // Add route for /about (the location.path of About). - // And add a link to /about. - propAddItem("Nav menu items"); - setDataPlasmicProp("path", "/about"); - setDataPlasmicProp("name", "About"); - closeSidebarModal(); - maybeSelectedElt() - .find(".ant-layout-header li a") - .last() - .should("have.css", "color", "rgba(83, 83, 83, 0.95)"); - - // Check that changing color scheme works. - // Check that foreground colors adapt. - clickDataPlasmicProp("simpleNavTheme"); - - chooseDataPlasmicProp("scheme", "dark"); - maybeSelectedElt() - .find(".ant-layout-header") - .should("have.css", "background-color", "rgb(1, 21, 40)"); - checkLightFgColors(); - - chooseDataPlasmicProp("scheme", "custom"); - clickDataPlasmicProp("customBgColor"); - justType("#E6EEF4{enter}"); - maybeSelectedElt() - .find(".ant-layout-header") - .should("have.css", "background-color", "rgb(230, 238, 244)"); - checkDarkFgColors(); - cy.get("[data-test-id='back-sidebar-modal']").click(); - - // TODO try custom token color too - - chooseDataPlasmicProp("scheme", "primary"); - maybeSelectedElt() - .find(".ant-layout-header") - .should("have.css", "background-color", "rgb(22, 119, 255)"); - checkLightFgColors(); - // Check also that the active menu item background is darker. - checkActiveNavDarkBgPrimary(); - - closeSidebarModal(); - - // Check side menu mode. - chooseDataPlasmicProp("layout", "side"); - checkSiderStyles(); - - // Check nested nav. - // Matching subroute should be expanded. - propAddItem("Nav menu items"); - setDataPlasmicProp("path", "/"); - setDataPlasmicProp("name", "Should be closed"); - showMoreInSidebarModal(); - propAddItem("Nested items"); - setDataPlasmicProp("path", "/mismatch"); - setDataPlasmicProp("name", "Mismatch"); - closeSidebarModal(); - - propAddItem("Nav menu items"); - setDataPlasmicProp("path", "/"); - setDataPlasmicProp("name", "Should be expanded"); - showMoreInSidebarModal(); - propAddItem("Nested items"); - setDataPlasmicProp("path", "/about"); - setDataPlasmicProp("name", "Nested"); - closeSidebarModal(); - - // checkSubmenus(); - - // Check live mode. - - cy.withinLiveMode(() => { - isWithinLiveFrame = true; - - // Check styles - checkSiderStyles(); - - // Check nested nav. - checkSubmenus(); - - // Check sidebar expand/collapse works - cy.get(".ant-pro-sider-collapsed-button").click(); - cy.get(".ant-layout-sider").should(($elt) => { - expect($elt.width()).to.be.lt(100); - }); - cy.get(".ant-pro-sider-collapsed-button").click(); - cy.get(".ant-layout-sider").should(($elt) => { - expect($elt.width()).to.be.gt(100); - }); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/hostless-rich-table.spec.ts b/platform/wab/cypress/e2e/hostless-rich-table.spec.ts deleted file mode 100644 index 76cf093943..0000000000 --- a/platform/wab/cypress/e2e/hostless-rich-table.spec.ts +++ /dev/null @@ -1,243 +0,0 @@ -import query from "../fixtures/northwind-orders-query.json"; -import { - chooseDataPlasmicProp, - chooseDataPlasmicPropByLabel, - clickDataPlasmicProp, - closeSidebarModal, - enterCustomCodeInDataPicker, - expandSection, - getDataPlasmicProp, - getSelectedElt, - propAddItem, - setDataPlasmicProp, - switchToDataTab, - switchToSettingsTab, - turnOffDesignMode, -} from "../support/util"; - -let isWithinLiveFrame = false; -const maybeSelectedElt = () => - isWithinLiveFrame ? cy.get("#plasmic-app") : cy.getSelectedElt(); - -function maskTimestampHours(x: string) { - return x.replace(/(, )\d+(:\d+)/, "$1XX$2"); -} - -describe("hostless-rich-components", () => { - beforeEach(() => { - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: [ - { - name: "antd5", - npmPkg: ["@plasmicpkgs/antd5"], - }, - { - name: "plasmic-rich-components", - npmPkg: [ - "@plasmicpkgs/plasmic-rich-components", - "@ant-design/icons", - "@ant-design/pro-components", - ], - deps: ["antd5"], - }, - ], - }); - }); - - it("RichTable works", () => { - // Create a project to use it - cy.withinStudioIframe(() => { - cy.createNewPageInOwnArena("Homepage").then(() => { - turnOffDesignMode(); - - cy.insertFromAddDrawer("hostless-rich-table"); - - chooseDataPlasmicProp("data", "[[dynamic value]]"); - cy.ensureDataPickerInCustomCodeMode(); - cy.resetMonacoEditorToCode(JSON.stringify(query)); - - chooseDataPlasmicPropByLabel("canSelectRows", "By clicking a row"); - - cy.get("#interactive-canvas-switch").click(); - - function checkAndInteract() { - maybeSelectedElt().should(($elt) => { - // Columns are all there - const headers = $elt.find("thead th"); - expect([...headers].map((x) => x.innerText)).to.deep.equal([ - "order_id", - "customer_id", - "employee_id", - "order_date", - "required_date", - "shipped_date", - "ship_via", - "freight", - "ship_name", - "ship_address", - "ship_city", - "ship_region", - "ship_postal_code", - "ship_country", - ]); - }); - - // Pagination - maybeSelectedElt().within(() => { - cy.contains("1-10 of 830 items").should("exist"); - cy.get(".ant-pagination-item:contains(83)").should("exist"); - }); - - // Filtering works - // Default date, number formatting - maybeSelectedElt().within(() => { - cy.get('input[placeholder="Search"]').type("10248"); - cy.get("tbody tr").should("have.length", 1); - }); - // Needs to be agnostic to timezone, since everyone is different. - // Replace hour with XX. - maybeSelectedElt().should(($elt) => { - const firstRow = $elt.find("tbody tr td"); - expect( - [...firstRow].map((x) => maskTimestampHours(x.innerText)).sort() - ).to.deep.equal( - [ - "", - "", // First column is the hidden selection column - "10,248", - "3", - "32.38", - "5", - "51,100", - "59 rue de l'Abbaye", - "7/16/96, 12:00 AM", - "7/4/96, 12:00 AM", - "8/1/96, 12:00 AM", - "France", - "Reims", - "VINET", - "Vins et alcools Chevalier", - ] - .map(maskTimestampHours) - .sort() - ); - }); - maybeSelectedElt().find('input[placeholder="Search"]').clear(); - - // Selection works - maybeSelectedElt() - .find("tbody tr") - .eq(2) - .find("td") - .eq(2) - .click() - .should("have.css", "background-color", "rgb(186, 224, 255)"); - } - - checkAndInteract(); - - // Inspect state - switchToDataTab(); - expandSection("variables-section"); - cy.get('[data-test-id="table.selectedRowKey"]').should( - "include.text", - "3" - ); - switchToSettingsTab(); - - cy.get("#interactive-canvas-switch").click(); - - // Check live mode. - cy.withinLiveMode(() => { - isWithinLiveFrame = true; - checkAndInteract(); - isWithinLiveFrame = false; - }); - - // Hide a field - cy.get("button:contains(order_id)").click(); - clickDataPlasmicProp("isHidden"); - closeSidebarModal(); - - // Configure a field - cy.get("button:contains(customer_id)").click(); - setDataPlasmicProp("title", "Customer"); - clickDataPlasmicProp("expr"); - // Expr has both currentValue and currentItem - // Also exercise syntax handling of custom code - enterCustomCodeInDataPicker(` - const xs = [0,1].map(x => currentValue.toLowerCase() + currentItem.order_id).join(' '); - xs - `); - closeSidebarModal(); - - // Configure formatting - cy.get("button:contains(order_date)").click(); - // For some reason, this is yielding > 1 - getDataPlasmicProp("dataType").should("have.length", 1); - chooseDataPlasmicProp("dataType", "datetime"); - clickDataPlasmicProp("hour12"); - closeSidebarModal(); - - // Add custom field - propAddItem("Fields"); - setDataPlasmicProp("title", "Orig customer ID"); - clickDataPlasmicProp("expr"); - enterCustomCodeInDataPicker("currentItem.customer_id"); - closeSidebarModal(); - - // Check new columns - maybeSelectedElt().then(($elt) => { - const headers = $elt.find("tbody tr:nth-child(1) td"); - cy.log(JSON.stringify([...headers].map((x) => x.innerText).sort())); - }); - getSelectedElt().should(($elt) => { - // Columns are all there - const headers = $elt.find("thead th"); - expect([...headers].map((x) => x.innerText).sort()).to.deep.equal([ - "Customer", - "Orig customer ID", - "employee_id", - "freight", - "order_date", - "required_date", - "ship_address", - "ship_city", - "ship_country", - "ship_name", - "ship_postal_code", - "ship_region", - "ship_via", - "shipped_date", - ]); - }); - getSelectedElt().should(($elt) => { - const firstRow = $elt.find("tbody tr:nth-child(1) td"); - expect( - [...firstRow].map((x) => maskTimestampHours(x.innerText)).sort() - ).to.deep.equal( - [ - "", - "", - "3", - "32.38", - "5", - "51,100", - "59 rue de l'Abbaye", - "7/16/96, 12:00 AM", - "7/4/96, 24:00", - "8/1/96, 12:00 AM", - "France", - "Reims", - "VINET", - "Vins et alcools Chevalier", - "vinet10248 vinet10248", - ] - .map(maskTimestampHours) - .sort() - ); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/hostless-sanity-io.spec.ts b/platform/wab/cypress/e2e/hostless-sanity-io.spec.ts deleted file mode 100644 index 3e782b8676..0000000000 --- a/platform/wab/cypress/e2e/hostless-sanity-io.spec.ts +++ /dev/null @@ -1,170 +0,0 @@ -describe("hostless-sanity-io", function () { - it("can put sanity fetcher with sanity field, fetch and show data", function () { - // Create intercept to stub API calls - cy.intercept(/\/production\?query=\*{_type}$/, { - fixture: "sanity-io-all.json", - }).as("getAll"); - cy.intercept(/screening/, { fixture: "sanity-io-screening.json" }).as( - "getScreening" - ); - cy.intercept(/movie/, { fixture: "sanity-io-movies.json" }).as("getMovies"); - - // Create intercepts for the images - cy.fixture("images/sanity-io/1.jpeg"); - cy.fixture("images/sanity-io/2.jpeg"); - cy.fixture("images/sanity-io/3.jpeg"); - cy.fixture("images/sanity-io/4.jpeg"); - cy.fixture("images/sanity-io/5.jpeg"); - cy.fixture("images/sanity-io/6.jpeg"); - cy.fixture("images/sanity-io/7.jpeg"); - cy.fixture("images/sanity-io/8.jpeg"); - cy.fixture("images/sanity-io/9.jpeg"); - cy.fixture("images/sanity-io/10.jpeg"); - cy.fixture("images/sanity-io/11.jpeg"); - cy.fixture("images/sanity-io/12.jpeg"); - cy.fixture("images/sanity-io/13.jpeg"); - cy.fixture("images/sanity-io/14.jpeg"); - cy.intercept( - "https://cdn.sanity.io/images/b2gfz67v/production/69ad5d60ff19c456954513e8c67e9563c780d5e1-780x1170.jpg?w=300", - { fixture: "images/sanity-io/1.jpeg" } - ); - cy.intercept( - "https://cdn.sanity.io/images/b2gfz67v/production/236a8e4d456db62a04f85c39abcfd74c50e0c37b-780x1170.jpg?w=300", - { fixture: "images/sanity-io/2.jpeg" } - ); - cy.intercept( - "https://cdn.sanity.io/images/b2gfz67v/production/e22a88d23751a84df81f03ef287ae85fc992fe12-780x1170.jpg?w=300", - { fixture: "images/sanity-io/3.jpeg" } - ); - cy.intercept( - "https://cdn.sanity.io/images/b2gfz67v/production/7aa06723bb01a7a79055b6d6f5be80329a0e5b58-780x1170.jpg?w=300", - { fixture: "images/sanity-io/4.jpeg" } - ); - cy.intercept( - "https://cdn.sanity.io/images/b2gfz67v/production/60aaeca6580e3bc248678e344fab5d4e5638cc8c-780x1170.jpg?w=300", - { fixture: "images/sanity-io/5.jpeg" } - ); - cy.intercept( - "https://cdn.sanity.io/images/b2gfz67v/production/222ce0eaef8662485762791f5c31b60ae627e83d-780x1170.jpg?w=300", - { fixture: "images/sanity-io/6.jpeg" } - ); - cy.intercept( - "https://cdn.sanity.io/images/b2gfz67v/production/c6683ff02881704e326ca8b198af122e18513570-780x1170.jpg?w=300", - { fixture: "images/sanity-io/7.jpeg" } - ); - cy.intercept( - "https://cdn.sanity.io/images/b2gfz67v/production/5b433475b541fc1f2903d9b281efdde7ac9c28a5-780x1170.jpg?w=300", - { fixture: "images/sanity-io/8.jpeg" } - ); - cy.intercept( - "https://cdn.sanity.io/images/b2gfz67v/production/fc958a52785af03fea2cf33032b24b72332a5539-780x1170.jpg?w=300", - { fixture: "images/sanity-io/9.jpeg" } - ); - cy.intercept( - "https://cdn.sanity.io/images/b2gfz67v/production/0a88401628a8205b658f2269a1718542d6a5ac44-780x1170.jpg?w=300", - { fixture: "images/sanity-io/10.jpeg" } - ); - cy.intercept( - "https://cdn.sanity.io/images/b2gfz67v/production/332ce1adc107e1cd5444369dd88c7fcf78aaa57c-780x1170.jpg?w=300", - { fixture: "images/sanity-io/11.jpeg" } - ); - cy.intercept( - "https://cdn.sanity.io/images/b2gfz67v/production/a1c52c102311a337b6795e207aaccf967c2b98cc-780x1170.jpg?w=300", - { fixture: "images/sanity-io/12.jpeg" } - ); - cy.intercept( - "https://cdn.sanity.io/images/b2gfz67v/production/2db1db44ba70003091c0a1dc4c4b5eeb78dde498-780x1170.jpg?w=300", - { fixture: "images/sanity-io/13.jpeg" } - ); - cy.intercept( - "https://cdn.sanity.io/images/b2gfz67v/production/094eaa00429d71f899271fbd223789c323587d7b-780x1170.jpg?w=300", - { fixture: "images/sanity-io/14.jpeg" } - ); - - // Create hostless plasmic project - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: { - name: "plasmic-sanity-io", - npmPkg: ["@plasmicpkgs/plasmic-sanity-io"], - }, - }) - .then(() => { - // Create a project to use it - cy.withinStudioIframe(() => { - // Test the components - cy.createNewFrame().then((framed) => { - cy.focusFrameRoot(framed); - - // Add the SanityFetcher component and verify the initial message - cy.insertFromAddDrawer("SanityFetcher"); - cy.getSelectedElt().should( - "contain.text", - "Please specify a valid GROQ query or select a Document type." - ); - cy.getSelectedElt().should("be.visible"); - cy.withinLiveMode(() => { - cy.contains( - "Please specify a valid GROQ query or select a Document type." - ).should("be.visible"); - }); - - // Select 'screening' in the Document type and check the message - cy.selectDataPlasmicProp("docType", "screening"); - cy.wait(500); - cy.getSelectedElt().should( - "contain.text", - "Please specify a valid path or select a field." - ); - cy.getSelectedElt().should("be.visible"); - cy.withinLiveMode(() => { - cy.contains( - "Please specify a valid path or select a field." - ).should("be.visible"); - }); - - // Unset document type - cy.removePropValue("Document type"); - - // Put a GROQ query - cy.clickDataPlasmicProp("groq"); - cy.justType(`*[_type == 'movie']`); - cy.justType(`{enter}`); - cy.wait(500); - - // Select 'title' in the field and ensure the data was rendered correctly - cy.getSelectedElt() - .children() - .first() - .children() - .click({ force: true }); - cy.selectDataPlasmicProp("field", "title"); - cy.getSelectedElt().should("contain.text", "WALL·E"); - cy.getSelectedElt().should("be.visible"); - cy.withinLiveMode(() => { - cy.contains("WALL·E").should("be.visible"); - }); - - // Change the path to be 'poster' - cy.clickDataPlasmicProp("path"); - cy.justType("{selectall}{backspace}poster"); - cy.justType(`{enter}`); - - // Ensure the 'poster' image has been rendered correctly - cy.focusFrameRoot(framed); - cy.getSelectedElt().find("img").should("have.attr", "src"); - cy.withinLiveMode(() => { - cy.get(".plasmic_default__div") - .find("img") - .should("have.attr", "src"); - }); - - // Ensure no errors happened - cy.checkNoErrors(); - }); - }); - }) - .then(() => { - cy.removeCurrentProject(); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/hostless-strapi.spec.ts b/platform/wab/cypress/e2e/hostless-strapi.spec.ts deleted file mode 100644 index 56f3715fe5..0000000000 --- a/platform/wab/cypress/e2e/hostless-strapi.spec.ts +++ /dev/null @@ -1,231 +0,0 @@ -import { VERT_CONTAINER_CAP } from "../../src/wab/shared/Labels"; -import { removeCurrentProject } from "../support/util"; - -describe("hostless-strapi", function () { - this.beforeEach(() => { - // Create intercept to stub API calls - cy.intercept(/restaurants/, { - fixture: "strapi-restaurants.json", - }); - cy.intercept(/restaurants-v5/, { - fixture: "strapi-v5-restaurants.json", - }); - cy.intercept(/undefined/, { - fixture: "strapi-error.json", - }); - - // Create intercepts for the images - cy.fixture("images/strapi/Cafe_Coffee_Day_logo.png"); - cy.fixture("images/strapi/Chili_s_Logo_svg.png"); - cy.fixture("images/strapi/Chipotle_Mexican_Grill_logo_svg.png"); - cy.fixture("images/strapi/Big_Smoke_Burger_logo_svg.png"); - cy.fixture("images/strapi/Burger_King_2020_svg.png"); - cy.fixture("images/strapi/Bonchon_Logo.png"); - cy.fixture("images/strapi/Buffalo_Wild_Wings_logo_vertical_svg.png"); - cy.intercept( - "https://res.cloudinary.com/tubone-plasmic/image/upload/v1650939343/Cafe_Coffee_Day_logo_338419f75a.png", - { fixture: "images/strapi/Cafe_Coffee_Day_logo.png" } - ); - cy.intercept( - "https://res.cloudinary.com/tubone-plasmic/image/upload/v1650939343/Chili_s_Logo_svg_9b74d95e58.png", - { fixture: "images/strapi/Chili_s_Logo_svg.png" } - ); - cy.intercept( - "https://res.cloudinary.com/tubone-plasmic/image/upload/v1650939343/Chipotle_Mexican_Grill_logo_svg_53d34599eb.png", - { fixture: "images/strapi/Chipotle_Mexican_Grill_logo_svg.png" } - ); - cy.intercept( - "https://res.cloudinary.com/tubone-plasmic/image/upload/v1650939374/Big_Smoke_Burger_logo_svg_e3ca76d953.png", - { fixture: "images/strapi/Big_Smoke_Burger_logo_svg.png" } - ); - cy.intercept( - "https://res.cloudinary.com/tubone-plasmic/image/upload/v1650939343/Burger_King_2020_svg_ac8ab9c5f1.png", - { fixture: "images/strapi/Burger_King_2020_svg.png" } - ); - cy.intercept( - "https://res.cloudinary.com/tubone-plasmic/image/upload/v1650939343/Bonchon_Logo_7f7f16bce2.png", - { fixture: "images/strapi/Bonchon_Logo.png" } - ); - cy.intercept( - "https://res.cloudinary.com/tubone-plasmic/image/upload/v1650939343/Buffalo_Wild_Wings_logo_vertical_svg_cc56dc61aa.png", - { fixture: "images/strapi/Buffalo_Wild_Wings_logo_vertical_svg.png" } - ); - }); - - afterEach(() => { - removeCurrentProject(); - }); - - describe("can put strapi fetcher with strapi field, fetch and show data", function () { - function runTest(version: 4 | 5) { - // Create hostless plasmic project - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: { - name: "plasmic-strapi", - npmPkg: ["@plasmicpkgs/plasmic-strapi"], - }, - }).then(() => { - cy.withinStudioIframe(() => { - // Test the components - cy.createNewFrame().then((framed) => { - cy.focusFrameRoot(framed); - - // Add the StrapiCollection component and verify the initial message - cy.insertFromAddDrawer("StrapiCollection"); - cy.getSelectedElt().should( - "contain.text", - "Please specify a valid collection." - ); - cy.getSelectedElt().should("be.visible"); - cy.withinLiveMode(() => { - cy.contains("Please specify a valid collection.").should( - "be.visible" - ); - }); - - // Put the collection name and check the message - cy.clickDataPlasmicProp("name"); - cy.justType(version === 5 ? "restaurants-v5" : "restaurants"); - cy.justType(`{enter}`); - cy.wait(500); - cy.getSelectedElt().should( - "contain.text", - "StrapiField must specify a field name" - ); - cy.getSelectedElt().should("be.visible"); - cy.withinLiveMode(() => { - cy.contains("StrapiField must specify a field name").should( - "be.visible" - ); - }); - - // Select 'name' in the field and ensure the data was rendered correctly - cy.getSelectedElt() - .children() - .first() - .children() - .click({ force: true }); - cy.selectDataPlasmicProp("path", "name"); - cy.getSelectedElt().should("contain.text", "Café Coffee Day"); - cy.getSelectedElt().should("be.visible"); - cy.withinLiveMode(() => { - cy.contains("Café Coffee Day").should("be.visible"); - }); - - // Change the field to be 'photo' and ensure the image has been rendered correcly - cy.selectDataPlasmicProp("path", "photo"); - cy.focusFrameRoot(framed); - cy.getSelectedElt().find("img").should("have.attr", "src"); - cy.withinLiveMode(() => { - cy.get(".plasmic_default__div") - .find("img") - .should("have.attr", "src"); - }); - - // Ensure no errors happened - cy.checkNoErrors(); - }); - }); - }); - } - - it("Strapi v4", function () { - runTest(4); - }); - it("Strapi v5", function () { - runTest(5); - }); - }); - - describe("can use context to data bind", function () { - function runTest(version: 4 | 5) { - // Create hostless plasmic project - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: { - name: "plasmic-strapi", - npmPkg: ["@plasmicpkgs/plasmic-strapi"], - }, - }).then(() => { - cy.withinStudioIframe(() => { - // Test the components - cy.createNewFrame().then((framed) => { - cy.focusFrameRoot(framed); - - // Add the StrapiCollection component and verify the initial message - cy.insertFromAddDrawer("StrapiCollection"); - - // Put the collection name and check the message - cy.clickDataPlasmicProp("name"); - cy.justType(version === 5 ? "restaurants-v5" : "restaurants"); - cy.justType(`{enter}`); - cy.wait(500); - cy.getSelectedElt().should( - "contain.text", - "StrapiField must specify a field name" - ); - - // Bind 'name' and 'photo' using context - cy.getSelectedElt() - .children() - .first() - .click({ force: true }) - .justType("{del}"); - cy.insertFromAddDrawer(VERT_CONTAINER_CAP); - cy.insertFromAddDrawer("Text").renameTreeNode("Product Name", { - programatically: true, - }); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.selectPathInDataPicker( - version === 5 - ? [ - // Strapi version 5 does not nest user data inside attributes field - "currentStrapiRestaurantsV5Item", - "name", - ] - : ["currentStrapiRestaurantsItem", "attributes", "name"] - ); - - cy.insertFromAddDrawer("Image"); - cy.get(`[data-test-id="image-picker"]`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.selectPathInDataPicker( - version === 5 - ? [ - // Strapi version 5 does not nest user data inside attributes field - "currentStrapiRestaurantsV5Item", - "photo", - "data", - "url", - ] - : [ - "currentStrapiRestaurantsItem", - "attributes", - "photo", - "data", - "attributes", - "url", - ] - ); - - cy.withinLiveMode(() => { - cy.contains("Café Coffee Day").should("be.visible"); - cy.get(".plasmic_default__div") - .find("img") - .should("have.attr", "src"); - }); - // Ensure no errors happened - cy.checkNoErrors(); - }); - }); - }); - } - - it("Strapi v4", function () { - runTest(4); - }); - it("Strapi v5", function () { - runTest(5); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/hostless-tiptap.spec.ts b/platform/wab/cypress/e2e/hostless-tiptap.spec.ts deleted file mode 100644 index 53a14e2989..0000000000 --- a/platform/wab/cypress/e2e/hostless-tiptap.spec.ts +++ /dev/null @@ -1,86 +0,0 @@ -function initialSetup() { - cy.insertFromAddDrawer("hostless-tiptap"); - cy.get(`[data-test-id="prop-editor-row-contentHtml"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode( - `'

istanbulhelloworld

Cappadocia fun @sherlock221b a = b easy google.com islandblah blahhappy

'` - ); - - cy.insertFromAddDrawer("Text"); - cy.addHtmlAttribute("id", "tiptap-state-text"); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode( - `JSON.stringify($state.tiptapRichTextEditor.content)` - ); -} - -describe("hostless-tiptap", () => { - beforeEach(() => { - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: [ - { - name: "tiptap", - npmPkg: ["@plasmicpkgs/tiptap"], - }, - ], - }); - }); - - it("has no extensions added by default", () => { - cy.withinStudioIframe(() => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - cy.createNewPageInOwnArena("Homepage").then((framed) => { - initialSetup(); - - cy.withinLiveMode(() => { - cy.get("#tiptap-state-text").should( - "have.text", - `{"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"istanbulhelloworld"}]},{"type":"paragraph","content":[{"type":"text","text":"Cappadocia fun @sherlock221b a = b easy google.com islandblah blahhappy"}]}]}` - ); - }); - }); - }); - }); - - it("works - bold, italic, underline, strike, code, link, mention", () => { - // Create a project to use it - cy.withinStudioIframe(() => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - cy.createNewPageInOwnArena("Homepage").then((framed) => { - initialSetup(); - cy.selectTreeNode(["Tiptap Rich Text Editor"]); - cy.get(`.SidebarSection__Body`) - .get('[data-test-id="custom-action-bold"]') - .click(); - cy.get(`.SidebarSection__Body`) - .get('[data-test-id="custom-action-italic"]') - .click(); - cy.get(`.SidebarSection__Body`) - .get('[data-test-id="custom-action-underline"]') - .click(); - cy.get(`.SidebarSection__Body`) - .get('[data-test-id="custom-action-strike"]') - .click(); - cy.get(`.SidebarSection__Body`) - .get('[data-test-id="custom-action-code"]') - .click(); - cy.get(`.SidebarSection__Body`) - .get('[data-test-id="custom-action-link"]') - .click(); - cy.get(`.SidebarSection__Body`) - .get('[data-test-id="custom-action-mention"]') - .click(); - - cy.withinLiveMode(() => { - cy.get("#tiptap-state-text").should( - "have.text", - `{"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","marks":[{"type":"bold"},{"type":"italic"}],"text":"istanbul"},{"type":"text","marks":[{"type":"bold"}],"text":"hello"},{"type":"text","text":"world"}]},{"type":"paragraph","content":[{"type":"text","marks":[{"type":"bold"},{"type":"italic"},{"type":"underline"},{"type":"strike"}],"text":"Cappadocia"},{"type":"text","text":" fun "},{"type":"mention","attrs":{"id":"sherlock221b","label":null}},{"type":"text","text":" "},{"type":"text","marks":[{"type":"code"}],"text":"a = b"},{"type":"text","text":" easy "},{"type":"text","marks":[{"type":"link","attrs":{"href":"http://google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":"ρi ρmjm82"}}],"text":"google.com"},{"type":"text","text":" islandblah blahhappy"}]}]}` - ); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/image-slots.spec.ts b/platform/wab/cypress/e2e/image-slots.spec.ts deleted file mode 100644 index 879a217956..0000000000 --- a/platform/wab/cypress/e2e/image-slots.spec.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { - checkNoErrors, - convertToSlot, - createNewComponent, - createNewFrame, - dragGalleryItemRelativeToElt, - focusFrameRoot, - getSelectedElt, - getSelectionTag, - justType, - removeCurrentProject, - setImageSource, - setupNewProject, - switchToTreeTab, - undoAndRedo, - waitAllEval, - withinLiveMode, -} from "../support/util"; - -describe("image-slots", function () { - beforeEach(() => { - setupNewProject({ - name: "image-slots", - }); - }); - - afterEach(() => { - removeCurrentProject(); - }); - - it("can create, override content, edit default content", function () { - cy.withinStudioIframe(() => { - createNewComponent("Widget").then((framed) => { - // Drop an img. - dragGalleryItemRelativeToElt("Image", framed.getFrame(), 70, 10); - - createNewFrame().then((framed2) => { - // Zoom out. - justType("{shift}1"); - - // Insert two Widgets. - dragGalleryItemRelativeToElt("Widget", framed2.getFrame(), 10, 10); - dragGalleryItemRelativeToElt("Widget", framed2.getFrame(), 10, 100); - - // Back to frame 1, convert to slot. - focusFrameRoot(framed); - framed.rootElt().children().last().click({ force: true }); - convertToSlot(); - - // Back to frame 2. - focusFrameRoot(framed2); - - // Edit 1st Widget's image by deleting it. - justType("{enter}{enter}{enter}{del}"); - - // Back to frame 2 root. - focusFrameRoot(framed2); - - function getSecondImageSlotContent() { - focusFrameRoot(framed2); - return framed2.rootElt().children().last().children(); - } - - // Edit 2nd Widget's slot. - getSecondImageSlotContent().click({ force: true }); - framed2.plotTextAtSelectedElt("out here"); - - // Reset 2nd Widget's slot. - justType("{shift}{enter}"); - getSelectionTag().rightclick({ force: true }); - cy.contains("Revert to").click({ force: true }); - - // Edit the default slot contents. - focusFrameRoot(framed); - justType("{enter}{enter}{enter}"); - const imgUrl = "https://picsum.photos/50/50"; - setImageSource(imgUrl); - - // Select 2nd Widget slot. - getSecondImageSlotContent().click({ force: true }); - justType("{shift}{enter}"); - - switchToTreeTab(); - withinLiveMode(() => { - cy.get("img").should("have.attr", "src", imgUrl); - }); - - const checkEndState = () => { - waitAllEval(); - - framed.rebind(); - framed2.rebind(); - - // Make sure that we are selecting the slot. This is due to - // a flakiness in the redo logic. If we ensure that the selection - // state is the same after undoing/redoing, we can stop doing - // this. - getSecondImageSlotContent().click({ force: true }); - justType("{shift}{enter}"); - - // Check that we're selecting the slot. - getSelectionTag().should("contain", `Slot: "children"`); - - // Expect final image. - getSelectedElt().should("have.attr", "src", imgUrl); - - // Check that the first Widget's slot remains empty. - framed2 - .rootElt() - .children() - .first() - .children() - .should("have.class", "__wab_placeholder"); - - checkNoErrors(); - }; - - checkEndState(); - undoAndRedo(); - checkEndState(); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/imported-token-overrides.spec.ts b/platform/wab/cypress/e2e/imported-token-overrides.spec.ts deleted file mode 100644 index ca62b751d5..0000000000 --- a/platform/wab/cypress/e2e/imported-token-overrides.spec.ts +++ /dev/null @@ -1,782 +0,0 @@ -import { DevFlagsType } from "../../src/wab/shared/devflags"; -import { Framed } from "../support/util"; - -describe("Imported token overrides", function () { - // Define test values as variables - const TEST_COLORS = { - PRIMARY: "#ff0000", - PRIMARY_DARK: "#aa0000", - PRIMARY_OVERRIDE_BASE: "#0000ff", - PRIMARY_OVERRIDE_VARIANT: "#0000aa", - SECONDARY: "#00ff00", - SECONDARY_OVERRIDE: "#00aa00", - SECONDARY_NEW: "#00aaaa", - ANTD: "#ff4d4f", - ANTD_OVERRIDE: "#0000ff", - }; - - const TEST_FONT_SIZES = { - B_DEFAULT: "16px", - LARGE: "16px", - LARGE_OVERRIDE_BASE: "24px", - LARGE_OVERRIDE_VARIANT: "32px", - }; - - const TEST_TEXTS = { - FROM_DEP_COMP: "From Dep Comp", - FROM_DEP_COMP_PARENT: "From Dep Comp Parent", - FROM_MAIN_PROJECT_TEXT_1: "Text 1 From Main Project", - FROM_MAIN_PROJECT_TEXT_2: "Text 2 From Main Project", - FROM_B_COMP: "From Comp B", - SLOT_FROM_B_COMP: "Slot from Comp B", - PRIMARY_TEXT: "Primary Text", - SECONDARY_TEXT: "Secondary Text", - }; - - const TOKEN_NAMES = { - PRIMARY: "primary", - LARGE: "large", - SECONDARY: "secondary", - ANTD: "System: Error", - }; - - let origDevFlags: DevFlagsType; - - beforeEach(() => { - cy.getDevFlags().then((devFlags) => { - origDevFlags = devFlags; - cy.upsertDevFlags({ - ...origDevFlags, - importedTokenOverrides: true, - }); - }); - }); - - afterEach(() => { - if (origDevFlags) { - cy.upsertDevFlags(origDevFlags); - } - }); - - it("Should work (A <- B, A <- C)", function () { - cy.setupNewProject({ name: "Dep Project" }) - .then((dep1ProjectId) => { - cy.withinStudioIframe(() => { - cy.createNewComponent("Dep Comp").then(() => { - cy.createComponentProp({ - propName: "Text", - propType: "text", - defaultValue: TEST_TEXTS.FROM_DEP_COMP, - }); - cy.createGlobalVariantGroup("Theme", "Dark"); - cy.createToken("Color", TOKEN_NAMES.PRIMARY, TEST_COLORS.PRIMARY); - cy.createToken( - "FontSize", - TOKEN_NAMES.LARGE, - TEST_FONT_SIZES.LARGE - ); - cy.updateToken( - "Color", - TOKEN_NAMES.PRIMARY, - TEST_COLORS.PRIMARY_DARK, - { - globalVariant: "Dark", - } - ); - cy.assertTokenIndicator( - TOKEN_NAMES.PRIMARY, - "local-varianted", - "Base", - "Dark" - ); - cy.assertTokenIndicator(TOKEN_NAMES.LARGE, "local", "Base", "Dark"); - cy.insertTextWithDynamic("$props.text"); - cy.chooseColor({ tokenName: TOKEN_NAMES.PRIMARY }); - cy.chooseFontSize(TOKEN_NAMES.LARGE); - }); - cy.createNewPage("Dep Page").then(() => { - cy.switchToTreeTab(); - cy.insertFromAddDrawer("Dep Comp"); - cy.switchToSettingsTab(); - cy.setDataPlasmicProp("Text", TEST_TEXTS.FROM_DEP_COMP_PARENT, { - reset: true, - }); - cy.selectTreeNode(["Dep Comp"]); - cy.extractComponentNamed("Dep Comp Parent"); - }); - cy.publishVersion("New tokens"); - }); - cy.setupNewProject({ name: "Dep Project 2" }) - .then((dep2ProjectId) => { - cy.withinStudioIframe(() => { - cy.createToken( - "Color", - TOKEN_NAMES.SECONDARY, - TEST_COLORS.SECONDARY - ); - cy.publishVersion("New tokens"); - }); - cy.setupNewProject({ name: "Main Project" }) - .then((mainProjectId) => { - // Helper function to assert text styling in both normal and live mode - const assertTextStylingInBothModes = ( - color: string, - fontSizes: string | Record, - frame: Framed - ) => { - assertTextStyling( - TEST_TEXTS.FROM_MAIN_PROJECT_TEXT_1, - color, - typeof fontSizes === "string" - ? fontSizes - : fontSizes[TEST_TEXTS.FROM_MAIN_PROJECT_TEXT_1], - frame - ); - assertTextStyling( - TEST_TEXTS.FROM_DEP_COMP, - color, - typeof fontSizes === "string" - ? fontSizes - : fontSizes[TEST_TEXTS.FROM_DEP_COMP], - frame - ); - assertTextStyling( - TEST_TEXTS.FROM_DEP_COMP_PARENT, - color, - typeof fontSizes === "string" - ? fontSizes - : fontSizes[TEST_TEXTS.FROM_DEP_COMP_PARENT], - frame - ); - cy.withinLiveMode(() => { - assertTextStyling( - TEST_TEXTS.FROM_MAIN_PROJECT_TEXT_1, - color, - typeof fontSizes === "string" - ? fontSizes - : fontSizes[TEST_TEXTS.FROM_MAIN_PROJECT_TEXT_1] - ); - assertTextStyling( - TEST_TEXTS.FROM_DEP_COMP, - color, - typeof fontSizes === "string" - ? fontSizes - : fontSizes[TEST_TEXTS.FROM_DEP_COMP] - ); - assertTextStyling( - TEST_TEXTS.FROM_DEP_COMP_PARENT, - color, - typeof fontSizes === "string" - ? fontSizes - : fontSizes[TEST_TEXTS.FROM_DEP_COMP_PARENT] - ); - }); - }; - - const assertSecondaryTextStyling = ( - color: string, - frame: Framed - ) => { - frame - .base() - .contains(TEST_TEXTS.FROM_MAIN_PROJECT_TEXT_2) - .should("have.css", "color", hexToRgbString(color)); - }; - - cy.withinStudioIframe(() => { - cy.importProject(dep1ProjectId); - cy.importProject(dep2ProjectId); - cy.wait(500); - cy.createNewPage("New Page").then((frame) => { - cy.createGlobalVariantGroup("Platform", "Website"); - cy.resetVariants(); - cy.insertFromAddDrawer("Dep Comp Parent"); - cy.insertFromAddDrawer("Dep Comp"); - cy.insertFromAddDrawer("Text"); - cy.getSelectedElt().dblclick({ force: true }); - frame.enterIntoTplTextBlock( - TEST_TEXTS.FROM_MAIN_PROJECT_TEXT_1 - ); - cy.chooseColor({ tokenName: TOKEN_NAMES.PRIMARY }); - cy.chooseFontSize(TOKEN_NAMES.LARGE); - - cy.insertFromAddDrawer("Text"); - cy.getSelectedElt().dblclick({ force: true }); - frame.enterIntoTplTextBlock( - TEST_TEXTS.FROM_MAIN_PROJECT_TEXT_2 - ); - cy.chooseColor({ tokenName: TOKEN_NAMES.SECONDARY }); - - assertTextStylingInBothModes( - TEST_COLORS.PRIMARY, - TEST_FONT_SIZES.LARGE, - frame - ); - - cy.switchToStyleTokensTab(); - cy.expandAllTokensPanel(); - - cy.assertTokenIndicator( - TOKEN_NAMES.PRIMARY, - "override-none", - "Base", - "Website" - ); - cy.assertTokenIndicator( - TOKEN_NAMES.LARGE, - "override-none", - "Base", - "Website" - ); - // Test that we can override a base token - cy.updateToken( - "Color", - TOKEN_NAMES.PRIMARY, - TEST_COLORS.PRIMARY_OVERRIDE_BASE, - { - override: true, - } - ); - cy.updateToken( - "Color", - TOKEN_NAMES.SECONDARY, - TEST_COLORS.SECONDARY_OVERRIDE, - { - override: true, - } - ); - - cy.assertTokenIndicator( - TOKEN_NAMES.PRIMARY, - "override-base", - "Base", - "Website" - ); - - cy.updateToken( - "Color", - TOKEN_NAMES.PRIMARY, - TEST_COLORS.PRIMARY_OVERRIDE_VARIANT, - { - globalVariant: "Website", - override: true, - } - ); - cy.assertTokenIndicator( - TOKEN_NAMES.PRIMARY, - "override-both", - "Base", - "Website" - ); - - cy.justLog( - "Test that we can override a varianted value without overriding the base" - ); - - cy.updateToken( - "FontSize", - TOKEN_NAMES.LARGE, - TEST_FONT_SIZES.LARGE_OVERRIDE_VARIANT, - { - globalVariant: "Website", - override: true, - } - ); - cy.assertTokenIndicator( - TOKEN_NAMES.LARGE, - "override-varianted", - "Base", - "Website" - ); - - cy.updateToken( - "FontSize", - TOKEN_NAMES.LARGE, - TEST_FONT_SIZES.LARGE_OVERRIDE_BASE, - { override: true } - ); - - cy.assertTokenIndicator( - TOKEN_NAMES.LARGE, - "override-both", - "Base", - "Website" - ); - - assertTextStylingInBothModes( - TEST_COLORS.PRIMARY_OVERRIDE_BASE, - TEST_FONT_SIZES.LARGE_OVERRIDE_BASE, - frame - ); - - cy.selectVariant("Theme", "Dark", true); - assertTextStylingInBothModes( - TEST_COLORS.PRIMARY_DARK, - TEST_FONT_SIZES.LARGE_OVERRIDE_BASE, - frame - ); - - cy.selectVariant("Platform", "Website", true); - assertTextStylingInBothModes( - TEST_COLORS.PRIMARY_OVERRIDE_VARIANT, - TEST_FONT_SIZES.LARGE_OVERRIDE_VARIANT, - frame - ); - cy.resetVariants(); - - cy.removeTokenOverride(TOKEN_NAMES.PRIMARY); - cy.assertTokenIndicator( - TOKEN_NAMES.PRIMARY, - "override-varianted", - "Base", - "Website" - ); - assertTextStylingInBothModes( - TEST_COLORS.PRIMARY, - TEST_FONT_SIZES.LARGE_OVERRIDE_BASE, - frame - ); - cy.selectVariant("Platform", "Website", true); - assertTextStylingInBothModes( - TEST_COLORS.PRIMARY_OVERRIDE_VARIANT, - TEST_FONT_SIZES.LARGE_OVERRIDE_VARIANT, - frame - ); - cy.removeTokenOverride(TOKEN_NAMES.PRIMARY, { - globalVariant: "Website", - }); - - function checkEndState() { - cy.assertTokenIndicator( - TOKEN_NAMES.LARGE, - "override-both", - "Base", - "Website" - ); - cy.assertTokenIndicator( - TOKEN_NAMES.PRIMARY, - "override-none", - "Base", - "Website" - ); - cy.assertTokenIndicator( - TOKEN_NAMES.SECONDARY, - "override-base", - "Base", - "Website" - ); - assertTextStylingInBothModes( - TEST_COLORS.PRIMARY, - TEST_FONT_SIZES.LARGE_OVERRIDE_VARIANT, - frame - ); - assertSecondaryTextStyling( - TEST_COLORS.SECONDARY_OVERRIDE, - frame - ); - } - checkEndState(); - cy.undoAndRedo(); - // After undo/redo, the frame gets deleted and recreated, so we need to rebind - frame.rebind(); - checkEndState(); - }); - }); - cy.openProject({ projectId: dep1ProjectId }); - cy.withinStudioIframe(() => { - cy.deleteToken(TOKEN_NAMES.LARGE); - cy.wait(1000); - cy.publishVersion("Delete large token"); - }); - cy.openProject({ projectId: dep2ProjectId }); - cy.withinStudioIframe(() => { - cy.updateToken( - "Color", - TOKEN_NAMES.SECONDARY, - TEST_COLORS.SECONDARY_NEW - ); - cy.wait(1500); - cy.publishVersion("Update secondary token"); - }); - cy.openProject({ projectId: mainProjectId }); - cy.withinStudioIframe(() => { - cy.switchArena("New Page").then((frame) => { - cy.switchToImportsTab(); - cy.updateAllImports(); - assertTextStylingInBothModes( - TEST_COLORS.PRIMARY, - { - [TEST_TEXTS.FROM_MAIN_PROJECT_TEXT_1]: - TEST_FONT_SIZES.LARGE_OVERRIDE_VARIANT, - [TEST_TEXTS.FROM_DEP_COMP]: TEST_FONT_SIZES.LARGE, - [TEST_TEXTS.FROM_DEP_COMP_PARENT]: - TEST_FONT_SIZES.LARGE, - }, - frame - ); - assertSecondaryTextStyling( - TEST_COLORS.SECONDARY_OVERRIDE, - frame - ); - cy.assertTokenIndicator( - TOKEN_NAMES.LARGE, - "local-varianted", // this changed to local, because the token was deleted in the dependency project - "Base", - "Website" - ); - cy.assertTokenIndicator( - TOKEN_NAMES.PRIMARY, - "override-none", - "Base", - "Website" - ); - cy.assertTokenIndicator( - TOKEN_NAMES.SECONDARY, - "override-base", - "Base", - "Website" - ); - cy.removeAllDependencies(); - }); - }); - }) - .then(() => { - cy.removeCurrentProject(); - }); - }) - .then(() => { - cy.removeCurrentProject(); - }); - }) - .then(() => { - cy.removeCurrentProject(); - }); - }); - - it("Should work when a direct dep is also an indirect dep (A <- B, A <- C, B <- C)", function () { - cy.setupNewProject({ name: "C Dep" }) - .then((cDepProjectId) => { - cy.withinStudioIframe(() => { - cy.createToken("Color", TOKEN_NAMES.SECONDARY, TEST_COLORS.SECONDARY); - cy.publishVersion("New tokens"); - }); - cy.setupNewProject({ name: "B Dep" }) - .then((bDepProjectId) => { - cy.withinStudioIframe(() => { - cy.importProject(cDepProjectId); - cy.assertTokenIndicator( - TOKEN_NAMES.SECONDARY, - "override-none", - "Base" - ); - cy.updateToken( - "Color", - TOKEN_NAMES.SECONDARY, - TEST_COLORS.SECONDARY_OVERRIDE, - { override: true } - ); - cy.assertTokenIndicator( - TOKEN_NAMES.SECONDARY, - "override-base", - "Base" - ); - cy.createNewComponent("Comp B").then((frame) => { - cy.insertFromAddDrawer("Text"); - cy.getSelectedElt().dblclick({ force: true }); - frame.enterIntoTplTextBlock(TEST_TEXTS.FROM_B_COMP); - cy.chooseColor({ tokenName: TOKEN_NAMES.SECONDARY }); - cy.insertFromAddDrawer("Text"); - cy.getSelectedElt().dblclick({ force: true }); - frame.enterIntoTplTextBlock(TEST_TEXTS.SLOT_FROM_B_COMP); - cy.chooseColor({ tokenName: TOKEN_NAMES.SECONDARY }); - cy.convertToSlot(); - cy.publishVersion("New components using imported tokens"); - }); - }); - cy.setupNewProject({ name: "A Project" }) - .then(() => { - // Helper function to assert text styling in both normal and live mode - const assertTextStylingInBothModes = ( - color: string, - frame: Framed - ) => { - assertTextStyling( - TEST_TEXTS.FROM_B_COMP, - color, - TEST_FONT_SIZES.B_DEFAULT, - frame - ); - assertTextStyling( - TEST_TEXTS.SLOT_FROM_B_COMP, - color, - TEST_FONT_SIZES.B_DEFAULT, - frame - ); - cy.withinLiveMode(() => { - assertTextStyling( - TEST_TEXTS.FROM_B_COMP, - color, - TEST_FONT_SIZES.B_DEFAULT - ); - assertTextStyling( - TEST_TEXTS.SLOT_FROM_B_COMP, - color, - TEST_FONT_SIZES.B_DEFAULT - ); - }); - }; - cy.withinStudioIframe(() => { - cy.importProject(bDepProjectId); - cy.importProject(cDepProjectId); - cy.createNewPage("A Page").then((frame) => { - cy.createGlobalVariantGroup("Platform", "Website"); - cy.insertFromAddDrawer("Comp B"); - assertTextStylingInBothModes(TEST_COLORS.SECONDARY, frame); - cy.assertTokenIndicator( - TOKEN_NAMES.SECONDARY, - "override-none", - "Base", - "Website" - ); - cy.updateToken( - "Color", - TOKEN_NAMES.SECONDARY, - TEST_COLORS.SECONDARY_NEW, - { override: true } - ); - assertTextStylingInBothModes( - TEST_COLORS.SECONDARY_NEW, - frame - ); - cy.assertTokenIndicator( - TOKEN_NAMES.SECONDARY, - "override-base", - "Base", - "Website" - ); - }); - }); - }) - .then(() => { - cy.removeCurrentProject(); - }); - }) - .then(() => { - cy.removeCurrentProject(); - }); - }) - .then(() => { - cy.removeCurrentProject(); - }); - }); - - it("Should work (A <- B <- C) - only root project (A) overrides are used", function () { - // Helper function to assert text styling - const assertTextStylingInBothModes = ( - primaryColor: string, - secondaryColor: string, - frame: Framed - ) => { - // Assert primary text color - assertTextStyling( - TEST_TEXTS.PRIMARY_TEXT, - primaryColor, - undefined, - frame - ); - // Assert secondary text color - assertTextStyling( - TEST_TEXTS.SECONDARY_TEXT, - secondaryColor, - undefined, - frame - ); - - cy.withinLiveMode(() => { - assertTextStyling(TEST_TEXTS.PRIMARY_TEXT, primaryColor, undefined); - assertTextStyling(TEST_TEXTS.SECONDARY_TEXT, secondaryColor, undefined); - }); - }; - - cy.setupNewProject({ name: "C Dep" }) - .then((cDepProjectId) => { - cy.withinStudioIframe(() => { - // Create C project with secondary token - cy.createToken("Color", TOKEN_NAMES.SECONDARY, TEST_COLORS.SECONDARY); - cy.publishVersion("New tokens"); - }); - cy.setupNewProject({ name: "B Dep" }) - .then((bDepProjectId) => { - cy.withinStudioIframe(() => { - // Create B project with primary token and import C - cy.createToken("Color", TOKEN_NAMES.PRIMARY, TEST_COLORS.PRIMARY); - cy.importProject(cDepProjectId); - - // Override secondary token from C - cy.updateToken( - "Color", - TOKEN_NAMES.SECONDARY, - TEST_COLORS.SECONDARY_OVERRIDE, - { override: true } - ); - - // Create component with both primary and secondary tokens - cy.createNewComponent("Dep Comp").then((frame) => { - // Text with primary token - cy.insertFromAddDrawer("Text"); - cy.getSelectedElt().dblclick({ force: true }); - frame.enterIntoTplTextBlock("Primary Text"); - cy.chooseColor({ tokenName: TOKEN_NAMES.PRIMARY }); - - // Text with secondary token - cy.insertFromAddDrawer("Text"); - cy.getSelectedElt().dblclick({ force: true }); - frame.enterIntoTplTextBlock("Secondary Text"); - cy.chooseColor({ tokenName: TOKEN_NAMES.SECONDARY }); - // Assert that secondary uses override from B - assertTextStylingInBothModes( - TEST_COLORS.PRIMARY, - TEST_COLORS.SECONDARY_OVERRIDE, - frame - ); - }); - cy.publishVersion("New components with tokens"); - }); - cy.setupNewProject({ name: "A Project" }) - .then(() => { - cy.withinStudioIframe(() => { - cy.importProject(bDepProjectId); - - cy.createNewPage("A Page").then((frame) => { - cy.insertFromAddDrawer("Dep Comp"); - - assertTextStylingInBothModes( - TEST_COLORS.PRIMARY, - TEST_COLORS.SECONDARY, - frame - ); - - // Override primary token from B - cy.updateToken( - "Color", - TOKEN_NAMES.PRIMARY, - TEST_COLORS.PRIMARY_OVERRIDE_BASE, - { override: true } - ); - // Assert that primary text uses A's override, secondary uses original from C - assertTextStylingInBothModes( - TEST_COLORS.PRIMARY_OVERRIDE_BASE, // A's override for primary - TEST_COLORS.SECONDARY, // Original from C (not B's override) - frame - ); - }); - }); - }) - .then(() => { - cy.removeCurrentProject(); - }); - }) - .then(() => { - cy.removeCurrentProject(); - }); - }) - .then(() => { - cy.removeCurrentProject(); - }); - }); - - it("Should override registered imported tokens", function () { - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: [ - { - name: "antd5", - npmPkg: ["@plasmicpkgs/antd5"], - }, - ], - }).then((projectId) => { - cy.withinStudioIframe(() => { - cy.publishVersion("New tokens"); - }); - - cy.setupNewProject({ name: "Main Project" }) - .then(() => { - const assertTextStylingInBothModes = ( - color: string, - frame: Framed - ) => { - assertTextStyling( - TEST_TEXTS.FROM_MAIN_PROJECT_TEXT_1, - color, - undefined, - frame - ); - cy.withinLiveMode(() => { - assertTextStyling( - TEST_TEXTS.FROM_MAIN_PROJECT_TEXT_1, - color, - undefined, - frame - ); - }); - }; - cy.withinStudioIframe(() => { - cy.importProject(projectId); - cy.createNewPage("Main Page").then((frame) => { - cy.insertFromAddDrawer("Text"); - cy.getSelectedElt().dblclick({ force: true }); - frame.enterIntoTplTextBlock(TEST_TEXTS.FROM_MAIN_PROJECT_TEXT_1); - cy.chooseColor({ tokenName: TOKEN_NAMES.ANTD }); - assertTextStylingInBothModes(TEST_COLORS.ANTD, frame); - cy.updateToken( - "Color", - TOKEN_NAMES.ANTD, - TEST_COLORS.ANTD_OVERRIDE, - { override: true } - ); - assertTextStylingInBothModes(TEST_COLORS.ANTD_OVERRIDE, frame); - }); - }); - }) - .then(() => { - cy.removeCurrentProject(); - }); - }); - }); -}); - -function hexToRgbString(hex: string) { - // Remove "#" if present - hex = hex.replace(/^#/, ""); - - // Expand shorthand form (#03F → #0033FF) - if (hex.length === 3) { - hex = hex - .split("") - .map((c) => c + c) - .join(""); - } - - const num = parseInt(hex, 16); - const { r, g, b } = { - r: (num >> 16) & 255, - g: (num >> 8) & 255, - b: num & 255, - }; - return `rgb(${r}, ${g}, ${b})`; -} - -// Helper function to assert text styling -const assertTextStyling = ( - text: string, - color: string, - fontSize?: string, - canvasFrame?: Framed -) => { - // If canvas frame is not provided, we're in live mode - const element = (canvasFrame ? canvasFrame.base() : cy).contains(text); - element.should("have.css", "color", hexToRgbString(color)); - - if (fontSize) { - element.should("have.css", "font-size", fontSize); - } -}; diff --git a/platform/wab/cypress/e2e/interactions-boolean.spec.ts b/platform/wab/cypress/e2e/interactions-boolean.spec.ts deleted file mode 100644 index b11c49f185..0000000000 --- a/platform/wab/cypress/e2e/interactions-boolean.spec.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { - removeCurrentProject, - setupProjectFromTemplate, -} from "../support/util"; - -describe("state-management-boolean-interactions", function () { - beforeEach(() => { - setupProjectFromTemplate("state-management"); - }); - afterEach(() => { - removeCurrentProject(); - }); - - it("can create all types of boolean interactions", () => { - cy.withinStudioIframe(() => { - cy.switchArena("boolean interactions").then((framed) => { - framed.rootElt().contains("Set to true").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["booleanVar"], - operation: "newValue", - value: "true", - }, - }); - - framed.rootElt().contains("Set to false").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["booleanVar"], - operation: "newValue", - value: "false", - }, - }); - - framed.rootElt().contains("Toggle").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["booleanVar"], - operation: "toggle", - }, - }); - - framed.rootElt().contains("Clear variable").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["booleanVar"], - operation: "clearValue", - }, - }); - - cy.withinLiveMode(() => { - cy.get("#plasmic-app div").should("contain.text", "true"); - - cy.contains("Set to false").click(); - cy.get("#plasmic-app div").should("contain.text", "false"); - - cy.contains("Set to true").click(); - cy.get("#plasmic-app div").should("contain.text", "true"); - - cy.contains("Toggle").click(); - cy.get("#plasmic-app div").should("contain.text", "false"); - - cy.contains("Toggle").click(); - cy.get("#plasmic-app div").should("contain.text", "true"); - - cy.contains("Clear").click(); - cy.get("#plasmic-app div").should("contain.text", "undefined"); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/interactions-conditional-actions.spec.ts b/platform/wab/cypress/e2e/interactions-conditional-actions.spec.ts deleted file mode 100644 index 76aec9a593..0000000000 --- a/platform/wab/cypress/e2e/interactions-conditional-actions.spec.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { - removeCurrentProject, - setupProjectFromTemplate, -} from "../support/util"; - -describe("state-management-conditional-actions", function () { - beforeEach(() => { - setupProjectFromTemplate("state-management"); - }); - afterEach(() => { - removeCurrentProject(); - }); - - it("can create conditional actions", () => { - cy.withinStudioIframe(() => { - cy.switchArena("conditional actions").then((framed) => { - cy.focusFrameRoot(framed); - - framed.rootElt().contains("Run interaction").click({ force: true }); - cy.addInteraction("onClick", [ - { - actionName: "updateVariable", - args: { - variable: ["action1"], - operation: "increment", - }, - }, - { - actionName: "updateVariable", - args: { - variable: ["action2"], - operation: "increment", - }, - mode: "when", - conditionalExpr: "$state.action1 % 2", - }, - { - actionName: "updateVariable", - args: { - variable: ["action3"], - operation: "increment", - }, - mode: "never", - }, - ]); - - const expected = [0, 0, 0]; - cy.withinLiveMode(() => { - const checkIfCountersAreEqual = () => { - for (let i = 0; i < expected.length; i++) { - cy.get("#plasmic-app div").should( - "contain.text", - `action${i + 1}: ${expected[i]}` - ); - } - }; - const updateExpectedCounters = () => { - expected[0]++; - if (expected[0] % 2) { - expected[1]++; - } - }; - - for (let i = 0; i < 10; i++) { - cy.contains("Run interaction").click(); - updateExpectedCounters(); - checkIfCountersAreEqual(); - } - }); - }); - cy.checkNoErrors(); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/interactions-custom.spec.ts b/platform/wab/cypress/e2e/interactions-custom.spec.ts deleted file mode 100644 index dd1f597cf5..0000000000 --- a/platform/wab/cypress/e2e/interactions-custom.spec.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { - removeCurrentProject, - setupProjectFromTemplate, -} from "../support/util"; - -describe("state-management-custom-interactions", function () { - beforeEach(() => { - setupProjectFromTemplate("state-management"); - }); - afterEach(() => { - removeCurrentProject(); - }); - - it("can create page navigation and custom function interactions", () => { - cy.withinStudioIframe(() => { - cy.switchArena("page navigation interactions").then((framed) => { - framed.rootElt().contains("Go to page1").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "navigation", - args: { - destination: "/page1", - }, - }); - - framed.rootElt().contains("Go to page2").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "navigation", - args: {}, - dynamicArgs: { - destination: "`/page2/foo`", - }, - }); - - framed - .rootElt() - .contains("Go to page2 (dynamic value)") - .click({ force: true }); - cy.addInteraction("onClick", { - actionName: "navigation", - args: {}, - dynamicArgs: { - destination: "`/page2/${$state.count}`", - }, - }); - - cy.withinLiveMode(() => { - cy.contains("Go to page1").click(); - cy.get("#plasmic-app div").should("contain.text", "This is page 1"); - cy.contains("Go back").click(); - - cy.contains("Go to page2").click(); - cy.get("#plasmic-app div").should( - "contain.text", - "This is page 2: foo" - ); - cy.contains("Go back").click(); - - cy.contains("Increment").click(); - cy.contains("Go to page2 (dynamic value)").click(); - cy.get("#plasmic-app div").should( - "contain.text", - "This is page 2: 6" - ); - cy.contains("Go back").click(); - - cy.contains("Increment").click(); - cy.contains("Increment").click(); - cy.contains("Go to page2 (dynamic value)").click(); - cy.get("#plasmic-app div").should( - "contain.text", - "This is page 2: 7" - ); - cy.contains("Go back").click(); - }); - }); - cy.switchArena("custom function interactions").then((framed) => { - framed.rootElt().contains("custom increment").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "customFunction", - args: { - customFunction: `$state.count++;`, - }, - }); - - cy.withinLiveMode(() => { - cy.contains("custom increment").click(); - cy.get("#plasmic-app div").should("contain.text", "6"); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/interactions-event-handlers.spec.ts b/platform/wab/cypress/e2e/interactions-event-handlers.spec.ts deleted file mode 100644 index 9faafa8b87..0000000000 --- a/platform/wab/cypress/e2e/interactions-event-handlers.spec.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { - removeCurrentProject, - setupProjectFromTemplate, -} from "../support/util"; - -describe("interactions-event-handlers", function () { - beforeEach(() => { - setupProjectFromTemplate("state-management"); - }); - afterEach(() => { - removeCurrentProject(); - }); - - it("can create event handler interactions", () => { - cy.withinStudioIframe(() => { - cy.switchArena("invoke event handler interactions").then((framed) => { - cy.createNewEventHandler("onIncrement", [ - { name: "val", type: "num" }, - { name: "message", type: "text" }, - ]); - framed - .rootElt() - .contains("invoke event handler") - .click({ force: true }); - cy.addInteraction("onClick", { - actionName: "invokeEventHandler", - args: { - eventRef: `onIncrement`, - args: { - val: "$props.defaultCount+1", - message: "`Last number: ${$props.defaultCount}`", - }, - }, - }); - - cy.switchArena("use invoke event handler").then((framed2) => { - framed2 - .rootElt() - .contains("invoke event handler") - .click({ force: true }); - cy.addInteraction("onIncrement", [ - { - actionName: "updateVariable", - args: { - variable: ["count"], - operation: "newValue", - value: "val", - }, - }, - { - actionName: "updateVariable", - args: { - variable: ["lastMessage"], - operation: "newValue", - value: "message", - }, - }, - ]); - - cy.withinLiveMode(() => { - cy.get("#plasmic-app div").should("contain.text", "5"); - cy.get("#plasmic-app div").should("contain.text", "none"); - - cy.contains("invoke event handler").click(); - cy.get("#plasmic-app div").should("contain.text", "6"); - cy.get("#plasmic-app div").should("contain.text", "Last number: 5"); - - cy.contains("invoke event handler").click(); - cy.get("#plasmic-app div").should("contain.text", "7"); - cy.get("#plasmic-app div").should("contain.text", "Last number: 6"); - }); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/interactions-number.spec.ts b/platform/wab/cypress/e2e/interactions-number.spec.ts deleted file mode 100644 index cd4f7d368a..0000000000 --- a/platform/wab/cypress/e2e/interactions-number.spec.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { - removeCurrentProject, - setupProjectFromTemplate, -} from "../support/util"; - -describe("state-management-numbers-interactions", function () { - beforeEach(() => { - setupProjectFromTemplate("state-management"); - }); - afterEach(() => { - removeCurrentProject(); - }); - - it("can create all types of number interactions", () => { - cy.withinStudioIframe(() => { - cy.switchArena("number interactions").then((framed) => { - framed.rootElt().contains("Set to").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["numberVar"], - operation: "newValue", - value: "10", - }, - }); - - framed.rootElt().contains("Increment").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["numberVar"], - operation: "increment", - }, - }); - - framed.rootElt().contains("Decrement").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["numberVar"], - operation: "decrement", - }, - }); - - framed.rootElt().contains("Clear variable").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["numberVar"], - operation: "clearValue", - }, - }); - - cy.withinLiveMode(() => { - cy.get("#plasmic-app div").should("contain.text", "0"); - cy.get("#plasmic-app div").should( - "contain.text", - JSON.stringify({ numberVar: 0 }) - ); - - cy.contains("Set to").click(); - cy.get("#plasmic-app div").should("contain.text", "10"); - cy.get("#plasmic-app div").should( - "contain.text", - JSON.stringify({ numberVar: 10 }) - ); - - cy.contains("Increment").click(); - cy.get("#plasmic-app div").should("contain.text", "11"); - cy.get("#plasmic-app div").should( - "contain.text", - JSON.stringify({ numberVar: 11 }) - ); - - cy.contains("Decrement").click(); - cy.get("#plasmic-app div").should("contain.text", "10"); - cy.get("#plasmic-app div").should( - "contain.text", - JSON.stringify({ numberVar: 10 }) - ); - - cy.contains("Clear").click(); - cy.get("#plasmic-app div").should("contain.text", JSON.stringify({})); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/interactions-objects.spec.ts b/platform/wab/cypress/e2e/interactions-objects.spec.ts deleted file mode 100644 index ca2c043ad1..0000000000 --- a/platform/wab/cypress/e2e/interactions-objects.spec.ts +++ /dev/null @@ -1,148 +0,0 @@ -import { - removeCurrentProject, - setupProjectFromTemplate, -} from "../support/util"; - -describe("state-management-object-interactions", function () { - beforeEach(() => { - setupProjectFromTemplate("state-management"); - }); - afterEach(() => { - removeCurrentProject(); - }); - - it("can create all types of object and array interactions", () => { - cy.withinStudioIframe(() => { - cy.switchArena("object interactions").then((framed) => { - framed.rootElt().contains("Set to").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["objectVar"], - operation: "newValue", - value: `({a: 3, b: 4})`, - }, - }); - - framed.rootElt().contains("Clear variable").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["objectVar"], - operation: "clearValue", - }, - }); - - cy.withinLiveMode(() => { - cy.get("#plasmic-app div").should( - "contain.text", - JSON.stringify({ a: 1, b: 2 }) - ); - - cy.contains("Set to").click(); - cy.get("#plasmic-app div").should( - "contain.text", - JSON.stringify({ a: 3, b: 4 }) - ); - - cy.contains("Clear").click(); - cy.get("#plasmic-app div").should("contain.text", "undefined"); - }); - }); - cy.switchArena("array interactions").then((framed) => { - framed.rootElt().contains("Set to").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["arrayVar"], - operation: "newValue", - value: `[{text: "foo2"},{text: "bar2"}]`, - }, - }); - - framed.rootElt().contains("Remove foo").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["arrayVar"], - operation: "splice", - deleteCount: "1", - }, - dynamicArgs: { - startIndex: "currentIndex", - }, - }); - - framed.rootElt().contains("Remove below foo").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["arrayVar"], - operation: "splice", - }, - dynamicArgs: { - startIndex: "currentIndex", - deleteCount: "$state.arrayVar.length - currentIndex", - }, - }); - - framed.rootElt().contains("Push element").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["arrayVar"], - operation: "push", - value: `{text: "baz"}`, - }, - }); - - framed.rootElt().contains("Clear variable").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["arrayVar"], - operation: "clearValue", - }, - }); - - cy.withinLiveMode(() => { - cy.get("#plasmic-app div").should("contain.text", "length: 2"); - - ["foo", "bar"].forEach((text) => - cy.get("#plasmic-app div").should("contain.text", text) - ); - - cy.contains("Push element").click(); - cy.get("#plasmic-app div").should("contain.text", "length: 3"); - ["foo", "bar", "baz"].forEach((text) => - cy.get("#plasmic-app div").should("contain.text", text) - ); - - cy.contains("Remove below bar").click(); - cy.get("#plasmic-app div").should("contain.text", "length: 1"); - ["foo"].forEach((text) => - cy.get("#plasmic-app div").should("contain.text", text) - ); - - cy.contains("Push element").click(); - cy.get("#plasmic-app div").should("contain.text", "length: 2"); - ["foo", "baz"].forEach((text) => - cy.get("#plasmic-app div").should("contain.text", text) - ); - - cy.contains("Remove foo").click(); - cy.get("#plasmic-app div").should("contain.text", "length: 1"); - ["baz"].forEach((text) => - cy.get("#plasmic-app div").should("contain.text", text) - ); - - cy.contains("Set to").click(); - cy.get("#plasmic-app div").should("contain.text", "length: 2"); - ["foo2", "bar2"].forEach((text) => - cy.get("#plasmic-app div").should("contain.text", text) - ); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/interactions-text.spec.ts b/platform/wab/cypress/e2e/interactions-text.spec.ts deleted file mode 100644 index 1e431fd16c..0000000000 --- a/platform/wab/cypress/e2e/interactions-text.spec.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { - removeCurrentProject, - setupProjectFromTemplate, -} from "../support/util"; - -describe("state-management-text-interactions", function () { - beforeEach(() => { - setupProjectFromTemplate("state-management"); - }); - afterEach(() => { - removeCurrentProject(); - }); - - it("can create all types of text interactions", () => { - cy.withinStudioIframe(() => { - cy.switchArena("text interactions").then((framed) => { - framed.rootElt().contains("Set to").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["textVar"], - operation: "newValue", - value: `"goodbye"`, - }, - }); - - framed.rootElt().contains("Clear variable").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["textVar"], - operation: "clearValue", - }, - }); - - cy.withinLiveMode(() => { - cy.get("#plasmic-app div").should("contain.text", "hello"); - - cy.contains("Set to").click(); - cy.get("#plasmic-app div").should("contain.text", "goodbye"); - - cy.contains("Clear").click(); - cy.get("#plasmic-app div").should("contain.text", "undefined"); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/interactions-variants.spec.ts b/platform/wab/cypress/e2e/interactions-variants.spec.ts deleted file mode 100644 index b9030abcf8..0000000000 --- a/platform/wab/cypress/e2e/interactions-variants.spec.ts +++ /dev/null @@ -1,243 +0,0 @@ -import Random from "prando"; -import { - removeCurrentProject, - setupProjectFromTemplate, -} from "../support/util"; - -describe("interactions-variants", function () { - beforeEach(() => { - setupProjectFromTemplate("state-management"); - }); - afterEach(() => { - removeCurrentProject(); - }); - - it("can create all types of toggle and single variant interactions", () => { - cy.withinStudioIframe(() => { - cy.switchArena("toggle variant interactions").then((framed) => { - framed.rootElt().contains("toggle").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariant", - args: { - vgroup: "advanced", - operation: "toggleVariant", - }, - }); - - framed.rootElt().contains("activate variant").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariant", - args: { - vgroup: "advanced", - operation: "activateVariant", - }, - }); - - framed.rootElt().contains("deactivate variant").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariant", - args: { - vgroup: "advanced", - operation: "deactivateVariant", - }, - }); - cy.withinLiveMode(() => { - cy.get("#plasmic-app div").should("contain.text", "no variant"); - - cy.contains("activate").click(); - cy.get("#plasmic-app div").should("contain.text", "toggle variant"); - - cy.contains("deactivate").click(); - cy.get("#plasmic-app div").should("contain.text", "no variant"); - - cy.contains("deactivate").click(); - cy.get("#plasmic-app div").should("contain.text", "no variant"); - - cy.get("button").contains("toggle").click(); - cy.get("#plasmic-app div").should("contain.text", "toggle variant"); - - cy.contains("activate").click(); - cy.get("#plasmic-app div").should("contain.text", "toggle variant"); - - cy.get("button").contains("toggle").click(); - cy.get("#plasmic-app div").should("contain.text", "no variant"); - }); - }); - cy.switchArena("single variant interactions").then((framed) => { - framed.rootElt().contains("Set to red").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariant", - args: { - vgroup: "color", - operation: "newValue", - value: "red", - }, - }); - - framed.rootElt().contains("Set to green").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariant", - args: { - vgroup: "color", - operation: "newValue", - value: "green", - }, - }); - - framed.rootElt().contains("Set to blue").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariant", - args: { - vgroup: "color", - operation: "newValue", - value: "blue", - }, - }); - - framed.rootElt().contains("clear variant").click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariant", - args: { - vgroup: "color", - operation: "clearValue", - }, - }); - - cy.withinLiveMode(() => { - cy.get("#plasmic-app div").should("contain.text", "none"); - - cy.contains("Set to red").click(); - cy.get("#plasmic-app div").should("contain.text", "red variant"); - - cy.contains("Set to green").click(); - cy.get("#plasmic-app div").should("contain.text", "green variant"); - - cy.contains("Set to blue").click(); - cy.get("#plasmic-app div").should("contain.text", "blue variant"); - - cy.contains("clear variant").click(); - cy.get("#plasmic-app div").should("contain.text", "none"); - }); - }); - }); - }); - it("can create all types of multi variant interactions", () => { - cy.withinStudioIframe(() => { - cy.switchArena("multi variant interactions").then((framed) => { - ["newValue", "multiToggle", "multiActivate", "multiDeactivate"].forEach( - (op) => { - [["foo"], ["bar"], ["foo", "bar"]].forEach((vgroup) => { - framed - .rootElt() - .find(`[data-test-id="${op}"]`) - .contains(JSON.stringify(vgroup)) - .click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariant", - isMultiVariant: true, - args: { - vgroup: "multiVariant", - operation: `${op}`, - value: vgroup, - }, - }); - }); - } - ); - framed - .rootElt() - .find(`[data-test-id="clearValue"]`) - .contains("Clear variant") - .click({ force: true }); - cy.addInteraction("onClick", { - actionName: "updateVariant", - isMultiVariant: true, - args: { - vgroup: "multiVariant", - operation: `clearValue`, - }, - }); - - const variantOptions = ["foo", "bar"]; - let activatedVariants: string[] = []; - const newVariants = (variants: string[]) => variants; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const clearVariants = (variants: string[]) => []; - const toggleVariants = (variants: string[]) => - variantOptions.filter( - (v) => - (variants.includes(v) && !activatedVariants.includes(v)) || - (!variants.includes(v) && activatedVariants.includes(v)) - ); - const activateVariants = (variants: string[]) => - variantOptions.filter( - (v) => activatedVariants.includes(v) || variants.includes(v) - ); - const deactivateVariants = (variants: string[]) => - variantOptions.filter( - (v) => activatedVariants.includes(v) && !variants.includes(v) - ); - - const rng = new Random(42); - cy.withinLiveMode(() => { - cy.get("#plasmic-app div").should("contain.text", "no variant"); - cy.get("#plasmic-app div").should("contain.text", JSON.stringify([])); - - const operations = [ - newVariants, - clearVariants, - toggleVariants, - activateVariants, - deactivateVariants, - ]; - const operationsName = [ - "newValue", - "clearValue", - "multiToggle", - "multiActivate", - "multiDeactivate", - ]; - const variantCombinations = [["foo"], ["bar"], ["foo", "bar"]]; - - for (let i = 0; i < 50; i++) { - const operationId = Math.floor(rng.next() * operations.length); - const combinationId = Math.floor( - rng.next() * variantCombinations.length - ); - if (operationId === 1) { - cy.get( - `#plasmic-app div [data-test-id="${operationsName[operationId]}"]` - ) - .contains("Clear variant") - .click(); - } else { - cy.get( - `#plasmic-app div [data-test-id="${operationsName[operationId]}"]` - ) - .contains(JSON.stringify(variantCombinations[combinationId])) - .click(); - } - - activatedVariants = operations[operationId]!( - variantCombinations[combinationId] - ); - if (activatedVariants.length === 0) { - cy.get("#plasmic-app div").should("contain.text", "no variant"); - } else { - for (const v of activatedVariants) { - cy.get("#plasmic-app div").should( - "contain.text", - `${v} variant` - ); - } - } - cy.get("#plasmic-app div").should( - "contain.text", - JSON.stringify(activatedVariants) - ); - } - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/left-panel.spec.ts b/platform/wab/cypress/e2e/left-panel.spec.ts deleted file mode 100644 index cb58e4eb10..0000000000 --- a/platform/wab/cypress/e2e/left-panel.spec.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { VERT_CONTAINER_CAP } from "../../src/wab/shared/Labels"; -import { removeCurrentProject, setupNewProject } from "../support/util"; - -describe("left-panel", function () { - beforeEach(() => { - setupNewProject({ - name: "left-panel", - }); - }); - - afterEach(() => { - removeCurrentProject(); - }); - - it("shows a blue indicator and popover to the left of an element if any non-default property", function () { - cy.withinStudioIframe(() => { - cy.createNewFrame().focusCreatedFrameRoot().insertFromAddDrawer("Text"); - cy.getSelectedTreeNode().within(() => { - cy.get(`[data-test-class="left-panel-indicator"] > div`).trigger( - "mouseover" - ); - }); - cy.get(`[data-test-class="indicator-clear"]`).each(($el) => - cy.wrap($el).click({ force: true }) - ); - - cy.getSelectedTreeNode().within(() => { - cy.get(`[data-test-class="left-panel-indicator"] > div`).should( - "exist" - ); - }); - }); - }); - - it("should allow copy and paste from outline", () => { - cy.withinStudioIframe(() => { - cy.createNewFrame().then((framed) => { - cy.focusFrameRoot(framed); - cy.insertFromAddDrawer(VERT_CONTAINER_CAP); - - const dataTransfer = new DataTransfer(); - cy.getSelectedTreeNode().trigger("copy", { - clipboardData: dataTransfer, - }); - cy.wait(500); - - const PASTES_COUNT = 20; - - // Paste multiple times, to be sure that the scroller will appear - for (let i = 0; i < PASTES_COUNT; i++) { - cy.getSelectedTreeNode().trigger("paste", { - clipboardData: dataTransfer, - }); - cy.wait(200); - } - - // Click again to emulate the make the scroller receive the focus - cy.getSelectedTreeNode().realClick(); - cy.wait(500); - - const dataTransfer2 = new DataTransfer(); - cy.getSelectedTreeNode().trigger("copy", { - clipboardData: dataTransfer2, - }); - cy.wait(200); - - cy.getSelectedTreeNode().trigger("paste", { - clipboardData: dataTransfer2, - }); - - cy.wait(200); - - cy.curWindow().then((win) => { - // Checking directly in the model, because the dom will not include elements that aren't visible - const dbg = (win as any).dbg; - const { studioCtx } = dbg; - const viewCtx = studioCtx.focusedViewCtx(); - const node = viewCtx.focusedTpl(); - // original + multiple pastes + 1 paste - expect(node.parent.children.length).to.equal(1 + PASTES_COUNT + 1); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/plasmic-basic-components/timer.spec.ts b/platform/wab/cypress/e2e/plasmic-basic-components/timer.spec.ts deleted file mode 100644 index 2479ce9fd1..0000000000 --- a/platform/wab/cypress/e2e/plasmic-basic-components/timer.spec.ts +++ /dev/null @@ -1,181 +0,0 @@ -describe.skip("hostless-timer", () => { - beforeEach(() => { - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: [ - { - name: "plasmic-basic-components", - npmPkg: ["@plasmicpkgs/plasmic-basic-components"], - }, - ], - }); - }); - - function assertState(value: string) { - cy.switchToDataTab(); - cy.get( - `[data-test-id="variables-section"] [data-test-id="count"] a` - ).should("have.text", value); - cy.switchToSettingsTab(); - } - - it("works", () => { - // Create a project to use it - cy.withinStudioIframe(() => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - cy.createNewPageInOwnArena("Homepage").then((framed) => { - cy.addState({ - name: "isRunning", - variableType: "boolean", - accessType: "writable", - isInitValDynamicValue: true, - initialValue: "false", - }).wait(200); - cy.addState({ - name: "count", - variableType: "number", - accessType: "writable", - initialValue: "0", - }).wait(200); - cy.addState({ - name: "interval", - variableType: "number", - accessType: "writable", - initialValue: "2", - }).wait(200); - - cy.insertFromAddDrawer("Text"); - cy.addHtmlAttribute("id", "count-state-text"); - cy.renameTreeNode("Count State Text"); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode(`$state.count`); - - cy.insertFromAddDrawer("Button"); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode(`"Start"`); - cy.addInteraction("onClick", { - actionName: "customFunction", - args: { - customFunction: `$state.isRunning = true;`, - }, - }); - - cy.insertFromAddDrawer("Button"); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode(`"Stop"`); - cy.addInteraction("onClick", { - actionName: "customFunction", - args: { - customFunction: `$state.isRunning = false;`, - }, - }); - - cy.insertFromAddDrawer("Text Input"); - cy.get(`[data-test-id="prop-editor-row-name"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode(`"interval"`); - cy.get(`[data-test-id="prop-editor-row-value"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.get(`[data-test-id="data-picker"]`).contains("interval").click(); - cy.get(`[data-test-id="data-picker"]`) - .contains("button", "Save") - .click(); - cy.addInteraction("onChange", { - actionName: "customFunction", - args: { - customFunction: `$state.interval = event.target.value`, - }, - }); - - cy.insertFromAddDrawer("hostless-timer"); - - cy.get( - `[data-test-id="prop-editor-row-intervalSeconds"] label` - ).rightclick(); - cy.contains("Use dynamic value").click(); - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode(`$state.interval`); - - cy.addInteraction("onTick", { - actionName: "customFunction", - args: { - customFunction: `$state.count++`, - }, - }); - - assertState("0"); - cy.get(`[data-test-id="prop-editor-row-runWhileEditing"] label`) - .eq(0) - .rightclick(); - cy.contains("Use dynamic value").click(); - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode(`true`); - - // NOTE: State can not be changed in non-interactive mode! - cy.turnOffDesignMode(); - cy.switchInteractiveMode(); - - cy.selectTreeNode(["Timer"]); - - cy.switchToDataTab(); - cy.get( - `[data-test-id="variables-section"] [data-test-id="count"] a` - ).should("not.have.text", "0"); - cy.switchToSettingsTab(); - - cy.get(`[data-test-id="prop-editor-row-runWhileEditing"] label`) - .eq(0) - .rightclick(); - cy.contains("Remove dynamic value").click(); - cy.wait(1000); - cy.get(`[data-test-id="prop-editor-row-runWhileEditing"] label`) - .eq(0) - .rightclick(); - cy.contains("Use dynamic value").click(); - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode(`false`); - - cy.get(`[data-test-id="prop-editor-row-isRunning"] label`) - .eq(0) - .rightclick(); - cy.contains("Use dynamic value").click(); - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode(`$state.isRunning`); - - cy.withinLiveMode(() => { - // checks "mode" state - cy.get("#count-state-text").should("have.text", "0"); - cy.wait(6000); - cy.get("#count-state-text").should("have.text", "0"); - cy.contains("Start").click(); - cy.wait(1000); - cy.get("#count-state-text").should("have.text", "0"); - cy.wait(1000); - cy.get("#count-state-text").should("have.text", "1"); - cy.wait(2000); - cy.get("#count-state-text").should("have.text", "2"); - cy.wait(4000); - cy.get("#count-state-text").should("have.text", "4"); - - cy.contains("Stop").click(); - cy.wait(6000); - cy.get("#count-state-text").should("have.text", "4"); - - cy.get("input[name='interval']").type("{selectall}{backspace}"); - cy.get("input[name='interval']").type("4"); - cy.get("input[name='interval']").type("{enter}"); - - cy.contains("Start").click(); - cy.wait(4000); - cy.get("#count-state-text").should("have.text", "5"); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/plasmic-hosting.spec.ts b/platform/wab/cypress/e2e/plasmic-hosting.spec.ts deleted file mode 100644 index cf0e61c997..0000000000 --- a/platform/wab/cypress/e2e/plasmic-hosting.spec.ts +++ /dev/null @@ -1 +0,0 @@ -describe("plasmic-hosting", function () {}); diff --git a/platform/wab/cypress/e2e/plexus-installation.spec.ts b/platform/wab/cypress/e2e/plexus-installation.spec.ts deleted file mode 100644 index fba12f7c54..0000000000 --- a/platform/wab/cypress/e2e/plexus-installation.spec.ts +++ /dev/null @@ -1,608 +0,0 @@ -import { kebabCase, startCase } from "lodash"; -import { Framed, removeCurrentProject, setupNewProject } from "../support/util"; - -export const PLEXUS_INSERTABLES = [ - { name: "button", dependencies: [] }, - { name: "checkbox", dependencies: [] }, - { - name: "checkboxGroup", - dependencies: ["Label", "Checkbox", "Description"], - }, - { - name: "combobox", - dependencies: [ - "Label", - "Description", - "Menu Popover", - "Menu Item", - "Menu Section", - ], - }, - { name: "drawer", dependencies: ["Button"] }, - { name: "modal", dependencies: ["Button"] }, - { name: "popover", dependencies: ["Button", "Overlay Arrow"] }, - { - name: "rangeSlider", - dependencies: ["Label", "Description", "Slider Thumb"], - }, - // Radio before radio group to simplify assertions (radio is a child of radio group) - { name: "radio", dependencies: [] }, - { - name: "radioGroup", - dependencies: ["Label", "Description", "Radio"], - }, - { - name: "select", - dependencies: [ - "Label", - "Description", - "Menu Popover", - "Menu Item", - "Menu Section", - ], - }, - { name: "slider", dependencies: ["Label", "Slider Thumb"] }, - { name: "switch", dependencies: ["Description"] }, - { - name: "textInput", - dependencies: [], - }, - { - name: "textField", - dependencies: ["Label", "Description", "Text Input", "TextArea Input"], - }, - { name: "tooltip", dependencies: ["Overlay Arrow"] }, -]; - -describe("Plexus Installation", function () { - beforeEach(() => { - setupNewProject({ - name: "Plexus Installation Test", - }); - }); - - afterEach(() => { - removeCurrentProject(); - }); - - function getFilteredComponentsInProjectPanel(filterQuery: string) { - return cy - .getProjectPanelContents() - .find("input") - .clear() - .type(filterQuery) - .then(() => cy.getProjectPanelContents().contains(filterQuery)); - } - - function verifyInitialState() { - verifyProjectPanelState({ arenaCount: 1, componentCount: 0 }); - cy.curWindow().then((win) => { - expect(win.dbg.studioCtx.site.defaultComponents).deep.equal({}); - expect(win.dbg.studioCtx.site.projectDependencies).to.have.length(0); - }); - } - - function verifyProjectPanelState({ arenaCount = 2, componentCount = 24 }) { - cy.openProjectPanel(); - cy.getComponentsCount().then((count) => { - expect(+count).to.equal(componentCount); - }); - cy.getArenasCount().then((count) => { - expect(+count).to.equal(arenaCount); - }); - } - - function verifyPostInstallableState() { - verifyProjectPanelState({ arenaCount: 2, componentCount: 24 }); - cy.justLog("Check focused arena"); - cy.get("#proj-nav-button").contains("Components"); - } - - describe("Standalone installations", function () { - it("can install standalone Plexus components ", function () { - cy.withinStudioIframe(() => { - cy.createNewPage("New page").then(() => { - verifyInitialState(); - PLEXUS_INSERTABLES.forEach((item) => { - getFilteredComponentsInProjectPanel(startCase(item.name)).should( - "not.exist" - ); - cy.insertFromAddDrawer(startCase(item.name)); - cy.openProjectPanel(); - getFilteredComponentsInProjectPanel(startCase(item.name)).should( - "have.length", - 1 - ); - item.dependencies.forEach((constituent) => { - getFilteredComponentsInProjectPanel(constituent).should( - "have.length", - 1 - ); - }); - }); - cy.getComponentsCount().then((count) => { - const expectedCount = PLEXUS_INSERTABLES.reduce((acc, item) => { - acc.add(startCase(item.name)); - item.dependencies.forEach((constituent) => acc.add(constituent)); - return acc; - }, new Set()).size; - expect(+count).to.equal(expectedCount); - }); - cy.curWindow().then((win) => { - cy.justLog("Checking that the default components are set"); - expect(win.dbg.studioCtx.site.defaultComponents).deep.equal( - PLEXUS_INSERTABLES.reduce((acc: Record, item) => { - acc[kebabCase(item.name)] = - win.dbg.studioCtx.site.components.filter( - (c: any) => c.name === startCase(item.name) - )[0]; - return acc; - }, {}) - ); - cy.justLog( - "Checking that only the necessary project dependencies are added" - ); - expect(win.dbg.studioCtx.site.projectDependencies).to.have.length( - 1 - ); - expect( - win.dbg.studioCtx.site.projectDependencies[0].projectId - ).to.equal("gmeH6XgPaBtkt51HunAo4g"); - }); - }); - }); - }); - - it("can install standalone Plexus component via drag and drop", function () { - cy.withinStudioIframe(() => { - cy.createNewPage("New page").then((framed: Framed) => { - verifyInitialState(); - - // Find the combobox component in the insertables - const comboboxItem = PLEXUS_INSERTABLES.find( - (item) => item.name === "combobox" - )!; - cy.dragGalleryItemRelativeToElt( - startCase(comboboxItem.name), - framed.getFrame(), - 100, - 100 - ); - - // Verify the component was added to the project panel - cy.openProjectPanel(); - - // Verify the total component count - cy.getComponentsCount().then((count) => { - const expectedCount = 1 + comboboxItem.dependencies.length; // Combobox + its dependencies - expect(+count).to.equal(expectedCount); - }); - - getFilteredComponentsInProjectPanel( - startCase(comboboxItem.name) - ).should("have.length", 1); - - // Verify all dependencies were also added - comboboxItem.dependencies.forEach((constituent) => { - getFilteredComponentsInProjectPanel(constituent).should( - "have.length", - 1 - ); - }); - - cy.justType("{selectall}{backspace}"); - cy.justType("{esc}"); // exit project panel - - // Verify default components are set correctly - cy.curWindow().then((win) => { - cy.justLog("Checking that the default component is set"); - expect(win.dbg.studioCtx.site.defaultComponents).to.have.property( - kebabCase(comboboxItem.name) - ); - - // Verify only necessary project dependencies are added - cy.justLog( - "Checking that only the necessary project dependencies are added" - ); - expect(win.dbg.studioCtx.site.projectDependencies).to.have.length( - 1 - ); - expect( - win.dbg.studioCtx.site.projectDependencies[0].projectId - ).to.equal("gmeH6XgPaBtkt51HunAo4g"); - }); - - // Test undo functionality - // cy.undoTimes(1); // TODO: Currently, a single undo causes the below next assertion to fail, because dependencies are not removed. So a single undo does not return the project back to its initial state. - cy.undoTimes(2); - - // Verify component is removed after undo - verifyInitialState(); - }); - }); - }); - - it(`"Create a new copy of this component" option works`, function () { - cy.withinStudioIframe(() => { - cy.createNewPage("New Page").then(() => { - const testItem = PLEXUS_INSERTABLES.find( - (item) => item.name === "combobox" - )!; - const newComponentsLength = testItem.dependencies.length + 1; // +1 for the component itself - function addNewCopy() { - cy.openAddDrawer(); - cy.addDrawerItem(startCase(testItem.name)).wait(200).rightclick(); - cy.contains("Create a new copy of this component").click(); - } - - verifyInitialState(); - - getFilteredComponentsInProjectPanel(startCase(testItem.name)).should( - "not.exist" - ); - testItem.dependencies.forEach((constituent) => { - getFilteredComponentsInProjectPanel(constituent).should( - "have.length", - 0 - ); - }); - - addNewCopy(); - - cy.openProjectPanel(); - getFilteredComponentsInProjectPanel(startCase(testItem.name)).should( - "have.length", - 1 - ); - testItem.dependencies.forEach((constituent) => { - getFilteredComponentsInProjectPanel(constituent).should( - "have.length", - 1 - ); - }); - cy.getComponentsCount().then((count) => { - expect(+count).to.equal(newComponentsLength); - }); - - getFilteredComponentsInProjectPanel( - `${startCase(testItem.name)}2` - ).should("not.exist"); - testItem.dependencies.forEach((constituent) => { - getFilteredComponentsInProjectPanel(`${constituent}2`).should( - "not.exist" - ); - }); - addNewCopy(); - let defaultComponents: Record; - cy.curWindow().then((win) => { - cy.justLog("Checking that the default components are set"); - defaultComponents = { - [kebabCase(testItem.name)]: - win.dbg.studioCtx.site.components.filter( - (c: any) => c.name === startCase(testItem.name) - )[0], - }; - expect(win.dbg.studioCtx.site.defaultComponents).deep.equal( - defaultComponents - ); - }); - - cy.openProjectPanel(); - getFilteredComponentsInProjectPanel( - `${startCase(testItem.name)}2` - ).should("have.length", 1); - testItem.dependencies.forEach((constituent) => { - getFilteredComponentsInProjectPanel(`${constituent}2`).should( - "have.length", - 1 - ); - }); - cy.curWindow().then((win) => { - cy.justLog( - "Checking that the default components are not overwritten" - ); - expect(win.dbg.studioCtx.site.defaultComponents).deep.equal( - defaultComponents - ); // still the same - cy.justLog( - "Checking that only the necessary project dependencies are added" - ); - expect(win.dbg.studioCtx.site.projectDependencies).to.have.length( - 1 - ); - expect( - win.dbg.studioCtx.site.projectDependencies[0].projectId - ).to.equal("gmeH6XgPaBtkt51HunAo4g"); - }); - cy.getComponentsCount().then((count) => { - expect(+count).to.equal(newComponentsLength * 2); - }); - }); - }); - }); - }); - describe("Installable installations", function () { - function verifyInstallationDialog() { - cy.get("[role=dialog] form") - .find("input[type=checkbox]") - .should("have.length", 4); - cy.get("[role=dialog] form") - .find("label") - .eq(0) - .contains("react-aria") - .should("exist"); - cy.get("[role=dialog] form") - .find("label") - .eq(0) - .find("input[type=checkbox][disabled]") - .should("exist"); - cy.get("[role=dialog] form") - .find("label") - .find("input[type=checkbox]:not([disabled])") - .should("have.length", 3); - } - - function verifyPostInstallableDefaultComponents() { - cy.curWindow().then((win) => { - cy.justLog("Checking that the default components are set"); - expect(win.dbg.studioCtx.site.defaultComponents).deep.equal( - PLEXUS_INSERTABLES.reduce((acc: Record, item) => { - acc[kebabCase(item.name)] = - win.dbg.studioCtx.site.components.filter( - (c: any) => c.name === startCase(item.name) - )[0]; - return acc; - }, {}) - ); - }); - } - - function unflattenInstallation() { - cy.get("[role=dialog] form").find("label").eq(2).click(); // use colors library for color tokens - } - - function beginInstallation() { - cy.get("[role=dialog] form").find("button[type=submit]").click(); - cy.waitLoadingComplete(); - } - - it("can install installable components (flattened)", function () { - cy.withinStudioIframe(() => { - verifyInitialState(); - cy.insertFromAddDrawer("Plasmic Design System"); - verifyInstallationDialog(); - beginInstallation(); - - verifyPostInstallableState(); - - verifyPostInstallableDefaultComponents(); - cy.curWindow().then((win) => { - cy.justLog( - "Checking that only the necessary project dependencies are added" - ); - expect(win.dbg.studioCtx.site.projectDependencies).to.have.length(1); - expect( - win.dbg.studioCtx.site.projectDependencies[0].projectId - ).to.equal("gmeH6XgPaBtkt51HunAo4g"); - expect( - win.dbg.studioCtx.site.styleTokens.find( - (t: any) => t.name === "Brand/Brand-Border" - ).value - ).not.to.match(/^var\(/); // ie. not referencing another var (i.e. flattened) - }); - cy.justType("{esc}"); // exit project panel - cy.undoTimes(2); - verifyInitialState(); - - cy.justLog( - "Assert that this operation can be performed multiple times without error" - ); - cy.insertFromAddDrawer("Plasmic Design System"); - beginInstallation(); - verifyPostInstallableState(); - cy.insertFromAddDrawer("Plasmic Design System"); - beginInstallation(); - - verifyProjectPanelState({ arenaCount: 2 + 1, componentCount: 24 }); - }); - }); - - it("can install installable (un-flattened)", function () { - cy.withinStudioIframe(() => { - verifyInitialState(); - cy.insertFromAddDrawer("Plasmic Design System"); - - unflattenInstallation(); - beginInstallation(); - - verifyPostInstallableState(); - - cy.curWindow().then((win) => { - expect(win.dbg.studioCtx.site.projectDependencies).to.have.length(2); - expect( - win.dbg.studioCtx.site.projectDependencies[0].projectId - ).to.equal("gmeH6XgPaBtkt51HunAo4g"); - expect( - win.dbg.studioCtx.site.projectDependencies[1].projectId - ).to.equal("5ZtnypMovRHeeP3YTdPCYL"); - // Assert that new tokens are un-flattened - expect( - win.dbg.studioCtx.site.styleTokens.find( - (t: any) => t.name === "Brand/Brand-Border" - ).value - ).to.match(/^var\(/); // ie. references another var (means it's un-flattened) }); - }); - - cy.justType("{esc}"); // exit project panel - cy.undoTimes(2); - - // Verify stuff is removed - cy.curWindow().then((win) => { - expect(win.dbg.studioCtx.site.projectDependencies).to.have.length(2); - // Assert that tokens are also removed - expect( - win.dbg.studioCtx.site.styleTokens.find( - (t: any) => t.name === "Brand/Brand-Border" - ) - ).to.be.undefined; - }); - - verifyProjectPanelState({ componentCount: 0, arenaCount: 1 }); - - // TODO: A separate undo is needed for each dependency removal - cy.justType("{esc}"); // exit project panel - cy.undoTimes(1); // removes the first dependency - - // Verify dependencies are removed - cy.curWindow().then((win) => { - expect(win.dbg.studioCtx.site.projectDependencies).to.have.length(1); - }); - - cy.justType("{esc}"); // exit project panel - cy.undoTimes(1); // removes the second dependency - - // Verify dependencies are removed - cy.curWindow().then((win) => { - expect(win.dbg.studioCtx.site.projectDependencies).to.have.length(0); - }); - - verifyInitialState(); - }); - }); - - it("can install installable (un-flattened) after standalone installation", function () { - cy.withinStudioIframe(() => { - cy.createNewPage("New Page").then(() => { - verifyInitialState(); - const testItem = PLEXUS_INSERTABLES[0]; - cy.insertFromAddDrawer(startCase(testItem.name)); - verifyProjectPanelState({ arenaCount: 1, componentCount: 1 }); - - cy.curWindow().then((win) => { - expect( - win.dbg.studioCtx.site.styleTokens.find( - (t: any) => t.name === "Basic/Border" - ) - ).to.be.undefined; // later, we will test that this token (added by Design System) is flatteend, but Brand/Brand-Border isn't becuase it's not new - expect( - win.dbg.studioCtx.site.styleTokens.find( - (t: any) => t.name === "Brand/Brand-Border" - ).value - ).not.to.match(/^var\(/); // ie. not references another var (i.e. flattened) - }); - cy.insertFromAddDrawer("Plasmic Design System"); - - unflattenInstallation(); - beginInstallation(); - - verifyPostInstallableState(); - // Assert that there's only one clone of the testItem - getFilteredComponentsInProjectPanel(startCase(testItem.name)).should( - "have.length", - 1 - ); - cy.justType("{selectall}{backspace}"); - cy.justType("{esc}"); // exit project panel - - cy.curWindow().then((win) => { - expect(win.dbg.studioCtx.site.projectDependencies).to.have.length( - 2 - ); - expect( - win.dbg.studioCtx.site.projectDependencies[0].projectId - ).to.equal("gmeH6XgPaBtkt51HunAo4g"); - expect( - win.dbg.studioCtx.site.projectDependencies[1].projectId - ).to.equal("5ZtnypMovRHeeP3YTdPCYL"); - // Assert that new tokens are un-flattened - expect( - win.dbg.studioCtx.site.styleTokens.find( - (t: any) => t.name === "Basic/Border" - ).value - ).to.match(/^var\(/); // ie. references another var (means it's un-flattened) - // Assert that existing tokens remain flattened after design system installation - expect( - win.dbg.studioCtx.site.styleTokens.find( - (t: any) => t.name === "Brand/Brand-Border" - ).value - ).not.to.match(/^var\(/); - }); - - cy.undoTimes(2); - - verifyProjectPanelState({ arenaCount: 1, componentCount: 1 }); - - // Verify the original component is still there - getFilteredComponentsInProjectPanel(startCase(testItem.name)).should( - "have.length", - 1 - ); - - cy.justType("{selectall}{backspace}"); - cy.justType("{esc}"); // exit project panel - cy.undoTimes(1); // TODO: Currently, an undo is needed to remove each dependency - // Verify dependencies are removed - cy.curWindow().then((win) => { - // Only the react-aria dependency should remain for the standalone component - expect(win.dbg.studioCtx.site.projectDependencies).to.have.length( - 1 - ); - expect( - win.dbg.studioCtx.site.projectDependencies[0].projectId - ).to.equal("gmeH6XgPaBtkt51HunAo4g"); - expect( - win.dbg.studioCtx.site.styleTokens.find( - (t: any) => t.name === "Basic/Border" - ) - ).to.be.undefined; - expect( - win.dbg.studioCtx.site.styleTokens.find( - (t: any) => t.name === "Brand/Brand-Border" - ).value - ).not.to.match(/^var\(/); - }); - }); - }); - }); - - it("can install installable via the Install All button", function () { - cy.withinStudioIframe(() => { - verifyInitialState(); - - cy.openAddDrawer(); - cy.get(`[data-test-id="add-drawer"]`).contains("Install all").click(); - - verifyInstallationDialog(); - - beginInstallation(); - - verifyPostInstallableState(); - verifyPostInstallableDefaultComponents(); - - cy.curWindow().then((win) => { - cy.justLog( - "Checking that only the necessary project dependencies are added" - ); - expect(win.dbg.studioCtx.site.projectDependencies).to.have.length(1); - expect( - win.dbg.studioCtx.site.projectDependencies[0].projectId - ).to.equal("gmeH6XgPaBtkt51HunAo4g"); - - // Verify tokens are flattened by default - expect( - win.dbg.studioCtx.site.styleTokens.find( - (t: any) => t.name === "Brand/Brand-Border" - ).value - ).not.to.match(/^var\(/); - }); - - // Test undo functionality - cy.justType("{esc}"); // exit project panel - cy.undoTimes(2); - - // Verify components and arenas are removed after undo - verifyInitialState(); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/project-access.ts b/platform/wab/cypress/e2e/project-access.ts deleted file mode 100644 index 6e3808496f..0000000000 --- a/platform/wab/cypress/e2e/project-access.ts +++ /dev/null @@ -1,50 +0,0 @@ -describe("project-access", function () { - afterEach(() => { - cy.removeCurrentProject("user@example.com"); - }); - it("does not allow other users to view project by default", function () { - cy.setupNewProject({ - name: "project-access", - email: "user@example.com", - }).then((projectId: string) => { - // Logged out - cy.wait(1000); - cy.clearCookies(); - cy.openProject({ projectId }); - cy.location("href").should( - "contains", - `/login?continueTo=%2Fprojects%2F${projectId}` - ); - - // Log in as another user - cy.login("user2@example.com"); - cy.openProject({ projectId }); - cy.contains("Could not open project").should("be.visible"); - }); - }); - it("allows other users to view project if inviteOnly: false", function () { - cy.setupNewProject({ - name: "project-access", - email: "user@example.com", - inviteOnly: false, - }).then((projectId: string) => { - // Logged out - cy.wait(1000); - cy.clearCookies(); - cy.openProject({ projectId }); - cy.location("href").should( - "contains", - `/login?continueTo=%2Fprojects%2F${projectId}` - ); - - // Log in as another user - cy.login("user2@example.com"); - cy.openProject({ projectId }); - cy.withinStudioIframe(() => { - cy.contains("You only have read permission to this project").should( - "be.visible" - ); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/publish.spec.ts b/platform/wab/cypress/e2e/publish.spec.ts deleted file mode 100644 index a68f6d6c63..0000000000 --- a/platform/wab/cypress/e2e/publish.spec.ts +++ /dev/null @@ -1,50 +0,0 @@ -describe("publish", function () { - it("allows external users to see other projects in read mode.", function () { - cy.setupNewProject({ name: "publish" }) - .then(() => { - cy.withinStudioIframe(() => { - cy.createNewFrame().then((framed) => { - cy.focusFrameRoot(framed); - // Add text and publish first version - cy.insertFromAddDrawer("Text"); - cy.justType("{enter}{enter}"); - framed.enterIntoTplTextBlock("hello"); - cy.publishVersion("first version"); - // Edit text and publish new version - cy.getSelectedElt().dblclick({ force: true }); - framed.enterIntoTplTextBlock("goodbye"); - cy.wait(3000); // ensure first version is done publishing - cy.publishVersion("second version"); - // Preview first version and check if you see the previous text - cy.previewVersion("first version"); - cy.selectTreeNode(["hello"]); - cy.getSelectedElt().should("contain.text", "hello"); - }); - // Go back to current version - cy.waitForNewFrame( - () => { - cy.contains("Back to current version").click(); - }, - { skipWaitInit: true } - ).then(() => { - cy.selectTreeNode(["goodbye"]); - cy.getSelectedElt().should("contain.text", "goodbye"); - // Revert to first version and check if text goes back to the previous one - cy.revertToVersion("first version"); - cy.selectTreeNode(["hello"]); - cy.getSelectedElt().should("contain.text", "hello"); - }); - }); - // Reload and check if you're still on the reverted version - cy.reload(); - cy.withinStudioIframe(() => { - cy.waitForFrameToLoad(); - cy.selectTreeNode(["hello"]); - cy.getSelectedElt().should("contain.text", "hello"); - }); - }) - .then(() => { - cy.removeCurrentProject(); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/registered-variants.spec.ts b/platform/wab/cypress/e2e/registered-variants.spec.ts deleted file mode 100644 index ea3d59d18e..0000000000 --- a/platform/wab/cypress/e2e/registered-variants.spec.ts +++ /dev/null @@ -1,262 +0,0 @@ -import { removeCurrentProject } from "../support/util"; - -describe("registered variants", function () { - beforeEach(() => { - cy.setupProjectWithHostlessPackages({ - hostLessPackagesInfo: [ - { - name: "react-aria", - npmPkg: ["@plasmicpkgs/react-aria"], - }, - ], - }); - }); - - afterEach(() => { - removeCurrentProject(); - }); - - it("can CRUD registered variants from canvas", function () { - cy.withinStudioIframe(() => { - createAndSwitchToButtonArena().then(() => { - cy.selectRootNode(); - cy.chooseFontSize("15px"); // Set font-size on base, so we can later assert that it can be overrridden by variants - cy.waitForNewFrame(() => { - cy.justLog("Create registered variant artboard"); - cy.variantsTab().contains("Hovered").should("not.exist"); - cy.addRegisteredVariantFromCanvas("Hovered"); - }).then((hoverFrame) => { - cy.justLog("Verify that registered variant has been added"); - cy.variantsTab().contains("Hovered").should("exist"); - cy.selectTreeNode(["Aria Button"]); - cy.justType("{enter}{enter}"); // enter children slot - hoverFrame.enterIntoTplTextBlock("hovered"); - cy.chooseFontSize("20px"); - }); - - cy.withinLiveMode(() => { - cy.contains("Button").should("exist"); - cy.contains("hovered").should("not.exist"); - - cy.contains("Button").realHover(); - cy.contains("hovered").should("exist"); - cy.contains("Button").should("not.exist"); - - cy.contains(`hovered`).should("have.css", "font-size", "20px"); - - cy.curBody().realHover(); // un-hover - cy.contains("Button").should("exist"); - cy.contains("hovered").should("not.exist"); - }); - - cy.justLog("Delete registered variant artboard"); - cy.justType("{shift}{enter}"); // focus frame - cy.justType("{del}"); // delete hover variant frame - cy.get(`[data-test-id="confirm"]`).click(); - cy.variantsTab().contains("Hovered").should("not.exist"); - cy.justType("{cmd}z"); - cy.variantsTab().contains("Hovered").should("exist"); - cy.justLog("Update registered variant artboard"); - cy.editRegisteredVariantFromCanvas("Pressed"); - cy.variantsTab().contains("Pressed").should("exist"); - - cy.withinLiveMode(() => { - cy.contains("Button").should("exist"); - cy.contains("hovered").should("not.exist"); - - cy.contains("Button").realMouseDown(); // simulate press - cy.contains("hovered").should("exist"); - cy.contains("Button").should("not.exist"); - - cy.contains(`hovered`).should("have.css", "font-size", "20px"); - - cy.contains("hovered").realMouseUp(); // simulate press released - cy.contains("Button").should("exist"); - cy.contains("hovered").should("not.exist"); - }); - }); - }); - }); - - it("can CRUD registered variants from variants tab", function () { - cy.withinStudioIframe(() => { - createAndSwitchToButtonArena().then(() => { - cy.selectRootNode(); - cy.chooseFontSize("15px"); // Set font-size on base, so we can later assert that it can be overridden by variants - cy.waitForNewFrame(() => { - cy.justLog("Create registered variant artboard"); - cy.variantsTab().contains("Hovered").should("not.exist"); - cy.addRegisteredVariantFromVariantsTab("Hovered"); - }).then((hoverFrame) => { - cy.justLog("Verify that registered variant has been added"); - cy.variantsTab().contains("Hovered").should("exist"); - cy.selectTreeNode(["Aria Button"]); - cy.justType("{enter}{enter}"); // enter children slot - hoverFrame.enterIntoTplTextBlock("hovered"); - - cy.chooseFontSize("20px"); - }); - - cy.withinLiveMode(() => { - cy.contains("Button").should("exist"); - cy.contains("hovered").should("not.exist"); - - cy.contains("Button").realHover(); - cy.contains("hovered").should("exist"); - cy.contains("Button").should("not.exist"); - - cy.contains(`hovered`).should("have.css", "font-size", "20px"); - - cy.curBody().realHover(); // un-hover - cy.contains("Button").should("exist"); - cy.contains("hovered").should("not.exist"); - }); - - cy.justLog("Delete registered variant artboard"); - cy.doVariantMenuCommand(false, "Hovered", "Delete"); - cy.selectTreeNode(["Aria Button"]); // to make variants tab available - cy.variantsTab().contains("Hovered").should("not.exist"); - - cy.justType("{cmd}z"); // to undo tree node selection - cy.justType("{cmd}z"); // to undo variant deletion - cy.selectTreeNode(["Aria Button"]); // to make variants tab available - cy.variantsTab().contains("Hovered").should("exist"); - - cy.justLog("Update registered variant artboard"); - cy.editRegisteredVariantFromVariantsTab("Hovered", "Pressed"); - cy.variantsTab().contains("Pressed").should("exist"); - - cy.withinLiveMode(() => { - cy.contains("Button").should("exist"); - cy.contains("hovered").should("not.exist"); - - cy.contains("Button").realMouseDown(); // simulate press - cy.contains("hovered").should("exist"); - cy.contains("Button").should("not.exist"); - - cy.contains(`hovered`).should("have.css", "font-size", "20px"); - - cy.contains("hovered").realMouseUp(); // simulate press released - cy.contains("Button").should("exist"); - cy.contains("hovered").should("not.exist"); - }); - }); - }); - }); - - it("can CRUD registered variants in focus mode", function () { - cy.withinStudioIframe(() => { - createAndSwitchToButtonArena().then(() => { - cy.selectRootNode(); - cy.chooseFontSize("15px"); // Set font-size on base, so we can later assert that it can be overrridden by variants - cy.turnOffDesignMode(); - - cy.focusBaseFrame().then((focusModeFrame) => { - cy.justLog("Create registered variant artboard"); - cy.variantsTab().contains("Disabled").should("not.exist"); - cy.addRegisteredVariantFromVariantsTab("Disabled"); - cy.variantsTab().contains("Disabled").should("exist"); - cy.selectRootNode(); - cy.justType("{enter}{enter}"); // enter children slot - focusModeFrame.enterIntoTplTextBlock("this button is disabled"); - cy.chooseFontSize("20px"); - focusModeFrame - .rootElt() - .contains("this button is disabled") - .should("have.css", "font-size", "20px"); - focusModeFrame.rootElt().contains("Button").should("not.exist"); - - cy.resetVariants(); - focusModeFrame - .rootElt() - .contains("this button is disabled") - .should("not.exist"); - focusModeFrame - .rootElt() - .contains("Button") - .should("not.have.css", "font-size", "20px"); - cy.selectRootNode(); - cy.switchToSettingsTab(); - cy.get(`[data-plasmic-prop="isDisabled"]`).click(); // toggle disabled - focusModeFrame - .rootElt() - .contains("this button is disabled") - .should("have.css", "font-size", "20px"); - - cy.switchInteractiveMode(); - focusModeFrame - .rootElt() - .contains("this button is disabled") - .should("have.css", "font-size", "20px"); - }); - - cy.withinLiveMode(() => { - cy.contains(`this button is disabled`).should( - "have.css", - "font-size", - "20px" - ); - cy.contains("Button").should("not.exist"); - }); - - cy.justLog("Testing CRUD in interactive canvas"); - cy.focusBaseFrame().then((focusModeFrame) => { - cy.selectRootNode(); - cy.switchToSettingsTab(); - cy.get(`[data-plasmic-prop="isDisabled"]`).click(); // toggle disabled, so we can simulate hover - cy.justLog("Update registered variant artboard"); - cy.editRegisteredVariantFromVariantsTab("Disabled", "Hovered"); - cy.variantsTab().contains("Hovered").should("exist"); - cy.variantsTab().contains("Disabled").should("not.exist"); - cy.selectVariant("Registered Variants", "Hovered"); - cy.selectRootNode(); - cy.justType("{enter}{enter}"); // enter children slot - focusModeFrame.enterIntoTplTextBlock("this button is hovered"); - focusModeFrame - .rootElt() - .contains("this button is hovered") - .should("have.css", "font-size", "20px"); - cy.resetVariants(); - focusModeFrame - .rootElt() - .contains("this button is hovered") - .should("not.exist"); - focusModeFrame.rootElt().contains("Button").realHover(); // in interactive mode, the hover variant should be previewable - focusModeFrame - .rootElt() - .contains(`this button is hovered`) - .should("have.css", "font-size", "20px"); - focusModeFrame.rootElt().contains("Button").should("not.exist"); - cy.switchInteractiveMode(); // back to non-interactive canvas - focusModeFrame.rootElt().contains("Button").realHover(); - focusModeFrame - .rootElt() - .contains("this button is hovered") - .should("not.exist"); - }); - - cy.withinLiveMode(() => { - cy.contains(`Button`).should("not.have.css", "font-size", "20px"); - cy.contains("Button").realHover(); - cy.contains(`this button is hovered`).should( - "have.css", - "font-size", - "20px" - ); - cy.contains("Button").should("not.exist"); - cy.curBody().realHover(); // un-hover - cy.contains("Button").should("not.have.css", "font-size", "10px"); - cy.contains(`this button is hovered`).should("not.exist"); - }); - }); - }); - }); - function createAndSwitchToButtonArena() { - return cy.createNewPageInOwnArena("Homepage").then(() => { - cy.insertFromAddDrawer("plasmic-react-aria-button"); - cy.extractComponentNamed("Button"); - cy.contains("[Open component]").click(); - return cy.getFramed(); - }); - } -}); diff --git a/platform/wab/cypress/e2e/rich-text.spec.ts b/platform/wab/cypress/e2e/rich-text.spec.ts deleted file mode 100644 index fdd4c44fdf..0000000000 --- a/platform/wab/cypress/e2e/rich-text.spec.ts +++ /dev/null @@ -1,39 +0,0 @@ -describe("rich-text", function () { - it("successfully edit text with format.", function () { - const focusFrame = () => { - return cy - .get("[data-test-frame-uid]") - .its("0.contentDocument.body") - .should("not.be.empty") - .then(cy.wrap); - }; - cy.setupNewProject({ name: "rich-text" }) - .withinStudioIframe(() => { - cy.createNewFrame() - .focusCreatedFrameRoot() - .insertFromAddDrawer("Text") - .then(focusFrame) - .find(".__wab_editor") - .wait(1000) - .dblclick({ force: true }) - .find('[contenteditable="true"]') - .type("{selectall}{backspace}", { delay: 100 }) - .type( - "{mod+i}The {mod+b}Blue Moon{mod+b}{mod+i} was there.{enter}{enter}...or {mod+u}so we thought!{mod+u}{esc}" - ) - .enterLiveMode() - .find(".__wab_text") - .should( - "have.html", - 'The Blue Moon was there.\n\n...or so we thought!' - ) - .exitLiveMove() - .get(`[data-test-class="tpl-tag-select"] input`) - .type("a{enter}", { force: true }) - .then(focusFrame) - .find(".__wab_editor") - .contains("so we thought!"); - }) - .removeCurrentProject(); - }); -}); diff --git a/platform/wab/cypress/e2e/right-panel.spec.ts b/platform/wab/cypress/e2e/right-panel.spec.ts deleted file mode 100644 index 4f7d3bdb18..0000000000 --- a/platform/wab/cypress/e2e/right-panel.spec.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { HORIZ_CONTAINER_CAP } from "../../src/wab/shared/Labels"; -import { removeCurrentProject, setupNewProject } from "../support/util"; - -describe("Right panel", () => { - beforeEach(() => - setupNewProject({ - name: "right-panel", - }) - ); - - afterEach(() => { - removeCurrentProject(); - }); - - it("successfully test all right panel configurations", () => { - const focusFrame = () => { - return cy - .get("[data-test-frame-uid]") - .its("0.contentDocument.body") - .should("not.be.empty") - .then(cy.wrap); - }; - cy.withinStudioIframe(() => { - cy.createNewFrame().then((framed) => { - cy.focusFrameRoot(framed); - cy.insertFromAddDrawer(HORIZ_CONTAINER_CAP); - const stackName = "testStack"; - const textName = "testText"; - cy.renameTreeNode(stackName); - cy.insertFromAddDrawer("Text") - .then(focusFrame) - .find(".__wab_editor") - .wait(1000) - .dblclick({ force: true }) - .type("{selectall}{backspace}This is a text to test{esc}", { - delay: 100, - }) - .setSelectedDimStyle("width", "150px") - .setSelectedDimStyle("height", "25px"); - cy.renameTreeNode(textName); - cy.selectTreeNode([stackName]); - - testSizeSection(); - testVisibilitySection(); - - cy.checkNoErrors(); - }); - }); - }); -}); - -function testSizeSection() { - cy.setSelectedDimStyle("width", "250px") - .getSelectedElt() - .should("have.css", "width", "250px"); - cy.setSelectedDimStyle("width", "stretch") - .getSelectedElt() - .should("have.css", "width", "800px"); - cy.setSelectedDimStyle("width", "hug content") - .getSelectedElt() - .should("have.css", "width", "150px"); - - cy.setSelectedDimStyle("height", "250px") - .getSelectedElt() - .should("have.css", "height", "250px"); - cy.setSelectedDimStyle("height", "stretch") - .getSelectedElt() - .should("have.css", "height", "800px"); - cy.setSelectedDimStyle("height", "hug content") - .getSelectedElt() - .should("have.css", "height", "25px"); - - cy.expandSection("size-section"); - - cy.setSelectedDimStyle("min-width", "200px") - .getSelectedElt() - .should("have.css", "min-width", "200px"); - cy.setSelectedDimStyle("min-height", "200px") - .getSelectedElt() - .should("have.css", "min-height", "200px"); - cy.setSelectedDimStyle("max-width", "250px") - .getSelectedElt() - .should("have.css", "max-width", "250px"); - cy.setSelectedDimStyle("max-height", "250px") - .getSelectedElt() - .should("have.css", "max-height", "250px"); - - cy.clickDataPlasmicProp("flex-grow") - .getSelectedElt() - .should("have.css", "flex-grow", "1"); - cy.clickDataPlasmicProp("flex-grow") - .getSelectedElt() - .should("have.css", "flex-grow", "0"); - - cy.clickDataPlasmicProp("flex-shrink") - .getSelectedElt() - .should("have.css", "flex-shrink", "0"); - cy.clickDataPlasmicProp("flex-grow") - .getSelectedElt() - .should("have.css", "flex-grow", "1"); - - cy.setSelectedDimStyle("flex-basis", "100px") - .getSelectedElt() - .should("have.css", "flex-basis", "100px"); -} - -function testVisibilitySection() { - cy.setSelectedDimStyle("opacity", "50") - .getSelectedElt() - .should("have.css", "opacity", "0.5"); - - cy.clickDataPlasmicProp("display-not-visible") - .getSelectedElt() - .should("have.css", "display", "none"); - - cy.get(`[data-test-id="visibility-choices"]`) - .rightclick() - .clickDataPlasmicProp("display-not-rendered") - .get(".__wab_text") - .should("not.exist"); - - cy.clickDataPlasmicProp("display-visible") - .getSelectedElt() - .should("have.css", "display", "flex"); - - cy.setSelectedDimStyle("opacity", "100") - .getSelectedElt() - .should("have.css", "opacity", "1"); -} diff --git a/platform/wab/cypress/e2e/routing-arenas.spec.ts b/platform/wab/cypress/e2e/routing-arenas.spec.ts deleted file mode 100644 index 01d181ba5d..0000000000 --- a/platform/wab/cypress/e2e/routing-arenas.spec.ts +++ /dev/null @@ -1,67 +0,0 @@ -describe("routing", () => { - afterEach(() => { - cy.removeCurrentProject(); - }); - - it("should switch arenas", () => { - cy.setupNewProject({ - name: "routing-arenas", - }).then((projectId) => { - cy.withinStudioIframe(() => { - // New project should create a new arena called "Custom arena 1" - cy.url().should( - "include", - `/-/Custom-arena-1?arena_type=custom&arena=Custom%20arena%201` - ); - - cy.justLog("Rename current arena"); - cy.projectPanel().contains("Custom arena 1").rightclick(); - cy.contains("Rename arena").click(); - cy.justType("FirstArena{enter}"); - cy.switchToImportsTab(); // we're just trying to close the projects panel - cy.url().should( - "include", - `/-/FirstArena?arena_type=custom&arena=FirstArena` - ); - - cy.justLog("Creating pages and components"); - cy.createNewPage("My/Page"); - cy.createNewComponent("MyComponent"); - - cy.justLog("Switching arenas with project panel"); - cy.projectPanel().contains("MyComponent").click(); - cy.url().should( - "include", - `/-/MyComponent?arena_type=component&arena=` - ); - - cy.projectPanel().contains("/my/page").click(); - cy.url().should("include", `/-/My-Page?arena_type=page&arena=`); - }); - - cy.justLog("Switching arenas with URL"); - - cy.openProject({ projectId }).withinStudioIframe(() => { - // visiting / should redirect us to the first arena - cy.url().should( - "include", - `/-/FirstArena?arena_type=custom&arena=FirstArena` - ); - cy.get("#proj-nav-button").contains("FirstArena"); - }); - - cy.openProject({ - projectId, - arenaType: "arena", - arenaName: "NonExistentArena", - }).withinStudioIframe(() => { - // visiting /arena/NonExistentArena should redirect us to the first arena - cy.url().should( - "include", - `/-/FirstArena?arena_type=custom&arena=FirstArena` - ); - cy.get("#proj-nav-button").contains("FirstArena"); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/routing-branches.spec.ts b/platform/wab/cypress/e2e/routing-branches.spec.ts deleted file mode 100644 index a49aed4dbe..0000000000 --- a/platform/wab/cypress/e2e/routing-branches.spec.ts +++ /dev/null @@ -1,126 +0,0 @@ -describe("routing", () => { - afterEach(() => { - cy.removeCurrentProject(); - }); - - it("should switch branches", () => { - cy.setupNewProject({ - name: "routing-branches", - devFlags: { branching: true }, - }).then((projectId) => { - cy.withinStudioIframe(() => { - // New project should create a new arena called "Custom arena 1" - cy.url().should("not.include", `branch=`); - - cy.justLog("Setup Main"); - cy.createNewComponent("DisplayBranch").then((mainFramed) => { - cy.focusFrameRoot(mainFramed); - - cy.insertFromAddDrawer("Text"); - cy.getSelectedElt().renameTreeNode("text"); - cy.getSelectedElt().chooseFontSize("60px"); // so we can see it easily - cy.getSelectedElt().dblclick({ force: true }); - mainFramed.enterIntoTplTextBlock("Main"); - - cy.publishVersion("need to publish before branching"); - }); - - function createNewBranch(branchName: string) { - cy.waitForNewFrame( - () => { - cy.branchPanel() - .contains("New") - .click() - .justType(`${branchName}{enter}`); - }, - { skipWaitInit: true } - ).then((newBranchFramed) => { - cy.focusFrameRoot(newBranchFramed); - cy.url().should("include", `branch=${branchName}`); - cy.selectTreeNode(["text"]) - .getSelectedElt() - .should("contain.text", "Main") - .dblclick({ force: true }); - newBranchFramed.enterIntoTplTextBlock(branchName); - cy.wait(300); - }); - } - - function switchBranch(branchName: string) { - return cy - .waitForNewFrame( - () => { - cy.waitForSave(); - cy.branchPanel().contains(branchName).click({ force: true }); - }, - { skipWaitInit: true } - ) - .then((switchBranchFramed) => { - cy.focusFrameRoot(switchBranchFramed); - if (branchName === "main") { - cy.url().should("not.include", `branch=`); - } else { - cy.url().should("include", `branch=${branchName}`); - } - return cy.wrap(switchBranchFramed); - }); - } - - cy.justLog("Setup feature branch"); - createNewBranch("Feature"); - - cy.justLog("Switching branches with branch panel"); - switchBranch("main").then(() => { - cy.selectTreeNode(["text"]) - .getSelectedElt() - .should("contain.text", "Main"); - }); - switchBranch("Feature").then(() => { - cy.selectTreeNode(["text"]) - .getSelectedElt() - .should("contain.text", "Feature"); - }); - }); - - cy.justLog("Switching branches with URL"); - cy.openProject({ projectId, qs: { branch: "main" } }).withinStudioIframe( - () => { - cy.waitForFrameToLoad() - .selectTreeNode(["text"]) - .getSelectedElt() - .should("contain.text", "Main"); - } - ); - cy.openProject({ - projectId, - qs: { branch: "Feature" }, - }).withinStudioIframe(() => { - cy.waitForFrameToLoad() - .selectTreeNode(["text"]) - .getSelectedElt() - .should("contain.text", "Feature"); - }); - cy.openProject({ projectId, qs: { branch: "main" } }).withinStudioIframe( - () => { - cy.waitForFrameToLoad() - .selectTreeNode(["text"]) - .getSelectedElt() - .should("contain.text", "Main"); - } - ); - cy.openProject({ - projectId, - qs: { - branch: "NonExistentBranch", - }, - }).withinStudioIframe(() => { - // visiting non-existent branch should redirect us to the main branch - cy.url().should("not.include", `branch=`); - cy.waitForFrameToLoad() - .selectTreeNode(["text"]) - .getSelectedElt() - .should("contain.text", "Main"); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/routing-versions.spec.ts b/platform/wab/cypress/e2e/routing-versions.spec.ts deleted file mode 100644 index f4be4b4b72..0000000000 --- a/platform/wab/cypress/e2e/routing-versions.spec.ts +++ /dev/null @@ -1,158 +0,0 @@ -describe("routing", () => { - afterEach(() => { - cy.removeCurrentProject(); - }); - - it("should switch branch versions", () => { - cy.setupNewProject({ - name: "routing-branch-versions", - devFlags: { branching: true }, - }).then((projectId) => { - cy.withinStudioIframe(() => { - // New project should create a new arena called "Custom arena 1" - cy.url() - .should("not.include", `branch=`) - .and("not.include", "version="); - - cy.createNewComponent("DisplayBranchVersion").then((framed) => { - cy.focusFrameRoot(framed); - - cy.justLog("Publishing Main v1"); - cy.insertFromAddDrawer("Text"); - cy.getSelectedElt().renameTreeNode("text"); - cy.getSelectedElt().chooseFontSize("60px"); // so we can see it easily - cy.getSelectedElt().dblclick({ force: true }); - framed.enterIntoTplTextBlock("Main v1"); - cy.publishVersion("Main v1"); - - cy.justLog("Publishing Main v2"); - cy.selectTreeNode(["text"]) - .getSelectedElt() - .should("contain.text", "Main v1") - .dblclick({ force: true }); - framed.enterIntoTplTextBlock("Main v2"); - // Wait for Studio to recognize changes before trying to publish. - cy.contains("Newest changes haven't been published."); - cy.publishVersion("Main v2"); - - cy.justLog("Editing main without publishing"); - cy.selectTreeNode(["text"]) - .getSelectedElt() - .should("contain.text", "Main v2") - .dblclick({ force: true }); - framed.enterIntoTplTextBlock("Main latest"); - cy.contains("Newest changes haven't been published."); - }); - - function switchBranchVersion(branchVersion: string) { - return cy - .waitForNewFrame( - () => { - cy.switchToVersionsTab(); - cy.curWindow().then((win) => { - const studioCtx = (win as any).dbg.studioCtx; - const msg = `${studioCtx._changeCounter} ${studioCtx._savedChangeCounter}`; - cy.justLog("saving " + msg); - }); - cy.waitForSave(); - cy.curWindow().then((win) => { - const studioCtx = (win as any).dbg.studioCtx; - const msg = `${studioCtx._changeCounter} ${studioCtx._savedChangeCounter}`; - cy.justLog("saved " + msg); - }); - cy.wait(1000); - cy.curWindow().then((win) => { - const studioCtx = (win as any).dbg.studioCtx; - const msg = `${studioCtx._changeCounter} ${studioCtx._savedChangeCounter}`; - cy.justLog("waited " + msg); - }); - cy.contains(branchVersion).click(); - }, - { skipWaitInit: true } - ) - .then((switchBranchVersionFramed) => { - cy.focusFrameRoot(switchBranchVersionFramed); - cy.url() - .should("not.include", "branch=") - .and("include", `version=${branchVersion}`); - return cy.wrap(switchBranchVersionFramed); - }); - } - - cy.justLog("Switching branch versions with versions tab"); - switchBranchVersion("0.0.1").then(() => { - cy.contains("Back to current version").should("be.visible"); - cy.selectTreeNode(["text"]) - .getSelectedElt() - .should("contain.text", "Main v1"); - }); - switchBranchVersion("0.0.2").then(() => { - cy.contains("Back to current version").should("be.visible"); - cy.selectTreeNode(["text"]) - .getSelectedElt() - .should("contain.text", "Main v2"); - }); - - cy.justLog('Click "Back to current version" button'); - cy.waitForNewFrame( - () => { - cy.contains("Back to current version").click(); - }, - { skipWaitInit: true } - ).then(() => { - cy.url() - .should("not.include", `branch=`) - .and("not.include", "version="); - cy.contains("Back to current version").should("not.exist"); - cy.selectTreeNode(["text"]) - .getSelectedElt() - .should("contain.text", "Main latest"); - }); - }); - - cy.justLog("Switching branch versions with URL"); - cy.openProject({ - projectId, - qs: { - version: "0.0.1", - }, - }).withinStudioIframe(() => { - cy.contains("Back to current version").should("be.visible"); - cy.waitForFrameToLoad() - .selectTreeNode(["text"]) - .getSelectedElt() - .should("contain.text", "Main v1"); - }); - cy.openProject({ - projectId, - qs: { - branch: "main", - version: "0.0.2", - }, - }).withinStudioIframe(() => { - cy.contains("Back to current version").should("be.visible"); - cy.waitForFrameToLoad() - .selectTreeNode(["text"]) - .getSelectedElt() - .should("contain.text", "Main v2"); - }); - cy.openProject({ - projectId, - qs: { - branch: "main", - version: "0.0.3", - }, - }).withinStudioIframe(() => { - // visiting non-existent branch version should redirect us to the main branch - cy.url() - .should("not.include", `branch=`) - .and("not.include", "version="); - cy.contains("Back to current version").should("not.exist"); - cy.waitForFrameToLoad() - .selectTreeNode(["text"]) - .getSelectedElt() - .should("contain.text", "Main latest"); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/stale-bundle.spec.ts b/platform/wab/cypress/e2e/stale-bundle.spec.ts deleted file mode 100644 index 17b14527b1..0000000000 --- a/platform/wab/cypress/e2e/stale-bundle.spec.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { Framed } from "../support/util"; - -/** - * This test is to ensure that new migrations will not break projects that - * haven't migrated yet to the latest versions. - * - * If this bundle is too old, use `yarn db:upgrade-stale-bundle` to upgrade it - * to the appropriate version (see command instructions). - */ -describe("Can use stale bundle", function () { - it("Can migrate stale bundle", function () { - // Create the site from the stale bundle - cy.setupProjectFromTemplate("stale-bundle", { skipVisit: true }).then( - (projectId) => { - cy.openProject({ - projectId, - qs: { - ccStubs: true, - }, - }).withinStudioIframe(() => { - cy.waitForFrameToLoad(); - cy.curDocument() - .get(".canvas-editor__frames .canvas-editor__viewport") - .then(($frame) => { - const frame = $frame[0] as HTMLIFrameElement; - return new Framed(frame); - }) - .then((framed: Framed) => { - // Edit the project and save to make sure it's passing site invariants - cy.switchToTreeTab() - .selectTreeNode(["vertical stack", "Button"]) - .justType("{shift}2") - .getSelectedElt() - .should("contain.text", "Button") - .justType("{enter}"); - framed.enterIntoTplTextBlock(`AntdBtn`); - cy.selectTreeNode(["vertical stack", "AntdBtn"]); - cy.checkNoErrors(); - cy.waitForSave(); - }); - }); - } - ); - }); -}); diff --git a/platform/wab/cypress/e2e/state-management-counter.spec.ts b/platform/wab/cypress/e2e/state-management-counter.spec.ts deleted file mode 100644 index 018e083a9d..0000000000 --- a/platform/wab/cypress/e2e/state-management-counter.spec.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { - removeCurrentProject, - setupProjectFromTemplate, -} from "../support/util"; - -describe("state-management-counter", function () { - beforeEach(() => { - setupProjectFromTemplate("state-management"); - }); - afterEach(() => { - removeCurrentProject(); - }); - - it("can create private/readonly/writable counter", () => { - cy.withinStudioIframe(() => { - cy.createNewComponent("counter").then((framed) => { - cy.focusFrameRoot(framed); - - cy.addState({ - name: "count", - variableType: "number", - accessType: "private", - initialValue: "5", - }).wait(200); - cy.insertFromAddDrawer("Text"); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.selectPathInDataPicker(["count"]); - cy.getSelectedElt().should("contain.text", "5"); - - cy.insertFromAddDrawer("Button"); - cy.bindTextContentToCustomCode(`"Increment"`); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["count"], - operation: "increment", - }, - }); - }); - - cy.createNewPage("page").then((framed) => { - cy.focusFrameRoot(framed); - - cy.insertFromAddDrawer("counter"); - cy.getSelectedElt().should("contain.text", "5"); - cy.checkNumberOfStatesInComponent(0, 0); - - cy.selectTreeNode(["root", "counter"]).rightclick(); - cy.contains("in place").click(); - cy.changeStateAccessType("count", "private", "writable"); - // leave spotlight mode - cy.selectTreeNode(["root", "counter"]).click(); - cy.getSelectedElt().should("contain.text", "5"); - cy.checkNumberOfStatesInComponent(0, 1); - - cy.insertFromAddDrawer("Button"); - cy.bindTextContentToCustomCode(`"Reset"`); - cy.addInteraction("onClick", { - actionName: "updateVariable", - args: { - variable: ["counter → count"], - operation: "newValue", - value: "0", - }, - }); - - cy.withinLiveMode(() => { - cy.get("#plasmic-app div").should("contain.text", "5"); - cy.contains("Increment").click(); - cy.get("#plasmic-app div").should("contain.text", "6"); - cy.contains("Reset").click(); - cy.get("#plasmic-app div").should("contain.text", "0"); - }); - - cy.selectTreeNode(["root", "counter"]).rightclick(); - cy.contains("in place").click(); - cy.changeStateAccessType("count", "writable", "readonly"); - cy.selectTreeNode(["root", "counter"]).click(); - cy.checkNumberOfStatesInComponent(0, 1); - cy.getSelectedElt().should("contain.text", "5"); - - cy.withinLiveMode(() => { - cy.get("#plasmic-app div").should("contain.text", "5"); - cy.contains("Increment").click(); - cy.get("#plasmic-app div").should("contain.text", "6"); - // the state is readonly so it shouldn't update - cy.contains("Reset").click(); - cy.get("#plasmic-app div").should("contain.text", "6"); - }); - - cy.checkNoErrors(); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/state-management-dependent.spec.ts b/platform/wab/cypress/e2e/state-management-dependent.spec.ts deleted file mode 100644 index 00d8c66dd0..0000000000 --- a/platform/wab/cypress/e2e/state-management-dependent.spec.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { DevFlagsType } from "../../src/wab/shared/devflags"; -import { - removeCurrentProject, - setupProjectFromTemplate, -} from "../support/util"; - -describe("state-management-dependents", function () { - let origDevFlags: DevFlagsType; - beforeEach(() => { - cy.getDevFlags().then((devFlags) => { - origDevFlags = devFlags; - cy.upsertDevFlags({ - ...origDevFlags, - plexus: false, - }); - }); - setupProjectFromTemplate("state-management"); - }); - afterEach(() => { - if (origDevFlags) { - cy.upsertDevFlags(origDevFlags); - } - removeCurrentProject(); - }); - - it("can create dependent states", () => { - cy.withinStudioIframe(() => { - cy.createNewComponent("Dependent States").then((framed) => { - cy.focusFrameRoot(framed); - - const options = ["option1", "option2", "option3"]; - - cy.insertFromAddDrawer("Select"); - cy.bindPlasmicPropToCustomCode("options", JSON.stringify(options)); - - cy.insertFromAddDrawer("Text Input"); - cy.bindPlasmicPropToObjectPath("value", ["select → value"]); - - cy.insertFromAddDrawer("TextInput"); - cy.bindPlasmicPropToCustomCode( - "value", - `$state.textInput.value.toUpperCase()` - ); - - cy.checkNumberOfStatesInComponent(0, 3); - - options.forEach((opt) => { - cy.selectTreeNode(["root", "Select"]).click({ force: true }); - cy.selectDataPlasmicProp("value", opt).wait(200); - - framed.rootElt().find(`button`).contains(opt); - framed.rootElt().find(`input[value=${opt}]`).should("have.length", 1); - framed - .rootElt() - .find(`input[value=${opt.toUpperCase()}]`) - .should("have.length", 1); - }); - - cy.withinLiveMode(() => { - options.forEach((opt) => { - cy.get("#plasmic-app > div").within(() => { - cy.get("button") - .parent() - .within(() => { - cy.get("select").select(opt, { force: true }); - }); - cy.get(`input[value=${opt}]`).should("have.length", 1); - cy.get(`input[value=${opt.toUpperCase()}]`).should( - "have.length", - 1 - ); - cy.get(`input[value=${opt}]`).type("hello"); - cy.get(`input[value=${opt}hello]`).should("have.length", 1); - cy.get(`input[value=${opt.toUpperCase()}HELLO]`).should( - "have.length", - 1 - ); - }); - }); - }); - }); - cy.checkNoErrors(); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/style-sections.spec.ts b/platform/wab/cypress/e2e/style-sections.spec.ts deleted file mode 100644 index 565eaf099e..0000000000 --- a/platform/wab/cypress/e2e/style-sections.spec.ts +++ /dev/null @@ -1,279 +0,0 @@ -// This test depends on the host-test package running. - -import { uniq } from "lodash"; -import { - configureProjectAppHost, - removeCurrentProject, - setupNewProject, -} from "../support/util"; - -describe("Style sections", function () { - beforeEach(() => { - setupNewProject({ - name: "host-app", - }).then(() => { - cy.withinStudioIframe(() => { - configureProjectAppHost("plasmic-host-style-sections"); - }); - }); - }); - - afterEach(() => { - removeCurrentProject(); - }); - - function assertSectionsCount(count: number) { - cy.get(".tab-content .SidebarSection__Container").should( - "have.length", - count - ); - } - - function assertMissingClassWarning({ - componentName, - codeComponentName, - exists, - }: { - componentName?: string; - codeComponentName?: string; - exists: boolean; - }) { - const clause = exists ? "include.text" : "not.include.text"; - const sideBarSectionsContainer = cy.get( - ".tab-content .SidebarSection__Container" - ); - sideBarSectionsContainer.should(clause, "Not able to style code component"); - sideBarSectionsContainer.should( - clause, - `Component ${componentName ?? codeComponentName} does not support styling` - ); - if ( - codeComponentName && - componentName && - codeComponentName !== componentName - ) { - sideBarSectionsContainer.should( - clause, - `It looks like the root code component ${codeComponentName} does not make use of a "className" prop, so you cannot set styles on the component.` - ); - } else { - sideBarSectionsContainer - .debug() - .should( - clause, - `It looks like the code component ${ - codeComponentName ?? componentName - } does not make use of a "className" prop, so you cannot set styles on the component.` - ); - } - } - - function assertNoStyleSections() { - assertSectionsCount(1); - assertMissingClassWarning({ exists: false }); - } - - function assertMissingClassNameSection({ - componentName, - codeComponentName, - }: { - componentName?: string; - codeComponentName?: string; - }) { - assertSectionsCount(2); - assertMissingClassWarning({ - componentName, - codeComponentName, - exists: true, - }); - } - - function testNoStyleSections(insertComponentName?: string) { - if (insertComponentName) { - cy.insertFromAddDrawer(insertComponentName); - } - cy.switchToDesignTab(); - assertNoStyleSections(); - } - - function testStyleSectionsNoClassName({ - componentName, - codeComponentName, - }: { - componentName?: string; - codeComponentName?: string; - }) { - cy.switchToDesignTab(); - assertMissingClassNameSection({ - componentName, - codeComponentName, - }); - } - - function testStyleSectionsWithClassName(insertComponentName?: string) { - if (insertComponentName) { - cy.insertFromAddDrawer(insertComponentName); - } - cy.switchToDesignTab(); - assertMissingClassWarning({ exists: false }); - } - - function extractComponent(extractedName: string) { - cy.extractComponentNamed(extractedName); - cy.clearNotifications(); - } - - function testSections(sections: string[], isComp: boolean) { - const baseCount = styleSectionsThatAlwaysOccurInStyleableTpl.length + 1 + 1; // +1 for name section and another +1 for positioning section - - // Count sections that translate to 2 sections (only if they're not in NeverOccurInComp when isComp is true) - const sectionsThatTranslateTo2 = sections - .filter((s) => styleSectionsThatTranslateTo2Sections.includes(s)) - .filter((s) => - !isComp ? true : !styleSectionsThatNeverOccurInComp.includes(s) - ).length; - - // Count other sections (excluding those that translate to 2 and those that always occur) - const otherCount = sections - .filter((s) => - !isComp ? true : !styleSectionsThatNeverOccurInComp.includes(s) - ) - .filter((s) => !styleSectionsThatAlwaysOccurInStyleableTpl.includes(s)) - .filter((s) => !styleSectionsThatTranslateTo2Sections.includes(s)).length; - - cy.switchToDesignTab(); - // We expect: - // - Name section (always present) - // - Spacing section (always present when styleSections is true) - // - Positioning section (always present when styleSections is true) - // - The specific section (e.g., visibility, transform, etc.) - // - For sections that translate to 2 sections, count them as 2 (but only if they're not in NeverOccurInComp when isComp is true) - assertSectionsCount(baseCount + otherCount + sectionsThatTranslateTo2 * 2); - } - - const styleSectionsThatTranslateTo2Sections = ["border"]; - - const styleSectionsThatNeverOccurInComp = [ - "typography", - "shadows", - "border", - "effects", - "background", - "overflow", - "layout", - ]; - - const styleSectionsThatMayOccurInComp = [ - "visibility", - "transform", - "transitions", - "sizing", - ]; - - const styleSectionsThatAlwaysOccurInStyleableTpl = ["spacing"]; - - const styleSections: string[] = uniq([ - ...styleSectionsThatTranslateTo2Sections, - ...styleSectionsThatNeverOccurInComp, - ...styleSectionsThatMayOccurInComp, - ...styleSectionsThatAlwaysOccurInStyleableTpl, - ]).sort(); - - it("Should work", function () { - cy.withinStudioIframe(() => { - cy.createNewPageInOwnArena("NewPage").then(() => { - testNoStyleSections("NoStyleSections"); - extractComponent("CompNoStyleSections"); - testNoStyleSections(); - extractComponent("CompCompNoStyleSections"); - testNoStyleSections(); - - cy.insertFromAddDrawer("StyleSectionsNoClassName"); - testStyleSectionsNoClassName({ - componentName: "StyleSectionsNoClassName", - }); - extractComponent("CompStyleSectionsNoClassName"); - testStyleSectionsNoClassName({ - componentName: "CompStyleSectionsNoClassName", - codeComponentName: "StyleSectionsNoClassName", - }); - extractComponent("CompCompStyleSectionsNoClassName"); - testStyleSectionsNoClassName({ - componentName: "CompCompStyleSectionsNoClassName", - codeComponentName: "StyleSectionsNoClassName", - }); - - testStyleSectionsWithClassName("StyleSectionsWithClassName"); - extractComponent("CompStyleSectionsWithClassName"); - testStyleSectionsWithClassName(); - extractComponent("CompCompStyleSectionsWithClassName"); - testStyleSectionsWithClassName(); - - for (let i = 0; i < styleSections.length; i++) { - const singleSection = styleSections[i]; - cy.insertFromAddDrawer(`S_${singleSection}`); - testSections([singleSection], false); - extractComponent(`CompS_${singleSection}`); - testSections([singleSection], true); - extractComponent(`CompCompS_${singleSection}`); - testSections([singleSection], true); - - // for dual, only test every 3rd section to reduce test time - for (let j = i + 1; j < styleSections.length; j += 3) { - const section1 = styleSections[i]; - const section2 = styleSections[j]; - cy.insertFromAddDrawer(`D_${section1}_${section2}`); - testSections([section1, section2], false); - extractComponent(`CompD_${section1}_${section2}`); - testSections([section1, section2], true); - extractComponent(`CompCompD_${section1}_${section2}`); - testSections([section1, section2], true); - } - } - - cy.insertFromAddDrawer(`All`); - testSections(styleSections, false); - extractComponent(`CompAll`); - testSections(styleSections, true); - extractComponent(`CompCompAll`); - testSections(styleSections, true); - }); - }); - }); - it("Should not have visibility toggle if visibility style section is not enabled", function () { - cy.withinStudioIframe(() => { - cy.createNewPageInOwnArena("NewPage").then(() => { - // NOTE: You can find these code component registrations in the host-test app at platform/host-test/pages/plasmic-host-style-sections.tsx - const componentVisibilityConfig = [ - { - ccName: "NoStyleSections", - shouldHaveToggle: false, - }, - { - ccName: "S_visibility", - shouldHaveToggle: true, - }, - { - ccName: "S_background", - shouldHaveToggle: false, - }, - { - ccName: "All", - shouldHaveToggle: true, - }, - ]; - - componentVisibilityConfig.forEach(({ ccName, shouldHaveToggle }) => { - const assertionPhrase = shouldHaveToggle ? "exist" : "not.exist"; - cy.insertFromAddDrawer(ccName); - cy.renameTreeNode(ccName); - cy.getVisibilityToggle(ccName).should(assertionPhrase); - cy.extractComponentNamed(`Comp${ccName}`); - cy.getVisibilityToggle(`Comp${ccName}`).should(assertionPhrase); - cy.extractComponentNamed(`CompComp${ccName}`); - cy.getVisibilityToggle(`CompComp${ccName}`).should(assertionPhrase); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/text-slots.spec.ts b/platform/wab/cypress/e2e/text-slots.spec.ts deleted file mode 100644 index 8d2c031448..0000000000 --- a/platform/wab/cypress/e2e/text-slots.spec.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { removeCurrentProject, setupNewProject } from "../support/util"; - -describe("text-slots", function () { - beforeEach(() => { - setupNewProject({ - name: "text-slots", - }); - }); - - afterEach(() => { - removeCurrentProject(); - }); - - it("can create, override content, edit default content/styles", function () { - cy.withinStudioIframe(() => { - cy.createNewComponent("Widget").then((framed) => { - cy.focusFrameRoot(framed); - cy.insertFromAddDrawer("Text"); - - cy.createNewFrame().then((framed2) => { - cy.justLog("Zoom out."); - cy.justType("{shift}1"); - - cy.justLog("Insert two Widgets."); - cy.focusFrameRoot(framed2); - cy.wait(500); - cy.justType("{shift}A"); - cy.wait(500); - cy.insertFromAddDrawer("Widget"); - cy.renameTreeNode("widget1"); - cy.wait(500); - cy.insertFromAddDrawer("Widget"); - cy.renameTreeNode("widget2"); - - cy.justLog("Back to frame 1, convert to slot."); - cy.focusFrameRoot(framed); - cy.justType("{enter}"); - cy.convertToSlot(); - - cy.justLog("Back to frame 2."); - cy.focusFrameRoot(framed2); - - cy.justLog("Edit 1st Widget's slot."); - cy.justType("{enter}{enter}{enter}{enter}"); - framed2.enterIntoTplTextBlock("Hello"); - - cy.justLog("Override the font-size."); - cy.chooseFontSize("24px"); - - cy.justLog("Back to frame 2 root."); - cy.focusFrameRoot(framed2); - - cy.justLog("Edit 2nd Widget's slot."); - framed2 - .rootElt() - .contains("Enter some text") - .dblclick({ force: true }); - framed2.enterIntoTplTextBlock("World"); - - cy.justLog("Reset 2nd Widget's slot."); - cy.selectTreeNode(["root", "widget2", `Slot: "children"`]); - cy.clickSelectedTreeNodeContextMenu("Revert to"); - - cy.justLog("Edit the default slot contents."); - cy.focusFrameRoot(framed); - cy.justType("{enter}{enter}{enter}"); - framed.enterIntoTplTextBlock("Goodbye"); - - cy.justLog("Edit the default slot style."); - cy.chooseFont("couri"); - - cy.switchToTreeTab(); - - cy.justLog("Back to frame 2 root"); - cy.focusFrameRoot(framed2); - cy.withinLiveMode(() => { - cy.justType("{rightarrow}"); - cy.contains("Hello") - .should("have.css", "font-family", '"Courier New"') - .should("have.css", "font-size", "24px"); - cy.contains("Goodbye") - .should("have.css", "font-family", '"Courier New"') - .should("have.css", "font-size", "16px"); - }); - - const checkEndState = () => { - cy.waitAllEval(); - - framed.rebind(); - framed2.rebind(); - - cy.justLog("Check that we're selecting the slot."); - - cy.focusFrameRoot(framed); - cy.justType("{enter}"); - cy.getSelectionTag().should("contain", 'Slot Target: "children"'); - - cy.justLog("Expect Hello Goodbye."); - framed2.rootElt().contains("Hello"); - framed2.rootElt().contains("Goodbye"); - - cy.justLog("Expect font-size override on the 1st Widget's slot."); - framed2 - .rootElt() - .contains("Hello") - .should("have.css", "font-size", "24px"); - - cy.justLog("Expect Courier New on both."); - for (const msg of ["Hello", "Goodbye"]) { - framed2 - .rootElt() - .contains(msg) - .should("have.css", "font-family", '"Courier New"'); - } - - cy.checkNoErrors(); - }; - - checkEndState(); - cy.undoAndRedo(); - checkEndState(); - }); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/variants.spec.ts b/platform/wab/cypress/e2e/variants.spec.ts deleted file mode 100644 index 8c0f179482..0000000000 --- a/platform/wab/cypress/e2e/variants.spec.ts +++ /dev/null @@ -1,176 +0,0 @@ -import { - HORIZ_CONTAINER_CAP, - HORIZ_CONTAINER_LOWER, - VARIANT_GROUP_CAP, -} from "../../src/wab/shared/Labels"; -import { - createNewComponent, - removeCurrentProject, - setupNewProject, - undoAndRedo, -} from "../support/util"; - -describe("variants", function () { - beforeEach(() => { - setupNewProject({ - name: "variants", - }); - }); - - afterEach(() => { - removeCurrentProject(); - }); - - it("can CRUD interaction variants, element variants, enable multiple variants, alter content", function () { - cy.withinStudioIframe(() => { - createNewComponent("Blah").then((framed) => { - cy.focusFrameRoot(framed); - - cy.justLog("Convert to auto layout"); - cy.justType("{shift}A"); - cy.insertFromAddDrawer("Text"); - cy.justType("{enter}{enter}"); - framed.enterIntoTplTextBlock("hello"); - - cy.justLog("Add Hover interaction variant"); - cy.addInteractionVariant("Hover"); - cy.variantsTab().contains("Hover").should("be.visible"); - - cy.justLog("Override contents for interaction variant."); - cy.getSelectedElt().dblclick({ force: true }); - framed.enterIntoTplTextBlock("goodbye"); - cy.getSelectedElt().should("contain.text", "goodbye"); - cy.deselectVariant("Interaction Variants", "Hover"); - cy.addVariantGroup("Role"); - cy.addVariantToGroup("Role", "Primary"); - - cy.justLog("Add another variant"); - cy.addVariantToGroup("Role", "Secondary"); - cy.resetVariants(); - - cy.justLog("Enable multi choice."); - cy.switchToComponentDataTab(); - cy.doVariantGroupMenuCommand("Role", "Change type to"); - - cy.justLog("Check that the interaction variant contents are gone."); - cy.getSelectedElt().should("contain.text", "hello"); - - cy.justLog( - "Primary = Courier New, Secondary = 36px size, check combined CSS" - ); - cy.selectVariant("Role", "Primary"); - cy.chooseFont("Courier"); - cy.deselectVariant("Role", "Primary"); - cy.selectVariant("Role", "Secondary"); - cy.chooseFontSize("36px"); - cy.activateVariantFromGroup("Role", "Primary") - .getSelectedElt() - .should("have.css", "font-family", '"Courier New"'); - cy.getSelectedElt() - .should("have.css", "font-size", "36px") - .resetVariants(); - - cy.justLog( - `Test variant combo: - Size=small is 10px, - Size=small AND Role=Primary is 11p` - ); - cy.addVariantGroup("Size"); - cy.addVariantToGroup("Size", "small"); - cy.addVariantToGroup("Size", "large"); - cy.resetVariants(); - - cy.selectVariant("Size", "small"); - cy.chooseFontSize("10px"); - cy.getSelectedElt().should("have.css", "font-size", "10px"); - - cy.selectVariant("Role", "Primary"); - cy.chooseFontSize("11px"); - cy.getSelectedElt().should("have.css", "font-size", "11px"); - - cy.resetVariants(); - cy.activateVariantFromGroup("Size", "small"); - cy.getSelectedElt().should("have.css", "font-size", "10px"); - - cy.activateVariantFromGroup("Role", "Primary"); - cy.getSelectedElt().should("have.css", "font-size", "11px"); - - cy.resetVariants(); - - // TODO: test style inheritance tooltips - cy.selectVariant("Role", "Secondary"); - cy.activateVariantFromGroup("Role", "Primary"); - - cy.justLog("Add another element, should be conditionally shown."); - framed.rootElt().click({ force: true }); - cy.insertFromAddDrawer(HORIZ_CONTAINER_CAP); - - framed.rootElt().contains(HORIZ_CONTAINER_LOWER).click({ force: true }); - cy.insertFromAddDrawer("More HTML elements", "More HTML elements"); - cy.insertFromAddDrawer("Unstyled text input", " { - cy.get("input").should( - "have.attr", - "placeholder", - "Some placeholder" - ); - cy.contains("hello") - .should("have.css", "font-family", '"Courier New"') - .should("have.css", "font-size", "36px"); - }); - - // Sadly, couldn't find a way to get computed placeholder style. You can - // try getComputedStyle($selectedElt[0], "::placeholder").fontSize, but - // that just returns the input's font size setting. See - // https://codepen.io/yaaang/pen/JjGyVGJ for a dissection. - - cy.justLog("Delete element variants."); - cy.doVariantMenuCommand(true, "Placeholder", "Delete"); - - cy.justLog("Hide hello from Secondary, check that it's still there."); - framed.rootElt().contains("hello").click({ force: true }); - cy.justType("{del}"); - cy.contains("Delete instead").should("be.visible"); - cy.variantsTab().contains("Primary").click(); - framed.rootElt().contains("hello").should("exist"); - - cy.justLog("Really delete hello."); - cy.justType("{cmd}z"); - cy.justType("{cmd}z"); - framed.rootElt().contains("hello").click({ force: true }); - cy.justType("{del}"); - cy.contains("Delete instead").click(); - cy.variantsTab().contains("Primary").click(); - framed.rootElt().contains("hello").should("not.exist"); - - cy.justLog(`Delete ${VARIANT_GROUP_CAP}.`); - cy.doVariantGroupMenuCommand("Role", "Delete"); - - cy.justLog("Delete interaction variant."); - cy.doVariantMenuCommand(false, "Hover", "Delete"); - - function checkEndState() { - cy.variantsTab().contains("Hover").should("not.exist"); - cy.variantsTab().contains("Role").should("not.exist"); - cy.variantsTab().contains("Primary").should("not.exist"); - cy.variantsTab().contains("Secondary").should("not.exist"); - cy.checkNoErrors(); - } - - checkEndState(); - undoAndRedo(); - checkEndState(); - }); - }); - }); -}); diff --git a/platform/wab/cypress/e2e/virtual-slots.spec.ts b/platform/wab/cypress/e2e/virtual-slots.spec.ts deleted file mode 100644 index 92ee85d036..0000000000 --- a/platform/wab/cypress/e2e/virtual-slots.spec.ts +++ /dev/null @@ -1,247 +0,0 @@ -import { - HORIZ_CONTAINER_CAP, - VERT_CONTAINER_CAP, -} from "../../src/wab/shared/Labels"; -import { - createNewComponent, - deselect, - Framed, - removeCurrentProject, - setupNewProject, -} from "../support/util"; - -describe("virtual-slots", () => { - beforeEach(() => { - setupNewProject({ - name: "virtual-slots", - }); - }); - - afterEach(() => { - removeCurrentProject(); - }); - - it("can work with virtual slots properly", () => { - cy.withinStudioIframe(() => { - cy.justLog("collapse arenas panel for more space for the tree panel"); - createNewComponent("MyButton").then((framed) => { - cy.justLog("focus on root"); - cy.justType("{enter}"); - cy.insertFromAddDrawer("Text"); - cy.justType("{enter}"); - framed.enterIntoTplTextBlock("Button"); - cy.convertToSlot(); - }); - deselect(); - createNewComponent("MyPanel").then((framed) => { - cy.justType("{enter}"); - cy.insertFromAddDrawer(HORIZ_CONTAINER_CAP); - cy.renameTreeNode("hstack"); - - cy.insertFromAddDrawer("MyButton"); - cy.renameTreeNode("button1"); - - cy.justLog("select the prop; should be default"); - cy.selectTreeNode(["root", "hstack", "button1", `Slot: "children"`]); - cy.checkSelectedPropNodeAs("default"); - - cy.justLog("Insert another button"); - cy.selectTreeNode(["root", "hstack"]); - cy.insertFromAddDrawer("MyButton"); - cy.renameTreeNode("button2"); - - cy.justLog("Set the text of the second MyButton"); - cy.selectTreeNode([ - "root", - "hstack", - "button2", - `Slot: "children"`, - "Button", - ]); - cy.justType("{enter}"); - framed.enterIntoTplTextBlock("Weird"); - framed.rootElt().contains("Weird").should("exist"); - - cy.justLog("Select the prop; should be forked"); - cy.selectTreeNode(["root", "hstack", "button2", `Slot: "children"`]); - cy.checkSelectedPropNodeAs("forked"); - - cy.justLog("Revert content"); - cy.clickSelectedTreeNodeContextMenu("Revert to"); - framed.rootElt().contains("Weird").should("not.exist"); - cy.checkSelectedPropNodeAs("default"); - - cy.justLog("Customize it again"); - cy.selectTreeNode([ - "root", - "hstack", - "button2", - `Slot: "children"`, - "Button", - ]); - cy.justType("{enter}"); - framed.enterIntoTplTextBlock("Weird"); - framed.rootElt().contains("Weird").should("exist"); - - cy.justLog("Select the horizontal container, and convert to a slot"); - cy.selectTreeNode(["root", "hstack"]); - cy.clickSelectedTreeNodeContextMenu("Convert to a slot"); - - cy.justLog( - "Check that the button slot default-ness are still holding up" - ); - cy.selectTreeNode([ - "root", - "hstack", - "Slot Target", - "button1", - `Slot: "children"`, - ]); - cy.checkSelectedPropNodeAs("default"); - - cy.justLog("Navigate to the second prop"); - cy.selectTreeNode([ - "root", - "hstack", - "Slot Target", - "button2", - `Slot: "children"`, - ]); - cy.checkSelectedPropNodeAs("forked"); - - cy.justLog("Go back up to the root"); - cy.selectTreeNode(["root"]); - - cy.justLog("Add another button outside of the slot"); - cy.insertFromAddDrawer(VERT_CONTAINER_CAP); - cy.renameTreeNode("vstack"); - cy.insertFromAddDrawer("MyButton"); - cy.renameTreeNode("button3"); - - cy.justLog("Drag button 3 into the slot as default content"); - cy.dragTreeNode( - ["root", "vstack", "button3"], - ["root", "hstack", "Slot Target"] - ); - - cy.justLog("Check default-ness of each button slot still holding up"); - cy.selectTreeNode([ - "root", - "hstack", - "Slot Target", - "button1", - `Slot: "children"`, - ]); - cy.checkSelectedPropNodeAs("default"); - - cy.selectTreeNode([ - "root", - "hstack", - "Slot Target", - "button2", - `Slot: "children"`, - ]); - cy.checkSelectedPropNodeAs("forked"); - - cy.selectTreeNode([ - "root", - "hstack", - "Slot Target", - "button3", - `Slot: "children"`, - ]); - cy.checkSelectedPropNodeAs("default"); - - cy.justLog("Drag it back out; Button slot should still be default"); - cy.dragTreeNode( - ["root", "hstack", "Slot Target", "button3"], - ["root", "vstack"] - ); - cy.selectTreeNode(["root", "vstack", "button3", "Slot"]); - cy.checkSelectedPropNodeAs("default"); - }); - cy.deselect(); - - cy.justLog("Create a new frame..."); - cy.createNewFrame().then((framed: Framed) => { - cy.justLog("Drag in a panel"); - cy.dragGalleryItemRelativeToElt("MyPanel", framed.getFrame(), 10, 10); - cy.renameTreeNode("panel1"); - - cy.justLog("Panel's prop should be default"); - cy.selectTreeNode(["panel1", "Slot"]); - cy.checkSelectedPropNodeAs("default"); - - cy.justLog("button1 prop should be default"); - cy.selectTreeNode(["panel1", "Slot", "button1", "Slot"]); - cy.checkSelectedPropNodeAs("default"); - - cy.justLog("button2 prop should be forked"); - cy.selectTreeNode(["panel1", "Slot", "button2", "Slot"]); - cy.checkSelectedPropNodeAs("forked"); - - cy.justLog( - "If I unfork button2's prop, I would be forking panel's prop" - ); - cy.clickSelectedTreeNodeContextMenu("Revert to"); - cy.checkSelectedPropNodeAs("default"); - - cy.selectTreeNode(["panel1", "Slot"]); - cy.checkSelectedPropNodeAs("forked"); - - cy.justLog("Revert panel1 prop"); - cy.clickSelectedTreeNodeContextMenu("Revert to"); - cy.checkSelectedPropNodeAs("default"); - - cy.justLog("Update button1 prop"); - cy.selectTreeNode(["panel1", "Slot", "button1", "Slot", "Button"]); - cy.justType("{enter}"); - framed.enterIntoTplTextBlock("Howdy"); - cy.selectTreeNode(["panel1", "Slot", "button1", "Slot"]); - cy.checkSelectedPropNodeAs("forked"); - framed.rootElt().contains("Howdy").should("exist"); - - cy.justLog("Revert panel1 prop"); - cy.selectTreeNode(["panel1", "Slot"]); - cy.clickSelectedTreeNodeContextMenu("Revert to"); - cy.checkSelectedPropNodeAs("default"); - framed.rootElt().contains("Howdy").should("not.exist"); - - cy.justLog("Add a new button to panel1 prop"); - cy.insertFromAddDrawer("MyButton"); - cy.renameTreeNode("button4"); - cy.selectTreeNode(["panel1", "Slot", "button4", "Slot", "Button"]); - cy.justType("{enter}"); - framed.enterIntoTplTextBlock("OMG"); - - cy.justLog("panel1 prop is forked again, but all else okay"); - cy.selectTreeNode(["panel1", "Slot"]); - cy.checkSelectedPropNodeAs("forked"); - cy.selectTreeNode(["panel1", "Slot", "button1", "Slot"]); - cy.checkSelectedPropNodeAs("default"); - cy.selectTreeNode(["panel1", "Slot", "button2", "Slot"]); - cy.checkSelectedPropNodeAs("forked"); - cy.selectTreeNode(["panel1", "Slot", "button4", "Slot"]); - cy.checkSelectedPropNodeAs("forked"); - }); - - cy.withinLiveMode(() => { - cy.contains("Weird").should("exist"); - cy.contains("Howdy").should("not.exist"); - cy.contains("OMG").should("exist"); - }); - - const checkEndState = () => { - cy.waitAllEval(); - cy.getFramedByName("artboard").then((framed: Framed) => { - framed.rootElt().contains("OMG").should("exist"); - }); - cy.checkNoErrors(); - }; - - checkEndState(); - cy.undoAndRedo(); - checkEndState(); - }); - }); -}); diff --git a/platform/wab/cypress/fixtures/example.json b/platform/wab/cypress/fixtures/example.json deleted file mode 100644 index 02e4254378..0000000000 --- a/platform/wab/cypress/fixtures/example.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "Using fixtures to represent data", - "email": "hello@cypress.io", - "body": "Fixtures are a great way to mock data for responses to routes" -} diff --git a/platform/wab/cypress/fixtures/images/sanity-io/1.jpeg b/platform/wab/cypress/fixtures/images/sanity-io/1.jpeg deleted file mode 100644 index 48e451f766..0000000000 Binary files a/platform/wab/cypress/fixtures/images/sanity-io/1.jpeg and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/sanity-io/10.jpeg b/platform/wab/cypress/fixtures/images/sanity-io/10.jpeg deleted file mode 100644 index 90724df132..0000000000 Binary files a/platform/wab/cypress/fixtures/images/sanity-io/10.jpeg and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/sanity-io/11.jpeg b/platform/wab/cypress/fixtures/images/sanity-io/11.jpeg deleted file mode 100644 index d2be3c9eda..0000000000 Binary files a/platform/wab/cypress/fixtures/images/sanity-io/11.jpeg and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/sanity-io/12.jpeg b/platform/wab/cypress/fixtures/images/sanity-io/12.jpeg deleted file mode 100644 index ead4706570..0000000000 Binary files a/platform/wab/cypress/fixtures/images/sanity-io/12.jpeg and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/sanity-io/13.jpeg b/platform/wab/cypress/fixtures/images/sanity-io/13.jpeg deleted file mode 100644 index 322b133d1a..0000000000 Binary files a/platform/wab/cypress/fixtures/images/sanity-io/13.jpeg and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/sanity-io/14.jpeg b/platform/wab/cypress/fixtures/images/sanity-io/14.jpeg deleted file mode 100644 index 031d047f00..0000000000 Binary files a/platform/wab/cypress/fixtures/images/sanity-io/14.jpeg and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/sanity-io/2.jpeg b/platform/wab/cypress/fixtures/images/sanity-io/2.jpeg deleted file mode 100644 index 83e570040e..0000000000 Binary files a/platform/wab/cypress/fixtures/images/sanity-io/2.jpeg and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/sanity-io/3.jpeg b/platform/wab/cypress/fixtures/images/sanity-io/3.jpeg deleted file mode 100644 index 7061786252..0000000000 Binary files a/platform/wab/cypress/fixtures/images/sanity-io/3.jpeg and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/sanity-io/4.jpeg b/platform/wab/cypress/fixtures/images/sanity-io/4.jpeg deleted file mode 100644 index b090ef4e11..0000000000 Binary files a/platform/wab/cypress/fixtures/images/sanity-io/4.jpeg and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/sanity-io/5.jpeg b/platform/wab/cypress/fixtures/images/sanity-io/5.jpeg deleted file mode 100644 index 20e93e7a30..0000000000 Binary files a/platform/wab/cypress/fixtures/images/sanity-io/5.jpeg and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/sanity-io/6.jpeg b/platform/wab/cypress/fixtures/images/sanity-io/6.jpeg deleted file mode 100644 index df9db84df8..0000000000 Binary files a/platform/wab/cypress/fixtures/images/sanity-io/6.jpeg and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/sanity-io/7.jpeg b/platform/wab/cypress/fixtures/images/sanity-io/7.jpeg deleted file mode 100644 index e405a7971e..0000000000 Binary files a/platform/wab/cypress/fixtures/images/sanity-io/7.jpeg and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/sanity-io/8.jpeg b/platform/wab/cypress/fixtures/images/sanity-io/8.jpeg deleted file mode 100644 index aeace38947..0000000000 Binary files a/platform/wab/cypress/fixtures/images/sanity-io/8.jpeg and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/sanity-io/9.jpeg b/platform/wab/cypress/fixtures/images/sanity-io/9.jpeg deleted file mode 100644 index c89cc76866..0000000000 Binary files a/platform/wab/cypress/fixtures/images/sanity-io/9.jpeg and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/strapi/Big_Smoke_Burger_logo_svg.png b/platform/wab/cypress/fixtures/images/strapi/Big_Smoke_Burger_logo_svg.png deleted file mode 100644 index de8ee620b6..0000000000 Binary files a/platform/wab/cypress/fixtures/images/strapi/Big_Smoke_Burger_logo_svg.png and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/strapi/Bonchon_Logo.png b/platform/wab/cypress/fixtures/images/strapi/Bonchon_Logo.png deleted file mode 100644 index e7c55ddfa8..0000000000 Binary files a/platform/wab/cypress/fixtures/images/strapi/Bonchon_Logo.png and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/strapi/Buffalo_Wild_Wings_logo_vertical_svg.png b/platform/wab/cypress/fixtures/images/strapi/Buffalo_Wild_Wings_logo_vertical_svg.png deleted file mode 100644 index dfdb08f772..0000000000 Binary files a/platform/wab/cypress/fixtures/images/strapi/Buffalo_Wild_Wings_logo_vertical_svg.png and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/strapi/Burger_King_2020_svg.png b/platform/wab/cypress/fixtures/images/strapi/Burger_King_2020_svg.png deleted file mode 100644 index 134648d804..0000000000 Binary files a/platform/wab/cypress/fixtures/images/strapi/Burger_King_2020_svg.png and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/strapi/Cafe_Coffee_Day_logo.png b/platform/wab/cypress/fixtures/images/strapi/Cafe_Coffee_Day_logo.png deleted file mode 100644 index ce6e400d21..0000000000 Binary files a/platform/wab/cypress/fixtures/images/strapi/Cafe_Coffee_Day_logo.png and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/strapi/Chili_s_Logo_svg.png b/platform/wab/cypress/fixtures/images/strapi/Chili_s_Logo_svg.png deleted file mode 100644 index a5785a77e1..0000000000 Binary files a/platform/wab/cypress/fixtures/images/strapi/Chili_s_Logo_svg.png and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/strapi/Chipotle_Mexican_Grill_logo_svg.png b/platform/wab/cypress/fixtures/images/strapi/Chipotle_Mexican_Grill_logo_svg.png deleted file mode 100644 index dfbaff2734..0000000000 Binary files a/platform/wab/cypress/fixtures/images/strapi/Chipotle_Mexican_Grill_logo_svg.png and /dev/null differ diff --git a/platform/wab/cypress/fixtures/images/strapi/strapi-image-fixtures.ts b/platform/wab/cypress/fixtures/images/strapi/strapi-image-fixtures.ts deleted file mode 100644 index 158a2c377c..0000000000 --- a/platform/wab/cypress/fixtures/images/strapi/strapi-image-fixtures.ts +++ /dev/null @@ -1,32 +0,0 @@ -const strapiImageFixtures = [ - { - url: "https://res.cloudinary.com/tubone-plasmic/image/upload/v1650939343/Cafe_Coffee_Day_logo_338419f75a.png", - file: "Cafe_Coffee_Day_logo.png", - }, - { - url: "https://res.cloudinary.com/tubone-plasmic/image/upload/v1650939343/Chili_s_Logo_svg_9b74d95e58.png", - file: "Chili_s_Logo_svg.png", - }, - { - url: "https://res.cloudinary.com/tubone-plasmic/image/upload/v1650939343/Chipotle_Mexican_Grill_logo_svg_53d34599eb.png", - file: "Chipotle_Mexican_Grill_logo_svg.png", - }, - { - url: "https://res.cloudinary.com/tubone-plasmic/image/upload/v1650939374/Big_Smoke_Burger_logo_svg_e3ca76d953.png", - file: "Big_Smoke_Burger_logo_svg.png", - }, - { - url: "https://res.cloudinary.com/tubone-plasmic/image/upload/v1650939343/Burger_King_2020_svg_ac8ab9c5f1.png", - file: "Burger_King_2020_svg.png", - }, - { - url: "https://res.cloudinary.com/tubone-plasmic/image/upload/v1650939343/Bonchon_Logo_7f7f16bce2.png", - file: "Bonchon_Logo.png", - }, - { - url: "https://res.cloudinary.com/tubone-plasmic/image/upload/v1650939343/Buffalo_Wild_Wings_logo_vertical_svg_cc56dc61aa.png", - file: "Buffalo_Wild_Wings_logo_vertical_svg.png", - }, -]; - -export default strapiImageFixtures; diff --git a/platform/wab/cypress/json.d.ts b/platform/wab/cypress/json.d.ts deleted file mode 100644 index f3f5966418..0000000000 --- a/platform/wab/cypress/json.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.json" { - const value: any; - export default value; -} diff --git a/platform/wab/cypress/plugins/index.ts b/platform/wab/cypress/plugins/index.ts deleted file mode 100644 index d4a756dbce..0000000000 --- a/platform/wab/cypress/plugins/index.ts +++ /dev/null @@ -1,100 +0,0 @@ -// *********************************************************** -// This example plugins/index.js can be used to load plugins -// -// You can change the location of this file or turn off loading -// the plugins file with the 'pluginsFile' configuration option. -// -// You can read more here: -// https://on.cypress.io/plugins-guide -// *********************************************************** - -// This function is called when a project is opened or re-opened (e.g. due to -// the project's config changing) - -process.env.NODE_ENV = "test"; - -const initCypressMousePositionPlugin = require("cypress-mouse-position/plugin"); -require("cypress-log-to-output"); - -const webpack = require("webpack"); -const wp = require("@cypress/webpack-preprocessor"); -const fs = require("fs"); -const path = require("path"); - -const fetchPolyfill = fs - .readFileSync(require.resolve("whatwg-fetch")) - .toString(); -const options = wp.defaultOptions; -options.webpackOptions.resolve = { - extensions: [".ts", ".js"], - alias: { - "@": path.resolve(__dirname, "../../src"), - lodash: "lodash-es", - http: "stream-http", - https: "https-browserify", - os: "os-browserify", - path: "path-browserify", - stream: "stream-browserify", - zlib: "browserify-zlib", - }, -}; -options.webpackOptions.module.rules.push({ - test: /\.tsx?$/, - use: [ - { - loader: "@sucrase/webpack-loader", - options: { - transforms: ["jsx", "typescript"], - }, - }, - ], -}); -options.webpackOptions.plugins = [ - new webpack.ProvidePlugin({ - process: "process/browser.js", - Buffer: ["buffer", "Buffer"], - }), - ...(options.webpackOptions.plugins ?? []), -]; - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -module.exports = (on, config) => { - // Workaround to set the total window size for Cypress in headless mode or - // else videos are tiny: - // - // https://github.com/cypress-io/cypress/issues/6210 - on("before:browser:launch", (browser, launchOptions) => { - // This will log console output to jenkins logs. This produces a TON - // of output and so is disabled by default. But if you're out of ideas, - // try it out. - // launchOptions.args = require("cypress-log-to-output").browserLaunchHandler( - // browser, - // launchOptions.args - // ); - if (browser.name === "chrome" && browser.isHeadless) { - launchOptions.args.push("--window-size=1280,720"); - } - return launchOptions; - }); - - initCypressMousePositionPlugin(on); - - // Can turn this on to pipe console.log to output. Turning off by - // default to reduce output (it is very verbose!), but it helps with - // debugging e2e tests that fail only on CI. - // - // Note also that this conflicts with the window sizing workaround above! - // Only one is activated (whichever one comes last). - // - // logToOutputPlugin.install(on); - - // `on` is used to hook into various events Cypress emits - // `config` is the resolved Cypress config - on("file:preprocessor", wp(options)); - - on("task", { - getFetchPolyfill() { - return fetchPolyfill; - }, - }); -}; diff --git a/platform/wab/cypress/support/commands.ts b/platform/wab/cypress/support/commands.ts deleted file mode 100644 index b18aeb0456..0000000000 --- a/platform/wab/cypress/support/commands.ts +++ /dev/null @@ -1,163 +0,0 @@ -import "cypress-real-events"; -import * as utils from "../support/util"; -import { cyRequestDefaultOptions } from "../support/util"; -import Chainable = Cypress.Chainable; - -// *********************************************** -// This example commands.js shows you how to -// create various custom commands and overwrite -// existing commands. -// -// For more comprehensive examples of custom -// commands please read more here: -// https://on.cypress.io/custom-commands -// *********************************************** -// -// -// -- This is a parent command -- -// Cypress.Commands.add("login", (email, password) => { ... }) -// -// -// -- This is a child command -- -// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... }) -// -// -// -- This is a dual command -- -// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... }) -// -// -// -- This will overwrite an existing command -- -// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) - -type Utils = typeof utils; - -type ChainableUtils = { - [k in keyof Utils]: Utils[k] extends (...args: any[]) => any - ? (...args: Parameters) => Chainable - : Utils[k]; -}; - -declare global { - namespace Cypress { - // eslint-disable-next-line no-shadow - interface Chainable extends ChainableUtils { - focusCreatedFrameRoot(): Chainable; - selection(fn: ($el: Cypress.ObjectLike) => void): Chainable; - setSelection(query: string | Selection): Chainable; - } - } -} - -Cypress.Commands.overwrite("request", (originalFn, ...args) => { - let options: Partial = {}; - if (typeof args[0] === "object") { - options = Object.assign({}, args[0]); - } else if (args.length === 1) { - [options.url] = args; - } else if (args.length === 2) { - [options.method, options.url] = args; - } else if (args.length === 3) { - [options.method, options.url, options.body] = args; - } - return originalFn(Object.assign({}, cyRequestDefaultOptions, options)); -}); - -/** - * Just adding support for the {mod modifier for cross-platform testing. - */ -Cypress.Commands.overwrite("type", (originalFn, subject, string, options) => - originalFn( - subject, - string.replace(/{mod/g, Cypress.platform === "darwin" ? "{cmd" : "{ctrl"), - options - ) -); - -Object.entries(utils).forEach(([name, fn]) => - Cypress.Commands.add(name, (...args: any[]) => { - Cypress.log({ name: `🌈 ${name}` }); - return (fn as Function).apply(null, args); - }) -); - -Cypress.Commands.add( - "focusCreatedFrameRoot", - { prevSubject: true }, - (subject: utils.Framed) => { - utils.focusFrameRoot(subject); - return cy.wrap(subject); - } -); - -// The text selection commands for Cypress below are based in: -// - https://gist.github.com/erquhart/37bf2d938ab594058e0572ed17d3837a -// - https://github.com/netlify/netlify-cms/blob/a4b7481a99f58b9abe85ab5712d27593cde20096/cypress/support/commands.js#L180 -Cypress.Commands.add("selection", { prevSubject: true }, (subject, fn) => { - cy.wrap(subject).trigger("mousedown").then(fn).trigger("mouseup"); - cy.document().trigger("selectionchange"); - return cy.wrap(subject); -}); -Cypress.Commands.add( - "setSelection", - { prevSubject: true }, - (subject, query, endQuery) => { - return cy.wrap(subject).selection(($el) => { - if (typeof query === "string") { - const anchorNode = getTextNode($el[0], query); - const focusNode = endQuery ? getTextNode($el[0], endQuery) : anchorNode; - const anchorOffset = (anchorNode as any).wholeText.indexOf(query); - const focusOffset = endQuery - ? (focusNode as any).wholeText.indexOf(endQuery) + endQuery.length - : anchorOffset + query.length; - setBaseAndExtent(anchorNode, anchorOffset, focusNode, focusOffset); - } else if (typeof query === "object") { - const el = $el[0]; - const anchorNode = getTextNode(el.querySelector(query.anchorQuery)); - const anchorOffset = query.anchorOffset || 0; - const focusNode = query.focusQuery - ? getTextNode(el.querySelector(query.focusQuery)) - : anchorNode; - const focusOffset = query.focusOffset || 0; - setBaseAndExtent(anchorNode, anchorOffset, focusNode, focusOffset); - } - }); - } -); - -function getTextNode(el: Node, match?: string) { - const walk = document.createTreeWalker(el, NodeFilter.SHOW_TEXT, null); - if (!match) { - return walk.nextNode(); - } - - let node; - while ((node = walk.nextNode())) { - if ((node as any).wholeText.includes(match)) { - return node; - } - } -} - -function setBaseAndExtent(...args: any[]) { - const document = args[0].ownerDocument; - document.getSelection().removeAllRanges(); - document.getSelection().setBaseAndExtent(...args); -} - -Cypress.Commands.add( - "paste", - { prevSubject: true }, - (selector, pastePayload) => { - // https://developer.mozilla.org/en-US/docs/Web/API/Element/paste_event - cy.wrap(selector).then(($destination) => { - const dataTransfer = new DataTransfer(); - dataTransfer.setData("text/plain", pastePayload); - const pasteEvent = new ClipboardEvent("paste", { - bubbles: true, - cancelable: true, - clipboardData: dataTransfer, - }); - $destination[0].dispatchEvent(pasteEvent); - }); - } -); diff --git a/platform/wab/cypress/support/e2e.ts b/platform/wab/cypress/support/e2e.ts deleted file mode 100644 index 6b8b82b8e1..0000000000 --- a/platform/wab/cypress/support/e2e.ts +++ /dev/null @@ -1,20 +0,0 @@ -// *********************************************************** -// This example support/index.ts is processed and -// loaded automatically before your test files. -// -// This is a great place to put global configuration and -// behavior that modifies Cypress. -// -// You can change the location of this file or turn off -// automatically serving support files with the -// 'supportFile' configuration option. -// -// You can read more here: -// https://on.cypress.io/configuration -// *********************************************************** - -// Import commands.js using ES2015 syntax: -import "./commands"; - -// Alternatively you can use CommonJS syntax: -// require('./commands') diff --git a/platform/wab/cypress/support/util.ts b/platform/wab/cypress/support/util.ts deleted file mode 100644 index eb7fd09c74..0000000000 --- a/platform/wab/cypress/support/util.ts +++ /dev/null @@ -1,3180 +0,0 @@ -/* eslint-disable no-restricted-syntax */ -/* - * Note about this module: we should use Cypress's custom commands when possible. - */ -import * as _ from "lodash"; -import * as platform from "platform"; -import { ACTIONS_META } from "../../src/wab/client/state-management/interactions-meta"; -import { StudioCtx } from "../../src/wab/client/studio-ctx/StudioCtx"; -import { ViewCtx } from "../../src/wab/client/studio-ctx/view-ctx"; -import { testIds } from "../../src/wab/client/test-helpers/test-ids"; -import { - updateVariableOperations, - updateVariantOperations, -} from "../../src/wab/client/test-helpers/test-state-management"; -import type { - ApiDataSource, - ApiUpdateDataSourceRequest, - CreateProjectRequest, - SetSiteInfoReq, -} from "../../src/wab/shared/ApiSchema"; -import { - ensureArray, - ensureType, - mkShortId, - spawnWrapper, - unexpected, - withoutNils, -} from "../../src/wab/shared/common"; -import { - StateAccessType, - StateVariableType, -} from "../../src/wab/shared/core/states"; -import { DevFlagsType } from "../../src/wab/shared/devflags"; -import { HostLessPackageInfo, State } from "../../src/wab/shared/model/classes"; -import bundles from "../bundles"; - -// Attention: we ban cy.window, cy.document, cy.focused, Cypress.$. -// -// Also, do not use globals, at least in this module! See __plasmicTestGlobals -// below. - -function assert(cond: T): asserts cond { - if (!cond) { - debugger; - throw new Error("Assertion failed"); - } -} - -export function ensure(x: T | null | undefined): T { - if (x === null || x === undefined) { - throw new Error(`Value must not be undefined or null.`); - } else { - return x; - } -} - -const PLATFORM = getPlatformName(); - -// Avoid module globals, since this is going to manifest in two separate -// variables across the support and integration modules produced by Cypress: -// -// https://github.com/cypress-io/cypress/issues/6966 -// -// Just set everything on the window. Interestingly, that's exactly the official -// solution proposed above. -declare global { - interface Window { - __plasmicTestGlobals?: { - _curWindow?: Window; - _curDocument?: Document; - }; - } -} -const globals = (window.__plasmicTestGlobals = - window.__plasmicTestGlobals || {}); - -export function curWindow() { - return globals._curWindow ? cy.wrap(globals._curWindow) : cy.window(); -} - -export function curDocument() { - // Simply cy.wrap(_curDocument) results in Chainable> rather than Chainable! - return globals._curDocument - ? cy.wrap(null).then(() => ensure(globals._curDocument)) - : cy.document(); -} - -export function curFocused() { - return cy.curDocument().then((doc) => doc.activeElement); -} - -export function blurFocused() { - return cy.curDocument().then((doc) => doc.activeElement.blur()); -} - -export function curBody() { - return cy.curDocument().then((doc) => doc.body); -} - -export function withinTopFrame(func: () => void) { - return cy - .curWindow() - .then((win: Window) => - cy.wrap(win.parent.parent.document.body).within(() => func()) - ); -} - -export function waitStudioLoaded() { - return cy.get(".canvas-editor__scaler", { timeout: 120000 }); -} - -export function withinStudioIframe( - func: () => void, - opts?: { noWaitStudioLoaded?: boolean } -) { - return ( - cy - // Beware: Stripe injects iframes into the document. - // Make sure you grab the right one - .get("iframe.studio-frame", { timeout: 120000 }) - .should(($iframe) => expect($iframe.contents().find("iframe")).to.exist) - .then({ timeout: 120000 }, ($iframe) => - cy.wrap($iframe.contents().find("iframe")) - ) - .should( - ($iframe) => - // We need to check in a single `should` that the body loaded. For more, - // see - // https://www.cypress.io/blog/2020/02/12/working-with-iframes-in-cypress/. - expect($iframe.contents().find("body")).to.exist - ) - .then({ timeout: 120000 }, ($iframe) => { - const iframe = $iframe[0] as HTMLIFrameElement; - const _origWindow = globals._curWindow; - const _origDocument = globals._curDocument; - globals._curWindow = ensure(iframe.contentWindow); - globals._curDocument = ensure(iframe.contentDocument); - - // We can choose to return either document or body. - // - // Our tests use to do cy.get('body'), which would fail if we didn't - // return document. - // - // However our tests also do cy.contains('...'), which would often return - // if any of the script or style tags in head contains the string. - // - // So we decide to return body, and then ban all cy.get('body'), using - // instead cy.curBody(). - return cy - .wrap($iframe.contents().find("body")) - .within(() => { - // Give the studio time to load. - if (!opts?.noWaitStudioLoaded) { - waitStudioLoaded(); - } - return func(); - }) - .then(() => { - globals._curWindow = _origWindow; - globals._curDocument = _origDocument; - }); - }) - ); -} - -export function setup(opts_?: { demoMode?: boolean }) { - // - // Log in. - // - const opts = opts_ || {}; - - cy.visit("/"); - - cy.get("input[name=email]").type("user2@example.com"); - cy.get("input[name=password]").type("!53kr3tz!"); - cy.get("button[type=submit]").click(); - - cy.contains('a[href="/projects"]', "All projects"); - - cy.contains("New project").click(); - cy.contains("Blank project").click({ waitForAnimations: false }); - withinStudioIframe(() => { - cy.contains("This custom arena is empty.", { timeout: 30000 }); - }); - - cy.url().then((url) => { - const regexp = /\/projects\/([^/?]*)/; - const projectId = url.match(regexp)![1]; - Cypress.env("projectId", projectId); - }); - if (opts.demoMode) { - cy.url().then((url) => { - cy.visit(url, { qs: { demo: "true" } }); - }); - } -} - -export function effectiveWindow() { - cy.get("*").then(($el) => { - return $el[0].ownerDocument.defaultView; - }); -} - -export function effectiveDocument() { - cy.get("*").then(($el) => $el[0].ownerDocument); -} - -export function drawRectRelativeToElt( - elt: HTMLElement, - initOffsetX: number, - initOffsetY: number, - deltaX: number, - deltaY: number -) { - return cy.wrap(null).then(() => { - const { left, top } = elt.getBoundingClientRect(); - const initX = left + initOffsetX; - const initY = top + initOffsetY; - return drawRect(initX, initY, deltaX, deltaY); - }); -} - -export function plotAt(x: number, y: number) { - cy.get(".FreestyleBox__guard") - .should("exist") - .then(($guard) => { - const guard = $guard[0]; - const rect = guard.getBoundingClientRect(); - cy.get(".FreestyleBox__guard").click(-rect.left + x, -rect.top + y, { - force: true, - }); - }); -} - -// export function plotRelativeToElt( -// elt: HTMLElement, -// offsetX: number, -// offsetY: number -// ) { -// const { left, top } = elt.getBoundingClientRect(); -// const x = left + offsetX; -// const y = top + offsetY; -// cy.plotAt(x, y); -// } - -/** - * Wait for a new artboard frame to be appear, including the "scroll into view" - * logic, and return a Framed component. - * - * Specifically, we first determine the number of artboards and the scroll - * position before, then run the "before" commands to actually trigger new - * artboard creation, then wait for the nth artboard to appear and for the - * scroll position to update, then return the Framed. - */ -export function waitForNewFrame( - before: () => void, - opts?: { skipWaitInit: boolean } -) { - waitStudioLoaded(); - return cy.get(".canvas-editor__canvas-clipper").then(() => { - return curDocument().then((doc) => { - const existingFrames = - doc.querySelectorAll( - ".canvas-editor__frames .canvas-editor__viewport[data-test-frame-uid]" - ) ?? []; - - before(); - - return cy - .wait(4000) - .get( - ".canvas-editor__frames .canvas-editor__viewport[data-test-frame-uid]" + - withoutNils( - [...existingFrames.values()].map((e) => - e.getAttribute("data-test-frame-uid") - ) - ) - .map((frameUid) => `:not([data-test-frame-uid="${frameUid}"])`) - .join(""), - { - timeout: 60000, - } - ) - .then(($frame) => { - const frame = $frame[0] as HTMLIFrameElement; - const framed = new Framed(frame); - - // Not sure why waitInit is not working for changing branches. - if (opts?.skipWaitInit) { - return framed; - } - return framed.waitInit().then(() => framed); - }); - }); - }); -} - -export function getFramedByName(name: string) { - return cy.contains(".CanvasFrame__Label", name).then(($label) => { - const $frame = $label - .parent(".CanvasFrame__Container") - .find(".canvas-editor__viewport[data-test-frame-uid]"); - assert($frame.length > 0); - return new Framed($frame[0] as HTMLIFrameElement); - }); -} - -export function getFramed() { - return cy - .curDocument() - .get(".canvas-editor__viewport[data-test-frame-uid]", { timeout: 5000 }) - .then(($frame) => { - console.log("FRAME", $frame?.[0]); - const frame = $frame[0] as HTMLIFrameElement; - const framed = new Framed(frame); - return framed.waitInit().then(() => framed); - }); -} - -export function switchArena(name: string) { - return cy.waitForNewFrame( - () => { - cy.get(`[id="proj-nav-button"]`).click({ force: true }); - cy.get(`[data-test-id="nav-dropdown-clear-search"]`).click({ - force: true, - }); - cy.get(`[data-test-id="nav-dropdown-search-input"]`).type(name); - cy.contains(name).click({ force: true }).wait(1000); - }, - { skipWaitInit: true } - ); -} - -export function createNewFrame() { - return waitForNewFrame(() => { - cy.insertFromAddDrawer(`New scratch artboard`); - }); -} - -export function createNewComponent(name: string) { - return waitForNewFrame(() => { - cy.insertFromAddDrawer(`New component`); - submitPrompt(name); - }); -} - -export function createNewPage(name: string) { - return waitForNewFrame(() => { - cy.insertFromAddDrawer(`New page`); - submitPrompt(name); - }); -} - -export function insertTextWithDynamic(code: string) { - cy.insertFromAddDrawer("Text"); - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.contains("Switch to Code").click(); - cy.resetMonacoEditorToCode(code); -} - -export function createNewPageInOwnArena( - name: string, - { template, after }: { template?: string; after?: () => void } = {} -) { - return waitForNewFrame(() => { - // Create page - cy.get("#proj-nav-button").click(); - cy.get("#nav-dropdown-plus-btn").click(); - cy.get(".ant-dropdown-menu-item").first().click(); - // Work around Cypress flaky input bug: https://github.com/cypress-io/cypress/issues/28172 - cy.get('[data-test-id="prompt"]:not([disabled])') - .should("not.be.disabled") - .clear({ force: true }) - .type(name, { force: true }); - if (template) { - cy.contains(template).click(); - } - cy.contains("Create page").click(); - - after?.(); - }); -} - -export function turnOffDesignMode() { - cy.get("#view-menu").click(); - cy.contains("Turn off design mode").click(); -} - -export function turnOffAutoOpenMode() { - cy.get("#view-menu").click(); - cy.contains("Turn off auto-open mode").click(); -} - -export function turnOnAutoOpenMode() { - cy.get("#view-menu").click(); - cy.contains("Turn on auto-open mode").click(); -} - -export function hideAutoOpen() { - cy.autoOpenBanner() - .parents(".banner-bottom") - .find("button") - .contains("Hide") - .click(); -} - -export function refreshFocusedArena() { - cy.get("#refresh-canvas-btn").click(); - cy.wait(1000); -} - -export function submitPrompt(answer: string) { - cy.get(`input[data-test-id="prompt"]`).type(answer); - cy.get(`button[data-test-id="prompt-submit"]`).click(); -} - -export function linkNewProp(propName?: string, defaultValue?: string) { - if (propName) { - cy.get(`input[data-test-id="prop-name"]`).clear().type(propName); - } - if (defaultValue) { - cy.get(`input[data-plasmic-prop="default-value"]`).type(defaultValue); - } - cy.get(`button[data-test-id="prop-submit"]`).click(); -} - -/** - * Add a component prop to the current component. - * defaultValue and previewValue only work for typeable values like "string" or "number" - */ -export function createComponentProp(opts: { - propName: string; - propType: string; - defaultValue?: string; - previewValue?: string; -}) { - cy.switchToComponentDataTab(); - cy.get(`[data-test-id="add-prop-btn"]`).click(); - cy.selectPropOption(`[data-test-id="prop-type"]`, { key: opts.propType }); - cy.get(`[data-test-id="prop-name"]`).type(opts.propName); - - if (opts.defaultValue) { - cy.get(`input[data-plasmic-prop="default-value"]`).type(opts.defaultValue); - } - - if (opts.previewValue) { - cy.get(`input[data-plasmic-prop="preview-value"]`).type(opts.previewValue); - } - - cy.get(`button[data-test-id="prop-submit"]`).click(); - cy.wait(500); -} - -export function openComponentPropModal(propName: string) { - cy.switchToComponentDataTab(); - cy.contains(propName).rightclick(); - cy.contains("Configure prop").click(); -} - -export function setComponentPropDefaultValue( - propName: string, - defaultValue: string | undefined -) { - cy.openComponentPropModal(propName); - if (defaultValue !== undefined) { - cy.get(`input[data-plasmic-prop="default-value"]`).type( - "{selectall}{backspace}" + defaultValue - ); - } else { - cy.get(`button[data-test-id="default-value-menu-btn"]`).click(); - cy.contains("Unset").click(); - } - cy.get(`button[data-test-id="prop-submit"]`).click(); - cy.wait(500); -} - -export function setComponentPropPreviewValue( - propName: string, - previewValue: string | undefined -) { - cy.openComponentPropModal(propName); - if (previewValue !== undefined) { - cy.get(`input[data-plasmic-prop="preview-value"]`).type( - "{selectall}{backspace}" + previewValue - ); - } else { - cy.get(`button[data-test-id="preview-value-menu-btn"]`).click(); - cy.contains("Unset").click(); - } - cy.get(`button[data-test-id="prop-submit"]`).click(); - cy.wait(500); -} - -export function getTokensPanel() { - return cy.get(`[data-test-id="tokens-panel-content"]`); -} - -// NOTE: Importing TokenType from wab/commons causes the cypress runner to crash -type TokenType = "Color" | "FontSize"; - -export function createToken(tokenType: TokenType, name: string, value: string) { - cy.switchToStyleTokensTab(); - cy.get(`[data-test-id="add-token-button-${tokenType}"]`).click({ - force: true, - }); - // Wait for the sidebar modal to be visible - cy.get("#sidebar-modal").should("exist"); - cy.justType(name); - cy.get( - `#sidebar-modal .panel-popup-content [data-test-id="${tokenType}-input"]` - ).type(`${value}{enter}`); - cy.closeSidebarModal(); -} - -export function changeTokensTarget(targetName: string) { - cy.get(`[data-test-id="global-variant-select"]`).click(); - cy.get(`[data-plasmic-role="overlay"]`).contains(targetName).click(); -} - -export function updateToken( - tokenType: TokenType, - tokenName: string, - value: string, - opts: { - globalVariant?: string; - override?: boolean; - } = {} -) { - cy.switchToStyleTokensTab(); - cy.expandAllTokensPanel(); - const tokenRow = cy.getTokensPanel().contains(tokenName).eq(0); - cy.changeTokensTarget(opts.globalVariant ?? "Base"); - if (opts.override) { - tokenRow.rightclick(); - cy.get(`[role="menuitem"]`).contains("Override").click(); - } else { - tokenRow.click(); - } - cy.get("#sidebar-modal").should("exist"); - if (opts.override) { - // Assert that the token name cannot be changed - cy.get(".panel-popup-title input[readonly]").should("exist"); - } - cy.get( - `#sidebar-modal .panel-popup-content [data-test-id="${tokenType}-input"]` - ).type(`${value}{enter}`); - - cy.closeSidebarModal(); -} - -export function getStudioModal() { - return cy.get(".ant-modal-content"); -} - -export function deleteToken(tokenName: string) { - cy.switchToStyleTokensTab(); - cy.expandAllTokensPanel(); - cy.getTokensPanel().contains(tokenName).eq(0).rightclick(); - cy.get(`[role="menuitem"]`).contains("Delete").click(); - cy.wait(200); - cy.getStudioModal().find("button[type=submit]").click(); -} - -export function removeTokenOverride( - tokenName: string, - opts: { globalVariant?: string } = {} -) { - cy.switchToStyleTokensTab(); - cy.expandAllTokensPanel(); - cy.changeTokensTarget(opts.globalVariant ?? "Base"); - cy.getTokensPanel().contains(tokenName).eq(0).rightclick(); - cy.get(`[role="menuitem"]`).contains("Remove").click(); -} - -export function assertTokenIndicator( - tokenName: string, - indicator: - | "local" - | "local-varianted" - | "override-base" - | "override-varianted" - | "override-both" - | "override-none", - baseVariantName: "Base", - globalVariantName?: string -) { - function getElement() { - return cy - .getTokensPanel() - .contains(tokenName) - .eq(0) - .parents("li") - .find("[class*=DefinedIndicator]"); - } - - cy.switchToStyleTokensTab(); - cy.expandAllTokensPanel(); - switch (indicator) { - case "local": - changeTokensTarget(baseVariantName); - getElement().should("not.exist"); - if (globalVariantName) { - changeTokensTarget(globalVariantName); - getElement() - .invoke("attr", "class") - .should("include", "DefinedIndicator--inherited"); - } - break; - case "local-varianted": - changeTokensTarget(baseVariantName); - getElement().should("not.exist"); - if (globalVariantName) { - changeTokensTarget(globalVariantName); - getElement() - .invoke("attr", "class") - .should("include", `DefinedIndicator--overriding`); - } - break; - case "override-none": - changeTokensTarget(baseVariantName); - getElement() - .invoke("attr", "class") - .should("include", `DefinedIndicator--inherited`); - if (globalVariantName) { - changeTokensTarget(globalVariantName); - getElement() - .invoke("attr", "class") - .should("include", `DefinedIndicator--inherited`); - } - break; - case "override-base": - changeTokensTarget(baseVariantName); - getElement() - .invoke("attr", "class") - .should("include", `DefinedIndicator--set`); - if (globalVariantName) { - changeTokensTarget(globalVariantName); - getElement() - .invoke("attr", "class") - .should("include", `DefinedIndicator--inherited`); - } - break; - case "override-varianted": - changeTokensTarget(baseVariantName); - getElement() - .invoke("attr", "class") - .should("include", `DefinedIndicator--inherited`); - if (globalVariantName) { - changeTokensTarget(globalVariantName); - getElement() - .invoke("attr", "class") - .should("include", `DefinedIndicator--overriding`); - } - break; - case "override-both": - changeTokensTarget(baseVariantName); - getElement() - .invoke("attr", "class") - .should("include", `DefinedIndicator--set`); - if (globalVariantName) { - changeTokensTarget(globalVariantName); - getElement() - .invoke("attr", "class") - .should("include", `DefinedIndicator--overriding`); - } - break; - } -} - -export function createNewEventHandler( - eventName: string, - args: { name: string; type: string }[] -) { - cy.switchToComponentDataTab(); - cy.get(`[data-test-id="add-prop-btn"]`).click({ force: true }); - cy.get(`[data-test-id="prop-name"]`).type(eventName); - cy.selectPropOption(`[data-test-id="prop-type"]`, { key: "eventHandler" }); - for (const arg of args) { - cy.get(`[data-test-id="add-arg"]`).click(); - cy.get(`[data-test-id="arg-name"]`).last().type(arg.name); - cy.get(`[data-test-id="arg-type"]`).last().click(); - cy.selectOption({ key: arg.type }); - } - cy.get(`button[data-test-id="prop-submit"]`).click(); -} - -export function waitForSave() { - cy.get("*[class^=PlasmicSaveIndicator]").should("not.exist"); -} - -export class Framed { - constructor(private frame: HTMLIFrameElement) {} - - /** - * If the ArenaFrame was removed and re-added, such as if we undo/redo or - * switch arenas, then the old iframe reference we had will be detached and - * we'll need to re-bind to a new iframe. This utility is for re-binding. - */ - rebind() { - cy.get(`[data-test-frame-uid="${this.frame.dataset.testFrameUid}"]`).then( - ($frame) => (this.frame = $frame[0] as HTMLIFrameElement) - ); - } - - getFrame() { - return this.frame; - } - - base() { - return cy - .wrap(null) - .then(() => ensure(ensure(this.frame.contentDocument).body)); - } - - doc() { - return cy.wrap(null).then(() => ensure(this.frame.contentDocument)); - } - - rootElt() { - return this.base().find(`.__wab_root > *:not(style)`); - } - - enterIntoTplTextBlock(text: string) { - let parent: JQuery; - this.base() - .find(".__wab_editing") - .then((elem) => { - parent = elem.parent(); - return elem; - }) - .find('[contenteditable="true"]') - .wait(500) // Needed to prevent losing some keystrokes, probably need a better solution. - .type(`{selectall}${text}{esc}`, { - delay: 100, - // With browser scrolling, Cypress will scroll the element into view, - // even if it's already in view. This would mess up free drawing tests. - scrollBehavior: false, - }) - .then(() => { - this.base().find(".__wab_editing").should("not.exist"); - this.base() - .find( - // parent might have been detached - parent - .get() - .map((elt) => - elt.className - .split(/\s/) - .map((cls) => `.${cls}`) - .join("") - ) - .join(", ") - ) - .contains(text); - this.base().getSelectedTreeNode().click({ - force: true, // let's force it to click, even if it's hidden - }); - }); - } - - type(text: string) { - return this.focused().type(text, { force: true, delay: 80 }); - } - - waitContentEditable() { - // I haven't been able to figure out why, but this wait is needed or else - // the first entered keystrokes may be dropped. - this.base() - .find('[contenteditable="true"]', { timeout: 10000 }) - .should("have.class", "__wab_editing"); - } - - focused() { - return this.doc().then((doc) => doc.activeElement); - } - - plotTextAtSelectedElt(text: string) { - cy.getSelectionBox().then(($elt) => { - this.plotTextRelativeToElt($elt[0], 1, 1, text); - }); - } - - waitInit() { - // TODO This timeout does not do anything, but leaving here as a note in case you run into this (hopefully rare) timeout. Issue is blocked on https://github.com/cypress-io/cypress/issues/5980. - cy.wrap(null, { timeout: 9999 }).then(() => - waitCanvasOrPreviewIframeLoaded(this.frame) - ); - - // Wait for the full initial render eval cycle. - this.base().find(".__wab_root").should("exist"); - return waitFrameEval(this); - } - - plotText(x: number, y: number, text: string) { - this.plotTextRelativeToElt(this.frame, x, y, text); - } - - plotTextRelativeToElt(elt: HTMLElement, x: number, y: number, text: string) { - const { left, top } = elt.getBoundingClientRect(); - cy.justType("t"); - cy.log(JSON.stringify({ left, top, x, y })); - cy.plotAt(left + x, top + y); - this.enterIntoTplTextBlock(text); - } -} - -export function justType(key: string) { - if (!key) { - return; - } - - cy.wait(500); - if (PLATFORM !== "osx") { - key = key.replace(/cmd/g, "ctrl"); - } - curDocument().then((doc) => { - // cy.focused() fails if nothing is in focus, so we explicitly detect - // this case and type into the body (which is where we listen to - // shortcut key events) - if (doc.activeElement === doc.body) { - cy.wrap(doc.body).type(key, { force: true }); - } else { - cy.curFocused().type(key, { force: true }); - } - }); -} - -export function expectDebugTplTree(expected: string) { - curWindow().should((win) => { - const vc = (win as any).dbg.studioCtx.focusedViewCtx(); - const tree = vc.tplMgr().debugDumpTree(vc.tplRoot()); - expect(tree.trim()).to.equal(expected.trim()); - }); -} - -export function expectDebugTplTreeForFrame(index: number, expected: string) { - curWindow().should((win) => { - const vc = (win as any).dbg.studioCtx.viewCtxs[index]; - const tree = vc.tplMgr().debugDumpTree(vc.tplRoot()); - expect(tree.trim()).to.equal(expected.trim()); - }); -} - -export function focusFrame(framed: Framed) { - focusFrameRoot(framed); - justType("{shift}{enter}"); -} - -export function focusFrameRoot(framed: Framed) { - framed.rootElt().click({ force: true }); - waitFocusedFrameEval(); - return cy.wrap(framed); -} - -export function waitFocusedFrameEval() { - return curWindow().then({ timeout: 30000 }, (win) => { - return new Cypress.Promise((resolve: any) => { - const vc = (win as any).dbg.studioCtx.focusedViewCtx() as ViewCtx; - vc.awaitSync().then(() => resolve()); - }); - }); -} - -export function waitAllEval() { - return curWindow().then({ timeout: 300000 }, (win) => { - return new Cypress.Promise((resolve: any) => { - (win as any).dbg.studioCtx.awaitEval().then(() => { - resolve(); - }); - }); - }); -} - -export function waitLoadingComplete() { - cy.wait(200); - cy.get(".ScreenDimmer", { timeout: 10000 }).should("not.exist"); -} - -export function waitForFrameToLoad() { - cy.wait(1000); - cy.waitAllEval(); - cy.wait(2000); - cy.switchToTreeTab(); - cy.get(".tpltree__root .tpltree__label", { - timeout: 90000, - }).should("exist"); -} - -export function waitFrameEval(framed: Framed) { - return cy.curWindow().then({ timeout: 30000 }, (win) => { - return new Cypress.Promise((resolve: any) => { - const studioCtx = (win as any).dbg.studioCtx as StudioCtx; - const vc = ensure( - studioCtx.viewCtxs.find( - (_vc: ViewCtx) => _vc.canvasCtx.viewport() === framed.getFrame() - ) - ); - vc.awaitSync().then(() => resolve()); - }); - }); -} - -export function getSelectionTag() { - return cy.get(".node-outline-tag"); -} - -export function renameSelectionTag(name: string) { - getSelectionTag().dblclick(); - justType(name + "{enter}"); - getSelectionTag().should("contain", name); -} - -export function extractComponentNamed(name: string) { - justType("{cmd}{alt}k"); - cy.get(`input[data-test-id="extract-component-name"]`).type(name); - cy.get( - `form[data-test-id="extract-component-form"] button[type="submit"]` - ).click(); -} - -export function getVariantFrame(index: number) { - return cy - .get(`.canvas-editor__frames .canvas-editor__viewport[data-test-frame-uid]`) - .eq(index); -} - -export function getBaseFrame() { - return getVariantFrame(0); -} - -export function selectRootNode() { - cy.switchToTreeTab(); - return cy - .get(`.tpltree__nodeLabel__summary`) - .eq(0) - .invoke("text") - .then((text) => { - selectTreeNode([text]); - }); -} - -export function focusBaseFrame() { - return getBaseFrame().then((frame) => { - frame.click(); - return new Framed(frame[0] as HTMLIFrameElement); - }); -} - -export function getSelectedElt() { - cy.waitAllEval(); - return curWindow().then((win) => { - const vc = (win as any).dbg.studioCtx.focusedViewCtx(); - return cy.wrap(vc.focusedDomElt()); - }); -} - -/** - * Increasing this speeds up undo/redo, but we opt to keep it granular so we - * ensure the exact same # redos is needed. - */ -const undosPerBatch = 1; -const maxUndos = 100; -/** - * Keep undoing until no frames left, then redo that same number of times. - */ -export function undoAndRedo() { - let undoBatches = 0; - - function undo() { - curBody().then(($body) => { - if (undoBatches * undosPerBatch > maxUndos) { - throw new Error("Exceeded max undos. App may be wedged."); - } - waitAllEval(); - const $frames = $body.find( - ".canvas-editor__viewport[data-test-frame-uid]" - ); - if ($frames.length > 0) { - justType("{cmd}" + _.repeat("z", undosPerBatch)); - undoBatches++; - undo(); - } else { - redo(); - } - }); - } - - function redo() { - justType("{cmd}" + _.repeat("y", undoBatches * undosPerBatch)); - } - - undo(); -} - -/** - * Performs an undo operation in the editor. - * @param times - Number of times to perform the undo operation (default: 1) - */ -export function undoTimes(times = 1) { - for (let i = 0; i < times; i++) { - cy.waitAllEval(); - justType(`{cmd}z`); - } -} - -export function getFontInput() { - cy.switchToDesignTab(); - return cy.get( - `.canvas-editor__right-pane [data-test-id="font-family-selector"]` - ); -} - -export function underlineText() { - cy.switchToDesignTab(); - return cy - .get( - `.canvas-editor__right-pane [data-test-id="text-decoration-selector"] [class*="PlasmicStyleToggleButtonGroup"] button:first-child svg` - ) - .click(); -} - -export function setVisible() { - cy.get('[data-plasmic-prop="display-visible"]').click(); -} - -export function getVisibilityToggle(nodeName: string) { - return ( - cy - .getTreeNode([nodeName]) - // hover to show the eye icon - .realHover() - .find('[class*="tpltree__label__visibility"]') - ); -} - -/** - * Toggles the visibility of a node in the outline tab. - * @param nodeName - The name of the node to toggle visibility for. - */ -export function toggleVisiblity(nodeName: string) { - getVisibilityToggle(nodeName) - // click the eye icon in the tpl tree node - .click(); -} - -export function setDisplayNone() { - cy.get('[data-plasmic-prop="display-not-visible"]').click(); -} - -export function setNotRendered() { - cy.get('[data-plasmic-prop="display-visible"]').rightclick(); - cy.contains("Not rendered").click(); -} - -export function setDynamicVisibility(customCode: string) { - cy.get('[data-plasmic-prop="display-visible"]').rightclick(); - cy.contains("Use dynamic value").click(); - cy.wait(500); - cy.enterCustomCodeInDataPicker(customCode); -} - -export function chooseFont(fontName: string) { - getFontInput().click(); - - // Antd 4.1.2 is buggy here; after selecting font, the virtual - // scroller may throw an uncaught exception when reading - // clientHeight :-/ - cy.on("uncaught:exception", () => false); - - justType(fontName + "{enter}"); - // de-focus typography select - justType("{esc}"); -} - -export function getFontSizeInput() { - return cy.get(`.canvas-editor__right-pane input[data-test-id="font-size"]`); -} - -export function chooseFontSize(fontSize: string) { - cy.switchToDesignTab(); - getFontSizeInput().eq(0).click().focus(); - justType(fontSize + "{enter}"); -} - -export function chooseColor(opts: { color?: string; tokenName?: string }) { - cy.switchToDesignTab(); - cy.get(`.canvas-editor__right-pane [data-test-id='color-selector'] button`) - .eq(0) - .click() - .focus(); - if (opts?.color) { - justType(opts.color + "{enter}"); - } else if (opts?.tokenName) { - cy.get(`input[placeholder="Search for token"]`).type( - `${opts.tokenName}{enter}` - ); - } - cy.closeSidebarModal(); -} - -export function convertToSlot(slotName?: string) { - getSelectedElt().rightclick({ force: true }); - cy.contains("Convert to a slot").click({ force: true }); - if (slotName) { - cy.get(`[data-test-class="simple-text-box"]`).type( - `{selectall}${slotName}` - ); - } -} - -export function getSelectedTreeNode() { - cy.switchToTreeTab(); - return cy.get(".tpltree__label--focused"); -} - -export function clickSelectedTreeNodeContextMenu(name: string) { - getSelectedTreeNode().rightclick({ force: true }); - cy.contains(name).click({ force: true }); -} - -export function checkSelectedPropNodeAs(type: "default" | "forked") { - getSelectedTreeNode().rightclick({ force: true }); - if (type === "default") { - cy.contains("Revert to").should("not.exist"); - } else { - cy.contains("Revert to").should("exist"); - } - getSelectedTreeNode().click({ force: true }); -} - -export function selectTreeNode( - names: string[] -): Cypress.Chainable> { - return getTreeNode(names).click({ force: true }); -} - -export function getTreeNode( - names: string[], - parentId?: string -): Cypress.Chainable> { - if (names.length === 0) { - unexpected(); - } - - switchToTreeTab(); - - const [name, ...rest] = names; - const labelSelector = !parentId - ? ".tpltree__root .tpltree__label" - : `.tpltree__root .tpltree__label[data-test-parent-id="${parentId}"]`; - - const getRoot = !parentId && name === "root"; - if (getRoot) { - // The tpltree is virtualized, so scroll to the top to ensure the first element is the root. - cy.get(".tpltree-scroller").scrollTo("top", { ensureScrollable: false }); - cy.wait(500); // virtual list needs a bit of time to rerender - } - - return ( - getRoot ? cy.get(labelSelector).first() : cy.contains(labelSelector, name) - ).then(($elt) => { - const id = $elt.data("test-id"); - if (rest.length === 0) { - // For whatever reason, the $elt may no longer be attached to the DOM, - // so query the DOM again by its unique test id. - return cy.get(`[data-test-id="${id}"]`); - } - const expander = $elt.find( - `.tpltree__label__expander[data-state-isopen="false"]` - ); - if (expander.length > 0) { - cy.wrap(expander).click({ force: true }); - cy.wait(500); // virtual list needs a bit of time to rerender - } - console.log("Got tree node id", id); - return getTreeNode(rest, id); - }); -} - -export function dragTreeNode(from: string[], to: string[]) { - // select to and from node so they are both revealed - getTreeNode(to).then(($to) => { - getTreeNode(from).then(($from) => { - const fromDraggableId = $from - .parent(".tpltree__draggable") - .data("test-id"); - const { left, top } = $to.get()[0].getBoundingClientRect(); - const toDraggableId = $to.parent(".tpltree__draggable").data("test-id"); - cy.get(`[data-test-id="${fromDraggableId}"]`).trigger("mousedown"); - cy.get(`[data-test-id="${toDraggableId}"]`) - .trigger("mousemove", { pageX: left + 1, pageY: top + 1 }) - .trigger("mouseover") - .trigger("mouseup"); - }); - }); -} - -export function renameTreeNode( - name: string, - opts?: { programatically?: boolean } -) { - if (opts?.programatically) { - curWindow().then((win) => { - const sc = (win as any).dbg.studioCtx; - sc.changeUnsafe(() => { - const vc = sc.focusedViewCtx(); - const item = vc?.focusedTpl() ?? vc?.focusedSelectable(); - if (vc && item) { - vc.getViewOps().renameTpl(name, item); - } - }); - }); - } else { - blurFocused(); // if an input were selected, cmd+r wouldn't work - justType("{cmd}{r}"); - justType(`${name}{enter}`); - getSelectedTreeNode().contains(name); - } -} - -export function getSelectionBox() { - return cy.get(".hoverbox"); -} - -export function dragGalleryItemRelativeToElt( - item: string, - elt: HTMLElement, - x: number, - y: number -) { - openAddDrawer(); - addDrawerItem(item).trigger("mousedown"); - curDocument() - .trigger("mousemove", { pageX: 0, pageY: 0, clientX: 0, clientY: 0 }) - .then(() => { - const { left, top } = elt.getBoundingClientRect(); - return cy - .get(".drag-guard") - .trigger("mousemove", { - pageX: left + x, - pageY: top + y, - }) - .trigger("mouseup"); - }); -} - -export function openAddDrawer() { - cy.get(`button[data-test-id="add-button"]`).wait(500).click({ force: true }); -} - -export function insertFromAddDrawer(itemName: string, displayName?: string) { - openAddDrawer(); - addDrawerItem(itemName, displayName).wait(500).click(); -} - -export function addDrawer() { - return cy.get(`[data-test-id="add-drawer"]`); -} - -export function switchToImportsTab() { - switchToLeftTab("imports"); -} - -export function switchToTreeTab() { - switchToLeftTab("outline"); -} - -export function switchToStyleTokensTab() { - switchToLeftTab("tokens"); -} - -export function switchToComponentsTab() { - switchToLeftTab("components"); -} - -export function switchToVersionsTab() { - switchToLeftTab("versions"); -} - -export function switchToProjectSettingsTab() { - switchToLeftTab("settings"); -} - -export function switchToResponsivenessTab() { - switchToLeftTab("responsiveness"); -} - -function switchToLeftTab(key: string) { - curWindow().then((win) => ((win as any).dbg.studioCtx.leftTabKey = key)); -} - -export function clickIfExists(selector: string) { - return curBody().then(($body) => { - if ($body.find(selector).length > 0) { - cy.get(selector).click(); - } - }); -} - -export function switchToDesignTab() { - clickIfExists(`button[data-test-tabkey="style"]`); -} - -export function switchToSettingsTab() { - // multiple for tour test - cy.get(`button[data-test-tabkey="settings"]`).click({ multiple: true }); -} - -export function switchToComponentDataTab() { - // multiple for tour test - cy.get(`button[data-test-tabkey="component"]`).click({ multiple: true }); -} - -export function addImageBackground() { - cy.contains("Background").click(); - cy.contains("Add image").trigger("mouseover"); - cy.get('svg[data-icon-name="BgImage"]').click(); -} - -export function changeImageBackgroundFromPlaceholder(url: string) { - cy.get(`input[data-test-id="image-url-input"]`).click(); - justType(url + "{enter}"); - curBody().click(); -} - -export function setImageSource(url: string) { - cy.get(`input[data-test-id="image-url-input"]`) - .clear() - .type(url + "{enter}"); - curBody().click(); -} - -export function changeTagType(tag: string) { - cy.get(`[data-test-class="tpl-tag-select"] input`).type(`${tag}{enter}`, { - force: true, - }); -} - -export function clearNotifications() { - cy.get(".ant-notification-notice-close").click(); -} - -export function checkNoErrors() { - // Wait for final save (period is 2s). - cy.wait(3000); - cy.get(".ant-notification-notice-close").should("not.exist"); -} - -export function treeTab() { - switchToTreeTab(); - return cy.get(".outline-tab"); -} - -export function openProjectPanel() { - cy.get("#proj-nav-button").click(); -} - -export function expandAllProjectPanel() { - cy.get(`[data-test-id="nav-dropdown-expand-all"]`).click(); -} - -export function expandAllTokensPanel() { - cy.get(`[data-test-id="tokens-panel-expand-all"]`).click(); -} - -export function getProjectPanelContents() { - return cy.get(testIds.projectPanel.selector); -} - -export function projectPanel() { - openProjectPanel(); - cy.wait(200); - expandAllProjectPanel(); - cy.get(`[data-test-id="nav-dropdown-clear-search"]`).click({ force: true }); - cy.wait(200); - return getProjectPanelContents(); -} - -export function getComponentsCount() { - return getProjectPanelContents() - .find(`[class*="sizeContainer"]`) - .last() - .invoke("text"); -} - -export function getArenasCount() { - return getProjectPanelContents() - .find(`[class*="sizeContainer"]`) - .first() - .invoke("text"); -} - -export function branchPanel() { - cy.get("#branch-nav-button").click(); - cy.wait(500); - return cy.get(testIds.projectPanel.selector); -} - -export function styleTab() { - return cy.get(".style-tab"); -} - -export function settingsTab() { - switchToSettingsTab(); - return cy.get(".settings-panel"); -} - -export function variantsTab() { - cy.switchToComponentDataTab(); - return cy.get(`[data-test-id="variants-tab"]`); -} - -export function addVariantGroup(name: string) { - componentPanel() - .get(`[data-test-id="add-variant-group-button"] .ant-dropdown-trigger`) - .click(); - cy.get(".ant-dropdown-menu").contains("single").click({ force: true }); - justType(`${name}{enter}`); -} - -export function addVariantToGroup(groupName: string, variantName: string) { - getVariantGroupWidget(groupName) - .find(`[data-test-class="add-variant-button"]`) - .click(); - justType(variantName + "{enter}"); -} - -export function addInteractionVariant(selector: string) { - addVariantToGroup("Interaction Variants", selector); - cy.get(`[data-test-id="variant-selector-button"]`).click(); -} - -export function addRegisteredVariantFromCanvas(variantName: string) { - cy.get(`[aria-label="Add registered variant"]`).click(); - justType(variantName + "{enter}"); - cy.get(`[data-test-id="variant-selector-button"]`).click(); -} - -export function editRegisteredVariantFromCanvas(newVariantName: string) { - cy.get(`[class*="variantsList"]`).rightclick(); - cy.contains("Change variant selectors").click(); - cy.justType(`{del}${newVariantName}{enter}`); - cy.get(`[data-test-id="variant-selector-button"]`).click(); -} - -export function editRegisteredVariantFromVariantsTab( - existingVariantName: string, - newVariantName: string -) { - cy.doVariantMenuCommand(false, existingVariantName, "Edit registered keys"); - cy.justType(`{del}${newVariantName}{enter}{enter}`); -} - -export function addRegisteredVariantFromVariantsTab(variantName: string) { - addVariantToGroup("Registered Variants", variantName); - cy.get(`[data-test-id="variant-selector-button"]`).click(); -} - -export function selectVariant( - groupName: string, - variantName: string, - isGlobal = false -) { - cy.switchToComponentDataTab(); - getVariantRow(groupName, variantName, isGlobal) - .trigger("pointerover") - .within(($row) => { - $row.trigger("pointerenter"); - cy.get(`[data-test-class="variant-record-button-start"]`).click(); - }); -} - -export function ensureGlobalVariantsPanelIsOpen() { - return cy - .get(testIds.globalVariantsHeader.selector) - .find("[data-test-id='show-extra-content']") - .then(($showExtraContent) => { - const attrValue = $showExtraContent.attr("data-show-extra-content"); - if (attrValue === "false") { - cy.get(testIds.globalVariantsHeader.selector).click(); - } - }); -} - -export function createGlobalVariantGroup( - groupName: string, - variantName: string -) { - componentPanel() - .get(`[data-test-id="add-global-variant-group-button"]`) - .click(); - justType(`${groupName}{enter}`); - cy.wait(200); - justType(`${variantName}{enter}`); -} - -export function deselectVariant( - groupName: string, - variantName: string, - isGlobal = false -) { - getVariantRow(groupName, variantName, isGlobal) - .trigger("pointerover") - .within(() => { - cy.get(`[data-test-class="variant-record-button-stop"]`).click(); - }); -} - -export function activateVariantFromGroup( - groupName: string, - variantName: string -) { - getVariantRow(groupName, variantName) - .trigger("pointerover") - .within(($el) => { - console.log( - "GOT ELT", - $el, - $el.find(`[data-test-class="variant-pin-button-activate"]`) - ); - $el.find(`[data-test-class="variant-pin-button-activate"]`).click(); - }); -} - -export function deactivateVariant(groupName: string, variantName: string) { - getVariantRow(groupName, variantName) - .trigger("pointerover") - .within(() => { - cy.get(`[data-test-class="variant-pin-button-deactivate"]`).click(); - }); -} - -export function resetVariants() { - cy.get('[data-test-id="variants-bar-dropdown-trigger"]') - .click() - .wait(100) - .justType("{enter}{esc}") - .wait(200); -} - -export function componentPanel() { - cy.switchToComponentDataTab(); - return cy.get( - `[data-test-id="component-panel"], [data-test-id="page-panel"]` - ); -} - -export function expandComponentPanel() { - return cy - .get( - `[data-test-id="component-panel"] > div > [data-test-id="show-extra-content"]` - ) - .then(($el) => { - console.log("$el", $el); - if ($el.attr("data-show-extra-content") === "true") { - console.log("Already expanded!"); - return; - } else { - console.log("Click it"); - cy.get( - `[data-test-id="component-panel"] > div > [data-test-id="show-extra-content"]` - ).click({ timeout: 30000 }); - } - }); -} - -export function withinLiveMode(func: () => void) { - enterLiveMode(); - const frame = getLoadedLiveFrame(); - frame.within(() => { - cy.get(".plasmic_default__div", { timeout: 60000 }).should("exist"); - func(); - }); - exitLiveMode(); -} - -export function openArtboardSettings() { - cy.get(`[data-test-id="artboard-config-button"]`).click({ - // With browser scrolling, Cypress will scroll the element into view, - // even if it's already in view. This would mess up free drawing tests. - scrollBehavior: "center", - force: true, - }); -} - -export function addElementVariant(pseudoSelector: string) { - cy.get("[data-test-id='add-private-interaction-variant-button']") - .click() - .wait(200); - justType(pseudoSelector + "{enter}"); -} - -export function stopRecordingElementVariant() { - cy.get( - `[data-test-id="private-style-variants-section"] [data-test-class="variant-record-button-stop"]` - ).click(); -} - -export function deactivateElementVariant() { - cy.get( - `[data-test-id="private-style-variants-section"] [data-test-class="variant-pin-button-deactivate"]` - ).click(); -} - -export function toggleElementVariants() { - let isOpened = false; - cy.document().then((doc) => { - if ( - doc.querySelectorAll(`[data-test-id="private-style-variants-title"]`) - .length > 0 - ) { - isOpened = true; - } - return; - }); - if (isOpened) { - return; - } - cy.get(`[data-test-id="apply-menu"]`) - .click() - .wait(200) - .get(".ant-dropdown-menu") - .contains("Element variants") - .click() - .wait(200); -} - -export function doVariantMenuCommand( - privateVariant: boolean, - variantName: string, - menuCommand: string -) { - if (privateVariant) { - cy.switchToDesignTab(); - } else { - cy.variantsTab(); - } - - const dataTestId = privateVariant - ? "private-style-variants-section" - : "variants-tab"; - - cy.get(`[data-test-id="${dataTestId}"] [data-test-class="variant-row"]`) - .contains(variantName) - .rightclick(); - cy.get(".ant-dropdown-menu .ant-dropdown-menu-item") - .filter(":visible") - .contains(menuCommand) - .click({ force: true }); -} - -export function doVariantGroupMenuCommand(groupName: string, menuItem: string) { - cy.contains(groupName).rightclick(); - cy.get(".ant-dropdown-menu").contains(menuItem).click({ force: true }); -} - -/** - * Resolves if the frame is already loaded or if the frame then loads the - * expected page (specified by the src). - * - * See - * https://stackoverflow.com/questions/17158932/how-to-detect-when-an-iframe-has-already-been-loaded - * for some details. - */ -function waitCanvasOrPreviewIframeLoaded( - iframe: HTMLIFrameElement -): Promise { - return new Promise( - spawnWrapper(async (resolve: any) => { - const checkReady = () => { - const contentWindow = iframe.contentWindow; - const contentDocument = iframe.contentDocument; - if ( - contentWindow && - contentDocument && - contentDocument.readyState === "complete" - ) { - // Make sure this isn't just the about:blank page. - if (contentDocument.querySelector("#plasmic-app.__wab_user-body")) { - resolve(); - } - } - }; - checkReady(); - if (iframe.contentDocument) { - iframe.contentDocument.addEventListener("readystatechange", () => - checkReady() - ); - } - iframe.addEventListener("load", () => { - resolve(); - }); - }) - ); -} - -export function addDrawerItem(itemName: string, displayName?: string) { - addDrawer().find("input").click(); - justType(itemName); - return addDrawer() - .get(`li[data-plasmic-add-item-name="${itemName ?? displayName}"]`) - .eq(0); -} - -function getGlobalVariantGroupWidget(groupName: string) { - cy.switchToComponentDataTab(); - cy.ensureGlobalVariantsPanelIsOpen(); - return cy - .get(testIds.globalVariantsHeader.selector) - .contains(groupName) - .parents(`[data-test-class="variants-section"]`); -} - -function getVariantGroupWidget(groupName: string) { - cy.switchToComponentDataTab(); - return cy - .get(`[data-test-id="variants-tab"]`) - .contains(groupName) - .parents(`[data-test-class="variants-section"]`); -} - -function getVariantRow( - groupName: string, - variantName: string, - isGlobal = false -) { - return isGlobal - ? getGlobalVariantGroupWidget(groupName) - : getVariantGroupWidget(groupName) - .contains(variantName) - .parents(`[data-test-class="variant-row"]`); -} - -// function enterLiveMode() { -// return cy.get(`[data-test-id="enter-live-mode-btn"]`).click(); -// } - -function exitLiveMode() { - return cy.get(`[data-test-id="exit-live-mode-btn"]`).click(); -} - -function getLoadedLiveFrame() { - return cy.get(`[data-test-id="live-frame"]`).then(($frame) => { - const elt = $frame[0] as HTMLIFrameElement; - return waitCanvasOrPreviewIframeLoaded(elt).then(() => { - return ensure(elt.contentDocument).body; - }); - }); -} - -// noinspection DuplicatedCode -function getPlatformName() { - // Copied from https://github.com/avocode/react-shortcuts/blob/master/src/helpers.js - let os = ensure(platform.os).family || ""; - os = os.toLowerCase().replace(/\s*/g, ""); - if (/\bwin/.test(os)) { - return "windows"; - } else if (/darwin|osx/.test(os)) { - return "osx"; - } else if (/linux|freebsd|sunos|ubuntu|debian|fedora|redhat|suse/.test(os)) { - return "linux"; - } else { - return "other"; - } -} - -function createCoords(x: number, y: number) { - return { - clientX: x, - clientY: y, - pageX: x, - pageY: y, - screenX: x, - screenY: y, - }; -} - -function drawRect( - initX: number, - initY: number, - deltaX: number, - deltaY: number -) { - cy.get(".FreestyleBox__guard") - .should("exist") - .trigger("mousedown", { - force: true, - which: 1, - ...createCoords(initX, initY), - }) - .trigger("mousemove", { - force: true, - ...createCoords(initX + deltaX, initY + deltaY), - }) - .wait(300) - .trigger("mouseup", { - force: true, - ...createCoords(initX + deltaX, initY + deltaY), - }); -} - -export function enterLiveMode() { - return cy - .get(`[data-test-id="enter-live-mode-btn"]`) - .click() - .get(`[data-test-id="live-frame"]`) - .its("0.contentDocument.body") - .should("not.be.empty") - .then(cy.wrap) - .find("#plasmic-app", { timeout: 60000 }); -} - -export function getArenas() { - return cy.get("[data-test-frame-uid]"); -} - -export function exitLiveMove() { - return cy.get(`[data-test-id="exit-live-mode-btn"]`).click(); -} - -export function setupNewProject({ - skipVisit = false, - devFlags = {}, - name, - email = "user2@example.com", - inviteOnly, - skipTours = true, -}: { - skipVisit?: boolean; - devFlags?: Partial; - name?: string; - email?: string; - inviteOnly?: boolean; - skipTours?: boolean; -} = {}): Cypress.Chainable { - return cy - .login(email) - .request({ - url: "/api/v1/projects", - method: "POST", - body: ensureType({ - name: name ? `[cypress] ${name}` : undefined, - }), - }) - .its("body.project.id", { log: false }) - .then((projectId: string) => { - cy.log({ - name: "Project", - message: projectId, - }); - Cypress.env("projectId", projectId); - }) - .then(() => { - const body: SetSiteInfoReq = {}; - if (inviteOnly !== undefined) { - body.inviteOnly = inviteOnly; - } - if (Object.keys(body).length > 0) { - return cy.request({ - url: `/api/v1/projects/${Cypress.env("projectId")}`, - method: "PUT", - body, - }); - } - }) - .then(() => { - const projectId = Cypress.env("projectId"); - if (!skipVisit) { - openProject({ projectId, devFlags }); - if (skipTours) { - disableTours(); - } - withinStudioIframe(() => {}); - } - return cy.wrap(projectId); - }); -} - -export function setupProjectWithHostlessPackages({ - hostLessPackagesInfo, - devFlags, -}: { - hostLessPackagesInfo: - | (Partial & { name: string }) - | (Partial & { name: string })[]; - devFlags?: Partial; -}): Cypress.Chainable { - return cy - .login() - .request({ - url: "/api/v1/projects/create-project-with-hostless-packages", - method: "POST", - log: false, - body: { - hostLessPackagesInfo: ensureArray(hostLessPackagesInfo).map( - (info) => - new HostLessPackageInfo({ - name: info.name, - npmPkg: ensureArray(info.npmPkg), - deps: info.deps ? ensureArray(info.deps) : [], - cssImport: info.cssImport ? ensureArray(info.cssImport) : [], - registerCalls: [], - minimumReactVersion: info.minimumReactVersion ?? null, - }) - ), - }, - }) - .its("body.project.id", { log: false }) - .then((projectId: string) => { - Cypress.log({ - name: "Project", - message: projectId, - }); - openProject({ projectId, devFlags }); - withinStudioIframe(() => {}); - return cy.wrap(projectId); - }); -} - -export function setupProjectFromTemplate( - bundleName: string, - opts?: { - skipVisit?: boolean; - keepProjectIdsAndNames?: boolean; - dataSourceReplacement?: - | { - type: string; - } - | { - fakeSourceId: string; - }; - devFlags?: Partial; - } -) { - return cy - .login() - .request({ - url: "/api/v1/projects/import", - method: "POST", - log: false, - body: { - data: JSON.stringify(bundles[bundleName]), - keepProjectIdsAndNames: opts?.keepProjectIdsAndNames, - migrationsStrict: true, - dataSourceReplacement: opts?.dataSourceReplacement, - }, - }) - .its("body.projectId", { log: false }) - .then((projectId: string) => { - Cypress.log({ - name: "Project", - message: projectId, - }); - if (!opts?.skipVisit) { - openProject({ projectId, devFlags: opts?.devFlags }); - } - return cy.wrap(projectId); - }); -} - -// Returns the hostless project ID -export function setupHostlessProject(props: { - name: string; - npmPkg: string; -}): Cypress.Chainable { - return cy - .setupNewProject({ - name: props.name, - devFlags: { setHostLessProject: true }, - email: "admin@admin.example.com", - }) - .then((hostlessProjectId: string) => { - cy.withinStudioIframe(() => { - // Fill in modal - cy.get(`[data-test-id="hostless-name"]`).type(props.name); - cy.get(`[data-test-id="hostless-npm-pkg-plus"]`).click(); - cy.get(`[data-test-id="hostless-npm-pkg"]`).type(props.npmPkg); - cy.get(`[data-test-id="hostless-prompt-submit"]`).click(); - - // Check that a version has been published - cy.switchToVersionsTab(); - cy.contains("0.0.1").should("be.visible"); - cy.checkNoErrors(); - }); - - return cy.wrap(hostlessProjectId); - }); -} - -export function openProject({ - projectId, - appendPath = "", - qs = {}, - devFlags = {}, -}: { - projectId: string; - appendPath?: string; - qs?: { [k: string]: string }; - devFlags?: Partial; -}) { - Cypress.env("projectId", projectId); - cy.visit(`/projects/${projectId}${appendPath}`, { - qs: { runningInCypress: true, ...qs, ...devFlags }, - timeout: 120000, - }); -} - -export function removeCurrentProject(email = "user2@example.com") { - const projectId = Cypress.env("projectId"); - if (projectId) { - Cypress.env("projectId", undefined); - return cy.login(email).request({ - url: `/api/v1/projects/${projectId}`, - method: "DELETE", - }); - } -} - -export function deleteDataSourcesByName(name: string) { - return cy - .request({ - url: `/api/v1/data-source/sources`, - method: "GET", - }) - .its("body.dataSources") - .then((sources: ApiDataSource[]) => { - for (const source of sources) { - if (source.name === name) { - return cy.deleteDataSource(source.id); - } - } - }); -} - -export function deleteDataSource(dsid: string) { - return cy.request({ - url: `/api/v1/data-source/sources/${dsid}`, - method: "DELETE", - }); -} - -export function deleteDataSourceOfCurrentTest() { - const dataSourceId = Cypress.env("dataSourceId"); - if (dataSourceId) { - Cypress.env("dataSourceId", undefined); - cy.deleteDataSource(dataSourceId); - } -} - -export function countItems(selector: string) { - return curDocument().then((doc) => { - return doc.querySelectorAll(selector).length; - }); -} - -export function importProject(projectId: string) { - cy.switchToImportsTab(); - const selector = ".SidebarSectionListItem"; - cy.countItems(selector).then((countBefore: number) => { - cy.get(`[data-test-id="import-btn"]`).click(); - cy.justType(projectId + "{enter}"); - // Wait for the project to be imported - cy.get(selector).should("have.length.gte", countBefore + 1); - }); -} - -export function removeAllDependencies() { - cy.switchToImportsTab(); - cy.get(`.SidebarSectionListItem`).each(($el) => { - cy.wrap($el).rightclick(); - cy.contains("Remove imported project").click(); - cy.get(".ant-modal-content").find("button[type=submit]").click(); - }); - - cy.get(`.SidebarSectionListItem`).should("not.exist"); -} - -export function updateAllImports() { - cy.switchToImportsTab(); - cy.get(`[data-test-id="check-for-updates-btn"]`).click(); - cy.wait(1000); - // Iterate over all elements and click each one - cy.get(`.SidebarSectionListItem button svg`).each(($el) => { - cy.wrap($el).click(); - cy.get(".ant-modal-content").find("button[type=submit]").click(); - }); - // Wait for the projects to be updated - cy.get(`.SidebarSectionListItem button svg`).should("not.exist"); -} - -export function publishVersion(description: string) { - cy.switchToVersionsTab(); - const selector = '[data-test-id="publish-version-item"]'; - cy.countItems(selector).then((countBefore: number) => { - cy.contains("Publish project").click(); - cy.getStudioModal().find(`input`).eq(0).type(description); - cy.getStudioModal().contains("Confirm").click(); - // Wait for the version to be published - cy.wait(500); - cy.get(selector).should("exist"); - cy.get(selector).should("have.length", countBefore + 1); - }); - cy.switchToTreeTab(); -} - -export function previewVersion(version: string) { - cy.switchToVersionsTab(); - cy.contains(version).click(); - cy.waitForFrameToLoad(); - cy.switchToTreeTab(); -} - -export function revertToVersion(version: string) { - cy.switchToVersionsTab(); - cy.contains(version).rightclick(); - cy.contains("Revert to this version").click(); - cy.contains(/^Revert$/).click(); - cy.waitForFrameToLoad(); - cy.switchToTreeTab(); -} - -export function login(email = "user2@example.com", password = "!53kr3tz!") { - cy.fetchCsrf() - .request({ - url: "/api/v1/auth/login", - method: "POST", - body: { email, password }, - log: false, - }) - .fetchCsrf(); - Cypress.log({ - name: "login", - message: email, - }); -} - -export function getApiToken() { - return cy - .fetchCsrf() - .request({ - url: `/api/v1/settings/apitokens`, - method: "GET", - }) - .its("body.tokens") - .then((tokens) => { - if (tokens.length > 0) { - console.log("Using existing token", tokens[0].token); - return tokens[0].token; - } - return cy - .request({ - url: `/api/v1/settings/apitokens`, - method: "PUT", - }) - .its("body.token.token") - .then((token) => { - console.log("Using new token", token); - return token; - }); - }); -} - -export function getUserEmailVerificationToken(email: string) { - return cy - .fetchCsrf() - .request({ - url: `/api/v1/auth/getEmailVerificationToken`, - method: "GET", - body: { - email, - }, - }) - .its("body.token") - .then((token) => token); -} - -export function codegen() { - return cy.location().then(({ pathname }) => { - const projectId = pathname.split("/")[2]; - return cy.getApiToken().then((token) => { - return cy - .request({ - url: `/api/v1/projects/${projectId}/code/components`, - method: "POST", - headers: { - "x-plasmic-api-user": "user2@example.com", - "x-plasmic-api-token": token, - }, - }) - .then((res) => { - return res.body; - }); - }); - }); -} - -export function logout() { - cy.request({ - url: "/api/v1/auth/logout", - method: "POST", - }); -} - -// Modified from https://github.com/cypress-io/cypress/issues/726 -// Allow us to specify default headers to `cy.requests`. -export const cyRequestDefaultOptions: Partial = {}; - -export function fetchCsrf() { - return cy - .request({ - url: "/api/v1/auth/csrf", - log: false, - }) - .its("body.csrf", { log: false }) - .then((csrf: string) => { - if (!cyRequestDefaultOptions.headers) { - cyRequestDefaultOptions.headers = {}; - } - Object.assign(cyRequestDefaultOptions.headers, { "X-CSRF-Token": csrf }); - return csrf; - }); -} - -export function justLog(message: string) { - Cypress.log({ - name: "JustLog", - message: `✳️ ${message}`, - }); -} - -export function deselect() { - cy.justType("{esc}"); - cy.get(".hoverbox").should("not.exist"); -} - -// -// Working with the style tab -// -export function setSelectedDimStyle(prop: string, value: string) { - cy.switchToDesignTab(); - cy.setDataPlasmicProp(prop, value); -} - -export function setSelectedPosition(prop: "top" | "left", value: string) { - cy.switchToDesignTab(); - cy.get(`[data-plasmic-pos-trigger="${prop}"]`).click(); - setDataPlasmicProp(prop, value); -} - -export function addItemToArrayProp( - prop: string, - value: Record, - opts?: { - backSidebarModal?: boolean; - } -) { - cy.get(`[data-test-id="${prop}-add-btn"]`).click(); - cy.wait(500); - for (const key in value) { - if (typeof value[key] === "object" && value[key].type === "select") { - cy.setSelectByLabel(key, value[key].label); - } else { - cy.setDataPlasmicProp(key, value[key]); - } - } - if (opts?.backSidebarModal) { - cy.get(`[data-test-id="back-sidebar-modal"]`).click(); - cy.wait(1000); - } else { - cy.get(`[data-test-id="close-sidebar-modal"]`).click(); - } -} - -export function addFormItem(prop: string, value: Record) { - cy.get(`[data-test-id="${prop}-add-btn"]`).click(); - cy.wait(500); - for (const key in value) { - if (key === "inputType") { - cy.setSelectByLabel(key, value[key]); - } else if (key === "options") { - for (const option of value[key]) { - cy.addItemToArrayProp( - key, - { - label: option, - value: option, - }, - { backSidebarModal: true } - ); - } - } else { - cy.setDataPlasmicProp(key, value[key]); - } - } - cy.wait(500); - cy.get(`[data-test-id="close-sidebar-modal"]`).click(); -} - -export function removeItemFromArrayProp(prop: string, index: number) { - cy.get(`[data-test-id="${prop}-${index}-remove"]`).click(); - cy.wait(500); -} - -export function setDataPlasmicProp( - prop: string, - value: string, - opts?: { - reset?: boolean; - omitEnter?: boolean; - codeEditor?: boolean; - clickPosition?: "right"; - } -) { - const editor = cy.get(`[data-plasmic-prop="${prop}"]`).last(); - if (opts?.clickPosition) { - editor.click(opts.clickPosition); - } else { - editor.click(); - } - if (opts?.codeEditor) { - cy.get(".react-monaco-editor-container").click(); - if (opts?.reset) { - cy.justType("{selectall}{selectall}{backspace}"); - } - cy.curFocused().type(value, { - parseSpecialCharSequences: false, - }); - cy.get(`[data-test-id="save-code"]`).click().wait(200); - } else { - if (opts?.reset) { - cy.justType("{selectall}{selectall}{backspace}"); - } - cy.justType(value); - if (!opts?.omitEnter) { - // Newest ant can have a delay until they show the dropdown (for the page picker input), until which point typing enter actually inserts a newline instead of entering the text input and closing the dropdown. - cy.wait(2000); - cy.justType("{enter}"); - } - } -} - -export function chooseDataPlasmicProp(prop: string, value: string) { - if (value.includes("'") || value.includes('"')) { - throw new Error("chooseDataPlasmicProp does not yet handle quotes"); - } - clickDataPlasmicProp(prop); - return cy - .get(`[data-plasmic-role="overlay"] [data-key="'${value}'"]`) - .click(); -} - -export function chooseDataPlasmicPropByLabel(prop: string, label: string) { - if ( - label.includes("'") || - label.includes('"') || - label.includes("(") || - label.includes(")") - ) { - throw new Error("chooseDataPlasmicPropByLabel does not yet handle quotes"); - } - clickDataPlasmicProp(prop); - return cy - .get(`[data-plasmic-role="overlay"] [data-key]:contains(${label})`) - .click(); -} - -export function clickDataPlasmicProp(prop: string) { - getDataPlasmicProp(prop).click(); -} - -export function getDataPlasmicProp(prop: string) { - return cy.get(`[data-plasmic-prop="${prop}"]`); -} - -export function expandSection(sectionId: string) { - cy.get( - `[data-test-id="${sectionId}"] [data-test-id="show-extra-content"]` - ).click({ timeout: 30000 }); -} - -export function selectDataPlasmicProp( - prop: string, - value: string | { key: string } -) { - return selectPropOption(`[data-plasmic-prop="${prop}"]`, value); -} - -export function selectPropOption( - propSelector: string, - value: string | { key: string } -) { - cy.get(propSelector).click(); - cy.selectOption(value); -} - -export function selectOption(value: string | { key: string }) { - // This is the old code, which should work, but stopped working since upgrading react-aria. - // Cypress is doing its job correctly, setting the value of the hidden select. - // However, at some point, before our code (react-web) handles the event, - // somehow the value is reset to the original value. - // cy.get("select").select(value, { force: true }); - if (typeof value === "string") { - cy.contains(`[role=option] *`, value).parents("[role=option]").click(); - } else { - cy.get(`[data-key="${value.key}"]`).click(); - } -} - -export function pickIntegration(maybeName?: string) { - const name = maybeName ?? Cypress.env("dataSourceId"); - if (!name) { - return; - } - cy.get("#data-source-modal-pick-integration-btn").then(($el) => { - if ($el.length > 0) { - cy.wrap($el).click(); - cy.withinTopFrame(() => { - cy.setSelectByValue("dataSource", name); - cy.contains("Confirm").click(); - }); - } else { - cy.selectDataPlasmicProp("dataSource", name); - } - }); -} - -export function multiSelectDataPlasmicProp(prop: string, values: string[]) { - cy.get(`[data-plasmic-prop="${prop}"]`).click(); - - // Remove existing values, if any - Cypress.$( - `[data-plasmic-prop="${prop}"] [data-test-id="multi-select-value"]` - ).each(() => { - cy.get(`[data-plasmic-prop="${prop}"]`).click().type("{backspace}"); - }); - - // Add values - for (const val of values) { - cy.get(`[data-plasmic-prop="${prop}"]`).type(`${val}{enter}`); - } -} - -export function addHtmlAttribute(attr: string, value: string) { - cy.get(`[data-test-id="add-html-attribute"]`).click(); - justType(`${attr}{enter}`); - cy.setDataPlasmicProp(attr, value); -} - -export function getTextFromId(id: string) { - return cy - .get(`[data-test-id="${id}"]`) - .invoke("text") - .then((text) => { - Cypress.log({ name: "text", message: text }); - return text; - }); -} - -export function closeDataPicker() { - cy.get(`[data-test-id="data-picker"]`) - .contains("button", "Cancel") - .click() - .wait(100); -} - -export function resetMonacoEditorToCode(code: string) { - cy.wait(1000); - cy.get('[data-test-id="data-picker"] .react-monaco-editor-container').click(); - cy.justType("{cmd}a{backspace}"); - cy.curFocused().paste(code); - cy.get(`[data-test-id="data-picker"]`) - .contains("button", "Save") - .wait(100) - .click() - .wait(100); -} - -export function closeMonacoEditor() { - // Monaco may show suggestion popups while typing. - // These popups handle the Escape key, interfering with the outer Modal. - // Ensure the suggestion popup is not visible before trying to close. - cy.get(`.monaco-editor .suggest-widget`).should("not.be.visible"); - cy.justType(`{esc}`); // otherwise esc may close the popup instead of Monaco! -} - -export function repeatOnCustomCode(code: string) { - cy.get(`[data-test-id="btn-repeating-element-add"]`).click(); - cy.get( - `[data-test-id="repeating-element-collection"] .code-editor-input` - ).click(); - cy.ensureDataPickerInCustomCodeMode(); - cy.resetMonacoEditorToCode(code); -} - -export function getPropEditorRow(prop: string) { - return cy.contains('[data-test-id^="prop-editor-row-"]', prop); -} - -export function removePropValue(prop: string) { - cy.getPropEditorRow(prop).rightclick(); - cy.contains(`Remove ${prop} prop`).click(); -} - -export function propAddItem(prop: string) { - cy.getPropEditorRow(prop).contains("Add item").click(); -} - -export function enterCustomCodeInDataPicker(code: string) { - cy.ensureDataPickerInCustomCodeMode(); - cy.wait(500); - cy.resetMonacoEditorToCode(code); -} - -export function bindPlasmicPropToCustomCode(name: string, code: string) { - cy.get(`[data-test-id="prop-editor-row-${name}"]`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.wait(500); - enterCustomCodeInDataPicker(code); -} - -export function bindPlasmicPropToObjectPath(name: string, path: string[]) { - cy.get(`[data-test-id="prop-editor-row-${name}"]`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.wait(500); - cy.selectPathInDataPicker(path); - cy.wait(500); -} - -export function bindTextContentToCustomCode(code: string) { - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.wait(500); - cy.ensureDataPickerInCustomCodeMode(); - cy.wait(500); - cy.resetMonacoEditorToCode(code); -} - -export function bindTextContentToObjectPath(path: string[]) { - cy.get(`[data-test-id="text-content"] label`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.wait(500); - cy.selectPathInDataPicker(path); - cy.wait(500); -} - -export function ensureDataPickerInCustomCodeMode() { - return cy.get('[data-test-id="data-picker"]').then(($dataPicker) => { - if ($dataPicker.text().includes("Switch to Code")) { - return cy.contains("Switch to Code").click(); - } - }); -} - -export function selectPathInDataPicker(path: string[], save: boolean = true) { - path.forEach((val, index) => { - cy.get( - `[data-test-id="data-picker"] [data-test-id="${index}-${val}"]` - ).click(); - }); - if (save) { - cy.get('[data-test-id="data-picker"]').contains("Save").click().wait(200); - } -} - -function disableTours() { - cy.window().then((win) => { - win.localStorage.setItem("plasmic.tours.top-project-nav", "true"); - }); -} - -function switchRightTab(key: string) { - clickIfExists(`button[data-test-tabkey="${key}"][aria-selected="false"]`); -} - -export function switchToDataTab() { - switchRightTab("component"); -} - -function switchToSettingsRightTab() { - switchRightTab("settings"); -} - -export type StateType = Omit< - State, - "typeTag" | "uid" | "param" | "onChangeParam" | "tplNode" | "implicitState" -> & { - accessType: StateAccessType; - variableType: StateVariableType; - name: string; - onChangeParam?: string; - initialValue: string | undefined; - isInitValDynamicValue?: boolean; -}; - -export function changeStateAccessType( - stateName: string, - oldAccessType: StateAccessType, - newAccessType: StateAccessType -) { - switchToDataTab(); - cy.get(`[data-test-id="${stateName}"]`).click().wait(200); - if ( - (oldAccessType === "private" || newAccessType === "private") && - (oldAccessType !== "private" || newAccessType !== "private") - ) { - cy.get('[data-test-id="allow-external-access"]') - .click({ force: true }) - .wait(200); - } - cy.selectDataPlasmicProp("access-type", { key: newAccessType }); - cy.get(`[data-test-id="close-sidebar-modal"]`).click().wait(200); -} - -export function checkNumberOfStatesInComponent( - explicit: number, - implicit: number -) { - switchToDataTab(); - cy.get(`[data-test-type="variable-row"]`).should("have.length", explicit); - if (!implicit) { - cy.get( - `[data-test-id="variables-section"] [data-test-id="show-extra-content"]` - ).should("not.exist"); - } else { - expandSection("variables-section"); - cy.get(`[data-test-type="implicit-variable-row"]`).should( - "have.length", - implicit - ); - } -} - -export function addState(state: StateType) { - switchToDataTab(); - cy.get('[data-test-id="add-state-btn"]').click().wait(200); - cy.get(`[data-plasmic-prop="variable-name"]`).click(); - cy.justType(`{selectAll}{backspace}${state.name}`).wait(200); - cy.selectDataPlasmicProp("variable-type", { key: state.variableType }); - if (state.isInitValDynamicValue || state.initialValue == null) { - cy.get(`[data-test-id="prop-editor-row-initial-value"]`).rightclick(); - cy.contains("Use dynamic value").click(); - cy.ensureDataPickerInCustomCodeMode(); - cy.resetMonacoEditorToCode( - state.initialValue != null ? state.initialValue : "undefined" - ); - } else { - cy.setDataPlasmicProp("initial-value", state.initialValue, { - reset: true, - omitEnter: true, - codeEditor: ["array", "object"].includes(state.variableType), - }); - } - if (state.accessType !== "private") { - cy.get('label [data-test-id="allow-external-access"]') - .parents("label") - .click() - .wait(200); - cy.selectDataPlasmicProp("access-type", { key: state.accessType }); - } - cy.get('[data-test-id="confirm"]').click().wait(200); -} - -interface InteractionType { - actionName: keyof typeof ACTIONS_META; - isMultiVariant?: boolean; - args: Record>; - dynamicArgs?: Record; - mode?: "always" | "never" | "when"; - conditionalExpr?: string; -} - -export function addInteraction( - eventHandler: string, - interactions: InteractionType | InteractionType[] -) { - switchToSettingsRightTab(); - cy.wait(300); - cy.get(`[data-test-id="add-interaction"]`).click().wait(200); - justType(`${eventHandler}{enter}`); - ensureArray(interactions).forEach((interaction, interactionIndex, list) => { - cy.wait(500); - cy.selectDataPlasmicProp("action-name", { key: interaction.actionName }); - for (const argName in interaction.args) { - cy.wait(500); - if (argName === "operation") { - const argVal = - interaction.actionName === "updateVariable" - ? updateVariableOperations[ - interaction.args[ - argName - ] as keyof typeof updateVariableOperations - ] - : updateVariantOperations[ - interaction.args[ - argName - ] as keyof typeof updateVariantOperations - ]; - cy.selectDataPlasmicProp(argName, { key: `${argVal}` }); - } else if (argName === "variable") { - const argVal = interaction.args[argName] as string[]; - cy.get(`[data-plasmic-prop="${argName}"]`).click(); - cy.selectPathInDataPicker(argVal); - } else if (["value", "customFunction"].includes(argName)) { - if (interaction.actionName === "updateVariant") { - if (interaction.isMultiVariant) { - const argVal = interaction.args[argName] as string[]; - cy.multiSelectDataPlasmicProp(argName, argVal); - } else { - const argVal = interaction.args[argName] as string; - cy.selectDataPlasmicProp(argName, argVal); - } - } else { - const argVal = interaction.args[argName] as string; - cy.get(`[data-plasmic-prop="${argName}"]`).click(); - cy.resetMonacoEditorToCode(argVal); - } - } else if (argName === "vgroup") { - const argVal = interaction.args[argName] as string; - cy.selectDataPlasmicProp(argName, argVal); - } else if (argName === "args") { - const argVal = interaction.args[argName] as Record; - for (const eventHandlerArg in argVal) { - cy.get(`[data-plasmic-prop="${eventHandlerArg}"]`) - .rightclick() - .wait(300); - cy.contains("Use dynamic value").click().wait(1000); - cy.ensureDataPickerInCustomCodeMode(); - cy.resetMonacoEditorToCode(argVal[eventHandlerArg]); - } - } else if (argName === "dataSourceOp") { - const dataSourceOpOptions = interaction.args[argName] as Record< - string, - any - >; - cy.clickDataPlasmicProp("data-source-open-modal-btn"); - cy.createDataSourceOperation( - dataSourceOpOptions["integration"], - dataSourceOpOptions["args"] - ); - } else { - const argVal = interaction.args[argName] as string; - cy.setDataPlasmicProp(argName, argVal); - } - } - for (const argName in interaction.dynamicArgs) { - const argVal = interaction.dynamicArgs[argName]; - cy.get(`[data-plasmic-prop="${argName}"]`).rightclick().wait(300); - cy.contains("Use dynamic value").click().wait(1000); - cy.ensureDataPickerInCustomCodeMode(); - cy.resetMonacoEditorToCode(argVal); - } - if (interaction.mode) { - cy.clickDataPlasmicProp(`mode-${interaction.mode}`); - if (interaction.mode === "when") { - cy.clickDataPlasmicProp(`conditional-expr`); - cy.resetMonacoEditorToCode(interaction.conditionalExpr ?? ""); - } - } - if (interactionIndex + 1 < list.length) { - cy.get(`[data-test-id="add-new-action"]`).click({ force: true }); - } - }); - cy.get(`[data-test-id="close-sidebar-modal"]`).click().wait(200); -} - -export function switchInteractiveMode() { - cy.get(`[data-test-id="interactive-switch"]`).click({ force: true }); -} - -export function getDevFlags() { - return cy - .login("admin@admin.example.com") - .request({ - url: "/api/v1/admin/devflags", - method: "GET", - log: false, - }) - .then((resp) => JSON.parse(resp.body.data) as DevFlagsType); -} - -export function upsertDevFlags(devFlags: Partial) { - return cy.login("admin@admin.example.com").request({ - url: "/api/v1/admin/devflags", - method: "PUT", - log: false, - body: { - data: JSON.stringify(devFlags), - }, - }); -} - -export function createTutorialDb(type: string) { - return cy - .login("admin@admin.example.com") - .request({ - url: "/api/v1/admin/create-tutorial-db", - method: "POST", - log: false, - body: { - type, - }, - }) - .its("body.id", { log: false }); -} - -export function createTutorialDataSource(type: string, dsname: string) { - cy.login() - .request({ - url: "/api/v1/personal-workspace", - method: "GET", - log: false, - }) - .its("body.workspace.id") - .then((wsId) => { - createTutorialDb(type).then((dbId) => { - cy.createDataSource({ - source: "tutorialdb", - name: dsname, - workspaceId: wsId, - credentials: { - tutorialDbId: dbId, - }, - settings: { - type: TUTORIAL_DB_TYPE, - }, - }); - }); - }); -} - -export function cloneProject(opts: { - projectId: string; - name?: string; - workspaceId?: string; -}) { - const { projectId, name, workspaceId } = opts; - return cy - .login() - .request({ - url: `/api/v1/projects/${projectId}/clone`, - method: "POST", - log: false, - body: { - name, - workspaceId, - }, - }) - .its("body", { log: false }); -} - -export function deleteProjectAndRevisions(projectId: string) { - return cy.login("admin@admin.example.com").request({ - url: `/api/v1/admin/delete-project-and-revisions`, - method: "DELETE", - body: { - projectId, - }, - log: false, - }); -} - -export function createDataSource( - dataSourceInfo: Partial & { - workspaceId?: string; - } -) { - return cy - .login() - .request({ - url: `/api/v1/data-source/sources`, - method: "POST", - log: false, - body: dataSourceInfo, - }) - .its("body.id", { log: false }) - .then((id: string) => { - Cypress.env("dataSourceId", id); - }); -} - -export function addComponentQuery() { - cy.get("#data-queries-add-btn").click(); - cy.wait(200); -} - -export function pickDataSource(name: string) { - cy.get("#data-source-modal-pick-integration-btn").click(); - withinTopFrame(() => { - setSelectByLabel("dataSource", name); - // In this within(), for some reason, .contains() doesn't work. - // It internally uses :cy-contains(), and for some reason it's just not matching the elements. - // But these selectors continue to work. - cy.get("button:contains(Confirm)").click(); - }); -} - -/** - * This assumes the bottom modal is already focused - * Must set args["operation"] for the Data Source operation and - * args["resource"] for the Data Source table - */ -export function createDataSourceOperation( - name: string, - args: Record< - string, - { value: string; isDynamicValue?: boolean; inputType?: string; opts?: any } - > -) { - cy.wait(2000); - cy.selectDataPlasmicProp("data-source-modal-pick-integration-btn", name); - cy.selectDataPlasmicProp("data-source-modal-pick-operation-btn", { - key: args["operation"].value, - }); - if (args["resource"]) { - cy.selectDataPlasmicProp( - "data-source-modal-pick-resource-btn", - args["resource"].value - ); - } - Object.entries(args) - .filter(([key, _value]) => !["operation", "resource"].includes(key)) - .forEach(([key, value]) => { - if (value.inputType) { - cy.clickDataPlasmicProp(`${key}-${value.inputType}`); - } - if (value.isDynamicValue) { - // Open data picker - cy.setDataPlasmicProp(key, "{{}{{}"); - enterCustomCodeInDataPicker(value.value); - } else { - cy.setDataPlasmicProp( - key, - value.value, - value.opts ? { ...value.opts } : undefined - ); - } - }); - cy.saveDataSourceModal(); -} - -export function saveDataSourceModal() { - cy.get("#data-source-modal-save-btn").click({ force: true }); -} - -export function createFakeDataSource() { - const fakeDataSourceName = `Fake Data Source ${mkShortId()}`; - return cy.createDataSource({ - source: "fake", - name: fakeDataSourceName, - }); -} - -export function autoOpenBanner() { - cy.get(".canvas-editor").contains("Auto-showing hidden element."); -} - -export function pressPublishButton() { - waitForSave(); - cy.get("#topbar-publish-btn").click(); -} - -export function closeSidebarModal() { - // Multiple can exist, if you are in a nested sidebar modal. - // First one is hidden but :visible doesn't work in filtering. - // So just select the last. - cy.get('#sidebar-modal [data-test-id="close-sidebar-modal"]').last().click(); -} - -export function showMoreInSidebarModal() { - // Multiple can exist, if you are in a nested sidebar modal. - // First one is hidden but :visible doesn't work in filtering. - // So just select the last. - cy.get('#object-prop-editor-modal [data-test-id="show-extra-content"]') - .last() - .click(); -} - -export const TUTORIAL_DB_TYPE = "northwind"; - -export function setSelectByLabel(selectName: string, label: string) { - cy.effectiveWindow().then((w) => { - // Use get as a query to let this be retryable - cy.get("*").should(() => { - expect(w.dbg.testControls?.[selectName]?.setByLabel(label)).not.to.be - .undefined; - }); - }); -} - -export function setSelectByValue(selectName: string, value: string) { - cy.effectiveWindow().then((w) => { - // Use get as a query to let this be retryable - cy.get("*").should(() => { - expect(w.dbg.testControls?.[selectName]?.setByValue(value)).not.to.be - .undefined; - }); - }); -} - -export function updateFormValuesLiveMode(newValues: { - inputs?: Record; - selects?: Record; - radios?: Record; -}) { - const { inputs = {}, selects = {}, radios = {} } = newValues; - for (const key in inputs) { - cy.get("#plasmic-app div").find(`label[for="${key}"]`).type(inputs[key]); - } - for (const key in selects) { - cy.get("#plasmic-app div") - .find(`label[for="${key}"]`) - .parent() - .get(`.ant-select-selector`) - .click() - .get(".ant-select-item-option") - .contains(selects[key]) - .click(); - } - for (const key in radios) { - cy.get("#plasmic-app div") - .find(`label[for="${key}"]`) - .parent() - .get(".ant-radio-wrapper") - .contains(radios[key]) - .prev() - .find("input") - .check(); - } -} - -export interface ExpectedFormItem { - label: string; - name: string; - type: string; - value?: any; -} - -function clone(obj: T): T { - return JSON.parse(JSON.stringify(obj)); -} - -function checkFormValues( - expectedFormItems: ExpectedFormItem[], - root: () => Cypress.Chainable> -) { - for (const item of clone(expectedFormItems)) { - if (item.type !== "Checkbox") { - root().find(`label[for="${item.name}"]`).contains(item.label); - } - if (item.value) { - if (item.type === "Text Area") { - root() - .find(`textarea[id="${item.name}"]`) - .invoke("val") - .should("have.string", item.value); - } else if (item.type === "Select") { - root() - .find(`label[for="${item.name}"]`) - .parent() - .parent() - .children() - .eq(1) - .should("have.text", item.value); - } else if (item.type === "Checkbox") { - root().find(`input[id="${item.name}"]`).should("be.checked"); - } else if (item.type === "Radio Group") { - root().find(`input[value="${item.value}"]`).should("be.checked"); - } else if (item.type === "DatePicker") { - root() - .find(`input[value="${item.value.slice(0, 10)}"]`) - .should("be.visible"); - } else { - root() - .find(`input[id="${item.name}"]`) - .should("have.value", item.value); - } - } - } -} - -export function checkFormValuesInCanvas( - expectedFormItems: ExpectedFormItem[], - framed: Framed -) { - checkFormValues(expectedFormItems, () => framed.rootElt()); -} - -export function checkFormValuesInLiveMode( - expectedFormItems: ExpectedFormItem[] -) { - checkFormValues(expectedFormItems, () => cy.get(`#plasmic-app div`)); -} - -export function getFormValue(expectedFormItems: ExpectedFormItem[]) { - const values = Object.fromEntries( - expectedFormItems - .filter((formItem) => formItem.value != null) - .map((formItem) => [formItem.name, formItem.value]) - ); - return JSON.stringify(values, Object.keys(values).sort()); -} - -/** - * Set up custom app host for testing code components - * @param page - the page to host - */ -export function configureProjectAppHost(page: string) { - cy.wait(500); - cy.get(`[data-test-id="project-menu-btn"]`).click({ force: true }); - cy.wait(500); - cy.get(`[data-test-id="configure-project"]`).click({ force: true }); - cy.withinTopFrame(() => { - const plasmicHost = `http://localhost:${ - Cypress.env("CUSTOM_HOST_PORT") || 3000 - }/${page}`; - cy.get(`[data-test-id="host-url-input"]`).clear().type(plasmicHost); - cy.contains("Confirm").click(); - cy.log(`Please make sure host-test package is running at ${plasmicHost}`); - cy.wait(3000); - cy.get( - `iframe[src^="http://localhost:${ - Cypress.env("CUSTOM_HOST_PORT") || 3000 - }/${page}"]`, - { timeout: 60000 } - ); - cy.reload({ timeout: 120000 }); - }); -} - -/** - * Delete selected element with comments - */ -export function deleteSelectionWithComments() { - cy.getSelectedElt().rightclick({ force: true }); - cy.contains("Delete").click(); - cy.get(".ant-modal").should("exist"); - cy.get('[data-test-id="confirm"]').click(); - cy.get(".ant-modal").should("not.exist"); -} - -/** - * Adds a new comment thread to the currently selected element - */ -export function addCommentToSelection(text: string) { - cy.getSelectedElt().rightclick({ force: true }); - cy.contains("Add comment").click(); - cy.get("[data-test-id='comment-post-text-area']").type(text); - cy.get("[data-test-id='comment-post-submit-button']").click(); -} - -/** - * Opens the comment thread dialog for a specific thread - */ -export function openCommentThread(threadId: string) { - cy.get(`[data-test-id='comment-marker-${threadId}']`).click(); -} - -/** - * Closes the currently open comment thread dialog - */ -export function closeCommentThread() { - cy.get("[data-test-id='thread-comment-dialog-close-btn']").click(); -} - -/** - * Open comments tab - */ -export function openCommentTab() { - cy.get("[data-test-id='top-comment-icon']").click(); - cy.get(".comments-tab").should("exist"); -} - -/** - * Click comment thread in comments tab - */ -export function clickCommentPost(threadId: string) { - cy.get(`[data-test-id='comment-post-${threadId}']`).click(); - cy.get(".comments-tab").should("exist"); -} diff --git a/platform/wab/cypress/tsconfig.json b/platform/wab/cypress/tsconfig.json deleted file mode 100644 index 1814a9e76e..0000000000 --- a/platform/wab/cypress/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "strict": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true, - "target": "es2019", - "types": ["cypress", "cypress-real-events"] - }, - "include": ["**/*.ts"] -} diff --git a/platform/wab/package.json b/platform/wab/package.json index 4ac23f6b1f..dd0efb9440 100644 --- a/platform/wab/package.json +++ b/platform/wab/package.json @@ -12,7 +12,7 @@ "dev": "bash tools/dev.bash", "dev:screens": "bash tools/start.bash", "dev:frontend": "wait-on http://localhost:3004 && PORT=3003 yarn start", - "dev:frontend:prodbuild": "wait-on http://localhost:3004 && PUBLIC_URL=http://localhost:3003 bash tools/dev-server.bash build && yarn dev:frontend:proxy", + "dev:frontend:prodbuild": "wait-on http://localhost:3004 && PUBLIC_URL=http://localhost:3003 STATIC_URL=http://localhost:3003 bash tools/dev-server.bash build && yarn dev:frontend:proxy", "dev:frontend:proxy": "cd build && npx -p local-web-server ws --spa index.html --port 3003 --cors.origin '*' --rewrite '/api/(.*) -> http://localhost:3004/api/$1'", "dev:backend": "NODE_ENV=development yarn backend", "start": "bash tools/dev-server.bash dev", @@ -37,7 +37,7 @@ "email:sync": "cd src/wab/server/emails/templates && plasmic sync -p taNK5uwsoPrzfpYmBVwUwX --skip-upgrade-check && vite-node ../tools/remove-css-imports.ts", "email:generate": "cd src/wab/server/emails/host && vite-node ../tools/test-email.mts", "prepare": "if [ -n \"$PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD\" ]; then echo \"Skipping Playwright download (PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD set)\"; else playwright install chromium; fi", - "eslint-all": "yarn --cwd ../.. eslint platform/wab", + "eslint-all": "pnpm --dir ../.. exec eslint platform/wab", "test": "NODE_OPTIONS='--max-old-space-size=8192' jest --runInBand --forceExit", "test:ci": "NODE_OPTIONS='--max-old-space-size=8192' jest --maxWorkers=1 --workerIdleMemoryLimit=4096MB --forceExit", "test:coverage": "NODE_OPTIONS='--max-old-space-size=8192' jest --coverage", @@ -72,81 +72,84 @@ "author": "Plasmic Team", "gitHead": "14cfee473c6a27212c54d536a8bd531c84e9fb68", "devDependencies": { +<<<<<<< HEAD "@cypress/webpack-preprocessor": "^5.4.1", "@plasmicapp/cli": "^0.1.360", +======= + "@plasmicapp/cli": "^0.1.369", +>>>>>>> upstream/master "@rsbuild/core": "1.3.22", "@rsbuild/plugin-less": "1.2.4", "@rsbuild/plugin-react": "1.3.1", "@rsbuild/plugin-sass": "1.3.1", "@rspack/core": "1.3.12", - "@storybook/addon-essentials": "^7.6.20", - "@storybook/addon-interactions": "^7.6.20", - "@storybook/addon-links": "^7.6.20", - "@storybook/addon-onboarding": "^1.0.8", + "@storybook/addon-essentials": "^7.6.24", + "@storybook/addon-interactions": "^7.6.24", + "@storybook/addon-links": "^7.6.24", + "@storybook/addon-onboarding": "^1.0.11", "@storybook/jest": "^0.2.3", - "@storybook/preset-create-react-app": "^7.6.20", - "@storybook/react": "^7.6.20", - "@storybook/react-webpack5": "^7.6.20", + "@storybook/preset-create-react-app": "^7.6.24", + "@storybook/react": "^7.6.24", + "@storybook/react-webpack5": "^7.6.24", "@storybook/test-runner": "^0.23.0", "@storybook/testing-library": "^0.2.2", - "@storybook/types": "^7.6.20", + "@storybook/types": "^7.6.24", "@sucrase/jest-plugin": "^3.0.0", "@swc/helpers": "^0.4.14", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^14.0.0", - "@testing-library/user-event": "^14.4.3", - "@types/async": "^3.2.3", + "@testing-library/user-event": "^14.6.1", + "@types/async": "^3.2.25", "@types/bcrypt": "^5.0.0", "@types/body-parser": "^1.19.6", - "@types/chroma-js": "^2.0.0", + "@types/chroma-js": "^2.4.5", "@types/chrome": "^0.0.123", "@types/cryptr": "^4.0.1", - "@types/css-tree": "^2.3.10", - "@types/errorhandler": "^1.5.0", + "@types/css-tree": "^2.3.11", + "@types/errorhandler": "^1.5.3", "@types/escodegen": "^0.0.7", "@types/estree": "^1.0.4", - "@types/express": "^4.17.7", + "@types/express": "^4.17.25", "@types/express-fileupload": "^1.5.1", - "@types/express-session": "^1.17.0", + "@types/express-session": "^1.18.2", "@types/glob": "^7.1.3", "@types/history": "^4.7.6", - "@types/inquirer": "^9.0.3", + "@types/inquirer": "^9.0.9", "@types/jest": "^26.0.4", "@types/jquery": "^3.5.0", "@types/json-logic-js": "^2.0.8", - "@types/lodash": "^4.14.157", - "@types/lusca": "^1.6.2", - "@types/mime-types": "^2.1.1", - "@types/mousetrap": "^1.6.3", + "@types/lodash": "^4.17.24", + "@types/lusca": "^1.7.5", + "@types/mime-types": "^2.1.4", + "@types/mousetrap": "^1.6.15", "@types/node": "^24", - "@types/node-fetch": "^2.5.7", + "@types/node-fetch": "^2.6.13", "@types/nodemailer": "^6.4.0", - "@types/passport": "^1.0.16", - "@types/passport-google-oauth20": "^2.0.11", + "@types/passport": "^1.0.17", + "@types/passport-google-oauth20": "^2.0.17", "@types/passport-local": "^1.0.38", - "@types/passport-oauth2": "^1.4.17", + "@types/passport-oauth2": "^1.8.0", "@types/passport-strategy": "^0.2.38", "@types/pg": "^7.14.4", - "@types/platform": "^1.3.2", + "@types/platform": "^1.3.6", "@types/pluralize": "^0.0.29", "@types/react-beautiful-dnd": "^13.0.0", - "@types/react-csv": "^1.1.3", + "@types/react-csv": "^1.1.10", "@types/react-dom": "^18.3.5", "@types/react-helmet": "^6.0.0", "@types/react-inspector": "^4.0.1", "@types/react-router-dom": "^5.2.0", "@types/react-virtualized-auto-sizer": "^1.0.0", "@types/react-window": "^1.8.2", - "@types/resize-observer-browser": "^0.1.5", - "@types/signals": "^1.0.1", - "@types/tmp": "^0.2.0", - "@types/underscore.string": "^0.0.38", + "@types/resize-observer-browser": "^0.1.11", + "@types/signals": "^1.0.4", + "@types/tmp": "^0.2.6", + "@types/underscore.string": "^0.0.42", "@types/url-join": "^4.0.0", "@types/uuid": "^8.0.0", - "@types/validator": "^13.1.0", + "@types/validator": "^13.15.10", "@types/workerpool": "^6.0.0", - "@types/xml": "^1.0.11", - "@vitejs/plugin-react": "^4.4.1", + "@vitejs/plugin-react": "^4.7.0", "babel-jest": "^29.7.0", "concurrently": "^5.3.0", "graphql-ws": "5.16.0", @@ -160,12 +163,12 @@ "monaco-editor-webpack-plugin": "7.1.0", "pegjs": "~0.10.0", "pegjs-coffee-plugin": "~0.3.0", - "playwright": "1.38.1", + "playwright": "1.60.0", "prando": "^6.0.1", "storybook": "^7.6.20", - "sucrase": "^3.35.0", + "sucrase": "^3.35.1", "ts-node": "^10.9.2", - "type-fest": "^4.15.0", + "type-fest": "^4.41.0", "vite": "^6.4.2", "vite-node": "^3.2.4", "wait-on": "9.0.1", @@ -176,12 +179,11 @@ }, "dependencies": { "@ai-sdk/anthropic": "^3.0.0", - "@ai-sdk/google-vertex": "^3.0.97", + "@ai-sdk/google-vertex": "^4.0.0", "@ai-sdk/openai": "^3.0.0", - "@ai-sdk/react": "^3.0.55", - "@amplitude/analytics-browser": "2.11.1", - "@amplitude/analytics-node": "1.3.6", + "@ai-sdk/react": "^3.0.0", "@apidevtools/swagger-parser": "^10.0.2", +<<<<<<< HEAD "@aws-sdk/client-cloudfront": "^3.319.0", "@aws-sdk/client-dynamodb": "^3.319.0", "@babel/core": "^7.28.4", @@ -193,6 +195,18 @@ "@babel/types": "^7.28.4", "@clickhouse/client": "^0.2.1", "@figma-plugin/helpers": "^0.15.1", +======= + "@aws-sdk/client-dynamodb": "^3.1030.0", + "@babel/core": "^7.29.0", + "@babel/generator": "^7.29.1", + "@babel/parser": "^7.29.3", + "@babel/plugin-proposal-decorators": "^7.29.0", + "@babel/preset-env": "^7.29.2", + "@babel/preset-typescript": "^7.28.5", + "@babel/types": "^7.29.0", + "@clickhouse/client": "^0.2.10", + "@figma-plugin/helpers": "^0.15.2", +>>>>>>> upstream/master "@fortawesome/fontawesome": "^1.1.8", "@fortawesome/fontawesome-free": "^5.14.0", "@fortawesome/fontawesome-svg-core": "^1.2.30", @@ -204,33 +218,32 @@ "@google-cloud/vertexai": "^1.10.0", "@graphiql/plugin-explorer": "3.2.3", "@graphiql/react": "0.26.2", - "@graphiql/toolkit": "0.11.1", - "@octokit/app": "^16.1.1", - "@octokit/core": "^7.0.5", + "@graphiql/toolkit": "^0.11.3", + "@octokit/app": "^16.1.2", + "@octokit/core": "^7.0.6", "@octokit/plugin-paginate-rest": "^13.2.0", "@okta/jwt-verifier": "^4.0.2", - "@opentelemetry/api": "^1.9.0", + "@opentelemetry/api": "^1.9.1", "@pankod/refine-core": "^3.58.1", - "@pankod/refine-supabase": "^4.3.0", - "@plasmicapp/data-sources": "^1.0.2", - "@plasmicapp/data-sources-context": "0.1.23", - "@plasmicapp/host": "^2.0.1", - "@plasmicapp/loader-react": "^2.0.2", - "@plasmicapp/query": "^0.1.84", - "@plasmicapp/react-web": "^1.0.2", - "@plasmicpkgs/antd5": "^0.0.339", - "@plasmicpkgs/commerce-local": "^0.0.242", - "@plasmicpkgs/plasmic-basic-components": "^0.0.273", - "@plasmicpkgs/plasmic-embed-css": "^0.1.228", - "@plasmicpkgs/react-aria": "^0.0.176", - "@popperjs/core": "2.11.6", + "@plasmicapp/data-sources": "^1.0.23", + "@plasmicapp/data-sources-context": "0.1.25", + "@plasmicapp/host": "^2.0.14", + "@plasmicapp/loader-react": "^2.0.17", + "@plasmicapp/query": "^0.1.87", + "@plasmicapp/react-web": "^1.0.28", + "@plasmicpkgs/antd5": "^0.0.365", + "@plasmicpkgs/commerce-local": "^0.0.255", + "@plasmicpkgs/plasmic-basic-components": "^0.0.286", + "@plasmicpkgs/plasmic-embed-css": "^0.1.241", + "@plasmicpkgs/react-aria": "^0.0.192", + "@popperjs/core": "2.11.8", "@qualifyze/airtable-formulator": "^1.3.1", "@react-awesome-query-builder/antd": "^6.6.15", "@react-email/components": "^0.0.38", "@sentry/browser": "6.6.0", "@sentry/integrations": "6.6.0", "@sentry/node": "6.6.0", - "@simonwep/pickr": "^1.8.0", + "@simonwep/pickr": "^1.9.1", "@stripe/react-stripe-js": "^1.4.1", "@stripe/stripe-js": "^1.16.0", "@supabase/supabase-js": "^2.38.4", @@ -239,84 +252,91 @@ "@ts-rest/express": "3.52.1", "@types/react": "^18.3.18", "@xmldom/xmldom": "^0.8.12", - "@xyflow/react": "^12.8.6", + "@xyflow/react": "^12.10.2", "@zxcvbn-ts/core": "^3.0.4", "@zxcvbn-ts/language-common": "^3.0.4", "@zxcvbn-ts/language-en": "^3.0.2", "@zxcvbn-ts/matcher-pwned": "^3.0.4", - "acorn": "^8.10.0", - "acorn-walk": "^8.2.0", + "acorn": "^8.16.0", + "acorn-walk": "^8.3.5", "ai": "^6.0.0", "airtable": "0.12.2", "antd": "^4.24.14", - "async": "^3.2.0", + "async": "^3.2.6", "async-mutex": "^0.4.0", - "aws-sdk": "^2.1666.0", + "aws-sdk": "^2.1693.0", "axios": "^1.15.0", "bcrypt": "^6.0.0", "body-parser": "^1.20.4", "buffer": "^6.0.3", - "chroma-js": "^2.1.0", + "chroma-js": "^2.6.0", "class-validator": "^0.14.0", "classnames": "^2.3.2", - "coffeescript": "^2.5.1", - "comlink": "^4.3.1", - "commander": "^11.0.0", + "coffeescript": "^2.7.0", + "comlink": "^4.4.2", + "commander": "^11.1.0", "connect-typeorm": "^1.1.4", - "constate": "^3.3.2", - "cookie-parser": "^1.4.6", + "constate": "^3.3.3", + "cookie-parser": "^1.4.7", "copy-to-clipboard": "^3.3.1", - "core-js": "^3.32.0", - "cors": "^2.8.5", + "core-js": "^3.49.0", + "cors": "^2.8.6", "cryptr": "^6.0.2", "css-initials": "^0.3.1", - "css-tree": "^3.1.0", + "css-tree": "^3.2.1", "css.escape": "^1.5.1", +<<<<<<< HEAD "dayjs": "^1.11.9", "dd-trace": "^5.0.0", +======= + "dayjs": "^1.11.20", +>>>>>>> upstream/master "debug": "2.6.9", - "dom-align": "^1.12.0", + "dom-align": "^1.12.4", "dotenv": "^8.2.0", "downscale": "^1.0.6", - "downshift": "^6.1.9", - "emoji-picker-react": "^4.9.3", - "errorhandler": "^1.5.1", - "esbuild": "^0.18.0", + "downshift": "^6.1.12", + "emoji-picker-react": "^4.18.0", + "errorhandler": "^1.5.2", + "esbuild": "^0.25.0", "esbuild-register": "^3.6.0", "escodegen": "^2.1.0", "execa": "^5.1.1", "express": "^4.22.1", "express-async-errors": "^3.1.1", "express-fileupload": "^1.5.2", - "express-prom-bundle": "^6.4.1", - "express-rate-limit": "^7.1.5", - "express-session": "^1.17.1", + "express-prom-bundle": "^6.6.0", + "express-rate-limit": "^7.5.1", + "express-session": "^1.19.0", "fast-stringify": "2.0.0", "file-type": "^16.5.4", "file-type-browser": "^1.0.0", "font-awesome": "^4.7.0", - "framer-motion": "^7.6.7", - "get-port": "^7.0.0", + "get-port": "^7.2.0", "glob": "^7.1.6", "gpt3-tokenizer": "^1.1.5", "graphiql": "3.7.0", - "graphql": "^16.7.1", - "hibp": "^11.1.0", + "graphql": "^16.13.2", + "hibp": "^11.1.1", "history": "^4.9.0", - "html2canvas": "^1.0.0-rc.7", + "html2canvas": "^1.4.1", "http-proxy": "^1.18.1", +<<<<<<< HEAD "immer": "^10.0.2", "ioredis": "^5.3.2", +======= + "immer": "^10.2.0", +>>>>>>> upstream/master "immutable": "5.1.5", "inquirer": "^9.2.9", "is-hotkey": "^0.1.6", "isomorphic-unfetch": "^3", "jquery": "~3.5.1", "jquery-serializejson": "^2.9.0", - "js-cookie": "^3.0.1", + "js-cookie": "^3.0.5", "js-string-escape": "^1.0.1", "jsdom": "^22.1.0", - "jsonrepair": "^2.2.1", + "jsonrepair": "^3.15.0", "jsonwebtoken": "9.0.3", "lodash": "^4.18.1", "lusca": "^1.6.1", @@ -325,17 +345,18 @@ "mime-types": "^2.1.35", "mobx": "6.13.6", "mobx-react": "7.6.0", - "mobx-utils": "6.1.0", - "moize": "^6.1.5", - "moment": "^2.29.4", + "mobx-utils": "6.1.1", + "moize": "^6.1.7", + "moment": "^2.30.1", "monaco-editor": "0.50.0", "mousetrap": "^1.6.5", - "nanoid": "^3.3.11", + "nanoid": "^3.3.12", "nanoid-dictionary": "^4.3.0", + "neverthrow": "^8.2.0", "node-cron": "^3.0.3", "node-fetch": "^2.6.1", "node-html-parser": "^3.3.6", - "node-sql-parser": "^4.4.0", + "node-sql-parser": "^4.18.0", "nodemailer": "^6.10.1", "openai": "^4.98.0", "openapi-types": "^8.0.0", @@ -349,35 +370,33 @@ "passport-oauth2-refresh": "^2.2.0", "passport-okta-oauth20": "^1.1.0", "passport-strategy": "^1.0.0", - "patch-package": "^8.0.0", + "patch-package": "^8.0.1", "path-to-regexp": "^1.9.0", "perfect-cursors": "^1.0.5", "pg": "^8.3.0", "pg-connection-string": "^2.6.2", - "pgsql-ast-parser": "^11.0.1", - "pino": "^9.7.0", + "pgsql-ast-parser": "^11.2.0", + "pino": "^9.14.0", "platform": "^1.3.6", "pluralize": "^8.0.0", "posthog-js": "1.321.1", - "posthog-node": "5.20.0", + "posthog-node": "5.29.2", "prettier": "2.8.8", "prism-react-renderer": "^1.1.1", "prismjs": "^1.30.0", - "private-ip": "^3.0.1", - "prom-client": "^14.0.1", + "prom-client": "^14.2.0", "react": "^18.3.1", "react-aria": "3.40.0", "react-beautiful-dnd": "^13.0.0", - "react-confetti": "^6.1.0", + "react-confetti": "^6.4.0", "react-csv": "^2.2.2", "react-dom": "^18.3.1", - "react-draggable": "^4.4.3", + "react-draggable": "^4.5.0", "react-error-boundary": "^3.1.3", "react-helmet": "^6.1.0", - "react-hook-form": "^8.0.0-alpha.4", "react-icons": "^3.10.0", "react-inspector": "^5.1.1", - "react-joyride": "^2.5.3", + "react-joyride": "^2.9.3", "react-keyed-flatten-children": "^1.3.0", "react-markdown": "^8.0.1", "react-monaco-editor": "0.55.0", @@ -385,56 +404,56 @@ "react-router-dom": "^5.2.0", "react-spring": "^9.5.5", "react-stately": "3.38.0", - "react-use": "^15.3.2", - "react-use-hoverintent": "^1.2.3", - "react-use-intercom": "^5.4.3", + "react-use": "^15.3.8", + "react-use-hoverintent": "^1.3.0", + "react-use-intercom": "^5.5.0", "react-virtualized-auto-sizer": "^1.0.2", - "react-window": "^1.8.6", + "react-window": "^1.8.11", "recharts": "^2.15.4", "rectangle-overlap": "^2.0.0", - "regex": "^4.1.3", + "regex": "^4.4.0", "regexp.execall": "^1.0.2", "remark-gfm": "^3.0.1", + "request-filtering-agent": "^3.2.0", "resize-observer-polyfill": "^1.5.1", - "safe-stable-stringify": "^2.4.3", - "sass": "^1.63.4", + "safe-stable-stringify": "^2.5.0", + "sass": "^1.99.0", "semver": "^6.3.0", - "sharp": "0.34.4", + "sharp": "0.34.5", "shellsync": "^0.2.2", "short-uuid": "^5.2.0", "signals": "^1.0.0", - "slate": "^0.124.0", - "slate-dom": "^0.124.0", + "slate": "^0.124.1", + "slate-dom": "^0.124.1", "slate-history": "^0.113.1", "slate-react": "^0.124.0", - "socket.io": "^4.8.1", - "socket.io-client": "^4.8.1", + "socket.io": "^4.8.3", + "socket.io-client": "^4.8.3", "specificity": "^1.0.0", - "sql-highlight": "^4.3.2", + "sql-highlight": "^4.4.2", "sqlstring": "^2.3.3", "strip-css-comments": "^4.1.0", "stripe": "^8.167.0", "svgo": "^3.3.3", - "swr": "^2.2.0", + "swr": "^2.4.1", "temporal-polyfill": "0.3.0", "tinymce": "^6.8.6", "tldts": "^6.0.12", "tmp": "^0.2.5", - "transformation-matrix": "^2.4.0", + "transformation-matrix": "^2.16.1", "ts-adt": "^2.1.2", - "ts-failable": "^0.6.1", "tunnel-rat": "^0.1.2", "typeorm": "0.2.45", "typeorm-naming-strategies": "^4.1.0", "typescript": "6.0.3", - "underscore.string": "~3.3.5", - "url": "0.11.3", + "underscore.string": "~3.3.6", + "url": "0.11.4", "url-join": "^4.0.1", "util": "^0.12.5", - "uuid": "^11.1.0", - "validator": "^13.15.26", - "workerpool": "^6.1.4", - "xml": "^1.0.1", + "uuid": "^11.1.1", + "validator": "^13.15.35", + "workerpool": "^6.5.1", + "xml-js": "^1.6.11", "yargs": "^16.2.0", "zod": "3.25.28" }, diff --git a/platform/wab/patches/@chainsafe+is-ip+2.0.1.patch b/platform/wab/patches/@chainsafe+is-ip+2.0.1.patch deleted file mode 100644 index 4ce344d3e6..0000000000 --- a/platform/wab/patches/@chainsafe+is-ip+2.0.1.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/@chainsafe/is-ip/package.json b/node_modules/@chainsafe/is-ip/package.json -index 8a101e3..cfb61a8 100644 ---- a/node_modules/@chainsafe/is-ip/package.json -+++ b/node_modules/@chainsafe/is-ip/package.json -@@ -9,7 +9,7 @@ - "exports": { - ".": { - "node": "./lib/is-ip.node.js", -- "import": "./lib/is-ip.js" -+ "default": "./lib/is-ip.js" - }, - "./parse": { - "import": "./lib/parse.js" diff --git a/platform/wab/patches/@octokit+app+16.1.1.patch b/platform/wab/patches/@octokit+app+16.1.2.patch similarity index 100% rename from platform/wab/patches/@octokit+app+16.1.1.patch rename to platform/wab/patches/@octokit+app+16.1.2.patch diff --git a/platform/wab/patches/@octokit+auth-unauthenticated+7.0.2.patch b/platform/wab/patches/@octokit+auth-unauthenticated+7.0.3.patch similarity index 100% rename from platform/wab/patches/@octokit+auth-unauthenticated+7.0.2.patch rename to platform/wab/patches/@octokit+auth-unauthenticated+7.0.3.patch diff --git a/platform/wab/plasmic.json b/platform/wab/plasmic.json index 00a9536666..ff7206f1dd 100644 --- a/platform/wab/plasmic.json +++ b/platform/wab/plasmic.json @@ -7,15 +7,11 @@ }, "style": { "scheme": "css-modules", - "defaultStyleCssFilePath": "wab/client/plasmic/PP__plasmic__default_style.module.css" + "defaultStyleCssFilePath": "wab/client/plasmic/PP__plasmic__default_style.css" }, "images": { "scheme": "files" }, - "tokens": { - "scheme": "theo", - "tokensFilePath": "wab/styles/plasmic-tokens.theo.json" - }, "srcDir": "./src", "defaultPlasmicDir": "./wab/client/plasmic", "projects": [ @@ -23,7 +19,7 @@ "projectId": "aukbrhkegRkQ6KizvhdUPT", "projectName": "[PlasmicKit] Left Pane", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/PP__plasmickit_left_pane.module.css", + "cssFilePath": "wab/client/plasmic/PP__plasmickit_left_pane.css", "components": [ { "id": "kkbHZ8nmgGH", @@ -290,19 +286,6 @@ "scheme": "blackbox", "componentType": "component" }, - { - "id": "wXKvVcr82I", - "name": "LeftPagesPanel", - "type": "managed", - "projectId": "aukbrhkegRkQ6KizvhdUPT", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_left_pane/PlasmicLeftPagesPanel.tsx", - "importSpec": { - "modulePath": "wab/client/components/sidebar/LeftPagesPanel.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_left_pane/PlasmicLeftPagesPanel.module.css", - "scheme": "blackbox", - "componentType": "component" - }, { "id": "V25hk8i--ck", "name": "PublishDialogContent", @@ -550,15 +533,22 @@ "cssFilePath": "wab/client/plasmic/plasmic_kit_left_pane/PlasmicListSeperator.module.css", "scheme": "blackbox", "componentType": "component" - } - ], - "icons": [ + }, { - "id": "CD14l2YUnk", - "name": "IconIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_left_pane/icons/PlasmicIcon__Icon.tsx" + "id": "P3v3AgRgKU4U", + "name": "AddDrawerCardItem", + "type": "managed", + "projectId": "aukbrhkegRkQ6KizvhdUPT", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_left_pane/PlasmicAddDrawerCardItem.tsx", + "importSpec": { + "modulePath": "wab/client/components/studio/add-drawer/AddDrawerCardItem.tsx" + }, + "cssFilePath": "wab/client/plasmic/plasmic_kit_left_pane/PlasmicAddDrawerCardItem.module.css", + "scheme": "blackbox", + "componentType": "component" } ], + "icons": [], "images": [ { "id": "9D5nIFKHJ", @@ -586,13 +576,14 @@ "splitsProviderFilePath": "", "customFunctions": [], "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_left_pane/PlasmicStyleTokensProvider.tsx", - "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_left_pane/plasmic.tsx" + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_left_pane/plasmic.tsx", + "dataTokensFilePath": "" }, { "projectId": "ooL7EhXDmFQWnW9sxtchhE", "projectName": "[PlasmicKit] Dashboard", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/PP__plasmickit_dashboard.module.css", + "cssFilePath": "wab/client/plasmic/PP__plasmickit_dashboard.css", "components": [ { "id": "2FvZipCkyxl", @@ -711,62 +702,6 @@ "scheme": "blackbox", "componentType": "component" }, - { - "id": "6_CfQ5GVLku", - "name": "HostProtocolSelect", - "type": "managed", - "projectId": "ooL7EhXDmFQWnW9sxtchhE", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect.tsx", - "importSpec": { - "modulePath": "wab/client/components/HostProtocolSelect.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect.module.css", - "scheme": "blackbox", - "componentType": "component", - "plumeType": "select" - }, - { - "id": "aHgWgR3OVni", - "name": "HostProtocolSelect__Option", - "type": "managed", - "projectId": "ooL7EhXDmFQWnW9sxtchhE", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__Option.tsx", - "importSpec": { - "modulePath": "wab/client/components/HostProtocolSelect__Option.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__Option.module.css", - "scheme": "blackbox", - "componentType": "component", - "plumeType": "select-option" - }, - { - "id": "FB-WsFik1_I", - "name": "HostProtocolSelect__OptionGroup", - "type": "managed", - "projectId": "ooL7EhXDmFQWnW9sxtchhE", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__OptionGroup.tsx", - "importSpec": { - "modulePath": "wab/client/components/HostProtocolSelect__OptionGroup.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__OptionGroup.module.css", - "scheme": "blackbox", - "componentType": "component", - "plumeType": "select-option-group" - }, - { - "id": "WAelYWWWRyr", - "name": "HostProtocolSelect__Overlay", - "type": "managed", - "projectId": "ooL7EhXDmFQWnW9sxtchhE", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__Overlay.tsx", - "importSpec": { - "modulePath": "wab/client/components/HostProtocolSelect__Overlay.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__Overlay.module.css", - "scheme": "blackbox", - "componentType": "component", - "plumeType": "triggered-overlay" - }, { "id": "nSkQWLjK-B", "name": "DefaultLayout", @@ -1335,26 +1270,21 @@ "name": "Fetcher", "displayName": "plasmic-data-source-fetcher", "componentImportPath": "@plasmicapp/react-web/lib/data-sources" - }, - { - "id": "DrSWuPwD87vM", - "name": "PricingTooltip", - "displayName": "Tooltip", - "componentImportPath": "./src/wab/client/components/pricing/Tooltip" } ], "indirect": false, "globalContextsFilePath": "wab/client/plasmic/plasmic_kit_dashboard/PlasmicGlobalContextsProvider.tsx", "splitsProviderFilePath": "", "customFunctions": [], - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_dashboard/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_dashboard/plasmic.tsx", + "dataTokensFilePath": "" }, { "projectId": "kA1Hysr5ZeimtATHTDJz5B", "projectName": "[PlasmicKit] Share Dialog", "version": "latest", - "cssFilePath": "wab/client/plasmic/PP__plasmickit_share_dialog.module.css", + "cssFilePath": "wab/client/plasmic/PP__plasmickit_share_dialog.css", "components": [ { "id": "cWsnP3_PIix", @@ -1405,13 +1335,14 @@ "splitsProviderFilePath": "", "customFunctions": [], "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_share_dialog/PlasmicStyleTokensProvider.tsx", - "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_share_dialog/plasmic.tsx" + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_share_dialog/plasmic.tsx", + "dataTokensFilePath": "" }, { "projectId": "aaggSgVS8yYsAwQffVQB4p", "projectName": "[PlasmicKit] User Settings", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/PP__plasmickit_settings.module.css", + "cssFilePath": "wab/client/plasmic/PP__plasmickit_settings.css", "components": [ { "id": "XkSd43CUYOB", @@ -1499,15 +1430,16 @@ "indirect": false, "globalContextsFilePath": "", "splitsProviderFilePath": "", - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "", - "customFunctions": [] + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_user_settings/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_user_settings/plasmic.tsx", + "customFunctions": [], + "dataTokensFilePath": "" }, { "projectId": "29njzcsBEPR4koRddw4knF", "projectName": "[PlasmicKit] Alert Banner", "version": "latest", - "cssFilePath": "wab/client/plasmic/PP__plasmickit_alert_banner.module.css", + "cssFilePath": "wab/client/plasmic/PP__plasmickit_alert_banner.css", "components": [ { "id": "DCWq1LLaJ6e", @@ -1583,14 +1515,15 @@ "globalContextsFilePath": "", "splitsProviderFilePath": "", "customFunctions": [], - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_alert_banner/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_alert_banner/plasmic.tsx", + "dataTokensFilePath": "" }, { "projectId": "tXkSR39sgCDWSitZxC5xFV", "projectName": "[PlasmicKit] Design System", - "version": ">=42.0.0", - "cssFilePath": "wab/client/plasmic/PP__plasmickit_design_system.module.css", + "version": ">=0.0.0", + "cssFilePath": "wab/client/plasmic/PP__plasmickit_design_system.css", "components": [ { "id": "pA22NEzDCsn_", @@ -1928,11 +1861,11 @@ "name": "Textarea", "type": "managed", "projectId": "tXkSR39sgCDWSitZxC5xFV", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicTextarea.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicTextarea.tsx", "importSpec": { "modulePath": "wab/client/components/widgets/Textarea.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicTextarea.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicTextarea.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -1941,11 +1874,11 @@ "name": "Label", "type": "managed", "projectId": "tXkSR39sgCDWSitZxC5xFV", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicLabel.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicLabel.tsx", "importSpec": { "modulePath": "wab/client/components/plexus/Label.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicLabel.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicLabel.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -1954,11 +1887,11 @@ "name": "TextInput", "type": "managed", "projectId": "tXkSR39sgCDWSitZxC5xFV", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicTextInput.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicTextInput.tsx", "importSpec": { "modulePath": "wab/client/components/plexus/TextInput.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicTextInput.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicTextInput.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -1967,11 +1900,11 @@ "name": "TextAreaInput", "type": "managed", "projectId": "tXkSR39sgCDWSitZxC5xFV", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicTextAreaInput.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicTextAreaInput.tsx", "importSpec": { "modulePath": "wab/client/components/plexus/TextAreaInput.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicTextAreaInput.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicTextAreaInput.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -1980,11 +1913,11 @@ "name": "Description", "type": "managed", "projectId": "tXkSR39sgCDWSitZxC5xFV", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicDescription.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicDescription.tsx", "importSpec": { "modulePath": "wab/client/components/plexus/Description.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicDescription.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicDescription.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -1993,11 +1926,11 @@ "name": "TextField", "type": "managed", "projectId": "tXkSR39sgCDWSitZxC5xFV", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicTextField.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicTextField.tsx", "importSpec": { "modulePath": "wab/client/components/plexus/TextField.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicTextField.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicTextField.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -2006,12 +1939,25 @@ "name": "Dialog", "type": "managed", "projectId": "tXkSR39sgCDWSitZxC5xFV", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicDialog.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicDialog.tsx", "importSpec": { "modulePath": "wab/client/components/widgets/Dialog.tsx", "exportName": "Dialog" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicDialog.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicDialog.module.css", + "scheme": "blackbox", + "componentType": "component" + }, + { + "id": "5TapYEMkYCfR", + "name": "DialogHeader", + "type": "managed", + "projectId": "tXkSR39sgCDWSitZxC5xFV", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicDialogHeader.tsx", + "importSpec": { + "modulePath": "wab/client/components/widgets/DialogHeader.tsx" + }, + "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicDialogHeader.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -2020,12 +1966,12 @@ "name": "PlexusButton", "type": "managed", "projectId": "tXkSR39sgCDWSitZxC5xFV", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicPlexusButton.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicPlexusButton.tsx", "importSpec": { "modulePath": "wab/client/components/plexus/PlexusButton.tsx", "exportName": "PlexusButton" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicPlexusButton.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicPlexusButton.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -2034,11 +1980,11 @@ "name": "OverlayArrow", "type": "managed", "projectId": "tXkSR39sgCDWSitZxC5xFV", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicOverlayArrow.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicOverlayArrow.tsx", "importSpec": { "modulePath": "wab/client/components/plexus/OverlayArrow.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicOverlayArrow.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicOverlayArrow.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -2047,12 +1993,12 @@ "name": "Popover", "type": "managed", "projectId": "tXkSR39sgCDWSitZxC5xFV", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicPopover.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicPopover.tsx", "importSpec": { "modulePath": "wab/client/components/plexus/Popover.tsx", "exportName": "Popover" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/PlasmicPopover.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicPopover.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -3060,7 +3006,7 @@ "moduleFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicIcon__Keyboard.tsx" }, { - "id": "mZMZr0AmTY", + "id": "msFJe6Nhnq3J", "name": "IconIcon", "moduleFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicIcon__Icon.tsx" }, @@ -3389,45 +3335,20 @@ "name": "EdgeHandleLeftwardIcon", "moduleFilePath": "wab/client/plasmic/plasmic_kit_design_system/icons/PlasmicIcon__EdgeHandleLeftward.tsx" }, - { - "id": "eayXbyej4Q", - "name": "Icon4Icon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_design_system/icons/PlasmicIcon__Icon4.tsx" - }, - { - "id": "GblhqXeZ9m", - "name": "Icon5Icon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_design_system/icons/PlasmicIcon__Icon5.tsx" - }, - { - "id": "zOPv4eezG5", - "name": "Icon6Icon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_design_system/icons/PlasmicIcon__Icon6.tsx" - }, - { - "id": "hPBDwf8f70", - "name": "Icon7Icon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_design_system/icons/PlasmicIcon__Icon7.tsx" - }, - { - "id": "ZPpW4b17Mv", - "name": "Icon8Icon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_design_system/icons/PlasmicIcon__Icon8.tsx" - }, { "id": "y6Ei15gXp_-T", "name": "Circle2Icon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/icons/PlasmicIcon__Circle2.tsx" + "moduleFilePath": "wab/client/plasmic/plasmic_kit_design_system/icons/PlasmicIcon__Circle2.tsx" }, { "id": "C21gcG8B3Wlx", "name": "ChevronDownIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/icons/PlasmicIcon__ChevronDown.tsx" + "moduleFilePath": "wab/client/plasmic/plasmic_kit_design_system/icons/PlasmicIcon__ChevronDown.tsx" }, { "id": "292IBDA68F8r", "name": "TriangleFilledIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_design_system_deprecated/icons/PlasmicIcon__TriangleFilled.tsx" + "moduleFilePath": "wab/client/plasmic/plasmic_kit_design_system/icons/PlasmicIcon__TriangleFilled.tsx" }, { "id": "cRhITljQuV", @@ -3504,7 +3425,7 @@ "projectId": "wT5BWZPEc2fYxyqbTLXMt2", "projectName": "[PlasmicKit] Variants", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_kit_variants/plasmic_plasmic_kit_variants.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_variants/plasmic_plasmic_kit_variants.css", "components": [ { "id": "PDpx0GMKsd", @@ -3588,7 +3509,7 @@ "projectId": "gYEVvAzCcLMHDVPvuYxkFh", "projectName": "[PlasmicKit] Style Controls", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_kit_style_controls/plasmic_plasmic_kit_styles_pane.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_style_controls/plasmic_plasmic_kit_styles_pane.css", "components": [ { "id": "s1ridHP4Z3T", @@ -3753,29 +3674,16 @@ "scheme": "blackbox", "componentType": "component" }, - { - "id": "-L2zZ5Mvmr", - "name": "ListItem", - "type": "managed", - "projectId": "gYEVvAzCcLMHDVPvuYxkFh", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicListItem.tsx", - "importSpec": { - "modulePath": "wab/client/components/ListItem.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_design_system/PlasmicListItem.module.css", - "scheme": "blackbox", - "componentType": "component" - }, { "id": "1OCmfT86EB3", "name": "TextboxLike", "type": "managed", "projectId": "gYEVvAzCcLMHDVPvuYxkFh", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicTextboxLike.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicTextboxLike.tsx", "importSpec": { "modulePath": "wab/client/components/TextboxLike.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicTextboxLike.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicTextboxLike.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -3784,11 +3692,11 @@ "name": "Tooltip", "type": "managed", "projectId": "gYEVvAzCcLMHDVPvuYxkFh", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicTooltip.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicTooltip.tsx", "importSpec": { "modulePath": "wab/client/components/widgets/Tooltip.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicTooltip.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicTooltip.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -3797,11 +3705,11 @@ "name": "HiliteTabButton", "type": "managed", "projectId": "gYEVvAzCcLMHDVPvuYxkFh", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicHiliteTabButton.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicHiliteTabButton.tsx", "importSpec": { "modulePath": "wab/client/components/widgets/HiliteTabButton.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicHiliteTabButton.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicHiliteTabButton.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -3810,11 +3718,11 @@ "name": "HiliteTabs", "type": "managed", "projectId": "gYEVvAzCcLMHDVPvuYxkFh", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicHiliteTabs.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicHiliteTabs.tsx", "importSpec": { "modulePath": "wab/client/components/widgets/HiliteTabs.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicHiliteTabs.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicHiliteTabs.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -3823,11 +3731,11 @@ "name": "LabeledListItem", "type": "managed", "projectId": "gYEVvAzCcLMHDVPvuYxkFh", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicLabeledListItem.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicLabeledListItem.tsx", "importSpec": { "modulePath": "wab/client/components/widgets/LabeledListItem.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicLabeledListItem.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicLabeledListItem.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -3836,11 +3744,11 @@ "name": "SectionCollapseButton", "type": "managed", "projectId": "gYEVvAzCcLMHDVPvuYxkFh", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicSectionCollapseButton.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicSectionCollapseButton.tsx", "importSpec": { "modulePath": "wab/client/components/widgets/SectionCollapseButton.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicSectionCollapseButton.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicSectionCollapseButton.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -3849,11 +3757,11 @@ "name": "CollapsableSection", "type": "managed", "projectId": "gYEVvAzCcLMHDVPvuYxkFh", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicCollapsableSection.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicCollapsableSection.tsx", "importSpec": { "modulePath": "wab/client/components/widgets/CollapsableSection.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicCollapsableSection.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicCollapsableSection.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -3862,11 +3770,11 @@ "name": "RowItem", "type": "managed", "projectId": "gYEVvAzCcLMHDVPvuYxkFh", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicRowItem.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicRowItem.tsx", "importSpec": { "modulePath": "wab/client/components/RowItem.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicRowItem.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicRowItem.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -3875,11 +3783,11 @@ "name": "RowGroup", "type": "managed", "projectId": "gYEVvAzCcLMHDVPvuYxkFh", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicRowGroup.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicRowGroup.tsx", "importSpec": { "modulePath": "wab/client/components/RowGroup.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicRowGroup.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicRowGroup.module.css", "scheme": "blackbox", "componentType": "component" } @@ -3915,7 +3823,7 @@ { "id": "YQFHPdeAw", "name": "image", - "filePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/images/image.png" + "filePath": "wab/client/plasmic/plasmic_kit_style_controls/images/image.png" } ], "projectApiToken": "dU41owbFU4Fvh48F9zxIwO5l2cXJV5vi8IjU7LwJRPAeviRu43kkU9anUpc6IkuJh6sdxcOHH5TEn4v8i1jVA", @@ -3934,7 +3842,7 @@ } ], "indirect": false, - "globalContextsFilePath": "wab/client/plasmic/plasmic_kit_new_design_system_former_style_controls/PlasmicGlobalContextsProvider.tsx", + "globalContextsFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicGlobalContextsProvider.tsx", "splitsProviderFilePath": "", "customFunctions": [], "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_style_controls/PlasmicStyleTokensProvider.tsx", @@ -3945,7 +3853,7 @@ "projectId": "dyzP6dbCdycwJpqiR2zkwe", "projectName": "[PlasmicKit] Docs Portal", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_kit_docs_portal/plasmic_plasmic_kit_docs_portal.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_docs_portal/plasmic_plasmic_kit_docs_portal.css", "components": [ { "id": "6yrnCqYwJf", @@ -4352,18 +4260,33 @@ ], "images": [], "projectApiToken": "M4y6bLbirTvvr7127BRNqwl63h7sUXuoMdnByMlLAh2Cx5AQDtHqLkY383DNTXg4Ptkj8xCOY8YamPdXOkA", - "codeComponents": [], + "codeComponents": [ + { + "id": "WjQK2i7cgH", + "name": "PlasmicHead", + "displayName": "hostless-plasmic-head", + "componentImportPath": "@plasmicapp/react-web" + }, + { + "id": "hcggQBtJ_h", + "name": "Fetcher", + "displayName": "plasmic-data-source-fetcher", + "componentImportPath": "@plasmicapp/data-sources" + } + ], "indirect": false, "globalContextsFilePath": "", "splitsProviderFilePath": "", - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_docs_portal/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_docs_portal/plasmic.tsx", + "dataTokensFilePath": "", + "customFunctions": [] }, { "projectId": "oYWs1jXLUht24zyQBdCd5F", - "projectName": "[PlasmicKit] Init token", + "projectName": "[PlasmicKit] Init Token", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/PP__plasmickit_init_token.module.css", + "cssFilePath": "wab/client/plasmic/PP__plasmickit_init_token.css", "components": [ { "id": "dWRKivg8dUht", @@ -4386,14 +4309,16 @@ "indirect": false, "globalContextsFilePath": "", "splitsProviderFilePath": "", - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_init_token/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_init_token/plasmic.tsx", + "dataTokensFilePath": "", + "customFunctions": [] }, { "projectId": "fpbcKyXdMTvY59T4C5fjcC", "projectName": "[PlasmicKit] Continuous Deployment", "version": "latest", - "cssFilePath": "wab/client/components/modals/plasmic/plasmic_kit_project_settings/plasmic_plasmic_kit_project_settings.module.css", + "cssFilePath": "wab/client/components/modals/plasmic/plasmic_kit_project_settings/plasmic_plasmic_kit_project_settings.css", "components": [ { "id": "FuvSZfvXL5", @@ -4671,13 +4596,14 @@ "splitsProviderFilePath": "", "customFunctions": [], "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicStyleTokensProvider.tsx", - "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_continuous_deployment/plasmic.tsx" + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_continuous_deployment/plasmic.tsx", + "dataTokensFilePath": "" }, { "projectId": "6CrqkTcB6gSAHoA8c8zpNz", "projectName": "[PlasmicKit] Top Bar", "version": "latest", - "cssFilePath": "wab/client/plasmic/plasmic_kit_top_bar/plasmic_plasmic_kit_top_bar.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_top_bar/plasmic_plasmic_kit_top_bar.css", "components": [ { "id": "tNBvs5bIAy", @@ -4926,25 +4852,26 @@ "globalContextsFilePath": "", "splitsProviderFilePath": "", "customFunctions": [], - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_top_bar/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_top_bar/plasmic.tsx", + "dataTokensFilePath": "" }, { "projectId": "m8VxGcigeLAEXFe8c12w5Q", "projectName": "[PlasmicKit] ProjectPanel", "version": "latest", - "cssFilePath": "wab/client/plasmic/project_panel/plasmic_project_panel.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_project_panel/plasmic_project_panel.css", "components": [ { "id": "iWeSjEMdI3", "name": "FolderItem", "type": "managed", "projectId": "m8VxGcigeLAEXFe8c12w5Q", - "renderModuleFilePath": "wab/client/plasmic/project_panel/PlasmicFolderItem.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_project_panel/PlasmicFolderItem.tsx", "importSpec": { "modulePath": "wab/client/components/sidebar-tabs/ProjectPanel/FolderItem.tsx" }, - "cssFilePath": "wab/client/plasmic/project_panel/PlasmicFolderItem.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_project_panel/PlasmicFolderItem.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -4953,11 +4880,11 @@ "name": "SearchInput", "type": "managed", "projectId": "m8VxGcigeLAEXFe8c12w5Q", - "renderModuleFilePath": "wab/client/plasmic/project_panel/PlasmicSearchInput.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_project_panel/PlasmicSearchInput.tsx", "importSpec": { "modulePath": "wab/client/components/sidebar-tabs/ProjectPanel/SearchInput.tsx" }, - "cssFilePath": "wab/client/plasmic/project_panel/PlasmicSearchInput.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_project_panel/PlasmicSearchInput.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -4966,12 +4893,12 @@ "name": "OutlineTab", "type": "managed", "projectId": "m8VxGcigeLAEXFe8c12w5Q", - "renderModuleFilePath": "wab/client/plasmic/project_panel/PlasmicOutlineTab.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_project_panel/PlasmicOutlineTab.tsx", "importSpec": { "modulePath": "wab/client/components/sidebar-tabs/outline-tab.tsx", "exportName": "OutlineTab" }, - "cssFilePath": "wab/client/plasmic/project_panel/PlasmicOutlineTab.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_project_panel/PlasmicOutlineTab.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -5010,110 +4937,15 @@ "globalContextsFilePath": "", "splitsProviderFilePath": "", "customFunctions": [], - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" - }, - { - "projectId": "fQPf2UiMEMhB52C8QQXwWe", - "projectName": "[PlasmicKit] Omnibar", - "version": "latest", - "cssFilePath": "wab/client/plasmic/plasmic_kit_omnibar/plasmic_plasmic_kit_omnibar.module.css", - "components": [ - { - "id": "KnUjAGcQKT", - "name": "OmnibarAddItem", - "type": "managed", - "projectId": "fQPf2UiMEMhB52C8QQXwWe", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_omnibar/PlasmicOmnibarAddItem.tsx", - "importSpec": { - "modulePath": "wab/client/components/omnibar/OmnibarAddItem.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_omnibar/PlasmicOmnibarAddItem.module.css", - "scheme": "blackbox", - "componentType": "component" - }, - { - "id": "qx4iENdAfF", - "name": "OmnibarGroup", - "type": "managed", - "projectId": "fQPf2UiMEMhB52C8QQXwWe", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_omnibar/PlasmicOmnibarGroup.tsx", - "importSpec": { - "modulePath": "wab/client/components/omnibar/OmnibarGroup.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_omnibar/PlasmicOmnibarGroup.module.css", - "scheme": "blackbox", - "componentType": "component" - }, - { - "id": "A2li_iO_iw", - "name": "OmnibarCommandItem", - "type": "managed", - "projectId": "fQPf2UiMEMhB52C8QQXwWe", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_omnibar/PlasmicOmnibarCommandItem.tsx", - "importSpec": { - "modulePath": "wab/client/components/omnibar/OmnibarCommandItem.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_omnibar/PlasmicOmnibarCommandItem.module.css", - "scheme": "blackbox", - "componentType": "component" - }, - { - "id": "paIlCoZKcm", - "name": "Omnibar", - "type": "managed", - "projectId": "fQPf2UiMEMhB52C8QQXwWe", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_omnibar/PlasmicOmnibar.tsx", - "importSpec": { - "modulePath": "wab/client/components/omnibar/Omnibar.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_omnibar/PlasmicOmnibar.module.css", - "scheme": "blackbox", - "componentType": "component" - }, - { - "id": "hrLkFMfsYv", - "name": "OmnibarTabHeader", - "type": "managed", - "projectId": "fQPf2UiMEMhB52C8QQXwWe", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_omnibar/PlasmicOmnibarTabHeader.tsx", - "importSpec": { - "modulePath": "wab/client/components/omnibar/OmnibarTabHeader.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_omnibar/PlasmicOmnibarTabHeader.module.css", - "scheme": "blackbox", - "componentType": "component" - } - ], - "icons": [], - "images": [], - "projectApiToken": "1UWteYNm5YQAm3k1Bg1iSPDkZUU7QqZV2aAhmCpwQnY10Txx9Gkw3lo7CXsDX63QuZo5EDsnOAfqKUzVDOuQ", - "codeComponents": [ - { - "id": "6FV4bnzp21", - "name": "PlasmicHead", - "displayName": "hostless-plasmic-head", - "componentImportPath": "@plasmicapp/react-web" - }, - { - "id": "vfzEC59DF8", - "name": "Fetcher", - "displayName": "plasmic-data-source-fetcher", - "componentImportPath": "@plasmicapp/react-web/lib/data-sources" - } - ], - "indirect": false, - "globalContextsFilePath": "", - "splitsProviderFilePath": "", - "customFunctions": [], - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_project_panel/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_project_panel/plasmic.tsx", + "dataTokensFilePath": "" }, { "projectId": "kdj5vahTyUKxznuR6rrtt6", "projectName": "[PlasmicKit] VariantsBar", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_kit_variants_bar/plasmic_plasmic_kit_variants_bar.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_variants_bar/plasmic_plasmic_kit_variants_bar.css", "components": [ { "id": "98t4Edcdrb", @@ -5214,414 +5046,159 @@ { "id": "s9WjzeRqst", "name": "PlasmicHead", - "componentImportPath": "@plasmicapp/react-web" - }, - { - "id": "euFC_nhTaO", - "name": "Fetcher", - "componentImportPath": "@plasmicapp/react-web/lib/data-sources" - } - ], - "indirect": false, - "globalContextsFilePath": "", - "splitsProviderFilePath": "", - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" - }, - { - "projectId": "6BCq4vMow1yqGKFdcP68Rz", - "projectName": "[Plasmic Kit] Page Settings", - "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_kit_page_settings/plasmic_plasmic_kit_page_settings.module.css", - "components": [ - { - "id": "jTLog2H3DE", - "name": "PageSettings", - "type": "managed", - "projectId": "6BCq4vMow1yqGKFdcP68Rz", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_page_settings/PlasmicPageSettings.tsx", - "importSpec": { - "modulePath": "wab/client/components/PageSettings.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_page_settings/PlasmicPageSettings.module.css", - "scheme": "blackbox", - "componentType": "component" - }, - { - "id": "ntKkcfMNg2s", - "name": "Switch", - "type": "managed", - "projectId": "6BCq4vMow1yqGKFdcP68Rz", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_page_settings/PlasmicSwitch.tsx", - "importSpec": { - "modulePath": "wab/client/components/Switch.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_page_settings/PlasmicSwitch.module.css", - "scheme": "blackbox", - "componentType": "component", - "plumeType": "switch" - } - ], - "icons": [], - "images": [], - "projectApiToken": "e4YfupA609sspSY80GQQM5iWFktmTmTrPJoxWxBIbNZXwUZVXQdCt1rJl2AqGeyv96iktO5egbmdmX0CgrNpA", - "codeComponents": [ - { - "id": "h5vSs27HsV", - "name": "PlasmicHead", "displayName": "hostless-plasmic-head", "componentImportPath": "@plasmicapp/react-web" }, { - "id": "VEviSgYTLL", + "id": "euFC_nhTaO", "name": "Fetcher", - "displayName": "plasmic-data-source-fetcher", - "componentImportPath": "@plasmicapp/react-web/lib/data-sources" - } - ], - "indirect": false, - "globalContextsFilePath": "", - "splitsProviderFilePath": "", - "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_page_settings/PlasmicStyleTokensProvider.tsx", - "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_page_settings/plasmic.tsx", - "customFunctions": [] - }, - { - "projectId": "oermwjefjidrRRHcrxyCjQ", - "projectName": "[PlasmicKit] New Component", - "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_kit_new_component/plasmic_plasmic_kit_new_component.module.css", - "components": [ - { - "id": "ZDk8OKbbuW", - "name": "NewComponentModal", - "type": "managed", - "projectId": "oermwjefjidrRRHcrxyCjQ", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_new_component/PlasmicNewComponentModal.tsx", - "importSpec": { - "modulePath": "wab/client/components/widgets/NewComponentModal.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_new_component/PlasmicNewComponentModal.module.css", - "scheme": "blackbox", - "componentType": "component" - }, - { - "id": "3_QVitiqMh", - "name": "NewComponentSection", - "type": "managed", - "projectId": "oermwjefjidrRRHcrxyCjQ", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_new_component/PlasmicNewComponentSection.tsx", - "importSpec": { - "modulePath": "wab/client/components/widgets/NewComponentSection.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_new_component/PlasmicNewComponentSection.module.css", - "scheme": "blackbox", - "componentType": "component" - }, - { - "id": "csXhXQDIqh", - "name": "NewComponentItem", - "type": "managed", - "projectId": "oermwjefjidrRRHcrxyCjQ", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_new_component/PlasmicNewComponentItem.tsx", - "importSpec": { - "modulePath": "wab/client/components/widgets/NewComponentItem.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_new_component/PlasmicNewComponentItem.module.css", - "scheme": "blackbox", - "componentType": "component" - } - ], - "icons": [ - { - "id": "yV__Xr76s", - "name": "ChevronRightIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_new_component/icons/PlasmicIcon__ChevronRight.tsx" - }, - { - "id": "uSxcbtzK1j", - "name": "ChevronBottomIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_new_component/icons/PlasmicIcon__ChevronBottom.tsx" - } - ], - "images": [], - "projectApiToken": "2h8iTWhOR6E43NIqaQHzTSELhepdLOKHGCTBALpv9zqlohVqBNgMloCSDXjtX7HjpY5pZe6yKhkDVKPDZnqSQ", - "codeComponents": [], - "indirect": false, - "globalContextsFilePath": "", - "splitsProviderFilePath": "", - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" - }, - { - "projectId": "9csusiyEETC5n9fFKLeYNK", - "projectName": "[PlasmicKit] Data Queries", - "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_kit_data_queries/plasmic_plasmic_kit_data_queries.module.css", - "components": [ - { - "id": "hkmuxJmyM9", - "name": "RestBuilder", - "type": "managed", - "projectId": "9csusiyEETC5n9fFKLeYNK", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_data_queries/PlasmicRestBuilder.tsx", - "importSpec": { - "modulePath": "wab/client/components/RestBuilder.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_data_queries/PlasmicRestBuilder.module.css", - "scheme": "blackbox", - "componentType": "component" - }, - { - "id": "_VRtHiszCx", - "name": "ListBuilder", - "type": "managed", - "projectId": "9csusiyEETC5n9fFKLeYNK", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_data_queries/PlasmicListBuilder.tsx", - "importSpec": { - "modulePath": "wab/client/components/ListBuilder.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_data_queries/PlasmicListBuilder.module.css", - "scheme": "blackbox", - "componentType": "component" - }, - { - "id": "udG9wNYCNL", - "name": "KeyValueRow", - "type": "managed", - "projectId": "9csusiyEETC5n9fFKLeYNK", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_data_queries/PlasmicKeyValueRow.tsx", - "importSpec": { - "modulePath": "wab/client/components/KeyValueRow.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_data_queries/PlasmicKeyValueRow.module.css", - "scheme": "blackbox", - "componentType": "component" - }, - { - "id": "1ooaehe0m9", - "name": "AuthForm", - "type": "managed", - "projectId": "9csusiyEETC5n9fFKLeYNK", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_data_queries/PlasmicAuthForm.tsx", - "importSpec": { - "modulePath": "wab/client/components/AuthForm.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_data_queries/PlasmicAuthForm.module.css", - "scheme": "blackbox", - "componentType": "component" - }, - { - "id": "dtgx0NGfys", - "name": "QueryRow", - "type": "managed", - "projectId": "9csusiyEETC5n9fFKLeYNK", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_data_queries/PlasmicQueryRow.tsx", - "importSpec": { - "modulePath": "wab/client/components/QueryRow.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_data_queries/PlasmicQueryRow.module.css", - "scheme": "blackbox", - "componentType": "component" - }, - { - "id": "_Lp0iIQjbN", - "name": "DataSource", - "type": "managed", - "projectId": "9csusiyEETC5n9fFKLeYNK", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_data_queries/PlasmicDataSource.tsx", - "importSpec": { - "modulePath": "wab/client/components/DataSource.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_data_queries/PlasmicDataSource.module.css", - "scheme": "blackbox", - "componentType": "component" - }, - { - "id": "Rh23GExBNXe", - "name": "ConnectToDataSource", - "type": "managed", - "projectId": "9csusiyEETC5n9fFKLeYNK", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_data_queries/PlasmicConnectToDataSource.tsx", - "importSpec": { - "modulePath": "wab/client/components/ConnectToDataSource.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_data_queries/PlasmicConnectToDataSource.module.css", - "scheme": "blackbox", - "componentType": "component" - } - ], - "icons": [ - { - "id": "6YWYAmDA19k", - "name": "ChevronBottomIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_data_queries/icons/PlasmicIcon__ChevronBottom.tsx" - } - ], - "images": [ - { - "id": "9iFo08KkR", - "name": "image", - "filePath": "wab/client/plasmic/plasmic_kit_data_queries/images/image.png" - }, - { - "id": "i3GyxvVFz", - "name": "image 2", - "filePath": "wab/client/plasmic/plasmic_kit_data_queries/images/image2.png" - }, - { - "id": "PzwwbIP93", - "name": "image 3", - "filePath": "wab/client/plasmic/plasmic_kit_data_queries/images/image3.png" - }, - { - "id": "gm-UM3pEu", - "name": "image 4", - "filePath": "wab/client/plasmic/plasmic_kit_data_queries/images/image4.png" - }, - { - "id": "lYsHu22AE", - "name": "image 5", - "filePath": "wab/client/plasmic/plasmic_kit_data_queries/images/image5.png" - }, - { - "id": "SIWLjberf", - "name": "image 6", - "filePath": "wab/client/plasmic/plasmic_kit_data_queries/images/image6.png" - }, - { - "id": "aBOYClima", - "name": "image 7", - "filePath": "wab/client/plasmic/plasmic_kit_data_queries/images/image7.png" - }, - { - "id": "Pd4OAIwV_", - "name": "image 8", - "filePath": "wab/client/plasmic/plasmic_kit_data_queries/images/image8.png" - }, - { - "id": "hbmHndPeK", - "name": "image 9", - "filePath": "wab/client/plasmic/plasmic_kit_data_queries/images/image9.png" - }, - { - "id": "R71lPt9hC", - "name": "image 10", - "filePath": "wab/client/plasmic/plasmic_kit_data_queries/images/image10.png" - }, - { - "id": "DCKWvMlr3", - "name": "image 11", - "filePath": "wab/client/plasmic/plasmic_kit_data_queries/images/image11.png" - }, - { - "id": "fAt8vyqin", - "name": "image 12", - "filePath": "wab/client/plasmic/plasmic_kit_data_queries/images/image12.png" - }, - { - "id": "jLLOVv4um", - "name": "image 13", - "filePath": "wab/client/plasmic/plasmic_kit_data_queries/images/image13.png" - }, - { - "id": "tclh459HJ", - "name": "image 14", - "filePath": "wab/client/plasmic/plasmic_kit_data_queries/images/image14.png" - }, - { - "id": "Q-19QWMVR", - "name": "image 15", - "filePath": "wab/client/plasmic/plasmic_kit_data_queries/images/image15.png" - }, - { - "id": "waXA3wvyg", - "name": "image 16", - "filePath": "wab/client/plasmic/plasmic_kit_data_queries/images/image16.png" + "displayName": "plasmic-data-source-fetcher", + "componentImportPath": "@plasmicapp/react-web/lib/data-sources" } ], - "projectApiToken": "S5TER5KAuMZ3Wf9Iy2A01juaVBkGwGob8VksgxmALZFAczXn20uU1ax0EJDrgUuisISHMSqlxd8gKT3OhQ", - "codeComponents": [], "indirect": false, "globalContextsFilePath": "", "splitsProviderFilePath": "", - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_variants_bar/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_variants_bar/plasmic.tsx", + "dataTokensFilePath": "", + "customFunctions": [] }, { - "projectId": "4nEqjj19Sbp3EVnBkgQMP1", - "projectName": "[PlasmicKit] Data Expressions", - "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_kit_data_expressions/plasmic_plasmic_kit_data_expressions.module.css", + "projectId": "6BCq4vMow1yqGKFdcP68Rz", + "projectName": "[Plasmic Kit] Page Settings", + "version": "latest", + "cssFilePath": "wab/client/plasmic/plasmic_kit_page_settings/plasmic_plasmic_kit_page_settings.css", "components": [ { - "id": "cOWhlnv8o5", - "name": "SimplePathBuilder", + "id": "jTLog2H3DE", + "name": "PageSettings", "type": "managed", - "projectId": "4nEqjj19Sbp3EVnBkgQMP1", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_data_expressions/PlasmicSimplePathBuilder.tsx", + "projectId": "6BCq4vMow1yqGKFdcP68Rz", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_page_settings/PlasmicPageSettings.tsx", "importSpec": { - "modulePath": "wab/client/components/SimplePathBuilder.tsx" + "modulePath": "wab/client/components/PageSettings.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_data_expressions/PlasmicSimplePathBuilder.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_page_settings/PlasmicPageSettings.module.css", "scheme": "blackbox", "componentType": "component" }, { - "id": "FOLsgsm2iy", - "name": "SimplePathRow", + "id": "ntKkcfMNg2s", + "name": "Switch", + "type": "managed", + "projectId": "6BCq4vMow1yqGKFdcP68Rz", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_page_settings/PlasmicSwitch.tsx", + "importSpec": { + "modulePath": "wab/client/components/Switch.tsx" + }, + "cssFilePath": "wab/client/plasmic/plasmic_kit_page_settings/PlasmicSwitch.module.css", + "scheme": "blackbox", + "componentType": "component", + "plumeType": "switch" + } + ], + "icons": [], + "images": [], + "projectApiToken": "e4YfupA609sspSY80GQQM5iWFktmTmTrPJoxWxBIbNZXwUZVXQdCt1rJl2AqGeyv96iktO5egbmdmX0CgrNpA", + "codeComponents": [ + { + "id": "h5vSs27HsV", + "name": "PlasmicHead", + "displayName": "hostless-plasmic-head", + "componentImportPath": "@plasmicapp/react-web" + }, + { + "id": "VEviSgYTLL", + "name": "Fetcher", + "displayName": "plasmic-data-source-fetcher", + "componentImportPath": "@plasmicapp/react-web/lib/data-sources" + } + ], + "indirect": false, + "globalContextsFilePath": "", + "splitsProviderFilePath": "", + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_page_settings/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_page_settings/plasmic.tsx", + "customFunctions": [], + "dataTokensFilePath": "" + }, + { + "projectId": "oermwjefjidrRRHcrxyCjQ", + "projectName": "[PlasmicKit] New Component", + "version": ">=0.0.0", + "cssFilePath": "wab/client/plasmic/plasmic_kit_new_component/plasmic_plasmic_kit_new_component.css", + "components": [ + { + "id": "ZDk8OKbbuW", + "name": "NewComponentModal", "type": "managed", - "projectId": "4nEqjj19Sbp3EVnBkgQMP1", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_data_expressions/PlasmicSimplePathRow.tsx", + "projectId": "oermwjefjidrRRHcrxyCjQ", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_new_component/PlasmicNewComponentModal.tsx", "importSpec": { - "modulePath": "wab/client/components/SimplePathRow.tsx" + "modulePath": "wab/client/components/widgets/NewComponentModal.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_data_expressions/PlasmicSimplePathRow.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_new_component/PlasmicNewComponentModal.module.css", "scheme": "blackbox", "componentType": "component" }, { - "id": "D_TguRKWxB", - "name": "SimplePathColumn", + "id": "3_QVitiqMh", + "name": "NewComponentSection", "type": "managed", - "projectId": "4nEqjj19Sbp3EVnBkgQMP1", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_data_expressions/PlasmicSimplePathColumn.tsx", + "projectId": "oermwjefjidrRRHcrxyCjQ", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_new_component/PlasmicNewComponentSection.tsx", "importSpec": { - "modulePath": "wab/client/components/SimplePathColumn.tsx" + "modulePath": "wab/client/components/widgets/NewComponentSection.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_data_expressions/PlasmicSimplePathColumn.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_new_component/PlasmicNewComponentSection.module.css", "scheme": "blackbox", "componentType": "component" }, { - "id": "LRUE0mIhfL", - "name": "SimplePathRowHeader", + "id": "csXhXQDIqh", + "name": "NewComponentItem", "type": "managed", - "projectId": "4nEqjj19Sbp3EVnBkgQMP1", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_data_expressions/PlasmicSimplePathRowHeader.tsx", + "projectId": "oermwjefjidrRRHcrxyCjQ", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_new_component/PlasmicNewComponentItem.tsx", "importSpec": { - "modulePath": "wab/client/components/SimplePathRowHeader.tsx" + "modulePath": "wab/client/components/widgets/NewComponentItem.tsx" }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_data_expressions/PlasmicSimplePathRowHeader.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_new_component/PlasmicNewComponentItem.module.css", "scheme": "blackbox", "componentType": "component" } ], "icons": [], "images": [], - "projectApiToken": "gCQeXJm9PSxbK3mjIxGTRyQPApTB7LsC5Kw2IlbONhZyuwOsIrp6KMeHuoeIAwohLJahhEFSCe7hl379B0m10A", - "codeComponents": [], + "projectApiToken": "2h8iTWhOR6E43NIqaQHzTSELhepdLOKHGCTBALpv9zqlohVqBNgMloCSDXjtX7HjpY5pZe6yKhkDVKPDZnqSQ", + "codeComponents": [ + { + "id": "_wMevdyZrqHN", + "name": "PlasmicHead", + "displayName": "hostless-plasmic-head", + "componentImportPath": "@plasmicapp/react-web" + }, + { + "id": "IGfqg_pI9OcZ", + "name": "Fetcher", + "displayName": "plasmic-data-source-fetcher", + "componentImportPath": "@plasmicapp/react-web/lib/data-sources" + } + ], "indirect": false, "globalContextsFilePath": "", "splitsProviderFilePath": "", - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_new_component/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_new_component/plasmic.tsx", + "dataTokensFilePath": "", + "customFunctions": [] }, { "projectId": "pTmuho7nuNtDcvZAf2kJgx", "projectName": "[PlasmicKit] Code Display and Onboarding", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_kit_code_display_and_onboarding/plasmic_plasmic_kit_code_display_and_onboarding.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_code_display_and_onboarding/plasmic_plasmic_kit_code_display_and_onboarding.css", "components": [ { "id": "jLDeDF206V", @@ -5736,14 +5313,15 @@ "globalContextsFilePath": "", "splitsProviderFilePath": "", "customFunctions": [], - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_code_display_and_onboarding/plasmic.tsx", + "dataTokensFilePath": "" }, { "projectId": "sDniSX4oPUZFyk2sXXb3nh", "projectName": "[PlasmicKit] Text Mixins: Product", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/q_4_text_mixins_product/plasmic_q_4_text_mixins_product.module.css", + "cssFilePath": "wab/client/plasmic/q_4_text_mixins_product/plasmic_q_4_text_mixins_product.css", "components": [], "icons": [], "images": [], @@ -5774,7 +5352,7 @@ "projectId": "oT38tGyqov9SPWHpf3Y2Rf", "projectName": "[PlasmicKit] Icons", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_kit_icons/plasmic_q_4_icons.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_icons/plasmic_q_4_icons.css", "components": [], "icons": [ { @@ -7432,11 +7010,6 @@ "name": "CheckCircleSvgIcon", "moduleFilePath": "wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__CheckCircleSvg.tsx" }, - { - "id": "f0RrtBrXp", - "name": "CheckSvgIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__CheckSvg.tsx" - }, { "id": "xZrB9_0ir", "name": "ChevronDownSvgIcon", @@ -8648,9 +8221,34 @@ "moduleFilePath": "wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__KeyframesFilled.tsx" }, { - "id": "dv3Bkq7gSf1e", - "name": "CurlyBracesIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__CurlyBraces.tsx" + "id": "M5K-Io2qEu6p", + "name": "FunctionSvgIcon", + "moduleFilePath": "wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__FunctionSvg.tsx" + }, + { + "id": "rljnOq5L08E4", + "name": "BracesIcon", + "moduleFilePath": "wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__Braces.tsx" + }, + { + "id": "lKC5OWnoiZna", + "name": "BracketsIcon", + "moduleFilePath": "wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__Brackets.tsx" + }, + { + "id": "7bLQ-ay2DVAE", + "name": "NullIcon", + "moduleFilePath": "wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__Null.tsx" + }, + { + "id": "9S59ztobsQvK", + "name": "ParenthesesIcon", + "moduleFilePath": "wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__Parentheses.tsx" + }, + { + "id": "f0RrtBrXp", + "name": "CheckSvgIcon", + "moduleFilePath": "wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__CheckSvg.tsx" } ], "images": [], @@ -8681,7 +8279,7 @@ "projectId": "95xp9cYcv7HrNWpFWWhbcv", "projectName": "[PlasmicKit] Color Tokens", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css", "components": [], "icons": [], "images": [ @@ -8735,7 +8333,7 @@ "projectApiToken": "5lcVhjHv9wsRrHpnQBQWlAn06QvqOuSerEOoJxtGqSha2gELSqQeFSa7lPoBkMkCi6m3cWX3jfo2gNsmBRcg", "projectName": "[PlasmicKit] FindReferencesModal", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_kit_find_references_modal/plasmic_plasmic_kit_find_references_modal.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_find_references_modal/plasmic_plasmic_kit_find_references_modal.css", "components": [ { "id": "YWyR9ESU0CU", @@ -8781,15 +8379,17 @@ "codeComponents": [], "globalContextsFilePath": "", "splitsProviderFilePath": "", - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_find_references_modal/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_find_references_modal/plasmic.tsx", + "dataTokensFilePath": "", + "customFunctions": [] }, { "projectId": "uLddf5fC1aQbF7tmV1WQ1a", "projectApiToken": "MOnS4nTlfCGbQrfeuzmVjPr20L8bl6O5uUqb8otTSMq3jxlWyK1oAyJJmxT36y0qilcw2R3fZT9AVFqjmQgg", "projectName": "[PlasmicKit] Rich Text Toolbar", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_kit_rich_text_toolbar/plasmic_plasmic_kit_rich_text_toolbar.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_rich_text_toolbar/plasmic_plasmic_kit_rich_text_toolbar.css", "components": [ { "id": "GzEy-XDJM8", @@ -8838,15 +8438,16 @@ "globalContextsFilePath": "", "splitsProviderFilePath": "", "customFunctions": [], - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_rich_text_toolbar/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_rich_text_toolbar/plasmic.tsx", + "dataTokensFilePath": "" }, { "projectId": "ieacQ3Z46z4gwo1FnaB5vY", "projectApiToken": "qBgq9DX7J1VoEfo9CzSl3dDgYUSsmtrG7HoDGCN4fPYKoMwgS7YPEtZRDLuLjinH2gQ78CzOq2Q1gw7bdSA", "projectName": "[PlasmicKit] CMS", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_kit_cms/plasmic_plasmic_kit_cms.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_cms/plasmic_plasmic_kit_cms.css", "components": [ { "id": "FxC1c7NZtR", @@ -9061,14 +8662,15 @@ "splitsProviderFilePath": "", "customFunctions": [], "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_cms/PlasmicStyleTokensProvider.tsx", - "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_cms/plasmic.tsx" + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_cms/plasmic.tsx", + "dataTokensFilePath": "" }, { "projectId": "gtUDvxG6cmBbSzqLikNzoP", "projectApiToken": "8sTDQ90WrZpZSIjf7mRSepoprKPxl0YutFZkjvy94QbzZcYi0qbtCsHFiumDNi6kaCNdl8gUmMjKDsdUyDhg", "projectName": "[PlasmicKit] Optimize", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_kit_optimize/plasmic_plasmic_kit_optimize.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_optimize/plasmic_plasmic_kit_optimize.css", "components": [ { "id": "nlaW16gbH_n", @@ -9284,23 +8886,23 @@ }, { "id": "1fOBAQgR_YC", - "name": "SearchsvgIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_optimize/icons/PlasmicIcon__Searchsvg.tsx" + "name": "SearchSvgIcon", + "moduleFilePath": "wab/client/plasmic/plasmic_kit_optimize/icons/PlasmicIcon__SearchSvg.tsx" }, { "id": "WwUBV0GQ7FQ", - "name": "ChecksvgIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_optimize/icons/PlasmicIcon__Checksvg.tsx" + "name": "CheckSvgIcon", + "moduleFilePath": "wab/client/plasmic/plasmic_kit_optimize/icons/PlasmicIcon__CheckSvg.tsx" }, { "id": "X6hf2DFJIGGQ", - "name": "ChevronDownsvgIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_optimize/icons/PlasmicIcon__ChevronDownsvg.tsx" + "name": "ChevronDownSvgIcon", + "moduleFilePath": "wab/client/plasmic/plasmic_kit_optimize/icons/PlasmicIcon__ChevronDownSvg.tsx" }, { "id": "HgcWQamEyGiJ", - "name": "ChevronUpsvgIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_optimize/icons/PlasmicIcon__ChevronUpsvg.tsx" + "name": "ChevronUpSvgIcon", + "moduleFilePath": "wab/client/plasmic/plasmic_kit_optimize/icons/PlasmicIcon__ChevronUpSvg.tsx" }, { "id": "XoVue8d2QUwz", @@ -9317,22 +8919,24 @@ { "id": "Q9FZkjIRMlhO_", "name": "image.png", - "filePath": "wab/client/plasmic/plasmic_kit_optimize/images/imagepng.jpeg" + "filePath": "wab/client/plasmic/plasmic_kit_optimize/images/imagePng.jpg" } ], "indirect": false, "globalContextsFilePath": "", "codeComponents": [], "splitsProviderFilePath": "", - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_optimize/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_optimize/plasmic.tsx", + "dataTokensFilePath": "", + "customFunctions": [] }, { "projectId": "w2GXN278dkQ2gQTVQnPehW", "projectApiToken": "XlpYxXeJBssbtNoLCawek4y1zywRmLqnhwf9ryxOaiQ3L99h4nH3LpZISJwqHOCvZIxcvX1CWe2QVnUrfg", "projectName": "[PlasmicKit] Data Binding", - "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_kit_data_binding/plasmic_plasmic_kit_data_binding.module.css", + "version": "latest", + "cssFilePath": "wab/client/plasmic/plasmic_kit_data_binding/plasmic_plasmic_kit_data_binding.css", "components": [ { "id": "cbEBf9RLgx", @@ -9412,19 +9016,6 @@ "scheme": "blackbox", "componentType": "component" }, - { - "id": "gWylXtol8Lf", - "name": "DataPickerValueTypeIcon", - "type": "managed", - "projectId": "w2GXN278dkQ2gQTVQnPehW", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_data_binding/PlasmicDataPickerValueTypeIcon.tsx", - "importSpec": { - "modulePath": "wab/client/components/sidebar-tabs/DataBinding/DataPickerValueTypeIcon.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_data_binding/PlasmicDataPickerValueTypeIcon.module.css", - "scheme": "blackbox", - "componentType": "component" - }, { "id": "GDvL7J9P5V4", "name": "DataPickerGlobalSearchResults", @@ -9451,32 +9042,6 @@ "scheme": "blackbox", "componentType": "component" }, - { - "id": "VDe4OfA0wv", - "name": "WrapRepeatedElementModal", - "type": "managed", - "projectId": "w2GXN278dkQ2gQTVQnPehW", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_data_binding/PlasmicWrapRepeatedElementModal.tsx", - "importSpec": { - "modulePath": "wab/client/components/sidebar-tabs/DataBinding/WrapRepeatedElementModal.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_data_binding/PlasmicWrapRepeatedElementModal.module.css", - "scheme": "blackbox", - "componentType": "component" - }, - { - "id": "QcDtYmEqee", - "name": "WrapRepeatedElementOption", - "type": "managed", - "projectId": "w2GXN278dkQ2gQTVQnPehW", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_data_binding/PlasmicWrapRepeatedElementOption.tsx", - "importSpec": { - "modulePath": "wab/client/components/sidebar-tabs/DataBinding/WrapRepeatedElementOption.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_data_binding/PlasmicWrapRepeatedElementOption.module.css", - "scheme": "blackbox", - "componentType": "component" - }, { "id": "SdMPiPjcB9G", "name": "CopilotCodePrompt", @@ -9592,7 +9157,7 @@ "projectId": "w2GXN278dkQ2gQTVQnPehW", "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_data_binding/PlasmicChatMessage.tsx", "importSpec": { - "modulePath": "wab/client/components/copilot/ChatMessage.tsx", + "modulePath": "wab/client/components/copilot/enterprise/ChatMessage.tsx", "exportName": "ChatMessage" }, "cssFilePath": "wab/client/plasmic/plasmic_kit_data_binding/PlasmicChatMessage.module.css", @@ -9670,20 +9235,10 @@ } ], "icons": [ - { - "id": "aeyQLybWj1P", - "name": "CheckSvgIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__CheckSvg.tsx" - }, - { - "id": "T7O74SQvscm", - "name": "IconIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_data_binding/icons/PlasmicIcon__Icon.tsx" - }, { "id": "udef47udLQ", - "name": "SparklesIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_data_binding/icons/PlasmicIcon__Sparkles.tsx" + "name": "Sparkles3Icon", + "moduleFilePath": "wab/client/plasmic/plasmic_kit_data_binding/icons/PlasmicIcon__Sparkles3.tsx" }, { "id": "EfDOV4MDLj", @@ -9692,23 +9247,13 @@ }, { "id": "ZTW8iKylgI", - "name": "Icon4Icon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_data_binding/icons/PlasmicIcon__Icon4.tsx" + "name": "ThumbsUpIcon", + "moduleFilePath": "wab/client/plasmic/plasmic_kit_data_binding/icons/PlasmicIcon__ThumbsUp.tsx" }, { "id": "mPucsZbX6V", - "name": "Icon5Icon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_data_binding/icons/PlasmicIcon__Icon5.tsx" - }, - { - "id": "q7EuAkDIhNK0", - "name": "CloseIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_data_binding/icons/PlasmicIcon__Close.tsx" - }, - { - "id": "wG4t1pwzYNjU", - "name": "ArrowRightSvgIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_data_binding/icons/PlasmicIcon__ArrowRightSvg.tsx" + "name": "ThumbsDownIcon", + "moduleFilePath": "wab/client/plasmic/plasmic_kit_data_binding/icons/PlasmicIcon__ThumbsDown.tsx" } ], "images": [ @@ -9745,7 +9290,7 @@ "projectApiToken": "DWg4EVpu2l6n6fAdMDCvE22FFoWH1NK3ZmqmXnzezysh5ZWic03cixuobavnSG7W2O29VnLlgnyQp1TAijQ", "projectName": "antd", "version": "2.0.1", - "cssFilePath": "wab/client/plasmic/antd/plasmic_antd.module.css", + "cssFilePath": "wab/client/plasmic/antd/plasmic_antd.css", "components": [], "icons": [], "images": [], @@ -9887,7 +9432,7 @@ "projectApiToken": "Xkd3WgqVLuz2SfYds7zWHUDVp2uZe3iqyOzL4mxiPd6ybGkT0kmqRfmPtrcGRwA4yRp3NhCOJR8dlTRA", "projectName": "[PlasmicKit] Component Props Section", "version": "latest", - "cssFilePath": "wab/client/plasmic/plasmic_kit_component_props_section/plasmic_plasmic_kit_component_props_section.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_component_props_section/plasmic_plasmic_kit_component_props_section.css", "components": [ { "id": "-ZWJykIq5V-3F", @@ -9945,7 +9490,7 @@ "projectApiToken": "UXjed1SyPqmEOIeSMX8ea14kmySD7SS6Tr1lTiNAEc6tLegdumUOB3Sb2HeWW8UCckLqsuVOcGhBMqnKzw", "projectName": "[PlasmicKit] Analytics", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_kit_analytics/plasmic_plasmic_kit_analytics.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_analytics/plasmic_plasmic_kit_analytics.css", "components": [ { "id": "RrG72JEyZOXn", @@ -10086,19 +9631,22 @@ { "id": "p-n5zeFGwk", "name": "PlasmicHead", + "displayName": "hostless-plasmic-head", "componentImportPath": "@plasmicapp/react-web" } ], "splitsProviderFilePath": "", - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_analytics/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_analytics/plasmic.tsx", + "dataTokensFilePath": "", + "customFunctions": [] }, { "projectId": "p8FkKgCnyuat1kHSEYAKfW", "projectApiToken": "9DoCnq5cNw0FQjw61dZTcP1Jo20kdDCGkpGGTqjVxjl2yyS7ZrWDHrnED1ajDZZUDtRjLaCbuWJ5DXN2Xw", "projectName": "[PlasmicKit] Merge Flow", "version": "latest", - "cssFilePath": "wab/client/plasmic/plasmic_kit_merge_flow/plasmic_plasmic_kit_merge_flow.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_merge_flow/plasmic_plasmic_kit_merge_flow.css", "components": [ { "id": "A4VINgKjc8", @@ -10267,15 +9815,16 @@ ], "splitsProviderFilePath": "", "customFunctions": [], - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_merge_flow/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_merge_flow/plasmic.tsx", + "dataTokensFilePath": "" }, { "projectId": "caTPwKxj5ZrD9LQ7DMdK4Z", "projectApiToken": "vXGGQpdi9fhcncabBdg8DcMRUbkz0iRW6HS1jzQufQR6QH0MasPwr9SX7ap4SsK3xXwwXmzZtglWGe0Rm2nw", "projectName": "plasmic-basic-components", "version": "3.36.0", - "cssFilePath": "wab/client/plasmic/plasmic_basic_components/plasmic_plasmic_basic_components.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_basic_components/plasmic_plasmic_basic_components.css", "components": [], "icons": [], "images": [], @@ -10327,15 +9876,16 @@ ], "splitsProviderFilePath": "", "customFunctions": [], - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_basic_components/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_basic_components/plasmic.tsx", + "dataTokensFilePath": "" }, { "projectId": "eyjDfHaWPk4awNJAqhg4Cb", "projectApiToken": "TzIvXznTGt1M9jjItewokGRoDwVGczIsMTq7lnEHHAg99peoVxQlaLAaddyt6VZdF6TpmZmi6jKDRTo4g", "projectName": "[PlasmicKit] Multiplayer UI", "version": "latest", - "cssFilePath": "wab/client/plasmic/plasmic_kit_multiplayer_ui/plasmic_plasmic_kit_multiplayer_ui.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_multiplayer_ui/plasmic_plasmic_kit_multiplayer_ui.css", "components": [ { "id": "MgtZV0FX0Q", @@ -10391,24 +9941,28 @@ { "id": "-0WBL1dM40", "name": "PlasmicHead", + "displayName": "hostless-plasmic-head", "componentImportPath": "@plasmicapp/react-web" }, { "id": "-FL3eYTbC6", "name": "Fetcher", - "componentImportPath": "@plasmicapp/data-sources" + "displayName": "plasmic-data-source-fetcher", + "componentImportPath": "@plasmicapp/react-web/lib/data-sources" } ], "splitsProviderFilePath": "", - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_multiplayer_ui/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_multiplayer_ui/plasmic.tsx", + "dataTokensFilePath": "", + "customFunctions": [] }, { "projectId": "4B48dRthR8uGgyaBYpWthR", "projectApiToken": "KM0loxnuMI1wY6H9OTwyoQeX1t120gHvWZG3QSQV633UpGZoaovEhKRdL0DTgyQFzQSuuIgvPm8cGAGxnFs2dQ", "projectName": "[PlasmicKit] Insert Panel", "version": "latest", - "cssFilePath": "wab/client/plasmic/plasmic_kit_insert_panel/plasmic_plasmic_kit_insert_panel.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_insert_panel/plasmic_plasmic_kit_insert_panel.css", "components": [ { "id": "OwugJe7uVc", @@ -10549,13 +10103,13 @@ }, { "id": "aOGHT_bTEBZ", - "name": "ChevronDownsvgIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_insert_panel/icons/PlasmicIcon__ChevronDownsvg.tsx" + "name": "ChevronDownSvgIcon", + "moduleFilePath": "wab/client/plasmic/plasmic_kit_insert_panel/icons/PlasmicIcon__ChevronDownSvg.tsx" }, { "id": "JoQXtyo-2FA", - "name": "ChevronUpsvgIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_insert_panel/icons/PlasmicIcon__ChevronUpsvg.tsx" + "name": "ChevronUpSvgIcon", + "moduleFilePath": "wab/client/plasmic/plasmic_kit_insert_panel/icons/PlasmicIcon__ChevronUpSvg.tsx" } ], "images": [], @@ -10577,15 +10131,16 @@ ], "splitsProviderFilePath": "", "customFunctions": [], - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_insert_panel/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_insert_panel/plasmic.tsx", + "dataTokensFilePath": "" }, { "projectId": "BP7V3EkXPURJVwwMyWoHn", "projectApiToken": "LUtZ9rRneje3IFJxqcQFueHTd03P2atbyXaYt9YZYt5CaPRlJh3dJpl7zBSHks02RuAlYeTwcK2KNhRdw", "projectName": "[PlasmicKit] Comments", "version": "latest", - "cssFilePath": "wab/client/plasmic/plasmic_kit_comments/plasmic_plasmic_kit_comments.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_comments/plasmic_plasmic_kit_comments.css", "components": [ { "id": "bV6LLO0B3Y", @@ -10855,14 +10410,15 @@ "splitsProviderFilePath": "", "customFunctions": [], "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_comments/PlasmicStyleTokensProvider.tsx", - "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_comments/plasmic.tsx" + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_comments/plasmic.tsx", + "dataTokensFilePath": "" }, { "projectId": "frhoorZk3bxNXU73uUyvHm", "projectApiToken": "eRgeXIbtCo7BNSWoDvowag4y6VPbyWVnphYkSfpjZr8XV7Fi4gSqObsT2O9QB9DmD1X1z0jp1NdPOgnq4uI2g", "projectName": "[PlasmicKit] State Management", "version": "latest", - "cssFilePath": "wab/client/plasmic/plasmic_kit_state_management/plasmic_plasmic_kit_state_management.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_state_management/plasmic_plasmic_kit_state_management.css", "components": [ { "id": "S0KtszELh-", @@ -11041,15 +10597,16 @@ ], "splitsProviderFilePath": "", "customFunctions": [], - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_state_management/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_state_management/plasmic.tsx", + "dataTokensFilePath": "" }, { "projectId": "fuzE93KTc4ZKNBYf3LAfy", "projectApiToken": "mv6evZZOh81is2ZUqBWk3pkfIyFo2IlKLFJiW1Fi6RmdaU2pTScKi5ABPTxye1Clj81w1KzUj9QrlBK26J3w", "projectName": "[PlasmicKit] Context Menu Indicator", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_kit_context_menu_indicator/plasmic_plasmic_kit_context_menu_indicator.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_context_menu_indicator/plasmic_plasmic_kit_context_menu_indicator.css", "components": [ { "id": "iKmOjRERju", @@ -11112,8 +10669,8 @@ }, { "id": "s7v30LEVvl", - "name": "DownloadsvgIcon", - "moduleFilePath": "wab/client/plasmic/plasmic_kit_context_menu_indicator/icons/PlasmicIcon__Downloadsvg.tsx" + "name": "DownloadSvgIcon", + "moduleFilePath": "wab/client/plasmic/plasmic_kit_context_menu_indicator/icons/PlasmicIcon__DownloadSvg.tsx" } ], "images": [], @@ -11135,15 +10692,16 @@ ], "customFunctions": [], "splitsProviderFilePath": "", - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_context_menu_indicator/plasmic.tsx", + "dataTokensFilePath": "" }, { "projectId": "2dMe7XWUq916KsPnra5vYj", "projectApiToken": "knh1Ivc4eeZBdlcmVAgaio1KEEZnETjCcriPbEZo4MNsfVOmw5fYiFWb4LHYqsUuBg7GdxqLTtwZNEzOiUtsA", "projectName": "[PlasmicKit] End user management", "version": "latest", - "cssFilePath": "wab/client/plasmic/plasmic_kit_end_user_management/plasmic_plasmic_kit_end_user_management.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_end_user_management/plasmic_plasmic_kit_end_user_management.css", "components": [ { "id": "ratDJT6SAx", @@ -11347,15 +10905,17 @@ } ], "splitsProviderFilePath": "", - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_end_user_management/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_end_user_management/plasmic.tsx", + "dataTokensFilePath": "", + "customFunctions": [] }, { "projectId": "8PtdGodUbexNYgkuyBUcWu", "projectApiToken": "34o5R5KswluuZ4sD83F88oQrcLWsNNeUpCptQ8Okf4hYqgjnHnX2idGAlhtB7WWQQelNAInf5XFazR1cGw", "projectName": "plasmic-embed-css", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/plasmic_embed_css/plasmic_plasmic_embed_css.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_embed_css/plasmic_plasmic_embed_css.css", "components": [], "icons": [], "images": [], @@ -11380,7 +10940,7 @@ "projectApiToken": "SDcTxkQS1NI2sO7JrvdkphHLscQPWgw6vF1SQZcQuwHFZuCve20JpfONSzb0FDnwQjwp8z2VqhC8bA2aVTA", "projectName": "[PlasmicKit] Pricing", "version": "latest", - "cssFilePath": "wab/client/plasmic/plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_pricing/plasmic_plasmic_kit_pricing.css", "components": [ { "id": "Xx_WsdQKli-S", @@ -11447,19 +11007,6 @@ "scheme": "blackbox", "componentType": "component" }, - { - "id": "XvpbI4g-IJWK", - "name": "Popout", - "type": "managed", - "projectId": "ehckhYnyDHgCBbV47m9bkf", - "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_pricing/PlasmicPopout.tsx", - "importSpec": { - "modulePath": "wab/client/components/pricing/Popout.tsx" - }, - "cssFilePath": "wab/client/plasmic/plasmic_kit_pricing/PlasmicPopout.module.css", - "scheme": "blackbox", - "componentType": "component" - }, { "id": "OOKbAz_EJ7Rm", "name": "ElevatedCard", @@ -11511,6 +11058,19 @@ "cssFilePath": "wab/client/plasmic/plasmic_kit_pricing/PlasmicHoverableIcon.module.css", "scheme": "blackbox", "componentType": "component" + }, + { + "id": "DHHU9E4NuTqC", + "name": "CollaboratorsHoverContent", + "type": "managed", + "projectId": "ehckhYnyDHgCBbV47m9bkf", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_pricing/PlasmicCollaboratorsHoverContent.tsx", + "importSpec": { + "modulePath": "wab/client/components/pricing/CollaboratorsHoverContent.tsx" + }, + "cssFilePath": "wab/client/plasmic/plasmic_kit_pricing/PlasmicCollaboratorsHoverContent.module.css", + "scheme": "blackbox", + "componentType": "component" } ], "icons": [], @@ -11529,25 +11089,20 @@ "name": "Fetcher", "displayName": "plasmic-data-source-fetcher", "componentImportPath": "@plasmicapp/react-web/lib/data-sources" - }, - { - "id": "eAE4YEj_YxMC", - "name": "PricingTooltip", - "displayName": "Tooltip", - "componentImportPath": "./src/wab/client/components/pricing/Tooltip" } ], "splitsProviderFilePath": "", "customFunctions": [], - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_pricing/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_pricing/plasmic.tsx", + "dataTokensFilePath": "" }, { "projectId": "28e27syQUKgfkErJT9mxWA", "projectApiToken": "bSBdSV2gtOVUoR3tmecOoxqnBarm1FQvTEvu0e4y8kD1zMySRzQ0ZDlUgARwK31fOv6HVoxR6P7mKZJ5A", "projectName": "[PlasmicKit] Responsive Breakpoints", "version": "0.0.1", - "cssFilePath": "wab/client/plasmic/plasmic_kit_responsive_breakpoints/plasmic_plasmic_kit_responsive_breakpoints.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_responsive_breakpoints/plasmic_plasmic_kit_responsive_breakpoints.css", "components": [], "icons": [], "images": [], @@ -11568,15 +11123,17 @@ } ], "splitsProviderFilePath": "", - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_responsive_breakpoints/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_responsive_breakpoints/plasmic.tsx", + "dataTokensFilePath": "", + "customFunctions": [] }, { "projectId": "gmeH6XgPaBtkt51HunAo4g", "projectApiToken": "LBbn8U2dmbpX9oeuRsYNyEKki39EXydGQgs9vBvR5sLHfGEZsK4owvOj7Q7SnflW4ASIEdLFAeeoxGxXZ8dJtA", "projectName": "react-aria", "version": ">0.0.0", - "cssFilePath": "wab/client/plasmic/react_aria/plasmic.module.css", + "cssFilePath": "wab/client/plasmic/react_aria/plasmic.css", "components": [], "icons": [], "images": [], @@ -11787,18 +11344,18 @@ "projectApiToken": "gsvvkXd1dok0xQQ89nOSOCDgGMkbupL0DtJ11cm2ubLbQZKMGaiBmo0HrRr7BmkC8bZgfVQCeEdOth3hLNZw", "projectName": "[PlasmicKit] User Mentions", "version": ">=0.0.0", - "cssFilePath": "wab/client/plasmic/user_mentions/plasmic.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_user_mentions/plasmic.css", "components": [ { "id": "l-sEnd6egOHM", "name": "UserList", "type": "managed", "projectId": "kTSMroKPFv65RRTb44SCtk", - "renderModuleFilePath": "wab/client/plasmic/user_mentions/PlasmicUserList.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_user_mentions/PlasmicUserList.tsx", "importSpec": { "modulePath": "wab/client/components/user-mentions/UserList.tsx" }, - "cssFilePath": "wab/client/plasmic/user_mentions/PlasmicUserList.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_user_mentions/PlasmicUserList.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -11807,11 +11364,11 @@ "name": "UserListItem", "type": "managed", "projectId": "kTSMroKPFv65RRTb44SCtk", - "renderModuleFilePath": "wab/client/plasmic/user_mentions/PlasmicUserListItem.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_user_mentions/PlasmicUserListItem.tsx", "importSpec": { "modulePath": "wab/client/components/user-mentions/UserListItem.tsx" }, - "cssFilePath": "wab/client/plasmic/user_mentions/PlasmicUserListItem.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_user_mentions/PlasmicUserListItem.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -11820,12 +11377,12 @@ "name": "UserMentionsPopoverContent", "type": "managed", "projectId": "kTSMroKPFv65RRTb44SCtk", - "renderModuleFilePath": "wab/client/plasmic/user_mentions/PlasmicUserMentionsPopoverContent.tsx", + "renderModuleFilePath": "wab/client/plasmic/plasmic_kit_user_mentions/PlasmicUserMentionsPopoverContent.tsx", "importSpec": { "modulePath": "wab/client/components/user-mentions/UserMentionsPopoverContent.tsx", "exportName": "UserMentionsPopoverContent" }, - "cssFilePath": "wab/client/plasmic/user_mentions/PlasmicUserMentionsPopoverContent.module.css", + "cssFilePath": "wab/client/plasmic/plasmic_kit_user_mentions/PlasmicUserMentionsPopoverContent.module.css", "scheme": "blackbox", "componentType": "component" }, @@ -11848,29 +11405,29 @@ { "id": "vpjhh_trEdY0", "name": "CircleIcon", - "moduleFilePath": "wab/client/plasmic/user_mentions/icons/PlasmicIcon__Circle.tsx" + "moduleFilePath": "wab/client/plasmic/plasmic_kit_user_mentions/icons/PlasmicIcon__Circle.tsx" }, { "id": "k02Fwku7Tl9M", "name": "ChevronDownIcon", - "moduleFilePath": "wab/client/plasmic/user_mentions/icons/PlasmicIcon__ChevronDown.tsx" + "moduleFilePath": "wab/client/plasmic/plasmic_kit_user_mentions/icons/PlasmicIcon__ChevronDown.tsx" }, { "id": "sUed0_FBnG4j", "name": "TriangleFilledIcon", - "moduleFilePath": "wab/client/plasmic/user_mentions/icons/PlasmicIcon__TriangleFilled.tsx" + "moduleFilePath": "wab/client/plasmic/plasmic_kit_user_mentions/icons/PlasmicIcon__TriangleFilled.tsx" }, { "id": "9tHnrDLYFnPe", "name": "IconIcon", - "moduleFilePath": "wab/client/plasmic/user_mentions/icons/PlasmicIcon__Icon.tsx" + "moduleFilePath": "wab/client/plasmic/plasmic_kit_user_mentions/icons/PlasmicIcon__Icon.tsx" } ], "images": [ { "id": "Vw4yl7Sbw35N", "name": "image", - "filePath": "wab/client/plasmic/user_mentions/images/image.svg" + "filePath": "wab/client/plasmic/plasmic_kit_user_mentions/images/image.svg" } ], "indirect": false, @@ -11891,8 +11448,9 @@ } ], "customFunctions": [], - "styleTokensProviderFilePath": "", - "projectModuleFilePath": "" + "styleTokensProviderFilePath": "wab/client/plasmic/plasmic_kit_user_mentions/PlasmicStyleTokensProvider.tsx", + "projectModuleFilePath": "wab/client/plasmic/plasmic_kit_user_mentions/plasmic.tsx", + "dataTokensFilePath": "" } ], "globalVariants": { @@ -11915,30 +11473,12 @@ "projectId": "dyzP6dbCdycwJpqiR2zkwe", "contextFilePath": "wab/client/plasmic/plasmic_kit_docs_portal/PlasmicGlobalVariant__CodegenType.tsx" }, - { - "id": "0tMEAYfWN538", - "name": "Screen", - "projectId": "fQPf2UiMEMhB52C8QQXwWe", - "contextFilePath": "wab/client/plasmic/plasmic_kit_omnibar/PlasmicGlobalVariant__Screen.tsx" - }, { "id": "n2dxsui6xhqx", "name": "Screen", "projectId": "6BCq4vMow1yqGKFdcP68Rz", "contextFilePath": "wab/client/plasmic/plasmic_kit_page_settings/PlasmicGlobalVariant__Screen.tsx" }, - { - "id": "2SnfbihspmoJ", - "name": "Screen", - "projectId": "9csusiyEETC5n9fFKLeYNK", - "contextFilePath": "wab/client/plasmic/plasmic_kit_data_queries/PlasmicGlobalVariant__Screen.tsx" - }, - { - "id": "v16B7zZEJF0m", - "name": "Screen", - "projectId": "4nEqjj19Sbp3EVnBkgQMP1", - "contextFilePath": "wab/client/plasmic/plasmic_kit_data_expressions/PlasmicGlobalVariant__Screen.tsx" - }, { "id": "BW9kEyJ7_p", "name": "Screen", @@ -11975,12 +11515,6 @@ "projectId": "p8FkKgCnyuat1kHSEYAKfW", "contextFilePath": "wab/client/plasmic/plasmic_kit_merge_flow/PlasmicGlobalVariant__Screen.tsx" }, - { - "id": "36nw8KCcgswV1", - "name": "Screen", - "projectId": "BP7V3EkXPURJVwwMyWoHn", - "contextFilePath": "wab/client/plasmic/plasmic_kit_comments/PlasmicGlobalVariant__Screen.tsx" - }, { "id": "DJ0PzuYE_I5xyS", "name": "Screen", @@ -12015,15 +11549,16 @@ "id": "4QWQO5iAb22t", "name": "Screen", "projectId": "kTSMroKPFv65RRTb44SCtk", - "contextFilePath": "wab/client/plasmic/user_mentions/PlasmicGlobalVariant__Screen.tsx" + "contextFilePath": "wab/client/plasmic/plasmic_kit_user_mentions/PlasmicGlobalVariant__Screen.tsx" } ] }, "wrapPagesWithGlobalContexts": true, "preserveJsImportExtensions": false, - "postSyncCommands": [ - "git ls-files -m | xargs pre-commit run prettier --files" - ], - "cliVersion": "0.1.359", - "$schema": "https://unpkg.com/@plasmicapp/cli@0.1.359/dist/plasmic.schema.json" + "tokens": { + "scheme": "theo", + "tokensFilePath": "wab/styles/plasmic-tokens.theo.json" + }, + "cliVersion": "0.1.368", + "$schema": "https://unpkg.com/@plasmicapp/cli@0.1.368/dist/plasmic.schema.json" } diff --git a/platform/wab/plasmic.lock b/platform/wab/plasmic.lock index 4c39fae6eb..0ff6776c6f 100644 --- a/platform/wab/plasmic.lock +++ b/platform/wab/plasmic.lock @@ -2,184 +2,184 @@ "projects": [ { "projectId": "tXkSR39sgCDWSitZxC5xFV", - "version": "91.8.0", + "version": "99.1.1", "dependencies": { "sDniSX4oPUZFyk2sXXb3nh": "6.1.1", - "oT38tGyqov9SPWHpf3Y2Rf": "6.0.0", + "oT38tGyqov9SPWHpf3Y2Rf": "7.0.1", "95xp9cYcv7HrNWpFWWhbcv": "2.3.0", - "gmeH6XgPaBtkt51HunAo4g": "18.30.0" + "gmeH6XgPaBtkt51HunAo4g": "18.32.0" }, "lang": "ts", "fileLocks": [ { "type": "renderModule", "assetId": "pA22NEzDCsn_", - "checksum": "a3d92f2c5a32235ac9393c6bb8f6f65c" + "checksum": "96daaae7cc0e88be74c43bfb550b1889" }, { "type": "cssRules", "assetId": "pA22NEzDCsn_", - "checksum": "a3d92f2c5a32235ac9393c6bb8f6f65c" + "checksum": "96daaae7cc0e88be74c43bfb550b1889" }, { "type": "renderModule", "assetId": "SEF-sRmSoqV5c", - "checksum": "8cc3ad76f49f39af00350773d3311c34" + "checksum": "eb85749c837d2083a9da0434e4b9d937" }, { "type": "cssRules", "assetId": "SEF-sRmSoqV5c", - "checksum": "8cc3ad76f49f39af00350773d3311c34" + "checksum": "eb85749c837d2083a9da0434e4b9d937" }, { "type": "renderModule", "assetId": "LPry-TF4j22a", - "checksum": "575581aa74947208500c20e685056985" + "checksum": "bd753ecb1cda644e8ff600c0f88d53f9" }, { "type": "cssRules", "assetId": "LPry-TF4j22a", - "checksum": "575581aa74947208500c20e685056985" + "checksum": "bd753ecb1cda644e8ff600c0f88d53f9" }, { "type": "renderModule", "assetId": "po7gr0PX4_gWo", - "checksum": "f4e2e0b8ad029b51277eeb74121e7579" + "checksum": "d5e5e1877ca03acacc65c5c749244ab9" }, { "type": "cssRules", "assetId": "po7gr0PX4_gWo", - "checksum": "f4e2e0b8ad029b51277eeb74121e7579" + "checksum": "d5e5e1877ca03acacc65c5c749244ab9" }, { "type": "renderModule", "assetId": "0NaTcyuAGK2dN", - "checksum": "b7a7b4d5b25f1251c0d5be8996ff59c5" + "checksum": "5dce4e09f84c7fd01683c86ebd3b8c96" }, { "type": "cssRules", "assetId": "0NaTcyuAGK2dN", - "checksum": "b7a7b4d5b25f1251c0d5be8996ff59c5" + "checksum": "5dce4e09f84c7fd01683c86ebd3b8c96" }, { "type": "renderModule", "assetId": "v31d9_ANqk", - "checksum": "9ad1d97e321f35287064b2f98715fed4" + "checksum": "3a6a131e5ad2c8d01fbf7d3809d8a5e9" }, { "type": "cssRules", "assetId": "v31d9_ANqk", - "checksum": "9ad1d97e321f35287064b2f98715fed4" + "checksum": "3a6a131e5ad2c8d01fbf7d3809d8a5e9" }, { "type": "renderModule", "assetId": "jW885tExwE", - "checksum": "1d5456ed92b8d090cd28a4b08ba3a2bc" + "checksum": "34807d99a7461ffca1e94a0accbf0519" }, { "type": "cssRules", "assetId": "jW885tExwE", - "checksum": "1d5456ed92b8d090cd28a4b08ba3a2bc" + "checksum": "34807d99a7461ffca1e94a0accbf0519" }, { "type": "renderModule", "assetId": "wNvxk7eOak", - "checksum": "3dd5ec78121cd4035c45f6cc87bae234" + "checksum": "d4302044f6ed2caddd2d979c4751b0ac" }, { "type": "cssRules", "assetId": "wNvxk7eOak", - "checksum": "3dd5ec78121cd4035c45f6cc87bae234" + "checksum": "d4302044f6ed2caddd2d979c4751b0ac" }, { "type": "renderModule", "assetId": "uG5_fPM0sK", - "checksum": "670f3d16ab0768366732368a21118682" + "checksum": "a8ea910aae51757caf26bf9719a24bb8" }, { "type": "cssRules", "assetId": "uG5_fPM0sK", - "checksum": "670f3d16ab0768366732368a21118682" + "checksum": "a8ea910aae51757caf26bf9719a24bb8" }, { "type": "renderModule", "assetId": "znioE83CPU", - "checksum": "7e1305fbb52004c2e9b6c98286fb8913" + "checksum": "97755f2bc0733d85b8e68966d581351e" }, { "type": "cssRules", "assetId": "znioE83CPU", - "checksum": "7e1305fbb52004c2e9b6c98286fb8913" + "checksum": "97755f2bc0733d85b8e68966d581351e" }, { "type": "renderModule", "assetId": "pFgBG9DS0D", - "checksum": "8becaf56367fe7cda7c8fb874d8711ed" + "checksum": "4cbebe42c8da7855f6b9e0f8421bba27" }, { "type": "cssRules", "assetId": "pFgBG9DS0D", - "checksum": "8becaf56367fe7cda7c8fb874d8711ed" + "checksum": "4cbebe42c8da7855f6b9e0f8421bba27" }, { "type": "renderModule", "assetId": "KRNHR6lpj1", - "checksum": "3a69274ccef86e66cf165e4bd6695d8f" + "checksum": "6031df6e0d35016ee53d1b2f24025403" }, { "type": "cssRules", "assetId": "KRNHR6lpj1", - "checksum": "3a69274ccef86e66cf165e4bd6695d8f" + "checksum": "6031df6e0d35016ee53d1b2f24025403" }, { "type": "renderModule", "assetId": "h69wHrrKtL", - "checksum": "456ec900169f5c3ff0adb14f5aadd7c1" + "checksum": "c594f2bcd45d2d768230a759e824c712" }, { "type": "cssRules", "assetId": "h69wHrrKtL", - "checksum": "456ec900169f5c3ff0adb14f5aadd7c1" + "checksum": "c594f2bcd45d2d768230a759e824c712" }, { "type": "renderModule", "assetId": "JJhv0MV9DH", - "checksum": "4b4d990cadc734448f857802b81427fe" + "checksum": "eb74787caf5996c8b5f65bef64289c2d" }, { "type": "cssRules", "assetId": "JJhv0MV9DH", - "checksum": "4b4d990cadc734448f857802b81427fe" + "checksum": "eb74787caf5996c8b5f65bef64289c2d" }, { "type": "renderModule", "assetId": "VNi6NC2QOI", - "checksum": "4d594aba0c60cf7df9c332cf4dd3f6bf" + "checksum": "31c27063cbb54c5b419e5b21d9facb22" }, { "type": "cssRules", "assetId": "VNi6NC2QOI", - "checksum": "4d594aba0c60cf7df9c332cf4dd3f6bf" + "checksum": "31c27063cbb54c5b419e5b21d9facb22" }, { "type": "renderModule", "assetId": "btpz7A3thO", - "checksum": "cf6877c9008dd785c65362362ff8e2cf" + "checksum": "c84802315ed4bc56500ebfe4c98ce95a" }, { "type": "cssRules", "assetId": "btpz7A3thO", - "checksum": "cf6877c9008dd785c65362362ff8e2cf" + "checksum": "c84802315ed4bc56500ebfe4c98ce95a" }, { "type": "renderModule", "assetId": "rD0wOVzSnE", - "checksum": "7c6903eb4c1fe30722f36b8ba6bdf979" + "checksum": "7e7f17d21fcded4931c6ef3230738d96" }, { "type": "cssRules", "assetId": "rD0wOVzSnE", - "checksum": "7c6903eb4c1fe30722f36b8ba6bdf979" + "checksum": "7e7f17d21fcded4931c6ef3230738d96" }, { "type": "image", @@ -219,72 +219,72 @@ { "type": "renderModule", "assetId": "-EsDm7v023", - "checksum": "fe3d68dd75d6dff2768c1fc2d43c3f89" + "checksum": "7a061bc767b66a5d72a2b629c321a7b0" }, { "type": "cssRules", "assetId": "-EsDm7v023", - "checksum": "fe3d68dd75d6dff2768c1fc2d43c3f89" + "checksum": "7a061bc767b66a5d72a2b629c321a7b0" }, { "type": "renderModule", "assetId": "j_4IQyOWK2b", - "checksum": "81b963d12f56826b1d8795651f2caec3" + "checksum": "e55b1fa58724ac57f145505d035a0985" }, { "type": "cssRules", "assetId": "j_4IQyOWK2b", - "checksum": "81b963d12f56826b1d8795651f2caec3" + "checksum": "e55b1fa58724ac57f145505d035a0985" }, { "type": "renderModule", "assetId": "rr-LWdMni2G", - "checksum": "3be435e1423651b78144d15ec42eb71e" + "checksum": "963092537fb0c1400d7abd5adab935a1" }, { "type": "cssRules", "assetId": "rr-LWdMni2G", - "checksum": "3be435e1423651b78144d15ec42eb71e" + "checksum": "963092537fb0c1400d7abd5adab935a1" }, { "type": "renderModule", "assetId": "_qMm1mtrqOi", - "checksum": "9845fae1429bcdddefb6c0065035feea" + "checksum": "2b53234df2838d9766622242ab124dae" }, { "type": "cssRules", "assetId": "_qMm1mtrqOi", - "checksum": "9845fae1429bcdddefb6c0065035feea" + "checksum": "2b53234df2838d9766622242ab124dae" }, { "type": "renderModule", "assetId": "j2qDLcsq5qB", - "checksum": "68549a49a6713533701961bc4f61f7ec" + "checksum": "174ac4f0de11ef1fd1559063f5081f9d" }, { "type": "cssRules", "assetId": "j2qDLcsq5qB", - "checksum": "68549a49a6713533701961bc4f61f7ec" + "checksum": "174ac4f0de11ef1fd1559063f5081f9d" }, { "type": "renderModule", "assetId": "W-rO7NZqPjZ", - "checksum": "dc874e6c65aca387f2f43ddde167a7bc" + "checksum": "8643760e08cffc6bb340c9c0a1cd9512" }, { "type": "cssRules", "assetId": "W-rO7NZqPjZ", - "checksum": "dc874e6c65aca387f2f43ddde167a7bc" + "checksum": "8643760e08cffc6bb340c9c0a1cd9512" }, { "type": "renderModule", "assetId": "b35JDgXpbiF", - "checksum": "e8ce823a60baef7551449b269441c53a" + "checksum": "71463d442a5b319a0095176fb77eb0ca" }, { "type": "cssRules", "assetId": "b35JDgXpbiF", - "checksum": "e8ce823a60baef7551449b269441c53a" + "checksum": "71463d442a5b319a0095176fb77eb0ca" }, { "type": "icon", @@ -1221,11 +1221,6 @@ "assetId": "tSLSUCy1RH", "checksum": "335ae7effc54e6df8cdf50fec94f5fa7" }, - { - "type": "icon", - "assetId": "mZMZr0AmTY", - "checksum": "670b3f5d26ae3155dd0e43f96bc35967" - }, { "type": "icon", "assetId": "vcLrcTni3c", @@ -1554,97 +1549,72 @@ { "type": "renderModule", "assetId": "p3GgKAlaQe", - "checksum": "1177cc0a4ab2fbe48600ec249bf42452" + "checksum": "784e2a40962a4a88b0777b9ed3091737" }, { "type": "cssRules", "assetId": "p3GgKAlaQe", - "checksum": "1177cc0a4ab2fbe48600ec249bf42452" - }, - { - "type": "icon", - "assetId": "eayXbyej4Q", - "checksum": "35e346e10b77905430657805af27e7b6" - }, - { - "type": "icon", - "assetId": "GblhqXeZ9m", - "checksum": "6af61b1dfcf61a2ec7cabb361333b0b1" - }, - { - "type": "icon", - "assetId": "zOPv4eezG5", - "checksum": "f4d3d20124f3ce840a1940518ca5a64f" - }, - { - "type": "icon", - "assetId": "hPBDwf8f70", - "checksum": "3ffa83c44059c991014fea6193317164" - }, - { - "type": "icon", - "assetId": "ZPpW4b17Mv", - "checksum": "72a4179c60002d129df4fcca9ebf0a4d" + "checksum": "784e2a40962a4a88b0777b9ed3091737" }, { "type": "renderModule", "assetId": "j8LiUtkTBvsH", - "checksum": "f6842ceff7b5d64b92f585c5cc2a6e54" + "checksum": "64a400fa25077eb4b303f8f025e22b15" }, { "type": "cssRules", "assetId": "j8LiUtkTBvsH", - "checksum": "f6842ceff7b5d64b92f585c5cc2a6e54" + "checksum": "64a400fa25077eb4b303f8f025e22b15" }, { "type": "renderModule", "assetId": "Hxtf0EKrkmO5", - "checksum": "3824f7c089c3267e75a5bbce4d6bc02c" + "checksum": "499824bf19e8cc17db0b5d4087b1b96a" }, { "type": "cssRules", "assetId": "Hxtf0EKrkmO5", - "checksum": "3824f7c089c3267e75a5bbce4d6bc02c" + "checksum": "499824bf19e8cc17db0b5d4087b1b96a" }, { "type": "renderModule", "assetId": "J_e2eE41048e", - "checksum": "39625caeb6db4f3df59fb1ba640e643b" + "checksum": "f7bff0f147db0fe46983161bd08c2afc" }, { "type": "cssRules", "assetId": "J_e2eE41048e", - "checksum": "39625caeb6db4f3df59fb1ba640e643b" + "checksum": "f7bff0f147db0fe46983161bd08c2afc" }, { "type": "renderModule", "assetId": "0wwbx9l7LS5I", - "checksum": "21fd7263c67046f0ae8efb8468071439" + "checksum": "02afd434980c142488a80fbae7f96b6f" }, { "type": "cssRules", "assetId": "0wwbx9l7LS5I", - "checksum": "21fd7263c67046f0ae8efb8468071439" + "checksum": "02afd434980c142488a80fbae7f96b6f" }, { "type": "renderModule", "assetId": "hGC02-wRlm3F", - "checksum": "27ce6942dd1e6c61b19b8a4c8bc41647" + "checksum": "382f0d2138937a2bda6ed460ab56cb9d" }, { "type": "cssRules", "assetId": "hGC02-wRlm3F", - "checksum": "27ce6942dd1e6c61b19b8a4c8bc41647" + "checksum": "382f0d2138937a2bda6ed460ab56cb9d" }, { "type": "renderModule", "assetId": "tKtZ3ZcVITrx", - "checksum": "8c044709c0001abd9f3b118abed5b472" + "checksum": "fb38caf376519fd6d5813330f4ee7bdb" }, { "type": "cssRules", "assetId": "tKtZ3ZcVITrx", - "checksum": "8c044709c0001abd9f3b118abed5b472" + "checksum": "fb38caf376519fd6d5813330f4ee7bdb" }, { "type": "icon", @@ -1669,42 +1639,42 @@ { "type": "renderModule", "assetId": "en2IIw2C3_aI", - "checksum": "bb4c3b8d9e96369a1c0ceca071859e4f" + "checksum": "13bdec5ae8e68bd44605083e8153f472" }, { "type": "cssRules", "assetId": "en2IIw2C3_aI", - "checksum": "bb4c3b8d9e96369a1c0ceca071859e4f" + "checksum": "13bdec5ae8e68bd44605083e8153f472" }, { "type": "renderModule", "assetId": "sbyrU_8SkoWY", - "checksum": "eea5774eae3357aff035fdfdfb90c823" + "checksum": "a5498b8a7cd9ee1d645a0c6c52bc9d9b" }, { "type": "cssRules", "assetId": "sbyrU_8SkoWY", - "checksum": "eea5774eae3357aff035fdfdfb90c823" + "checksum": "a5498b8a7cd9ee1d645a0c6c52bc9d9b" }, { "type": "renderModule", "assetId": "FRA2fXjcDHo2", - "checksum": "9edfa532cc2f609538279d8394283c49" + "checksum": "a558e635299fdfc7b9f809b8dbdb5fb0" }, { "type": "cssRules", "assetId": "FRA2fXjcDHo2", - "checksum": "9edfa532cc2f609538279d8394283c49" + "checksum": "a558e635299fdfc7b9f809b8dbdb5fb0" }, { "type": "renderModule", "assetId": "FYmdApEkhOiH", - "checksum": "731c2b9aa565fe1c84d2d9e0b75fac68" + "checksum": "53c2e70679248da80164a82e622d7422" }, { "type": "cssRules", "assetId": "FYmdApEkhOiH", - "checksum": "731c2b9aa565fe1c84d2d9e0b75fac68" + "checksum": "53c2e70679248da80164a82e622d7422" }, { "type": "icon", @@ -1719,12 +1689,12 @@ { "type": "renderModule", "assetId": "EBbuUzYSewBk", - "checksum": "dc1eec5e5a5c097c6cfaa6a759cd8bba" + "checksum": "4dc03cdb843ce7ecdddd198a4b4b66a1" }, { "type": "cssRules", "assetId": "EBbuUzYSewBk", - "checksum": "dc1eec5e5a5c097c6cfaa6a759cd8bba" + "checksum": "4dc03cdb843ce7ecdddd198a4b4b66a1" }, { "assetId": "tXkSR39sgCDWSitZxC5xFV", @@ -1733,7 +1703,7 @@ }, { "assetId": "tXkSR39sgCDWSitZxC5xFV", - "checksum": "c1621d94ba3f0fb9510e15989bff9728", + "checksum": "875825f7deb3d27c3a8e11ea1b125aed", "type": "styleTokensProvider" }, { @@ -1741,292 +1711,298 @@ "assetId": "cRhITljQuV", "checksum": "85a41045932bb52d3658431e35125e4b" }, - { - "type": "icon", - "assetId": "Be4M_W3C1jbV", - "checksum": "5936426075dae22fee33b1afb56b8908" - }, { "type": "renderModule", "assetId": "HuWzUuHGp49C", - "checksum": "913d15162043ed37f9064837674235ce" + "checksum": "a111ea4aa149bd8968bb26944192fee9" }, { "type": "cssRules", "assetId": "HuWzUuHGp49C", - "checksum": "913d15162043ed37f9064837674235ce" + "checksum": "a111ea4aa149bd8968bb26944192fee9" }, { "type": "renderModule", "assetId": "YvSNiHRodZSY", - "checksum": "01c36cd7dbac053c7b12afcf0cd7a437" + "checksum": "4ed1389b05e223963689a24443a8965a" }, { "type": "cssRules", "assetId": "YvSNiHRodZSY", - "checksum": "01c36cd7dbac053c7b12afcf0cd7a437" + "checksum": "4ed1389b05e223963689a24443a8965a" }, { "type": "renderModule", "assetId": "cplpbevCTFb_", - "checksum": "02f1d878350f92f0b26d61d53d31fc6c" + "checksum": "6023e82ac5cdad8c41b7cf6701fdef76" }, { "type": "cssRules", "assetId": "cplpbevCTFb_", - "checksum": "02f1d878350f92f0b26d61d53d31fc6c" + "checksum": "6023e82ac5cdad8c41b7cf6701fdef76" }, { "type": "renderModule", "assetId": "zIW2sbKF4DAY", - "checksum": "6f828ab297138c905e566f56f33d86c4" + "checksum": "69a3f7d8c6e3f78d66e9fe1ba13671b3" }, { "type": "cssRules", "assetId": "zIW2sbKF4DAY", - "checksum": "6f828ab297138c905e566f56f33d86c4" + "checksum": "69a3f7d8c6e3f78d66e9fe1ba13671b3" + }, + { + "type": "icon", + "assetId": "Be4M_W3C1jbV", + "checksum": "5936426075dae22fee33b1afb56b8908" + }, + { + "type": "renderModule", + "assetId": "5TapYEMkYCfR", + "checksum": "fccfee1a6e1b11aac28be1502e026ca1" + }, + { + "type": "cssRules", + "assetId": "5TapYEMkYCfR", + "checksum": "fccfee1a6e1b11aac28be1502e026ca1" + }, + { + "type": "icon", + "assetId": "msFJe6Nhnq3J", + "checksum": "5530cb8e3cdc86516eed718b25af9943" }, { "assetId": "tXkSR39sgCDWSitZxC5xFV", "type": "projectCss", - "checksum": "05841b23b8227a954d3a3dbf0a1921e9" + "checksum": "ea0c22eb07106c3e9565643c08341a9a" } ], "codegenVersion": "0.0.3" }, { "projectId": "aukbrhkegRkQ6KizvhdUPT", - "version": "50.0.0", + "version": "52.0.1", "dependencies": { - "tXkSR39sgCDWSitZxC5xFV": "91.3.13", - "oT38tGyqov9SPWHpf3Y2Rf": "6.0.0", + "tXkSR39sgCDWSitZxC5xFV": "99.1.0", + "oT38tGyqov9SPWHpf3Y2Rf": "7.0.1", "95xp9cYcv7HrNWpFWWhbcv": "2.3.0", "sDniSX4oPUZFyk2sXXb3nh": "6.1.1", - "gYEVvAzCcLMHDVPvuYxkFh": "25.1.3", - "8PtdGodUbexNYgkuyBUcWu": "3.33.0", - "gmeH6XgPaBtkt51HunAo4g": "18.29.0" + "gYEVvAzCcLMHDVPvuYxkFh": "26.0.2", + "8PtdGodUbexNYgkuyBUcWu": "3.34.0", + "gmeH6XgPaBtkt51HunAo4g": "18.32.0", + "caTPwKxj5ZrD9LQ7DMdK4Z": "3.49.0" }, "lang": "ts", "fileLocks": [ { "type": "renderModule", "assetId": "V25hk8i--ck", - "checksum": "c610164110c64b6441e0722109a6a4d1" + "checksum": "bfc894bc53584a6e839c8c742171ebdd" }, { "type": "cssRules", "assetId": "V25hk8i--ck", - "checksum": "c610164110c64b6441e0722109a6a4d1" + "checksum": "bfc894bc53584a6e839c8c742171ebdd" }, { "type": "renderModule", "assetId": "kkbHZ8nmgGH", - "checksum": "d96bfe4de8058d898a4563b1f122af5b" + "checksum": "7312e981b041b0ee65923ae1fd17dfce" }, { "type": "cssRules", "assetId": "kkbHZ8nmgGH", - "checksum": "d96bfe4de8058d898a4563b1f122af5b" + "checksum": "7312e981b041b0ee65923ae1fd17dfce" }, { "type": "renderModule", "assetId": "DdZ3EM2HFAD", - "checksum": "c39ec668856adb0ef105794cd694f47a" + "checksum": "a979860ad6b6fa84adaa2c688f898b3b" }, { "type": "cssRules", "assetId": "DdZ3EM2HFAD", - "checksum": "c39ec668856adb0ef105794cd694f47a" + "checksum": "a979860ad6b6fa84adaa2c688f898b3b" }, { "type": "renderModule", "assetId": "XLa52PvduIy", - "checksum": "ba3844d8037ef54dc3537a307f3d2e37" + "checksum": "8f453aa901333098bc04e7109ae0c5a8" }, { "type": "cssRules", "assetId": "XLa52PvduIy", - "checksum": "ba3844d8037ef54dc3537a307f3d2e37" + "checksum": "8f453aa901333098bc04e7109ae0c5a8" }, { "type": "renderModule", "assetId": "TqAPn0srTq", - "checksum": "c2d6196de8568f38a487610f2fa3705e" + "checksum": "3d3a0bbf594355a9b2f84641b2c1d080" }, { "type": "cssRules", "assetId": "TqAPn0srTq", - "checksum": "c2d6196de8568f38a487610f2fa3705e" + "checksum": "3d3a0bbf594355a9b2f84641b2c1d080" }, { "type": "renderModule", "assetId": "ZsFxxgE4E8", - "checksum": "a5442e42015a930716912a933b18f3f3" + "checksum": "526dfb726167bcaf84d73907f8f8fde0" }, { "type": "cssRules", "assetId": "ZsFxxgE4E8", - "checksum": "a5442e42015a930716912a933b18f3f3" + "checksum": "526dfb726167bcaf84d73907f8f8fde0" }, { "type": "renderModule", "assetId": "9I47RGPv62", - "checksum": "49ebe38ccab9a89719c3067d8e7fb9ef" + "checksum": "00bc003b60a7b21ad4021e788daf8556" }, { "type": "cssRules", "assetId": "9I47RGPv62", - "checksum": "49ebe38ccab9a89719c3067d8e7fb9ef" + "checksum": "00bc003b60a7b21ad4021e788daf8556" }, { "type": "renderModule", "assetId": "ECu8FUyP0f3", - "checksum": "f25c2c60fc2b4818ac5a17eab40b6119" + "checksum": "e6805b715c9e3dd8d26e4f9ce12af068" }, { "type": "cssRules", "assetId": "ECu8FUyP0f3", - "checksum": "f25c2c60fc2b4818ac5a17eab40b6119" + "checksum": "e6805b715c9e3dd8d26e4f9ce12af068" }, { "type": "renderModule", "assetId": "5oz1qmvGBe", - "checksum": "6c10f41d0564251f11198b3ff6c03cb3" + "checksum": "ed6a856409f9074f1af4608d78e08a8c" }, { "type": "cssRules", "assetId": "5oz1qmvGBe", - "checksum": "6c10f41d0564251f11198b3ff6c03cb3" + "checksum": "ed6a856409f9074f1af4608d78e08a8c" }, { "type": "renderModule", "assetId": "MeRxD_0BtJ", - "checksum": "911d120926f0ba1546c247fd32b0b0c3" + "checksum": "e32dc1f4f7db35312dd5aa1afce0f548" }, { "type": "cssRules", "assetId": "MeRxD_0BtJ", - "checksum": "911d120926f0ba1546c247fd32b0b0c3" + "checksum": "e32dc1f4f7db35312dd5aa1afce0f548" }, { "type": "renderModule", "assetId": "yc4AfGXkNH", - "checksum": "c658b20215f4ec4e3283092fc5407027" + "checksum": "e57c6a3274bcaf7dfbf421383b73d3ca" }, { "type": "cssRules", "assetId": "yc4AfGXkNH", - "checksum": "c658b20215f4ec4e3283092fc5407027" + "checksum": "e57c6a3274bcaf7dfbf421383b73d3ca" }, { "type": "renderModule", "assetId": "isQPD0RPCw", - "checksum": "a867f46c743e742eea73f1a9ce6a6dc9" + "checksum": "99e03a89e08de917279bdb927a018e8f" }, { "type": "cssRules", "assetId": "isQPD0RPCw", - "checksum": "a867f46c743e742eea73f1a9ce6a6dc9" + "checksum": "99e03a89e08de917279bdb927a018e8f" }, { "type": "renderModule", "assetId": "YldGgVsq6N", - "checksum": "bd2b5a49023a43ef557353c1cf12e0dd" + "checksum": "f0109ceb1ae2e29f86e76ea7d286fa60" }, { "type": "cssRules", "assetId": "YldGgVsq6N", - "checksum": "bd2b5a49023a43ef557353c1cf12e0dd" + "checksum": "f0109ceb1ae2e29f86e76ea7d286fa60" }, { "type": "renderModule", "assetId": "bDbzY5jXLz", - "checksum": "2a4d4a746b133b6cbda8099f9ab77ce5" + "checksum": "3ef26bdd7882ca4848439c51d7694f18" }, { "type": "cssRules", "assetId": "bDbzY5jXLz", - "checksum": "2a4d4a746b133b6cbda8099f9ab77ce5" + "checksum": "3ef26bdd7882ca4848439c51d7694f18" }, { "type": "renderModule", "assetId": "eMjSZ8G7mG", - "checksum": "ab8bd3da3384c4d9fe340af16339693f" + "checksum": "f8b0b08836cbd5e61e2142f887222933" }, { "type": "cssRules", "assetId": "eMjSZ8G7mG", - "checksum": "ab8bd3da3384c4d9fe340af16339693f" + "checksum": "f8b0b08836cbd5e61e2142f887222933" }, { "type": "renderModule", "assetId": "7Wsvgu6cRd", - "checksum": "d40811ee77f573b77b35d0a9be4e49b5" + "checksum": "83551ba6a48b8a7750b40942cbadccea" }, { "type": "cssRules", "assetId": "7Wsvgu6cRd", - "checksum": "d40811ee77f573b77b35d0a9be4e49b5" + "checksum": "83551ba6a48b8a7750b40942cbadccea" }, { "type": "renderModule", "assetId": "0LQGzuFK6d", - "checksum": "b9d855bf37f16d260c39ba2cd3d27c87" + "checksum": "5fa4879abe813ae0018a1ee8f04bd010" }, { "type": "cssRules", "assetId": "0LQGzuFK6d", - "checksum": "b9d855bf37f16d260c39ba2cd3d27c87" + "checksum": "5fa4879abe813ae0018a1ee8f04bd010" }, { "type": "renderModule", "assetId": "JyqCOl0Ccj", - "checksum": "0ee24697217eba29373f46b7b92da1e3" + "checksum": "13e47dbae80a6d4c54edb9d35dfbd50b" }, { "type": "cssRules", "assetId": "JyqCOl0Ccj", - "checksum": "0ee24697217eba29373f46b7b92da1e3" + "checksum": "13e47dbae80a6d4c54edb9d35dfbd50b" }, { "type": "renderModule", "assetId": "l7y_rhJyMt2", - "checksum": "3abcbccb1b100f6297fa0b1ac155b998" + "checksum": "86028def4991e0850144bd88c933e290" }, { "type": "cssRules", "assetId": "l7y_rhJyMt2", - "checksum": "3abcbccb1b100f6297fa0b1ac155b998" + "checksum": "86028def4991e0850144bd88c933e290" }, { "type": "renderModule", "assetId": "1q_JapBg7U", - "checksum": "72e721668f33d5f67987af13a5a16319" + "checksum": "590062146dfe8d8824e0729b9995607a" }, { "type": "cssRules", "assetId": "1q_JapBg7U", - "checksum": "72e721668f33d5f67987af13a5a16319" + "checksum": "590062146dfe8d8824e0729b9995607a" }, { "type": "renderModule", "assetId": "avrERxAp81S", - "checksum": "ce4f09eb380dd9f6db365940c3beed86" + "checksum": "f3e8173f30bd43c54d368f5c1110e651" }, { "type": "cssRules", "assetId": "avrERxAp81S", - "checksum": "ce4f09eb380dd9f6db365940c3beed86" - }, - { - "type": "renderModule", - "assetId": "wXKvVcr82I", - "checksum": "b9b6f30e9c77ea497e83dd604c7448c2" - }, - { - "type": "cssRules", - "assetId": "wXKvVcr82I", - "checksum": "b9b6f30e9c77ea497e83dd604c7448c2" + "checksum": "f3e8173f30bd43c54d368f5c1110e651" }, { "type": "image", @@ -2036,210 +2012,215 @@ { "type": "renderModule", "assetId": "EeT-6P6YTW", - "checksum": "bf1f632b8fefd1a520fd882e04e8c5b3" + "checksum": "1b9361c201c6b783c76c86fe9bd73574" }, { "type": "cssRules", "assetId": "EeT-6P6YTW", - "checksum": "bf1f632b8fefd1a520fd882e04e8c5b3" + "checksum": "1b9361c201c6b783c76c86fe9bd73574" }, { "type": "renderModule", "assetId": "OzaoSbFLbl", - "checksum": "4edbf19200b4423dd2034651127365d7" + "checksum": "82cf5a66bd0dcd0bc808cba078d74e25" }, { "type": "cssRules", "assetId": "OzaoSbFLbl", - "checksum": "4edbf19200b4423dd2034651127365d7" + "checksum": "82cf5a66bd0dcd0bc808cba078d74e25" }, { "type": "renderModule", "assetId": "bobcNPtaTq", - "checksum": "ce63e2a49e4ec87933538735a036d44a" + "checksum": "fd2da54a8a8f66ad4b9e542ea75ff0d4" }, { "type": "cssRules", "assetId": "bobcNPtaTq", - "checksum": "ce63e2a49e4ec87933538735a036d44a" + "checksum": "fd2da54a8a8f66ad4b9e542ea75ff0d4" }, { "type": "renderModule", "assetId": "nmt_YiclQJk", - "checksum": "acbd77d6588a3d5d8b5ec54f20041d23" + "checksum": "bb150b5f29a510ae3d8819a98e22337a" }, { "type": "cssRules", "assetId": "nmt_YiclQJk", - "checksum": "acbd77d6588a3d5d8b5ec54f20041d23" + "checksum": "bb150b5f29a510ae3d8819a98e22337a" }, { "type": "renderModule", "assetId": "hudLjkQJbU", - "checksum": "e6d66ae53be5adbddab297d683e14d03" + "checksum": "fec7c2704ce0e663a56ea41e8400586c" }, { "type": "cssRules", "assetId": "hudLjkQJbU", - "checksum": "e6d66ae53be5adbddab297d683e14d03" + "checksum": "fec7c2704ce0e663a56ea41e8400586c" }, { "type": "renderModule", "assetId": "neIW4UOiRU", - "checksum": "ebb3f3828b7846fa63545cdddb6bb158" + "checksum": "224cd2c29808df7d1710a107bad355b0" }, { "type": "cssRules", "assetId": "neIW4UOiRU", - "checksum": "ebb3f3828b7846fa63545cdddb6bb158" + "checksum": "224cd2c29808df7d1710a107bad355b0" }, { "type": "renderModule", "assetId": "kZ3Ar3RnLt", - "checksum": "cde8b1a28731bb551003b6b0ddb7f008" + "checksum": "1c26591f9d511c0cf285f9ceac9cd40a" }, { "type": "cssRules", "assetId": "kZ3Ar3RnLt", - "checksum": "cde8b1a28731bb551003b6b0ddb7f008" + "checksum": "1c26591f9d511c0cf285f9ceac9cd40a" }, { "type": "renderModule", "assetId": "eS_Bw5U3wr", - "checksum": "1cce3f0ddcb37c7146a1fa5c5fb31822" + "checksum": "5bb82f8e29dd8086c48d4164c8c13b20" }, { "type": "cssRules", "assetId": "eS_Bw5U3wr", - "checksum": "1cce3f0ddcb37c7146a1fa5c5fb31822" + "checksum": "5bb82f8e29dd8086c48d4164c8c13b20" }, { "type": "renderModule", "assetId": "ss1yYyG4Pi", - "checksum": "c4ef6b1172158a3076053f2c3e17ff94" + "checksum": "dcc43ba3eb841aa4a089ba1a67090304" }, { "type": "cssRules", "assetId": "ss1yYyG4Pi", - "checksum": "c4ef6b1172158a3076053f2c3e17ff94" + "checksum": "dcc43ba3eb841aa4a089ba1a67090304" }, { "type": "renderModule", "assetId": "93uVZfRMCA", - "checksum": "ac5e3ade8dee0006f0b855e5ae475b11" + "checksum": "aa6c5cc60b33397d675b5288a0320306" }, { "type": "cssRules", "assetId": "93uVZfRMCA", - "checksum": "ac5e3ade8dee0006f0b855e5ae475b11" + "checksum": "aa6c5cc60b33397d675b5288a0320306" }, { "type": "renderModule", "assetId": "xymZo1AIeU", - "checksum": "173a1c0728d1cb37d99e554fe278c7cf" + "checksum": "c139e6e261ae2b7c065223cb4e4cdbb0" }, { "type": "cssRules", "assetId": "xymZo1AIeU", - "checksum": "173a1c0728d1cb37d99e554fe278c7cf" - }, - { - "type": "icon", - "assetId": "CD14l2YUnk", - "checksum": "5976903f163b4e6324fc5e9c205fc1e1" + "checksum": "c139e6e261ae2b7c065223cb4e4cdbb0" }, { "type": "renderModule", "assetId": "T_OF2Q8rJc1U", - "checksum": "8f13aeffbe5be65ed28936d5501d19af" + "checksum": "ae28a3273eb71f471213ea2223ac5dc3" }, { "type": "cssRules", "assetId": "T_OF2Q8rJc1U", - "checksum": "8f13aeffbe5be65ed28936d5501d19af" + "checksum": "ae28a3273eb71f471213ea2223ac5dc3" }, { "type": "renderModule", "assetId": "d693eBfNDs7j", - "checksum": "375453b53e5cca7c9cf7618e64882fee" + "checksum": "6e3b6b864af1f58b0e55fc97cb66ba22" }, { "type": "cssRules", "assetId": "d693eBfNDs7j", - "checksum": "375453b53e5cca7c9cf7618e64882fee" + "checksum": "6e3b6b864af1f58b0e55fc97cb66ba22" }, { "assetId": "aukbrhkegRkQ6KizvhdUPT", - "checksum": "062ffaaa6b53062a1e76791bfec6be30", + "checksum": "706910e7cfeccff167220bc2a2fe0495", "type": "globalContexts" }, { "type": "renderModule", "assetId": "WwK9TyWdjIfT", - "checksum": "e5dc2317d887c3d254d2c5df5efa50f3" + "checksum": "dcb7db329496c67b329091ce56c316b4" }, { "type": "cssRules", "assetId": "WwK9TyWdjIfT", - "checksum": "e5dc2317d887c3d254d2c5df5efa50f3" + "checksum": "dcb7db329496c67b329091ce56c316b4" }, { "assetId": "aukbrhkegRkQ6KizvhdUPT", - "checksum": "50672e45b8d2c2b50fdaebc674618a1c", + "checksum": "43240726f7053d4d67bc5b94765dd9f4", "type": "projectModule" }, { "assetId": "aukbrhkegRkQ6KizvhdUPT", - "checksum": "04b5e088520679bd9a2ae0e7b9e96a43", + "checksum": "71fb8477110aa0ae4dc27ff23fc23157", "type": "styleTokensProvider" }, { "type": "renderModule", "assetId": "TcSQ7HIQUWt9", - "checksum": "316dff1ec3c752ccc274cf335d4583ad" + "checksum": "519cfafd7085415cf2e5075fdf704366" }, { "type": "cssRules", "assetId": "TcSQ7HIQUWt9", - "checksum": "316dff1ec3c752ccc274cf335d4583ad" + "checksum": "519cfafd7085415cf2e5075fdf704366" }, { "type": "renderModule", "assetId": "ORzNrJx0uEH6", - "checksum": "50e2a7da5d52f15d6171a6c4647b6c4a" + "checksum": "75b024cee100784d66b656489551b017" }, { "type": "cssRules", "assetId": "ORzNrJx0uEH6", - "checksum": "50e2a7da5d52f15d6171a6c4647b6c4a" + "checksum": "75b024cee100784d66b656489551b017" }, { "type": "renderModule", "assetId": "Of6596-KMlOa", - "checksum": "8ccbddde42e8cdd639a70d8f8f244b66" + "checksum": "54211b2b57a3d5e6608df83b7dafa9b4" }, { "type": "cssRules", "assetId": "Of6596-KMlOa", - "checksum": "8ccbddde42e8cdd639a70d8f8f244b66" + "checksum": "54211b2b57a3d5e6608df83b7dafa9b4" }, { "type": "renderModule", "assetId": "3J9TqoTau-2m", - "checksum": "2db515e5e79228f34bdb29067fa18461" + "checksum": "8941d6b9531f69d0acee3a97a24a7468" }, { "type": "cssRules", "assetId": "3J9TqoTau-2m", - "checksum": "2db515e5e79228f34bdb29067fa18461" + "checksum": "8941d6b9531f69d0acee3a97a24a7468" + }, + { + "type": "renderModule", + "assetId": "P3v3AgRgKU4U", + "checksum": "009c8a34c8f7d9e7256549e3913edc9a" + }, + { + "type": "cssRules", + "assetId": "P3v3AgRgKU4U", + "checksum": "009c8a34c8f7d9e7256549e3913edc9a" }, { "assetId": "aukbrhkegRkQ6KizvhdUPT", "type": "projectCss", - "checksum": "57d0fd65df1022cb8f7c9ca8f3f698c1" + "checksum": "f18975c66fa7abd1df9077c11176eaa6" } ], - "codegenVersion": "0.0.2" + "codegenVersion": "0.0.3" }, { "fileLocks": [ @@ -2251,92 +2232,92 @@ { "type": "renderModule", "assetId": "CCsDeqqYeoM", - "checksum": "86cad7b810a1e3b663865e8667ff4ef5" + "checksum": "987d3756b0e16afac24328054522f4e4" }, { "type": "cssRules", "assetId": "CCsDeqqYeoM", - "checksum": "86cad7b810a1e3b663865e8667ff4ef5" + "checksum": "987d3756b0e16afac24328054522f4e4" }, { "type": "renderModule", "assetId": "2FvZipCkyxl", - "checksum": "fb92ab093988384c128998181ed42f28" + "checksum": "0de573251ee32c55006e0f8fe31c3c0e" }, { "type": "cssRules", "assetId": "2FvZipCkyxl", - "checksum": "fb92ab093988384c128998181ed42f28" + "checksum": "0de573251ee32c55006e0f8fe31c3c0e" }, { "type": "renderModule", "assetId": "diKNfA_-roE", - "checksum": "b11fb7963de0a9e5e2a799bc78243cef" + "checksum": "ff38680eadbad06115218aff2508af01" }, { "type": "cssRules", "assetId": "diKNfA_-roE", - "checksum": "b11fb7963de0a9e5e2a799bc78243cef" + "checksum": "ff38680eadbad06115218aff2508af01" }, { "type": "renderModule", "assetId": "-k-p1OXXphn", - "checksum": "67fa98fd7ed41c36fa4e720f2b1b64e2" + "checksum": "f7dd380c763346d7592c320f42bf67e6" }, { "type": "cssRules", "assetId": "-k-p1OXXphn", - "checksum": "67fa98fd7ed41c36fa4e720f2b1b64e2" + "checksum": "f7dd380c763346d7592c320f42bf67e6" }, { "type": "renderModule", "assetId": "UttGK3xVrb", - "checksum": "c678aff6dab9ff816f0a294cb39520c4" + "checksum": "5975a63f73ca8b86202acbcf59730e52" }, { "type": "cssRules", "assetId": "UttGK3xVrb", - "checksum": "c678aff6dab9ff816f0a294cb39520c4" + "checksum": "5975a63f73ca8b86202acbcf59730e52" }, { "type": "renderModule", "assetId": "u6dq5eydCj", - "checksum": "5a8e8ad04ca9d06089f4c6f6ee7ccfcf" + "checksum": "cfbee83c08920f64939522860ed77aef" }, { "type": "cssRules", "assetId": "u6dq5eydCj", - "checksum": "5a8e8ad04ca9d06089f4c6f6ee7ccfcf" + "checksum": "cfbee83c08920f64939522860ed77aef" }, { "type": "renderModule", "assetId": "IQU7DmjqUs", - "checksum": "5a24a4b513b29554f7bc2e1dd2caa4cf" + "checksum": "be0c2c36aa5eee3568d5def0cbd9cb49" }, { "type": "cssRules", "assetId": "IQU7DmjqUs", - "checksum": "5a24a4b513b29554f7bc2e1dd2caa4cf" + "checksum": "be0c2c36aa5eee3568d5def0cbd9cb49" }, { "type": "renderModule", "assetId": "u7TII072Seb", - "checksum": "de039753ad3eb6c177b4b579dcb26efb" + "checksum": "d4b36cd31f97993e5354caf5a2bb168d" }, { "type": "cssRules", "assetId": "u7TII072Seb", - "checksum": "de039753ad3eb6c177b4b579dcb26efb" + "checksum": "d4b36cd31f97993e5354caf5a2bb168d" }, { "type": "renderModule", "assetId": "s87vSHZpzQ", - "checksum": "9a3e3e8a5b08004a3924fd7cf4318075" + "checksum": "9c2f07c1e5b27b936c49d08d1917c9c7" }, { "type": "cssRules", "assetId": "s87vSHZpzQ", - "checksum": "9a3e3e8a5b08004a3924fd7cf4318075" + "checksum": "9c2f07c1e5b27b936c49d08d1917c9c7" }, { "type": "image", @@ -2346,322 +2327,282 @@ { "type": "renderModule", "assetId": "XxbnrpTDqu", - "checksum": "f6ec587cc2d2ed5c3b61a9e76589751a" + "checksum": "2157a1ab116960cb9827aa1830de9ae8" }, { "type": "cssRules", "assetId": "XxbnrpTDqu", - "checksum": "f6ec587cc2d2ed5c3b61a9e76589751a" - }, - { - "type": "renderModule", - "assetId": "6_CfQ5GVLku", - "checksum": "5433ab525c97ba00c2d43918ea915717" - }, - { - "type": "cssRules", - "assetId": "6_CfQ5GVLku", - "checksum": "5433ab525c97ba00c2d43918ea915717" - }, - { - "type": "renderModule", - "assetId": "aHgWgR3OVni", - "checksum": "392904b2a0a0b4cbb1198841e763d472" - }, - { - "type": "cssRules", - "assetId": "aHgWgR3OVni", - "checksum": "392904b2a0a0b4cbb1198841e763d472" - }, - { - "type": "renderModule", - "assetId": "FB-WsFik1_I", - "checksum": "900736e9a2a62fb393a80b2bd387de85" - }, - { - "type": "cssRules", - "assetId": "FB-WsFik1_I", - "checksum": "900736e9a2a62fb393a80b2bd387de85" - }, - { - "type": "renderModule", - "assetId": "WAelYWWWRyr", - "checksum": "94b5f4f95b2b2da2ec71ced113da4848" - }, - { - "type": "cssRules", - "assetId": "WAelYWWWRyr", - "checksum": "94b5f4f95b2b2da2ec71ced113da4848" + "checksum": "2157a1ab116960cb9827aa1830de9ae8" }, { "type": "renderModule", "assetId": "nSkQWLjK-B", - "checksum": "4ee7e6f0c2ac3bb20392161e2d9d1367" + "checksum": "2a37639efe16bfc767d9ccd7e04a2ecc" }, { "type": "cssRules", "assetId": "nSkQWLjK-B", - "checksum": "4ee7e6f0c2ac3bb20392161e2d9d1367" + "checksum": "2a37639efe16bfc767d9ccd7e04a2ecc" }, { "type": "renderModule", "assetId": "82ZzbE4hazN", - "checksum": "ea0f12893734895f5cbed48a4c342283" + "checksum": "4b97847a98e7df290a6113e353b4dade" }, { "type": "cssRules", "assetId": "82ZzbE4hazN", - "checksum": "ea0f12893734895f5cbed48a4c342283" + "checksum": "4b97847a98e7df290a6113e353b4dade" }, { "type": "renderModule", "assetId": "nMR4ibQ-Ep", - "checksum": "5b9f71af0be356759568368a642bcec1" + "checksum": "006bdc4daef575758364208c9bd9216b" }, { "type": "cssRules", "assetId": "nMR4ibQ-Ep", - "checksum": "5b9f71af0be356759568368a642bcec1" + "checksum": "006bdc4daef575758364208c9bd9216b" }, { "type": "renderModule", "assetId": "VfLXr8Uqdd", - "checksum": "7f89a683ce26ba301f1ad15287994b7d" + "checksum": "b399100fe95df490d8d11cac0bd4b3b0" }, { "type": "cssRules", "assetId": "VfLXr8Uqdd", - "checksum": "7f89a683ce26ba301f1ad15287994b7d" + "checksum": "b399100fe95df490d8d11cac0bd4b3b0" }, { "type": "renderModule", "assetId": "r2L4x5kulJ", - "checksum": "f282813f9b811105994c98f1800ff224" + "checksum": "ad81f522dcd86a3b56ac9debaf04c701" }, { "type": "cssRules", "assetId": "r2L4x5kulJ", - "checksum": "f282813f9b811105994c98f1800ff224" + "checksum": "ad81f522dcd86a3b56ac9debaf04c701" }, { "type": "renderModule", "assetId": "LW4T36Sq58", - "checksum": "889b0d576ecf3ea901638f7784b43cd1" + "checksum": "cca5f002298d5fe9524ecea0e19b5f73" }, { "type": "cssRules", "assetId": "LW4T36Sq58", - "checksum": "889b0d576ecf3ea901638f7784b43cd1" + "checksum": "cca5f002298d5fe9524ecea0e19b5f73" }, { "type": "renderModule", "assetId": "zRIUpVU0Cm8", - "checksum": "9062f6ed944aec54cae81972bb332527" + "checksum": "7a9c09c6a93007316b0372f03dd50a0b" }, { "type": "cssRules", "assetId": "zRIUpVU0Cm8", - "checksum": "9062f6ed944aec54cae81972bb332527" + "checksum": "7a9c09c6a93007316b0372f03dd50a0b" }, { "type": "renderModule", "assetId": "3jXSiWKc1-", - "checksum": "5e035bb7266bc4249022ae5ce5af023a" + "checksum": "3c01a9cf21ebb2714303f1413e60c3b8" }, { "type": "cssRules", "assetId": "3jXSiWKc1-", - "checksum": "5e035bb7266bc4249022ae5ce5af023a" + "checksum": "3c01a9cf21ebb2714303f1413e60c3b8" }, { "type": "renderModule", "assetId": "gdLJj97tYt", - "checksum": "00e80f2ab0cf0dec31cab2675ccb4a2a" + "checksum": "73d62d536e035b4ad010f9011d66eb2a" }, { "type": "cssRules", "assetId": "gdLJj97tYt", - "checksum": "00e80f2ab0cf0dec31cab2675ccb4a2a" + "checksum": "73d62d536e035b4ad010f9011d66eb2a" }, { "type": "renderModule", "assetId": "ohP9gHR_8Wi", - "checksum": "e1cb7a11d6b192d4fdbd45313d6f862f" + "checksum": "d830c7bb16b0c4e79475b02434e7918e" }, { "type": "cssRules", "assetId": "ohP9gHR_8Wi", - "checksum": "e1cb7a11d6b192d4fdbd45313d6f862f" + "checksum": "d830c7bb16b0c4e79475b02434e7918e" }, { "type": "renderModule", "assetId": "sK-iPs7I1Z", - "checksum": "c8b1d84db0917904dcf8efce8af3fc14" + "checksum": "9c87ff4b5a12f70ea6d9585efc831f41" }, { "type": "cssRules", "assetId": "sK-iPs7I1Z", - "checksum": "c8b1d84db0917904dcf8efce8af3fc14" + "checksum": "9c87ff4b5a12f70ea6d9585efc831f41" }, { "type": "renderModule", "assetId": "5PfErhGRfT", - "checksum": "b35e5fdd4fb17720f6581148bbe2308f" + "checksum": "0aae6ad6ad21f832cc52528c5b55a1e6" }, { "type": "cssRules", "assetId": "5PfErhGRfT", - "checksum": "b35e5fdd4fb17720f6581148bbe2308f" + "checksum": "0aae6ad6ad21f832cc52528c5b55a1e6" }, { "type": "renderModule", "assetId": "C9PGGs5iUd", - "checksum": "2da568d49570b5971e4e5ea90191370f" + "checksum": "07cf36a7d66e27c53b39c158306d7d0a" }, { "type": "cssRules", "assetId": "C9PGGs5iUd", - "checksum": "2da568d49570b5971e4e5ea90191370f" + "checksum": "07cf36a7d66e27c53b39c158306d7d0a" }, { "type": "renderModule", "assetId": "MtL6MGlBxoy", - "checksum": "54158ff4f0e4360178a1761f80847657" + "checksum": "81faefc2b738bdc27c81d34c3c8e9143" }, { "type": "cssRules", "assetId": "MtL6MGlBxoy", - "checksum": "54158ff4f0e4360178a1761f80847657" + "checksum": "81faefc2b738bdc27c81d34c3c8e9143" }, { "type": "renderModule", "assetId": "vM6JbvCArA", - "checksum": "5670609721b95c79fcbe55825bbad460" + "checksum": "f2ce815fca51b685a93888afc3675f55" }, { "type": "cssRules", "assetId": "vM6JbvCArA", - "checksum": "5670609721b95c79fcbe55825bbad460" + "checksum": "f2ce815fca51b685a93888afc3675f55" }, { "type": "renderModule", "assetId": "3naiwkyPoFj", - "checksum": "b8da866a8554146349aaa31e71c57da6" + "checksum": "69e49c41a155096d581da7e9b4da591f" }, { "type": "cssRules", "assetId": "3naiwkyPoFj", - "checksum": "b8da866a8554146349aaa31e71c57da6" + "checksum": "69e49c41a155096d581da7e9b4da591f" }, { "type": "renderModule", "assetId": "O3FCcJ_viT", - "checksum": "2c89c74ffa5f5de2f9e64a00507e80e8" + "checksum": "e632d2cf551ef4a6d8d2fc648c21ea63" }, { "type": "cssRules", "assetId": "O3FCcJ_viT", - "checksum": "2c89c74ffa5f5de2f9e64a00507e80e8" + "checksum": "e632d2cf551ef4a6d8d2fc648c21ea63" }, { "type": "renderModule", "assetId": "pcPdf_yULU3", - "checksum": "183d9ccac9575bdbee0ddb1c909b840c" + "checksum": "f5e7d9ecb1e8f84ff917b28d909eb58e" }, { "type": "cssRules", "assetId": "pcPdf_yULU3", - "checksum": "183d9ccac9575bdbee0ddb1c909b840c" + "checksum": "f5e7d9ecb1e8f84ff917b28d909eb58e" }, { "type": "renderModule", "assetId": "5cdjGaqBQ4", - "checksum": "5b2c17b07591c6d40b88896c3ae8474b" + "checksum": "5f6de54f09fde7ba28011c88fc9126dc" }, { "type": "cssRules", "assetId": "5cdjGaqBQ4", - "checksum": "5b2c17b07591c6d40b88896c3ae8474b" + "checksum": "5f6de54f09fde7ba28011c88fc9126dc" }, { "type": "renderModule", "assetId": "mdX7wFJOmP", - "checksum": "4420bd6b75b42b266836c1818733bfde" + "checksum": "d754ea58567e613036a5b1c450b80c23" }, { "type": "cssRules", "assetId": "mdX7wFJOmP", - "checksum": "4420bd6b75b42b266836c1818733bfde" + "checksum": "d754ea58567e613036a5b1c450b80c23" }, { "type": "renderModule", "assetId": "BOKmukuncx", - "checksum": "2fbb19a416ebd4d763ca397f2bab5a08" + "checksum": "159a0e99bb2a5efe98891c111ce90633" }, { "type": "cssRules", "assetId": "BOKmukuncx", - "checksum": "2fbb19a416ebd4d763ca397f2bab5a08" + "checksum": "159a0e99bb2a5efe98891c111ce90633" }, { "type": "renderModule", "assetId": "VqaN_WL-stA", - "checksum": "bf540970fce6a0e9064432a1bc7dec64" + "checksum": "601a1fcdf59040860eef1a6725237235" }, { "type": "cssRules", "assetId": "VqaN_WL-stA", - "checksum": "bf540970fce6a0e9064432a1bc7dec64" + "checksum": "601a1fcdf59040860eef1a6725237235" }, { "type": "renderModule", "assetId": "Cma6XahJmS", - "checksum": "e37dff943d39f4d1856d838eff3b4c27" + "checksum": "57f7942a1241b24bffe6950dc36d1444" }, { "type": "cssRules", "assetId": "Cma6XahJmS", - "checksum": "e37dff943d39f4d1856d838eff3b4c27" + "checksum": "57f7942a1241b24bffe6950dc36d1444" }, { "type": "renderModule", "assetId": "cOUHQYmbvX", - "checksum": "1ca771696478c39418f51fd54e51a8a4" + "checksum": "10f46f7b5af72defee39f30874e77649" }, { "type": "cssRules", "assetId": "cOUHQYmbvX", - "checksum": "1ca771696478c39418f51fd54e51a8a4" + "checksum": "10f46f7b5af72defee39f30874e77649" }, { "type": "renderModule", "assetId": "Mql0DTa_iO", - "checksum": "d212cbac55635d24919f75f8ad4b9b7e" + "checksum": "d7391fee8d6a4b433f38edbedc29af47" }, { "type": "cssRules", "assetId": "Mql0DTa_iO", - "checksum": "d212cbac55635d24919f75f8ad4b9b7e" + "checksum": "d7391fee8d6a4b433f38edbedc29af47" }, { "type": "renderModule", "assetId": "KVpOSX15wJ", - "checksum": "d536438342f5af2731637a68a2daf857" + "checksum": "c5142ccd983e50d02c2af1bd6a5bb956" }, { "type": "cssRules", "assetId": "KVpOSX15wJ", - "checksum": "d536438342f5af2731637a68a2daf857" + "checksum": "c5142ccd983e50d02c2af1bd6a5bb956" }, { "type": "renderModule", "assetId": "mQBPD0GccAU", - "checksum": "d2b74b51fd8bcfed0658334aabd70b4d" + "checksum": "02790fb4dcda6be9e8b34ce753d76082" }, { "type": "cssRules", "assetId": "mQBPD0GccAU", - "checksum": "d2b74b51fd8bcfed0658334aabd70b4d" + "checksum": "02790fb4dcda6be9e8b34ce753d76082" }, { "type": "icon", @@ -2691,146 +2632,157 @@ { "type": "renderModule", "assetId": "CpePZH2ffI", - "checksum": "44156f6cda4172b8543f04ea48cc4d29" + "checksum": "a12cab628f27e53c11f627152d432d3a" }, { "type": "cssRules", "assetId": "CpePZH2ffI", - "checksum": "44156f6cda4172b8543f04ea48cc4d29" + "checksum": "a12cab628f27e53c11f627152d432d3a" }, { "type": "renderModule", "assetId": "54ykx6A8G6T", - "checksum": "e1785933b2b980310fe4db014a29e277" + "checksum": "00d95753a26c6dacf7ad5726db565684" }, { "type": "cssRules", "assetId": "54ykx6A8G6T", - "checksum": "e1785933b2b980310fe4db014a29e277" + "checksum": "00d95753a26c6dacf7ad5726db565684" }, { "type": "renderModule", "assetId": "DEllwXrn27Q", - "checksum": "cdd0d616555a39c1d81d47aac2b212b2" + "checksum": "533d0858524d28efc43a6810361e8be7" }, { "type": "cssRules", "assetId": "DEllwXrn27Q", - "checksum": "cdd0d616555a39c1d81d47aac2b212b2" + "checksum": "533d0858524d28efc43a6810361e8be7" }, { "type": "renderModule", "assetId": "F7n0gyM6hJ6", - "checksum": "03eaad0659d7e9fad162e569ce4c455a" + "checksum": "6c21bbd24ce7e7911dd6510b58dd6c03" }, { "type": "cssRules", "assetId": "F7n0gyM6hJ6", - "checksum": "03eaad0659d7e9fad162e569ce4c455a" + "checksum": "6c21bbd24ce7e7911dd6510b58dd6c03" }, { "type": "renderModule", "assetId": "A4UIAN_FGs", - "checksum": "ae423b60afe3aef2f239614baccced49" + "checksum": "3d26423267a9b9973c3663b92e32f686" }, { "type": "cssRules", "assetId": "A4UIAN_FGs", - "checksum": "ae423b60afe3aef2f239614baccced49" + "checksum": "3d26423267a9b9973c3663b92e32f686" }, { "type": "renderModule", "assetId": "Ts79yZbRFG", - "checksum": "09f754edd16ae4f5e98197c47c47133b" + "checksum": "b6a94edd6286423621984285c737e296" }, { "type": "cssRules", "assetId": "Ts79yZbRFG", - "checksum": "09f754edd16ae4f5e98197c47c47133b" + "checksum": "b6a94edd6286423621984285c737e296" }, { "type": "renderModule", "assetId": "O5AxABt3WN", - "checksum": "1dc1aa71a25a1c1dc69d84d7215f8e7a" + "checksum": "a243930cfc41fd522f3f17bb6682efcd" }, { "type": "cssRules", "assetId": "O5AxABt3WN", - "checksum": "1dc1aa71a25a1c1dc69d84d7215f8e7a" + "checksum": "a243930cfc41fd522f3f17bb6682efcd" }, { "type": "renderModule", "assetId": "B2dxgzfI6E", - "checksum": "3086db4737047476873f6f5f858caac3" + "checksum": "0f24de250361c7b8f9735b6c7fdc2b5f" }, { "type": "cssRules", "assetId": "B2dxgzfI6E", - "checksum": "3086db4737047476873f6f5f858caac3" + "checksum": "0f24de250361c7b8f9735b6c7fdc2b5f" }, { "type": "renderModule", "assetId": "G_RLd7TB5Ns", - "checksum": "cd7addba9f28acec8c77462e20312399" + "checksum": "9f66aa92aa135532b53e1377fd8caf7c" }, { "type": "cssRules", "assetId": "G_RLd7TB5Ns", - "checksum": "cd7addba9f28acec8c77462e20312399" + "checksum": "9f66aa92aa135532b53e1377fd8caf7c" }, { "type": "renderModule", "assetId": "89XWXKZUx6q", - "checksum": "f75ec9b0b3fe239d8cf6857daa94ff00" + "checksum": "575cee9025a179d626dac9d814a99c5c" }, { "type": "cssRules", "assetId": "89XWXKZUx6q", - "checksum": "f75ec9b0b3fe239d8cf6857daa94ff00" + "checksum": "575cee9025a179d626dac9d814a99c5c" }, { "type": "renderModule", "assetId": "DWsPKkiyzx1", - "checksum": "e873353ce82827ac8f11bd7616ee83c9" + "checksum": "85ac48c42f1185fc22888b66207af7ce" }, { "type": "cssRules", "assetId": "DWsPKkiyzx1", - "checksum": "e873353ce82827ac8f11bd7616ee83c9" + "checksum": "85ac48c42f1185fc22888b66207af7ce" }, { "type": "renderModule", "assetId": "AqMe9uK-Yh", - "checksum": "1f26935554c2f183053e3382cf39bbc3" + "checksum": "390c304bc3632ff300b417589b4bfbb4" }, { "type": "cssRules", "assetId": "AqMe9uK-Yh", - "checksum": "1f26935554c2f183053e3382cf39bbc3" + "checksum": "390c304bc3632ff300b417589b4bfbb4" }, { "assetId": "ooL7EhXDmFQWnW9sxtchhE", - "checksum": "80f1581c8488cbb587a2e1b759231dfb", + "checksum": "8a23c085a5bcdd187c64176afa63c6d4", "type": "globalContexts" }, + { + "assetId": "ooL7EhXDmFQWnW9sxtchhE", + "checksum": "72d0506286a727f12ec7364b5a419844", + "type": "projectModule" + }, + { + "assetId": "ooL7EhXDmFQWnW9sxtchhE", + "checksum": "83016ed571e8213ff8c94ca8a5cdf8e6", + "type": "styleTokensProvider" + }, { "assetId": "ooL7EhXDmFQWnW9sxtchhE", "type": "projectCss", - "checksum": "b56f955f959ca6dddd3723a6eb0d6603" + "checksum": "9b380ea7c7f4cb1b9ad26502af4abca8" } ], "projectId": "ooL7EhXDmFQWnW9sxtchhE", - "version": "62.1.0", + "version": "67.0.6", "dependencies": { - "tXkSR39sgCDWSitZxC5xFV": "81.0.1", - "sDniSX4oPUZFyk2sXXb3nh": "6.1.0", - "95xp9cYcv7HrNWpFWWhbcv": "2.2.6", - "oT38tGyqov9SPWHpf3Y2Rf": "5.5.0", - "ehckhYnyDHgCBbV47m9bkf": "1.0.13", - "8PtdGodUbexNYgkuyBUcWu": "3.30.0" + "tXkSR39sgCDWSitZxC5xFV": "92.0.1", + "sDniSX4oPUZFyk2sXXb3nh": "6.1.1", + "95xp9cYcv7HrNWpFWWhbcv": "2.3.0", + "oT38tGyqov9SPWHpf3Y2Rf": "7.0.1", + "ehckhYnyDHgCBbV47m9bkf": "6.0.1", + "8PtdGodUbexNYgkuyBUcWu": "3.34.0", + "gmeH6XgPaBtkt51HunAo4g": "18.32.0" }, "lang": "ts", - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "projectId": "kA1Hysr5ZeimtATHTDJz5B", @@ -2840,104 +2792,114 @@ "oT38tGyqov9SPWHpf3Y2Rf": "5.10.0", "95xp9cYcv7HrNWpFWWhbcv": "2.3.0", "sDniSX4oPUZFyk2sXXb3nh": "6.1.1", - "gmeH6XgPaBtkt51HunAo4g": "18.28.0" + "gmeH6XgPaBtkt51HunAo4g": "18.30.0" }, "lang": "ts", "fileLocks": [ { "type": "renderModule", "assetId": "cWsnP3_PIix", - "checksum": "2dcda5618b9d692e4e58dee6368f7988" + "checksum": "a0d4aa3be1c80f4c588b7a71b9bc334e" }, { "type": "cssRules", "assetId": "cWsnP3_PIix", - "checksum": "2dcda5618b9d692e4e58dee6368f7988" + "checksum": "a0d4aa3be1c80f4c588b7a71b9bc334e" }, { "type": "renderModule", "assetId": "GFrmKeyhlA", - "checksum": "4848fe9659347a9a408f07ed3526534a" + "checksum": "12cfb104a80add65ced7a9f88621a489" }, { "type": "cssRules", "assetId": "GFrmKeyhlA", - "checksum": "4848fe9659347a9a408f07ed3526534a" + "checksum": "12cfb104a80add65ced7a9f88621a489" }, { "assetId": "kA1Hysr5ZeimtATHTDJz5B", - "checksum": "09708ba34789f7362808e6e3e19497c1", + "checksum": "8c2ad8f215427e6d5fe762b9e696d1b5", "type": "projectModule" }, { "assetId": "kA1Hysr5ZeimtATHTDJz5B", - "checksum": "e8b356f2e94a1c5aa973230d291c4e96", + "checksum": "944e902bcaa959031f69370738c15951", "type": "styleTokensProvider" }, { "assetId": "kA1Hysr5ZeimtATHTDJz5B", "type": "projectCss", - "checksum": "47ffa6899c8e2cfeea4621adb4c8df91" + "checksum": "45fb02604b0a84357d127434f84c6301" } ], - "codegenVersion": "0.0.2" + "codegenVersion": "0.0.3" }, { "fileLocks": [ { "type": "renderModule", "assetId": "XkSd43CUYOB", - "checksum": "f7e7b81b28b1df6264db59402ff9d429" + "checksum": "5d598937605cfd48036ce1836863c0a2" }, { "type": "cssRules", "assetId": "XkSd43CUYOB", - "checksum": "f7e7b81b28b1df6264db59402ff9d429" + "checksum": "5d598937605cfd48036ce1836863c0a2" }, { "type": "renderModule", "assetId": "F4ZVtfq6Xg", - "checksum": "a4dcd680383f4c03f1f4d3ad7081c39b" + "checksum": "102bb886a1c53ea65e732e2be48cb814" }, { "type": "cssRules", "assetId": "F4ZVtfq6Xg", - "checksum": "a4dcd680383f4c03f1f4d3ad7081c39b" + "checksum": "102bb886a1c53ea65e732e2be48cb814" }, { "type": "renderModule", "assetId": "0O5nMBdoCe", - "checksum": "0a9f5a00d30cfafdf7f2b80750d5729a" + "checksum": "6a010df7ede4ffeda8309b5a3142890b" }, { "type": "cssRules", "assetId": "0O5nMBdoCe", - "checksum": "0a9f5a00d30cfafdf7f2b80750d5729a" + "checksum": "6a010df7ede4ffeda8309b5a3142890b" }, { "type": "renderModule", "assetId": "61Ev5d6FaD", - "checksum": "102e3742819f4b1f7fd6c1e88bd6b791" + "checksum": "e44f196d66a81b961eadad6e1d04ccd4" }, { "type": "cssRules", "assetId": "61Ev5d6FaD", - "checksum": "102e3742819f4b1f7fd6c1e88bd6b791" + "checksum": "e44f196d66a81b961eadad6e1d04ccd4" }, { "type": "renderModule", "assetId": "m5hJqED4tX", - "checksum": "6ecc3c2dba6ab8549772bf779462387e" + "checksum": "0960245e8e724860a90547733c7d97b0" }, { "type": "cssRules", "assetId": "m5hJqED4tX", - "checksum": "6ecc3c2dba6ab8549772bf779462387e" + "checksum": "0960245e8e724860a90547733c7d97b0" }, { "assetId": "aaggSgVS8yYsAwQffVQB4p", "type": "projectCss", - "checksum": "7cfa9639375a00ead07c54192433d3a2" + "checksum": "d08912f2b15779bb67652fe5e4903298" + }, + { + "assetId": "aaggSgVS8yYsAwQffVQB4p", + "checksum": "70a703799e50ddd5e4f5a9a59a9426b1", + "type": "projectModule" + }, + { + "assetId": "aaggSgVS8yYsAwQffVQB4p", + "checksum": "e408d07255506ce1c97e8ef52b06778d", + "type": "styleTokensProvider" } ], "projectId": "aaggSgVS8yYsAwQffVQB4p", @@ -2949,54 +2911,64 @@ "95xp9cYcv7HrNWpFWWhbcv": "2.2.6" }, "lang": "ts", - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "fileLocks": [ { "type": "renderModule", "assetId": "DCWq1LLaJ6e", - "checksum": "1dc4ba1a7685d50d2348a105024f7ab6" + "checksum": "6bbb72ab3d58dfe3242a1646c725eddd" }, { "type": "cssRules", "assetId": "DCWq1LLaJ6e", - "checksum": "1dc4ba1a7685d50d2348a105024f7ab6" + "checksum": "6bbb72ab3d58dfe3242a1646c725eddd" }, { "type": "renderModule", "assetId": "V-X3eZLINq", - "checksum": "4f87632fbba9161c1563d8abbc6e2a87" + "checksum": "8aacb21bb62757071f2886921794833b" }, { "type": "cssRules", "assetId": "V-X3eZLINq", - "checksum": "4f87632fbba9161c1563d8abbc6e2a87" + "checksum": "8aacb21bb62757071f2886921794833b" }, { "type": "renderModule", "assetId": "LlDTs6h34ISG", - "checksum": "17d87550236cd3cf30f544c54aacd6ca" + "checksum": "dba0fd7d76c22dd231004fc09bd12b3d" }, { "type": "cssRules", "assetId": "LlDTs6h34ISG", - "checksum": "17d87550236cd3cf30f544c54aacd6ca" + "checksum": "dba0fd7d76c22dd231004fc09bd12b3d" }, { "type": "renderModule", "assetId": "ETj0D1AzSHQn", - "checksum": "de16f65447eb724dedfad0eb038881e0" + "checksum": "227f0d83224ec47147f3476bcc5e8a8d" }, { "type": "cssRules", "assetId": "ETj0D1AzSHQn", - "checksum": "de16f65447eb724dedfad0eb038881e0" + "checksum": "227f0d83224ec47147f3476bcc5e8a8d" }, { "assetId": "29njzcsBEPR4koRddw4knF", "type": "projectCss", - "checksum": "ebbba03a9bcae608cda53cbe7a56f28d" + "checksum": "5c61f27d7a2ea4b15474e294c3582b4e" + }, + { + "assetId": "29njzcsBEPR4koRddw4knF", + "checksum": "3a78dae7371861b12d9c91b2634ea50e", + "type": "projectModule" + }, + { + "assetId": "29njzcsBEPR4koRddw4knF", + "checksum": "e3b1dec14de27e2790e74356f83f47fa", + "type": "styleTokensProvider" } ], "projectId": "29njzcsBEPR4koRddw4knF", @@ -3006,52 +2978,52 @@ "95xp9cYcv7HrNWpFWWhbcv": "2.3.0", "oT38tGyqov9SPWHpf3Y2Rf": "5.10.0", "sDniSX4oPUZFyk2sXXb3nh": "6.1.1", - "gmeH6XgPaBtkt51HunAo4g": "18.25.0" + "gmeH6XgPaBtkt51HunAo4g": "18.30.0" }, "lang": "ts", - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "fileLocks": [ { "type": "renderModule", "assetId": "PDpx0GMKsd", - "checksum": "8afa02f346b6ced0ec85fbc0dc0f3d72" + "checksum": "ab9eef7c1200a59620e6748fa1f5d113" }, { "type": "cssRules", "assetId": "PDpx0GMKsd", - "checksum": "8afa02f346b6ced0ec85fbc0dc0f3d72" + "checksum": "ab9eef7c1200a59620e6748fa1f5d113" }, { "type": "renderModule", "assetId": "ZAqVPmZmi-", - "checksum": "13981433a1d443fa2fbb65d6bee2db6f" + "checksum": "82823c247f66c41fefcb60e8c2f4931e" }, { "type": "cssRules", "assetId": "ZAqVPmZmi-", - "checksum": "13981433a1d443fa2fbb65d6bee2db6f" + "checksum": "82823c247f66c41fefcb60e8c2f4931e" }, { "type": "renderModule", "assetId": "FskUdXzKp5L", - "checksum": "d236e328a473182a7fb1b81710f7a589" + "checksum": "131ce92c85566bd10d46d92a8a3d1bdf" }, { "type": "cssRules", "assetId": "FskUdXzKp5L", - "checksum": "d236e328a473182a7fb1b81710f7a589" + "checksum": "131ce92c85566bd10d46d92a8a3d1bdf" }, { "type": "renderModule", "assetId": "iPC_skyaMh", - "checksum": "f94939018781c87e7be3cb45135b07df" + "checksum": "d7e8a5b75a92550792a5b7621d7ff22f" }, { "type": "cssRules", "assetId": "iPC_skyaMh", - "checksum": "f94939018781c87e7be3cb45135b07df" + "checksum": "d7e8a5b75a92550792a5b7621d7ff22f" }, { "assetId": "wT5BWZPEc2fYxyqbTLXMt2", @@ -3060,13 +3032,13 @@ }, { "assetId": "wT5BWZPEc2fYxyqbTLXMt2", - "checksum": "71d027231848f4f0b6b4b71d0ba09a07", + "checksum": "aff5619505b4b3c8e24a361d7133bf74", "type": "styleTokensProvider" }, { "assetId": "wT5BWZPEc2fYxyqbTLXMt2", "type": "projectCss", - "checksum": "cbfd353cb96f29ba987f69ac84a4dd3f" + "checksum": "7139554a25e245cf42ab14b461658f70" } ], "projectId": "wT5BWZPEc2fYxyqbTLXMt2", @@ -3086,62 +3058,62 @@ { "type": "renderModule", "assetId": "s1ridHP4Z3T", - "checksum": "d7ca4f9bb38a9ced898496bf63dfb0dd" + "checksum": "e77db9dab719c292cd9a3f0788c0c725" }, { "type": "cssRules", "assetId": "s1ridHP4Z3T", - "checksum": "d7ca4f9bb38a9ced898496bf63dfb0dd" + "checksum": "e77db9dab719c292cd9a3f0788c0c725" }, { "type": "renderModule", "assetId": "bqUvK9cs5w", - "checksum": "5b5de972b3b8284a944e17b7744d6eff" + "checksum": "d6c2264fd1e1b1187f50f615f1e257bd" }, { "type": "cssRules", "assetId": "bqUvK9cs5w", - "checksum": "5b5de972b3b8284a944e17b7744d6eff" + "checksum": "d6c2264fd1e1b1187f50f615f1e257bd" }, { "type": "renderModule", "assetId": "nTolMugov4", - "checksum": "09ec0f32336fa2c02eef99e8e6dc729f" + "checksum": "4ec05e1c657e3bf92783be617f358bb2" }, { "type": "cssRules", "assetId": "nTolMugov4", - "checksum": "09ec0f32336fa2c02eef99e8e6dc729f" + "checksum": "4ec05e1c657e3bf92783be617f358bb2" }, { "type": "renderModule", "assetId": "OcKjGNdq-h", - "checksum": "a6468ec042a08834ec470a7347875c9f" + "checksum": "e534841b5a09cc2c8670a8e94b138dc8" }, { "type": "cssRules", "assetId": "OcKjGNdq-h", - "checksum": "a6468ec042a08834ec470a7347875c9f" + "checksum": "e534841b5a09cc2c8670a8e94b138dc8" }, { "type": "renderModule", "assetId": "-L2zZ5Mvmr", - "checksum": "3fd11ebd4519aee613859cd1d334fc81" + "checksum": "13e7d41168857be63f64aaa48842407f" }, { "type": "cssRules", "assetId": "-L2zZ5Mvmr", - "checksum": "3fd11ebd4519aee613859cd1d334fc81" + "checksum": "13e7d41168857be63f64aaa48842407f" }, { "type": "renderModule", "assetId": "ho6fjXelhV", - "checksum": "ff6447efb6f14627913d4233d8ae9ed5" + "checksum": "40ecaebd8f9548cc6500d172a7b5c15d" }, { "type": "cssRules", "assetId": "ho6fjXelhV", - "checksum": "ff6447efb6f14627913d4233d8ae9ed5" + "checksum": "40ecaebd8f9548cc6500d172a7b5c15d" }, { "type": "image", @@ -3151,62 +3123,62 @@ { "type": "renderModule", "assetId": "E0bKgamUEin", - "checksum": "2e76d29ab09aba151a678cd50c85861d" + "checksum": "cdedca0cbc99fd544fa013a57ae7263e" }, { "type": "cssRules", "assetId": "E0bKgamUEin", - "checksum": "2e76d29ab09aba151a678cd50c85861d" + "checksum": "cdedca0cbc99fd544fa013a57ae7263e" }, { "type": "renderModule", "assetId": "fVzKJ6hzd6u", - "checksum": "0cdcd24f94b618f796e0e266ac3abe21" + "checksum": "f0017f530c94572afe633b6fe983bf32" }, { "type": "cssRules", "assetId": "fVzKJ6hzd6u", - "checksum": "0cdcd24f94b618f796e0e266ac3abe21" + "checksum": "f0017f530c94572afe633b6fe983bf32" }, { "type": "renderModule", "assetId": "pQfj4ZYSnAW", - "checksum": "c42cbaf4fb0215a5d2e771fece611d8b" + "checksum": "cc4262bf4df48e2b3f5d64b396d337d4" }, { "type": "cssRules", "assetId": "pQfj4ZYSnAW", - "checksum": "c42cbaf4fb0215a5d2e771fece611d8b" + "checksum": "cc4262bf4df48e2b3f5d64b396d337d4" }, { "type": "renderModule", "assetId": "4xhJ1XtuOem", - "checksum": "09d6146741a3e258cc58f8b6738d6ef6" + "checksum": "3838ef55981d6f2c01c3ed9497b192aa" }, { "type": "cssRules", "assetId": "4xhJ1XtuOem", - "checksum": "09d6146741a3e258cc58f8b6738d6ef6" + "checksum": "3838ef55981d6f2c01c3ed9497b192aa" }, { "type": "renderModule", "assetId": "nZHA7E5OiTx", - "checksum": "2638b7036e009ed8e76d1d1963bdd633" + "checksum": "3883a0bbac1b4767d1d0b780a911fca7" }, { "type": "cssRules", "assetId": "nZHA7E5OiTx", - "checksum": "2638b7036e009ed8e76d1d1963bdd633" + "checksum": "3883a0bbac1b4767d1d0b780a911fca7" }, { "type": "renderModule", "assetId": "0hwZcM2HAXr", - "checksum": "08003e8bab94d947c7f8a45525f6a39b" + "checksum": "7ce0e62a18c0d4f3ea714b6268c83a0a" }, { "type": "cssRules", "assetId": "0hwZcM2HAXr", - "checksum": "08003e8bab94d947c7f8a45525f6a39b" + "checksum": "7ce0e62a18c0d4f3ea714b6268c83a0a" }, { "type": "icon", @@ -3231,52 +3203,52 @@ { "type": "renderModule", "assetId": "4AYfEug-RA", - "checksum": "a180e949d546b5f840b35460103ebd45" + "checksum": "4d1dcf586cc619c3ea293ff201b9991c" }, { "type": "cssRules", "assetId": "4AYfEug-RA", - "checksum": "a180e949d546b5f840b35460103ebd45" + "checksum": "4d1dcf586cc619c3ea293ff201b9991c" }, { "type": "renderModule", "assetId": "1OCmfT86EB3", - "checksum": "998885ea62d0f50fe537c2a833709967" + "checksum": "9b5c71d6472414648bf284c39f444e80" }, { "type": "cssRules", "assetId": "1OCmfT86EB3", - "checksum": "998885ea62d0f50fe537c2a833709967" + "checksum": "9b5c71d6472414648bf284c39f444e80" }, { "type": "renderModule", "assetId": "lzLkhV0UJA", - "checksum": "000f1c231f72109cac8cd42fae0cc088" + "checksum": "6a52d3e71f26e8c444d50bc73d7598d9" }, { "type": "cssRules", "assetId": "lzLkhV0UJA", - "checksum": "000f1c231f72109cac8cd42fae0cc088" + "checksum": "6a52d3e71f26e8c444d50bc73d7598d9" }, { "type": "renderModule", "assetId": "lHRivspQeB", - "checksum": "af73aef0533553735abcca02241f9e92" + "checksum": "7fea4249c2a61f323d452c98200944f6" }, { "type": "cssRules", "assetId": "lHRivspQeB", - "checksum": "af73aef0533553735abcca02241f9e92" + "checksum": "7fea4249c2a61f323d452c98200944f6" }, { "type": "renderModule", "assetId": "a0-WHzk-U8", - "checksum": "484aa0ef097bb8e2854d3e29b7e8224e" + "checksum": "a0bf8769845f9e45d7a0e4c6c3773417" }, { "type": "cssRules", "assetId": "a0-WHzk-U8", - "checksum": "484aa0ef097bb8e2854d3e29b7e8224e" + "checksum": "a0bf8769845f9e45d7a0e4c6c3773417" }, { "assetId": "gYEVvAzCcLMHDVPvuYxkFh", @@ -3286,22 +3258,22 @@ { "type": "renderModule", "assetId": "8AZoGEGjWc", - "checksum": "2239d4f98a9c26cead7ecc1027d50fd9" + "checksum": "da215025bff2cffd81d0fbd23f66d2de" }, { "type": "cssRules", "assetId": "8AZoGEGjWc", - "checksum": "2239d4f98a9c26cead7ecc1027d50fd9" + "checksum": "da215025bff2cffd81d0fbd23f66d2de" }, { "type": "renderModule", "assetId": "OW_7AtJANr", - "checksum": "54674168db35d36c7cb2ae6e01d3625c" + "checksum": "bf6d880e152a0b0ee9e71471a244eed7" }, { "type": "cssRules", "assetId": "OW_7AtJANr", - "checksum": "54674168db35d36c7cb2ae6e01d3625c" + "checksum": "bf6d880e152a0b0ee9e71471a244eed7" }, { "type": "image", @@ -3311,22 +3283,22 @@ { "type": "renderModule", "assetId": "gkx-PRZnjFPo", - "checksum": "7b7736c6d0556ae5fe063b358102845f" + "checksum": "4d92f36cfa68bb7e858e8a89c49202c1" }, { "type": "cssRules", "assetId": "gkx-PRZnjFPo", - "checksum": "7b7736c6d0556ae5fe063b358102845f" + "checksum": "4d92f36cfa68bb7e858e8a89c49202c1" }, { "type": "renderModule", "assetId": "fgHLE_9XtAei", - "checksum": "4a67112b3fff68877b5006d2425c3a0f" + "checksum": "b056b1d61e4f0cc75df1a3d75725a34e" }, { "type": "cssRules", "assetId": "fgHLE_9XtAei", - "checksum": "4a67112b3fff68877b5006d2425c3a0f" + "checksum": "b056b1d61e4f0cc75df1a3d75725a34e" }, { "assetId": "gYEVvAzCcLMHDVPvuYxkFh", @@ -3335,23 +3307,23 @@ }, { "assetId": "gYEVvAzCcLMHDVPvuYxkFh", - "checksum": "5ceaafd2e275186412530b1f77e8527c", + "checksum": "45b0d01adafccad12a245aca1d8bee23", "type": "styleTokensProvider" }, { "assetId": "gYEVvAzCcLMHDVPvuYxkFh", "type": "projectCss", - "checksum": "de9af575946ab0843627a6cc06e69ad7" + "checksum": "004b754eb3d06740ea3eb919be4cf9dc" } ], "projectId": "gYEVvAzCcLMHDVPvuYxkFh", - "version": "25.2.0", + "version": "26.0.2", "dependencies": { - "tXkSR39sgCDWSitZxC5xFV": "91.3.13", - "oT38tGyqov9SPWHpf3Y2Rf": "6.0.0", + "tXkSR39sgCDWSitZxC5xFV": "99.1.0", + "oT38tGyqov9SPWHpf3Y2Rf": "7.0.1", "95xp9cYcv7HrNWpFWWhbcv": "2.3.0", - "8PtdGodUbexNYgkuyBUcWu": "3.33.0", - "gmeH6XgPaBtkt51HunAo4g": "18.30.0" + "8PtdGodUbexNYgkuyBUcWu": "3.34.0", + "gmeH6XgPaBtkt51HunAo4g": "18.32.0" }, "lang": "ts", "codegenVersion": "0.0.3" @@ -3361,480 +3333,504 @@ { "type": "globalVariant", "assetId": "IFgLgWglLv", - "checksum": "52464c6c915712872d03758fbc310b2a" + "checksum": "23c850b219c92c6b8b1e2b87a7ddd08d" }, { "type": "renderModule", "assetId": "6yrnCqYwJf", - "checksum": "ff8816275de28b4f595605c1e6a0321c" + "checksum": "83150dbc7863941d60ca45f36fdfdd6c" }, { "type": "cssRules", "assetId": "6yrnCqYwJf", - "checksum": "ff8816275de28b4f595605c1e6a0321c" + "checksum": "83150dbc7863941d60ca45f36fdfdd6c" }, { "type": "renderModule", "assetId": "-491oma_4M", - "checksum": "26916e3648baf8655d3b6f30e29e77dc" + "checksum": "1bda3367728e0f862f0c6c34b67442a9" }, { "type": "cssRules", "assetId": "-491oma_4M", - "checksum": "26916e3648baf8655d3b6f30e29e77dc" + "checksum": "1bda3367728e0f862f0c6c34b67442a9" }, { "type": "renderModule", "assetId": "c-G65M7vor", - "checksum": "15925388054a9940fa60847e1840c948" + "checksum": "3bd19647bd94c1d2497b8b6b2f9f361d" }, { "type": "cssRules", "assetId": "c-G65M7vor", - "checksum": "15925388054a9940fa60847e1840c948" + "checksum": "3bd19647bd94c1d2497b8b6b2f9f361d" }, { "type": "renderModule", "assetId": "vY12pF45uf", - "checksum": "b012c9f230b318e996311c535f7e77b8" + "checksum": "6c47e35213e01d032387d664d3804a74" }, { "type": "cssRules", "assetId": "vY12pF45uf", - "checksum": "b012c9f230b318e996311c535f7e77b8" + "checksum": "6c47e35213e01d032387d664d3804a74" }, { "type": "renderModule", "assetId": "dwF8TMwvPf", - "checksum": "61fdecc759f5ec359e3cd3bdee3ed143" + "checksum": "392e7e1b9a2b5579d35282372707457e" }, { "type": "cssRules", "assetId": "dwF8TMwvPf", - "checksum": "61fdecc759f5ec359e3cd3bdee3ed143" + "checksum": "392e7e1b9a2b5579d35282372707457e" }, { "type": "renderModule", "assetId": "buRRLzgjkH", - "checksum": "de0d8225dc2eaf226913808ec375742b" + "checksum": "8a4dc7c8fef27e62d1f4554e697d5c50" }, { "type": "cssRules", "assetId": "buRRLzgjkH", - "checksum": "de0d8225dc2eaf226913808ec375742b" + "checksum": "8a4dc7c8fef27e62d1f4554e697d5c50" }, { "type": "renderModule", "assetId": "95ed9ODv12", - "checksum": "7b218373ced19d35ca28fb0eb2b3d996" + "checksum": "16141f2ad92858caf42bab2d06ed8b94" }, { "type": "cssRules", "assetId": "95ed9ODv12", - "checksum": "7b218373ced19d35ca28fb0eb2b3d996" + "checksum": "16141f2ad92858caf42bab2d06ed8b94" }, { "type": "renderModule", "assetId": "QTY-rRQEAY", - "checksum": "8e4957cb95f7244eb2786e1e8c6d6ad9" + "checksum": "b28c3569863674c2fb5032da958889b7" }, { "type": "cssRules", "assetId": "QTY-rRQEAY", - "checksum": "8e4957cb95f7244eb2786e1e8c6d6ad9" + "checksum": "b28c3569863674c2fb5032da958889b7" }, { "type": "renderModule", "assetId": "jW-aUu5X3W", - "checksum": "4bdfc3b48fd11f467435ca0afa32eef5" + "checksum": "917a2aea1ac766e5b4f5138ab0fc123e" }, { "type": "cssRules", "assetId": "jW-aUu5X3W", - "checksum": "4bdfc3b48fd11f467435ca0afa32eef5" + "checksum": "917a2aea1ac766e5b4f5138ab0fc123e" }, { "type": "renderModule", "assetId": "RiY7IxtDrH", - "checksum": "bde254d710ac7d4383049d5ff7e60a67" + "checksum": "bf41fafbefecf8390ea04b40485c0748" }, { "type": "cssRules", "assetId": "RiY7IxtDrH", - "checksum": "bde254d710ac7d4383049d5ff7e60a67" + "checksum": "bf41fafbefecf8390ea04b40485c0748" }, { "type": "renderModule", "assetId": "TrtPQzZ8M2", - "checksum": "71e676121621e8e51ba7aa1fd29e4693" + "checksum": "a34c031c75086d054b6e9a48579cc718" }, { "type": "cssRules", "assetId": "TrtPQzZ8M2", - "checksum": "71e676121621e8e51ba7aa1fd29e4693" + "checksum": "a34c031c75086d054b6e9a48579cc718" }, { "type": "renderModule", "assetId": "lckuNAFyZg", - "checksum": "2b402d766d82bee998dc7cd7a55058b2" + "checksum": "ce8f88049f01ab6ca9066716051a854d" }, { "type": "cssRules", "assetId": "lckuNAFyZg", - "checksum": "2b402d766d82bee998dc7cd7a55058b2" + "checksum": "ce8f88049f01ab6ca9066716051a854d" }, { "type": "renderModule", "assetId": "g_uMeV_Uh6", - "checksum": "ddc8af9edd2bc2e9111d1aa7b282e3be" + "checksum": "f254cfb2115e7f04794e51095675b4b7" }, { "type": "cssRules", "assetId": "g_uMeV_Uh6", - "checksum": "ddc8af9edd2bc2e9111d1aa7b282e3be" + "checksum": "f254cfb2115e7f04794e51095675b4b7" }, { "type": "renderModule", "assetId": "MQIZtdluUpm", - "checksum": "c992747bceb1726934e4342f9815fb0e" + "checksum": "596044a546507eb6007d708a5cd8997b" }, { "type": "cssRules", "assetId": "MQIZtdluUpm", - "checksum": "c992747bceb1726934e4342f9815fb0e" + "checksum": "596044a546507eb6007d708a5cd8997b" }, { "type": "renderModule", "assetId": "p94ACk9Ka-", - "checksum": "1a78ce240bf06d624d6d943261835a86" + "checksum": "27a703f15ebc933dcf0cfc69bff2f760" }, { "type": "cssRules", "assetId": "p94ACk9Ka-", - "checksum": "1a78ce240bf06d624d6d943261835a86" + "checksum": "27a703f15ebc933dcf0cfc69bff2f760" }, { "type": "renderModule", "assetId": "UROUkkTIR8X", - "checksum": "67938474697d7f7efb54a5c9e3f265e2" + "checksum": "e2a592eb524405cf0afbb8b7cee22522" }, { "type": "cssRules", "assetId": "UROUkkTIR8X", - "checksum": "67938474697d7f7efb54a5c9e3f265e2" + "checksum": "e2a592eb524405cf0afbb8b7cee22522" }, { "type": "renderModule", "assetId": "tnA9SknzQ5", - "checksum": "1eecd401df2b5aa2b84a7a75d71eae10" + "checksum": "83cddb972c31a83248577422656ec030" }, { "type": "cssRules", "assetId": "tnA9SknzQ5", - "checksum": "1eecd401df2b5aa2b84a7a75d71eae10" + "checksum": "83cddb972c31a83248577422656ec030" }, { "type": "renderModule", "assetId": "9qTu7qylBlP", - "checksum": "c6de3fbd722abf87016aaa416ed64f02" + "checksum": "8f7a3499e3218521ef9a4a2270adb190" }, { "type": "cssRules", "assetId": "9qTu7qylBlP", - "checksum": "c6de3fbd722abf87016aaa416ed64f02" + "checksum": "8f7a3499e3218521ef9a4a2270adb190" }, { "type": "renderModule", "assetId": "J18H-n0ADz", - "checksum": "a573810e269a2da1b4c68ca2e8aede8a" + "checksum": "452bcd7a842e6bbf3ee824eae46762cb" }, { "type": "cssRules", "assetId": "J18H-n0ADz", - "checksum": "a573810e269a2da1b4c68ca2e8aede8a" + "checksum": "452bcd7a842e6bbf3ee824eae46762cb" }, { "type": "renderModule", "assetId": "P6rYMyYSiZ", - "checksum": "a9d508402e44b62d7dca95b73b28e675" + "checksum": "ef3d5b51b24be0be44c0da477c691e31" }, { "type": "cssRules", "assetId": "P6rYMyYSiZ", - "checksum": "a9d508402e44b62d7dca95b73b28e675" + "checksum": "ef3d5b51b24be0be44c0da477c691e31" }, { "type": "renderModule", "assetId": "13UGPPY1WI6", - "checksum": "4b62e54c5e5a70525d24c044080ae570" + "checksum": "d32ec86696b23271f2a010bf9c5c1339" }, { "type": "cssRules", "assetId": "13UGPPY1WI6", - "checksum": "4b62e54c5e5a70525d24c044080ae570" + "checksum": "d32ec86696b23271f2a010bf9c5c1339" }, { "type": "renderModule", "assetId": "twJQ9idqHQ", - "checksum": "c21cf399a9957ee2e0e08f26e8e23e1a" + "checksum": "85b965610a012d4878c1a72ce6a2c7ce" }, { "type": "cssRules", "assetId": "twJQ9idqHQ", - "checksum": "c21cf399a9957ee2e0e08f26e8e23e1a" + "checksum": "85b965610a012d4878c1a72ce6a2c7ce" }, { "type": "renderModule", "assetId": "7KLBF1De9n", - "checksum": "951df616e5faeae4ca67347f1afcd434" + "checksum": "c58b6aa5e5004c06a1a86a160c437db5" }, { "type": "cssRules", "assetId": "7KLBF1De9n", - "checksum": "951df616e5faeae4ca67347f1afcd434" + "checksum": "c58b6aa5e5004c06a1a86a160c437db5" }, { "type": "renderModule", "assetId": "-rnSZERM6Kf", - "checksum": "87166941a744f341621961dad6ab1a91" + "checksum": "68d1713ab584535958b068f2e924c0aa" }, { "type": "cssRules", "assetId": "-rnSZERM6Kf", - "checksum": "87166941a744f341621961dad6ab1a91" + "checksum": "68d1713ab584535958b068f2e924c0aa" }, { "type": "renderModule", "assetId": "mJFZOBWGNu", - "checksum": "98e71df002e3031b685f4db89d880ac0" + "checksum": "5257185aaff8063e8dc61deef9a98100" }, { "type": "cssRules", "assetId": "mJFZOBWGNu", - "checksum": "98e71df002e3031b685f4db89d880ac0" + "checksum": "5257185aaff8063e8dc61deef9a98100" }, { "type": "renderModule", "assetId": "fiIuU8gs9A", - "checksum": "267319827eff57c44cbee8d8344d5d76" + "checksum": "c171a0c32a512052f3c79f6115b0ee33" }, { "type": "cssRules", "assetId": "fiIuU8gs9A", - "checksum": "267319827eff57c44cbee8d8344d5d76" + "checksum": "c171a0c32a512052f3c79f6115b0ee33" }, { "type": "renderModule", "assetId": "X5avWz1hNF", - "checksum": "9fe22dc9c80dbdcd935a88c5a400a383" + "checksum": "aa7ff94549ed8d964a73846b98f96d82" }, { "type": "cssRules", "assetId": "X5avWz1hNF", - "checksum": "9fe22dc9c80dbdcd935a88c5a400a383" + "checksum": "aa7ff94549ed8d964a73846b98f96d82" }, { "type": "renderModule", "assetId": "9vACp1cwGL", - "checksum": "f17906d7d891897ce94cef58b309ea5a" + "checksum": "0b26cadcaf94bbd890eeae8c3f1457de" }, { "type": "cssRules", "assetId": "9vACp1cwGL", - "checksum": "f17906d7d891897ce94cef58b309ea5a" + "checksum": "0b26cadcaf94bbd890eeae8c3f1457de" }, { "type": "renderModule", "assetId": "MQ5YoyUM0K", - "checksum": "4ee63716bca7b50330a2e25a2d60ace0" + "checksum": "614aa49947ddc0a8d376bac73172ec1f" }, { "type": "cssRules", "assetId": "MQ5YoyUM0K", - "checksum": "4ee63716bca7b50330a2e25a2d60ace0" + "checksum": "614aa49947ddc0a8d376bac73172ec1f" }, { "type": "renderModule", "assetId": "qFYdDOtl6B", - "checksum": "aea4be7cf0ef733e6c7127872456db3f" + "checksum": "a51868fba87e81a95de8c097e3afdc83" }, { "type": "cssRules", "assetId": "qFYdDOtl6B", - "checksum": "aea4be7cf0ef733e6c7127872456db3f" + "checksum": "a51868fba87e81a95de8c097e3afdc83" }, { "type": "icon", "assetId": "zDswZrFKQ1z", - "checksum": "191b48cbabfac9aa3b01491648268634" + "checksum": "58d24c6667b59f57e3019f4d9eb53e1a" }, { "type": "icon", "assetId": "c8L1Wu5s-LH", - "checksum": "d398d98695dc890bdec7f703a720fce3" + "checksum": "b110350546fed70c47bc510e111348ac" }, { "assetId": "dyzP6dbCdycwJpqiR2zkwe", "type": "projectCss", - "checksum": "27783fadfe121b9515523148d303a9eb" + "checksum": "d3f5d6854dbf02cf03fbc3441e607d26" + }, + { + "assetId": "dyzP6dbCdycwJpqiR2zkwe", + "checksum": "bbc89f9424dd83bfc3a5750a9766d29c", + "type": "projectModule" + }, + { + "assetId": "dyzP6dbCdycwJpqiR2zkwe", + "checksum": "f0cc36879a8a73997c1f2fd4f8bc19b4", + "type": "styleTokensProvider" } ], "projectId": "dyzP6dbCdycwJpqiR2zkwe", - "version": "2.0.3", + "version": "3.0.0", "dependencies": { "tXkSR39sgCDWSitZxC5xFV": "66.2.15", "oT38tGyqov9SPWHpf3Y2Rf": "4.0.0", "95xp9cYcv7HrNWpFWWhbcv": "2.2.4" }, "lang": "ts", - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "fileLocks": [ { "type": "renderModule", "assetId": "dWRKivg8dUht", - "checksum": "e3d4451ce460d7c91c306be652377333" + "checksum": "b13ecf52aa83dfa440ae396d30ad2822" }, { "type": "cssRules", "assetId": "dWRKivg8dUht", - "checksum": "e3d4451ce460d7c91c306be652377333" + "checksum": "b13ecf52aa83dfa440ae396d30ad2822" }, { "assetId": "oYWs1jXLUht24zyQBdCd5F", "type": "projectCss", - "checksum": "030eb4da573de5e98b85a5c092b4a72e" + "checksum": "f68128c03725b4363b426bc625db83cf" + }, + { + "assetId": "oYWs1jXLUht24zyQBdCd5F", + "checksum": "8fc4075b9d3f8488a1af4d900de4b1b5", + "type": "projectModule" + }, + { + "assetId": "oYWs1jXLUht24zyQBdCd5F", + "checksum": "84495ce0ac7c364bf18a3c2e300bf9a2", + "type": "styleTokensProvider" } ], "projectId": "oYWs1jXLUht24zyQBdCd5F", - "version": "latest", + "version": "1.0.0", "dependencies": { - "tXkSR39sgCDWSitZxC5xFV": "7.1.1" + "tXkSR39sgCDWSitZxC5xFV": "75.3.1", + "oT38tGyqov9SPWHpf3Y2Rf": "4.7.0", + "95xp9cYcv7HrNWpFWWhbcv": "2.2.6", + "sDniSX4oPUZFyk2sXXb3nh": "6.0.1" }, - "lang": "ts" + "lang": "ts", + "codegenVersion": "0.0.3" }, { "fileLocks": [ { "type": "renderModule", "assetId": "FuvSZfvXL5", - "checksum": "f95ae1acd62f7623c96e90132b956cf2" + "checksum": "83c89ea9b001a62a826631fbcbd51a27" }, { "type": "cssRules", "assetId": "FuvSZfvXL5", - "checksum": "f95ae1acd62f7623c96e90132b956cf2" + "checksum": "83c89ea9b001a62a826631fbcbd51a27" }, { "type": "renderModule", "assetId": "mSgnlB96I5A", - "checksum": "8ce2231ad50bc685a41b377425bcc2b1" + "checksum": "c6c03b7e349863bdc8a5eb92f97e3d6f" }, { "type": "cssRules", "assetId": "mSgnlB96I5A", - "checksum": "8ce2231ad50bc685a41b377425bcc2b1" + "checksum": "c6c03b7e349863bdc8a5eb92f97e3d6f" }, { "type": "renderModule", "assetId": "Ynwp30ZgYk", - "checksum": "71369f7edfe9985e0d7d9cdd6005cdaf" + "checksum": "488a1f5c46122ce81c643ef682085afb" }, { "type": "cssRules", "assetId": "Ynwp30ZgYk", - "checksum": "71369f7edfe9985e0d7d9cdd6005cdaf" + "checksum": "488a1f5c46122ce81c643ef682085afb" }, { "type": "renderModule", "assetId": "MtBpr4iNob", - "checksum": "f3e538f4e083fa935676b3b9b906a59e" + "checksum": "5a55be88339eb47d9c1991062a3cf2df" }, { "type": "cssRules", "assetId": "MtBpr4iNob", - "checksum": "f3e538f4e083fa935676b3b9b906a59e" + "checksum": "5a55be88339eb47d9c1991062a3cf2df" }, { "type": "renderModule", "assetId": "8dA5vGT9N9E", - "checksum": "6e919c18a7e8da195c0f8995c72e4ec5" + "checksum": "b7148022e5350231a86301631bc80fc6" }, { "type": "cssRules", "assetId": "8dA5vGT9N9E", - "checksum": "6e919c18a7e8da195c0f8995c72e4ec5" + "checksum": "b7148022e5350231a86301631bc80fc6" }, { "type": "renderModule", "assetId": "aXXfRDkhD-", - "checksum": "a6c700d86d82e30d68b9c34595314e89" + "checksum": "357bd749b2582727af30a84e309fe574" }, { "type": "cssRules", "assetId": "aXXfRDkhD-", - "checksum": "a6c700d86d82e30d68b9c34595314e89" + "checksum": "357bd749b2582727af30a84e309fe574" }, { "type": "renderModule", "assetId": "74wUdEnJhwr", - "checksum": "f499bd3ad4fce42f2a5322c39c93bc08" + "checksum": "1d4e05da4412529ee73faf5b4574d70a" }, { "type": "cssRules", "assetId": "74wUdEnJhwr", - "checksum": "f499bd3ad4fce42f2a5322c39c93bc08" + "checksum": "1d4e05da4412529ee73faf5b4574d70a" }, { "type": "renderModule", "assetId": "0HHLsxeAqF8", - "checksum": "e9811d142ec4d9dd8e481db83e35b8fb" + "checksum": "4a11a493434e42d4846b5d480430eb2c" }, { "type": "cssRules", "assetId": "0HHLsxeAqF8", - "checksum": "e9811d142ec4d9dd8e481db83e35b8fb" + "checksum": "4a11a493434e42d4846b5d480430eb2c" }, { "type": "renderModule", "assetId": "9EUA-QZFp69", - "checksum": "c97a3894796ccfc0e3ffda8e6d1ee72e" + "checksum": "db40d7b860f188eee133ab117a96f1c3" }, { "type": "cssRules", "assetId": "9EUA-QZFp69", - "checksum": "c97a3894796ccfc0e3ffda8e6d1ee72e" + "checksum": "db40d7b860f188eee133ab117a96f1c3" }, { "type": "renderModule", "assetId": "OkB-fXuJPc", - "checksum": "13b655444bf8295738bf1e08bc98af5e" + "checksum": "1cc10991aeed6e95ba9bbc4f35548e49" }, { "type": "cssRules", "assetId": "OkB-fXuJPc", - "checksum": "13b655444bf8295738bf1e08bc98af5e" + "checksum": "1cc10991aeed6e95ba9bbc4f35548e49" }, { "type": "renderModule", "assetId": "JzpEJAQTjPX", - "checksum": "2b7311a186526f80436dfac6e8dc1ac4" + "checksum": "fdb6cbf9861d96af4918a8171d626b45" }, { "type": "cssRules", "assetId": "JzpEJAQTjPX", - "checksum": "2b7311a186526f80436dfac6e8dc1ac4" + "checksum": "fdb6cbf9861d96af4918a8171d626b45" }, { "type": "renderModule", "assetId": "6ztKJ9-EG9Y", - "checksum": "5c3420bc15cc16933480a294a6060576" + "checksum": "b81606fd45788a721774677611f47522" }, { "type": "cssRules", "assetId": "6ztKJ9-EG9Y", - "checksum": "5c3420bc15cc16933480a294a6060576" + "checksum": "b81606fd45788a721774677611f47522" }, { "type": "image", @@ -3849,12 +3845,12 @@ { "type": "renderModule", "assetId": "JhFt3V1Imn", - "checksum": "3c7f3ea6636bc512dbcb7b7fb243023e" + "checksum": "ddb4a9e14ddd192a042c1dfd17e219aa" }, { "type": "cssRules", "assetId": "JhFt3V1Imn", - "checksum": "3c7f3ea6636bc512dbcb7b7fb243023e" + "checksum": "ddb4a9e14ddd192a042c1dfd17e219aa" }, { "type": "image", @@ -3874,42 +3870,42 @@ { "type": "renderModule", "assetId": "aeDQsBfp-eA", - "checksum": "53ce4db69dc66ab06cf5fb239814b285" + "checksum": "2aa0a60904473d3df1322a7971dafa80" }, { "type": "cssRules", "assetId": "aeDQsBfp-eA", - "checksum": "53ce4db69dc66ab06cf5fb239814b285" + "checksum": "2aa0a60904473d3df1322a7971dafa80" }, { "type": "renderModule", "assetId": "aFapl-YUjv9", - "checksum": "27850d637426d0e373833f1cfb84b9f9" + "checksum": "80bd5be28c210f2bf148fb785dbd14eb" }, { "type": "cssRules", "assetId": "aFapl-YUjv9", - "checksum": "27850d637426d0e373833f1cfb84b9f9" + "checksum": "80bd5be28c210f2bf148fb785dbd14eb" }, { "type": "renderModule", "assetId": "eqF_n5a1-6b", - "checksum": "b039ea8d034fa33770b6085333a6c92f" + "checksum": "8260b3b66ef6e9f1ae303e85ce8e9efb" }, { "type": "cssRules", "assetId": "eqF_n5a1-6b", - "checksum": "b039ea8d034fa33770b6085333a6c92f" + "checksum": "8260b3b66ef6e9f1ae303e85ce8e9efb" }, { "type": "renderModule", "assetId": "oo-lLDZ5qnA", - "checksum": "afd1ba0443530757b33e65520895fcd9" + "checksum": "7d1042adbe28c2ca496fa7f870b45400" }, { "type": "cssRules", "assetId": "oo-lLDZ5qnA", - "checksum": "afd1ba0443530757b33e65520895fcd9" + "checksum": "7d1042adbe28c2ca496fa7f870b45400" }, { "type": "icon", @@ -3918,18 +3914,18 @@ }, { "assetId": "fpbcKyXdMTvY59T4C5fjcC", - "checksum": "7d0da53d22abc037666d44d70c9cda91", + "checksum": "33c8d7daadcf34572ad5cf418a8bd74d", "type": "projectModule" }, { "assetId": "fpbcKyXdMTvY59T4C5fjcC", - "checksum": "d5e4b0312ccef65da4d5b9a3f0093677", + "checksum": "f7fd63f97064c2703f9f1bb282c0d396", "type": "styleTokensProvider" }, { "assetId": "fpbcKyXdMTvY59T4C5fjcC", "type": "projectCss", - "checksum": "b03bcac90e60ed06b5ad264fcf543add" + "checksum": "1354280a7df3448f558d43278fc4cd66" } ], "projectId": "fpbcKyXdMTvY59T4C5fjcC", @@ -3939,10 +3935,10 @@ "oT38tGyqov9SPWHpf3Y2Rf": "5.9.0", "95xp9cYcv7HrNWpFWWhbcv": "2.3.0", "sDniSX4oPUZFyk2sXXb3nh": "6.1.1", - "gmeH6XgPaBtkt51HunAo4g": "18.29.0" + "gmeH6XgPaBtkt51HunAo4g": "18.30.0" }, "lang": "ts", - "codegenVersion": "0.0.2" + "codegenVersion": "0.0.3" }, { "projectId": "6CrqkTcB6gSAHoA8c8zpNz", @@ -3958,52 +3954,52 @@ { "type": "renderModule", "assetId": "tNBvs5bIAy", - "checksum": "f87c155594b30b29e5e9ccf588520f95" + "checksum": "5367ebee56501c81c1af6de743a4c795" }, { "type": "cssRules", "assetId": "tNBvs5bIAy", - "checksum": "f87c155594b30b29e5e9ccf588520f95" + "checksum": "5367ebee56501c81c1af6de743a4c795" }, { "type": "renderModule", "assetId": "UsJCR-Jtn5", - "checksum": "fb48f233605f1f07f571c41c9d5a07b9" + "checksum": "ca3de13157fe0eaba6e0f08b89b583d7" }, { "type": "cssRules", "assetId": "UsJCR-Jtn5", - "checksum": "fb48f233605f1f07f571c41c9d5a07b9" + "checksum": "ca3de13157fe0eaba6e0f08b89b583d7" }, { "type": "renderModule", "assetId": "FCNHcPh1ZR", - "checksum": "9ba91654bf5231f00276a596e1ae0ab9" + "checksum": "1d60386d8e1b43257e5699740d90e45b" }, { "type": "cssRules", "assetId": "FCNHcPh1ZR", - "checksum": "9ba91654bf5231f00276a596e1ae0ab9" + "checksum": "1d60386d8e1b43257e5699740d90e45b" }, { "type": "renderModule", "assetId": "mnPFthIw2I", - "checksum": "5615641fdf0f36742c4c5a882204dbc3" + "checksum": "47014793e6a67aa8e15bf1ab0af3f13e" }, { "type": "cssRules", "assetId": "mnPFthIw2I", - "checksum": "5615641fdf0f36742c4c5a882204dbc3" + "checksum": "47014793e6a67aa8e15bf1ab0af3f13e" }, { "type": "renderModule", "assetId": "ND5ZuEZMUe", - "checksum": "28dc5c3639f7722b698a3d24aa3e324e" + "checksum": "57c0f496dc40d258a4791b55e9d5d798" }, { "type": "cssRules", "assetId": "ND5ZuEZMUe", - "checksum": "28dc5c3639f7722b698a3d24aa3e324e" + "checksum": "57c0f496dc40d258a4791b55e9d5d798" }, { "type": "image", @@ -4013,42 +4009,42 @@ { "type": "renderModule", "assetId": "yXRcEjTceQ", - "checksum": "7f7d6acdbfb5fda2f76fc121146ea45d" + "checksum": "09df0250bc849e3d6761b40d6256e338" }, { "type": "cssRules", "assetId": "yXRcEjTceQ", - "checksum": "7f7d6acdbfb5fda2f76fc121146ea45d" + "checksum": "09df0250bc849e3d6761b40d6256e338" }, { "type": "renderModule", "assetId": "I6gjdy639O", - "checksum": "de8df8e8878225997daae5ca00c37f5d" + "checksum": "80babbb67f39bc545fb212fa860bf0ca" }, { "type": "cssRules", "assetId": "I6gjdy639O", - "checksum": "de8df8e8878225997daae5ca00c37f5d" + "checksum": "80babbb67f39bc545fb212fa860bf0ca" }, { "type": "renderModule", "assetId": "cwS3NAy41ya", - "checksum": "edfa22c49a4fdd00f7696b12a31a341f" + "checksum": "c9fcb6ddd7e0a3ad663ea6bc69bc2ef2" }, { "type": "cssRules", "assetId": "cwS3NAy41ya", - "checksum": "edfa22c49a4fdd00f7696b12a31a341f" + "checksum": "c9fcb6ddd7e0a3ad663ea6bc69bc2ef2" }, { "type": "renderModule", "assetId": "MAl3yYpW3c", - "checksum": "b0ef8cf5851be3a3e4d4a681ccbcbee0" + "checksum": "58d1f99be32323d56b5ab166fbc45445" }, { "type": "cssRules", "assetId": "MAl3yYpW3c", - "checksum": "b0ef8cf5851be3a3e4d4a681ccbcbee0" + "checksum": "58d1f99be32323d56b5ab166fbc45445" }, { "type": "icon", @@ -4058,12 +4054,12 @@ { "type": "renderModule", "assetId": "-r2DBYss6", - "checksum": "a588712150cd7d6db4c1904089462fef" + "checksum": "e00a6c8f42f761f48c932be50bec8c28" }, { "type": "cssRules", "assetId": "-r2DBYss6", - "checksum": "a588712150cd7d6db4c1904089462fef" + "checksum": "e00a6c8f42f761f48c932be50bec8c28" }, { "type": "icon", @@ -4073,207 +4069,153 @@ { "type": "renderModule", "assetId": "HYPZr2nWSgs", - "checksum": "b82cdf850453c6765fae3669700039cf" + "checksum": "75077ccb9886f900dcf8a319f16ff6fc" }, { "type": "cssRules", "assetId": "HYPZr2nWSgs", - "checksum": "b82cdf850453c6765fae3669700039cf" + "checksum": "75077ccb9886f900dcf8a319f16ff6fc" }, { "type": "renderModule", "assetId": "OAMl2pw5C9W", - "checksum": "3acbb0d33fa9d0d850b3b1a8bba2e096" + "checksum": "e6cfe2dccbc5c5e13a3fe173d63432e5" }, { "type": "cssRules", "assetId": "OAMl2pw5C9W", - "checksum": "3acbb0d33fa9d0d850b3b1a8bba2e096" + "checksum": "e6cfe2dccbc5c5e13a3fe173d63432e5" }, { "type": "renderModule", "assetId": "IQWpmX8J3t", - "checksum": "12674232cf758ff1c63505c6eca1df6c" + "checksum": "0c5c00ae770d6bb7dd0c368dffd474df" }, { "type": "cssRules", "assetId": "IQWpmX8J3t", - "checksum": "12674232cf758ff1c63505c6eca1df6c" + "checksum": "0c5c00ae770d6bb7dd0c368dffd474df" }, { "type": "renderModule", "assetId": "MJoB9g7giNL", - "checksum": "3925db9e0383fd75f76e23eeaeee4eb9" + "checksum": "4c3026a57cac960e929f7cf06d6c1eff" }, { "type": "cssRules", "assetId": "MJoB9g7giNL", - "checksum": "3925db9e0383fd75f76e23eeaeee4eb9" + "checksum": "4c3026a57cac960e929f7cf06d6c1eff" }, { "type": "renderModule", "assetId": "JnxWw8hitac", - "checksum": "0561b3e31c824059ec5f81066d9bc396" + "checksum": "66524b0c36bde6342c0ca8777c65d89d" }, { "type": "cssRules", "assetId": "JnxWw8hitac", - "checksum": "0561b3e31c824059ec5f81066d9bc396" + "checksum": "66524b0c36bde6342c0ca8777c65d89d" }, { "type": "renderModule", "assetId": "BqSsxlQdj2F0", - "checksum": "2212da146ab8c4d2f6877b0617b57c73" + "checksum": "a8cd2d96a62ceffb34e2e990df9cb232" }, { "type": "cssRules", "assetId": "BqSsxlQdj2F0", - "checksum": "2212da146ab8c4d2f6877b0617b57c73" + "checksum": "a8cd2d96a62ceffb34e2e990df9cb232" }, { "assetId": "6CrqkTcB6gSAHoA8c8zpNz", "type": "projectCss", - "checksum": "2b4e404ed6b28632ac3cdfd37293f7c7" + "checksum": "b4fb0425a1c00ef1ac74b211e2ae3c42" + }, + { + "assetId": "6CrqkTcB6gSAHoA8c8zpNz", + "checksum": "ae5b8198ee0abd5c26c6861308b15f15", + "type": "projectModule" + }, + { + "assetId": "6CrqkTcB6gSAHoA8c8zpNz", + "checksum": "82d7874cafc6384ed6511970adad2fc0", + "type": "styleTokensProvider" } ], - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "fileLocks": [ { "type": "renderModule", "assetId": "Kyrn_lAAwr", - "checksum": "0f3a8c53592c69066e256ec61331d6de" + "checksum": "73df5149a69981b1b29309df39029538" }, { "type": "cssRules", "assetId": "Kyrn_lAAwr", - "checksum": "0f3a8c53592c69066e256ec61331d6de" + "checksum": "73df5149a69981b1b29309df39029538" }, { "type": "renderModule", "assetId": "iWeSjEMdI3", - "checksum": "714a3bf6c35785ea134bc4d395ce027a" + "checksum": "aee4d7b74b90d8ca4ea009223b843983" }, { "type": "cssRules", "assetId": "iWeSjEMdI3", - "checksum": "714a3bf6c35785ea134bc4d395ce027a" + "checksum": "aee4d7b74b90d8ca4ea009223b843983" }, { "type": "renderModule", "assetId": "CHoUJxFMpo", - "checksum": "56bacef9bb972816fc6539feebb4e17c" + "checksum": "3632468b2276960dc4040d753c20b428" }, { "type": "cssRules", "assetId": "CHoUJxFMpo", - "checksum": "56bacef9bb972816fc6539feebb4e17c" + "checksum": "3632468b2276960dc4040d753c20b428" }, { "type": "renderModule", "assetId": "BSjTPez6aCjk", - "checksum": "76256c0f8258e5b9adc3042d9f9ab75a" + "checksum": "5960a7fff9f1f1388434445afb529f10" }, { "type": "cssRules", "assetId": "BSjTPez6aCjk", - "checksum": "76256c0f8258e5b9adc3042d9f9ab75a" + "checksum": "5960a7fff9f1f1388434445afb529f10" + }, + { + "assetId": "m8VxGcigeLAEXFe8c12w5Q", + "checksum": "30a27268906306d35abe43f8c9db8e1e", + "type": "projectModule" + }, + { + "assetId": "m8VxGcigeLAEXFe8c12w5Q", + "checksum": "04a773058877d497d347aff58d97f9e3", + "type": "styleTokensProvider" }, { "assetId": "m8VxGcigeLAEXFe8c12w5Q", "type": "projectCss", - "checksum": "2a84643c2f0b9cbf5b131bd78cfb9108" + "checksum": "565e143ab9f13d7d134e76ee0d755b8c" } ], "projectId": "m8VxGcigeLAEXFe8c12w5Q", "version": "latest", "dependencies": { "tXkSR39sgCDWSitZxC5xFV": "83.0.0", - "oT38tGyqov9SPWHpf3Y2Rf": "5.6.0", + "oT38tGyqov9SPWHpf3Y2Rf": "5.7.0", "95xp9cYcv7HrNWpFWWhbcv": "2.2.6", "sDniSX4oPUZFyk2sXXb3nh": "6.1.0" }, "lang": "ts", - "codegenVersion": "0.0.1" - }, - { - "projectId": "fQPf2UiMEMhB52C8QQXwWe", - "version": "latest", - "dependencies": { - "tXkSR39sgCDWSitZxC5xFV": "66.2.12", - "oT38tGyqov9SPWHpf3Y2Rf": "4.0.0", - "95xp9cYcv7HrNWpFWWhbcv": "2.2.3", - "caTPwKxj5ZrD9LQ7DMdK4Z": "3.39.0" - }, - "lang": "ts", - "fileLocks": [ - { - "type": "globalVariant", - "assetId": "0tMEAYfWN538", - "checksum": "f14d9525622a78c89e8036a4cbd4b258" - }, - { - "type": "renderModule", - "assetId": "KnUjAGcQKT", - "checksum": "ef849b7ef5765bac0078379b07c3784c" - }, - { - "type": "cssRules", - "assetId": "KnUjAGcQKT", - "checksum": "ef849b7ef5765bac0078379b07c3784c" - }, - { - "type": "renderModule", - "assetId": "qx4iENdAfF", - "checksum": "ee1110f04368766caae238051624eb9c" - }, - { - "type": "cssRules", - "assetId": "qx4iENdAfF", - "checksum": "ee1110f04368766caae238051624eb9c" - }, - { - "type": "renderModule", - "assetId": "A2li_iO_iw", - "checksum": "14c1aee8353a6610e9437f63bf6fd086" - }, - { - "type": "cssRules", - "assetId": "A2li_iO_iw", - "checksum": "14c1aee8353a6610e9437f63bf6fd086" - }, - { - "type": "renderModule", - "assetId": "paIlCoZKcm", - "checksum": "3fa5fac1459e45cd37163a31c12bbcd8" - }, - { - "type": "cssRules", - "assetId": "paIlCoZKcm", - "checksum": "3fa5fac1459e45cd37163a31c12bbcd8" - }, - { - "type": "renderModule", - "assetId": "hrLkFMfsYv", - "checksum": "37416f05cdf465c373f9f8a4e248679e" - }, - { - "type": "cssRules", - "assetId": "hrLkFMfsYv", - "checksum": "37416f05cdf465c373f9f8a4e248679e" - }, - { - "assetId": "fQPf2UiMEMhB52C8QQXwWe", - "type": "projectCss", - "checksum": "b06bbfd1847955179adb3502d1d64f7a" - } - ], - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "projectId": "kdj5vahTyUKxznuR6rrtt6", - "version": "1.1.4", + "version": "1.1.5", "dependencies": { "tXkSR39sgCDWSitZxC5xFV": "66.2.15", "oT38tGyqov9SPWHpf3Y2Rf": "4.0.0", @@ -4285,90 +4227,100 @@ { "type": "renderModule", "assetId": "98t4Edcdrb", - "checksum": "07874fb9cef0b1dcef8320817807f4c9" + "checksum": "25b521f999c7dfcd279ab74dd3eb3405" }, { "type": "cssRules", "assetId": "98t4Edcdrb", - "checksum": "07874fb9cef0b1dcef8320817807f4c9" + "checksum": "25b521f999c7dfcd279ab74dd3eb3405" }, { "type": "renderModule", "assetId": "8q06bNJu0e", - "checksum": "4b80b0a883e6c9e6f1cc7e95f7bb788d" + "checksum": "bc21de31c4abc90aac17abd68f393989" }, { "type": "cssRules", "assetId": "8q06bNJu0e", - "checksum": "4b80b0a883e6c9e6f1cc7e95f7bb788d" + "checksum": "bc21de31c4abc90aac17abd68f393989" }, { "type": "renderModule", "assetId": "GPePwGKSYX", - "checksum": "b889bb2eab83b5c93d785d2069f609f4" + "checksum": "571cb5c86ea5ce4d44142f00a4b1bc00" }, { "type": "cssRules", "assetId": "GPePwGKSYX", - "checksum": "b889bb2eab83b5c93d785d2069f609f4" + "checksum": "571cb5c86ea5ce4d44142f00a4b1bc00" }, { "type": "renderModule", "assetId": "73fZB1b9iN", - "checksum": "ade5a71c387ebbfe0e9f534b5edf9430" + "checksum": "5bdf9185d0a1f0896d4b9e048515ef6b" }, { "type": "cssRules", "assetId": "73fZB1b9iN", - "checksum": "ade5a71c387ebbfe0e9f534b5edf9430" + "checksum": "5bdf9185d0a1f0896d4b9e048515ef6b" }, { "type": "renderModule", "assetId": "0Rv3wK0NN-", - "checksum": "3ae7d812a0e7a7e8cee2c608b40f48e7" + "checksum": "ee16b83742fe8283b133497d3eef22b0" }, { "type": "cssRules", "assetId": "0Rv3wK0NN-", - "checksum": "3ae7d812a0e7a7e8cee2c608b40f48e7" + "checksum": "ee16b83742fe8283b133497d3eef22b0" }, { "type": "renderModule", "assetId": "4OLKnpGnTY", - "checksum": "49a494ba25e20cc8dd2ed17537b9d29f" + "checksum": "de21485f7523d6d5c711d76a981208fc" }, { "type": "cssRules", "assetId": "4OLKnpGnTY", - "checksum": "49a494ba25e20cc8dd2ed17537b9d29f" + "checksum": "de21485f7523d6d5c711d76a981208fc" }, { "type": "renderModule", "assetId": "j_Jdg2E_a5", - "checksum": "86d5ceeb52187442b0dc28f07758ed1c" + "checksum": "1b4f7431cc372eb1c49fcfa554b5f392" }, { "type": "cssRules", "assetId": "j_Jdg2E_a5", - "checksum": "86d5ceeb52187442b0dc28f07758ed1c" + "checksum": "1b4f7431cc372eb1c49fcfa554b5f392" }, { "assetId": "kdj5vahTyUKxznuR6rrtt6", "type": "projectCss", - "checksum": "3b4837a20cb9ff6c32226010cb8a09e3" + "checksum": "3ea68b9ca6a499fbe32f936e507bf682" + }, + { + "assetId": "kdj5vahTyUKxznuR6rrtt6", + "checksum": "e6e547d728e87ee6280d17dd86b40433", + "type": "projectModule" + }, + { + "assetId": "kdj5vahTyUKxznuR6rrtt6", + "checksum": "0f8f160fabbc5052c68049ed89f31636", + "type": "styleTokensProvider" } ], - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "projectId": "6BCq4vMow1yqGKFdcP68Rz", - "version": "4.0.0", + "version": "latest", "dependencies": { "tXkSR39sgCDWSitZxC5xFV": "91.3.13", "oT38tGyqov9SPWHpf3Y2Rf": "6.0.0", "95xp9cYcv7HrNWpFWWhbcv": "2.3.0", "sDniSX4oPUZFyk2sXXb3nh": "6.1.1", - "gmeH6XgPaBtkt51HunAo4g": "18.29.0" + "gmeH6XgPaBtkt51HunAo4g": "18.30.0" }, "lang": "ts", "fileLocks": [ @@ -4380,366 +4332,131 @@ { "type": "renderModule", "assetId": "jTLog2H3DE", - "checksum": "15710b613c19747d77ae93d0ec1fb5a4" + "checksum": "a3db4fc0a116b035f3f410249e08cd8a" }, { "type": "cssRules", "assetId": "jTLog2H3DE", - "checksum": "15710b613c19747d77ae93d0ec1fb5a4" + "checksum": "a3db4fc0a116b035f3f410249e08cd8a" }, { "type": "renderModule", "assetId": "ntKkcfMNg2s", - "checksum": "fd6b42013abdee0fd62e67e475cdcb11" + "checksum": "31d0f3c204dd7811ddedcbb195256054" }, { "type": "cssRules", "assetId": "ntKkcfMNg2s", - "checksum": "fd6b42013abdee0fd62e67e475cdcb11" + "checksum": "31d0f3c204dd7811ddedcbb195256054" }, { "assetId": "6BCq4vMow1yqGKFdcP68Rz", - "type": "projectCss", - "checksum": "d3127517e632d361279302e7e073975f" + "checksum": "c666005e86f757ff0cecc21e73f7cd16", + "type": "projectModule" }, { "assetId": "6BCq4vMow1yqGKFdcP68Rz", - "checksum": "a0fa7b536fbdecd80cb8de01e0feb9d7", - "type": "projectModule" + "checksum": "0e5ee21215908898abea32383f37eb19", + "type": "styleTokensProvider" }, { "assetId": "6BCq4vMow1yqGKFdcP68Rz", - "checksum": "9e459547611b7c6291e6561046e55a01", - "type": "styleTokensProvider" + "type": "projectCss", + "checksum": "677fae96d291280ef26c1e8f3c6206ef" } ], - "codegenVersion": "0.0.2" + "codegenVersion": "0.0.3" }, { "projectId": "oermwjefjidrRRHcrxyCjQ", - "version": "latest", + "version": "1.1.1", "dependencies": { - "tXkSR39sgCDWSitZxC5xFV": "61.0.3", - "oT38tGyqov9SPWHpf3Y2Rf": "2.6.1", - "95xp9cYcv7HrNWpFWWhbcv": "2.2.0" + "tXkSR39sgCDWSitZxC5xFV": "92.0.1", + "oT38tGyqov9SPWHpf3Y2Rf": "7.0.1", + "95xp9cYcv7HrNWpFWWhbcv": "2.3.0", + "sDniSX4oPUZFyk2sXXb3nh": "6.1.1", + "gmeH6XgPaBtkt51HunAo4g": "18.32.0" }, "lang": "ts", "fileLocks": [ { "type": "renderModule", "assetId": "ZDk8OKbbuW", - "checksum": "1100e6491cefc390dfa259ff33701962" + "checksum": "548600e5a42f9c5f29c4b3231c087e40" }, { "type": "cssRules", "assetId": "ZDk8OKbbuW", - "checksum": "1100e6491cefc390dfa259ff33701962" + "checksum": "548600e5a42f9c5f29c4b3231c087e40" }, { "type": "renderModule", "assetId": "3_QVitiqMh", - "checksum": "87230a607407f5d8b6f27f923d71f8dd" + "checksum": "42b517ec36ac1ba69de23c1a3cb7337b" }, { "type": "cssRules", "assetId": "3_QVitiqMh", - "checksum": "87230a607407f5d8b6f27f923d71f8dd" + "checksum": "42b517ec36ac1ba69de23c1a3cb7337b" }, { "type": "renderModule", "assetId": "csXhXQDIqh", - "checksum": "e6da67fb763082107d09f2af5c906850" + "checksum": "f7a33a06d17d7ba0c7ef90f57aa57204" }, { "type": "cssRules", "assetId": "csXhXQDIqh", - "checksum": "e6da67fb763082107d09f2af5c906850" - }, - { - "type": "icon", - "assetId": "yV__Xr76s", - "checksum": "4447fe60a00a665b3e04554bf8f9404e" - }, - { - "type": "icon", - "assetId": "uSxcbtzK1j", - "checksum": "9e1dfb24002ae2e9823aa9913f3f8202" + "checksum": "f7a33a06d17d7ba0c7ef90f57aa57204" }, { "assetId": "oermwjefjidrRRHcrxyCjQ", - "type": "projectCss", - "checksum": "e25784cb4e8d00a3f92224448e55d6c2" - } - ], - "codegenVersion": "0.0.1" - }, - { - "projectId": "9csusiyEETC5n9fFKLeYNK", - "version": "latest", - "dependencies": { - "tXkSR39sgCDWSitZxC5xFV": "61.0.3", - "oT38tGyqov9SPWHpf3Y2Rf": "3.0.0", - "95xp9cYcv7HrNWpFWWhbcv": "2.2.1" - }, - "lang": "ts", - "fileLocks": [ - { - "type": "globalVariant", - "assetId": "2SnfbihspmoJ", - "checksum": "73a05d1ecb0c3cd62bb2b0b194988bea" - }, - { - "type": "renderModule", - "assetId": "hkmuxJmyM9", - "checksum": "0254fa31a35487bfe455846998c4fa54" - }, - { - "type": "cssRules", - "assetId": "hkmuxJmyM9", - "checksum": "0254fa31a35487bfe455846998c4fa54" - }, - { - "type": "renderModule", - "assetId": "_VRtHiszCx", - "checksum": "e22471ad98faffa91394745d84ec4dcb" - }, - { - "type": "cssRules", - "assetId": "_VRtHiszCx", - "checksum": "e22471ad98faffa91394745d84ec4dcb" - }, - { - "type": "renderModule", - "assetId": "udG9wNYCNL", - "checksum": "2eb2db36b8073997ae1f29707268eb75" - }, - { - "type": "cssRules", - "assetId": "udG9wNYCNL", - "checksum": "2eb2db36b8073997ae1f29707268eb75" - }, - { - "type": "renderModule", - "assetId": "1ooaehe0m9", - "checksum": "cd03a08d8a2cd86843c917942612dc47" - }, - { - "type": "cssRules", - "assetId": "1ooaehe0m9", - "checksum": "cd03a08d8a2cd86843c917942612dc47" - }, - { - "type": "renderModule", - "assetId": "dtgx0NGfys", - "checksum": "8ff928e1f7f82d20754f32d9e8202569" - }, - { - "type": "cssRules", - "assetId": "dtgx0NGfys", - "checksum": "8ff928e1f7f82d20754f32d9e8202569" - }, - { - "type": "renderModule", - "assetId": "_Lp0iIQjbN", - "checksum": "9bcc25437329247fc3a18e9504083a31" - }, - { - "type": "cssRules", - "assetId": "_Lp0iIQjbN", - "checksum": "9bcc25437329247fc3a18e9504083a31" - }, - { - "type": "renderModule", - "assetId": "Rh23GExBNXe", - "checksum": "7c3206e562110af34785b94d08f7015c" - }, - { - "type": "cssRules", - "assetId": "Rh23GExBNXe", - "checksum": "7c3206e562110af34785b94d08f7015c" - }, - { - "type": "image", - "assetId": "9iFo08KkR", - "checksum": "1e3264cf576fc281adb46d2f9bdbbd60" - }, - { - "type": "image", - "assetId": "i3GyxvVFz", - "checksum": "303a5010d2e32257aa69755ff10cbc95" - }, - { - "type": "image", - "assetId": "PzwwbIP93", - "checksum": "fca63a9e911864f28c4bcba55e3fd3c8" - }, - { - "type": "image", - "assetId": "gm-UM3pEu", - "checksum": "f865fd3945fb2eb98895b83a9f6dc370" - }, - { - "type": "image", - "assetId": "lYsHu22AE", - "checksum": "c75a47c73f104ba57395f3661014ba9e" - }, - { - "type": "image", - "assetId": "SIWLjberf", - "checksum": "526505994930b3667d723f9c30d62fdb" - }, - { - "type": "image", - "assetId": "aBOYClima", - "checksum": "1b411bac1db0c3e3bef7c98d61b7851e" - }, - { - "type": "image", - "assetId": "Pd4OAIwV_", - "checksum": "dbd806181ad1775af039d16a6b26535a" - }, - { - "type": "image", - "assetId": "hbmHndPeK", - "checksum": "980e5bf1e199d055f9c6c5952967cd48" - }, - { - "type": "image", - "assetId": "R71lPt9hC", - "checksum": "d952afeee53a0f10b10fde0ad60c3876" - }, - { - "type": "image", - "assetId": "DCKWvMlr3", - "checksum": "98a99865bc20fb9cf9aab7265e673b2c" - }, - { - "type": "image", - "assetId": "fAt8vyqin", - "checksum": "d08b199079704a701f0ff7bf7e0aaec3" - }, - { - "type": "image", - "assetId": "jLLOVv4um", - "checksum": "b1144ba3ea778a2a32dd9e82752c278c" - }, - { - "type": "image", - "assetId": "tclh459HJ", - "checksum": "f97b3f0f87e46f09c440f42776501d6a" - }, - { - "type": "image", - "assetId": "Q-19QWMVR", - "checksum": "e826f97998e2d6261c821e098de92133" - }, - { - "type": "image", - "assetId": "waXA3wvyg", - "checksum": "02339d516c65f396d267ccd275c36d61" + "checksum": "4f0ab0d5e84a6b82c98cc2b8b9c7c576", + "type": "projectModule" }, { - "type": "icon", - "assetId": "6YWYAmDA19k", - "checksum": "92602933cc75071e97d6ec3552cf04a1" + "assetId": "oermwjefjidrRRHcrxyCjQ", + "checksum": "d13ab7f84a863443a0be7cb519bff380", + "type": "styleTokensProvider" }, { - "assetId": "9csusiyEETC5n9fFKLeYNK", + "assetId": "oermwjefjidrRRHcrxyCjQ", "type": "projectCss", - "checksum": "c33a805709ab08d887bd82382aea029a" + "checksum": "d1fe5410494dd22c3bf979d2e239a274" } ], - "codegenVersion": "0.0.1" - }, - { - "projectId": "4nEqjj19Sbp3EVnBkgQMP1", - "version": "latest", - "dependencies": { - "tXkSR39sgCDWSitZxC5xFV": "32.2.2" - }, - "lang": "ts", - "fileLocks": [ - { - "type": "globalVariant", - "assetId": "v16B7zZEJF0m", - "checksum": "409fcd804dedbc5baf277214095ed294" - }, - { - "type": "renderModule", - "assetId": "cOWhlnv8o5", - "checksum": "c24148d644bfb0dafd67c83f6d9fed64" - }, - { - "type": "cssRules", - "assetId": "cOWhlnv8o5", - "checksum": "c24148d644bfb0dafd67c83f6d9fed64" - }, - { - "type": "renderModule", - "assetId": "FOLsgsm2iy", - "checksum": "c1045c0b88ce75d6ef1b68aa12e23cbe" - }, - { - "type": "cssRules", - "assetId": "FOLsgsm2iy", - "checksum": "c1045c0b88ce75d6ef1b68aa12e23cbe" - }, - { - "type": "renderModule", - "assetId": "D_TguRKWxB", - "checksum": "79b35abd17f6a5e55574df96058b15f4" - }, - { - "type": "cssRules", - "assetId": "D_TguRKWxB", - "checksum": "79b35abd17f6a5e55574df96058b15f4" - }, - { - "type": "renderModule", - "assetId": "LRUE0mIhfL", - "checksum": "964ed3f9931bd3f76c70d7e4145f3ab0" - }, - { - "type": "cssRules", - "assetId": "LRUE0mIhfL", - "checksum": "964ed3f9931bd3f76c70d7e4145f3ab0" - }, - { - "assetId": "4nEqjj19Sbp3EVnBkgQMP1", - "type": "projectCss", - "checksum": "d4e7880a5693405289d54608ec12396e" - } - ] + "codegenVersion": "0.0.3" }, { "projectId": "pTmuho7nuNtDcvZAf2kJgx", - "version": "7.0.1", + "version": "7.1.0", "dependencies": { "95xp9cYcv7HrNWpFWWhbcv": "2.3.0", - "tXkSR39sgCDWSitZxC5xFV": "91.2.0", - "oT38tGyqov9SPWHpf3Y2Rf": "5.10.0" + "tXkSR39sgCDWSitZxC5xFV": "91.3.3", + "oT38tGyqov9SPWHpf3Y2Rf": "5.10.0", + "gmeH6XgPaBtkt51HunAo4g": "18.30.0" }, "lang": "ts", "fileLocks": [ { "type": "renderModule", "assetId": "jLDeDF206V", - "checksum": "0d3a5c47639ff35f9250f4633040f183" + "checksum": "e2bc1bded6ac7ddd081889624e0f5c40" }, { "type": "cssRules", "assetId": "jLDeDF206V", - "checksum": "0d3a5c47639ff35f9250f4633040f183" + "checksum": "e2bc1bded6ac7ddd081889624e0f5c40" }, { "type": "renderModule", "assetId": "aSLlLoswhi", - "checksum": "be01cc31c1ac22be842c95c16f7761a2" + "checksum": "7e1aa3b59f694cabe6561caf1a2966f0" }, { "type": "cssRules", "assetId": "aSLlLoswhi", - "checksum": "be01cc31c1ac22be842c95c16f7761a2" + "checksum": "7e1aa3b59f694cabe6561caf1a2966f0" }, { "type": "image", @@ -4759,12 +4476,12 @@ { "type": "renderModule", "assetId": "tf_fQvs5kI8", - "checksum": "e7a952e90ac0d0ce6a5a31849e6ac790" + "checksum": "9a867aa4d1ba0588044ca81caffc117a" }, { "type": "cssRules", "assetId": "tf_fQvs5kI8", - "checksum": "e7a952e90ac0d0ce6a5a31849e6ac790" + "checksum": "9a867aa4d1ba0588044ca81caffc117a" }, { "type": "icon", @@ -4803,11 +4520,21 @@ }, { "assetId": "pTmuho7nuNtDcvZAf2kJgx", - "type": "projectCss", - "checksum": "7e5d540b4daa9f196167a3e73898a507" + "type": "projectCss", + "checksum": "fdb85bebf205705684876c8377e99d62" + }, + { + "assetId": "pTmuho7nuNtDcvZAf2kJgx", + "checksum": "52d768acc6ff3b722d37cc050a471fe2", + "type": "projectModule" + }, + { + "assetId": "pTmuho7nuNtDcvZAf2kJgx", + "checksum": "5234778ee6cf813f41a6e7f56bff7313", + "type": "styleTokensProvider" } ], - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "projectId": "sDniSX4oPUZFyk2sXXb3nh", @@ -4829,20 +4556,20 @@ }, { "assetId": "sDniSX4oPUZFyk2sXXb3nh", - "checksum": "bbd1a032d87c45732c1f08cfb171a3d8", + "checksum": "e23f198735d1e59999a261e442f63f96", "type": "styleTokensProvider" }, { "assetId": "sDniSX4oPUZFyk2sXXb3nh", "type": "projectCss", - "checksum": "4a04130c7d08dec4d22b1dc49d1f729d" + "checksum": "e571d4b5db7af75f453646c95d155c8a" } ], "codegenVersion": "0.0.3" }, { "projectId": "oT38tGyqov9SPWHpf3Y2Rf", - "version": "6.0.0", + "version": "7.0.1", "dependencies": {}, "lang": "ts", "fileLocks": [ @@ -6501,11 +6228,6 @@ "assetId": "h7sB2KeL-", "checksum": "a34d018e7dc0ca050246956c61b6d518" }, - { - "type": "icon", - "assetId": "f0RrtBrXp", - "checksum": "a56a2851443cbf909b8852a8065e514f" - }, { "type": "icon", "assetId": "xZrB9_0ir", @@ -7708,7 +7430,7 @@ }, { "assetId": "oT38tGyqov9SPWHpf3Y2Rf", - "checksum": "3efbb12a890296cbdb7ab229f128fdad", + "checksum": "8b104dd86084545c4c3638e75082f568", "type": "styleTokensProvider" }, { @@ -7728,13 +7450,38 @@ }, { "type": "icon", - "assetId": "dv3Bkq7gSf1e", - "checksum": "e7bf4080c0e93f7017c8c92e10734520" + "assetId": "M5K-Io2qEu6p", + "checksum": "88bcb8c2378df0c7b7baff03cdd089a8" + }, + { + "type": "icon", + "assetId": "rljnOq5L08E4", + "checksum": "49309b41cc18e4ed9c840f37cca37d60" + }, + { + "type": "icon", + "assetId": "lKC5OWnoiZna", + "checksum": "fefd8883f55080a19dbebe8243a4d138" + }, + { + "type": "icon", + "assetId": "7bLQ-ay2DVAE", + "checksum": "0ea8bea24fcd4dab1d906f5a7108bd03" + }, + { + "type": "icon", + "assetId": "9S59ztobsQvK", + "checksum": "7695b62bc48d46387d220c9a073b2f51" }, { "assetId": "oT38tGyqov9SPWHpf3Y2Rf", "type": "projectCss", - "checksum": "fb12ca10d4fc9b9efd9cfedd44a63e4d" + "checksum": "201305b92c373c9e3d7eddc35ecfa02a" + }, + { + "type": "icon", + "assetId": "f0RrtBrXp", + "checksum": "a56a2851443cbf909b8852a8065e514f" } ], "codegenVersion": "0.0.3" @@ -7757,13 +7504,13 @@ }, { "assetId": "95xp9cYcv7HrNWpFWWhbcv", - "checksum": "0a2e2ebbaacce1778c9ce98e9353e7ef", + "checksum": "a35abb1ba97d8904e1bac1cb086653c6", "type": "styleTokensProvider" }, { "assetId": "95xp9cYcv7HrNWpFWWhbcv", "type": "projectCss", - "checksum": "dec06edf19b91738f784cd13ce67a4a7" + "checksum": "531f03f6a22a517d2dcf92ee340d206a" } ], "codegenVersion": "0.0.3" @@ -7783,7 +7530,7 @@ }, { "projectId": "oB885NJtg5rwT11s7yCnwW", - "version": "latest", + "version": "0.2.0", "dependencies": { "tXkSR39sgCDWSitZxC5xFV": "61.0.3", "oT38tGyqov9SPWHpf3Y2Rf": "2.6.1", @@ -7794,39 +7541,50 @@ { "type": "renderModule", "assetId": "YWyR9ESU0CU", - "checksum": "be660dff844cc1825ec409e67e72e20b" + "checksum": "1fff866f3987d9aa84b202547afa42d4" }, { "type": "cssRules", "assetId": "YWyR9ESU0CU", - "checksum": "be660dff844cc1825ec409e67e72e20b" + "checksum": "1fff866f3987d9aa84b202547afa42d4" }, { "type": "renderModule", "assetId": "i-BferDjrAl", - "checksum": "877b188ab6099a4190904fe6bee178ba" + "checksum": "544fe82b0947fa4b8333a97e50915c6a" }, { "type": "cssRules", "assetId": "i-BferDjrAl", - "checksum": "877b188ab6099a4190904fe6bee178ba" - }, - { - "assetId": "oB885NJtg5rwT11s7yCnwW", - "type": "projectCss", - "checksum": "59bf9c6e1ec8a59bbcef284bfeb8b243" + "checksum": "544fe82b0947fa4b8333a97e50915c6a" }, { "type": "icon", "assetId": "QWzHJOf09S", - "checksum": "90c726c1d95dfc18d315a6eb23630906" + "checksum": "2dbe466267b38f7e5b5cb109bd40e4e2" }, { "type": "icon", "assetId": "uFvmqTmkO9", - "checksum": "64b3f3a96f9763a421a47b2baf7a5045" + "checksum": "5e1daa0dfd5816aca52b02393e427e9e" + }, + { + "assetId": "oB885NJtg5rwT11s7yCnwW", + "type": "projectCss", + "checksum": "70dd0cb4d8f12642e175a525a507d573" + }, + { + "assetId": "oB885NJtg5rwT11s7yCnwW", + "checksum": "297fe00bd0f179592fc2860661f141db", + "type": "projectModule" + }, + { + "assetId": "oB885NJtg5rwT11s7yCnwW", + "checksum": "51515b39b6f03c73f2c9ec0659051a07", + "type": "styleTokensProvider" } - ] + ], + "codegenVersion": "0.0.3" }, { "projectId": "uLddf5fC1aQbF7tmV1WQ1a", @@ -7842,30 +7600,40 @@ { "type": "renderModule", "assetId": "GzEy-XDJM8", - "checksum": "35ed0aef445d93ba129307ac48944473" + "checksum": "b4e9c9c59b54c0ad7e0e23a437b8ad96" }, { "type": "cssRules", "assetId": "GzEy-XDJM8", - "checksum": "35ed0aef445d93ba129307ac48944473" + "checksum": "b4e9c9c59b54c0ad7e0e23a437b8ad96" }, { "type": "renderModule", "assetId": "kVTvUj4Wyf", - "checksum": "ea84936fa356dbf74243369576072d6e" + "checksum": "2ab8d7fa33e426e2d2fa39d7e025dd16" }, { "type": "cssRules", "assetId": "kVTvUj4Wyf", - "checksum": "ea84936fa356dbf74243369576072d6e" + "checksum": "2ab8d7fa33e426e2d2fa39d7e025dd16" }, { "assetId": "uLddf5fC1aQbF7tmV1WQ1a", "type": "projectCss", - "checksum": "3f42af4f2419971c4fc5fdf52785735a" + "checksum": "941ed7b0a341050f597f7dd1cedacef6" + }, + { + "assetId": "uLddf5fC1aQbF7tmV1WQ1a", + "checksum": "6fbe6f227a4a2a2f28e8ae1227ae81b1", + "type": "projectModule" + }, + { + "assetId": "uLddf5fC1aQbF7tmV1WQ1a", + "checksum": "ae011568f17140d4ec35f8d177a1805c", + "type": "styleTokensProvider" } ], - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "projectId": "ieacQ3Z46z4gwo1FnaB5vY", @@ -7875,7 +7643,7 @@ "oT38tGyqov9SPWHpf3Y2Rf": "6.0.0", "95xp9cYcv7HrNWpFWWhbcv": "2.3.0", "sDniSX4oPUZFyk2sXXb3nh": "6.1.1", - "gmeH6XgPaBtkt51HunAo4g": "18.29.0" + "gmeH6XgPaBtkt51HunAo4g": "18.30.0" }, "lang": "ts", "fileLocks": [ @@ -7887,112 +7655,112 @@ { "type": "renderModule", "assetId": "FxC1c7NZtR", - "checksum": "955657bfc20b1155d9c635bd131cd318" + "checksum": "966c2e7bed22a160863a1ae3329d92d4" }, { "type": "cssRules", "assetId": "FxC1c7NZtR", - "checksum": "955657bfc20b1155d9c635bd131cd318" + "checksum": "966c2e7bed22a160863a1ae3329d92d4" }, { "type": "renderModule", "assetId": "kX5_DA_mZR", - "checksum": "5b9a19edc56e2c69bda9d9327f9c5cce" + "checksum": "db4dcb9bd32adf2629b427d533af97ba" }, { "type": "cssRules", "assetId": "kX5_DA_mZR", - "checksum": "5b9a19edc56e2c69bda9d9327f9c5cce" + "checksum": "db4dcb9bd32adf2629b427d533af97ba" }, { "type": "renderModule", "assetId": "fC6EeUMrpE", - "checksum": "6c1b23f79959b5844ff64d78aa8a670f" + "checksum": "f40fac2ccca5b52bfdaa72844d70d3cb" }, { "type": "cssRules", "assetId": "fC6EeUMrpE", - "checksum": "6c1b23f79959b5844ff64d78aa8a670f" + "checksum": "f40fac2ccca5b52bfdaa72844d70d3cb" }, { "type": "renderModule", "assetId": "M3aa84scyXT", - "checksum": "93ac7f641e204ec17d390a90cc0e5e4a" + "checksum": "c86b4b2ec7649aa26276ab54071a6f66" }, { "type": "cssRules", "assetId": "M3aa84scyXT", - "checksum": "93ac7f641e204ec17d390a90cc0e5e4a" + "checksum": "c86b4b2ec7649aa26276ab54071a6f66" }, { "type": "renderModule", "assetId": "FpZFUfiTA6", - "checksum": "b3e76577983468976a575d1573ba2565" + "checksum": "e3c35b2b59de5aef7ed07f493fbf662f" }, { "type": "cssRules", "assetId": "FpZFUfiTA6", - "checksum": "b3e76577983468976a575d1573ba2565" + "checksum": "e3c35b2b59de5aef7ed07f493fbf662f" }, { "type": "renderModule", "assetId": "girCdMST6R", - "checksum": "205279faa350e7b792e0281185e3af64" + "checksum": "2b38c51e8d1d976eb5ca29318fce9f75" }, { "type": "cssRules", "assetId": "girCdMST6R", - "checksum": "205279faa350e7b792e0281185e3af64" + "checksum": "2b38c51e8d1d976eb5ca29318fce9f75" }, { "type": "renderModule", "assetId": "k2vc2stl18", - "checksum": "52aadea69e8af845c3cac692181ad863" + "checksum": "fabace48ab25db6304296e9e0c159307" }, { "type": "cssRules", "assetId": "k2vc2stl18", - "checksum": "52aadea69e8af845c3cac692181ad863" + "checksum": "fabace48ab25db6304296e9e0c159307" }, { "type": "renderModule", "assetId": "9vM3ZFGR4eV", - "checksum": "bd0f4699dc08b699ade0ec4478da6640" + "checksum": "91c46d3641328b849a75af995503acad" }, { "type": "cssRules", "assetId": "9vM3ZFGR4eV", - "checksum": "bd0f4699dc08b699ade0ec4478da6640" + "checksum": "91c46d3641328b849a75af995503acad" }, { "type": "renderModule", "assetId": "FiuFB1wXjp", - "checksum": "00bed3ebf2a59b7abddf6d54941f4a68" + "checksum": "9fd84c78a6109105414f4aa136688722" }, { "type": "cssRules", "assetId": "FiuFB1wXjp", - "checksum": "00bed3ebf2a59b7abddf6d54941f4a68" + "checksum": "9fd84c78a6109105414f4aa136688722" }, { "type": "renderModule", "assetId": "y1ZiXuS8BD", - "checksum": "9895b2556d39c5fc0cabb7b24b97b673" + "checksum": "5ebd9d8fca1b59216be8704b349320fc" }, { "type": "cssRules", "assetId": "y1ZiXuS8BD", - "checksum": "9895b2556d39c5fc0cabb7b24b97b673" + "checksum": "5ebd9d8fca1b59216be8704b349320fc" }, { "type": "renderModule", "assetId": "pLQf-lY112u", - "checksum": "676ad9af11550e1e3b5bde4eb96e8012" + "checksum": "0ddc5431f6f0bf2cc5c7928ed5c46fb7" }, { "type": "cssRules", "assetId": "pLQf-lY112u", - "checksum": "676ad9af11550e1e3b5bde4eb96e8012" + "checksum": "0ddc5431f6f0bf2cc5c7928ed5c46fb7" }, { "type": "icon", @@ -8012,22 +7780,22 @@ { "type": "renderModule", "assetId": "Tz8Unep1qu", - "checksum": "3e2f2c4f1f0506933c36e605cf5f5c97" + "checksum": "eb6eb83292dcfba50376f6857fbc3acf" }, { "type": "cssRules", "assetId": "Tz8Unep1qu", - "checksum": "3e2f2c4f1f0506933c36e605cf5f5c97" + "checksum": "eb6eb83292dcfba50376f6857fbc3acf" }, { "type": "renderModule", "assetId": "a5viGetjMi", - "checksum": "70a8364399f6dfb02806099167551c90" + "checksum": "528b82fc51d19124f998096c0fe6b3bf" }, { "type": "cssRules", "assetId": "a5viGetjMi", - "checksum": "70a8364399f6dfb02806099167551c90" + "checksum": "528b82fc51d19124f998096c0fe6b3bf" }, { "type": "icon", @@ -8041,16 +7809,16 @@ }, { "assetId": "ieacQ3Z46z4gwo1FnaB5vY", - "checksum": "763ba4122f90a8fccf97ee5b2ef5f62f", + "checksum": "b3d75da37b25121abcf2c316e3b3e19a", "type": "styleTokensProvider" }, { "assetId": "ieacQ3Z46z4gwo1FnaB5vY", "type": "projectCss", - "checksum": "030ccbf6be063ba5e3ef92c77d0a2d48" + "checksum": "d8d1b1a65e22ab8de6c8c7298aa5a0e4" } ], - "codegenVersion": "0.0.2" + "codegenVersion": "0.0.3" }, { "projectId": "gtUDvxG6cmBbSzqLikNzoP", @@ -8066,362 +7834,332 @@ { "type": "globalVariant", "assetId": "bOVbNSh4sGqoa", - "checksum": "b3855475e173192921d57600e0ec3ea9" + "checksum": "0a58817edd93cb5969d2831a1ac33e01" }, { "type": "renderModule", "assetId": "nlaW16gbH_n", - "checksum": "8a07cbdbd8226882492432f6cbcd25ef" + "checksum": "6cf25a0262e4386bbc7a956e5d006661" }, { "type": "cssRules", "assetId": "nlaW16gbH_n", - "checksum": "8a07cbdbd8226882492432f6cbcd25ef" + "checksum": "6cf25a0262e4386bbc7a956e5d006661" }, { "type": "icon", "assetId": "6dMbk6C2QI_L_", - "checksum": "b514819227ae1ee4a198274d8ded1b90" + "checksum": "040d00b851826abd334067ef0472da82" }, { "type": "icon", "assetId": "PAf6ri2Zfos6H", - "checksum": "813817e0e9319b8409b6521384b681d1" + "checksum": "ee8cd59d81886fa5da4787ef657e6149" }, { "type": "icon", "assetId": "t_IhkVbHjnz", - "checksum": "c0f6b6b89afa108539ac4d0b06af13bb" + "checksum": "e5916c0f38376387b8f75736c9c0f45b" }, { "type": "icon", "assetId": "1fOBAQgR_YC", - "checksum": "41374455f19c432f19199e621d1f10a5" + "checksum": "23a9e69818bb153860e8dc41e88b45b7" }, { "type": "icon", "assetId": "WwUBV0GQ7FQ", - "checksum": "bdc314ef67bc6e80d4ef85ff741d1f8e" + "checksum": "5291fc24cc6f809f8c49d789edf5e978" }, { "type": "icon", "assetId": "X6hf2DFJIGGQ", - "checksum": "bafb4a0861eda8f934f3b3cfb27336bd" + "checksum": "1df6e26de89cb876e6eea8b17e169844" }, { "type": "icon", "assetId": "HgcWQamEyGiJ", - "checksum": "ee78c0f6ee601d0bdbe5a698c963e761" + "checksum": "3b2b46327fce846ec2c84e049b1ffa65" }, { "type": "icon", "assetId": "XoVue8d2QUwz", - "checksum": "e3397e0530745524f99811a3473cce45" + "checksum": "7055970e5e503cdcabfae6e769f91c8c" }, { "type": "image", "assetId": "Q9FZkjIRMlhO_", - "checksum": "42d1840920e01fc8cb07442f4b48dd27" + "checksum": "d38dcb95e1db3c917822b8400587517d" }, { "type": "renderModule", "assetId": "HtHxjHknmj_", - "checksum": "287725a9fd35f4b3ec804e90ab8a3ab0" + "checksum": "73f181298c9d8f8c5c420064dabd4bb8" }, { "type": "cssRules", "assetId": "HtHxjHknmj_", - "checksum": "287725a9fd35f4b3ec804e90ab8a3ab0" + "checksum": "73f181298c9d8f8c5c420064dabd4bb8" }, { "type": "renderModule", "assetId": "ohFfsSdDUeCq", - "checksum": "145a414a2cdbdccf0d21c88a779b94d9" + "checksum": "5fe1d05452c200075a15cfa76eea39fb" }, { "type": "cssRules", "assetId": "ohFfsSdDUeCq", - "checksum": "145a414a2cdbdccf0d21c88a779b94d9" + "checksum": "5fe1d05452c200075a15cfa76eea39fb" }, { "type": "renderModule", "assetId": "fjdDZovo7S", - "checksum": "80add5da4d8fe10d9be61e523e377bae" + "checksum": "6a5ab2b8a71a675e2c72c3e21ec92e84" }, { "type": "cssRules", "assetId": "fjdDZovo7S", - "checksum": "80add5da4d8fe10d9be61e523e377bae" + "checksum": "6a5ab2b8a71a675e2c72c3e21ec92e84" }, { "type": "renderModule", "assetId": "74OdgMxR-T", - "checksum": "46906a4d720f2fc48288df78292273de" + "checksum": "52fee0126f46fd695da7d349d5a5cd2e" }, { "type": "cssRules", "assetId": "74OdgMxR-T", - "checksum": "46906a4d720f2fc48288df78292273de" + "checksum": "52fee0126f46fd695da7d349d5a5cd2e" }, { "type": "renderModule", "assetId": "APlN8dajrS9", - "checksum": "77bb73ee0acc8eb7e5ea849018653660" + "checksum": "760b5ab714c8fa81ec544cc45859bee5" }, { "type": "cssRules", "assetId": "APlN8dajrS9", - "checksum": "77bb73ee0acc8eb7e5ea849018653660" + "checksum": "760b5ab714c8fa81ec544cc45859bee5" }, { "type": "renderModule", "assetId": "SRI244k7gOA", - "checksum": "95c4d64c1b473aa3b48043e65490e0a6" + "checksum": "1ec173150b95d244df48a562c25d9fbd" }, { "type": "cssRules", "assetId": "SRI244k7gOA", - "checksum": "95c4d64c1b473aa3b48043e65490e0a6" + "checksum": "1ec173150b95d244df48a562c25d9fbd" }, { "type": "renderModule", "assetId": "5hDgjGS3IR", - "checksum": "fdde22be021d4b495bb09724c1b6bd2d" + "checksum": "124c14313f298921f48fed1781681900" }, { "type": "cssRules", "assetId": "5hDgjGS3IR", - "checksum": "fdde22be021d4b495bb09724c1b6bd2d" + "checksum": "124c14313f298921f48fed1781681900" }, { "type": "renderModule", "assetId": "KCou38FwxL", - "checksum": "59e4205ef1dbcf0f80a142533b3f3e3f" + "checksum": "a438c1e08487579f772b979f913a1ae6" }, { "type": "cssRules", "assetId": "KCou38FwxL", - "checksum": "59e4205ef1dbcf0f80a142533b3f3e3f" + "checksum": "a438c1e08487579f772b979f913a1ae6" }, { "type": "renderModule", "assetId": "60hnxzzKks", - "checksum": "6d4794a59865ed1f76ceee9da73c61fe" + "checksum": "7616c83a368ae47154c788f8ce729720" }, { "type": "cssRules", "assetId": "60hnxzzKks", - "checksum": "6d4794a59865ed1f76ceee9da73c61fe" + "checksum": "7616c83a368ae47154c788f8ce729720" }, { "type": "renderModule", "assetId": "b4qqi4IFfg", - "checksum": "5cdbede4d098f61635997bdcb3748895" + "checksum": "72d537787eb12e89beeb169ca8264250" }, { "type": "cssRules", "assetId": "b4qqi4IFfg", - "checksum": "5cdbede4d098f61635997bdcb3748895" + "checksum": "72d537787eb12e89beeb169ca8264250" }, { "type": "renderModule", "assetId": "T79mlJEJy9", - "checksum": "805b8ccd9ebd626704d5445e5d29b27a" + "checksum": "a33e770b47ed400224393afb31b553f2" }, { "type": "cssRules", "assetId": "T79mlJEJy9", - "checksum": "805b8ccd9ebd626704d5445e5d29b27a" + "checksum": "a33e770b47ed400224393afb31b553f2" }, { "type": "icon", "assetId": "AKxTHEA6Rx", - "checksum": "0794d6b0e154d05f750c6d7f9e2b2ec9" + "checksum": "9e693ded53e88b29d83cac59de869ea3" }, { "type": "renderModule", "assetId": "jARgXSx3Oz", - "checksum": "5e844b88e8f157ac3bdccc8e4fe009b6" + "checksum": "5c744210664d09d62b01155f3a49a9d7" }, { "type": "cssRules", "assetId": "jARgXSx3Oz", - "checksum": "5e844b88e8f157ac3bdccc8e4fe009b6" + "checksum": "5c744210664d09d62b01155f3a49a9d7" }, { "type": "renderModule", "assetId": "QUkOz1f5TI", - "checksum": "8b43e25e5f030eed60d8206ffa03c4ba" + "checksum": "48a2ee1d64b7a027943f4aad5d670f14" }, { "type": "cssRules", "assetId": "QUkOz1f5TI", - "checksum": "8b43e25e5f030eed60d8206ffa03c4ba" + "checksum": "48a2ee1d64b7a027943f4aad5d670f14" }, { "type": "renderModule", "assetId": "evzY7iORow", - "checksum": "5588268a39026269bc45f0fb4fa22968" + "checksum": "217532a43d6939afcc35b1ab11aa0cca" }, { "type": "cssRules", "assetId": "evzY7iORow", - "checksum": "5588268a39026269bc45f0fb4fa22968" + "checksum": "217532a43d6939afcc35b1ab11aa0cca" }, { "assetId": "gtUDvxG6cmBbSzqLikNzoP", "type": "projectCss", - "checksum": "1a7c725ae05d2e734c08beccf2de8fcc" + "checksum": "13952675a378dfe9ae6520ca520f6185" + }, + { + "assetId": "gtUDvxG6cmBbSzqLikNzoP", + "checksum": "b86a7c3c1a757261892b892239ac23bd", + "type": "projectModule" + }, + { + "assetId": "gtUDvxG6cmBbSzqLikNzoP", + "checksum": "13a8f4a22df15b8abc096a1c29d42498", + "type": "styleTokensProvider" } ], - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "projectId": "w2GXN278dkQ2gQTVQnPehW", - "version": "40.0.0", + "version": "latest", "dependencies": { - "tXkSR39sgCDWSitZxC5xFV": "91.7.0", - "oT38tGyqov9SPWHpf3Y2Rf": "6.0.0", + "tXkSR39sgCDWSitZxC5xFV": "99.1.1", + "oT38tGyqov9SPWHpf3Y2Rf": "7.0.1", "95xp9cYcv7HrNWpFWWhbcv": "2.3.0", "sDniSX4oPUZFyk2sXXb3nh": "6.1.1", - "gmeH6XgPaBtkt51HunAo4g": "18.30.0" + "gmeH6XgPaBtkt51HunAo4g": "18.32.0" }, "lang": "ts", "fileLocks": [ { "type": "renderModule", "assetId": "cbEBf9RLgx", - "checksum": "958b7d2baca05d36134c74b36a3c1a5b" + "checksum": "838e59dc38c8524c99b597478f0ea034" }, { "type": "cssRules", "assetId": "cbEBf9RLgx", - "checksum": "958b7d2baca05d36134c74b36a3c1a5b" + "checksum": "838e59dc38c8524c99b597478f0ea034" }, { "type": "renderModule", "assetId": "xmF37LmWYE", - "checksum": "4083c2d2d6e229eb17141fdfcdbd7305" + "checksum": "13955c796b6813ab7743d474d20675e3" }, { "type": "cssRules", "assetId": "xmF37LmWYE", - "checksum": "4083c2d2d6e229eb17141fdfcdbd7305" + "checksum": "13955c796b6813ab7743d474d20675e3" }, { "type": "renderModule", "assetId": "fa3uzsyXr0", - "checksum": "d4cbcee32fd8994916fefe1ca456e58f" + "checksum": "37621bbc8f1a09d8b981d888883e92ed" }, { "type": "cssRules", "assetId": "fa3uzsyXr0", - "checksum": "d4cbcee32fd8994916fefe1ca456e58f" + "checksum": "37621bbc8f1a09d8b981d888883e92ed" }, { "type": "renderModule", "assetId": "PZbWryjVVD", - "checksum": "7313a009171586d4e76dabcb21df5eb4" + "checksum": "03323e05385e53765bccc6a7e2612151" }, { "type": "cssRules", "assetId": "PZbWryjVVD", - "checksum": "7313a009171586d4e76dabcb21df5eb4" + "checksum": "03323e05385e53765bccc6a7e2612151" }, { "type": "renderModule", "assetId": "EzMpPqn_cI", - "checksum": "d0913a8b72f666b56494b16154d64d85" + "checksum": "84f9a0aba463e239f3dc48832b4fa42b" }, { "type": "cssRules", "assetId": "EzMpPqn_cI", - "checksum": "d0913a8b72f666b56494b16154d64d85" + "checksum": "84f9a0aba463e239f3dc48832b4fa42b" }, { "type": "renderModule", "assetId": "nD2Ql_rEk6", - "checksum": "fa67d3a86f3d546a439347341c6921f1" + "checksum": "78951acc2ecdbdce0f1d7dde6fa19d9b" }, { "type": "cssRules", "assetId": "nD2Ql_rEk6", - "checksum": "fa67d3a86f3d546a439347341c6921f1" - }, - { - "type": "renderModule", - "assetId": "gWylXtol8Lf", - "checksum": "0b0d4dd9ab9372fbe9c756b292504de6" - }, - { - "type": "cssRules", - "assetId": "gWylXtol8Lf", - "checksum": "0b0d4dd9ab9372fbe9c756b292504de6" + "checksum": "78951acc2ecdbdce0f1d7dde6fa19d9b" }, { "type": "renderModule", "assetId": "GDvL7J9P5V4", - "checksum": "1ee9a5ef4e35f527676db7134e9c0d05" + "checksum": "78c5821eafb441ee55153876f93a1948" }, { "type": "cssRules", "assetId": "GDvL7J9P5V4", - "checksum": "1ee9a5ef4e35f527676db7134e9c0d05" + "checksum": "78c5821eafb441ee55153876f93a1948" }, { "type": "renderModule", "assetId": "yN9xaawDlts", - "checksum": "155bcefccf04b892c890aeff2c2dd96a" + "checksum": "5cad3936a07616f41ca32637348665d2" }, { "type": "cssRules", "assetId": "yN9xaawDlts", - "checksum": "155bcefccf04b892c890aeff2c2dd96a" - }, - { - "type": "renderModule", - "assetId": "VDe4OfA0wv", - "checksum": "c157b62e5138fe80c1f0a3b8a7ce8614" - }, - { - "type": "cssRules", - "assetId": "VDe4OfA0wv", - "checksum": "c157b62e5138fe80c1f0a3b8a7ce8614" - }, - { - "type": "renderModule", - "assetId": "QcDtYmEqee", - "checksum": "1295b72fde08a77971eab1b54e1c1d16" - }, - { - "type": "cssRules", - "assetId": "QcDtYmEqee", - "checksum": "1295b72fde08a77971eab1b54e1c1d16" + "checksum": "5cad3936a07616f41ca32637348665d2" }, { "type": "renderModule", "assetId": "SdMPiPjcB9G", - "checksum": "8c6102243476b6171aa97d88f1dc74c7" + "checksum": "3993da35d4f51ec8594f923aab2b2719" }, { "type": "cssRules", "assetId": "SdMPiPjcB9G", - "checksum": "8c6102243476b6171aa97d88f1dc74c7" - }, - { - "type": "icon", - "assetId": "aeyQLybWj1P", - "checksum": "31e9ddf85cfc64e94080db0f9838a262" - }, - { - "type": "icon", - "assetId": "T7O74SQvscm", - "checksum": "890b5d6a35f48ff81412a7d8818aad10" + "checksum": "3993da35d4f51ec8594f923aab2b2719" }, { "type": "icon", "assetId": "udef47udLQ", - "checksum": "d2fca1fd03e1da6faff2cb6fa66df1d5" + "checksum": "45e82b0197199a0fa61ac6c904ff586e" }, { "type": "icon", @@ -8431,12 +8169,12 @@ { "type": "renderModule", "assetId": "CdMYaSGMjG", - "checksum": "62f7ba9f60f9e3c5d199d80aa216cdfc" + "checksum": "b322b12944b9fb2848c6d75731f0b629" }, { "type": "cssRules", "assetId": "CdMYaSGMjG", - "checksum": "62f7ba9f60f9e3c5d199d80aa216cdfc" + "checksum": "b322b12944b9fb2848c6d75731f0b629" }, { "type": "image", @@ -8446,52 +8184,52 @@ { "type": "renderModule", "assetId": "-LDNJojbDZD", - "checksum": "8b2468d8bd3dfe90f473217b8575a31b" + "checksum": "8ed61eed286f7929e051d8a5fa53d7a2" }, { "type": "cssRules", "assetId": "-LDNJojbDZD", - "checksum": "8b2468d8bd3dfe90f473217b8575a31b" + "checksum": "8ed61eed286f7929e051d8a5fa53d7a2" }, { "type": "icon", "assetId": "ZTW8iKylgI", - "checksum": "2394bb81f491d5e9a9fa52f9cb3b359a" + "checksum": "62debb53936a66e739e37a6a64f72c2d" }, { "type": "icon", "assetId": "mPucsZbX6V", - "checksum": "c94cff976b3bf12a36766dd70195f648" + "checksum": "312a4a0beaf0c1926a8013b10d368bd3" }, { "type": "renderModule", "assetId": "-zGA-erYhCmv", - "checksum": "f16806754cf08e95cbc6472e86003971" + "checksum": "de3f29dc69496ca0f709d197deb8a10d" }, { "type": "cssRules", "assetId": "-zGA-erYhCmv", - "checksum": "f16806754cf08e95cbc6472e86003971" + "checksum": "de3f29dc69496ca0f709d197deb8a10d" }, { "type": "renderModule", "assetId": "MmbJYtYh-0Eh", - "checksum": "00903af5480d35f67ee7394473ab45d0" + "checksum": "542a3393b076e3c94a1f9f1ccd50e814" }, { "type": "cssRules", "assetId": "MmbJYtYh-0Eh", - "checksum": "00903af5480d35f67ee7394473ab45d0" + "checksum": "542a3393b076e3c94a1f9f1ccd50e814" }, { "type": "renderModule", "assetId": "pnV7KLVDUyoz", - "checksum": "83b1be1f3e60abc2735b12ae1060c732" + "checksum": "868575132878d56b1c4c7c9f042245c7" }, { "type": "cssRules", "assetId": "pnV7KLVDUyoz", - "checksum": "83b1be1f3e60abc2735b12ae1060c732" + "checksum": "868575132878d56b1c4c7c9f042245c7" }, { "assetId": "w2GXN278dkQ2gQTVQnPehW", @@ -8500,103 +8238,93 @@ }, { "assetId": "w2GXN278dkQ2gQTVQnPehW", - "checksum": "a7d43d161826d0f6749e503232c8e162", + "checksum": "29e7f951833b6db30ed50a4c74a69582", "type": "styleTokensProvider" }, - { - "type": "icon", - "assetId": "q7EuAkDIhNK0", - "checksum": "df15d3a65b6afc61c89155dcf19fde94" - }, - { - "type": "icon", - "assetId": "wG4t1pwzYNjU", - "checksum": "5e42fc95307c0459887075265b3af481" - }, { "type": "renderModule", "assetId": "Nuu-c5xv3Sku", - "checksum": "4a3993f0223965ed3c40b729228bfa4e" + "checksum": "cab032227376abb1edc3c3fb9edbace7" }, { "type": "cssRules", "assetId": "Nuu-c5xv3Sku", - "checksum": "4a3993f0223965ed3c40b729228bfa4e" + "checksum": "cab032227376abb1edc3c3fb9edbace7" }, { "type": "renderModule", "assetId": "_qAXa8aqLB77", - "checksum": "73cf62dd158d868fcc9728daa2770cf2" + "checksum": "4eab09d98edc99738c65f3eb14af7b97" }, { "type": "cssRules", "assetId": "_qAXa8aqLB77", - "checksum": "73cf62dd158d868fcc9728daa2770cf2" + "checksum": "4eab09d98edc99738c65f3eb14af7b97" }, { "type": "renderModule", "assetId": "6Cb3e8nRgrBg", - "checksum": "4794d3c4a4acc698a16f99d32064a8ee" + "checksum": "e4e3cb77cec517171ad33454a32d6122" }, { "type": "cssRules", "assetId": "6Cb3e8nRgrBg", - "checksum": "4794d3c4a4acc698a16f99d32064a8ee" + "checksum": "e4e3cb77cec517171ad33454a32d6122" }, { "type": "renderModule", "assetId": "zXJ41ZVTz7ne", - "checksum": "1f1cb80c1e03ba2fb7e196517dd30b5a" + "checksum": "49a014467a7dfa565c9afe459f05a755" }, { "type": "cssRules", "assetId": "zXJ41ZVTz7ne", - "checksum": "1f1cb80c1e03ba2fb7e196517dd30b5a" + "checksum": "49a014467a7dfa565c9afe459f05a755" }, { "type": "renderModule", "assetId": "Z4n6NebjkHpR", - "checksum": "29229d7a39fb9cb4b8f5fdcb9d8f1df5" + "checksum": "972026e852cbf62490bbafe39fcf242e" }, { "type": "cssRules", "assetId": "Z4n6NebjkHpR", - "checksum": "29229d7a39fb9cb4b8f5fdcb9d8f1df5" + "checksum": "972026e852cbf62490bbafe39fcf242e" }, { "type": "renderModule", "assetId": "cdd2zPdEWaRL", - "checksum": "9e216469a9305702388d4eaca8f8da7e" + "checksum": "c4b6738fbfc03a125868c318ce8a430c" }, { "type": "cssRules", "assetId": "cdd2zPdEWaRL", - "checksum": "9e216469a9305702388d4eaca8f8da7e" + "checksum": "c4b6738fbfc03a125868c318ce8a430c" }, { "type": "renderModule", "assetId": "1r7jyUeHxY8n", - "checksum": "ec07c419f747b700daa2c516b1972214" + "checksum": "c3c5b0665a9a74ac734e547966862570" }, { "type": "cssRules", "assetId": "1r7jyUeHxY8n", - "checksum": "ec07c419f747b700daa2c516b1972214" + "checksum": "c3c5b0665a9a74ac734e547966862570" }, { "type": "renderModule", "assetId": "Ht1M6qhEEAnx", - "checksum": "0b30ce5a26b8d1f1fde0f287feec26d0" + "checksum": "1d158256919561dc310ea9df4b409281" }, { "type": "cssRules", "assetId": "Ht1M6qhEEAnx", - "checksum": "0b30ce5a26b8d1f1fde0f287feec26d0" + "checksum": "1d158256919561dc310ea9df4b409281" }, { "assetId": "w2GXN278dkQ2gQTVQnPehW", "type": "projectCss", - "checksum": "5ca29081cf941a577267379782900313" + "checksum": "f375ce897531378d1dbf524387618320" } ], "codegenVersion": "0.0.3" @@ -8629,27 +8357,22 @@ { "type": "renderModule", "assetId": "-ZWJykIq5V-3F", - "checksum": "a3988445182d8d84dc926e1dcd9134f9" + "checksum": "f18774a93580807bb5e3133c01b403c4" }, { "type": "cssRules", "assetId": "-ZWJykIq5V-3F", - "checksum": "a3988445182d8d84dc926e1dcd9134f9" + "checksum": "f18774a93580807bb5e3133c01b403c4" }, { "type": "renderModule", "assetId": "6ODOBecfUs5", - "checksum": "46956e5bb6b29b0d01d6bad85618b1c7" + "checksum": "20127b8ff3dc787d5cb87b9612e8da5c" }, { "type": "cssRules", "assetId": "6ODOBecfUs5", - "checksum": "46956e5bb6b29b0d01d6bad85618b1c7" - }, - { - "assetId": "783YKJdyRRPxZbx3qiNi5Q", - "type": "projectCss", - "checksum": "dcf8e3b892249a739d254358767b22e7" + "checksum": "20127b8ff3dc787d5cb87b9612e8da5c" }, { "assetId": "783YKJdyRRPxZbx3qiNi5Q", @@ -8658,8 +8381,13 @@ }, { "assetId": "783YKJdyRRPxZbx3qiNi5Q", - "checksum": "e3748ef0252bb2c16e8761e45938ef0b", + "checksum": "119588f33b5ff0b52c4831fb3f908367", "type": "styleTokensProvider" + }, + { + "assetId": "783YKJdyRRPxZbx3qiNi5Q", + "type": "projectCss", + "checksum": "fc3e12cdcdc43e00d165c9278257b765" } ], "codegenVersion": "0.0.3" @@ -8678,115 +8406,125 @@ { "type": "globalVariant", "assetId": "FEwtgyZeZWHon", - "checksum": "d23fd601ad183dc61470bb065f0e9395" + "checksum": "2a7e1f26009299b20d622099863ddeb8" }, { "type": "renderModule", "assetId": "RrG72JEyZOXn", - "checksum": "54dc67bc6a2cd8cd211921dd4e7441d9" + "checksum": "c24d75bb289291caafa4ecd645e450cd" }, { "type": "cssRules", "assetId": "RrG72JEyZOXn", - "checksum": "54dc67bc6a2cd8cd211921dd4e7441d9" + "checksum": "c24d75bb289291caafa4ecd645e450cd" }, { "type": "renderModule", "assetId": "U5oM6fe0OlY", - "checksum": "f44e3a5fbb20ccbb515b3517bfc6faf2" + "checksum": "ad70466b831a79e4d82c95a2ddd92998" }, { "type": "cssRules", "assetId": "U5oM6fe0OlY", - "checksum": "f44e3a5fbb20ccbb515b3517bfc6faf2" + "checksum": "ad70466b831a79e4d82c95a2ddd92998" }, { "type": "renderModule", "assetId": "Dza4MqGNx4p", - "checksum": "fea574b2356f878a77a22cd32c05f20a" + "checksum": "b7a34efc10621f989b3c86d9077e902d" }, { "type": "cssRules", "assetId": "Dza4MqGNx4p", - "checksum": "fea574b2356f878a77a22cd32c05f20a" + "checksum": "b7a34efc10621f989b3c86d9077e902d" }, { "type": "renderModule", "assetId": "vSQc3cNg5Q", - "checksum": "5780f40c27d41cffaf878812a99d7a3a" + "checksum": "86ebe7b611bf754695632a764e7814a8" }, { "type": "cssRules", "assetId": "vSQc3cNg5Q", - "checksum": "5780f40c27d41cffaf878812a99d7a3a" + "checksum": "86ebe7b611bf754695632a764e7814a8" }, { "type": "renderModule", "assetId": "lpGYGncEBV", - "checksum": "b0b2df5bb11ab831040611127790b794" + "checksum": "0e87dc8ef6064de10072936dc5beb082" }, { "type": "cssRules", "assetId": "lpGYGncEBV", - "checksum": "b0b2df5bb11ab831040611127790b794" + "checksum": "0e87dc8ef6064de10072936dc5beb082" }, { "type": "renderModule", "assetId": "bQ74QBVIbHI", - "checksum": "5fa49489c5dc6486a3fd0ea719be1c32" + "checksum": "b5fa83dcf86802df3aeaad9b1fe8f3fa" }, { "type": "cssRules", "assetId": "bQ74QBVIbHI", - "checksum": "5fa49489c5dc6486a3fd0ea719be1c32" + "checksum": "b5fa83dcf86802df3aeaad9b1fe8f3fa" }, { "type": "renderModule", "assetId": "0bODOMCtGi", - "checksum": "92bb24700392355b5b9846a78f7b9a76" + "checksum": "f3746be66a33e0f7da66f5166ceb2d2f" }, { "type": "cssRules", "assetId": "0bODOMCtGi", - "checksum": "92bb24700392355b5b9846a78f7b9a76" + "checksum": "f3746be66a33e0f7da66f5166ceb2d2f" }, { "type": "renderModule", "assetId": "yvny0cDy_e", - "checksum": "86416ad073b1f034dfc5c44919c5227b" + "checksum": "4acae88bcc94e2b8279ef9586c2b9f2c" }, { "type": "cssRules", "assetId": "yvny0cDy_e", - "checksum": "86416ad073b1f034dfc5c44919c5227b" + "checksum": "4acae88bcc94e2b8279ef9586c2b9f2c" }, { "type": "renderModule", "assetId": "Jt0CZzY1xy", - "checksum": "4d273586800493634fee89770ccfb77f" + "checksum": "dd625dd23d90ebf473ef10d24c685edf" }, { "type": "cssRules", "assetId": "Jt0CZzY1xy", - "checksum": "4d273586800493634fee89770ccfb77f" + "checksum": "dd625dd23d90ebf473ef10d24c685edf" }, { "type": "renderModule", "assetId": "wQH36LoqQL", - "checksum": "a6eb3c37dc8345638dd9dff340efe377" + "checksum": "0fd02839b209debe1565e85fb21a29a5" }, { "type": "cssRules", "assetId": "wQH36LoqQL", - "checksum": "a6eb3c37dc8345638dd9dff340efe377" + "checksum": "0fd02839b209debe1565e85fb21a29a5" }, { "assetId": "cQnF1HuwK97HkvkrC6uRk2", "type": "projectCss", - "checksum": "489b30f714df29f1ca2b998eeb5328e4" + "checksum": "5a2dec4d9a521c33a641033684238e85" + }, + { + "assetId": "cQnF1HuwK97HkvkrC6uRk2", + "checksum": "5298b5c76c6972098598c2224c9ef952", + "type": "projectModule" + }, + { + "assetId": "cQnF1HuwK97HkvkrC6uRk2", + "checksum": "c311d5843e135cec8e7f8747d6b0d337", + "type": "styleTokensProvider" } ], - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "projectId": "p8FkKgCnyuat1kHSEYAKfW", @@ -8801,97 +8539,97 @@ { "type": "globalVariant", "assetId": "33bo6t6aaBqtV", - "checksum": "da04f4fde487484967e00d99f3bee4bf" + "checksum": "1ae9f911ad913053727da498d075af06" }, { "type": "renderModule", "assetId": "A4VINgKjc8", - "checksum": "61ff6613a190638a301515c081adf44f" + "checksum": "97550b82446fe3f9f9e7187ae7e3a2a3" }, { "type": "cssRules", "assetId": "A4VINgKjc8", - "checksum": "61ff6613a190638a301515c081adf44f" + "checksum": "97550b82446fe3f9f9e7187ae7e3a2a3" }, { "type": "renderModule", "assetId": "LCAZOUPfDDB", - "checksum": "63ab1a1f4d2fce4d4d93fb5b512e9e3d" + "checksum": "a08b1085a1231754127950103e157779" }, { "type": "cssRules", "assetId": "LCAZOUPfDDB", - "checksum": "63ab1a1f4d2fce4d4d93fb5b512e9e3d" + "checksum": "a08b1085a1231754127950103e157779" }, { "type": "renderModule", "assetId": "VgvN9iOqwZ", - "checksum": "96769f372b1ae03964faccbc11c6db60" + "checksum": "2045e49ec6c765632e4fcaa57cce1063" }, { "type": "cssRules", "assetId": "VgvN9iOqwZ", - "checksum": "96769f372b1ae03964faccbc11c6db60" + "checksum": "2045e49ec6c765632e4fcaa57cce1063" }, { "type": "renderModule", "assetId": "RM-Ya_c-mv", - "checksum": "70952bd9e6ad34a2895a1190045c0215" + "checksum": "18a897d950b0bbe83214686cf7798d9a" }, { "type": "cssRules", "assetId": "RM-Ya_c-mv", - "checksum": "70952bd9e6ad34a2895a1190045c0215" + "checksum": "18a897d950b0bbe83214686cf7798d9a" }, { "type": "icon", "assetId": "9_qXsh2_0", - "checksum": "c75afff2981a49e486f20547b9cfc3dd" + "checksum": "d5cb7777f6af787f2e540ddc1533c74a" }, { "type": "icon", "assetId": "eV4_yyuiy3", - "checksum": "b12b7ac2a7b9d5fc9314ac568887d4a9" + "checksum": "53c232c3118b670908434a892e55c893" }, { "type": "icon", "assetId": "YCOFZmA9Gr", - "checksum": "ed38f88e046468473fe90d8a75bcf57e" + "checksum": "2ff2016df9176142ebdff20fa6aefc77" }, { "type": "icon", "assetId": "b32FQsRIZF", - "checksum": "45bfb31ec3eb4ec4d911c411f1d4f8f8" + "checksum": "245f3a56f8c867c3caa3838b3d0e6cda" }, { "type": "icon", "assetId": "eHz6SkjEXN", - "checksum": "f4bcf04c65333c9892a7320cd75cdcb9" + "checksum": "b5b5708f8437b78b5e0e4ff493f30e96" }, { "type": "icon", "assetId": "TopFn49DCw", - "checksum": "819a4b0f52432ae383b5c878c7e7e114" + "checksum": "471e5acfd2046dbc9d6a4590103023fa" }, { "type": "icon", "assetId": "e1jr2JBmRV", - "checksum": "058ec3160ab3b27b4060982bc4d34122" + "checksum": "ceee4c87f8e1db059369436ebf7947b3" }, { "type": "icon", "assetId": "nO4zRkdymv", - "checksum": "b65e87f7e8ff7333b231ab37f3be4f29" + "checksum": "af43aeab161eaf8d00ab7ed144fc06f0" }, { "type": "icon", "assetId": "GwYW58XSMS", - "checksum": "4e08bea45d4486298cee4f52b273f363" + "checksum": "e7385867e5e042d96da969c2790c458c" }, { "type": "icon", "assetId": "gTDWgpkqvL", - "checksum": "96176106a756abc87669b78c64ac1bf7" + "checksum": "e3f67fb26823e9a1e7046e6729be0986" }, { "type": "image", @@ -8911,165 +8649,191 @@ { "type": "renderModule", "assetId": "AJepyKzS-T-", - "checksum": "b0ff04cb4fc042c0718a237739b64c06" + "checksum": "e72a205dcf2431c0307624e352119696" }, { "type": "cssRules", "assetId": "AJepyKzS-T-", - "checksum": "b0ff04cb4fc042c0718a237739b64c06" + "checksum": "e72a205dcf2431c0307624e352119696" }, { "type": "renderModule", "assetId": "o4Oidp6CzFL", - "checksum": "6352da3f13df747ac41991aacca22b7f" + "checksum": "07542f1ab0cbb7caa230ed56c49c9a54" }, { "type": "cssRules", "assetId": "o4Oidp6CzFL", - "checksum": "6352da3f13df747ac41991aacca22b7f" + "checksum": "07542f1ab0cbb7caa230ed56c49c9a54" }, { "assetId": "p8FkKgCnyuat1kHSEYAKfW", "type": "projectCss", - "checksum": "b35e2be1db14b81b90b7aa469055085e" + "checksum": "388c175b4e20d3806341c954aef35ff6" + }, + { + "assetId": "p8FkKgCnyuat1kHSEYAKfW", + "checksum": "975d8a0d7554ba127ad537e98f6648cf", + "type": "projectModule" + }, + { + "assetId": "p8FkKgCnyuat1kHSEYAKfW", + "checksum": "cf376bd8507df63378808d081045f634", + "type": "styleTokensProvider" } ], - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "projectId": "caTPwKxj5ZrD9LQ7DMdK4Z", - "version": "3.36.0", + "version": "3.48.0", "dependencies": {}, "lang": "ts", "fileLocks": [ { "assetId": "caTPwKxj5ZrD9LQ7DMdK4Z", "type": "projectCss", - "checksum": "e1ec850476829c38b0f9b6d4f7ac446a" + "checksum": "4f8841e79ae881df48a2bc700591a97f" + }, + { + "assetId": "caTPwKxj5ZrD9LQ7DMdK4Z", + "checksum": "5f8b503a54d81c7ee5a80fe9a5b1455f", + "type": "projectModule" + }, + { + "assetId": "caTPwKxj5ZrD9LQ7DMdK4Z", + "checksum": "198c302de4b3f17eb10400af2731f931", + "type": "styleTokensProvider" } ], - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "projectId": "eyjDfHaWPk4awNJAqhg4Cb", "version": "latest", "dependencies": { - "caTPwKxj5ZrD9LQ7DMdK4Z": "3.6.0", - "95xp9cYcv7HrNWpFWWhbcv": "2.2.6", - "tXkSR39sgCDWSitZxC5xFV": "76.4.2", - "oT38tGyqov9SPWHpf3Y2Rf": "4.9.0", - "sDniSX4oPUZFyk2sXXb3nh": "6.0.1" + "caTPwKxj5ZrD9LQ7DMdK4Z": "3.49.0", + "95xp9cYcv7HrNWpFWWhbcv": "2.3.0", + "tXkSR39sgCDWSitZxC5xFV": "92.0.1", + "oT38tGyqov9SPWHpf3Y2Rf": "7.0.1", + "sDniSX4oPUZFyk2sXXb3nh": "6.1.1", + "gmeH6XgPaBtkt51HunAo4g": "18.32.0" }, "lang": "ts", "fileLocks": [ { "type": "renderModule", "assetId": "MgtZV0FX0Q", - "checksum": "0339ef9947e2b7082a68fce2366d29c2" + "checksum": "bf7e7841c6b6883d47cb85d848727e06" }, { "type": "cssRules", "assetId": "MgtZV0FX0Q", - "checksum": "0339ef9947e2b7082a68fce2366d29c2" + "checksum": "bf7e7841c6b6883d47cb85d848727e06" }, { "type": "renderModule", "assetId": "6bdpsCyN1H", - "checksum": "3ec81f1308b6f23e3a0e4c554a199cae" + "checksum": "74af2c0e03c9110e98951078d3f6a466" }, { "type": "cssRules", "assetId": "6bdpsCyN1H", - "checksum": "3ec81f1308b6f23e3a0e4c554a199cae" + "checksum": "74af2c0e03c9110e98951078d3f6a466" }, { "type": "renderModule", "assetId": "JH5l4wUr73", - "checksum": "dff90344c10a2a1ad4d0333c3e1cd4cc" + "checksum": "24af5d83e9417bbf22698a58cbf37d5b" }, { "type": "cssRules", "assetId": "JH5l4wUr73", - "checksum": "dff90344c10a2a1ad4d0333c3e1cd4cc" + "checksum": "24af5d83e9417bbf22698a58cbf37d5b" }, { "type": "icon", "assetId": "ja_S8_o1BB", - "checksum": "952176375349281244dae1cdb3c4f815" + "checksum": "3121cc3ccdeb2fb97b810daac44e721c" + }, + { + "assetId": "eyjDfHaWPk4awNJAqhg4Cb", + "checksum": "d91abe54a4607ab640453cf3d6dadca6", + "type": "projectModule" + }, + { + "assetId": "eyjDfHaWPk4awNJAqhg4Cb", + "checksum": "6eb06a63538d7cf1ef461e28f92d9112", + "type": "styleTokensProvider" }, { "assetId": "eyjDfHaWPk4awNJAqhg4Cb", "type": "projectCss", - "checksum": "842689ef6f7fb6db10c236d553078b3a" + "checksum": "a6c4bef1ba831c57f8db438c4680cf09" } ], - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "projectId": "BP7V3EkXPURJVwwMyWoHn", "version": "latest", "dependencies": { - "tXkSR39sgCDWSitZxC5xFV": "91.5.0", - "oT38tGyqov9SPWHpf3Y2Rf": "6.0.0", + "tXkSR39sgCDWSitZxC5xFV": "99.1.0", + "oT38tGyqov9SPWHpf3Y2Rf": "7.0.1", "95xp9cYcv7HrNWpFWWhbcv": "2.3.0", - "gmeH6XgPaBtkt51HunAo4g": "18.29.0" + "gmeH6XgPaBtkt51HunAo4g": "18.32.0" }, "lang": "ts", "fileLocks": [ - { - "type": "globalVariant", - "assetId": "36nw8KCcgswV1", - "checksum": "a31f15ec3f9c4dd412de662192200b54" - }, { "type": "renderModule", "assetId": "bV6LLO0B3Y", - "checksum": "6e28b525dbfa17950dca15070065e092" + "checksum": "b62a4ec5d05a7f4a0c5b306afd845ff8" }, { "type": "cssRules", "assetId": "bV6LLO0B3Y", - "checksum": "6e28b525dbfa17950dca15070065e092" + "checksum": "b62a4ec5d05a7f4a0c5b306afd845ff8" }, { "type": "renderModule", "assetId": "l_AKXl2AAu", - "checksum": "3ba57b24d83b942b0f727f902257daad" + "checksum": "fa45813f3135a8eb5b65f181983d1121" }, { "type": "cssRules", "assetId": "l_AKXl2AAu", - "checksum": "3ba57b24d83b942b0f727f902257daad" + "checksum": "fa45813f3135a8eb5b65f181983d1121" }, { "type": "renderModule", "assetId": "qi3Y1X2qZ7", - "checksum": "d226e85ab87febb3ef89f8dd95631f4c" + "checksum": "c70a0c3377fc51b480a05c9fd622b00d" }, { "type": "cssRules", "assetId": "qi3Y1X2qZ7", - "checksum": "d226e85ab87febb3ef89f8dd95631f4c" + "checksum": "c70a0c3377fc51b480a05c9fd622b00d" }, { "type": "renderModule", "assetId": "QY53tkpvLv", - "checksum": "d2f86db34e7fb962e83e2f654266b018" + "checksum": "7d9066929dfa7fda3e1264d179f4c3df" }, { "type": "cssRules", "assetId": "QY53tkpvLv", - "checksum": "d2f86db34e7fb962e83e2f654266b018" + "checksum": "7d9066929dfa7fda3e1264d179f4c3df" }, { "type": "renderModule", "assetId": "FOzDmFDbWm", - "checksum": "97547fb392975a0db8229f3c562b4e1b" + "checksum": "66cfe391a476518e186b159b248749c3" }, { "type": "cssRules", "assetId": "FOzDmFDbWm", - "checksum": "97547fb392975a0db8229f3c562b4e1b" + "checksum": "66cfe391a476518e186b159b248749c3" }, { "type": "image", @@ -9094,22 +8858,22 @@ { "type": "renderModule", "assetId": "pTr2lSrGWq8O", - "checksum": "88840e3f2dcf01e422a0e9519f2b4f62" + "checksum": "dae3372fdd7f696f55bd32e98aa93f3a" }, { "type": "cssRules", "assetId": "pTr2lSrGWq8O", - "checksum": "88840e3f2dcf01e422a0e9519f2b4f62" + "checksum": "dae3372fdd7f696f55bd32e98aa93f3a" }, { "type": "renderModule", "assetId": "T7mVQBFEWA-V", - "checksum": "0f9b0a839ceac5f33d3911c69e6ee185" + "checksum": "d34dc7a40f359d96b2bf14101f5fb729" }, { "type": "cssRules", "assetId": "T7mVQBFEWA-V", - "checksum": "0f9b0a839ceac5f33d3911c69e6ee185" + "checksum": "d34dc7a40f359d96b2bf14101f5fb729" }, { "type": "icon", @@ -9119,110 +8883,110 @@ { "type": "renderModule", "assetId": "b0TlBn4m87ta", - "checksum": "d55e538d57469e38c4256b4f96df2216" + "checksum": "7c36bb75c02ab28d2987ba0a2a605db0" }, { "type": "cssRules", "assetId": "b0TlBn4m87ta", - "checksum": "d55e538d57469e38c4256b4f96df2216" + "checksum": "7c36bb75c02ab28d2987ba0a2a605db0" }, { "type": "renderModule", "assetId": "hxUVoCIPsT_h", - "checksum": "3d88eeb1a256a10331489d8f4677e033" + "checksum": "fe61aec0ed8d5ad49fd865695b0a786a" }, { "type": "cssRules", "assetId": "hxUVoCIPsT_h", - "checksum": "3d88eeb1a256a10331489d8f4677e033" + "checksum": "fe61aec0ed8d5ad49fd865695b0a786a" }, { "type": "renderModule", "assetId": "tccr1SFVw_AY", - "checksum": "e6c260e34899cd3d4c4db02df5fe724d" + "checksum": "2ee91167513b94cbd2ced2ee62dcc500" }, { "type": "cssRules", "assetId": "tccr1SFVw_AY", - "checksum": "e6c260e34899cd3d4c4db02df5fe724d" + "checksum": "2ee91167513b94cbd2ced2ee62dcc500" }, { "type": "renderModule", "assetId": "UhTNVxujj1gR", - "checksum": "e16942acd1d4f09c0ebaa8b492433a9c" + "checksum": "fd7d37c72b66cf2c4e46e6c290f625b6" }, { "type": "cssRules", "assetId": "UhTNVxujj1gR", - "checksum": "e16942acd1d4f09c0ebaa8b492433a9c" + "checksum": "fd7d37c72b66cf2c4e46e6c290f625b6" }, { "type": "renderModule", "assetId": "bGnXEIS7pS-Y", - "checksum": "36e5cf78e8f2b1ffcfde62dd33f91304" + "checksum": "ed27a3c2f83ea576e86b5db561f90b78" }, { "type": "cssRules", "assetId": "bGnXEIS7pS-Y", - "checksum": "36e5cf78e8f2b1ffcfde62dd33f91304" + "checksum": "ed27a3c2f83ea576e86b5db561f90b78" }, { "type": "renderModule", "assetId": "qiIt-rIFSO0f", - "checksum": "cb3309a45c3d28c382d3eb5ae63c1c23" + "checksum": "00480f6aef4bb2f9390ba4b8e161c8f5" }, { "type": "cssRules", "assetId": "qiIt-rIFSO0f", - "checksum": "cb3309a45c3d28c382d3eb5ae63c1c23" + "checksum": "00480f6aef4bb2f9390ba4b8e161c8f5" }, { "type": "renderModule", "assetId": "E0P_lFzVr70L", - "checksum": "20628c4ce73f5bf0cf4d3c398c323910" + "checksum": "46c58f74147eb6920ec21faea490bc88" }, { "type": "cssRules", "assetId": "E0P_lFzVr70L", - "checksum": "20628c4ce73f5bf0cf4d3c398c323910" + "checksum": "46c58f74147eb6920ec21faea490bc88" }, { "type": "renderModule", "assetId": "PTsdlYdahZ76", - "checksum": "1f79fe8207c6764faff5a041774115ea" + "checksum": "bdf51286323f05ca465e0d1a5fa5cdba" }, { "type": "cssRules", "assetId": "PTsdlYdahZ76", - "checksum": "1f79fe8207c6764faff5a041774115ea" + "checksum": "bdf51286323f05ca465e0d1a5fa5cdba" }, { "type": "renderModule", "assetId": "nObxvgrqmfvo", - "checksum": "05e6a18397ec908233f7a78ac9fb2cc9" + "checksum": "2cb6e4e85b01cf0c481b5407b7cb4b9a" }, { "type": "cssRules", "assetId": "nObxvgrqmfvo", - "checksum": "05e6a18397ec908233f7a78ac9fb2cc9" + "checksum": "2cb6e4e85b01cf0c481b5407b7cb4b9a" }, { "assetId": "BP7V3EkXPURJVwwMyWoHn", - "checksum": "4b9088d1925237782c8a018f39265ee9", + "checksum": "a665281648260531587e157bb12b6774", "type": "projectModule" }, { "assetId": "BP7V3EkXPURJVwwMyWoHn", - "checksum": "4b97af949c8990dc24d25071eecaac84", + "checksum": "4a3724028ebf257052c5d4b13e509d58", "type": "styleTokensProvider" }, { "assetId": "BP7V3EkXPURJVwwMyWoHn", "type": "projectCss", - "checksum": "7adc06dea0b8fb7603bffc8166861a8f" + "checksum": "867e1533a257bf9fc822bb6dc9b1ad53" } ], - "codegenVersion": "0.0.2" + "codegenVersion": "0.0.3" }, { "projectId": "4B48dRthR8uGgyaBYpWthR", @@ -9237,125 +9001,135 @@ { "type": "renderModule", "assetId": "OwugJe7uVc", - "checksum": "e195d659b2482245284de8879bf9ad3b" + "checksum": "4cc7ef9bb481b05f536cc4099ec3d8e0" }, { "type": "cssRules", "assetId": "OwugJe7uVc", - "checksum": "e195d659b2482245284de8879bf9ad3b" + "checksum": "4cc7ef9bb481b05f536cc4099ec3d8e0" }, { "type": "renderModule", "assetId": "iSztBTxncH", - "checksum": "27a3dac942e146efc9ce1961500ad129" + "checksum": "f41b5d15535188f25b4e926a2066bd2a" }, { "type": "cssRules", "assetId": "iSztBTxncH", - "checksum": "27a3dac942e146efc9ce1961500ad129" + "checksum": "f41b5d15535188f25b4e926a2066bd2a" }, { "type": "renderModule", "assetId": "GU-Aj02J2m", - "checksum": "be9b8cd82b9c44e545c725fba6c1c180" + "checksum": "dbb264f3014951168f08754503c8a5ac" }, { "type": "cssRules", "assetId": "GU-Aj02J2m", - "checksum": "be9b8cd82b9c44e545c725fba6c1c180" + "checksum": "dbb264f3014951168f08754503c8a5ac" }, { "type": "renderModule", "assetId": "Uq14j_W-86", - "checksum": "8fcf3698575d7f36958402fae78a9462" + "checksum": "82c189bc0571e9bd1980ac987d3bcaca" }, { "type": "cssRules", "assetId": "Uq14j_W-86", - "checksum": "8fcf3698575d7f36958402fae78a9462" + "checksum": "82c189bc0571e9bd1980ac987d3bcaca" }, { "type": "renderModule", "assetId": "qqXViGcFWb", - "checksum": "1b9e106294d4d5dab6ebd2e114955d48" + "checksum": "db24b06b69ff62245535be36c34de9b3" }, { "type": "cssRules", "assetId": "qqXViGcFWb", - "checksum": "1b9e106294d4d5dab6ebd2e114955d48" + "checksum": "db24b06b69ff62245535be36c34de9b3" }, { "type": "renderModule", "assetId": "3Ao1xbz5MD", - "checksum": "a3a29be33133203c3657a169faeaa299" + "checksum": "8d137b2a477ad0a75b9a83fcbc4f8033" }, { "type": "cssRules", "assetId": "3Ao1xbz5MD", - "checksum": "a3a29be33133203c3657a169faeaa299" + "checksum": "8d137b2a477ad0a75b9a83fcbc4f8033" }, { "type": "renderModule", "assetId": "9mduXtTTjQe", - "checksum": "357febd27a4cc6aef35b2002da2ed465" + "checksum": "0e5d940f423ab71100feb2ba40c467f4" }, { "type": "cssRules", "assetId": "9mduXtTTjQe", - "checksum": "357febd27a4cc6aef35b2002da2ed465" + "checksum": "0e5d940f423ab71100feb2ba40c467f4" }, { "type": "renderModule", "assetId": "BjPuqtCg-H", - "checksum": "9400962583d5b763c088bef78e642ec6" + "checksum": "0906ebaad9fba66f2dfa1a7bbc2a0464" }, { "type": "cssRules", "assetId": "BjPuqtCg-H", - "checksum": "9400962583d5b763c088bef78e642ec6" + "checksum": "0906ebaad9fba66f2dfa1a7bbc2a0464" }, { "type": "renderModule", "assetId": "ae4tx4K7hb", - "checksum": "6b9525c2e223a0fddfac87f5df3fca5a" + "checksum": "73c6810b59ee9bd0f88931e1bf5a0050" }, { "type": "cssRules", "assetId": "ae4tx4K7hb", - "checksum": "6b9525c2e223a0fddfac87f5df3fca5a" + "checksum": "73c6810b59ee9bd0f88931e1bf5a0050" }, { "type": "icon", "assetId": "wbxAqhnU_B", - "checksum": "de95f7364a94a2e543ea768776f1091f" + "checksum": "a2124bd35f052a2e5d67dbbcc8f5bb9c" }, { "type": "icon", "assetId": "aOGHT_bTEBZ", - "checksum": "3849c09e737f84beed3e073e4f3ea499" + "checksum": "58d592cef7708b694a831c236ddb558d" }, { "type": "icon", "assetId": "JoQXtyo-2FA", - "checksum": "22cbf46c75f5ef6f2e270eb85aaa5fde" + "checksum": "9ec685d7bb4936ca4da374c42ed34670" }, { "type": "renderModule", "assetId": "bulTqUMaa2", - "checksum": "d4a2f8c0b9050f5234ff3df49d8f8d25" + "checksum": "067d4b033f12aacfe64633e5e4ef8946" }, { "type": "cssRules", "assetId": "bulTqUMaa2", - "checksum": "d4a2f8c0b9050f5234ff3df49d8f8d25" + "checksum": "067d4b033f12aacfe64633e5e4ef8946" }, { "assetId": "4B48dRthR8uGgyaBYpWthR", "type": "projectCss", - "checksum": "e3a14fe01bb5b8117bbec75df35525d4" + "checksum": "fe2322e72402e85782da56d0f767eabb" + }, + { + "assetId": "4B48dRthR8uGgyaBYpWthR", + "checksum": "1321d44a9db4b8002f072957d584bcaa", + "type": "projectModule" + }, + { + "assetId": "4B48dRthR8uGgyaBYpWthR", + "checksum": "66b456a5cf4b929468a3c17c9c626ef5", + "type": "styleTokensProvider" } ], - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "projectId": "frhoorZk3bxNXU73uUyvHm", @@ -9365,147 +9139,157 @@ "95xp9cYcv7HrNWpFWWhbcv": "2.2.6", "oT38tGyqov9SPWHpf3Y2Rf": "5.3.0", "gYEVvAzCcLMHDVPvuYxkFh": "22.2.2", - "8PtdGodUbexNYgkuyBUcWu": "3.22.0" + "8PtdGodUbexNYgkuyBUcWu": "3.34.0" }, "lang": "ts", "fileLocks": [ { "type": "globalVariant", "assetId": "DJ0PzuYE_I5xyS", - "checksum": "720d43ff07aa3f36901da0d2dca46360" + "checksum": "60fd71b5b257314d7d415f9d13046a3c" }, { "type": "renderModule", "assetId": "S0KtszELh-", - "checksum": "f86aebd200c35a6678985b694f802e46" + "checksum": "7e9046bf3008f3738b13c8f10b2ab857" }, { "type": "cssRules", "assetId": "S0KtszELh-", - "checksum": "f86aebd200c35a6678985b694f802e46" + "checksum": "7e9046bf3008f3738b13c8f10b2ab857" }, { "type": "renderModule", "assetId": "_uEitkIFZr", - "checksum": "93e947249ab5029662058fb09df9fa4d" + "checksum": "ef0f0f180e61caa36cd4536e3963a561" }, { "type": "cssRules", "assetId": "_uEitkIFZr", - "checksum": "93e947249ab5029662058fb09df9fa4d" + "checksum": "ef0f0f180e61caa36cd4536e3963a561" }, { "type": "renderModule", "assetId": "VYbagtLCKV", - "checksum": "e5e77bd2385b2c91b1e450ddcbfcd53f" + "checksum": "b5048fa4223f8fa5a46c3ef3766c46aa" }, { "type": "cssRules", "assetId": "VYbagtLCKV", - "checksum": "e5e77bd2385b2c91b1e450ddcbfcd53f" + "checksum": "b5048fa4223f8fa5a46c3ef3766c46aa" }, { "type": "renderModule", "assetId": "YP664uas0Q", - "checksum": "f8406b0f0556960f4ce12bf4ec0b410a" + "checksum": "a1fde2060d13d6e4e3484135e7eb9180" }, { "type": "cssRules", "assetId": "YP664uas0Q", - "checksum": "f8406b0f0556960f4ce12bf4ec0b410a" + "checksum": "a1fde2060d13d6e4e3484135e7eb9180" }, { "type": "renderModule", "assetId": "EmZVqVuGE1", - "checksum": "3bf251be5c50589f6a65febbe630daa9" + "checksum": "2d48e962917198ce9aad04c8016d10ac" }, { "type": "cssRules", "assetId": "EmZVqVuGE1", - "checksum": "3bf251be5c50589f6a65febbe630daa9" + "checksum": "2d48e962917198ce9aad04c8016d10ac" }, { "type": "renderModule", "assetId": "Coj9xtPv-Oc", - "checksum": "1de3eed60ac04144a07981af8d29bd9a" + "checksum": "7a1896245ddac1a41c37b14d410a8b96" }, { "type": "cssRules", "assetId": "Coj9xtPv-Oc", - "checksum": "1de3eed60ac04144a07981af8d29bd9a" + "checksum": "7a1896245ddac1a41c37b14d410a8b96" }, { "type": "renderModule", "assetId": "2_3UTUe0CF", - "checksum": "c2de69e7f8bfc7d8b063ef4a97847a8d" + "checksum": "e175038d4be01b59a5b0d52ec6185d6b" }, { "type": "cssRules", "assetId": "2_3UTUe0CF", - "checksum": "c2de69e7f8bfc7d8b063ef4a97847a8d" + "checksum": "e175038d4be01b59a5b0d52ec6185d6b" }, { "type": "renderModule", "assetId": "sHz-uchOcJ", - "checksum": "e59d4d8880c85ce6bcca4dde83c20c90" + "checksum": "4bc783972a5610b63daa70dc703ff130" }, { "type": "cssRules", "assetId": "sHz-uchOcJ", - "checksum": "e59d4d8880c85ce6bcca4dde83c20c90" + "checksum": "4bc783972a5610b63daa70dc703ff130" }, { "type": "renderModule", "assetId": "jiD9NQWVHe", - "checksum": "a5419157a2accb9747c1857ae49d2ff7" + "checksum": "9d439973d70ebbe618ddae091e5a3ec9" }, { "type": "cssRules", "assetId": "jiD9NQWVHe", - "checksum": "a5419157a2accb9747c1857ae49d2ff7" + "checksum": "9d439973d70ebbe618ddae091e5a3ec9" }, { "type": "renderModule", "assetId": "s6ZC9dnvK9A", - "checksum": "11901865083ec6b2bd7270f09b6faf65" + "checksum": "2fa916fbd37e1814624782d48e74d6a6" }, { "type": "cssRules", "assetId": "s6ZC9dnvK9A", - "checksum": "11901865083ec6b2bd7270f09b6faf65" + "checksum": "2fa916fbd37e1814624782d48e74d6a6" }, { "type": "renderModule", "assetId": "3OCMg2P28Q", - "checksum": "a2ac86ab20adc31a18a85204be12a746" + "checksum": "fb1ca1bddfd1e11e54c50da0588280cb" }, { "type": "cssRules", "assetId": "3OCMg2P28Q", - "checksum": "a2ac86ab20adc31a18a85204be12a746" + "checksum": "fb1ca1bddfd1e11e54c50da0588280cb" }, { "type": "renderModule", "assetId": "RzN6mQN5_D", - "checksum": "b0f5744f9af33dfce2f368bd98151d20" + "checksum": "b27035c8b29525f1c4f5c32e48fa4a6f" }, { "type": "cssRules", "assetId": "RzN6mQN5_D", - "checksum": "b0f5744f9af33dfce2f368bd98151d20" + "checksum": "b27035c8b29525f1c4f5c32e48fa4a6f" }, { "assetId": "frhoorZk3bxNXU73uUyvHm", - "checksum": "552b0357002641c293d5ed82454c5207", + "checksum": "a1780e1bb625a8766ca5883dfbc72ee6", "type": "globalContexts" }, + { + "assetId": "frhoorZk3bxNXU73uUyvHm", + "checksum": "a4c980bb4954047b40e6fd5137e3ea4e", + "type": "projectModule" + }, + { + "assetId": "frhoorZk3bxNXU73uUyvHm", + "checksum": "074908a0b37d9be8d2e15411356d96dc", + "type": "styleTokensProvider" + }, { "assetId": "frhoorZk3bxNXU73uUyvHm", "type": "projectCss", - "checksum": "3f42af4f2419971c4fc5fdf52785735a" + "checksum": "c336947a5aff335f130264daeaa7ebc4" } ], - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "projectId": "fuzE93KTc4ZKNBYf3LAfy", @@ -9519,73 +9303,83 @@ { "type": "globalVariant", "assetId": "IyzVSfo1whzCb", - "checksum": "abf76053e948342687b2f0a8a56442c3" + "checksum": "a60d74d3b3611f1cdb2d4780ff9b24ad" }, { "type": "renderModule", "assetId": "iKmOjRERju", - "checksum": "1d3a9431420220d2054de0e46ae5dd09" + "checksum": "da9af1b67da8c21446727fd1b7fc3ded" }, { "type": "cssRules", "assetId": "iKmOjRERju", - "checksum": "1d3a9431420220d2054de0e46ae5dd09" + "checksum": "da9af1b67da8c21446727fd1b7fc3ded" }, { "type": "renderModule", "assetId": "AITkGvBysG", - "checksum": "bcfb9dc5167b8644086356c1aa9fea79" + "checksum": "ccc1dbe7a169ebbe9057e12b2cdca495" }, { "type": "cssRules", "assetId": "AITkGvBysG", - "checksum": "bcfb9dc5167b8644086356c1aa9fea79" + "checksum": "ccc1dbe7a169ebbe9057e12b2cdca495" }, { "type": "renderModule", "assetId": "juosawBbMz", - "checksum": "81a3a3a4a9707acc6bce87f1a2d5d064" + "checksum": "bfb80fed1d7dae67ae161cfc99da540e" }, { "type": "cssRules", "assetId": "juosawBbMz", - "checksum": "81a3a3a4a9707acc6bce87f1a2d5d064" + "checksum": "bfb80fed1d7dae67ae161cfc99da540e" }, { "type": "renderModule", "assetId": "5RLoIE7-j5", - "checksum": "3d583a2ed3b4fcaee1755fe9d16f846a" + "checksum": "2e93922a074fe1df3e9a76a9876d4788" }, { "type": "cssRules", "assetId": "5RLoIE7-j5", - "checksum": "3d583a2ed3b4fcaee1755fe9d16f846a" + "checksum": "2e93922a074fe1df3e9a76a9876d4788" }, { "type": "icon", "assetId": "OH84QQlMGV", - "checksum": "bd337f86ed6b3c450db2d3cb4a0e3233" + "checksum": "e48b36cbe873f45fe0d14364e209623e" }, { "type": "icon", "assetId": "s7v30LEVvl", - "checksum": "0f9d56e7acdb6bb09a1f03b2397b7b19" + "checksum": "5385d576be358843ec8eddec7da885d7" }, { "assetId": "fuzE93KTc4ZKNBYf3LAfy", "type": "projectCss", - "checksum": "3f42af4f2419971c4fc5fdf52785735a" + "checksum": "1d1f3ad4ec6e9abe6b907dbf2b721619" + }, + { + "assetId": "fuzE93KTc4ZKNBYf3LAfy", + "checksum": "be6cf27e08354f41a67a49353c836065", + "type": "projectModule" + }, + { + "assetId": "fuzE93KTc4ZKNBYf3LAfy", + "checksum": "68eabf2bd4efe980e911c0d35ef211dc", + "type": "styleTokensProvider" } ], - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "projectId": "2dMe7XWUq916KsPnra5vYj", "version": "latest", "dependencies": { "95xp9cYcv7HrNWpFWWhbcv": "2.2.6", - "oT38tGyqov9SPWHpf3Y2Rf": "5.1.0", - "tXkSR39sgCDWSitZxC5xFV": "77.0.2", + "oT38tGyqov9SPWHpf3Y2Rf": "5.6.0", + "tXkSR39sgCDWSitZxC5xFV": "83.1.0", "gYEVvAzCcLMHDVPvuYxkFh": "7.2.0" }, "lang": "ts", @@ -9593,154 +9387,164 @@ { "type": "renderModule", "assetId": "ratDJT6SAx", - "checksum": "19e85cbe5b7d967a531d1eae8a4ed808" + "checksum": "14019d21c21f90bb3e84bf57d7424b61" }, { "type": "cssRules", "assetId": "ratDJT6SAx", - "checksum": "19e85cbe5b7d967a531d1eae8a4ed808" + "checksum": "14019d21c21f90bb3e84bf57d7424b61" }, { "type": "renderModule", "assetId": "OKf_hhc2Skl", - "checksum": "8e20ea3a76328e7b371e035299f63176" + "checksum": "d8824a79d39853e3e1996011eabb1486" }, { "type": "cssRules", "assetId": "OKf_hhc2Skl", - "checksum": "8e20ea3a76328e7b371e035299f63176" + "checksum": "d8824a79d39853e3e1996011eabb1486" }, { "type": "renderModule", "assetId": "7jCYJVNv9q", - "checksum": "c6d2bcccd6db0c8a8774810bcde508c1" + "checksum": "0844bc44de5963b75f08c0fb755027e5" }, { "type": "cssRules", "assetId": "7jCYJVNv9q", - "checksum": "c6d2bcccd6db0c8a8774810bcde508c1" + "checksum": "0844bc44de5963b75f08c0fb755027e5" }, { "type": "renderModule", "assetId": "W_Uez__b5a-", - "checksum": "42526c7bc8ac8d8ca33656f9e02defed" + "checksum": "4270c3460e4a9a8b777dc961771d3c09" }, { "type": "cssRules", "assetId": "W_Uez__b5a-", - "checksum": "42526c7bc8ac8d8ca33656f9e02defed" + "checksum": "4270c3460e4a9a8b777dc961771d3c09" }, { "type": "renderModule", "assetId": "1lRaedKrFR", - "checksum": "e3e5bc3718b93cd1b4c531e281d0414c" + "checksum": "825b6eef7b88369026f6b1c7c8140ae4" }, { "type": "cssRules", "assetId": "1lRaedKrFR", - "checksum": "e3e5bc3718b93cd1b4c531e281d0414c" + "checksum": "825b6eef7b88369026f6b1c7c8140ae4" }, { "type": "renderModule", "assetId": "jfBLn3a3U6", - "checksum": "b88cb27f50af835b9ead86908626281c" + "checksum": "5e688c0c077f69e6789de28327ca00b6" }, { "type": "cssRules", "assetId": "jfBLn3a3U6", - "checksum": "b88cb27f50af835b9ead86908626281c" + "checksum": "5e688c0c077f69e6789de28327ca00b6" }, { "type": "renderModule", "assetId": "4_ozDtECN_", - "checksum": "e8c772a21fb670004cdc39158bfc190d" + "checksum": "ea41715011c2fd6620710c958dabc295" }, { "type": "cssRules", "assetId": "4_ozDtECN_", - "checksum": "e8c772a21fb670004cdc39158bfc190d" + "checksum": "ea41715011c2fd6620710c958dabc295" }, { "type": "renderModule", "assetId": "bRXkugOm8Ra", - "checksum": "5042d8e94d0f299356376abc5faf80b3" + "checksum": "c09eafb337af119be7c852ebf7930b12" }, { "type": "cssRules", "assetId": "bRXkugOm8Ra", - "checksum": "5042d8e94d0f299356376abc5faf80b3" + "checksum": "c09eafb337af119be7c852ebf7930b12" }, { "type": "renderModule", "assetId": "wx3bEfvj7g", - "checksum": "136cb0b067e74a02b9d83d908a7f6546" + "checksum": "d5f4aee13f86d4e53fc2964f5e33b289" }, { "type": "cssRules", "assetId": "wx3bEfvj7g", - "checksum": "136cb0b067e74a02b9d83d908a7f6546" + "checksum": "d5f4aee13f86d4e53fc2964f5e33b289" }, { "type": "renderModule", "assetId": "_c0HP8vrOTq", - "checksum": "a2609263df3c88bded73769bcee3b62c" + "checksum": "ffadb29c7f5edceca5bf78bedd9f9f5c" }, { "type": "cssRules", "assetId": "_c0HP8vrOTq", - "checksum": "a2609263df3c88bded73769bcee3b62c" + "checksum": "ffadb29c7f5edceca5bf78bedd9f9f5c" }, { "type": "renderModule", "assetId": "rF43GtStPO", - "checksum": "55e790346cf176f5bdb0bdc9d94b1b32" + "checksum": "81f712d8ec693d07fd238fa511349e46" }, { "type": "cssRules", "assetId": "rF43GtStPO", - "checksum": "55e790346cf176f5bdb0bdc9d94b1b32" + "checksum": "81f712d8ec693d07fd238fa511349e46" }, { "type": "renderModule", "assetId": "FvbTyDpXOYV", - "checksum": "e82f005d797c5c9b5e8003d3b6d8f850" + "checksum": "dddeea3fa46ba4164658ba592a549c97" }, { "type": "cssRules", "assetId": "FvbTyDpXOYV", - "checksum": "e82f005d797c5c9b5e8003d3b6d8f850" + "checksum": "dddeea3fa46ba4164658ba592a549c97" }, { "type": "renderModule", "assetId": "Wx1WB4BUap", - "checksum": "bda8082278ca974310ec49f18f42e696" + "checksum": "b4e09d5efb870d4b820868bf829211e4" }, { "type": "cssRules", "assetId": "Wx1WB4BUap", - "checksum": "bda8082278ca974310ec49f18f42e696" + "checksum": "b4e09d5efb870d4b820868bf829211e4" }, { "type": "renderModule", "assetId": "HQf5xQMdD4", - "checksum": "819e6678df60edb70d2a2b4dd849eb9e" + "checksum": "fa7e8c593cb30b69bac8f5ef6e31747e" }, { "type": "cssRules", "assetId": "HQf5xQMdD4", - "checksum": "819e6678df60edb70d2a2b4dd849eb9e" + "checksum": "fa7e8c593cb30b69bac8f5ef6e31747e" }, { "assetId": "2dMe7XWUq916KsPnra5vYj", "type": "projectCss", - "checksum": "543591a10e481f021542f7a8bbf99293" + "checksum": "657bde7e19deaab5273997233c03159c" + }, + { + "assetId": "2dMe7XWUq916KsPnra5vYj", + "checksum": "73fd2922d0424407e481a5658e59c932", + "type": "projectModule" + }, + { + "assetId": "2dMe7XWUq916KsPnra5vYj", + "checksum": "c8d589cf1924f1a0f8937da9a9e5fd00", + "type": "styleTokensProvider" } ], - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "projectId": "8PtdGodUbexNYgkuyBUcWu", - "version": "3.33.0", + "version": "3.34.0", "dependencies": {}, "lang": "ts", "fileLocks": [ @@ -9756,152 +9560,163 @@ }, { "assetId": "8PtdGodUbexNYgkuyBUcWu", - "checksum": "1067b7f90483f13e0d6bcbdffd99aa8c", + "checksum": "e3d6c9abb5c9286ae61f9806b41ea453", "type": "styleTokensProvider" }, { "assetId": "8PtdGodUbexNYgkuyBUcWu", "type": "projectCss", - "checksum": "1ba4aeba50d03a6e744a73a4e6995be9" + "checksum": "1c87fbcb09b518a2412fe4d1f9a37e9d" } ], "codegenVersion": "0.0.3" }, { "projectId": "ehckhYnyDHgCBbV47m9bkf", - "version": "latest", + "version": "6.0.1", "dependencies": { - "tXkSR39sgCDWSitZxC5xFV": "80.0.3", - "oT38tGyqov9SPWHpf3Y2Rf": "5.5.0", - "95xp9cYcv7HrNWpFWWhbcv": "2.2.6", - "sDniSX4oPUZFyk2sXXb3nh": "6.0.1", - "8PtdGodUbexNYgkuyBUcWu": "3.24.0", - "28e27syQUKgfkErJT9mxWA": "0.0.1" + "tXkSR39sgCDWSitZxC5xFV": "92.0.1", + "oT38tGyqov9SPWHpf3Y2Rf": "7.0.1", + "95xp9cYcv7HrNWpFWWhbcv": "2.3.0", + "sDniSX4oPUZFyk2sXXb3nh": "6.1.1", + "8PtdGodUbexNYgkuyBUcWu": "3.34.0", + "28e27syQUKgfkErJT9mxWA": "0.0.1", + "gmeH6XgPaBtkt51HunAo4g": "18.32.0" }, "lang": "ts", "fileLocks": [ { "type": "globalVariant", "assetId": "hIjF9NLAUKG-", - "checksum": "2c5da1066309f9ad049bed0bd49b4a25" + "checksum": "36855e30168a83ba777adae3057bbb0d" }, { "assetId": "ehckhYnyDHgCBbV47m9bkf", - "checksum": "c5e6c3712e63f4e140000ce89e73d542", + "checksum": "c15b7ef89e41138d9971669c1ed4d36a", "type": "globalContexts" }, { "type": "renderModule", "assetId": "Xx_WsdQKli-S", - "checksum": "1cb4c31e09585b30a1c4dc80d80550e0" + "checksum": "c34778566e5c324215ff6a82ee6b29f2" }, { "type": "cssRules", "assetId": "Xx_WsdQKli-S", - "checksum": "1cb4c31e09585b30a1c4dc80d80550e0" + "checksum": "c34778566e5c324215ff6a82ee6b29f2" }, { "type": "renderModule", "assetId": "P7E8qtNzKrbM", - "checksum": "86731558cf9389b768497056f0bd6fec" + "checksum": "488b56539c1a48fd950f32f4acc1908b" }, { "type": "cssRules", "assetId": "P7E8qtNzKrbM", - "checksum": "86731558cf9389b768497056f0bd6fec" + "checksum": "488b56539c1a48fd950f32f4acc1908b" }, { "type": "renderModule", "assetId": "Z40kBWC-Knbn", - "checksum": "fbde3efc448b2d8d77b0a335afc76cd5" + "checksum": "c7030659aad475587b382496a512e73d" }, { "type": "cssRules", "assetId": "Z40kBWC-Knbn", - "checksum": "fbde3efc448b2d8d77b0a335afc76cd5" + "checksum": "c7030659aad475587b382496a512e73d" }, { "type": "renderModule", "assetId": "UwHbCO-1rFrq", - "checksum": "06ea6775e44006975fd1e8c1c30de52a" + "checksum": "841e5c073b983114f2baef3cea67a1ae" }, { "type": "cssRules", "assetId": "UwHbCO-1rFrq", - "checksum": "06ea6775e44006975fd1e8c1c30de52a" + "checksum": "841e5c073b983114f2baef3cea67a1ae" }, { "type": "renderModule", "assetId": "aVJYhoS8iDMR", - "checksum": "dfa13109a028ecab060665997f387f8a" + "checksum": "9dc150fa2808e4af8c84817ac5c2be96" }, { "type": "cssRules", "assetId": "aVJYhoS8iDMR", - "checksum": "dfa13109a028ecab060665997f387f8a" - }, - { - "type": "renderModule", - "assetId": "XvpbI4g-IJWK", - "checksum": "efde2a3961c511088727703e0df84c5c" - }, - { - "type": "cssRules", - "assetId": "XvpbI4g-IJWK", - "checksum": "efde2a3961c511088727703e0df84c5c" + "checksum": "9dc150fa2808e4af8c84817ac5c2be96" }, { "type": "renderModule", "assetId": "OOKbAz_EJ7Rm", - "checksum": "3628eaa6d13bbb02ec16cf8e02d209cf" + "checksum": "0f2735110b674fb83af5f2154c289edb" }, { "type": "cssRules", "assetId": "OOKbAz_EJ7Rm", - "checksum": "3628eaa6d13bbb02ec16cf8e02d209cf" + "checksum": "0f2735110b674fb83af5f2154c289edb" }, { "type": "globalVariant", "assetId": "B61LAyP8VHu7", - "checksum": "e467b502ecd614c03628cac5c9dc9a91" + "checksum": "03d34a5a561adee7db5557b2bee51f07" }, { "type": "renderModule", "assetId": "IzGvUfmCzHyO", - "checksum": "d34d1a164379dc7cc7b00018ad99c612" + "checksum": "6ec89986f57cdd6d34db8a6bea279de0" }, { "type": "cssRules", "assetId": "IzGvUfmCzHyO", - "checksum": "d34d1a164379dc7cc7b00018ad99c612" + "checksum": "6ec89986f57cdd6d34db8a6bea279de0" }, { "type": "renderModule", "assetId": "NqVzp6p_r1Wa", - "checksum": "c35bebd6a6fd4efc953a8f312e4f0c9d" + "checksum": "c43990b89de109923779c457bdaf0f78" }, { "type": "cssRules", "assetId": "NqVzp6p_r1Wa", - "checksum": "c35bebd6a6fd4efc953a8f312e4f0c9d" + "checksum": "c43990b89de109923779c457bdaf0f78" }, { "type": "renderModule", "assetId": "1T4UNMYLSC7u", - "checksum": "7984d574d51f5b088f3fcb016cffb4e3" + "checksum": "325b6a8a4b4e8ca519b01fd48cc7e240" }, { "type": "cssRules", "assetId": "1T4UNMYLSC7u", - "checksum": "7984d574d51f5b088f3fcb016cffb4e3" + "checksum": "325b6a8a4b4e8ca519b01fd48cc7e240" + }, + { + "assetId": "ehckhYnyDHgCBbV47m9bkf", + "checksum": "bce0abd41a7b1bab4abaf7a78b94f7dc", + "type": "projectModule" + }, + { + "assetId": "ehckhYnyDHgCBbV47m9bkf", + "checksum": "f3096fc6f46c86c1e526bf9bdbdd5a33", + "type": "styleTokensProvider" + }, + { + "type": "renderModule", + "assetId": "DHHU9E4NuTqC", + "checksum": "518965a0e4481472b76d3c57b7ea0a04" + }, + { + "type": "cssRules", + "assetId": "DHHU9E4NuTqC", + "checksum": "518965a0e4481472b76d3c57b7ea0a04" }, { "assetId": "ehckhYnyDHgCBbV47m9bkf", "type": "projectCss", - "checksum": "001ff523a1918cd8aadd45237d62f462" + "checksum": "18a19a44c97d0d9a756ee180b13de521" } ], - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "projectId": "28e27syQUKgfkErJT9mxWA", @@ -9912,19 +9727,29 @@ { "type": "globalVariant", "assetId": "PbV7vw3AiD6M", - "checksum": "e8bf397aad6f239e34e0deb5c30cd1d2" + "checksum": "74e1e397830fb5cfa368d3f0adb00302" + }, + { + "assetId": "28e27syQUKgfkErJT9mxWA", + "checksum": "ac2f0ac63c43069a9407e7c844ea5b62", + "type": "projectModule" + }, + { + "assetId": "28e27syQUKgfkErJT9mxWA", + "checksum": "28cc1bd5083893060cefbae1c742ed12", + "type": "styleTokensProvider" }, { "assetId": "28e27syQUKgfkErJT9mxWA", "type": "projectCss", - "checksum": "c90b54a868919da3ba52bbfbf22b5060" + "checksum": "9cd4c5904ad3b6a40c8f5f3b8c36cd5c" } ], - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" }, { "projectId": "gmeH6XgPaBtkt51HunAo4g", - "version": "18.30.0", + "version": "18.32.0", "dependencies": {}, "lang": "ts", "fileLocks": [ @@ -9935,81 +9760,81 @@ }, { "assetId": "gmeH6XgPaBtkt51HunAo4g", - "checksum": "fe72ba8dfd186001e008f2e95fe60374", + "checksum": "f29d1fe9090eb3fe0cb986d9553233a6", "type": "styleTokensProvider" }, { "assetId": "gmeH6XgPaBtkt51HunAo4g", "type": "projectCss", - "checksum": "a92f8a81c335659a69443e50fd02af8c" + "checksum": "06f5c23ae2592ee7a4f60c445b874bf1" } ], "codegenVersion": "0.0.3" }, { "projectId": "kTSMroKPFv65RRTb44SCtk", - "version": "6.0.0", + "version": "7.0.0", "dependencies": { - "tXkSR39sgCDWSitZxC5xFV": "87.0.0", - "oT38tGyqov9SPWHpf3Y2Rf": "5.7.0", - "95xp9cYcv7HrNWpFWWhbcv": "2.3.0" + "tXkSR39sgCDWSitZxC5xFV": "92.0.1", + "oT38tGyqov9SPWHpf3Y2Rf": "7.0.1", + "gmeH6XgPaBtkt51HunAo4g": "18.31.0" }, "lang": "ts", "fileLocks": [ { "type": "globalVariant", "assetId": "4QWQO5iAb22t", - "checksum": "2c0aa10819c7df89ccc6ba97bbdb1643" + "checksum": "b4b952b7c68be1459dfc392cd6d46774" }, { "type": "renderModule", "assetId": "l-sEnd6egOHM", - "checksum": "b59acd3a2c7857b45cb83600e128212e" + "checksum": "03d2310a5ca4ac184895924925fdd408" }, { "type": "cssRules", "assetId": "l-sEnd6egOHM", - "checksum": "b59acd3a2c7857b45cb83600e128212e" + "checksum": "03d2310a5ca4ac184895924925fdd408" }, { "type": "renderModule", "assetId": "w9CXWQAYB8kA", - "checksum": "2e76594f1adab0a06fad6fae453bdede" + "checksum": "5142f253a0724b9d960321a2ed45d3fb" }, { "type": "cssRules", "assetId": "w9CXWQAYB8kA", - "checksum": "2e76594f1adab0a06fad6fae453bdede" + "checksum": "5142f253a0724b9d960321a2ed45d3fb" }, { "type": "renderModule", "assetId": "Gc2UoCN4xKJL", - "checksum": "bacfe2f36c9e75bc9bff9b4363a8f6a3" + "checksum": "71735602220609a220007a9b6bfe65d6" }, { "type": "cssRules", "assetId": "Gc2UoCN4xKJL", - "checksum": "bacfe2f36c9e75bc9bff9b4363a8f6a3" + "checksum": "71735602220609a220007a9b6bfe65d6" }, { "type": "icon", "assetId": "vpjhh_trEdY0", - "checksum": "25f089d3221f1289e96cc1aa89b9629c" + "checksum": "1e2c72e33c57b39eba708d5cc65946a8" }, { "type": "icon", "assetId": "k02Fwku7Tl9M", - "checksum": "a5f4253d7e73ec03c8a5806a2af0fa2b" + "checksum": "444bfed536ef91968f996a23958bcd0e" }, { "type": "icon", "assetId": "sUed0_FBnG4j", - "checksum": "098f3bd67f3d13854b03ed73e11df491" + "checksum": "68e4b846309cbf43f2a054ae2caf70f2" }, { "type": "icon", "assetId": "9tHnrDLYFnPe", - "checksum": "44eb37cda400dffaeb6f98658856aa2f" + "checksum": "7a72432efeedf9a5b53fa051f6f67302" }, { "type": "image", @@ -10019,20 +9844,30 @@ { "type": "renderModule", "assetId": "HSPuw3LccxMD", - "checksum": "2a4dacfa6e0138645a4001c08cec846e" + "checksum": "2d50275b0d4ce2bd0e553ff4399f15df" }, { "type": "cssRules", "assetId": "HSPuw3LccxMD", - "checksum": "2a4dacfa6e0138645a4001c08cec846e" + "checksum": "2d50275b0d4ce2bd0e553ff4399f15df" + }, + { + "assetId": "kTSMroKPFv65RRTb44SCtk", + "checksum": "671da8aa3a9eec55a06aae18798a8601", + "type": "projectModule" + }, + { + "assetId": "kTSMroKPFv65RRTb44SCtk", + "checksum": "d06f3ccc603d5e7b381c765a55dd23b0", + "type": "styleTokensProvider" }, { "assetId": "kTSMroKPFv65RRTb44SCtk", "type": "projectCss", - "checksum": "e2d0e721aaf016339e1f05022adb8d59" + "checksum": "236e48f8efcc2eab4f982f4debf3edab" } ], - "codegenVersion": "0.0.1" + "codegenVersion": "0.0.3" } ], "cliVersion": "0.1.56" diff --git a/platform/wab/playwright/.gitignore b/platform/wab/playwright/.gitignore index e8c3719c13..f87b5747c3 100644 --- a/platform/wab/playwright/.gitignore +++ b/platform/wab/playwright/.gitignore @@ -1 +1,2 @@ -playwright-report/ \ No newline at end of file +playwright-report/ +ctrf/ \ No newline at end of file diff --git a/platform/wab/cypress/bundles/active-screen-variant-group.json b/platform/wab/playwright/bundles/active-screen-variant-group.json similarity index 100% rename from platform/wab/cypress/bundles/active-screen-variant-group.json rename to platform/wab/playwright/bundles/active-screen-variant-group.json diff --git a/platform/wab/cypress/bundles/clone-project.json b/platform/wab/playwright/bundles/clone-project.json similarity index 99% rename from platform/wab/cypress/bundles/clone-project.json rename to platform/wab/playwright/bundles/clone-project.json index 13520b12f6..d55a49ff35 100644 --- a/platform/wab/cypress/bundles/clone-project.json +++ b/platform/wab/playwright/bundles/clone-project.json @@ -720,7 +720,8 @@ "defaultSlotContents": {}, "variants": {}, "refActions": [], - "__type": "CodeComponentMeta" + "__type": "CodeComponentMeta", + "subtreePrefetchingConfig": null }, "-D5TfCBTB7qi": { "type": { "__ref": "NPo8s5tZFljj" }, @@ -875,7 +876,8 @@ "defaultSlotContents": {}, "variants": {}, "refActions": [], - "__type": "CodeComponentMeta" + "__type": "CodeComponentMeta", + "subtreePrefetchingConfig": null }, "cTR1FMni5ZP9": { "name": "text", "__type": "Text" }, "KPzK_LFiNNNi": { @@ -1311,7 +1313,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/clone-project.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/clone-project.json }, "projectId": "p3id3Xjhhb2aa1rMcYiVze", "version": "0.1.0", @@ -2033,7 +2039,8 @@ "defaultSlotContents": {}, "variants": {}, "refActions": [], - "__type": "CodeComponentMeta" + "__type": "CodeComponentMeta", + "subtreePrefetchingConfig": null }, "PPXuw2UN0cLp": { "type": { "__ref": "ZmVnONBo4gzn" }, @@ -2188,7 +2195,8 @@ "defaultSlotContents": {}, "variants": {}, "refActions": [], - "__type": "CodeComponentMeta" + "__type": "CodeComponentMeta", + "subtreePrefetchingConfig": null }, "wxVX6-zgDMz1": { "name": "text", "__type": "Text" }, "ozts0i4Wd-92": { @@ -2568,7 +2576,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/clone-project.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/clone-project.json }, "projectId": "dULQBjLZ39vurEQV8ou2kL", "version": "0.1.0", @@ -3306,7 +3318,8 @@ "defaultSlotContents": {}, "variants": {}, "refActions": [], - "__type": "CodeComponentMeta" + "__type": "CodeComponentMeta", + "subtreePrefetchingConfig": null }, "9ZNbINiR1HO3": { "type": { "__ref": "yHiFlkMrLyaJ" }, @@ -3461,7 +3474,8 @@ "defaultSlotContents": {}, "variants": {}, "refActions": [], - "__type": "CodeComponentMeta" + "__type": "CodeComponentMeta", + "subtreePrefetchingConfig": null }, "tIVBbEB-Ui-N": { "name": "text", "__type": "Text" }, "lNd7odEmpzIg": { @@ -4081,7 +4095,11 @@ "7f816f55-a415-40b4-b874-8b41fd3da893", "eb97f7d4-c2dd-4f03-8cf8-dc4c198251d0" ], +<<<<<<< HEAD:platform/wab/cypress/bundles/clone-project.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/clone-project.json }, "projectId": "4yUPU3mNaj1kQZtHzAWL4y", "version": "2.0.0", @@ -4841,7 +4859,8 @@ "defaultSlotContents": {}, "variants": {}, "refActions": [], - "__type": "CodeComponentMeta" + "__type": "CodeComponentMeta", + "subtreePrefetchingConfig": null }, "9ZNbINiR1HO3": { "type": { "__ref": "yHiFlkMrLyaJ" }, @@ -4996,7 +5015,8 @@ "defaultSlotContents": {}, "variants": {}, "refActions": [], - "__type": "CodeComponentMeta" + "__type": "CodeComponentMeta", + "subtreePrefetchingConfig": null }, "tIVBbEB-Ui-N": { "name": "text", "__type": "Text" }, "lNd7odEmpzIg": { @@ -5852,7 +5872,11 @@ "7f816f55-a415-40b4-b874-8b41fd3da893", "eb97f7d4-c2dd-4f03-8cf8-dc4c198251d0" ], +<<<<<<< HEAD:platform/wab/cypress/bundles/clone-project.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/clone-project.json } } ] diff --git a/platform/wab/cypress/bundles/code-libs.json b/platform/wab/playwright/bundles/code-libs.json similarity index 98% rename from platform/wab/cypress/bundles/code-libs.json rename to platform/wab/playwright/bundles/code-libs.json index 456252d562..a7a025c302 100644 --- a/platform/wab/cypress/bundles/code-libs.json +++ b/platform/wab/playwright/bundles/code-libs.json @@ -97,7 +97,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -198,7 +202,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -299,7 +307,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -400,7 +412,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -501,7 +517,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -602,7 +622,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -703,7 +727,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -816,7 +844,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -929,7 +961,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -1030,7 +1066,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -1131,7 +1171,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -1232,7 +1276,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -1333,7 +1381,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -1434,7 +1486,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -1547,7 +1603,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -1648,7 +1708,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -1749,7 +1813,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -1850,7 +1918,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -1951,7 +2023,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -2052,7 +2128,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -2298,7 +2378,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "3935001": { "components": [ @@ -2488,7 +2569,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "7682008": { "name": "code", "uuid": "ARXptWIBzB", "__type": "Var" }, "7682011": { @@ -2661,7 +2743,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "11490009": { "name": "name", "uuid": "GXFVFWfyxZl", "__type": "Var" }, "11490010": { "name": "text", "__type": "Text" }, @@ -2886,7 +2969,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "34442070": { "type": { "__ref": "34442179" }, @@ -3104,7 +3188,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "34442160": { "name": "src", "uuid": "6-acOUSDbVf", "__type": "Var" }, "34442161": { "name": "text", "__type": "Text" }, @@ -3237,7 +3322,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "169KSwIlWIPK": { "uuid": "5HCry2LpS1FS", @@ -3439,7 +3525,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "tY8MGiZAhddF": { "uuid": "R6jVl64am4sX", @@ -3686,7 +3773,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ], [ @@ -4088,7 +4179,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "hKsdzIkEtrB3": { "type": { "__ref": "iGlqXTrzjUdI" }, @@ -4243,7 +4335,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "L6NdkzTQ3wv5": { "name": "text", "__type": "Text" }, "5xMdqYO-29iq": { @@ -12816,7 +12909,11 @@ "ea54091c-dcfb-47e2-86b4-fe360c62f6ec", "7bfdcdde-66e0-469e-9022-02955a3f8f15" ], +<<<<<<< HEAD:platform/wab/cypress/bundles/code-libs.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/code-libs.json } ] ] diff --git a/platform/wab/cypress/bundles/data-tokens.json b/platform/wab/playwright/bundles/data-tokens.json similarity index 99% rename from platform/wab/cypress/bundles/data-tokens.json rename to platform/wab/playwright/bundles/data-tokens.json index 91156d1e73..fc5276ec8c 100644 --- a/platform/wab/cypress/bundles/data-tokens.json +++ b/platform/wab/playwright/bundles/data-tokens.json @@ -88,7 +88,7 @@ "namespace": null, "displayName": "HTTP Fetch", "params": [{ "__ref": "Mj0SWHxeXQ7v" }], - "isQuery": false, + "isQuery": true, "__type": "CustomFunction", "isMutation": false }, @@ -303,7 +303,8 @@ "defaultSlotContents": {}, "variants": {}, "refActions": [], - "__type": "CodeComponentMeta" + "__type": "CodeComponentMeta", + "subtreePrefetchingConfig": null }, "YTJ6TXfwAJzc": { "type": { "__ref": "uaivdVIu633t" }, @@ -458,7 +459,8 @@ "defaultSlotContents": {}, "variants": {}, "refActions": [], - "__type": "CodeComponentMeta" + "__type": "CodeComponentMeta", + "subtreePrefetchingConfig": null }, "TfMLcafn0ks7": { "name": "any", "__type": "AnyType" }, "Xl3UYjmOu3lO": { "name": "text", "__type": "Text" }, @@ -600,7 +602,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/data-tokens.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/data-tokens.json } ], [ @@ -1330,7 +1336,8 @@ "defaultSlotContents": {}, "variants": {}, "refActions": [], - "__type": "CodeComponentMeta" + "__type": "CodeComponentMeta", + "subtreePrefetchingConfig": null }, "qAgSZ4I2JlJw": { "type": { "__ref": "MtVNUS3HroYO" }, @@ -1485,7 +1492,8 @@ "defaultSlotContents": {}, "variants": {}, "refActions": [], - "__type": "CodeComponentMeta" + "__type": "CodeComponentMeta", + "subtreePrefetchingConfig": null }, "bECG9nWobc_v": { "name": "text", "__type": "Text" }, "7bughmCIkz_v": { @@ -3141,7 +3149,11 @@ } }, "deps": ["3f6783bc-83da-4ce7-98cc-69413a54d3b3"], +<<<<<<< HEAD:platform/wab/cypress/bundles/data-tokens.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/data-tokens.json } ] ] diff --git a/platform/wab/cypress/bundles/forms.json b/platform/wab/playwright/bundles/forms.json similarity index 99% rename from platform/wab/cypress/bundles/forms.json rename to platform/wab/playwright/bundles/forms.json index 86fdef7bd0..1f9a99ec01 100644 --- a/platform/wab/cypress/bundles/forms.json +++ b/platform/wab/playwright/bundles/forms.json @@ -3517,7 +3517,8 @@ "defaultSlotContents": { "placeholder": "Select..." }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "kSarHOKwUmNO": { "type": { "__ref": "edgmGx-BFliU" }, @@ -3609,7 +3610,8 @@ "defaultSlotContents": { "children": "Option" }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "Sp0ljUeojVM5": { "type": { "__ref": "9P3HVGivMXxz" }, @@ -3724,7 +3726,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "FfmejNXOk6sU": { "type": { "__ref": "6q8oFk6_wlf5" }, @@ -3952,7 +3955,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "CjmIvUcUrlC4": { "type": { "__ref": "cUyoKPWwNj5E" }, @@ -4131,7 +4135,8 @@ "defaultSlotContents": { "title": "Column Name" }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "usXVPbjBbNco": { "type": { "__ref": "mvLrSR9OL11W" }, @@ -4226,7 +4231,8 @@ "defaultSlotContents": { "title": "Column Group Name" }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "twvWBEGbESVS": { "type": { "__ref": "FM5v7q_AZFHz" }, @@ -4414,7 +4420,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "m4W27JiJStL6": { "type": { "__ref": "nplA0B07Ld0w" }, @@ -4558,7 +4565,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "H8mJYovFgfH6": { "type": { "__ref": "G3TSFhtJrMMd" }, @@ -4702,7 +4710,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "ukU8WJL0-B7_": { "type": { "__ref": "GhlKLF4IyxxS" }, @@ -4838,7 +4847,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "JcxYSK9DhBab": { "type": { "__ref": "IhXxkX5Mddwa" }, @@ -4974,7 +4984,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "ytAYWRXDfPzx": { "type": { "__ref": "Uu23gzSWGbGe" }, @@ -5200,7 +5211,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "senKM92mRyNt": { "type": { "__ref": "l5FmNZurIM-i" }, @@ -5589,7 +5601,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "uKaxwMkOEnUV": { "type": { "__ref": "a5QYXwST7gfU" }, @@ -5917,7 +5930,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "jIt66hQs1__4": { "type": { "__ref": "lsA1pmzwnY5y" }, @@ -6109,7 +6123,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "yIo9eOJNxbrW": { "type": { "__ref": "HC0A_T7yDlHY" }, @@ -6287,7 +6302,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "4EjlKbUmYus2": { "type": { "__ref": "5f_6DA7EvtZx" }, @@ -6387,7 +6403,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "SufT1Mx4MujX": { "type": { "__ref": "MoDEjMIOl2nB" }, @@ -6458,7 +6475,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "gPV37a2uNPEJ": { "type": { "__ref": "TDp743CNoR1g" }, @@ -6636,7 +6654,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "_lYr74tEJRYH": { "type": { "__ref": "TjIoPRbfioJT" }, @@ -6961,7 +6980,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "Xf87gjqQlT-_": { "type": { "__ref": "Fbp_rYQjvqSO" }, @@ -7412,7 +7432,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "h2aN25cA1al9": { "type": { "__ref": "h3vqIo3EveoJ" }, @@ -7867,7 +7888,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "F0N0XdvPgiLr": { "type": { "__ref": "7hNPY-ptp8W7" }, @@ -7959,7 +7981,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "OVxy2ZE4IbYc": { "type": { "__ref": "UjUsWtTYRQDx" }, @@ -8104,7 +8127,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "uL3gmlQdbjXa": { "type": { "__ref": "of-nYh86hTl-" }, @@ -8505,7 +8529,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "6rwHD4FC3dhr": { "type": { "__ref": "p4xqIvTtXV8y" }, @@ -8712,7 +8737,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "xJL70qhUGfPq": { "type": { "__ref": "2fT9-ZtGyeyW" }, @@ -8919,7 +8945,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "Z4Kv8nyosqTM": { "type": { "__ref": "A2vouyLHi-hZ" }, @@ -9362,7 +9389,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "zbKyJ_ovzkb0": { "type": { "__ref": "jKZWM8jigmis" }, @@ -9737,7 +9765,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "MM89nrE8Ky9v": { "type": { "__ref": "y3Ir0A_zraCm" }, @@ -9931,7 +9960,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "bmwMQ8i2r-J9": { "type": { "__ref": "RrmbTnnvI7fD" }, @@ -10183,7 +10213,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "CcT-16uPYSiB": { "type": { "__ref": "KU7mB2lauChv" }, @@ -10608,7 +10639,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "ykDCw5FOrJ2h": { "type": { "__ref": "h0o01MvJJCmZ" }, @@ -10878,7 +10910,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "-DZGJFV9OW28": { "type": { "__ref": "bYEu9RcOyxyG" }, @@ -11062,7 +11095,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "E4AjThSBHm2i": { "type": { "__ref": "N2xM7V67L9c9" }, @@ -11238,7 +11272,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "MX9P7lLj3WYC": { "type": { "__ref": "FixVtnN4raSJ" }, @@ -11423,7 +11458,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "F_QO-mk9NVOj": { "type": { "__ref": "ByPgkfdOZoVR" }, @@ -11953,7 +11989,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "I7PS9G4siw-Y": { "type": { "__ref": "0joJAeyIhIjM" }, @@ -12483,7 +12520,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "OYpEniGGBzdK": { "type": { "__ref": "QamJJbnQWGai" }, @@ -12929,7 +12967,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "WCy15BAf65SY": { "type": { "__ref": "oyJAg6YccJyU" }, @@ -13286,7 +13325,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "5JQY8i90uMvE": { "type": { "__ref": "6C3t4wYoA0qJ" }, @@ -13553,7 +13593,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "DuYbnEaYS0bQ": { "type": { "__ref": "RL3MBWL6ekUy" }, @@ -13936,7 +13977,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "F4e8b7twW1UE": { "type": { "__ref": "4sXxBz_Czwzc" }, @@ -14504,7 +14546,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "wRTR-2CGw19k": { "type": { "__ref": "daeXC-fPCyjm" }, @@ -14662,7 +14705,8 @@ "defaultSlotContents": { "label": "Tab" }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "RSgADvXVzJoB": { "type": { "__ref": "FTgaPiHcoo7K" }, @@ -15040,7 +15084,8 @@ "defaultSlotContents": { "symbols": ["1", "2", "3", "4", "5"] }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "YPT-SvVOm2Zp": { "type": { "__ref": "b4_EfBWWCU6m" }, @@ -15447,7 +15492,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "f6jD-34Z2TfA": { "variants": [{ "__ref": "ghEusf9Z-tmw" }], @@ -23217,7 +23263,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "uRCMzYqQS6-z": { "uuid": "F4HB155IFly9", @@ -23354,7 +23401,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "aauI493d1Y8G": { "uuid": "qD8IUjGQsQEZ", @@ -23497,7 +23545,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "AJ09APgyRRK1": { "uuid": "b1KN0x8DO-DY", @@ -23619,7 +23668,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "sABmqUuKyHxq": { "uuid": "T3YjCrxxxhCp", @@ -23712,7 +23762,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "ueSXuZfwqpyw": { "uuid": "d8pRpsTqtGz4", @@ -23860,7 +23911,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "u1JkdwumRfQ4": { "uuid": "Y8pE10DTDrlb", @@ -23962,7 +24014,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "1MpCoTwToBYl": { "uuid": "UfPRHDAGhG-h", @@ -24079,7 +24132,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "cMh-y55KPLTh": { "uuid": "VoC8s0nRe2Ux", @@ -24214,7 +24268,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "BBPx9xgsQ1Fd": { "uuid": "WzF2TEq0a5OX", @@ -24312,7 +24367,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "7g8ZZf0jIClW": { "uuid": "wVjBtiJaGJJh", @@ -29309,7 +29365,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/forms.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/forms.json } ], [ @@ -30008,7 +30068,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "QQnqXFGCHaOi": { "type": { "__ref": "keSQdBnmx7jo" }, @@ -30376,7 +30437,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "X-eiP2boEi1h": { "type": { "__ref": "QY1Nk0vjUx-p" }, @@ -30907,7 +30969,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "TTK5bULNg4Oy": { "type": { "__ref": "RB4thW8_BeU8" }, @@ -31083,7 +31146,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "RXglgM5A4yAR": { "type": { "__ref": "ArpNtlbiN6K7" }, @@ -31453,7 +31517,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "QzXHqz1qTaFL": { "name": "renderable", @@ -33580,7 +33645,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/forms.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/forms.json } ], [ @@ -37101,7 +37170,8 @@ "defaultSlotContents": { "placeholder": "Select..." }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "kSarHOKwUmNO": { "type": { "__ref": "edgmGx-BFliU" }, @@ -37193,7 +37263,8 @@ "defaultSlotContents": { "children": "Option" }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "Sp0ljUeojVM5": { "type": { "__ref": "9P3HVGivMXxz" }, @@ -37308,7 +37379,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "FfmejNXOk6sU": { "type": { "__ref": "6q8oFk6_wlf5" }, @@ -37536,7 +37608,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "CjmIvUcUrlC4": { "type": { "__ref": "cUyoKPWwNj5E" }, @@ -37715,7 +37788,8 @@ "defaultSlotContents": { "title": "Column Name" }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "usXVPbjBbNco": { "type": { "__ref": "mvLrSR9OL11W" }, @@ -37810,7 +37884,8 @@ "defaultSlotContents": { "title": "Column Group Name" }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "twvWBEGbESVS": { "type": { "__ref": "FM5v7q_AZFHz" }, @@ -37998,7 +38073,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "m4W27JiJStL6": { "type": { "__ref": "nplA0B07Ld0w" }, @@ -38142,7 +38218,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "H8mJYovFgfH6": { "type": { "__ref": "G3TSFhtJrMMd" }, @@ -38286,7 +38363,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "ukU8WJL0-B7_": { "type": { "__ref": "GhlKLF4IyxxS" }, @@ -38422,7 +38500,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "JcxYSK9DhBab": { "type": { "__ref": "IhXxkX5Mddwa" }, @@ -38558,7 +38637,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "ytAYWRXDfPzx": { "type": { "__ref": "Uu23gzSWGbGe" }, @@ -38784,7 +38864,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "senKM92mRyNt": { "type": { "__ref": "l5FmNZurIM-i" }, @@ -39173,7 +39254,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "uKaxwMkOEnUV": { "type": { "__ref": "a5QYXwST7gfU" }, @@ -39501,7 +39583,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "jIt66hQs1__4": { "type": { "__ref": "lsA1pmzwnY5y" }, @@ -39693,7 +39776,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "yIo9eOJNxbrW": { "type": { "__ref": "HC0A_T7yDlHY" }, @@ -39871,7 +39955,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "4EjlKbUmYus2": { "type": { "__ref": "5f_6DA7EvtZx" }, @@ -39971,7 +40056,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "SufT1Mx4MujX": { "type": { "__ref": "MoDEjMIOl2nB" }, @@ -40042,7 +40128,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "gPV37a2uNPEJ": { "type": { "__ref": "TDp743CNoR1g" }, @@ -40220,7 +40307,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "_lYr74tEJRYH": { "type": { "__ref": "TjIoPRbfioJT" }, @@ -40545,7 +40633,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "Xf87gjqQlT-_": { "type": { "__ref": "Fbp_rYQjvqSO" }, @@ -40996,7 +41085,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "h2aN25cA1al9": { "type": { "__ref": "h3vqIo3EveoJ" }, @@ -41451,7 +41541,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "F0N0XdvPgiLr": { "type": { "__ref": "iUJUyz8njXTX" }, @@ -41543,7 +41634,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "OVxy2ZE4IbYc": { "type": { "__ref": "UjUsWtTYRQDx" }, @@ -41688,7 +41780,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "uL3gmlQdbjXa": { "type": { "__ref": "of-nYh86hTl-" }, @@ -42089,7 +42182,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "6rwHD4FC3dhr": { "type": { "__ref": "p4xqIvTtXV8y" }, @@ -42296,7 +42390,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "xJL70qhUGfPq": { "type": { "__ref": "2fT9-ZtGyeyW" }, @@ -42503,7 +42598,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "Z4Kv8nyosqTM": { "type": { "__ref": "A2vouyLHi-hZ" }, @@ -42946,7 +43042,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "zbKyJ_ovzkb0": { "type": { "__ref": "lZiiYjQSS6CF" }, @@ -43321,7 +43418,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "MM89nrE8Ky9v": { "type": { "__ref": "y3Ir0A_zraCm" }, @@ -43515,7 +43613,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "bmwMQ8i2r-J9": { "type": { "__ref": "RrmbTnnvI7fD" }, @@ -43767,7 +43866,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "CcT-16uPYSiB": { "type": { "__ref": "KU7mB2lauChv" }, @@ -44192,7 +44292,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "ykDCw5FOrJ2h": { "type": { "__ref": "h0o01MvJJCmZ" }, @@ -44462,7 +44563,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "-DZGJFV9OW28": { "type": { "__ref": "bYEu9RcOyxyG" }, @@ -44646,7 +44748,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "E4AjThSBHm2i": { "type": { "__ref": "N2xM7V67L9c9" }, @@ -44822,7 +44925,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "MX9P7lLj3WYC": { "type": { "__ref": "FixVtnN4raSJ" }, @@ -45007,7 +45111,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "F_QO-mk9NVOj": { "type": { "__ref": "ByPgkfdOZoVR" }, @@ -45537,7 +45642,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "I7PS9G4siw-Y": { "type": { "__ref": "0joJAeyIhIjM" }, @@ -46067,7 +46173,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "OYpEniGGBzdK": { "type": { "__ref": "QamJJbnQWGai" }, @@ -46513,7 +46620,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "WCy15BAf65SY": { "type": { "__ref": "oyJAg6YccJyU" }, @@ -46870,7 +46978,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "5JQY8i90uMvE": { "type": { "__ref": "f8-kXjT7yylz" }, @@ -47137,7 +47246,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "DuYbnEaYS0bQ": { "type": { "__ref": "RL3MBWL6ekUy" }, @@ -47520,7 +47630,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "F4e8b7twW1UE": { "type": { "__ref": "4sXxBz_Czwzc" }, @@ -48088,7 +48199,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "wRTR-2CGw19k": { "type": { "__ref": "daeXC-fPCyjm" }, @@ -48246,7 +48358,8 @@ "defaultSlotContents": { "label": "Tab" }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "RSgADvXVzJoB": { "type": { "__ref": "FTgaPiHcoo7K" }, @@ -48624,7 +48737,8 @@ "defaultSlotContents": { "symbols": ["1", "2", "3", "4", "5"] }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "YPT-SvVOm2Zp": { "type": { "__ref": "b4_EfBWWCU6m" }, @@ -49031,7 +49145,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "f6jD-34Z2TfA": { "variants": [{ "__ref": "ghEusf9Z-tmw" }], @@ -56801,7 +56916,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "mrHhG4zGv4Nk": { "uuid": "xRDVtqL_L9ah", @@ -56938,7 +57054,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "DBftn9YUe_N5": { "uuid": "tGDmhaAzndli", @@ -57081,7 +57198,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "YpXu_toaIXVG": { "uuid": "cYTyNfALR2Yl", @@ -57203,7 +57321,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "GtHyV82EcLrX": { "uuid": "DhyDPnEJU2s0", @@ -57296,7 +57415,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "N1Fzw6wyEHZ4": { "uuid": "hK0deskU-wA5", @@ -57444,7 +57564,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "TGDjJqm-T9MG": { "uuid": "Av7889--Mvhx", @@ -57546,7 +57667,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "VJQ9ejzvChXH": { "uuid": "EymItGUASQ4E", @@ -57663,7 +57785,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "jRleFg-Apn6d": { "uuid": "s4bri2-P312F", @@ -57798,7 +57921,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "5_OOjDwVQrc8": { "uuid": "VrL_kUEzWcyR", @@ -57896,7 +58020,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "-9INDhoQTL0_": { "uuid": "n1fBXB15PFhv", @@ -62893,7 +63018,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/forms.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/forms.json } ], [ @@ -63677,7 +63806,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "K2olc4ut3z79": { "type": { "__ref": "3EoCoyihmmjF" }, @@ -63832,7 +63962,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "rSmTKjGMI6-B": { "name": "text", "__type": "Text" }, "d_SCKxdGlouX": { @@ -102211,7 +102342,11 @@ "ff598514-e845-4b90-9402-61b6e85b5633", "a0c6a0b1-20be-4fe8-a98b-9618eb575490" ], +<<<<<<< HEAD:platform/wab/cypress/bundles/forms.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/forms.json } ] ] diff --git a/platform/wab/cypress/bundles/index.ts b/platform/wab/playwright/bundles/index.ts similarity index 100% rename from platform/wab/cypress/bundles/index.ts rename to platform/wab/playwright/bundles/index.ts diff --git a/platform/wab/cypress/bundles/page-replacement.json b/platform/wab/playwright/bundles/page-replacement.json similarity index 100% rename from platform/wab/cypress/bundles/page-replacement.json rename to platform/wab/playwright/bundles/page-replacement.json diff --git a/platform/wab/cypress/bundles/prop-editors.json b/platform/wab/playwright/bundles/prop-editors.json similarity index 99% rename from platform/wab/cypress/bundles/prop-editors.json rename to platform/wab/playwright/bundles/prop-editors.json index de0f4218f9..e225e1eaed 100644 --- a/platform/wab/cypress/bundles/prop-editors.json +++ b/platform/wab/playwright/bundles/prop-editors.json @@ -2582,7 +2582,8 @@ "defaultSlotContents": { "placeholder": "Select..." }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971161": { "type": { "__ref": "JMeoMw-1wzeu" }, @@ -2674,7 +2675,8 @@ "defaultSlotContents": { "children": "Option" }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971166": { "type": { "__ref": "35971513" }, @@ -2786,7 +2788,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971171": { "type": { "__ref": "35971520" }, @@ -3014,7 +3017,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971183": { "type": { "__ref": "35971538" }, @@ -3190,7 +3194,8 @@ "defaultSlotContents": { "title": "Column Name" }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971192": { "type": { "__ref": "35971553" }, @@ -3282,7 +3287,8 @@ "defaultSlotContents": { "title": "Column Group Name" }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971197": { "type": { "__ref": "35971560" }, @@ -3470,7 +3476,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971208": { "type": { "__ref": "35971576" }, @@ -3614,7 +3621,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971216": { "type": { "__ref": "35971586" }, @@ -3750,7 +3758,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971223": { "type": { "__ref": "35971596" }, @@ -3886,7 +3895,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971230": { "type": { "__ref": "35971606" }, @@ -4049,7 +4059,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971238": { "type": { "__ref": "35971616" }, @@ -4396,7 +4407,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971256": { "type": { "__ref": "35971649" }, @@ -4700,7 +4712,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971271": { "type": { "__ref": "35971676" }, @@ -4889,7 +4902,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971280": { "type": { "__ref": "35971691" }, @@ -5067,7 +5081,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971289": { "type": { "__ref": "35971706" }, @@ -5164,7 +5179,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971294": { "type": { "__ref": "35971713" }, @@ -5235,7 +5251,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971298": { "type": { "__ref": "35971716" }, @@ -5389,7 +5406,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971305": { "type": { "__ref": "35971727" }, @@ -5606,7 +5624,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971316": { "type": { "__ref": "35971746" }, @@ -5949,7 +5968,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971333": { "type": { "__ref": "CBBkIOFTmzAh" }, @@ -6296,7 +6316,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971352": { "type": { "__ref": "Iek6io9koUX1" }, @@ -6388,7 +6409,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971357": { "type": { "__ref": "35971820" }, @@ -6533,7 +6555,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971363": { "type": { "__ref": "35971830" }, @@ -6892,7 +6915,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971382": { "type": { "__ref": "35971866" }, @@ -7078,7 +7102,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971393": { "type": { "__ref": "35971882" }, @@ -7264,7 +7289,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971404": { "type": { "__ref": "35971898" }, @@ -7686,7 +7712,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971426": { "type": { "__ref": "35971939" }, @@ -7880,7 +7907,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971436": { "type": { "__ref": "35971956" }, @@ -8224,7 +8252,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35971453": { "variants": [{ "__ref": "39174007" }], @@ -14044,7 +14073,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "yjJDr2SinQvU": { "type": { "__ref": "1kZgru6_Ddmg" }, @@ -14419,7 +14449,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "RzO-ps15THeb": { "type": { "__ref": "nbwDsI3b9WxT" }, @@ -15035,7 +15066,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "xjrKiWtQn4Fr": { "type": { "__ref": "rL_nalmunUfk" }, @@ -15287,7 +15319,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "uWur4ZMAJ8IU": { "type": { "__ref": "NUJScduuL2cT" }, @@ -15712,7 +15745,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "psT3gih7YY8B": { "type": { "__ref": "KRF4FmpdkFUM" }, @@ -15982,7 +16016,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "mgSL-7vLKjmG": { "type": { "__ref": "7spBQ9KAEH-P" }, @@ -16166,7 +16201,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "Ilb8sEKxCjz5": { "type": { "__ref": "xucuOqqad3zV" }, @@ -16342,7 +16378,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "CEjG4KAfwBad": { "type": { "__ref": "0IqxNuzHpnv-" }, @@ -16527,7 +16564,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "8CmmHM5XsAil": { "type": { "__ref": "GTcRPjlKqShF" }, @@ -17057,7 +17095,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "Ib2lHJJaYsgC": { "type": { "__ref": "5it7ijryJQXX" }, @@ -17587,7 +17626,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "tuUoPo6sopY3": { "type": { "__ref": "wURwBpRlQC9R" }, @@ -18033,7 +18073,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "Z2ebSNxmtS2S": { "type": { "__ref": "pKvDxgGWoKDM" }, @@ -18390,7 +18431,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "FjFIxiJ0MSTo": { "type": { "__ref": "9j2RCuyItVj2" }, @@ -18657,7 +18699,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "jN6Okjrp4-bE": { "type": { "__ref": "y7KtWq9Hczfy" }, @@ -19040,7 +19083,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "HO89gVzD6fJP": { "type": { "__ref": "MK0ZaxW2N0z1" }, @@ -19608,7 +19652,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "VVEmCCIXu2G0": { "type": { "__ref": "opqIE0_53PgE" }, @@ -19766,7 +19811,8 @@ "defaultSlotContents": { "label": "Tab" }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "3WJsCWCtWZpQ": { "type": { "__ref": "OqCvgawzUvOm" }, @@ -20144,7 +20190,8 @@ "defaultSlotContents": { "symbols": ["1", "2", "3", "4", "5"] }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "2VQo2y90d5BH": { "type": { "__ref": "OySkpNPithh-" }, @@ -20761,7 +20808,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "kxraKbVhav-X": { "type": { "__ref": "0BjM7J_lVC9u" }, @@ -21430,7 +21478,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "TtMVVim1pgWP": { "type": { "__ref": "EK189UDO1zva" }, @@ -21522,7 +21571,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "MGoRv266UrLy": { "name": "any", "__type": "AnyType" }, "7Jsf6gD8TJl0": { @@ -26340,7 +26390,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "NlSRDsoJyR7X": { "uuid": "6KRYXbEueBrj", @@ -26488,7 +26539,8 @@ }, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "4xvPi1parDz7": { "uuid": "U_ozao767Aj6", @@ -26974,7 +27026,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "TrtD-Zj07xvq": { "uuid": "-cxj-u0IqwSg", @@ -27091,7 +27144,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "5soTE8wED8mR": { "uuid": "8oGlTywZ0RGr", @@ -28411,7 +28465,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/prop-editors.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/prop-editors.json } ], [ @@ -29165,7 +29223,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "2755208": { "name": "name", "uuid": "61AddL0Qz-", "__type": "Var" }, "2755209": { "name": "text", "__type": "Text" }, @@ -36544,7 +36603,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "4437808": { "name": "myTextLikeFunc", @@ -37798,7 +37858,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "8388006": { "name": "data", "uuid": "zDf9fUwg5L", "__type": "Var" }, "8388007": { "name": "text", "__type": "Text" }, @@ -39506,7 +39567,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "19468006": { "name": "dataSelector", @@ -39843,7 +39905,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "21199013": { "type": { "__ref": "21199044" }, @@ -39935,7 +39998,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "21199018": { "type": { "__ref": "21199051" }, @@ -40006,7 +40070,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "21199023": { "tag": "div", @@ -40056,7 +40121,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "21199026": { "type": { "__ref": "16166001" }, @@ -40127,7 +40193,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "21199030": { "type": { "__ref": "29651002" }, @@ -40198,7 +40265,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "21199034": { "type": { "__ref": "21199063" }, @@ -40269,7 +40337,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "21199038": { "name": "codeProp", @@ -40623,7 +40692,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "27402008": { "name": "number", "uuid": "cHw19BKVTh", "__type": "Var" }, "27402010": { @@ -40996,7 +41066,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "29838009": { "name": "choiceProp", @@ -41200,7 +41271,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "30045006": { "name": "array", "uuid": "IARuj6azpg", "__type": "Var" }, "30045007": { "name": "any", "__type": "AnyType" }, @@ -41629,7 +41701,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "35118006": { "name": "customProp", @@ -41853,7 +41926,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "38612007": { "name": "onEvent1", @@ -42230,7 +42304,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "40396006": { "tag": "div", @@ -42280,7 +42355,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "40396009": { "variants": [{ "__ref": "40396004" }], @@ -49145,7 +49221,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "42010010": { "type": { "__ref": "42010028" }, @@ -49300,7 +49377,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "42010018": { "name": "title", "uuid": "AHnU_MEB5I", "__type": "Var" }, "42010019": { "name": "text", "__type": "Text" }, @@ -52745,7 +52823,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "52435006": { "name": "imageUrl", @@ -53988,7 +54067,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "63065006": { "name": "objectProp", @@ -54137,7 +54217,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "65487006": { "name": "booleanProp", @@ -55444,7 +55525,11 @@ "DuESJECNxPHt": { "tpl": [], "__type": "VirtualRenderExpr" } }, "deps": ["968565bc-2862-4179-aa20-deebd3879e08"], +<<<<<<< HEAD:platform/wab/cypress/bundles/prop-editors.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/prop-editors.json } ] ] diff --git a/platform/wab/cypress/bundles/stale-bundle.json b/platform/wab/playwright/bundles/stale-bundle.json similarity index 100% rename from platform/wab/cypress/bundles/stale-bundle.json rename to platform/wab/playwright/bundles/stale-bundle.json diff --git a/platform/wab/cypress/bundles/state-management.json b/platform/wab/playwright/bundles/state-management.json similarity index 99% rename from platform/wab/cypress/bundles/state-management.json rename to platform/wab/playwright/bundles/state-management.json index ed9c4bcec0..1420dab60c 100644 --- a/platform/wab/cypress/bundles/state-management.json +++ b/platform/wab/playwright/bundles/state-management.json @@ -10031,7 +10031,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "64092010": { "type": { "__ref": "64092028" }, @@ -10186,7 +10187,8 @@ "defaultSlotContents": {}, "variants": {}, "__type": "CodeComponentMeta", - "refActions": [] + "refActions": [], + "subtreePrefetchingConfig": null }, "64092018": { "name": "title", "uuid": "kQl2B_SpuJ", "__type": "Var" }, "64092019": { "name": "text", "__type": "Text" }, @@ -21459,7 +21461,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/state-management.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/state-management.json } ] ] diff --git a/platform/wab/cypress/bundles/tutorial-portfolio.json b/platform/wab/playwright/bundles/tutorial-portfolio.json similarity index 99% rename from platform/wab/cypress/bundles/tutorial-portfolio.json rename to platform/wab/playwright/bundles/tutorial-portfolio.json index a3e2642d1c..185fdc64dc 100644 --- a/platform/wab/cypress/bundles/tutorial-portfolio.json +++ b/platform/wab/playwright/bundles/tutorial-portfolio.json @@ -362,7 +362,8 @@ }, "variants": {}, "refActions": [], - "__type": "CodeComponentMeta" + "__type": "CodeComponentMeta", + "subtreePrefetchingConfig": null }, "54066013": { "name": "forceOpenMenu", @@ -568,7 +569,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/tutorial-portfolio.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/tutorial-portfolio.json } ], [ @@ -915,7 +920,8 @@ }, "variants": {}, "refActions": [], - "__type": "CodeComponentMeta" + "__type": "CodeComponentMeta", + "subtreePrefetchingConfig": null }, "20609015": { "name": "cascade", @@ -1080,7 +1086,11 @@ } }, "deps": [], +<<<<<<< HEAD:platform/wab/cypress/bundles/tutorial-portfolio.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/tutorial-portfolio.json } ], [ @@ -7587,7 +7597,8 @@ "defaultSlotContents": {}, "variants": {}, "refActions": [], - "__type": "CodeComponentMeta" + "__type": "CodeComponentMeta", + "subtreePrefetchingConfig": null }, "kxckayUufSYQ": { "uuid": "MlE-cLRdqTaA", @@ -7860,7 +7871,8 @@ "defaultSlotContents": {}, "variants": {}, "refActions": [], - "__type": "CodeComponentMeta" + "__type": "CodeComponentMeta", + "subtreePrefetchingConfig": null }, "KMFlyjYstaPy": { "uuid": "uB4g62KuDLcO", @@ -28666,7 +28678,11 @@ "7b35d653-7565-4b50-82ca-04055e2bdef1", "431a83b5-e5ea-4605-ac3b-aa81b4842b91" ], +<<<<<<< HEAD:platform/wab/cypress/bundles/tutorial-portfolio.json "version": "257-add-custom-function-is-mutation" +======= + "version": "257-add-code-component-subtree-prefetching-config" +>>>>>>> upstream/master:platform/wab/playwright/bundles/tutorial-portfolio.json } ] ] diff --git a/platform/wab/playwright/e2e/antd5/pagination.spec.ts b/platform/wab/playwright/e2e/antd5/pagination.spec.ts index c042a7713c..2afa702e5f 100644 --- a/platform/wab/playwright/e2e/antd5/pagination.spec.ts +++ b/platform/wab/playwright/e2e/antd5/pagination.spec.ts @@ -1,5 +1,5 @@ import { expect, FrameLocator, Page } from "@playwright/test"; -import * as queryData from "../../../cypress/fixtures/northwind-orders-query.json"; +import * as queryData from "../../fixtures-data/northwind-orders-query.json"; import { test } from "../../fixtures/test"; import { goToProject } from "../../utils/studio-utils"; diff --git a/platform/wab/playwright/e2e/arbitrary-css-selectors.spec.ts b/platform/wab/playwright/e2e/arbitrary-css-selectors.spec.ts index f274de4f9e..4fd3acf444 100644 --- a/platform/wab/playwright/e2e/arbitrary-css-selectors.spec.ts +++ b/platform/wab/playwright/e2e/arbitrary-css-selectors.spec.ts @@ -1,7 +1,7 @@ import { expect, Locator, Page } from "@playwright/test"; import { test } from "../fixtures/test"; -import bundles from "../../cypress/bundles"; +import bundles from "../bundles"; import { goToProject } from "../utils/studio-utils"; const BUNDLE_NAME = "state-management"; diff --git a/platform/wab/playwright/e2e/auto-open.spec.ts b/platform/wab/playwright/e2e/auto-open.spec.ts index a6307ee250..2c67c343aa 100644 --- a/platform/wab/playwright/e2e/auto-open.spec.ts +++ b/platform/wab/playwright/e2e/auto-open.spec.ts @@ -248,7 +248,12 @@ test.describe("Auto Open", () => { ); await expect(getAutoOpenBanner(models)).toBeVisible(); - await models.studio.selectRootNode(); + // Deselect via outline tree instead of clicking the canvas since the modal covers the center + await models.studio.leftPanel.switchToTreeTab(); + await models.studio.leftPanel.treeRoot + .locator(".tpltree__label") + .first() + .click(); await assertHidden(pageFrame, modalHiddenContent); await assertHidden(pageFrame, selectHiddenContent); await assertHidden(pageFrame, tooltipHiddenContent); diff --git a/platform/wab/playwright/e2e/comments-multiplayer.spec.ts b/platform/wab/playwright/e2e/comments-multiplayer.spec.ts index 98f65408dc..2f429aa891 100644 --- a/platform/wab/playwright/e2e/comments-multiplayer.spec.ts +++ b/platform/wab/playwright/e2e/comments-multiplayer.spec.ts @@ -135,7 +135,7 @@ testMultiplayer.describe.skip("multiplayer comments", () => { // Verify all users see the resolved status await forEachAsync(sessions, async (session) => { const resolvedLoc = session.models.studio.frame - .locator(".CommentDialogContainer") + .locator(".floating-window:has(.CommentDialogDragHandle)") .getByText("Comment thread resolved."); await expect(resolvedLoc).toBeVisible({ timeout: 5000 }); }); diff --git a/platform/wab/playwright/e2e/component-props.spec.ts b/platform/wab/playwright/e2e/component-props.spec.ts index facf056022..db3d5f3546 100644 --- a/platform/wab/playwright/e2e/component-props.spec.ts +++ b/platform/wab/playwright/e2e/component-props.spec.ts @@ -65,6 +65,14 @@ test.describe("component-props", () => { propName: "imageProp", propType: "img", }); + await models.studio.createComponentProp({ + propName: "choiceProp", + propType: "choice", + }); + await models.studio.createComponentProp({ + propName: "multiChoiceProp", + propType: "multiChoice", + }); }); test("can show preview values, default values correctly", async ({ @@ -353,37 +361,597 @@ test.describe("component-props", () => { const { studio } = models; const rightPanel = studio.rightPanel.frame; + await test.step("prop link creation", async () => { + await studio.leftPanel.addComponent("Inner"); + await studio.createComponentProp({ + propName: "someProp", + propType: "text", + }); + await studio.insertTextWithDynamic("`${$props.someProp}`"); + + await studio.leftPanel.addComponent("Parent"); + await studio.leftPanel.insertNode("Inner"); + await studio.rightPanel.renameTreeNode("myCard", { + fromRightPanel: true, + }); + + // Right-click Inner's `someProp` on the instance → Allow external access → Create new prop. + await studio.rightPanel.switchToSettingsTab(); + const someProp = studio.frame + .locator('[data-plasmic-prop="someProp"]') + .first(); + await someProp.click({ button: "right" }); + await studio.allowExternalAccess(); + await studio.createNewProp(); + + const propName = "myCard / someProp"; + + // The new-prop modal should be prefilled with ` / `, + await expect(studio.rightPanel.propNameInput.first()).toHaveValue( + propName + ); + await studio.rightPanel.propSubmitButton.click(); + + await studio.rightPanel.switchToComponentDataTab(); + await expect( + rightPanel.getByText("myCard", { exact: true }) + ).toBeVisible(); + // Groups are collapsed by default. Click to expand + rightPanel.getByText("myCard", { exact: true }).click(); + await expect( + rightPanel.getByText("someProp", { exact: true }) + ).toBeVisible(); + }); + + await test.step("test prop linking works in canvas and live preview", async () => { + await studio.leftPanel.createNewPage("Preview"); + await studio.leftPanel.insertNode("Parent"); + // 2 components (Inner, Parent) + the Preview page → page is iframe #2. + const pageFrame = studio.frame.locator("iframe").nth(2).contentFrame(); + + const propName = "myCard / someProp"; + + await studio.rightPanel.setDataPlasmicProp(propName, "hello canvas"); + await expect(pageFrame.getByText("hello canvas")).toBeVisible(); + + await studio.rightPanel.setDataPlasmicProp(propName, "hello live", { + reset: true, + }); + await expect(pageFrame.getByText("hello live")).toBeVisible(); + + await studio.withinLiveMode(async (liveFrame) => { + await expect(liveFrame.getByText("hello live")).toBeVisible(); + }); + }); + }); + + test("allow external access on a variant auto-groups the linked prop under the tpl name", async ({ + models, + }) => { + const { studio } = models; + const rightPanel = studio.rightPanel.frame; + + await test.step("create variants", async () => { + await studio.leftPanel.addComponent("Inner"); + await studio.rightPanel.switchToComponentDataTab(); + await studio.rightPanel.addVariantToGroup("Theme", "Primary"); + await studio.rightPanel.addVariantToGroup("Theme", "Secondary"); + await studio.rightPanel.resetVariants(); + await studio.insertTextNodeWithContent("base-theme"); + + // Edit the text within each variant so the rendered output differs + await studio.rightPanel.switchToComponentDataTab(); + await studio.rightPanel.selectVariant("Primary"); + await studio.editText("primary-theme"); + await studio.rightPanel.deselectVariant("Theme", "Primary"); + await studio.rightPanel.selectVariant("Secondary"); + await studio.editText("secondary-theme"); + await studio.rightPanel.deselectVariant("Theme", "Secondary"); + + // Also add a standalone *toggle* variant, on its own node so its output + // is independently observable when later forwarded as a bool. + await studio.rightPanel.addToggleVariant("Locked"); + await studio.rightPanel.resetVariants(); + await studio.insertTextNodeWithContent("unlocked-text"); + await studio.rightPanel.switchToComponentDataTab(); + await studio.rightPanel.selectVariant("Locked"); + await studio.editText("locked-text"); + await studio.rightPanel.deselectVariant("Locked", "Locked"); + }); + + await test.step("link variants to props", async () => { + await studio.leftPanel.addComponent("Parent"); + await studio.leftPanel.insertNode("Inner"); + await studio.rightPanel.renameTreeNode("myCard", { + fromRightPanel: true, + }); + + // Right-click the "Theme" variant row → Allow external access → Create new prop. + const variantRow = rightPanel + .locator('[data-test-id="variants-picker-section"]') + .getByText("Theme", { exact: true }); + await variantRow.click({ button: "right" }); + await studio.allowExternalAccess(); + await studio.createNewProp(); + + const propName = "myCard / Theme"; + + // The new-prop modal is prefilled with ` / `. + await expect(studio.rightPanel.propNameInput.first()).toHaveValue( + propName + ); + await studio.rightPanel.propSubmitButton.click(); + + // After save, the variant row shows the linked-state UI. + await expect( + rightPanel + .locator('[data-test-id="variants-picker-section"]') + .getByText(/Linked to/) + ).toBeVisible(); + + const lockedRow = rightPanel + .locator('[data-test-id="variants-picker-section"]') + .getByText("Locked", { exact: true }); + await lockedRow.click({ button: "right" }); + await studio.allowExternalAccess(); + await studio.createNewProp(); + await expect(studio.rightPanel.propNameInput.first()).toHaveValue( + "myCard / Locked" + ); + await studio.rightPanel.propSubmitButton.click(); + + // Parent now has both new owner props, grouped under "myCard". + await studio.rightPanel.switchToComponentDataTab(); + const propsSection = rightPanel.locator('[data-test-id="props-section"]'); + await expect( + propsSection.getByText("myCard", { exact: true }) + ).toBeVisible(); + // Groups are collapsed by default. Click to expand + propsSection.getByText("myCard", { exact: true }).click(); + await expect( + propsSection.getByText("Theme", { exact: true }) + ).toBeVisible(); + await expect( + propsSection.getByText("Locked", { exact: true }) + ).toBeVisible(); + }); + + await test.step("test variant linking works in canvas and live preview", async () => { + await studio.leftPanel.createNewPage("Preview"); + await studio.leftPanel.insertNode("Parent"); + // 2 components (Inner, Parent) + the Preview page → page is iframe #2. + const pageFrame = studio.frame.locator("iframe").nth(2).contentFrame(); + + const propName = "myCard / Theme"; + + await studio.rightPanel.setDataPlasmicProp(propName, "primary"); + await expect(pageFrame.getByText("primary-theme")).toBeVisible(); + + await studio.rightPanel.setDataPlasmicProp(propName, "secondary", { + reset: true, + }); + await expect(pageFrame.getByText("secondary-theme")).toBeVisible(); + + await expect(pageFrame.getByText("unlocked-text")).toBeVisible(); + await rightPanel + .locator('[data-plasmic-prop="myCard / Locked"]') + .last() + .click(); + await expect(pageFrame.getByText("locked-text")).toBeVisible(); + + await studio.withinLiveMode(async (liveFrame) => { + await expect(liveFrame.getByText("secondary-theme")).toBeVisible(); + await expect(liveFrame.getByText("locked-text")).toBeVisible(); + }); + }); + }); + + test("can create, edit, and use a single-choice prop", async ({ models }) => { + const studio = models.studio; + await studio.leftPanel.addComponent("SingleChoiceComp"); + + await studio.rightPanel.addChoiceComponentProp({ + propName: "size", + propType: "choice", + options: ["small", "medium", "large"], + defaultValue: "small", + previewValue: "large", + }); + + // Render the prop value so we can assert on it. + await studio.insertTextWithDynamic("`size = ${$props.size}`"); + const componentBody = studio.frame + .locator("iframe") + .first() + .contentFrame() + .locator("body"); + // The artboard shows the preview value. + await expect(componentBody.getByText("size = large")).toBeVisible(); + + await studio.rightPanel.openComponentPropModal("size"); + + // Editing the allowed values migrates the default/preview. + // Rename "large" -> "huge": the preview follows the rename. + await studio.rightPanel.renameChoiceComponentPropOption(2, "huge"); + await studio.rightPanel.submitPropModal(); + await expect(componentBody.getByText("size = huge")).toBeVisible(); + + // Remove "huge": the preview is unset, so the artboard falls back to the + // default ("small"). + await studio.rightPanel.openComponentPropModal("size"); + await studio.rightPanel.removeChoiceComponentPropOption(2); + await studio.rightPanel.submitPropModal(); + await expect(componentBody.getByText("size = small")).toBeVisible(); + + // Instance on a page: defaults to "small", and the value can be set. + await studio.leftPanel.createNewPage("SingleChoicePage"); + await studio.leftPanel.insertNode("SingleChoiceComp"); + const pageBody = studio.frame + .locator("iframe") + .nth(1) + .contentFrame() + .locator("body"); + await expect(pageBody.getByText("size = small")).toBeVisible(); + + await studio.rightPanel.setInstanceChoiceValue("size", "medium"); + await expect(pageBody.getByText("size = medium")).toBeVisible(); + }); + + test("can create, edit, and use a multi-choice prop", async ({ models }) => { + const studio = models.studio; + await studio.leftPanel.addComponent("MultiChoiceComp"); + + await studio.rightPanel.addChoiceComponentProp({ + propName: "tags", + propType: "multiChoice", + options: ["a", "b", "c"], + defaultValue: ["a"], + previewValue: ["a", "b"], + }); + + await studio.insertTextWithDynamic("`tags = ${$props.tags}`"); + const componentBody = studio.frame + .locator("iframe") + .first() + .contentFrame() + .locator("body"); + // A multi value renders as a comma-joined array. + await expect(componentBody.getByText("tags = a,b")).toBeVisible(); + + // Editing the allowed values keeps the multi default/preview shape. + // Rename "a" -> "x": the preview remaps element-wise (["a","b"] -> ["x","b"]) + await studio.rightPanel.openComponentPropModal("tags"); + await studio.rightPanel.renameChoiceComponentPropOption(0, "x"); + await studio.rightPanel.submitPropModal(); + await expect(componentBody.getByText("tags = x,b")).toBeVisible(); + + // Remove "b": it's dropped from the preview array (["x","b"] -> ["x"]). + await studio.rightPanel.openComponentPropModal("tags"); + await studio.rightPanel.removeChoiceComponentPropOption(1); + await studio.rightPanel.submitPropModal(); + await expect( + componentBody.getByText("tags = x", { exact: true }) + ).toBeVisible(); + + await studio.leftPanel.createNewPage("MultiChoicePage"); + await studio.leftPanel.insertNode("MultiChoiceComp"); + const pageBody = studio.frame + .locator("iframe") + .nth(1) + .contentFrame() + .locator("body"); + await expect(pageBody.getByText("tags = x", { exact: true })).toBeVisible(); + + await studio.rightPanel.setInstanceChoiceValue("tags", ["x", "c"]); + await expect(pageBody.getByText("tags = x,c")).toBeVisible(); + }); + + test("warns and reconciles a linked choice prop when its options drift", async ({ + models, + }) => { + const { studio } = models; + await studio.leftPanel.addComponent("Inner"); - await studio.createComponentProp({ - propName: "someProp", - propType: "text", + await studio.rightPanel.addChoiceComponentProp({ + propName: "size", + propType: "choice", + options: ["small", "medium", "large"], + defaultValue: "small", }); await studio.leftPanel.addComponent("Parent"); await studio.leftPanel.insertNode("Inner"); await studio.rightPanel.renameTreeNode("myCard", { fromRightPanel: true }); - - // Right-click Inner's `someProp` on the instance → Allow external access → Create new prop. await studio.rightPanel.switchToSettingsTab(); - const someProp = studio.frame - .locator('[data-plasmic-prop="someProp"]') - .first(); - await someProp.click({ button: "right" }); + await studio.frame + .locator('[data-plasmic-prop="size"]') + .first() + .click({ button: "right" }); await studio.allowExternalAccess(); await studio.createNewProp(); - - // The new-prop modal should be prefilled with ` / `, - await expect(studio.rightPanel.propNameInput.first()).toHaveValue( - "myCard / someProp" - ); await studio.rightPanel.propSubmitButton.click(); - await studio.rightPanel.switchToComponentDataTab(); - await expect(rightPanel.getByText("myCard", { exact: true })).toBeVisible(); - // Groups are collapsed by default. Click to expand - rightPanel.getByText("myCard", { exact: true }).click(); + // Drift the source: drop "large" from Inner's `size`, so the linked Parent + // prop's options no longer match. + await studio.leftPanel.editComponentWithName("Inner"); + await studio.rightPanel.openComponentPropModal("size"); + await studio.rightPanel.removeChoiceComponentPropOption(2); + await studio.rightPanel.submitPropModal(); + + await expect( + studio.frame.getByText("Linked props out of sync") + ).toBeVisible(); + await studio.frame.getByText("Review in Issues tab").click(); + await expect( - rightPanel.getByText("someProp", { exact: true }) + studio.frame.getByText("no longer matches the linked component prop") ).toBeVisible(); + await studio.frame.getByText("Element myCard").click(); + + await studio.rightPanel.switchToSettingsTab(); + const warning = studio.frame.locator( + '[data-test-id="linked-prop-warning"]' + ); + await expect(warning).toBeVisible(); + + await warning.click(); + await studio.confirmButton.click(); + await expect(warning).not.toBeVisible(); + }); + + test("variant link warns and auto-syncs the linked prop options when variants drift", async ({ + models, + }) => { + const { studio } = models; + const rightPanel = studio.rightPanel.frame; + const variantsSection = rightPanel.locator( + '[data-test-id="variants-picker-section"]' + ); + const warningButton = rightPanel.locator( + '[data-test-id="linked-prop-warning"]' + ); + + await test.step("set up Inner with two variants", async () => { + await studio.leftPanel.addComponent("Inner"); + await studio.rightPanel.switchToComponentDataTab(); + await studio.rightPanel.addVariantToGroup("Theme", "Primary"); + await studio.rightPanel.addVariantToGroup("Theme", "Secondary"); + await studio.rightPanel.resetVariants(); + await studio.insertTextNodeWithContent("base-theme"); + }); + + await test.step("link Theme variant group to a new owner prop on Parent", async () => { + await studio.leftPanel.addComponent("Parent"); + await studio.leftPanel.insertNode("Inner"); + await studio.rightPanel.renameTreeNode("myCard", { + fromRightPanel: true, + }); + + const variantRow = variantsSection.getByText("Theme", { exact: true }); + await variantRow.click({ button: "right" }); + await studio.allowExternalAccess(); + await studio.createNewProp(); + await studio.rightPanel.propSubmitButton.click(); + + await expect(variantsSection.getByText(/Linked to/)).toBeVisible(); + // No drift yet — warning should not be shown. + await expect(warningButton).not.toBeVisible(); + }); + + await test.step("add a third variant on Inner to drift the link", async () => { + await studio.openComponentInNewFrame("Inner", { + editInNewArtboard: true, + }); + await studio.rightPanel.switchToComponentDataTab(); + await studio.rightPanel.addVariantToGroup("Theme", "Tertiary"); + }); + + await test.step("drift surfaces in the Issues tab, which links to the tpl", async () => { + // Adding the variant fired the drift toast; follow it into the Issues + // panel and jump to the affected instance from there. + await expect( + studio.frame.getByText("Linked props out of sync") + ).toBeVisible(); + await studio.frame.getByText("Review in Issues tab").click(); + await expect( + studio.frame.getByText("no longer matches the linked component prop") + ).toBeVisible(); + await studio.frame.getByText("Element myCard").click(); + + await expect(variantsSection.getByText(/Linked to/)).toBeVisible(); + await expect(warningButton).toBeVisible(); + }); + + await test.step("clicking the warning opens the confirm modal with the diff", async () => { + await warningButton.click(); + + await expect(studio.frame.getByText("Update linked prop")).toBeVisible(); + await expect(studio.frame.getByText(/Adding:.*Tertiary/)).toBeVisible(); + }); + + await test.step("confirming the modal syncs the options and clears the warning", async () => { + await studio.frame.locator('[data-test-id="confirm"]').click(); + await expect(warningButton).not.toBeVisible(); + }); + }); + + test("flipping a linked variant group between single- and multi-select converts the owner prop and migrates instance values", async ({ + models, + }) => { + const { studio } = models; + const rightPanel = studio.rightPanel.frame; + const variantsSection = rightPanel.locator( + '[data-test-id="variants-picker-section"]' + ); + const warningButton = rightPanel.locator( + '[data-test-id="linked-prop-warning"]' + ); + + await test.step("set up Inner with a single-select Theme group", async () => { + await studio.leftPanel.addComponent("Inner"); + await studio.rightPanel.switchToComponentDataTab(); + await studio.rightPanel.addVariantToGroup("Theme", "Primary"); + await studio.rightPanel.addVariantToGroup("Theme", "Secondary"); + await studio.rightPanel.resetVariants(); + await studio.insertTextNodeWithContent("base-theme"); + + // Give Primary distinct rendered text so an instance's forwarded value is + // observable — that's what lets us prove the value survives the type + // conversion (not just that the drift warning clears). + await studio.rightPanel.switchToComponentDataTab(); + await studio.rightPanel.selectVariant("Primary"); + await studio.editText("primary-theme"); + await studio.rightPanel.deselectVariant("Theme", "Primary"); + + // Give Secondary its own distinct text on a *separate* node, so that when + // multiple values are set the two variants are independently observable + // (and so we can prove the extra value is dropped on collapse to single). + await studio.insertTextNodeWithContent("secondary-base"); + await studio.rightPanel.switchToComponentDataTab(); + await studio.rightPanel.selectVariant("Secondary"); + await studio.editText("secondary-theme"); + await studio.rightPanel.deselectVariant("Theme", "Secondary"); + }); + + await test.step("link Theme (single-select) to a new owner prop on Parent", async () => { + await studio.leftPanel.addComponent("Parent"); + await studio.leftPanel.insertNode("Inner"); + await studio.rightPanel.renameTreeNode("myCard", { + fromRightPanel: true, + }); + + const variantRow = variantsSection.getByText("Theme", { exact: true }); + await variantRow.click({ button: "right" }); + await studio.allowExternalAccess(); + await studio.createNewProp(); + await studio.rightPanel.propSubmitButton.click(); + + await expect(variantsSection.getByText(/Linked to/)).toBeVisible(); + // In sync (single-select group ↔ single choice prop) — no warning yet. + await expect(warningButton).not.toBeVisible(); + }); + + await test.step("place a Parent instance and set the linked prop (single-select)", async () => { + await studio.leftPanel.createNewPage("Preview"); + await studio.leftPanel.insertNode("Parent"); + + // Set the linked single-choice prop to "Primary" (a scalar value) and + // confirm it drives the Inner Primary variant on the instance. + const linkedProp = rightPanel + .locator('[data-plasmic-prop="myCard / Theme"]') + .last(); + await studio.rightPanel.selectChoiceValue(linkedProp, ["Primary"]); + await studio.switchArena("Preview"); + await studio.withinLiveMode(async (liveFrame) => { + await expect(liveFrame.getByText("primary-theme")).toBeVisible(); + }); + }); + + await test.step("flip Inner's Theme group to multi-select", async () => { + // "Edit in new artboard" is only offered from a mixed arena; we're on the + // Preview page arena here, so open the component's own arena instead. + await studio.openComponentInNewFrame("Inner", { + editInNewArtboard: false, + }); + await studio.rightPanel.toggleVariantGroupMultiSelect("Theme"); + }); + + await test.step("warning appears on the now-out-of-sync link in Parent", async () => { + await studio.openComponentInNewFrame("Parent", { + editInNewArtboard: false, + }); + await studio.leftPanel.switchToTreeTab(); + await studio.leftPanel.selectTreeNode(["myCard"]); + + await expect(variantsSection.getByText(/Linked to/)).toBeVisible(); + await expect(warningButton).toBeVisible(); + }); + + await test.step("confirm dialog announces the single→multi switch", async () => { + await warningButton.click(); + + await expect(studio.frame.getByText("Update linked prop")).toBeVisible(); + await expect(studio.frame.getByText(/Switching to/)).toBeVisible(); + await expect(studio.frame.getByText(/multi-select/)).toBeVisible(); + }); + + await test.step("confirming converts the prop to multiChoice and clears the warning", async () => { + await studio.frame.locator('[data-test-id="confirm"]').click(); + await expect(warningButton).not.toBeVisible(); + }); + + await test.step("the instance value survives the single→multi conversion", async () => { + // The scalar "Primary" should have been coerced to ["Primary"], so the + // instance still activates the Primary variant. + await studio.switchArena("Preview"); + await studio.withinLiveMode(async (liveFrame) => { + await expect(liveFrame.getByText("primary-theme")).toBeVisible(); + }); + }); + + await test.step("add a second value on the instance now that the prop is multi-select", async () => { + // With the prop now multiChoice the instance can hold multiple values; + // add "Secondary" so the stored value becomes ["Primary", "Secondary"]. + await studio.switchArena("Preview"); + await studio.leftPanel.switchToTreeTab(); + await studio.leftPanel.selectTreeNode(["Parent"]); + + // Open the multi-select dropdown via its input rather than clicking the + // editor body — the body overlaps the existing "Primary" pill's remove + // button, and hitting it would drop Primary and leave only Secondary. + const linkedProp = rightPanel + .locator('[data-plasmic-prop="myCard / Theme"]') + .last(); + await linkedProp.locator("input").first().click(); + await rightPanel + .getByRole("option", { name: "Secondary", exact: true }) + .first() + .click(); + await studio.page.keyboard.press("Tab"); + + // Both variants are now active → both nodes render their variant text. + await studio.withinLiveMode(async (liveFrame) => { + await expect(liveFrame.getByText("primary-theme")).toBeVisible(); + await expect(liveFrame.getByText("secondary-theme")).toBeVisible(); + }); + }); + + await test.step("flip Inner's Theme group back to single-select", async () => { + await studio.openComponentInNewFrame("Inner", { + editInNewArtboard: false, + }); + await studio.rightPanel.toggleVariantGroupMultiSelect("Theme"); + }); + + await test.step("warning reappears and the dialog announces the multi→single switch", async () => { + await studio.openComponentInNewFrame("Parent", { + editInNewArtboard: false, + }); + await studio.leftPanel.switchToTreeTab(); + await studio.leftPanel.selectTreeNode(["myCard"]); + + await expect(warningButton).toBeVisible(); + await warningButton.click(); + + await expect(studio.frame.getByText("Update linked prop")).toBeVisible(); + await expect(studio.frame.getByText(/Switching to/)).toBeVisible(); + await expect(studio.frame.getByText(/single-select/)).toBeVisible(); + }); + + await test.step("confirming converts the prop back to single choice and clears the warning", async () => { + await studio.frame.locator('[data-test-id="confirm"]').click(); + await expect(warningButton).not.toBeVisible(); + }); + + await test.step("the multi value gracefully collapses to a single string on multi→single", async () => { + // ["Primary", "Secondary"] must collapse to the scalar "Primary" (the + // first still-valid value). Primary stays active; the now-invalid extra + // Secondary value is dropped, so its variant is no longer rendered. + await studio.switchArena("Preview"); + await studio.withinLiveMode(async (liveFrame) => { + await expect(liveFrame.getByText("primary-theme")).toBeVisible(); + await expect(liveFrame.getByText("secondary-theme")).not.toBeVisible(); + }); + }); }); }); diff --git a/platform/wab/playwright/e2e/components.spec.ts b/platform/wab/playwright/e2e/components.spec.ts index ee6e119962..60164c5f4d 100644 --- a/platform/wab/playwright/e2e/components.spec.ts +++ b/platform/wab/playwright/e2e/components.spec.ts @@ -1,15 +1,9 @@ import { expect } from "@playwright/test"; -import { - FREE_CONTAINER_CAP, - FREE_CONTAINER_LOWER, -} from "../../src/wab/shared/Labels"; +import { FREE_CONTAINER_CAP } from "../../src/wab/shared/Labels"; import { test } from "../fixtures/test"; import { goToProject } from "../utils/studio-utils"; -import { undoAndRedo } from "../utils/undo-and-redo"; -// Test isn't passing even in cypress -// TODO: fix -test.describe.skip("components", () => { +test.describe("components", () => { let projectId: string; test.beforeEach(async ({ apiClient, page }) => { @@ -25,13 +19,13 @@ test.describe.skip("components", () => { ); }); - test("can extract, instantiate, drill, add variants, undo select", async ({ + test("can extract a component, add variants, instantiate and position it", async ({ page, models, apiClient, }) => { + // Create a page artboard with a free container and extract it as a component. await models.studio.leftPanel.addNewFrame(); - const framed = models.studio.frame.locator("iframe").first().contentFrame(); await models.studio.focusFrameRoot(framed); @@ -40,152 +34,57 @@ test.describe.skip("components", () => { await models.studio.extractComponentNamed("Widget"); - await models.studio.openComponentInNewFrame("Widget", { - editInNewArtboard: true, - }); - - await page.keyboard.press("n"); - + // Open the Widget component in its own artboard and edit there. + // Variant groups can only be added while editing the component artboard, not + // while drilled into an instance on the page. + await models.studio.openComponentInNewFrame("Widget"); const framed2 = models.studio.frame.locator("iframe").nth(1).contentFrame(); - await framed.locator("body").click(); - const rootElt = framed.locator(".__wab_root > *:not(style)"); - await rootElt.locator("..").dblclick({ force: true }); - - await page.keyboard.press("Shift+A"); - - await page.keyboard.press("r"); - await models.studio.drawRectRelativeToElt( - framed.locator("body"), - 1, - 1, - 10, - 10 - ); + // Add a child box to the Widget and give it min dimensions. These end up in + // the Widget component's generated CSS (asserted via codegen below). + await models.studio.focusFrameRoot(framed2); + await models.studio.leftPanel.insertNode(FREE_CONTAINER_CAP); await models.studio.rightPanel.switchToDesignTab(); await models.studio.rightPanel.expandSizeSection(); - await models.studio.rightPanel.setDataPlasmicProp("width", "stretch"); - await models.studio.rightPanel.setDataPlasmicProp("height", "stretch"); await models.studio.rightPanel.setDataPlasmicProp("min-width", "20px"); await models.studio.rightPanel.setDataPlasmicProp("min-height", "20px"); + // Add a variant group + variant to the Widget component. await models.studio.rightPanel.switchToComponentDataTab(); - await models.studio.rightPanel.addVariantGroup("WidgetRole"); await models.studio.rightPanel.addVariantToGroup("WidgetRole", "Blah"); - await page.keyboard.press("Enter"); - await page.keyboard.press("Delete"); - await models.studio.deleteInsteadButton.waitFor({ state: "visible" }); - - await page.keyboard.press("Shift+Enter"); - - await models.studio.leftPanel.insertNode(FREE_CONTAINER_CAP); - + // Select the page artboard, add a second Widget instance, and position it. await models.studio.focusFrameRoot(framed); - await models.studio.expectDebugTplTree(` -${FREE_CONTAINER_LOWER} - Widget`); - - await page.keyboard.press("n"); - await models.studio.expectDebugTplTreeForFrame( - 1, - ` -${FREE_CONTAINER_LOWER} - ${FREE_CONTAINER_LOWER} - ${FREE_CONTAINER_LOWER}` - ); - - await models.studio.focusFrameRoot(framed); - const rootElt2 = framed.locator(".__wab_root > *:not(style)"); - await rootElt2.locator("..").locator("..").dblclick({ force: true }); - - await models.studio.focusFrameRoot(framed2); - - await page.keyboard.press("Shift+Enter"); - - await models.studio.focusFrameRoot(framed); - await page.keyboard.press("Shift+Digit1"); - await models.studio.leftPanel.insertNode("Widget"); - await models.studio.expectDebugTplTree(` -${FREE_CONTAINER_LOWER} - Widget - Widget`); const selectionTag = models.studio.frame.locator(".node-outline-tag"); await expect(selectionTag).toContainText("Widget"); + await models.studio.rightPanel.switchToDesignTab(); await models.studio.rightPanel.setPosition("top", 100); await models.studio.rightPanel.setPosition("left", 75); await models.studio.rightPanel.setDataPlasmicProp("width", "200px"); await models.studio.rightPanel.setDataPlasmicProp("height", "300px"); - const selectedElt = await models.studio.getSelectedElt(); - await expect(selectedElt).toHaveCSS("top", "100px"); - await expect(selectedElt).toHaveCSS("left", "75px"); - await expect(selectedElt).toHaveCSS("width", "200px"); - await expect(selectedElt).toHaveCSS("height", "300px"); - + // Convert the page artboard into a component named "Funky". The positioned + // Widget instance's styling lives on Funky, not on Widget. await models.studio.focusFrameRoot(framed); await page.keyboard.press("ControlOrMeta+Alt+k"); await models.studio.submitPrompt("Funky"); - await models.studio.withinLiveMode(async (liveFrame) => { - await expect( - liveFrame.locator(".plasmic_page_wrapper > div > :nth-child(2)") - ).toHaveCSS("top", "100px"); - await expect( - liveFrame.locator(".plasmic_page_wrapper > div > :nth-child(2)") - ).toHaveCSS("left", "75px"); - await expect( - liveFrame.locator(".plasmic_page_wrapper > div > :nth-child(2)") - ).toHaveCSS("width", "200px"); - await expect( - liveFrame.locator(".plasmic_page_wrapper > div > :nth-child(2)") - ).toHaveCSS("height", "300px"); - }); - - async function checkEndState() { - await models.studio.waitAllEval(); - - await models.studio.expectDebugTplTreeForFrame( - 0, - ` -${FREE_CONTAINER_LOWER} - Widget - Widget` - ); - await models.studio.expectDebugTplTreeForFrame( - 1, - ` -${FREE_CONTAINER_LOWER} - ${FREE_CONTAINER_LOWER} - ${FREE_CONTAINER_LOWER}` - ); - - await page.keyboard.press("Shift+Enter"); - await page.keyboard.press("Shift+Enter"); - - await expect(selectionTag).toContainText("Funky"); - - await models.studio.rightPanel.checkNoErrors(); - } - - await checkEndState(); - await undoAndRedo(page); - await checkEndState(); - - await page.waitForTimeout(500); + await models.studio.rightPanel.checkNoErrors(); + + // Verify the generated code splits styling between the two components. + await models.studio.waitForSave(); const bundle = await apiClient.codegen(page); - console.log("codegen bundle", bundle); expect(bundle.components.length).toBe(2); const widgetComp = bundle.components.find( (c: any) => c.renderModuleFileName === "PlasmicWidget.tsx" ); - expect(widgetComp).not.toBeNull(); + expect(widgetComp).toBeTruthy(); expect(widgetComp.cssRules).not.toContain("top: 100px"); expect(widgetComp.cssRules).toContain("min-width: 20px"); expect(widgetComp.cssRules).toContain("min-height: 20px"); @@ -193,7 +92,7 @@ ${FREE_CONTAINER_LOWER} const funkyComp = bundle.components.find( (c: any) => c.renderModuleFileName === "PlasmicFunky.tsx" ); - expect(funkyComp).not.toBeNull(); + expect(funkyComp).toBeTruthy(); expect(funkyComp.cssRules).toContain("top: 100px"); expect(funkyComp.cssRules).toContain("left: 75px"); expect(funkyComp.cssRules).toContain("width: 200px"); diff --git a/platform/wab/playwright/e2e/data-binding.spec.ts b/platform/wab/playwright/e2e/data-binding.spec.ts index ffd7f0e9a0..1186afceab 100644 --- a/platform/wab/playwright/e2e/data-binding.spec.ts +++ b/platform/wab/playwright/e2e/data-binding.spec.ts @@ -302,13 +302,7 @@ test.describe("data-binding", () => { await models.studio.createNewPropButton.click(); await models.studio.linkNewProp("linkProp"); - await models.studio.textContent.click({ button: "right" }); - await models.studio.useDynamicValueButton.click(); - await models.studio.rightPanel.frame - .locator('[data-test-id="data-picker"]') - .getByText("linkProp") - .click(); - await models.studio.rightPanel.saveDataPicker(); + await models.studio.bindRichTextToDynamicValue(["linkProp"]); await models.studio.focusFrameRoot(framed); await models.studio.leftPanel.frame @@ -319,13 +313,14 @@ test.describe("data-binding", () => { .click(); await page.waitForTimeout(1000); - await expect(framed.getByText("Hello /!")).toBeVisible(); + // Dynamic value on a sub-node appends a dynamic pill to existing static text + await expect(framed.getByText("Hello World/!")).toBeVisible(); await models.studio.withinLiveMode(async (liveFrame) => { await expect(liveFrame.locator("#plasmic-app a")).toHaveAttribute( "href", "/" ); - await expect(liveFrame.locator("#plasmic-app a")).toContainText("/"); + await expect(liveFrame.locator("#plasmic-app a")).toContainText("World/"); }); }); }); diff --git a/platform/wab/playwright/e2e/data-rep.spec.ts b/platform/wab/playwright/e2e/data-rep.spec.ts index 3db8ab1f2d..abc384adf9 100644 --- a/platform/wab/playwright/e2e/data-rep.spec.ts +++ b/platform/wab/playwright/e2e/data-rep.spec.ts @@ -252,22 +252,18 @@ test.describe("data-rep", () => { await elementNameInput.fill("item"); await elementNameInput.press("Enter"); - const textContentLabel = models.studio.frame.locator( - '[data-test-id="text-content"] label' - ); - await textContentLabel.click({ button: "right" }); - await models.studio.frame.getByText("Use dynamic value").click(); - await models.studio.rightPanel.selectPathInDataPicker(["item"]); + await models.studio.bindRichTextToDynamicValue(["item"]); await models.studio.focusFrameRoot(frame); await page.waitForTimeout(1000); const rootElt = frame.locator(".__wab_root"); - await expect(rootElt).toContainText("foobarbaz"); + // Dynamic value on a sub-node appends a dynamic pill to existing static text + await expect(rootElt).toContainText("WorldfooWorldbarWorldbaz"); await models.studio.withinLiveMode(async (liveFrame) => { const app = liveFrame.locator("#plasmic-app"); - await expect(app).toContainText("foobarbaz"); + await expect(app).toContainText("WorldfooWorldbarWorldbaz"); }); }); }); diff --git a/platform/wab/playwright/e2e/data-sources/postgres.spec.ts b/platform/wab/playwright/e2e/data-sources/postgres.spec.ts index ffe4026059..71abf8572b 100644 --- a/platform/wab/playwright/e2e/data-sources/postgres.spec.ts +++ b/platform/wab/playwright/e2e/data-sources/postgres.spec.ts @@ -101,7 +101,7 @@ test.describe("Postgres Data Source", () => { await page.waitForTimeout(200); await studio.leftPanel.insertNode("Text"); - await studio.bindTextContentToDynamicValue(["insertedId"]); + await studio.bindRichTextBlockToDynamicValue(["insertedId"]); const updateStepName = "tutorialdbUpdateById"; const createStepName = "tutorialdbCreate"; @@ -245,7 +245,7 @@ async function setupCustomersList(studio: StudioModel) { await studio.leftPanel.insertNode("Horizontal stack"); await studio.rightPanel.repeatOnCustomCode("$queries.query.data"); await studio.leftPanel.insertNode("Heading"); - await studio.bindTextContentToDynamicValue(["currentItem", "contact_name"]); + await studio.bindRichTextBlockToDynamicValue(["currentItem", "contact_name"]); } async function expectCustomersInDesign( diff --git a/platform/wab/playwright/e2e/data-tokens.spec.ts b/platform/wab/playwright/e2e/data-tokens.spec.ts index b7aaf0a7c7..8bf8e04263 100644 --- a/platform/wab/playwright/e2e/data-tokens.spec.ts +++ b/platform/wab/playwright/e2e/data-tokens.spec.ts @@ -236,25 +236,40 @@ test.describe("data token usages", () => { depCCode, ]; + // Unlike the data picker — the submenu can't drill into + // an object token's nested path; skip nested-path tokens there. + const submenuTokens = allTokens.filter((token) => !token.nestedPath); + const insertedValues = [...allTokens, ...submenuTokens].map( + (token) => token.evaluatedValue ?? token.value + ); + await test.step("add all tokens to text fields", async () => { - for (const token of allTokens) { + const insertTextField = async () => { await models.studio.leftPanel.insertText(); - - await models.studio.rightPanel.frame - .locator('[data-test-id="text-content"] label') - .click({ button: "right" }); + return models.studio.rightPanel.frame.locator( + '[data-test-id="text-content"] label' + ); + }; + // Pick every token via the data picker. + for (const token of allTokens) { + const textLabel = await insertTextField(); + await textLabel.click({ button: "right" }); await models.studio.useDynamicValueButton.click(); await selectTokenInDataPicker(models.studio, token); } + // Pick the same tokens again via the right-click "Data tokens" submenu. + for (const token of submenuTokens) { + const textLabel = await insertTextField(); + await models.studio.pickDataTokenFromSubmenu(textLabel, token.name); + } }); await test.step("verify tokens in canvas", async () => { - const expectedTextInCanvas = allTokens - .map((token) => token.evaluatedValue ?? token.value) - .join(""); const canvas = models.studio.componentFrame; - await expect(canvas.locator("body")).toHaveText(expectedTextInCanvas); + await expect(canvas.locator("body")).toHaveText( + insertedValues.join("") + ); }); await test.step("verify tokens in preview", async () => { @@ -263,11 +278,10 @@ test.describe("data token usages", () => { ".plasmic_page_wrapper > div > div" ); - await expect(previewValues).toHaveCount(allTokens.length); + await expect(previewValues).toHaveCount(insertedValues.length); - for (let i = 0; i < allTokens.length; i += 1) { - const value = allTokens[i].evaluatedValue ?? allTokens[i].value; - await expect(previewValues.nth(i)).toContainText(value); + for (let i = 0; i < insertedValues.length; i += 1) { + await expect(previewValues.nth(i)).toContainText(insertedValues[i]); } }); }); @@ -333,6 +347,19 @@ test.describe("data token usages", () => { await dataTokenPopover.close(); await models.studio.leftPanel.assertDataTokenExists("Welcome Text 2"); + + await test.step("can pick the existing token from the Data tokens submenu", async () => { + await models.studio.leftPanel.insertText(); + await models.studio.pickDataTokenFromSubmenu( + targetElement.locator("label"), + newExpectedName + ); + await expect( + targetElement + .locator(".code-editor-input, .templated-string-input") + .getByText(`$dataTokens.${newExpectedJsName}`) + ).toBeVisible(); + }); }); test("can create data token by right clicking component props", async ({ @@ -374,6 +401,7 @@ test.describe("data token usages", () => { ]; await models.studio.leftPanel.createNewPage("TestPage"); await models.studio.leftPanel.insertNode("Slider"); + await models.studio.rightPanel.expandComponentPropsSection(); for (const propInfo of PROP_INFO) { const propRow = models.studio.rightPanel.frame.locator( @@ -429,6 +457,23 @@ test.describe("data token usages", () => { await models.studio.leftPanel.assertDataTokenExists(newExpectedName); } + + await test.step("can pick an existing token from the Data tokens submenu", async () => { + const { displayName, jsName } = PROP_INFO[0]; + await models.studio.leftPanel.insertNode("Slider"); + await models.studio.rightPanel.expandComponentPropsSection(); + const propRow = models.studio.rightPanel.frame.locator( + `[data-test-id="prop-editor-row-${displayName}"]` + ); + await propRow.scrollIntoViewIfNeeded(); + await models.studio.pickDataTokenFromSubmenu( + propRow.locator("label").nth(0), + `${displayName} 2` + ); + await expect( + propRow.locator(`[data-plasmic-prop="${displayName}"]`) + ).toHaveText(`$dataTokens.${jsName}2`); + }); }); test("can create data token by right clicking server query prop", async ({ @@ -443,7 +488,7 @@ test.describe("data token usages", () => { async (route) => { const fixturePath = pathModule.join( __dirname, - "../../cypress/fixtures/strapi-v5-restaurants.json" + "../fixtures-data/strapi-v5-restaurants.json" ); const fixtureData = JSON.parse(fs.readFileSync(fixturePath, "utf-8")); await route.fulfill({ @@ -540,6 +585,23 @@ test.describe("data token usages", () => { await serverQueryModal.waitFor({ state: "hidden" }); await models.studio.leftPanel.assertDataTokenExists(newExpectedName); await models.studio.leftPanel.assertDataTokenExists("Collection"); + + await test.step("can pick an existing token from the Data tokens submenu", async () => { + await models.studio.rightPanel.addServerQueryButton.click(); + await models.studio.rightPanel.serverQueriesSection + .locator(`[data-plasmic-role="labeled-item"]`) + .last() + .click(); + await serverQueryModal.waitFor(); + const hostInput = serverQueryModal + .locator(`[data-test-id="prop-editor-row-host"]`) + .locator(`[data-plasmic-prop="host"]`); + await models.studio.pickDataTokenFromSubmenu( + hostInput, + newExpectedName + ); + await expect(hostInput).toHaveText(`$dataTokens.${newExpectedJsName}`); + }); }); }); diff --git a/platform/wab/playwright/e2e/dynamic-pages.spec.ts b/platform/wab/playwright/e2e/dynamic-pages.spec.ts index a1bb8fbf2e..2255b190c9 100644 --- a/platform/wab/playwright/e2e/dynamic-pages.spec.ts +++ b/platform/wab/playwright/e2e/dynamic-pages.spec.ts @@ -55,7 +55,7 @@ test.describe("dynamic-pages", () => { await page.keyboard.press("Escape"); await models.studio.leftPanel.selectTreeNode(["XXX"]); - await models.studio.bindTextContentToDynamicValue([ + await models.studio.bindRichTextToDynamicValue([ "Page URL path params", "name", ]); @@ -68,9 +68,10 @@ test.describe("dynamic-pages", () => { ); await models.studio.withinLiveMode(async (liveFrame) => { + // Dynamic value on a sub-node appends a dynamic pill to existing static text await expect( liveFrame.locator("#plasmic-app .__wab_text").first() - ).toContainText("Hello World!"); + ).toContainText("Hello XXXWorld!"); }); await models.studio.focusFrameRoot(indexFrame); @@ -92,7 +93,7 @@ test.describe("dynamic-pages", () => { '"Say hello to [child]"', '"NAME"', ]); - await models.studio.bindTextContentToDynamicValue(["currentItem"]); + await models.studio.bindRichTextToDynamicValue(["currentItem"]); await models.studio.leftPanel.selectTreeNode(['"Say hello to [child]"']); await page.keyboard.press("ControlOrMeta+Alt+L"); @@ -103,10 +104,11 @@ test.describe("dynamic-pages", () => { ); await models.studio.waitForSave(); + // Preserves the existing text, so it becomes "NAME" + item const expected = [ - "Say hello to foo", - "Say hello to bar", - "Say hello to baz", + "Say hello to NAMEfoo", + "Say hello to NAMEbar", + "Say hello to NAMEbaz", ]; await models.studio.withinLiveMode(async (liveFrame) => { @@ -121,7 +123,7 @@ test.describe("dynamic-pages", () => { await page.waitForTimeout(1000); await expect( liveFrame.locator("#plasmic-app .__wab_text").first() - ).toContainText("Hello foo!"); + ).toContainText("Hello XXXfoo!"); }); }); }); diff --git a/platform/wab/playwright/e2e/forms/conversion-between-modes.spec.ts b/platform/wab/playwright/e2e/forms/conversion-between-modes.spec.ts index 9250383cb5..6434b2c68f 100644 --- a/platform/wab/playwright/e2e/forms/conversion-between-modes.spec.ts +++ b/platform/wab/playwright/e2e/forms/conversion-between-modes.spec.ts @@ -1,4 +1,4 @@ -import formsBundle from "../../../cypress/bundles/forms.json"; +import formsBundle from "../../bundles/forms.json"; import { PageModels, test } from "../../fixtures/test"; import { ExpectedFormItem, diff --git a/platform/wab/playwright/e2e/forms/dynamic-initial-value.spec.ts b/platform/wab/playwright/e2e/forms/dynamic-initial-value.spec.ts index dd76a7463c..085ee6a945 100644 --- a/platform/wab/playwright/e2e/forms/dynamic-initial-value.spec.ts +++ b/platform/wab/playwright/e2e/forms/dynamic-initial-value.spec.ts @@ -1,6 +1,10 @@ -import { expect } from "@playwright/test"; +import { expect, Locator } from "@playwright/test"; import { test } from "../../fixtures/test"; -import { goToProject, waitForFrameToLoad } from "../../utils/studio-utils"; +import { + checkFormValues, + goToProject, + waitForFrameToLoad, +} from "../../utils/studio-utils"; test.describe("dynamic-initial-value", () => { let projectId: string; @@ -33,6 +37,8 @@ test.describe("dynamic-initial-value", () => { await models.studio.leftPanel.addComponent("Form"); await waitForFrameToLoad(page); + const formFrame = models.studio.frames.first().contentFrame(); + const outlineButton = (models.studio as any).studioFrame.locator( 'button[data-test-tabkey="outline"]' ); @@ -41,6 +47,20 @@ test.describe("dynamic-initial-value", () => { await outlineButton.click(); } + async function expectFormState(value: Record) { + for (const [key, fieldValue] of Object.entries(value)) { + await expect(formFrame.locator("body")).toContainText( + `${JSON.stringify(key)}:${JSON.stringify(fieldValue)}`, + { timeout: 10_000 } + ); + } + } + + await models.studio.leftPanel.insertNode("Text"); + await models.studio.rightPanel.bindTextContentToCustomCode( + "JSON.stringify($state.form.value)" + ); + await models.studio.leftPanel.insertNode("plasmic-antd5-form"); const formItemsAddBtn = models.studio.frame.locator( @@ -53,6 +73,7 @@ test.describe("dynamic-initial-value", () => { "initialValue", "initial text value" ); + await expectFormState({ testField: "initial text value" }); await models.studio.withinLiveMode(async (liveFrame) => { const input = liveFrame.locator('input[name="testField"]'); @@ -64,6 +85,10 @@ test.describe("dynamic-initial-value", () => { await models.studio.rightPanel.setDataPlasmicProp("name", "numberField"); await models.studio.rightPanel.setSelectByLabel("inputType", "Number"); await models.studio.rightPanel.setDataPlasmicProp("initialValue", "123"); + await expectFormState({ + testField: "initial text value", + numberField: 123, + }); await models.studio.withinLiveMode(async (liveFrame) => { const numberInput = liveFrame.locator('input[name="numberField"]'); @@ -78,6 +103,11 @@ test.describe("dynamic-initial-value", () => { "initialValue", "foo bar text area" ); + await expectFormState({ + testField: "initial text value", + numberField: 123, + textAreaField: "foo bar text area", + }); await models.studio.withinLiveMode(async (liveFrame) => { const textarea = liveFrame.locator('textarea[name="textAreaField"]'); @@ -88,6 +118,11 @@ test.describe("dynamic-initial-value", () => { await page.waitForTimeout(500); await models.studio.rightPanel.setDataPlasmicProp("name", "checkboxFalse"); await models.studio.rightPanel.setSelectByLabel("inputType", "Checkbox"); + await expectFormState({ + testField: "initial text value", + numberField: 123, + textAreaField: "foo bar text area", + }); await models.studio.withinLiveMode(async (liveFrame) => { const checkbox = liveFrame.locator( @@ -101,6 +136,12 @@ test.describe("dynamic-initial-value", () => { await models.studio.rightPanel.setDataPlasmicProp("name", "checkboxTrue"); await models.studio.rightPanel.setSelectByLabel("inputType", "Checkbox"); await models.studio.rightPanel.clickDataPlasmicProp("initialValue"); + await expectFormState({ + testField: "initial text value", + numberField: 123, + textAreaField: "foo bar text area", + checkboxTrue: true, + }); await models.studio.withinLiveMode(async (liveFrame) => { const checkbox = liveFrame.locator( @@ -111,4 +152,263 @@ test.describe("dynamic-initial-value", () => { await models.studio.rightPanel.checkNoErrors(); }); + + test("initial values work in advanced form mode", async ({ + models, + page, + }) => { + await models.studio.leftPanel.addComponent("Form"); + await waitForFrameToLoad(page); + + const formFrame = models.studio.frames.first().contentFrame(); + const studioFrame = models.studio.frame; + const treeLabels = models.studio.leftPanel.treeLabels; + + async function expectFormState(value: Record) { + const expected = Object.entries(value) + .map(([k, v]) => `${JSON.stringify(k)}:${JSON.stringify(v)}`) + .join(""); + await expect(formFrame.locator("body")).toContainText(expected, { + timeout: 15_000, + }); + } + + async function expectDataPickerContains(text: string) { + await expect( + studioFrame + .locator('[data-test-id="data-picker"]') + .getByText(text, { exact: false }) + .first() + ).toBeVisible({ timeout: 10_000 }); + } + + // Tree navigation uses each row's [data-test-id="tpltree-{uid}"] and + // [data-test-parent-id] (set in tpl-tree.tsx). Given the form-item row, + // we can scope all descendant lookups by parent-id and avoid the + // ambiguity between the Form's "Slot: children" and the form-item's. + const formItemRow = () => + treeLabels.filter({ hasText: "testItem" }).first(); + + async function expandRow(row: Locator) { + const expander = row.locator( + '.tpltree__label__expander[data-state-isopen="false"]' + ); + if (await expander.isVisible({ timeout: 500 }).catch(() => false)) { + await expander.click(); + // Tree expansion is mostly synchronous, but a small beat helps + // child rows settle before the parent-id lookup that follows. + await page.waitForTimeout(200); + } + } + + async function childRow(parent: Locator, hasText?: string) { + await parent.waitFor({ timeout: 5_000 }); + const parentId = await parent.getAttribute("data-test-id"); + if (!parentId) { + throw new Error("Parent tree row missing data-test-id"); + } + let rows = studioFrame.locator( + `.tpltree__label[data-test-parent-id="${parentId}"]` + ); + if (hasText) { + rows = rows.filter({ hasText }); + } + return rows.first(); + } + + async function focusFormItem() { + await models.studio.leftPanel.switchToTreeTab(); + await formItemRow().click(); + } + + async function focusFormItemSlot() { + await models.studio.leftPanel.switchToTreeTab(); + const formItem = formItemRow(); + await expandRow(formItem); + const slot = await childRow(formItem, `Slot: "children"`); + await slot.click(); + } + + async function focusFormItemChild() { + await models.studio.leftPanel.switchToTreeTab(); + const formItem = formItemRow(); + await expandRow(formItem); + const slot = await childRow(formItem, `Slot: "children"`); + await expandRow(slot); + const child = await childRow(slot); + await child.click(); + } + + async function replaceFormItemChildWith(itemName: string) { + await focusFormItemSlot(); + await models.studio.leftPanel.insertNode(itemName); + } + + // Bind a Text node to the form state so the canvas shows JSON output. + await models.studio.leftPanel.insertNode("Text"); + await models.studio.rightPanel.bindTextContentToCustomCode( + "JSON.stringify($state.form.value)" + ); + + // Insert a default form, remove the two default items, then toggle to + // advanced mode. + await models.studio.leftPanel.insertNode("plasmic-antd5-form"); + await models.studio.rightPanel.removeItemFromArrayProp("formItems", 0); + await models.studio.rightPanel.removeItemFromArrayProp("formItems", 0); + await models.studio.rightPanel.clickDataPlasmicProp( + "simplified-mode-toggle" + ); + await page.waitForTimeout(500); + + // Navigate into Form/Slot:"children", then insert a form-item. + // First form item insertion shows the component presets modal to pick the + // inner control; pick Text. + await models.studio.leftPanel.switchToTreeTab(); + await models.studio.leftPanel.selectTreeNode(["Form", `Slot: "children"`]); + await models.studio.leftPanel.insertNode("plasmic-antd5-form-item", { + expectDrawerToClose: false, + }); + await models.studio.frame + .getByRole("dialog") + .getByRole("button", { name: "Text", exact: true }) + .click(); + await page.waitForTimeout(500); + + // Rename the form item and set name + initialValue. + await models.studio.renameTreeNode("testItem"); + await models.studio.rightPanel.setDataPlasmicProp("name", "test"); + await models.studio.rightPanel.setDataPlasmicProp("initialValue", "hello"); + + await expectFormState({ test: "hello" }); + await checkFormValues( + [{ name: "test", label: "Label", type: "Text", value: "hello" }], + formFrame + ); + + // Delete the Input, then re-open the data picker on initialValue and + // verify the picker echoes the prior value. + await focusFormItemChild(); + await page.keyboard.press("Delete"); + await focusFormItem(); + await models.studio.rightPanel.clickDataPlasmicProp("initialValue"); + await expectDataPickerContains(`"hello"`); + await models.studio.rightPanel.closeDataPicker(); + + // Replace child with a Number Input. + await replaceFormItemChildWith("plasmic-antd5-input-number"); + await focusFormItem(); + await models.studio.rightPanel.setDataPlasmicProp("initialValue", "123", { + reset: true, + }); + await expectFormState({ test: 123 }); + await checkFormValues( + [{ name: "test", label: "Label", type: "Number", value: "123" }], + formFrame + ); + await focusFormItemChild(); + await page.keyboard.press("Delete"); + await focusFormItem(); + await models.studio.rightPanel.clickDataPlasmicProp("initialValue"); + await expectDataPickerContains(`123`); + await models.studio.rightPanel.closeDataPicker(); + + // Replace child with a Checkbox. + await replaceFormItemChildWith("plasmic-antd5-checkbox"); + await focusFormItem(); + await models.studio.rightPanel.clickDataPlasmicProp("initialValue"); + await expectFormState({ test: false }); + await models.studio.rightPanel.clickDataPlasmicProp("initialValue"); + await expectFormState({ test: true }); + await checkFormValues( + [{ name: "test", label: "Label", type: "Checkbox", value: true }], + formFrame + ); + await focusFormItemChild(); + await page.keyboard.press("Delete"); + await focusFormItem(); + await models.studio.rightPanel.clickDataPlasmicProp("initialValue"); + await expectDataPickerContains(`true`); + await models.studio.rightPanel.closeDataPicker(); + + // Replace child with a Select. + await replaceFormItemChildWith("plasmic-antd5-select"); + await focusFormItem(); + await models.studio.rightPanel.setDataPlasmicProp( + "initialValue", + "option1", + { reset: true } + ); + await expectFormState({ test: "option1" }); + await checkFormValues( + [{ name: "test", label: "Label", type: "Select", value: "Option 1" }], + formFrame + ); + await focusFormItemChild(); + await page.keyboard.press("Delete"); + await focusFormItem(); + await models.studio.rightPanel.clickDataPlasmicProp("initialValue"); + await expectDataPickerContains(`"option1"`); + await models.studio.rightPanel.closeDataPicker(); + + // Replace child with a Radio Group. + await replaceFormItemChildWith("plasmic-antd5-radio-group"); + await focusFormItem(); + await models.studio.rightPanel.setDataPlasmicProp( + "initialValue", + "option2", + { reset: true } + ); + await expectFormState({ test: "option2" }); + await checkFormValues( + [ + { + name: "test", + label: "Label", + type: "Radio Group", + value: "option2", + }, + ], + formFrame + ); + await focusFormItemChild(); + await page.keyboard.press("Delete"); + await focusFormItem(); + await models.studio.rightPanel.clickDataPlasmicProp("initialValue"); + await expectDataPickerContains(`"option2"`); + await models.studio.rightPanel.closeDataPicker(); + + // Plume Checkbox. + await replaceFormItemChildWith("Checkbox"); + await focusFormItem(); + await models.studio.rightPanel.clickDataPlasmicProp("initialValue"); + await expectFormState({ test: false }); + await models.studio.rightPanel.clickDataPlasmicProp("initialValue"); + await expectFormState({ test: true }); + await checkFormValues( + [{ name: "test", label: "Label", type: "Checkbox", value: true }], + formFrame + ); + await focusFormItemChild(); + await page.keyboard.press("Delete"); + await focusFormItem(); + await models.studio.rightPanel.clickDataPlasmicProp("initialValue"); + await expectDataPickerContains(`true`); + await models.studio.rightPanel.closeDataPicker(); + + // Plume Text Input. + await replaceFormItemChildWith("Text Input"); + await focusFormItem(); + await models.studio.rightPanel.setDataPlasmicProp( + "initialValue", + "foo bar", + { reset: true } + ); + await expectFormState({ test: "foo bar" }); + await checkFormValues( + [{ name: "test", label: "Label", type: "Text", value: "foo bar" }], + formFrame + ); + + await models.studio.rightPanel.checkNoErrors(); + }); }); diff --git a/platform/wab/playwright/e2e/forms/simplified-all-form-items.spec.ts b/platform/wab/playwright/e2e/forms/simplified-all-form-items.spec.ts index cba867341b..76006e10c8 100644 --- a/platform/wab/playwright/e2e/forms/simplified-all-form-items.spec.ts +++ b/platform/wab/playwright/e2e/forms/simplified-all-form-items.spec.ts @@ -5,9 +5,10 @@ import { checkFormValues, getFormValue, goToProject, + waitForFrameToLoad, } from "../../utils/studio-utils"; -test.describe.skip("simplified-all-form-items", () => { +test.describe("simplified-all-form-items", () => { let projectId: string; test.beforeEach(async ({ apiClient, page }) => { @@ -29,13 +30,14 @@ test.describe.skip("simplified-all-form-items", () => { ); }); - test.skip("can create all types of form items", async ({ models }) => { - await models.studio.createNewComponent("Simplified Form"); + test("can create all types of form items", async ({ page, models }) => { + await models.studio.leftPanel.addComponent("Simplified Form"); + await waitForFrameToLoad(page); await models.studio.leftPanel.insertNode("plasmic-antd5-form"); // Wait for component to be fully loaded - await (models.studio as any).page.waitForTimeout(3000); + await page.waitForTimeout(3000); // Remove default form items (name, message) - matching Cypress exactly await models.studio.rightPanel.removeItemFromArrayProp("formItems", 0); @@ -102,18 +104,20 @@ test.describe.skip("simplified-all-form-items", () => { }); } - await checkFormValues( - expectedFormItems, - (models.studio as any).studioFrame - ); + const nestedFrame = models.studio.frames.first().contentFrame(); + await checkFormValues(expectedFormItems, nestedFrame); await models.studio.leftPanel.insertNode("Text"); await models.studio.rightPanel.bindTextContentToCustomCode( - "JSON.stringify($state.form.value, Object.keys($state.form.value).sort())" + "JSON.stringify($state.form.value, Object.keys($state.form.value ?? {}).sort())" ); - const selectedElt = await models.studio.getSelectedElt(); - await expect(selectedElt).toContainText(getFormValue(expectedFormItems)); + await expect( + nestedFrame + .locator("div") + .filter({ hasText: getFormValue(expectedFormItems) }) + .first() + ).toBeVisible({ timeout: 15000 }); await models.studio.withinLiveMode(async (liveFrame) => { await checkFormValues(expectedFormItems, liveFrame); @@ -141,9 +145,12 @@ test.describe.skip("simplified-all-form-items", () => { liveModeExpectedFormItems[5].value = "radio2"; await checkFormValues(liveModeExpectedFormItems, liveFrame); - await expect(liveFrame.locator("#plasmic-app div")).toContainText( - getFormValue(liveModeExpectedFormItems) - ); + await expect( + liveFrame + .locator("div") + .filter({ hasText: getFormValue(liveModeExpectedFormItems) }) + .first() + ).toBeVisible({ timeout: 15000 }); }); await models.studio.rightPanel.checkNoErrors(); diff --git a/platform/wab/playwright/e2e/global-setup.spec.ts b/platform/wab/playwright/e2e/global-setup.spec.ts index 2d4dbb8327..52cd52eb76 100644 --- a/platform/wab/playwright/e2e/global-setup.spec.ts +++ b/platform/wab/playwright/e2e/global-setup.spec.ts @@ -17,6 +17,10 @@ setup("configure global dev flags", async ({ request, baseURL }) => { autoOpen: true, autoOpen2: true, + // component-props.spec.ts + // The Issues tab content is gated behind this flag. + linting: true, + // imported-token-overrides.spec.ts importedTokenOverrides: true, diff --git a/platform/wab/playwright/e2e/host-app.spec.ts b/platform/wab/playwright/e2e/host-app.spec.ts index 6211626d45..461edeed42 100644 --- a/platform/wab/playwright/e2e/host-app.spec.ts +++ b/platform/wab/playwright/e2e/host-app.spec.ts @@ -1,4 +1,4 @@ -import { expect } from "@playwright/test"; +import { expect, type ConsoleMessage } from "@playwright/test"; import { test } from "../fixtures/test"; import { goToProject, waitForFrameToLoad } from "../utils/studio-utils"; @@ -90,7 +90,7 @@ test.describe("host-app", () => { await models.studio.waitStudioLoaded(); await models.studio.leftPanel.switchToTreeTab(); - // TODO - Cypress uses ["root", "badge"], figure out discrepancy (another below) + // TODO - Cypress used ["root", "badge"], figure out discrepancy (another below) await models.studio.leftPanel.selectTreeNode(["free box", "badge"]); await expect(models.studio.frame.getByText("Plasmician")).toBeVisible(); @@ -129,10 +129,34 @@ test.describe("host-app", () => { await models.studio.rightPanel.checkNoErrors(); + const consoleLogs: string[] = []; + const consoleListener = (msg: ConsoleMessage) => { + if (msg.type() === "log") { + consoleLogs.push(msg.text()); + } + }; + page.on("console", consoleListener); await goToProject(page, `/projects/${projectId}`); - await models.studio.rightPanel.checkNoErrors(); - await models.studio.waitForSave(); + try { + await models.studio.rightPanel.checkNoErrors(); + await models.studio.waitForSave(); + await expect + .poll( + () => + consoleLogs.some((text) => + text.includes("Save result is SkipUpToDate") + ), + { timeout: 15000 } + ) + .toBe(true); + } finally { + page.off("console", consoleListener); + } + + expect( + consoleLogs.some((text) => text.includes("Save result is Success")) + ).toBe(false); await models.studio.rightPanel.configureProjectAppHost( "plasmic-host-updated-old-host" diff --git a/platform/wab/playwright/e2e/hostless-rich-table.spec.ts b/platform/wab/playwright/e2e/hostless-rich-table.spec.ts index 5bc0105616..2359b2ac52 100644 --- a/platform/wab/playwright/e2e/hostless-rich-table.spec.ts +++ b/platform/wab/playwright/e2e/hostless-rich-table.spec.ts @@ -7,7 +7,7 @@ import { goToProject, waitForFrameToLoad } from "../utils/studio-utils"; const queryData = JSON.parse( readFileSync( - path.join(__dirname, "../../cypress/fixtures/northwind-orders-query.json"), + path.join(__dirname, "../fixtures-data/northwind-orders-query.json"), "utf-8" ) ); diff --git a/platform/wab/playwright/e2e/hostless-sanity-io.spec.ts b/platform/wab/playwright/e2e/hostless-sanity-io.spec.ts index 3835407957..aa9604e2f6 100644 --- a/platform/wab/playwright/e2e/hostless-sanity-io.spec.ts +++ b/platform/wab/playwright/e2e/hostless-sanity-io.spec.ts @@ -11,7 +11,7 @@ test.describe("hostless-sanity-io", () => { await page.route(/\/production\?query=\*{_type}$/, async (route) => { const fixturePath = path.join( __dirname, - "../../cypress/fixtures/sanity-io-all.json" + "../fixtures-data/sanity-io-all.json" ); const fixtureData = JSON.parse(fs.readFileSync(fixturePath, "utf-8")); await route.fulfill({ @@ -24,7 +24,7 @@ test.describe("hostless-sanity-io", () => { await page.route(/screening/, async (route) => { const fixturePath = path.join( __dirname, - "../../cypress/fixtures/sanity-io-screening.json" + "../fixtures-data/sanity-io-screening.json" ); const fixtureData = JSON.parse(fs.readFileSync(fixturePath, "utf-8")); await route.fulfill({ @@ -37,7 +37,7 @@ test.describe("hostless-sanity-io", () => { await page.route(/movie/, async (route) => { const fixturePath = path.join( __dirname, - "../../cypress/fixtures/sanity-io-movies.json" + "../fixtures-data/sanity-io-movies.json" ); const fixtureData = JSON.parse(fs.readFileSync(fixturePath, "utf-8")); await route.fulfill({ @@ -68,7 +68,7 @@ test.describe("hostless-sanity-io", () => { await page.route(imageUrls[i], async (route) => { const imagePath = path.join( __dirname, - `../../cypress/fixtures/images/sanity-io/${i + 1}.jpeg` + `../fixtures-data/images/sanity-io/${i + 1}.jpeg` ); const imageData = fs.readFileSync(imagePath); await route.fulfill({ diff --git a/platform/wab/playwright/e2e/hostless-strapi.spec.ts b/platform/wab/playwright/e2e/hostless-strapi.spec.ts index 11c4097a48..308d3525c9 100644 --- a/platform/wab/playwright/e2e/hostless-strapi.spec.ts +++ b/platform/wab/playwright/e2e/hostless-strapi.spec.ts @@ -20,7 +20,7 @@ test.describe("hostless-strapi", () => { if (route.request().url().includes("restaurants-v5")) { const fixturePath = path.join( __dirname, - "../../cypress/fixtures/strapi-v5-restaurants.json" + "../fixtures-data/strapi-v5-restaurants.json" ); const fixtureData = JSON.parse(fs.readFileSync(fixturePath, "utf-8")); await route.fulfill({ @@ -31,7 +31,7 @@ test.describe("hostless-strapi", () => { } else { const fixturePath = path.join( __dirname, - "../../cypress/fixtures/strapi-restaurants.json" + "../fixtures-data/strapi-restaurants.json" ); const fixtureData = JSON.parse(fs.readFileSync(fixturePath, "utf-8")); await route.fulfill({ @@ -45,7 +45,7 @@ test.describe("hostless-strapi", () => { await page.route(/undefined/, async (route) => { const fixturePath = path.join( __dirname, - "../../cypress/fixtures/strapi-error.json" + "../fixtures-data/strapi-error.json" ); const fixtureData = JSON.parse(fs.readFileSync(fixturePath, "utf-8")); await route.fulfill({ @@ -76,7 +76,7 @@ test.describe("hostless-strapi", () => { await page.route(url, async (route) => { const fullImagePath = path.join( __dirname, - "../../cypress/fixtures/", + "../fixtures-data/", imagePath ); const imageData = fs.readFileSync(fullImagePath); diff --git a/platform/wab/playwright/e2e/image-slots.spec.ts b/platform/wab/playwright/e2e/image-slots.spec.ts index fd89762744..e5e94546fa 100644 --- a/platform/wab/playwright/e2e/image-slots.spec.ts +++ b/platform/wab/playwright/e2e/image-slots.spec.ts @@ -125,7 +125,7 @@ test.describe("image-slots", () => { await page.waitForTimeout(100); await page.keyboard.press("Enter"); await page.waitForTimeout(100); - const imgUrl = "https://picsum.photos/50/50"; + const imgUrl = "https://placehold.co/50x50"; const imageUrlInput = models.studio.rightPanel.frame.locator( '[data-test-id="image-url-input"]' ); diff --git a/platform/wab/playwright/e2e/interactions-boolean.spec.ts b/platform/wab/playwright/e2e/interactions-boolean.spec.ts index 1711d73277..cb8083c032 100644 --- a/platform/wab/playwright/e2e/interactions-boolean.spec.ts +++ b/platform/wab/playwright/e2e/interactions-boolean.spec.ts @@ -1,7 +1,7 @@ import { expect } from "@playwright/test"; import { test } from "../fixtures/test"; -import bundles from "../../cypress/bundles"; +import bundles from "../bundles"; import { BooleanInteractionsArena } from "../models/arenas/boolean-interactions"; import { goToProject } from "../utils/studio-utils"; diff --git a/platform/wab/playwright/e2e/interactions-conditional-actions.spec.ts b/platform/wab/playwright/e2e/interactions-conditional-actions.spec.ts index d7fdbf9107..a1dc4a41ad 100644 --- a/platform/wab/playwright/e2e/interactions-conditional-actions.spec.ts +++ b/platform/wab/playwright/e2e/interactions-conditional-actions.spec.ts @@ -1,7 +1,7 @@ import { expect } from "@playwright/test"; import { test } from "../fixtures/test"; -import bundles from "../../cypress/bundles"; +import bundles from "../bundles"; import { ConditionalActionsArena } from "../models/arenas/conditional-actions"; import { goToProject } from "../utils/studio-utils"; diff --git a/platform/wab/playwright/e2e/interactions-custom.spec.ts b/platform/wab/playwright/e2e/interactions-custom.spec.ts index 6a02cb6d21..8fc59eec46 100644 --- a/platform/wab/playwright/e2e/interactions-custom.spec.ts +++ b/platform/wab/playwright/e2e/interactions-custom.spec.ts @@ -1,13 +1,12 @@ import { expect } from "@playwright/test"; import { test } from "../fixtures/test"; -import bundles from "../../cypress/bundles"; +import bundles from "../bundles"; import { goToProject } from "../utils/studio-utils"; const BUNDLE_NAME = "state-management"; -// Interactions not working properly in playwright test -test.describe.skip("state-management-custom-interactions", () => { +test.describe("state-management-custom-interactions", () => { let projectId: string; test.beforeEach(async ({ apiClient, page }) => { projectId = await apiClient.importProjectFromTemplate(bundles[BUNDLE_NAME]); @@ -25,37 +24,25 @@ test.describe.skip("state-management-custom-interactions", () => { test("can create page navigation and custom function interactions", async ({ models, - page, }) => { await models.studio.switchArena("page navigation interactions"); await models.studio.waitStudioLoaded(); - const contentFrame = models.studio.frame - .locator("iframe") - .first() - .contentFrame(); - - await contentFrame.locator("text=Go to page1").click({ force: true }); - + await models.studio.selectInCanvasByText(/^Go to page1$/, "button"); await models.studio.rightPanel.addNavigationInteraction("onClick", { destination: "/page1", }); - await contentFrame - .locator("text=Go to page2") - .first() - .click({ force: true }); - + await models.studio.selectInCanvasByText(/^Go to page2$/, "button"); await models.studio.rightPanel.addNavigationInteraction("onClick", { destination: "`/page2/foo`", isDynamicValue: true, }); - await page.waitForTimeout(100_000); - - await contentFrame - .locator("text=Go to page2 (dynamic value)") - .click({ force: true }); + await models.studio.selectInCanvasByText( + "Go to page2 (dynamic value)", + "button" + ); await models.studio.rightPanel.addNavigationInteraction("onClick", { destination: "`/page2/${$state.count}`", isDynamicValue: true, @@ -85,13 +72,7 @@ test.describe.skip("state-management-custom-interactions", () => { await models.studio.switchArena("custom function interactions"); await models.studio.waitStudioLoaded(); - const contentFrame2 = models.studio.frame - .locator("iframe") - .nth(1) - .contentFrame(); - - await contentFrame2.locator("text=custom increment").click({ force: true }); - + await models.studio.selectInCanvasByText("custom increment", "button"); await models.studio.rightPanel.addComplexInteraction("onClick", [ { actionName: "customFunction", diff --git a/platform/wab/playwright/e2e/interactions-event-handlers.spec.ts b/platform/wab/playwright/e2e/interactions-event-handlers.spec.ts index 38940e4e00..46949e5716 100644 --- a/platform/wab/playwright/e2e/interactions-event-handlers.spec.ts +++ b/platform/wab/playwright/e2e/interactions-event-handlers.spec.ts @@ -1,7 +1,7 @@ import { expect } from "@playwright/test"; import { test } from "../fixtures/test"; -import bundles from "../../cypress/bundles"; +import bundles from "../bundles"; import { goToProject } from "../utils/studio-utils"; const BUNDLE_NAME = "state-management"; diff --git a/platform/wab/playwright/e2e/interactions-number.spec.ts b/platform/wab/playwright/e2e/interactions-number.spec.ts index 7f433beb9f..1624958786 100644 --- a/platform/wab/playwright/e2e/interactions-number.spec.ts +++ b/platform/wab/playwright/e2e/interactions-number.spec.ts @@ -1,7 +1,7 @@ import { expect } from "@playwright/test"; import { test } from "../fixtures/test"; -import bundles from "../../cypress/bundles"; +import bundles from "../bundles"; import { NumberInteractionsArena } from "../models/arenas/number-interactions"; import { goToProject } from "../utils/studio-utils"; diff --git a/platform/wab/playwright/e2e/interactions-objects.spec.ts b/platform/wab/playwright/e2e/interactions-objects.spec.ts index b5e44515e9..10a8005775 100644 --- a/platform/wab/playwright/e2e/interactions-objects.spec.ts +++ b/platform/wab/playwright/e2e/interactions-objects.spec.ts @@ -1,7 +1,7 @@ import { expect } from "@playwright/test"; import { test } from "../fixtures/test"; -import bundles from "../../cypress/bundles"; +import bundles from "../bundles"; import { ObjectInteractionsArena } from "../models/arenas/object-interactions"; import { goToProject } from "../utils/studio-utils"; @@ -23,7 +23,7 @@ test.describe("state-management-object-interactions", () => { ); }); - test("can create all types of object interactions", async ({ + test("can create all types of object and array interactions", async ({ models, page, }) => { @@ -71,5 +71,130 @@ test.describe("state-management-object-interactions", () => { await liveFrame.getByRole("button", { name: "Clear" }).click(); await expect(liveFrame.getByText("undefined")).toBeVisible(); }); + + await models.studio.switchArena("array interactions"); + const arrayArena = await ObjectInteractionsArena.init(page); + + await arrayArena.contentFrame.getByText("Set to").first().click({ + force: true, + }); + await models.studio.rightPanel.switchToSettingsTab(); + await page.waitForTimeout(300); + await models.studio.rightPanel.addComplexInteraction("onClick", [ + { + actionName: "updateVariable", + args: { + variable: ["arrayVar"], + operation: "newValue", + value: '[{text: "foo2"},{text: "bar2"}]', + }, + }, + ]); + + await arrayArena.contentFrame + .getByText("Remove foo", { exact: true }) + .click({ + force: true, + }); + await models.studio.rightPanel.switchToSettingsTab(); + await page.waitForTimeout(300); + await models.studio.rightPanel.addComplexInteraction("onClick", [ + { + actionName: "updateVariable", + args: { + variable: ["arrayVar"], + operation: "splice", + deleteCount: "1", + }, + dynamicArgs: { + startIndex: "currentIndex", + }, + }, + ]); + + await arrayArena.contentFrame.getByText("Remove below foo").click({ + force: true, + }); + await models.studio.rightPanel.switchToSettingsTab(); + await page.waitForTimeout(300); + await models.studio.rightPanel.addComplexInteraction("onClick", [ + { + actionName: "updateVariable", + args: { + variable: ["arrayVar"], + operation: "splice", + }, + dynamicArgs: { + startIndex: "currentIndex", + deleteCount: "$state.arrayVar.length - currentIndex", + }, + }, + ]); + + await arrayArena.contentFrame.getByText("Push element").click({ + force: true, + }); + await models.studio.rightPanel.switchToSettingsTab(); + await page.waitForTimeout(300); + await models.studio.rightPanel.addComplexInteraction("onClick", [ + { + actionName: "updateVariable", + args: { + variable: ["arrayVar"], + operation: "push", + value: '{text: "baz"}', + }, + }, + ]); + + await arrayArena.contentFrame.getByText("Clear variable").click({ + force: true, + }); + await models.studio.rightPanel.switchToSettingsTab(); + await page.waitForTimeout(300); + await models.studio.rightPanel.addComplexInteraction("onClick", [ + { + actionName: "updateVariable", + args: { + variable: ["arrayVar"], + operation: "clearValue", + }, + }, + ]); + + await models.studio.withinLiveMode(async (liveFrame) => { + const app = liveFrame.locator("#plasmic-app"); + + await expect(app).toContainText("length: 2"); + for (const text of ["foo", "bar"]) { + await expect(app).toContainText(text); + } + + await liveFrame.getByText("Push element").click(); + await expect(app).toContainText("length: 3"); + for (const text of ["foo", "bar", "baz"]) { + await expect(app).toContainText(text); + } + + await liveFrame.getByText("Remove below bar").click(); + await expect(app).toContainText("length: 1"); + await expect(app).toContainText("foo"); + + await liveFrame.getByText("Push element").click(); + await expect(app).toContainText("length: 2"); + for (const text of ["foo", "baz"]) { + await expect(app).toContainText(text); + } + + await liveFrame.getByText("Remove foo", { exact: true }).click(); + await expect(app).toContainText("length: 1"); + await expect(app).toContainText("baz"); + + await liveFrame.getByText("Set to").click(); + await expect(app).toContainText("length: 2"); + for (const text of ["foo2", "bar2"]) { + await expect(app).toContainText(text); + } + }); }); }); diff --git a/platform/wab/playwright/e2e/interactions-text.spec.ts b/platform/wab/playwright/e2e/interactions-text.spec.ts index 7432eefc68..d473920756 100644 --- a/platform/wab/playwright/e2e/interactions-text.spec.ts +++ b/platform/wab/playwright/e2e/interactions-text.spec.ts @@ -1,7 +1,7 @@ import { expect } from "@playwright/test"; import { test } from "../fixtures/test"; -import bundles from "../../cypress/bundles"; +import bundles from "../bundles"; import { TextInteractionsArena } from "../models/arenas/text-interactions"; import { goToProject } from "../utils/studio-utils"; diff --git a/platform/wab/playwright/e2e/interactions-variants.spec.ts b/platform/wab/playwright/e2e/interactions-variants.spec.ts index 398e9e56bf..4a22e10fd8 100644 --- a/platform/wab/playwright/e2e/interactions-variants.spec.ts +++ b/platform/wab/playwright/e2e/interactions-variants.spec.ts @@ -1,5 +1,5 @@ import { expect, Locator } from "@playwright/test"; -import bundles from "../../cypress/bundles"; +import bundles from "../bundles"; import { test } from "../fixtures/test"; import { goToProject } from "../utils/studio-utils"; diff --git a/platform/wab/playwright/e2e/plexus-installation.spec.ts b/platform/wab/playwright/e2e/plexus-installation.spec.ts index ad5f21e99a..775dbd50a7 100644 --- a/platform/wab/playwright/e2e/plexus-installation.spec.ts +++ b/platform/wab/playwright/e2e/plexus-installation.spec.ts @@ -522,7 +522,9 @@ test.describe.skip("Plexus Installation", () => { ); await page.keyboard.press("Escape"); - await models.studio.leftPanel.insertNode("Plasmic Design System"); + await models.studio.leftPanel.insertNode("Plasmic Design System", { + expectDrawerToClose: false, + }); await page.waitForTimeout(1000); await verifyInstallationDialog(models); @@ -546,7 +548,9 @@ test.describe.skip("Plexus Installation", () => { ); await page.keyboard.press("Escape"); - await models.studio.leftPanel.insertNode("Plasmic Design System"); + await models.studio.leftPanel.insertNode("Plasmic Design System", { + expectDrawerToClose: false, + }); await page.waitForTimeout(1000); await unflattenInstallation(models); @@ -587,7 +591,9 @@ test.describe.skip("Plexus Installation", () => { ); await page.keyboard.press("Escape"); - await models.studio.leftPanel.insertNode("Plasmic Design System"); + await models.studio.leftPanel.insertNode("Plasmic Design System", { + expectDrawerToClose: false, + }); await page.waitForTimeout(1000); await unflattenInstallation(models); diff --git a/platform/wab/playwright/e2e/rich-text.spec.ts b/platform/wab/playwright/e2e/rich-text.spec.ts index 08ac38b261..3931cb0309 100644 --- a/platform/wab/playwright/e2e/rich-text.spec.ts +++ b/platform/wab/playwright/e2e/rich-text.spec.ts @@ -68,4 +68,50 @@ test.describe("rich-text", () => { await expect(textEditor).toContainText("so we thought!"); }); + + test("create list in text", async ({ page, models }) => { + const pageErrors: string[] = []; + page.on("pageerror", (error) => pageErrors.push(error.message)); + const baseVariantErrors = () => + pageErrors.filter((message) => + message.includes("Cannot add base vs to tpl that already has base vs") + ); + + await models.studio.leftPanel.addNewFrame(); + const artboardFrame = models.studio.frame + .locator("iframe") + .first() + .contentFrame(); + const artboardBody = artboardFrame.locator("body"); + + await artboardBody.click(); + await models.studio.focusCreatedFrameRoot(); + await models.studio.leftPanel.insertNode("Text"); + + const textEditor = artboardFrame.locator(".__wab_editor"); + await textEditor.dblclick({ force: true }); + + const contentEditable = textEditor.locator('[contenteditable="true"]'); + await contentEditable.press(`${modifierKey}+a`); + await contentEditable.press("Backspace"); + + await page.keyboard.insertText("-"); + await page.keyboard.press("Space"); + await page.keyboard.insertText("First item"); + await page.keyboard.press("Enter"); + await page.keyboard.insertText("Second item"); + await page.keyboard.press("Escape"); + + await page.waitForTimeout(500); + expect(baseVariantErrors()).toEqual([]); + + await models.studio.withinLiveMode(async (liveFrame) => { + const listItems = liveFrame.locator(".__wab_text ul li"); + await expect(listItems).toHaveCount(2); + await expect(listItems.nth(0)).toContainText("First item"); + await expect(listItems.nth(1)).toContainText("Second item"); + }); + + expect(baseVariantErrors()).toEqual([]); + }); }); diff --git a/platform/wab/playwright/e2e/routing-arenas.spec.ts b/platform/wab/playwright/e2e/routing-arenas.spec.ts index 4f1c979e39..8c5bb12d39 100644 --- a/platform/wab/playwright/e2e/routing-arenas.spec.ts +++ b/platform/wab/playwright/e2e/routing-arenas.spec.ts @@ -30,7 +30,7 @@ test.describe("routing", () => { const selectedArenaItem = models.studio.frame .locator( - ".src-wab-client-plasmic-plasmic_kit_new_design_system_former_style_controls-PlasmicRowItem-module__rootisSelected-l93xlm" + '[class*="plasmic_kit_style_controls-PlasmicRowItem-module__rootisSelected"]' ) .filter({ hasText: "Custom arena 1" }); @@ -65,7 +65,7 @@ test.describe("routing", () => { await models.studio.projectPanel(); const myComponentItem = models.studio.frame .locator( - ".src-wab-client-plasmic-plasmic_kit_new_design_system_former_style_controls-PlasmicRowItem-module__root-HS42rE" + '[class*="plasmic_kit_style_controls-PlasmicRowItem-module__root-"]' ) .filter({ hasText: "MyComponent" }); await myComponentItem.click(); @@ -77,7 +77,7 @@ test.describe("routing", () => { await models.studio.projectPanel(); const myPageItem = models.studio.frame .locator( - ".src-wab-client-plasmic-plasmic_kit_new_design_system_former_style_controls-PlasmicRowItem-module__root-HS42rE" + '[class*="plasmic_kit_style_controls-PlasmicRowItem-module__root-"]' ) .filter({ hasText: "/my/page" }); await myPageItem.click(); diff --git a/platform/wab/playwright/e2e/routing-branches.spec.ts b/platform/wab/playwright/e2e/routing-branches.spec.ts index f73aaea365..63ff0e975f 100644 --- a/platform/wab/playwright/e2e/routing-branches.spec.ts +++ b/platform/wab/playwright/e2e/routing-branches.spec.ts @@ -1,8 +1,9 @@ -import { expect } from "@playwright/test"; +import { expect, FrameLocator, Locator } from "@playwright/test"; import { test } from "../fixtures/test"; +import { modifierKey } from "../utils/key-utils"; import { goToProject, waitForFrameToLoad } from "../utils/studio-utils"; -test.describe.skip("routing - branch UI not appearing", () => { +test.describe("routing", () => { let projectId: string; test.afterEach(async ({ apiClient }) => { @@ -14,78 +15,98 @@ test.describe.skip("routing - branch UI not appearing", () => { test("should switch branches", async ({ models, page, apiClient }) => { projectId = await apiClient.setupNewProject({ name: "routing-branches", + devFlags: { branching: true }, }); - await goToProject(page, `/projects/${projectId}?devFlags=branching`); + await goToProject(page, `/projects/${projectId}`); await expect(page).not.toHaveURL(/branch=/, { timeout: 15_000 }); + // Poll across up to 3 arena artboards for text, until one matches or timeout expires. + async function getFrameWithText(text: string, timeout = 30_000) { + let found: FrameLocator | undefined; + await expect + .poll( + async () => { + for (const index of [0, 1, 2]) { + const frame = models.studio.getComponentFrameByIndex(index); + if ( + await frame + .getByText(text) + .first() + .isVisible() + .catch(() => false) + ) { + found = frame; + return true; + } + } + return false; + }, + { timeout } + ) + .toBe(true); + return found!; + } + + // Edit the rendered text node by editing the canvas (mirrors canvas text-edit flow). + // dblclick → wait for `.__wab_editing` → type → Escape, mirroring the + // canvas text-edit flow. + async function setCanvasText(frame: Locator | FrameLocator, value: string) { + const fl = "contentFrame" in frame ? frame.contentFrame() : frame; + const editor = fl.locator(".__wab_editor").first(); + await editor.dblclick({ force: true }); + const editing = fl.locator(".__wab_editing").first(); + await editing.waitFor({ state: "visible", timeout: 10_000 }); + const contentEditable = editing.locator('[contenteditable="true"]'); + await contentEditable.waitFor({ state: "visible", timeout: 10_000 }); + // contenteditable becomes visible before Slate installs its selection listener. + // Without this wait the first key event can be dropped. + await page.waitForTimeout(500); + await contentEditable.press(`${modifierKey}+a`); + await contentEditable.press("Backspace"); + await page.keyboard.type(value, { delay: 50 }); + await page.keyboard.press("Escape"); + await expect(editing).toHaveCount(0, { timeout: 5_000 }); + await models.studio.waitForSave(); + } + const mainFrame = await models.studio.createNewComponent("DisplayBranch"); await models.studio.focusFrameRoot(mainFrame); await models.studio.leftPanel.insertNode("Text"); await models.studio.renameSelectionTag("text"); - const canvasBounds = await mainFrame.boundingBox(); - if (canvasBounds) { - await page.mouse.dblclick( - canvasBounds.x + canvasBounds.width / 2, - canvasBounds.y + canvasBounds.height / 2 - ); - await page.waitForTimeout(500); - } - - await page.keyboard.type("Main"); - await page.keyboard.press("Escape"); - await page.waitForTimeout(500); + await setCanvasText(mainFrame, "Main"); + await models.studio.leftPanel.switchToTreeTab(); await models.studio.publishVersion("need to publish before branching"); async function createNewBranch(branchName: string) { await models.studio.leftPanel.switchToTreeTab(); - await page.waitForTimeout(1000); const branchButton = models.studio.frame.locator("#branch-nav-button"); - await branchButton.waitFor({ state: "visible", timeout: 10000 }); await branchButton.click(); - await page.waitForTimeout(500); - const newBranchButton = models.studio.frame - .locator("button") - .filter({ hasText: "New" }); + const newBranchButton = models.studio.frame.getByRole("button", { + name: "New", + exact: true, + }); await newBranchButton.click(); await page.keyboard.type(branchName); await page.keyboard.press("Enter"); - await page.waitForTimeout(2000); - await waitForFrameToLoad(page); - await expect(page).toHaveURL(new RegExp(`branch=${branchName}`), { timeout: 15_000, }); + await waitForFrameToLoad(page); - await models.studio.leftPanel.selectTreeNode(["text"]); - - const frame = models.studio.frames.first(); - const textElement = frame - .locator('div[data-plasmic-role="text"]') - .first(); - await expect(textElement).toContainText("Main"); - - const frameBounds = await frame.boundingBox(); - if (frameBounds) { - await page.mouse.dblclick( - frameBounds.x + frameBounds.width / 2, - frameBounds.y + frameBounds.height / 2 - ); - await page.waitForTimeout(500); - } - - await page.keyboard.press("ControlOrMeta+a"); - await page.keyboard.type(branchName); - await page.keyboard.press("Escape"); - await page.waitForTimeout(500); + const frame = await getFrameWithText("Main"); + await setCanvasText(frame, branchName); + await expect(frame.getByText(branchName).first()).toBeVisible({ + timeout: 10_000, + }); } async function switchBranch(branchName: string) { @@ -93,15 +114,13 @@ test.describe.skip("routing - branch UI not appearing", () => { const branchButton = models.studio.frame.locator("#branch-nav-button"); await branchButton.click(); - await page.waitForTimeout(500); - const branchItem = models.studio.frame - .locator("text=" + branchName) + const popover = models.studio.frame + .locator(".ant-popover--dropdown-like:not(.ant-popover-hidden)") .first(); - await branchItem.click({ force: true }); - - await page.waitForTimeout(2000); - await waitForFrameToLoad(page); + const branchItem = popover.locator(`[value="${branchName}"]`).first(); + await branchItem.waitFor({ state: "visible", timeout: 10_000 }); + await branchItem.click(); if (branchName === "main") { await expect(page).not.toHaveURL(/branch=/, { timeout: 15_000 }); @@ -110,57 +129,40 @@ test.describe.skip("routing - branch UI not appearing", () => { timeout: 15_000, }); } + await waitForFrameToLoad(page); + await models.studio.waitStudioLoaded(); + await models.studio.waitForSave(); } await createNewBranch("Feature"); await switchBranch("main"); - await models.studio.leftPanel.selectTreeNode(["text"]); - const textInMainBranch = models.studio.frames - .first() - .locator('div[data-plasmic-role="text"]') - .first(); - await expect(textInMainBranch).toContainText("Main"); + await getFrameWithText("Main"); await switchBranch("Feature"); - await models.studio.leftPanel.selectTreeNode(["text"]); - const textInFeatureBranch = models.studio.frames - .first() - .locator('div[data-plasmic-role="text"]') - .first(); - await expect(textInFeatureBranch).toContainText("Feature"); - - await goToProject(page, `/projects/${projectId}?branch=main`); - await models.studio.leftPanel.selectTreeNode(["text"]); - let textAfterUrlSwitch = models.studio.frames - .first() - .locator('div[data-plasmic-role="text"]') - .first(); - await expect(textAfterUrlSwitch).toContainText("Main"); - - await goToProject(page, `/projects/${projectId}?branch=Feature`); - await models.studio.leftPanel.selectTreeNode(["text"]); - textAfterUrlSwitch = models.studio.frames - .first() - .locator('div[data-plasmic-role="text"]') - .first(); - await expect(textAfterUrlSwitch).toContainText("Feature"); - - await goToProject(page, `/projects/${projectId}?branch=main`); - await models.studio.leftPanel.selectTreeNode(["text"]); - textAfterUrlSwitch = models.studio.frames - .first() - .locator('div[data-plasmic-role="text"]') - .first(); - await expect(textAfterUrlSwitch).toContainText("Main"); + await getFrameWithText("Feature"); + + // Open the project URL with branch qs and assert the studio loads that branch's tplTree. + async function openBranchByUrl(branchName: string, expectedText: string) { + const url = `/projects/${projectId}?branch=${branchName}`; + await goToProject(page, url); + if (branchName === "main") { + await expect(page).not.toHaveURL(/branch=/, { timeout: 30_000 }); + } else { + await expect(page).toHaveURL(new RegExp(`branch=${branchName}`), { + timeout: 30_000, + }); + } + await getFrameWithText(expectedText); + } + + await openBranchByUrl("main", "Main"); + await openBranchByUrl("Feature", "Feature"); + await openBranchByUrl("main", "Main"); + // Non-existent branch should redirect back to main. await goToProject(page, `/projects/${projectId}?branch=NonExistentBranch`); await expect(page).not.toHaveURL(/branch=/, { timeout: 15_000 }); - await models.studio.leftPanel.selectTreeNode(["text"]); - const textInNonExistent = models.studio.frames - .first() - .locator('div[data-plasmic-role="text"]') - .first(); - await expect(textInNonExistent).toContainText("Main"); + await getFrameWithText("Main"); }); }); diff --git a/platform/wab/playwright/e2e/server-queries.spec.ts b/platform/wab/playwright/e2e/server-queries.spec.ts index 1907b8e131..cdb208dd74 100644 --- a/platform/wab/playwright/e2e/server-queries.spec.ts +++ b/platform/wab/playwright/e2e/server-queries.spec.ts @@ -1,6 +1,7 @@ import { expect, Page } from "@playwright/test"; import { PageModels, test } from "../fixtures/test"; import { setDynamicVisibility } from "../utils/auto-open-utils"; +import { pasteIntoMonaco } from "../utils/key-utils"; import { goToProject } from "../utils/studio-utils"; const MOCK_API_URL = "https://mock-api-for-server-queries.test"; @@ -86,20 +87,23 @@ async function copyQueryFromPage( ) { await models.studio.rightPanel.addServerQueryButton.click(); - await models.studio.frame + // Hover to open antd nested submenus. Clicking can race with submenu open/close + // and leave the menu collapsed before the leaf is clickable. + const copyFromTitle = models.studio.frame .locator(".ant-dropdown-menu-submenu-title") - .filter({ hasText: "Copy from..." }) - .click(); + .filter({ hasText: "Copy from..." }); + await copyFromTitle.hover(); - await models.studio.frame + const sourcePageTitle = models.studio.frame .locator(".ant-dropdown-menu-submenu-title") - .filter({ hasText: sourcePage }) - .click(); + .filter({ hasText: sourcePage }); + await sourcePageTitle.hover(); - await models.studio.frame + const queryItem = models.studio.frame .locator(".ant-dropdown-menu-item") - .getByText(queryName, { exact: true }) - .click(); + .getByText(queryName, { exact: true }); + await queryItem.waitFor({ state: "visible" }); + await queryItem.click(); } /** @@ -173,9 +177,6 @@ test.describe("server queries", () => { projectId = await apiClient.setupNewProject({ name: "custom-code-server-queries", }); - await page - .context() - .grantPermissions(["clipboard-read", "clipboard-write"]); await goToProject( page, `/projects/${projectId}?serverQueries=true&dataTokens=true` @@ -223,12 +224,10 @@ test.describe("server queries", () => { await test.step('Create "Greeting" query with data token from inspector', async () => { const codeEditor = await openNewCustomCodeQuery(models, "Greeting"); - await page.evaluate(() => - navigator.clipboard.writeText( - "await new Promise(resolve => setTimeout(() => {\n resolve(`Welcome to ${ }`)\n}, 2000))" - ) + await pasteIntoMonaco( + codeEditor, + "await new Promise(resolve => setTimeout(() => {\n resolve(`Welcome to ${ }`)\n}, 2000))" ); - await page.keyboard.press("ControlOrMeta+V"); // Position cursor between ${ and } to insert the data token there for (let i = 0; i < 14; i++) { @@ -260,7 +259,7 @@ test.describe("server queries", () => { await assertQuerySummary("greeting"); await test.step('Create "Full Greeting" query with $q reference from inspector', async () => { - await openNewCustomCodeQuery(models, "Full Greeting"); + const codeEditor = await openNewCustomCodeQuery(models, "Full Greeting"); // Insert $q.greeting.data from the data context inspector await serverQueryModal.locator('[data-insert-path="$q"]').click(); @@ -275,10 +274,9 @@ test.describe("server queries", () => { .filter({ hasText: "Insert" }) .click(); - // Type the rest of the expression await page.keyboard.press("End"); - await page.keyboard.type(' + ", enjoy your stay!', { delay: 5 }); - await page.keyboard.press("ArrowRight"); + // Use synthetic paste so Monaco doesn't auto-close the inner `"`. + await pasteIntoMonaco(codeEditor, ' + ", enjoy your stay!"'); await serverQueryModal.locator("button").getByText("Execute").click(); await expect(previewResult).toContainText( @@ -339,12 +337,8 @@ test.describe("server queries", () => { ); await dataPicker.waitFor({ state: "visible" }); - // Select fullGreeting2 > data — this verifies the duplicated - // query is available in the data picker - await models.studio.rightPanel.selectPathInDataPicker([ - "fullGreeting2", - "data", - ]); + // Select fullGreeting2 to verify the duplicated query is available in the picker. + await models.studio.rightPanel.selectPathInDataPicker(["fullGreeting2"]); // Verify the text element shows the query result on the canvas await expect( @@ -502,6 +496,241 @@ test.describe("server queries", () => { ); }); }); + + test("param required validation, removal, and reset to default", async ({ + apiClient, + page, + models, + }) => { + // The graphql function registers a flattened object param whose fields + // exercise everything under test: `url` (required, no default), `request` + // (required, no default), and `method` (optional, defaults to "POST"). + projectId = await apiClient.setupProjectWithHostlessPackages({ + name: "server-queries-graphql-params", + hostLessPackagesInfo: { + name: "graphql", + npmPkg: ["@plasmicpkgs/graphql"], + }, + }); + await goToProject(page, `/projects/${projectId}?serverQueries=true`); + + const GRAPHQL_MOCK_URL = "https://mock-graphql-for-server-queries.test"; + const receivedMethods: string[] = []; + await page.route(GRAPHQL_MOCK_URL, async (route) => { + receivedMethods.push(route.request().method()); + await route.fulfill({ + status: 200, + contentType: "application/json", + body: JSON.stringify({ data: { hello: "world" } }), + }); + }); + + await models.studio.leftPanel.createNewPage("GraphQL Page"); + await models.studio.rightPanel.clickPageData(); + + const serverQueryModal = models.studio.serverQueryBottomModal; + const previewResult = serverQueryModal.locator(".code-preview-inner"); + const executeButton = serverQueryModal + .locator("button") + .getByText("Execute"); + + // First query in the project, so the add button creates it directly. + await models.studio.rightPanel.addServerQueryButton.click(); + await models.studio.rightPanel.serverQueriesSection + .locator(`[data-plasmic-role="labeled-item"]`) + .last() + .click(); + await serverQueryModal + .locator(`[data-test-id="query-name"] input`) + .fill("gqlQuery"); + + const urlRow = serverQueryModal.locator( + '[data-test-id="prop-editor-row-url"]' + ); + const methodRow = serverQueryModal.locator( + '[data-test-id="prop-editor-row-method"]' + ); + const requestRow = serverQueryModal.locator( + '[data-test-id="prop-editor-row-request"]' + ); + const urlInput = urlRow.locator('[data-plasmic-prop="url"]'); + const invalidArgIcons = serverQueryModal.locator(".invalid-arg-icon"); + const setIndicator = (row: typeof urlRow) => + row.locator('[class*="DefinedIndicator--set"]'); + + await test.step("required params are labeled; method seeded with its default", async () => { + await expect(urlRow.locator(".required-prop")).toBeVisible(); + await expect(requestRow.locator(".required-prop")).toBeVisible(); + await expect(methodRow.locator(".required-prop")).toHaveCount(0); + + // method has a registered defaultValue ("POST"), so it starts set + // (with a defined indicator), while url starts unset. + await expect(methodRow).toContainText("POST"); + await expect(setIndicator(methodRow)).toBeVisible(); + await expect(setIndicator(urlRow)).toHaveCount(0); + }); + + await test.step("executing with missing required params is blocked with validation errors", async () => { + await executeButton.click(); + await expect( + serverQueryModal.getByText("Fix validation errors") + ).toBeVisible(); + await expect( + serverQueryModal.getByText("These parameters have invalid values:") + ).toBeVisible(); + await expect(serverQueryModal.getByText("URL: Required")).toBeVisible(); + await expect( + serverQueryModal.getByText("Request: Required") + ).toBeVisible(); + await expect(invalidArgIcons).toHaveCount(2); + expect(receivedMethods).toEqual([]); + }); + + await test.step("filling a required param clears its validation error on next execute", async () => { + await urlInput.click(); + await models.studio.page.keyboard.type(GRAPHQL_MOCK_URL); + await models.studio.page.keyboard.press("Enter"); + await expect(setIndicator(urlRow)).toBeVisible(); + + await executeButton.click(); + await expect( + serverQueryModal.getByText("This parameter has an invalid value:") + ).toBeVisible(); + await expect( + serverQueryModal.getByText("Request: Required") + ).toBeVisible(); + await expect( + serverQueryModal.getByText("URL: Required") + ).not.toBeVisible(); + await expect(invalidArgIcons).toHaveCount(1); + }); + + await test.step("removing a param without defaultValue unsets it", async () => { + await urlInput.click({ button: "right" }); + await models.studio.frame + .locator(".ant-dropdown-menu-item") + .filter({ hasText: "Remove URL param" }) + .click(); + await expect(urlInput).toContainText("unset"); + await expect(setIndicator(urlRow)).toHaveCount(0); + + // Restore it for the final execute. + await urlInput.click(); + await models.studio.page.keyboard.type(GRAPHQL_MOCK_URL); + await models.studio.page.keyboard.press("Enter"); + await expect(setIndicator(urlRow)).toBeVisible(); + }); + + await test.step("removing a param with defaultValue resets it to the default", async () => { + await methodRow.locator('[data-plasmic-prop="method"]').click(); + await models.studio.frame.locator(`[data-key="'GET'"]`).click(); + await expect(methodRow).toContainText("GET"); + + await methodRow + .getByText("Method", { exact: true }) + .click({ button: "right" }); + await models.studio.frame + .locator(".ant-dropdown-menu-item") + .filter({ hasText: "Remove Method param" }) + .click(); + await expect(methodRow).toContainText("POST"); + await expect(setIndicator(methodRow)).toBeVisible(); + }); + + await test.step("query executes once all required params are set", async () => { + // Set `request` as a dynamic value to avoid the GraphiQL editor UI. + await requestRow + .getByText("Request", { exact: true }) + .click({ button: "right" }); + await models.studio.frame.getByText("Use dynamic value").click(); + await models.studio.rightPanel.insertMonacoCode( + '({ query: "query { hello }" })' + ); + await expect(setIndicator(requestRow)).toBeVisible(); + + await executeButton.click(); + await expect(previewResult).toContainText("statusCode: 200"); + await expect( + serverQueryModal.getByText("Fix validation errors") + ).not.toBeVisible(); + await expect(invalidArgIcons).toHaveCount(0); + + // The reset `method` default actually flowed through to the request. + expect([...new Set(receivedMethods)]).toEqual(["POST"]); + + await serverQueryModal.locator("button").getByText("Save").click(); + await serverQueryModal.waitFor({ state: "hidden" }); + }); + }); + + test("Use Data Query interaction runs custom code with await", async ({ + apiClient, + page, + models, + }) => { + projectId = await apiClient.setupNewProject({ + name: "use-data-query-interaction-await", + }); + await page + .context() + .grantPermissions(["clipboard-read", "clipboard-write"]); + await generateMocks(page); + await goToProject(page, `/projects/${projectId}?serverQueries=true`); + + await models.studio.leftPanel.createNewPage("Await Page"); + + // State the second interaction will write into, so live mode has something + // to assert against. + await models.studio.rightPanel.clickPageData(); + await models.studio.rightPanel.addState({ + name: "todoTitle", + variableType: "text", + accessType: "private", + initialValue: "", + }); + + // Button that triggers the interaction. + await models.studio.leftPanel.switchToTreeTab(); + await models.studio.leftPanel.insertNode("Button"); + + await models.studio.rightPanel.addComplexInteraction("onClick", [ + { + actionName: "customFunctionOp", + args: { + customFunctionOpCode: `const res = await fetch("${MOCK_API_URL}/todos/1");\nres.json()`, + }, + }, + { + actionName: "customFunctionOp", + args: { + customFunctionOpCode: "$steps.customCodeQuery.title.toUpperCase()", + }, + assertCustomFunctionOpModal: async (modal) => { + await expect( + modal.locator('[data-insert-path="$steps"]') + ).toBeVisible(); + }, + }, + { + actionName: "updateVariable", + args: { + variable: ["todoTitle"], + operation: "newValue", + value: "$steps.customCodeQuery2", + }, + }, + ]); + + // Text bound to the state, so we can assert the runtime result. + await models.studio.leftPanel.switchToTreeTab(); + await models.studio.leftPanel.insertNode("Text"); + await bindTextContent(models, "$state.todoTitle"); + + await models.studio.withinLiveMode(async (liveFrame) => { + await liveFrame.getByRole("button").click(); + await expect(liveFrame.getByText("BUY MILK")).toBeVisible(); + }); + }); }); const ADVANCED_MOCK_URL = "https://mock-api-advanced-sq.test"; diff --git a/platform/wab/playwright/e2e/signup.spec.ts b/platform/wab/playwright/e2e/signup.spec.ts index d6268507ec..240462b957 100644 --- a/platform/wab/playwright/e2e/signup.spec.ts +++ b/platform/wab/playwright/e2e/signup.spec.ts @@ -106,9 +106,20 @@ test.describe.skip("Signup flow", () => { .getByText("Enter valid emails only, comma separated...") .waitFor({ timeout: 5000 }); + await page + .locator('[data-test-id="invite-emails"] .ant-select-selection-item', { + hasText: "user2@g", + }) + .locator(".ant-select-selection-item-remove") + .click(); + await page.getByRole("combobox").click(); + await page.keyboard.type("user2@gmail.com"); + await page.keyboard.press("Enter"); + await page.keyboard.press("Escape"); + await Promise.all([ page.waitForURL(`**/projects/${projectId}**`, { timeout: 60_000 }), - page.getByText("Do this later").click(), + page.getByText("Send invites").click(), ]); await waitForFrameToLoad(page); diff --git a/platform/wab/playwright/e2e/variants.spec.ts b/platform/wab/playwright/e2e/variants.spec.ts index 10d2ec6627..dc4111bab4 100644 --- a/platform/wab/playwright/e2e/variants.spec.ts +++ b/platform/wab/playwright/e2e/variants.spec.ts @@ -75,10 +75,9 @@ test.describe("variants", () => { .filter({ hasText: "Base" }) .click(); - await models.studio.rightPanel.addVariantGroup("Role"); await models.studio.rightPanel.addVariantToGroup("Role", "Primary"); await models.studio.rightPanel.addVariantToGroup("Role", "Secondary"); - await resetVariants(models); + await models.studio.rightPanel.resetVariants(); await models.studio.rightPanel.switchToComponentDataTab(); @@ -95,7 +94,7 @@ test.describe("variants", () => { await models.studio.rightPanel.switchToDesignTab(); await chooseFont(models, "Courier"); - await deselectVariant(models, "Role", "Primary"); + await models.studio.rightPanel.deselectVariant("Role", "Primary"); await models.studio.frame .locator('[data-event="variantspanel-variant-row"]', { @@ -118,12 +117,11 @@ test.describe("variants", () => { ); await expect(frame.locator("span").first()).toHaveCSS("font-size", "36px"); - await resetVariants(models); + await models.studio.rightPanel.resetVariants(); - await models.studio.rightPanel.addVariantGroup("Size"); await models.studio.rightPanel.addVariantToGroup("Size", "small"); await models.studio.rightPanel.addVariantToGroup("Size", "large"); - await resetVariants(models); + await models.studio.rightPanel.resetVariants(); await models.studio.frame .locator('[data-test-class="variants-section"]', { hasText: "small" }) @@ -131,7 +129,7 @@ test.describe("variants", () => { await models.studio.rightPanel.chooseFontSize("10px"); await models.studio.rightPanel.switchToComponentDataTab(); await expect(frame.locator("span").first()).toHaveCSS("font-size", "10px"); - await resetVariants(models); + await models.studio.rightPanel.resetVariants(); await models.studio.frame .locator('[data-test-class="variants-section"]', { hasText: "Primary" }) @@ -144,7 +142,7 @@ test.describe("variants", () => { await page.waitForTimeout(100); await expect(frame.locator("span").first()).toHaveCSS("font-size", "11px"); - await resetVariants(models); + await models.studio.rightPanel.resetVariants(); await models.studio.frame .locator('[data-test-class="variant-row"]', { hasText: "Secondary" }) @@ -162,7 +160,9 @@ test.describe("variants", () => { await frame.getByText("Horizontal stack").click({ force: true }); - await models.studio.leftPanel.insertNode("More HTML elements"); + await models.studio.leftPanel.insertNode("More HTML elements", { + expectDrawerToClose: false, + }); await page.waitForTimeout(500); await models.studio.leftPanel.addSearchInput.fill("Unstyled text input"); @@ -215,7 +215,7 @@ test.describe("variants", () => { ); }); - await resetVariants(models); + await models.studio.rightPanel.resetVariants(); await models.studio.frame .locator('[data-test-class="variant-row"]', { hasText: "Secondary" }) @@ -243,7 +243,7 @@ test.describe("variants", () => { .locator(".ant-notification-notice-close-x") .click(); - await resetVariants(models); + await models.studio.rightPanel.resetVariants(); await page.waitForTimeout(500); await models.studio.rightPanel.switchToComponentDataTab(); @@ -309,41 +309,6 @@ test.describe("variants", () => { }); }); -async function resetVariants(models: PageModels) { - await models.studio.rightPanel.switchToComponentDataTab(); - const baseVariant = models.studio.frame - .locator('[data-test-class="variant-row"]') - .filter({ hasText: "Base" }); - if (await baseVariant.isVisible()) { - await baseVariant.click(); - } else { - const activeVariants = models.studio.frame.locator( - '[data-test-class="variant-pin-button-deactivate"]' - ); - const count = await activeVariants.count(); - for (let i = 0; i < count; i++) { - await activeVariants.nth(0).click(); - } - } -} -async function deselectVariant( - models: PageModels, - groupName: string, - variantName: string -) { - await models.studio.rightPanel.switchToComponentDataTab(); - const variantGroup = models.studio.frame - .locator('[data-test-class="variants-section"]') - .filter({ hasText: groupName }); - const variant = variantGroup - .locator('[data-test-class="variant-row"]') - .filter({ hasText: variantName }) - .locator('button[data-test-class="variant-record-button-stop"]'); - if (await variant.isVisible()) { - await variant.click(); - } -} - async function chooseFont(models: PageModels, fontName: string) { await models.studio.rightPanel.switchToDesignTab(); await models.studio.rightPanel.fontFamilyInput.click(); diff --git a/platform/loader-tests/cypress/fixtures/images/sanity-io/1.jpeg b/platform/wab/playwright/fixtures-data/images/sanity-io/1.jpeg similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/sanity-io/1.jpeg rename to platform/wab/playwright/fixtures-data/images/sanity-io/1.jpeg diff --git a/platform/loader-tests/cypress/fixtures/images/sanity-io/10.jpeg b/platform/wab/playwright/fixtures-data/images/sanity-io/10.jpeg similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/sanity-io/10.jpeg rename to platform/wab/playwright/fixtures-data/images/sanity-io/10.jpeg diff --git a/platform/loader-tests/cypress/fixtures/images/sanity-io/11.jpeg b/platform/wab/playwright/fixtures-data/images/sanity-io/11.jpeg similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/sanity-io/11.jpeg rename to platform/wab/playwright/fixtures-data/images/sanity-io/11.jpeg diff --git a/platform/loader-tests/cypress/fixtures/images/sanity-io/12.jpeg b/platform/wab/playwright/fixtures-data/images/sanity-io/12.jpeg similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/sanity-io/12.jpeg rename to platform/wab/playwright/fixtures-data/images/sanity-io/12.jpeg diff --git a/platform/loader-tests/cypress/fixtures/images/sanity-io/13.jpeg b/platform/wab/playwright/fixtures-data/images/sanity-io/13.jpeg similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/sanity-io/13.jpeg rename to platform/wab/playwright/fixtures-data/images/sanity-io/13.jpeg diff --git a/platform/loader-tests/cypress/fixtures/images/sanity-io/14.jpeg b/platform/wab/playwright/fixtures-data/images/sanity-io/14.jpeg similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/sanity-io/14.jpeg rename to platform/wab/playwright/fixtures-data/images/sanity-io/14.jpeg diff --git a/platform/loader-tests/cypress/fixtures/images/sanity-io/2.jpeg b/platform/wab/playwright/fixtures-data/images/sanity-io/2.jpeg similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/sanity-io/2.jpeg rename to platform/wab/playwright/fixtures-data/images/sanity-io/2.jpeg diff --git a/platform/loader-tests/cypress/fixtures/images/sanity-io/3.jpeg b/platform/wab/playwright/fixtures-data/images/sanity-io/3.jpeg similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/sanity-io/3.jpeg rename to platform/wab/playwright/fixtures-data/images/sanity-io/3.jpeg diff --git a/platform/loader-tests/cypress/fixtures/images/sanity-io/4.jpeg b/platform/wab/playwright/fixtures-data/images/sanity-io/4.jpeg similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/sanity-io/4.jpeg rename to platform/wab/playwright/fixtures-data/images/sanity-io/4.jpeg diff --git a/platform/loader-tests/cypress/fixtures/images/sanity-io/5.jpeg b/platform/wab/playwright/fixtures-data/images/sanity-io/5.jpeg similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/sanity-io/5.jpeg rename to platform/wab/playwright/fixtures-data/images/sanity-io/5.jpeg diff --git a/platform/loader-tests/cypress/fixtures/images/sanity-io/6.jpeg b/platform/wab/playwright/fixtures-data/images/sanity-io/6.jpeg similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/sanity-io/6.jpeg rename to platform/wab/playwright/fixtures-data/images/sanity-io/6.jpeg diff --git a/platform/loader-tests/cypress/fixtures/images/sanity-io/7.jpeg b/platform/wab/playwright/fixtures-data/images/sanity-io/7.jpeg similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/sanity-io/7.jpeg rename to platform/wab/playwright/fixtures-data/images/sanity-io/7.jpeg diff --git a/platform/loader-tests/cypress/fixtures/images/sanity-io/8.jpeg b/platform/wab/playwright/fixtures-data/images/sanity-io/8.jpeg similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/sanity-io/8.jpeg rename to platform/wab/playwright/fixtures-data/images/sanity-io/8.jpeg diff --git a/platform/loader-tests/cypress/fixtures/images/sanity-io/9.jpeg b/platform/wab/playwright/fixtures-data/images/sanity-io/9.jpeg similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/sanity-io/9.jpeg rename to platform/wab/playwright/fixtures-data/images/sanity-io/9.jpeg diff --git a/platform/loader-tests/cypress/fixtures/images/strapi/Big_Smoke_Burger_logo_svg.png b/platform/wab/playwright/fixtures-data/images/strapi/Big_Smoke_Burger_logo_svg.png similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/strapi/Big_Smoke_Burger_logo_svg.png rename to platform/wab/playwright/fixtures-data/images/strapi/Big_Smoke_Burger_logo_svg.png diff --git a/platform/loader-tests/cypress/fixtures/images/strapi/Bonchon_Logo.png b/platform/wab/playwright/fixtures-data/images/strapi/Bonchon_Logo.png similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/strapi/Bonchon_Logo.png rename to platform/wab/playwright/fixtures-data/images/strapi/Bonchon_Logo.png diff --git a/platform/loader-tests/cypress/fixtures/images/strapi/Buffalo_Wild_Wings_logo_vertical_svg.png b/platform/wab/playwright/fixtures-data/images/strapi/Buffalo_Wild_Wings_logo_vertical_svg.png similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/strapi/Buffalo_Wild_Wings_logo_vertical_svg.png rename to platform/wab/playwright/fixtures-data/images/strapi/Buffalo_Wild_Wings_logo_vertical_svg.png diff --git a/platform/loader-tests/cypress/fixtures/images/strapi/Burger_King_2020_svg.png b/platform/wab/playwright/fixtures-data/images/strapi/Burger_King_2020_svg.png similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/strapi/Burger_King_2020_svg.png rename to platform/wab/playwright/fixtures-data/images/strapi/Burger_King_2020_svg.png diff --git a/platform/loader-tests/cypress/fixtures/images/strapi/Cafe_Coffee_Day_logo.png b/platform/wab/playwright/fixtures-data/images/strapi/Cafe_Coffee_Day_logo.png similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/strapi/Cafe_Coffee_Day_logo.png rename to platform/wab/playwright/fixtures-data/images/strapi/Cafe_Coffee_Day_logo.png diff --git a/platform/loader-tests/cypress/fixtures/images/strapi/Chili_s_Logo_svg.png b/platform/wab/playwright/fixtures-data/images/strapi/Chili_s_Logo_svg.png similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/strapi/Chili_s_Logo_svg.png rename to platform/wab/playwright/fixtures-data/images/strapi/Chili_s_Logo_svg.png diff --git a/platform/loader-tests/cypress/fixtures/images/strapi/Chipotle_Mexican_Grill_logo_svg.png b/platform/wab/playwright/fixtures-data/images/strapi/Chipotle_Mexican_Grill_logo_svg.png similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/strapi/Chipotle_Mexican_Grill_logo_svg.png rename to platform/wab/playwright/fixtures-data/images/strapi/Chipotle_Mexican_Grill_logo_svg.png diff --git a/platform/loader-tests/cypress/fixtures/images/strapi/strapi-image-fixtures.ts b/platform/wab/playwright/fixtures-data/images/strapi/strapi-image-fixtures.ts similarity index 100% rename from platform/loader-tests/cypress/fixtures/images/strapi/strapi-image-fixtures.ts rename to platform/wab/playwright/fixtures-data/images/strapi/strapi-image-fixtures.ts diff --git a/platform/wab/cypress/fixtures/northwind-orders-query.json b/platform/wab/playwright/fixtures-data/northwind-orders-query.json similarity index 100% rename from platform/wab/cypress/fixtures/northwind-orders-query.json rename to platform/wab/playwright/fixtures-data/northwind-orders-query.json diff --git a/platform/wab/cypress/fixtures/sanity-io-all.json b/platform/wab/playwright/fixtures-data/sanity-io-all.json similarity index 100% rename from platform/wab/cypress/fixtures/sanity-io-all.json rename to platform/wab/playwright/fixtures-data/sanity-io-all.json diff --git a/platform/wab/cypress/fixtures/sanity-io-movies.json b/platform/wab/playwright/fixtures-data/sanity-io-movies.json similarity index 100% rename from platform/wab/cypress/fixtures/sanity-io-movies.json rename to platform/wab/playwright/fixtures-data/sanity-io-movies.json diff --git a/platform/wab/cypress/fixtures/sanity-io-screening.json b/platform/wab/playwright/fixtures-data/sanity-io-screening.json similarity index 100% rename from platform/wab/cypress/fixtures/sanity-io-screening.json rename to platform/wab/playwright/fixtures-data/sanity-io-screening.json diff --git a/platform/wab/cypress/fixtures/strapi-error.json b/platform/wab/playwright/fixtures-data/strapi-error.json similarity index 100% rename from platform/wab/cypress/fixtures/strapi-error.json rename to platform/wab/playwright/fixtures-data/strapi-error.json diff --git a/platform/wab/cypress/fixtures/strapi-restaurants.json b/platform/wab/playwright/fixtures-data/strapi-restaurants.json similarity index 100% rename from platform/wab/cypress/fixtures/strapi-restaurants.json rename to platform/wab/playwright/fixtures-data/strapi-restaurants.json diff --git a/platform/wab/cypress/fixtures/strapi-v5-restaurants.json b/platform/wab/playwright/fixtures-data/strapi-v5-restaurants.json similarity index 100% rename from platform/wab/cypress/fixtures/strapi-v5-restaurants.json rename to platform/wab/playwright/fixtures-data/strapi-v5-restaurants.json diff --git a/platform/wab/playwright/models/components/left-panel.ts b/platform/wab/playwright/models/components/left-panel.ts index ab83e274c2..e0ae7cfb30 100644 --- a/platform/wab/playwright/models/components/left-panel.ts +++ b/platform/wab/playwright/models/components/left-panel.ts @@ -91,7 +91,16 @@ export class LeftPanel extends BaseModel { super(page); } - async insertNode(node: string) { + async insertNode( + node: string, + opts: { + /** + * Most items insert immediately and close the add drawer. Items that open a + * follow-up UI keep the drawer open, so callers must opt out. + */ + expectDrawerToClose?: boolean; + } = {} + ) { const addMenuOpen = await this.addContainer.isVisible(); if (!addMenuOpen) { await this.addButton.click({ timeout: 30000 }); @@ -136,6 +145,14 @@ export class LeftPanel extends BaseModel { if (!itemClicked) { throw new Error(`Failed to click item "${node}"`); } + + if (opts.expectDrawerToClose ?? true) { + // The drawer only closes once the insert goes through. If nothing is + // inserted, fail here with a clear error rather than in a later step. + await expect(this.addContainer, `inserting "${node}"`).not.toBeVisible({ + timeout: 10000, + }); + } } async assertDataTokenExists(name: string) { @@ -163,7 +180,8 @@ export class LeftPanel extends BaseModel { await this.page.keyboard.press("ControlOrMeta+A"); await this.page.keyboard.press("Delete"); await this.page.keyboard.press("Backspace"); - await this.page.keyboard.type(value); + // insertText bypasses Monaco auto-close brackets + await this.page.keyboard.insertText(value); await this.sidebarModal.locator('[data-test-id="save-code"]').click(); await this.sidebarModal .locator(".monaco-editor") @@ -175,6 +193,7 @@ export class LeftPanel extends BaseModel { await this.page.keyboard.type(value); await this.page.keyboard.press("Enter"); } + await this.sidebarModal.waitFor({ state: "hidden" }); }); } @@ -262,7 +281,14 @@ export class LeftPanel extends BaseModel { async switchToComponentsTab() { await this.assetsTabButton.hover(); - await this.componentsTabButton.click(); + const isActive = + (await this.componentsTabButton.getAttribute("data-state-isselected")) === + "true"; + if (!isActive) { + await this.componentsTabButton.click(); + } else { + await this.addButton.hover(); // to blur the assets tab button + } } async switchToDataTokensTab() { diff --git a/platform/wab/playwright/models/components/right-panel.ts b/platform/wab/playwright/models/components/right-panel.ts index f7c3f19fac..4996159058 100644 --- a/platform/wab/playwright/models/components/right-panel.ts +++ b/platform/wab/playwright/models/components/right-panel.ts @@ -438,6 +438,47 @@ export class RightPanel extends BaseModel { await variantRow.click(); } + /** + * Reset all targeted variants on the current component back to base. + * Switches to the Component Data tab first, since variant rows are only + * visible there. + */ + async resetVariants() { + await this.switchToComponentDataTab(); + const baseVariant = this.frame + .locator('[data-test-class="variant-row"]') + .filter({ hasText: "Base" }); + if (await baseVariant.isVisible()) { + await baseVariant.click(); + } else { + const activeVariants = this.frame.locator( + '[data-test-class="variant-pin-button-deactivate"]' + ); + const count = await activeVariants.count(); + for (let i = 0; i < count; i++) { + await activeVariants.nth(0).click(); + } + } + } + + /** + * Deselect (i.e. stop targeting) a specific variant within a variant group. + * No-op if the variant isn't currently targeted. + */ + async deselectVariant(groupName: string, variantName: string) { + await this.switchToComponentDataTab(); + const variantGroup = this.frame + .locator('[data-test-class="variants-section"]') + .filter({ hasText: groupName }); + const variant = variantGroup + .locator('[data-test-class="variant-row"]') + .filter({ hasText: variantName }) + .locator('button[data-test-class="variant-record-button-stop"]'); + if (await variant.isVisible()) { + await variant.click(); + } + } + async addComponentProp( propName: string, propType: string, @@ -464,6 +505,117 @@ export class RightPanel extends BaseModel { await this.propSubmitButton.click(); } + /** + * Creates a choice or multiChoice component prop with the given options. + */ + async addChoiceComponentProp(opts: { + propName: string; + propType?: "choice" | "multiChoice"; + options: string[]; + defaultValue?: string | string[]; + previewValue?: string | string[]; + }) { + await this.switchToComponentDataTab(); + await this.addPropButton.click(); + await this.selectPropType(opts.propType ?? "choice"); + await this.propNameInput.fill(opts.propName); + + for (let i = 0; i < opts.options.length; i++) { + await this.frame + .locator('[data-test-id="component-prop-choices-add-btn"]') + .click(); + const itemInput = this.frame + .locator(`[data-test-id="component-prop-choices-${i}"]`) + .getByRole("textbox") + .first(); + await itemInput.fill(opts.options[i]); + await itemInput.press("Enter"); + } + + if (opts.defaultValue !== undefined) { + await this.selectChoiceValue( + this.frame.locator('[data-test-id="default-value"]'), + opts.defaultValue + ); + } + if (opts.previewValue !== undefined) { + await this.selectChoiceValue( + this.frame.locator('[data-test-id="preview-value"]'), + opts.previewValue + ); + } + + await this.propSubmitButton.click(); + } + + /** + * Selects value(s) in a single/multi-choice editor + */ + async selectChoiceValue(container: Locator, value: string | string[]) { + const values = Array.isArray(value) ? value : [value]; + const anyOptionVisible = () => + this.frame + .getByRole("option") + .first() + .isVisible() + .catch(() => false); + + await container.first().click(); + await this.page.waitForTimeout(200); + if (!(await anyOptionVisible())) { + await container.locator("input").first().click(); + await this.page.waitForTimeout(200); + } + + for (const v of values) { + await this.frame + .getByRole("option", { name: v, exact: true }) + .first() + .click(); + await this.page.waitForTimeout(200); + } + + // A still-open (multi-select) dropdown overlays the controls below it. + // Tab out to close it (avoids Escape, which could close the modal). + await this.page.keyboard.press("Tab"); + await this.page.waitForTimeout(200); + } + + /** + * Renames an allowed value (by index) in the open choice prop modal. + */ + async renameChoiceComponentPropOption(index: number, value: string) { + const itemInput = this.frame + .locator(`[data-test-id="component-prop-choices-${index}"]`) + .getByRole("textbox") + .last(); + await itemInput.fill(value); + await itemInput.press("Enter"); + } + + /** + * Removes an allowed value (by index) in the open choice prop modal. + */ + async removeChoiceComponentPropOption(index: number) { + await this.frame + .locator(`[data-test-id="component-prop-choices-${index}-remove"]`) + .last() + .click({ force: true }); + } + + async submitPropModal() { + await this.propSubmitButton.first().click(); + await this.propSubmitButton.waitFor({ state: "detached", timeout: 5000 }); + } + + /** + * Sets a choice value on a component instance prop. + */ + async setInstanceChoiceValue(propName: string, value: string | string[]) { + const propRow = await this.getPropEditorRow(propName); + await this.selectChoiceValue(propRow, value); + } + async switchToSettingsTab() { await this.settingsTabButton.click(); } @@ -479,6 +631,22 @@ export class RightPanel extends BaseModel { await this.htmlAttributesSection.click(); } + /** + * Expands the "Show more" toggle in the component props section so that + * advanced props become visible. + */ + async expandComponentPropsSection() { + const showExtraContent = this.frame.locator( + '#component-props-section [data-test-id="show-extra-content"]' + ); + if ( + (await showExtraContent.getAttribute("data-show-extra-content")) !== + "true" + ) { + await showExtraContent.click(); + } + } + async getPropEditorRowsCount() { return this.propEditorRows.count(); } @@ -537,7 +705,11 @@ export class RightPanel extends BaseModel { async openComponentPropModal(propName: string) { await this.switchToComponentDataTab(); - await this.frame.getByText(propName).click({ button: "right" }); + await this.frame + .locator('[data-test-id="props-section"]') + .getByText(propName, { exact: true }) + .first() + .click({ button: "right" }); await this.frame.getByText("Configure prop").click(); } @@ -637,31 +809,73 @@ export class RightPanel extends BaseModel { } } - async addVariantGroup(groupName: string) { + async addVariantGroup( + groupName: string, + firstVariantName?: string, + opts?: { multi?: boolean } + ) { await this.addVariantGroupButton.click(); await this.page.waitForTimeout(500); - const singleOption = this.frame + // The add-group dropdown offers "single-select" and "multi-select" options. + const option = this.frame .locator(".ant-dropdown-menu") - .getByText("single"); - await singleOption.click({ force: true }); + .getByText(opts?.multi ? "multi" : "single"); + await option.click({ force: true }); await this.page.keyboard.type(groupName); await this.page.keyboard.press("Enter"); + if (firstVariantName) { + await this.page.keyboard.type(firstVariantName); + await this.page.keyboard.press("Enter"); + } + } + + /** + * Adds a standalone "toggle" variant + */ + async addToggleVariant(variantName: string) { + await this.addVariantGroupButton.click(); + await this.page.waitForTimeout(500); + await this.frame + .locator(".ant-dropdown-menu") + .getByText("toggle") + .click({ force: true }); + await this.page.keyboard.type(variantName); + await this.page.keyboard.press("Enter"); } async addVariantToGroup(groupName: string, variantName: string) { const variantGroupWidget = this.frame .locator('[data-test-class="variants-section"]') .filter({ hasText: groupName }); - const addVariantButton = variantGroupWidget.locator( - '[data-test-class="add-variant-button"]' - ); - await addVariantButton.click(); + if ((await variantGroupWidget.count()) > 0) { + const addVariantButton = variantGroupWidget.locator( + '[data-test-class="add-variant-button"]' + ); + await addVariantButton.click(); - await this.page.keyboard.type(variantName); - await this.page.keyboard.press("Enter"); + await this.page.keyboard.type(variantName); + await this.page.keyboard.press("Enter"); + } else { + await this.addVariantGroup(groupName, variantName); + } + } + + /** + * Flips a variant group between single- and multi-select via its context menu + * ("Change type to single-select" / "…multi-select"). + */ + async toggleVariantGroupMultiSelect(groupName: string) { + await this.switchToComponentDataTab(); + await this.frame + .locator('[data-test-class="variants-section"]') + .filter({ hasText: groupName }) + .getByText(groupName, { exact: true }) + .first() + .click({ button: "right" }); + await this.frame.getByText("Change type to").click(); } async configureProjectAppHost(page: string) { @@ -731,10 +945,17 @@ export class RightPanel extends BaseModel { variable?: string[]; operation?: string; value?: string; + startIndex?: string; + deleteCount?: string; arguments?: Record; eventRef?: string; customFunction?: string; + customFunctionOpCode?: string; }; + dynamicArgs?: Record; + /** For customFunctionOp interactions, runs while the bottom modal is open + * Useful for asserting the editor's data context. */ + assertCustomFunctionOpModal?: (modal: Locator) => Promise; mode?: "always" | "never" | "when"; conditionalExpr?: string; }> @@ -818,6 +1039,31 @@ export class RightPanel extends BaseModel { await this.insertMonacoCode(interaction.args.customFunction); } + for (const argName of ["startIndex", "deleteCount"] as const) { + const argValue = interaction.args[argName]; + if (argValue) { + await this.setDataPlasmicProp(argName, argValue); + } + } + + if (interaction.dynamicArgs) { + for (const [argName, argValue] of Object.entries( + interaction.dynamicArgs + )) { + const input = this.frame.locator(`[data-plasmic-prop="${argName}"]`); + await input.click({ button: "right" }); + await this.useDynamicValueButton.click(); + await this.insertMonacoCode(argValue); + } + } + + if (interaction.args.customFunctionOpCode) { + await this.configureCustomFunctionOpAsCustomCode( + interaction.args.customFunctionOpCode, + interaction.assertCustomFunctionOpModal + ); + } + if (interaction.mode) { const modeButton = this.frame.locator( `[data-plasmic-prop="mode-${interaction.mode}"]` @@ -833,6 +1079,44 @@ export class RightPanel extends BaseModel { await this.closeSidebarButton.click(); } + /** + * After the "customFunctionOp" action is selected in the actions dropdown, + * opens the bottom modal, switches to "Custom code query…", pastes the given + * code, and saves. + * + * Optionally runs `assertWhileOpen` against the modal locator after the code + * is in place but before Save — for tests that need to inspect the modal's + * data context (e.g. confirm $steps is visible). + */ + private async configureCustomFunctionOpAsCustomCode( + code: string, + assertWhileOpen?: (modal: Locator) => Promise + ) { + await this.frame + .locator('[data-plasmic-prop="data-source-open-modal-btn"]') + .click(); + + const modal = this.frame.locator( + '[data-test-id="server-query-bottom-modal"]' + ); + await modal.getByText("Select...").click(); + await this.frame.locator('[data-key="__custom_code__"]').click(); + + const editor = modal.locator("div.react-monaco-editor-container"); + await editor.click(); + await editor.locator(".view-lines").waitFor({ state: "visible" }); + + await this.page.evaluate((c) => navigator.clipboard.writeText(c), code); + await this.page.keyboard.press("ControlOrMeta+V"); + + if (assertWhileOpen) { + await assertWhileOpen(modal); + } + + await modal.locator("button").getByText("Save").click(); + await modal.waitFor({ state: "hidden" }); + } + async addNavigationInteraction( eventHandler: string, interaction: { @@ -975,7 +1259,7 @@ export class RightPanel extends BaseModel { await this.setSelectByLabel(key, value[key]); } else if (key === "options") { for (const option of value[key]) { - await this.addItemToArrayProp(key, { text: option }); + await this.addItemToArrayProp(key, { label: option, value: option }); } } else { await this.setDataPlasmicProp(key, value[key]); @@ -988,11 +1272,22 @@ export class RightPanel extends BaseModel { async addItemToArrayProp(prop: string, value: Record) { const addBtn = this.frame.locator(`[data-test-id="${prop}-add-btn"]`); await addBtn.click(); - await this.page.waitForTimeout(200); + await this.page.waitForTimeout(300); + // Each select/radio option opens as a new frame pushed on the popover stack, + // on top of the parent form editor. Its fields render as the last data-plasmic-prop + // inputs, which setDataPlasmicProp targets via `.last()`. for (const key in value) { await this.setDataPlasmicProp(key, value[key]); } + + // Go back to the parent frame via the back button (pops one frame) + // so the next item can be added. + await this.frame + .locator('[data-test-id="back-popover-frame"]') + .last() + .click(); + await this.page.waitForTimeout(300); } async removeItemFromArrayProp(prop: string, index: number) { @@ -1322,6 +1617,12 @@ export class RightPanel extends BaseModel { .waitFor({ state: "detached", timeout: 2000 }); } + async closeDataPicker() { + const picker = this.frame.locator('[data-test-id="data-picker"]'); + await picker.getByRole("button", { name: "Cancel" }).click(); + await picker.waitFor({ state: "detached", timeout: 5000 }); + } + async clickDataPlasmicProp(propName: string) { const prop = this.frame.locator(`[data-plasmic-prop="${propName}"]`); await prop.click(); diff --git a/platform/wab/playwright/models/studio-model.ts b/platform/wab/playwright/models/studio-model.ts index b8fcfb5835..8e6c0ff88d 100644 --- a/platform/wab/playwright/models/studio-model.ts +++ b/platform/wab/playwright/models/studio-model.ts @@ -224,6 +224,38 @@ export class StudioModel extends BaseModel { await this.page.keyboard.press("Shift+1"); } + /** + * Reset zoom to 100%. Useful for canvas clicks, at low zoom sometimes the target tpl + * isn't correctly selected. + */ + async zoomReset() { + await this.frame.locator("body").evaluate(() => { + (window as any).dbg.studioCtx.tryZoomWithScale(1); + }); + } + + /** + * Select a tpl in the current arena by its text. Checks all arena artboards and clicks + * the first matching element. + */ + async selectInCanvasByText(text: string | RegExp, tag: "button" | "div") { + await this.zoomReset(); + const count = await this.frames.count(); + for (let i = 0; i < count; i++) { + const candidate = this.frames + .nth(i) + .contentFrame() + .locator(tag) + .filter({ hasText: text }) + .first(); + if (await candidate.count()) { + await candidate.click({ force: true }); + return; + } + } + throw new Error(`Could not find ${tag} matching "${text}" in any artboard`); + } + async addNodeToSelectedFrame(node: string, xPos: number, yPos: number) { await this.leftPanel.insertNode(node); await this.rightPanel.designTabButton.click(); @@ -445,14 +477,18 @@ export class StudioModel extends BaseModel { }); } + /** + * Renames the focused element via ctrl+R shortcut, which opens an inline rename + * textbox on the canvas selection tag. Waits for the textbox to appear/disappear + * so a swallowed shortcut fails here. + */ async renameTreeNode(name: string) { - await this.page.waitForTimeout(200); await this.page.keyboard.press("ControlOrMeta+r"); - await this.page.waitForTimeout(200); - await this.page.keyboard.type(name); - await this.page.waitForTimeout(200); - await this.page.keyboard.press("Enter"); - await this.page.waitForTimeout(200); + const renameInput = this.frame.locator(".node-outline-tag input"); + await renameInput.waitFor({ state: "visible" }); + await renameInput.fill(name); + await renameInput.press("Enter"); + await renameInput.waitFor({ state: "hidden" }); } async convertToSlot(slotName?: string) { @@ -517,20 +553,22 @@ export class StudioModel extends BaseModel { async openComponentInNewFrame( componentName: string, options: { + /** + * When true, opens the component via "Edit in new artboard". + * When false, opens via "Edit component" in the component's own arena. + */ editInNewArtboard: boolean; - } = { editInNewArtboard: false } + } = { editInNewArtboard: true } ) { await this.leftPanel.switchToComponentsTab(); const componentItem = this.componentListItem.filter({ hasText: componentName, }); await componentItem.click({ button: "right" }); - if (options) { - if (options.editInNewArtboard) { - await this.editComponentButton.click(); - } else { - await this.editComponentInNewArtboardButton.click(); - } + if (options.editInNewArtboard) { + await this.editComponentInNewArtboardButton.click(); + } else { + await this.editComponentButton.click(); } } @@ -633,9 +671,21 @@ export class StudioModel extends BaseModel { await this.promptSubmitButton.click(); } - async bindTextContentToDynamicValue(path: string[]) { + // Convert top level rich text block to dynamic value (ObjectPath) + async bindRichTextBlockToDynamicValue(path: string[]) { + await this.textContent.click({ button: "right" }); + await this.useDynamicValueButton.click(); + await this.rightPanel.selectPathInDataPicker(path); + } + + // Convert rich text sub-node to dynamic value (TemplatedString) + async bindRichTextToDynamicValue(path: string[]) { await this.textContent.click({ button: "right" }); await this.useDynamicValueButton.click(); + await this.frame + .locator('[data-test-id="text-content"] .code-chip') + .first() + .click(); await this.rightPanel.selectPathInDataPicker(path); } @@ -710,21 +760,23 @@ export class StudioModel extends BaseModel { } async waitForSave() { - await this.page.evaluate(() => { - return new Promise((resolve) => { - const checkSaveIndicator = () => { - const saveIndicator = document.querySelector( - '*[class^="PlasmicSaveIndicator"]' - ); - if (!saveIndicator) { - resolve(); - } else { - setTimeout(checkSaveIndicator, 100); - } - }; - checkSaveIndicator(); - }); - }); + // Wait until the studio reports no unsaved changes. The save indicator is unreliable + // because quick edits may not surface it long enough for the locator to observe + await expect + .poll( + async () => { + return this.frame.locator("body").evaluate(() => { + const ctx = (window as any).dbg?.studioCtx; + if (!ctx) { + return "no-ctx"; + } + return ctx.hasUnsavedChanges() ? "dirty" : "clean"; + }); + }, + { timeout: 30000 } + ) + .toBe("clean"); + await expect(this.saveIndicator).toHaveCount(0, { timeout: 30000 }); } async pressPublishButton() { @@ -1039,9 +1091,23 @@ export class StudioModel extends BaseModel { * rowLocator can be any element within the target row. */ async createDataTokenForRow(rowLocator: Locator) { - const createMenuItem = this.frame.getByText("Create data token"); await rowLocator.click({ button: "right" }); - await createMenuItem.click(); + await this.frame + .locator(".ant-dropdown-menu") + .getByText("Use data token", { exact: true }) + .hover(); + await this.frame.getByText("Create new data token").click(); + } + + /** + * Pick an existing data token by right clicking a prop row and selecting it + * from the "Use data token" submenu. + */ + async pickDataTokenFromSubmenu(rowLocator: Locator, tokenName: string) { + await rowLocator.click({ button: "right" }); + const menu = this.frame.locator(".ant-dropdown-menu"); + await menu.getByText("Use data token", { exact: true }).hover(); + await menu.getByText(tokenName, { exact: true }).click(); } /** diff --git a/platform/wab/playwright/package.json b/platform/wab/playwright/package.json index 34eb78b81d..2a31abb678 100644 --- a/platform/wab/playwright/package.json +++ b/platform/wab/playwright/package.json @@ -4,14 +4,14 @@ "main": "index.js", "license": "MIT", "devDependencies": { - "@dotenvx/dotenvx": "^1.48.0", - "@playwright/test": "^1.54.0", - "@types/node": "^24.0.13" + "@dotenvx/dotenvx": "^1.61.0", + "@playwright/test": "^1.60.0", + "@types/node": "^24.12.2" }, "scripts": { "test-playwright": "npx playwright test" }, "dependencies": { - "playwright-ctrf-json-reporter": "^0.0.23" + "playwright-ctrf-json-reporter": "^0.0.29" } } diff --git a/platform/wab/playwright/playwright.config.ts b/platform/wab/playwright/playwright.config.ts index 8cb20a8dc4..fb3bcb4260 100644 --- a/platform/wab/playwright/playwright.config.ts +++ b/platform/wab/playwright/playwright.config.ts @@ -23,8 +23,8 @@ export default defineConfig({ actionTimeout: 10_000, navigationTimeout: 30_000, baseURL: process.env.WAB_HOST ?? "http://localhost:3003", - trace: "retain-on-failure", - video: "retain-on-failure", + trace: process.env.CI ? "on-first-retry" : "retain-on-failure", + video: process.env.CI ? "on-first-retry" : "retain-on-failure", }, projects: [ { diff --git a/platform/wab/playwright/utils/api-client.ts b/platform/wab/playwright/utils/api-client.ts index 239d9af1fb..c7167c0154 100644 --- a/platform/wab/playwright/utils/api-client.ts +++ b/platform/wab/playwright/utils/api-client.ts @@ -223,7 +223,10 @@ export class ApiClient { return tokens.tokens[0].token; } - const tokenResponse = await this.request.put("/api/v1/settings/apitokens"); + const csrf = await this.getCsrf(); + const tokenResponse = await this.request.put("/api/v1/settings/apitokens", { + headers: { "X-CSRF-Token": csrf }, + }); const tokenData = await tokenResponse.json(); return tokenData.token.token; } @@ -396,7 +399,7 @@ export class ApiClient { let bundle: any; if (typeof templateNameOrBundle === "string") { - const bundles = require("../../cypress/bundles"); + const bundles = require("../bundles"); bundle = bundles.default?.[templateNameOrBundle] || bundles[templateNameOrBundle]; diff --git a/platform/wab/playwright/utils/key-utils.ts b/platform/wab/playwright/utils/key-utils.ts index aba44d2c2a..da4e9c2f37 100644 --- a/platform/wab/playwright/utils/key-utils.ts +++ b/platform/wab/playwright/utils/key-utils.ts @@ -1,3 +1,4 @@ +import type { Locator } from "@playwright/test"; import { Page } from "playwright"; export const modifierKey = process.platform === "darwin" ? "Meta" : "Control"; @@ -26,3 +27,27 @@ export async function typeKeys( } } } + +/** + * Insert text at the cursor in a Monaco editor by dispatching a synthetic `paste` + * ClipboardEvent on Monaco's hidden ``, both); + check(`
`, both); + check(`

`, both); + check(`
`, both); + check(`

`, both); + }); + + it("matches non-text controls for pointer only", () => { + const pointerOnly = { pointer: true, keyboard: false }; + check(``, pointerOnly); + check(``, pointerOnly); + check(``, pointerOnly); + check(``, pointerOnly); + check(``, pointerOnly); + check(``, pointerOnly); + check(``, pointerOnly); + check(``, pointerOnly); + check(``, pointerOnly); + check(`
`, pointerOnly); + }); + + it("matches non-interactive elements for neither", () => { + const neither = { pointer: false, keyboard: false }; + check(`
`, neither); + check(`

`, neither); + check(`
`, neither); + check( + `
`, + neither + ); + check(`

`, neither); + }); +}); diff --git a/platform/wab/src/wab/client/dom-utils.ts b/platform/wab/src/wab/client/dom-utils.ts index 9a02230023..d328bef5e1 100644 --- a/platform/wab/src/wab/client/dom-utils.ts +++ b/platform/wab/src/wab/client/dom-utils.ts @@ -205,6 +205,56 @@ export const isDescendant = ({ return false; }; +const POINTER_INTERACTIVE_SELECTORS = [ + "a", + "button", + "input", + "select", + "textarea", + "[role='button']", + "[contenteditable]:not([contenteditable='false'])", +].join(","); + +/** + * Returns true if `target` is, or is inside, an element that is typically + * interacted with via pointer events (all input-like elements) + */ +export function isWithinPointerInteractiveElement(target: Element): boolean { + return !!target.closest(POINTER_INTERACTIVE_SELECTORS); +} + +const KEYBOARD_INTERACTIVE_SELECTORS = [ + // input types that accept text editing + // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#input_types + "input:not([type])", // type defaults to text + ...[ + "date", + "datetime", + "datetime-local", + "email", + "month", + "number", + "password", + "search", + "tel", + "text", + "time", + "url", + "week", + ].map((type) => `input[type='${type}']`), + "textarea", + // contenteditable is editable unless explicitly false ("" means true) + "[contenteditable]:not([contenteditable='false'])", +].join(","); + +/** + * Returns true if `target` is, or is inside, an element that is typically + * interacted with via keyboard events (text-based input elements). + */ +export function isWithinKeyboardInteractiveElement(target: Element): boolean { + return !!target.closest(KEYBOARD_INTERACTIVE_SELECTORS); +} + export const isContextMenuDescendant = (child: Element) => { let node = child.parentNode; diff --git a/platform/wab/src/wab/client/env.ts b/platform/wab/src/wab/client/env.ts index 2f9a5901aa..50506283bb 100644 --- a/platform/wab/src/wab/client/env.ts +++ b/platform/wab/src/wab/client/env.ts @@ -6,8 +6,7 @@ import { ensure } from "@/wab/shared/common"; export const ENV = { NODE_ENV: ensure(process.env.NODE_ENV, "NODE_ENV must be defined"), COMMITHASH: ensure(process.env.COMMITHASH, "COMMITHASH must be defined"), - PUBLICPATH: ensure(process.env.PUBLICPATH, "PUBLICPATH must be defined"), - AMPLITUDE_API_KEY: process.env.AMPLITUDE_API_KEY, + STATIC_URL: process.env.STATIC_URL, INTERCOM_APP_ID: process.env.INTERCOM_APP_ID, POSTHOG_API_KEY: process.env.POSTHOG_API_KEY, POSTHOG_HOST: process.env.POSTHOG_HOST, diff --git a/platform/wab/src/wab/client/figma.tsx b/platform/wab/src/wab/client/figma.tsx index 79fe90567d..b7c7c6ca36 100644 --- a/platform/wab/src/wab/client/figma.tsx +++ b/platform/wab/src/wab/client/figma.tsx @@ -44,6 +44,10 @@ import { wrapTplNodes, } from "@/wab/client/figma-importer/utils"; import { StudioCtx } from "@/wab/client/studio-ctx/StudioCtx"; +import { unwrap } from "@/wab/commons/neverthrow-utils"; +import { FrameViewMode, isMixedArena } from "@/wab/shared/Arenas"; +import { extractUsedFontsFromComponents } from "@/wab/shared/codegen/fonts"; +import { toVarName } from "@/wab/shared/codegen/util"; import { crunch, ensure, @@ -53,23 +57,28 @@ import { uniqueName, withoutNilTuples, } from "@/wab/shared/common"; -import { unwrap } from "@/wab/commons/failable-utils"; +import { + GlobalVariantFrame, + RootComponentVariantFrame, +} from "@/wab/shared/component-frame"; import { ComponentType, isContextCodeComponent, isReusableComponent, } from "@/wab/shared/core/components"; -import { parseCssNumericNew } from "@/wab/shared/css"; import { codeLit } from "@/wab/shared/core/exprs"; import { ImageAssetType } from "@/wab/shared/core/image-asset-type"; import { mkImageAssetRef } from "@/wab/shared/core/image-assets"; -import { FrameViewMode, isMixedArena } from "@/wab/shared/Arenas"; -import { extractUsedFontsFromComponents } from "@/wab/shared/codegen/fonts"; -import { toVarName } from "@/wab/shared/codegen/util"; import { - GlobalVariantFrame, - RootComponentVariantFrame, -} from "@/wab/shared/component-frame"; + flattenTpls, + isTplNamable, + isTplVariantable, + mkTplComponentX, + mkTplTagX, + TplTagType, + trackComponentRoot, +} from "@/wab/shared/core/tpls"; +import { parseCssNumericNew } from "@/wab/shared/css"; import { ARENA_LOWER } from "@/wab/shared/Labels"; import { ensureKnownTplTag, @@ -83,17 +92,9 @@ import { import { RSH } from "@/wab/shared/RuleSetHelpers"; import { WaitForClipError } from "@/wab/shared/UserError"; import { VariantTplMgr } from "@/wab/shared/VariantTplMgr"; -import { - flattenTpls, - isTplNamable, - isTplVariantable, - mkTplComponentX, - mkTplTagX, - TplTagType, - trackComponentRoot, -} from "@/wab/shared/core/tpls"; import { notification } from "antd"; import { isString } from "lodash"; +import { ok } from "neverthrow"; import React from "react"; import { Matrix } from "transformation-matrix"; @@ -144,7 +145,7 @@ export async function pasteFromFigma( return { handled: true, success: unwrap( - await studioCtx.change(({ success }) => { + await studioCtx.change(() => { const maybeNode = tplNodeFromFigmaData( studioCtx, vc.variantTplMgr(), @@ -166,13 +167,13 @@ export async function pasteFromFigma( ]).forEach((usage) => studioCtx.fontManager.useFont(studioCtx, usage.fontFamily) ); - return success(true); + return ok(true); } else { - return success(false); + return ok(false); } } else { showFigmaError(); - return success(false); + return ok(false); } }) ), @@ -193,7 +194,7 @@ export async function pasteFromFigma( return { handled: true, success: unwrap( - await studioCtx.change(({ success }) => { + await studioCtx.change(() => { const newComponent = studioCtx .tplMgr() .addComponent({ type: ComponentType.Frame }); @@ -224,7 +225,7 @@ export async function pasteFromFigma( pruneUnnamedComponent: true, }); showFigmaError(); - return success(false); + return ok(false); } newComponent.tplTree = maybeNode; trackComponentRoot(newComponent); @@ -265,7 +266,7 @@ export async function pasteFromFigma( ]).forEach((usage) => studioCtx.fontManager.useFont(studioCtx, usage.fontFamily) ); - return success(true); + return ok(true); }) ), }; diff --git a/platform/wab/src/wab/client/fixes-post-change.spec.ts b/platform/wab/src/wab/client/fixes-post-change.spec.ts index 08f05ba1a8..cdee6cf6be 100644 --- a/platform/wab/src/wab/client/fixes-post-change.spec.ts +++ b/platform/wab/src/wab/client/fixes-post-change.spec.ts @@ -1,6 +1,4 @@ import { fakeStudioCtx } from "@/wab/client/test/fake-init-ctx"; -import { ComponentType } from "@/wab/shared/core/components"; -import { mkTplTagX } from "@/wab/shared/core/tpls"; import { RSH } from "@/wab/shared/RuleSetHelpers"; import { $$$ } from "@/wab/shared/TplQuery"; import { @@ -8,6 +6,9 @@ import { getBaseVariant, isPrivateStyleVariant, } from "@/wab/shared/Variants"; +import { ComponentType } from "@/wab/shared/core/components"; +import { mkTplTagX } from "@/wab/shared/core/tpls"; +import { ok } from "neverthrow"; describe("Fixes post change", () => { it("updates component.updatedAt", async () => { @@ -24,10 +25,10 @@ describe("Fixes post change", () => { await studioCtx.changeObserved( () => [component], - ({ success }) => { + () => { // Change directly on the component component.name = "NewButton"; - return success(); + return ok(); } ); @@ -37,10 +38,10 @@ describe("Fixes post change", () => { await studioCtx.changeObserved( () => [component], - ({ success }) => { + () => { // Directly change the tplTree component.tplTree = tpls[0]; - return success(); + return ok(); } ); @@ -50,10 +51,10 @@ describe("Fixes post change", () => { await studioCtx.changeObserved( () => [component], - ({ success }) => { + () => { // Change the tpl tree by accessing the children only should still update the component tpls[0].children = [tpls[1]]; - return success(); + return ok(); } ); @@ -104,9 +105,9 @@ describe("Fixes post change", () => { // Set the grid tpl as the component's tplTree (triggers fixups) await studioCtx.changeObserved( () => [component], - ({ success }) => { + () => { component.tplTree = gridTpl; - return success(); + return ok(); } ); diff --git a/platform/wab/src/wab/client/frame-ctx/host-frame-api.ts b/platform/wab/src/wab/client/frame-ctx/host-frame-api.ts index d128493a92..922d63e3a3 100644 --- a/platform/wab/src/wab/client/frame-ctx/host-frame-api.ts +++ b/platform/wab/src/wab/client/frame-ctx/host-frame-api.ts @@ -3,6 +3,7 @@ import { StudioAppUser, } from "@/wab/client/studio-ctx/StudioCtx"; import { ApiBranch, BranchId } from "@/wab/shared/ApiSchema"; +import type { AiOutputFormat } from "@/wab/shared/copilot/copilot-tool-types"; import { PkgVersionInfoMeta } from "@/wab/shared/SharedApi"; import { ChangeLogEntry, SemVerReleaseType } from "@/wab/shared/site-diffs"; import { LeftTabKey } from "@/wab/shared/ui-config-utils"; @@ -54,12 +55,16 @@ export type HostFrameApi = { toolName: string, toolArgs: Record ): Promise; + /** Store the AI agent's preferred copilot tool output format on StudioCtx. */ + setPreferredAiOutputFormat(format: AiOutputFormat): Promise; + /** Resolves once the studio and its active canvas are ready. */ + waitForStudioReady(): Promise; }; /** Structured error for copilot tool calls — Comlink-serializable. */ export type CopilotToolCallError = { message: string; - type: "TOOL_NOT_FOUND" | "EXECUTION_FAILED" | "TRANSPORT_ERROR"; + type: "TOOL_NOT_FOUND" | "EXECUTION_FAILED"; }; /** Serializable result of a tool call execution (crosses TopFrame and HostFrame boundary via Comlink) */ diff --git a/platform/wab/src/wab/client/frame-ctx/plasmic-studio-args.ts b/platform/wab/src/wab/client/frame-ctx/plasmic-studio-args.ts index 556cb345bc..f0937c1da6 100644 --- a/platform/wab/src/wab/client/frame-ctx/plasmic-studio-args.ts +++ b/platform/wab/src/wab/client/frame-ctx/plasmic-studio-args.ts @@ -3,6 +3,7 @@ import { ENV } from "@/wab/client/env"; import { encodeUriParams } from "@/wab/commons/urls"; import { ensure } from "@/wab/shared/common"; import { DevFlagsType } from "@/wab/shared/devflags"; +import { getStaticBaseUrl } from "@/wab/shared/urls"; /** * Args to pass from top frame to host frame. @@ -14,6 +15,8 @@ import { DevFlagsType } from "@/wab/shared/devflags"; export interface PlasmicStudioArgs { /** Origin of the top frame */ origin: string; + /** Base URL for static assets */ + staticBaseUrl: string; isProd: boolean; /** Encoded with encodeUriParams, e.g. "foo=bar&baz=true" */ appConfigOverrides: string; @@ -22,6 +25,7 @@ export interface PlasmicStudioArgs { } const keyOrigin = "origin"; +const keyStaticBaseUrl = "staticBaseUrl"; const keyIsProd = "isProd"; const keyAppConfigOverrides = "appConfigOverrides"; const keyStudioHash = "studioHash"; @@ -40,6 +44,7 @@ export function buildPlasmicStudioArgsHash( const params: [key: string, value: string][] = []; params.push([keyOrigin, origin]); + params.push([keyStaticBaseUrl, getStaticBaseUrl()]); params.push([keyIsProd, (window as any).isProd || false]); params.push([ keyAppConfigOverrides, @@ -62,11 +67,13 @@ export function getPlasmicStudioArgs(): PlasmicStudioArgs { params.get(keyOrigin), "Missing origin hash param in host frame" ); + const staticBaseUrl = params.get(keyStaticBaseUrl) || origin; const isProd = params.get(keyIsProd) === "true"; const appConfigOverrides = params.get(keyAppConfigOverrides) || ""; const studioHash = params.get(keyStudioHash); return { origin, + staticBaseUrl, isProd, appConfigOverrides, studioHash, diff --git a/platform/wab/src/wab/client/hooks/useCodegenType.ts b/platform/wab/src/wab/client/hooks/useCodegenType.ts index 2c6403a403..fa30256179 100644 --- a/platform/wab/src/wab/client/hooks/useCodegenType.ts +++ b/platform/wab/src/wab/client/hooks/useCodegenType.ts @@ -1,4 +1,5 @@ import { useAppCtx } from "@/wab/client/contexts/AppContexts"; +import { codegenTypeKey } from "@/wab/client/LocalStorageKey"; import { mkUuid, spawn } from "@/wab/shared/common"; import { proxy } from "comlink"; import { useEffect, useState } from "react"; @@ -15,7 +16,7 @@ export function useCodegenType(): "loader" | "codegen" { useEffect(() => { spawn( - Promise.resolve(appCtx.api.getStorageItem("codegenType")).then( + Promise.resolve(appCtx.api.getStorageItem(codegenTypeKey)).then( (storedCodegenType: any) => { if (storedCodegenType) { setCodegenType(storedCodegenType as any); @@ -28,7 +29,7 @@ export function useCodegenType(): "loader" | "codegen" { appCtx.api.addStorageListener( uniqueId, proxy(({ key, newValue }) => { - if (key === "codegenType" && newValue) { + if (key === codegenTypeKey && newValue) { setCodegenType(newValue as any); } }) diff --git a/platform/wab/src/wab/client/hooks/usePortalContainer.tsx b/platform/wab/src/wab/client/hooks/usePortalContainer.tsx deleted file mode 100644 index a99dc75695..0000000000 --- a/platform/wab/src/wab/client/hooks/usePortalContainer.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { useEffect, useMemo } from "react"; - -/** - * Creates a div element on document body (or any other explicitly - * given parent) that can be used to render portals in. - * - * @param parent Optional parent element (defaults to document.body) - */ -export function usePortalContainer(parent: HTMLElement = document.body) { - const container = useMemo(() => { - const _container = document.createElement("div"); - parent.appendChild(_container); - return _container; - }, []); - - useEffect( - () => () => { - try { - parent.removeChild(container); - } catch (_) {} - }, - [] - ); - - return container; -} diff --git a/platform/wab/src/wab/client/icons.tsx b/platform/wab/src/wab/client/icons.tsx index 08f7983499..ecc8289ab6 100644 --- a/platform/wab/src/wab/client/icons.tsx +++ b/platform/wab/src/wab/client/icons.tsx @@ -1,4 +1,4 @@ -import { Icon } from "@/wab/client/components/widgets/Icon"; +import { Icon, SvgIcon } from "@/wab/client/components/widgets/Icon"; import AreaInputIcon from "@/wab/client/plasmic/plasmic_kit/PlasmicIcon__AreaInput"; import ArrowBottomIcon from "@/wab/client/plasmic/plasmic_kit/PlasmicIcon__ArrowBottom"; import ArrowLeftIcon from "@/wab/client/plasmic/plasmic_kit/PlasmicIcon__ArrowLeft"; @@ -15,8 +15,8 @@ import EyeClosedIcon from "@/wab/client/plasmic/plasmic_kit/PlasmicIcon__EyeClos import FetchIcon from "@/wab/client/plasmic/plasmic_kit/PlasmicIcon__Fetch"; import FrameIcon from "@/wab/client/plasmic/plasmic_kit/PlasmicIcon__Frame"; import GridIcon from "@/wab/client/plasmic/plasmic_kit/PlasmicIcon__Grid"; -import HeadingIcon from "@/wab/client/plasmic/plasmic_kit/PlasmicIcon__Heading"; import HStackBlockIcon from "@/wab/client/plasmic/plasmic_kit/PlasmicIcon__HStackBlock"; +import HeadingIcon from "@/wab/client/plasmic/plasmic_kit/PlasmicIcon__Heading"; import ImageBlockIcon from "@/wab/client/plasmic/plasmic_kit/PlasmicIcon__ImageBlock"; import LinkIcon from "@/wab/client/plasmic/plasmic_kit/PlasmicIcon__Link"; import PassInputIcon from "@/wab/client/plasmic/plasmic_kit/PlasmicIcon__PassInput"; @@ -27,16 +27,23 @@ import TokenIcon from "@/wab/client/plasmic/plasmic_kit/PlasmicIcon__Token"; import TriangleBottomIcon from "@/wab/client/plasmic/plasmic_kit/PlasmicIcon__TriangleBottom"; import TriangleRightIcon from "@/wab/client/plasmic/plasmic_kit/PlasmicIcon__TriangleRight"; import VStackBlockIcon from "@/wab/client/plasmic/plasmic_kit/PlasmicIcon__VStackBlock"; -import EyeNoneIcon from "@/wab/client/plasmic/plasmic_kit_design_system/icons/PlasmicIcon__EyeNone"; -import PageIcon from "@/wab/client/plasmic/plasmic_kit_design_system/icons/PlasmicIcon__Page"; import BlockIcon from "@/wab/client/plasmic/plasmic_kit_design_system/PlasmicIcon__Block"; import CombinationIcon from "@/wab/client/plasmic/plasmic_kit_design_system/PlasmicIcon__Combination"; import GroupIcon from "@/wab/client/plasmic/plasmic_kit_design_system/PlasmicIcon__Group"; import TextInputIcon from "@/wab/client/plasmic/plasmic_kit_design_system/PlasmicIcon__TextInput"; +import EyeNoneIcon from "@/wab/client/plasmic/plasmic_kit_design_system/icons/PlasmicIcon__EyeNone"; +import PageIcon from "@/wab/client/plasmic/plasmic_kit_design_system/icons/PlasmicIcon__Page"; +import BracesIcon from "@/wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__Braces"; import ChevronDownsvgIcon from "@/wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__ChevronDownSvg"; import ChevronLeftsvgIcon from "@/wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__ChevronLeftSvg"; import ChevronRightsvgIcon from "@/wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__ChevronRightSvg"; import ChevronUpsvgIcon from "@/wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__ChevronUpSvg"; +import DatabaseSvgIcon from "@/wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__DatabaseSvg"; +import DownloadsvgIcon from "@/wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__DownloadSvg"; +import FunctionSvgIcon from "@/wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__FunctionSvg"; +import InputFieldSvgIcon from "@/wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__InputFieldSvg"; +import LinkSvgIcon from "@/wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__LinkSvg"; +import SettingsSlidersSvgIcon from "@/wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__SettingsSlidersSvg"; import TableRowsPageSectionIcon from "@/wab/client/plasmic/plasmic_kit_icons/icons/PlasmicIcon__TableRowsPageSection"; import { TplVisibility } from "@/wab/shared/visibility-utils"; import React from "react"; @@ -63,6 +70,7 @@ export const EXPANDER_EXPANDED_ICON = ; export const EXPANDER_COLLAPSED_ICON = ; export const GROUP_ICON = ; export const COMBINATION_ICON = ; +export const FUNCTION_ICON = ; export const TOKEN_ICON = ; export const VISIBLE_ICON = ; @@ -86,6 +94,8 @@ export const CHEVRON_BOTTOM_ICON = ; export const COPY_ICON = ; export const CREATE_ICON = ; export const FETCH_ICON = ; +export const DOWNLOAD_ICON = ; + export function getVisibilityIcon(visibility: TplVisibility) { if (visibility === TplVisibility.DisplayNone) { return HIDDEN_ICON; @@ -97,3 +107,9 @@ export function getVisibilityIcon(visibility: TplVisibility) { return VISIBLE_ICON; } } + +export const DataTokenIcon: SvgIcon = BracesIcon; +export const DataQueryIcon: SvgIcon = DatabaseSvgIcon; +export const StateIcon: SvgIcon = InputFieldSvgIcon; +export const PropIcon: SvgIcon = SettingsSlidersSvgIcon; +export const UrlIcon: SvgIcon = LinkSvgIcon; diff --git a/platform/wab/src/wab/client/linting/lint-issue-row.tsx b/platform/wab/src/wab/client/linting/lint-issue-row.tsx index 6a1e40c22c..6110c09f47 100644 --- a/platform/wab/src/wab/client/linting/lint-issue-row.tsx +++ b/platform/wab/src/wab/client/linting/lint-issue-row.tsx @@ -15,6 +15,7 @@ import { InvalidDomNestingLintIssue, InvalidTplNestingLintIssue, InvisibleElementLintIssue, + LinkedPropDriftLintIssue, LintIssue, LintIssueType, NonCssScreenVariantOverrideLintIssue, @@ -40,6 +41,8 @@ export function renderLintIssue(issue: LintIssue) { return ; } else if (issue.type === "unprotected-data-query") { return ; + } else if (issue.type === "linked-prop-drift") { + return ; } else { return null; } @@ -56,6 +59,8 @@ export function getLintIssueIcon(type: LintIssueType) { return ERROR_ICON; } else if (type === "unprotected-data-query") { return ; + } else if (type === "linked-prop-drift") { + return ERROR_ICON; } else { return null; } @@ -70,6 +75,8 @@ export function getLintIssueTypeName(type: LintIssueType) { return "Invisible element"; } else if (type === "unprotected-data-query") { return "Unprotected data query"; + } else if (type === "linked-prop-drift") { + return "Linked prop type mismatch"; } else { return null; } @@ -163,6 +170,13 @@ const PROP_ALLOWED_VALUES_INSTRUCTIONS = (

); +const LINKED_PROP_DRIFT_INSTRUCTIONS = ( +

+ This prop is linked to a component prop whose type no longer matches. + Re-link it, or update the component prop to match. +

+); + const UnprotectedDataQueryInstructions = ({ currentRole, expectedRole, @@ -303,6 +317,28 @@ const ChoicePropValuesLintIssueRow = observer( } ); +const LinkedPropDriftLintIssueRow = observer( + function LinkedPropDriftLintIssueRow(props: { + issue: LinkedPropDriftLintIssue; + }) { + const { issue } = props; + const content = ( + <> + prop{" "} + {issue.propName} no longer matches the linked component + prop + + ); + return renderIssueListItem( + content, + <> +

{content}

+ {LINKED_PROP_DRIFT_INSTRUCTIONS} + + ); + } +); + const UnprotectedDataQuerytLintIssueRow = observer( function UnprotectedDataQuerytLintIssueRow(props: { issue: UnprotectedDataQueryLintIssue; diff --git a/platform/wab/src/wab/client/messages/parenting-msgs.tsx b/platform/wab/src/wab/client/messages/parenting-msgs.tsx index 93b50f6540..bf4c980ab9 100644 --- a/platform/wab/src/wab/client/messages/parenting-msgs.tsx +++ b/platform/wab/src/wab/client/messages/parenting-msgs.tsx @@ -1,3 +1,4 @@ +import type { CantInsertTplReason } from "@/wab/client/operations/insert-tpl"; import { joinReactNodes } from "@/wab/commons/components/ReactUtil"; import { TplSlot } from "@/wab/shared/model/classes"; import { typeDisplayName } from "@/wab/shared/model/model-util"; @@ -12,17 +13,31 @@ export interface CantAddToSlotOutOfContext { export type ClientCantAddChildMsg = CantAddChildMsg | CantAddToSlotOutOfContext; export function renderCantAddMsg( - msg: ClientCantAddChildMsg | CantAddSiblingMsg + msg: CantInsertTplReason | ClientCantAddChildMsg | CantAddSiblingMsg, + opts: { format: "string" } +): string; +export function renderCantAddMsg( + msg: CantInsertTplReason | ClientCantAddChildMsg | CantAddSiblingMsg, + opts?: { format?: "string" } +): React.ReactNode; +export function renderCantAddMsg( + msg: CantInsertTplReason | ClientCantAddChildMsg | CantAddSiblingMsg, + opts?: { format?: "string" } ) { + const asString = opts?.format === "string"; switch (msg.type) { case "CantAddToAtomic": - return ( + return asString ? ( + `Cannot add elements to tag ${msg.tpl.tag}` + ) : ( <> Cannot add elements to tag {msg.tpl.tag} ); case "CantAddToAttrsChildren": - return ( + return asString ? ( + "Element content already defined by attribute children" + ) : ( <> Element content already defined by attribute children @@ -38,7 +53,11 @@ export function renderCantAddMsg( case "CantAddToSlotOutOfContext": return `Cannot add elements to this slot; turn on "Show default contents" first`; case "CantAddLinkedPropsToSlot": - return ( + return asString ? ( + `Cannot add element that references component props (${msg.vars + .map((v) => v.name) + .join(", ")}) as default content of a slot.` + ) : ( <> Cannot add element that references component props ( {joinReactNodes( @@ -64,6 +83,16 @@ export function renderCantAddMsg( return `You cannot add a non-item element to a list.`; case "CantAddListItemToNonList": return `You cannot add a list item to a non-list container.`; + case "CantAddNonColumnToColumns": + return `Columns can only have children elements of type Column.`; + case "CantAddColumnToNonColumns": + return `Responsive columns must be kept together.`; + case "CantAddNonColumnSiblingToColumn": + return `Column elements can only have siblings of type Column.`; + case "ComponentCycle": + return `You cannot insert a component into itself.`; + case "NestedSlots": + return `You cannot insert a slot as the default contents of another slot.`; default: throw new Error(`Unexpected msg type ${(msg as any).type}`); } diff --git a/platform/wab/src/wab/client/monaco-worker-url.ts b/platform/wab/src/wab/client/monaco-worker-url.ts index 57489be5a7..f622aaae76 100644 --- a/platform/wab/src/wab/client/monaco-worker-url.ts +++ b/platform/wab/src/wab/client/monaco-worker-url.ts @@ -1,4 +1,4 @@ -import { getPublicUrl } from "@/wab/shared/urls"; +import { getStaticUrl } from "@/wab/shared/urls"; import memoizeOne from "memoize-one"; /** @@ -12,19 +12,19 @@ export const fixWorkerUrl = memoizeOne(() => { ) { if (label === "typescript" || label === "javascript") { return `data:text/javascript;charset=utf-8,${encodeURIComponent(` - importScripts('${getPublicUrl()}/ts.worker.js');`)}`; + importScripts('${getStaticUrl()}/ts.worker.js');`)}`; } else if (label === "json") { return `data:text/javascript;charset=utf-8,${encodeURIComponent(` - importScripts('${getPublicUrl()}/json.worker.js');`)}`; + importScripts('${getStaticUrl()}/json.worker.js');`)}`; } else if (label === "html") { return `data:text/javascript;charset=utf-8,${encodeURIComponent(` - importScripts('${getPublicUrl()}/html.worker.js');`)}`; + importScripts('${getStaticUrl()}/html.worker.js');`)}`; } else if (label === "css") { return `data:text/javascript;charset=utf-8,${encodeURIComponent(` - importScripts('${getPublicUrl()}/css.worker.js');`)}`; + importScripts('${getStaticUrl()}/css.worker.js');`)}`; } else { return `data:text/javascript;charset=utf-8,${encodeURIComponent(` - importScripts('${getPublicUrl()}/editor.worker.js');`)}`; + importScripts('${getStaticUrl()}/editor.worker.js');`)}`; } }; }); diff --git a/platform/wab/src/wab/client/observability/amplitude-browser.ts b/platform/wab/src/wab/client/observability/amplitude-browser.ts deleted file mode 100644 index 6dda283358..0000000000 --- a/platform/wab/src/wab/client/observability/amplitude-browser.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { AmplitudeAnalytics } from "@/wab/shared/observability/AmplitudeAnalytics"; -import type { Analytics } from "@/wab/shared/observability/Analytics"; -import { createInstance, Identify } from "@amplitude/analytics-browser"; - -/** - * Initializes Amplitude for a browser. - * - * The returned `Analytics` is designed to be a singleton. - */ -export function initAmplitudeBrowser(opts: { apiKey: string }): Analytics { - const amplitude = createInstance(); - amplitude.init(opts.apiKey, { - // TODO: Turned off because of PLA-12018 - autocapture: false, - }); - return new AmplitudeAnalytics(Identify, amplitude); -} diff --git a/platform/wab/src/wab/client/operations/common.ts b/platform/wab/src/wab/client/operations/common.ts new file mode 100644 index 0000000000..5900a63341 --- /dev/null +++ b/platform/wab/src/wab/client/operations/common.ts @@ -0,0 +1,15 @@ +/** + * Generic envelope for operation results. + * + * The `success` branch carries operation-specific payload fields (intersected + * via `T`) at the top level. The `error` branch is reserved for hard failures + * where the primary result was not produced. + * + * Usage: + * type CreateFooResult = OperationResult<{ foo: Foo }>; + * // { result: "success"; foo: Foo } + * // | { result: "error"; message: string } + */ +export type OperationResult = + | ({ result: "success" } & T) + | { result: "error"; message: string }; diff --git a/platform/wab/src/wab/client/operations/create-component-state.spec.ts b/platform/wab/src/wab/client/operations/create-component-state.spec.ts new file mode 100644 index 0000000000..166345e357 --- /dev/null +++ b/platform/wab/src/wab/client/operations/create-component-state.spec.ts @@ -0,0 +1,202 @@ +import { createComponent } from "@/wab/client/operations/create-component"; +import { createComponentState } from "@/wab/client/operations/create-component-state"; +import { + setupComponentWithInstance, + setupComponentWithTplTree, +} from "@/wab/client/operations/tests/utils"; +import { assert } from "@/wab/shared/common"; +import { ComponentType } from "@/wab/shared/core/components"; +import { codeLit, customCode, tryExtractJson } from "@/wab/shared/core/exprs"; +import { ParamExportType } from "@/wab/shared/core/lang"; +import * as Tpls from "@/wab/shared/core/tpls"; + +describe("createComponentState", () => { + function setupWithComponent() { + const { site, tplMgr } = setupComponentWithTplTree( + Tpls.mkTplTagX("div", {}) + ); + const created = createComponent({ + tplMgr, + name: "StateTest", + type: ComponentType.Plain, + }); + assert(created.result === "success", "setup failed"); + return { site, tplMgr, component: created.component }; + } + + it("creates a private text state with defaults", () => { + const { site, tplMgr, component } = setupWithComponent(); + + const result = createComponentState({ + site, + component, + tplMgr, + name: "count", + }); + + assert(result.result === "success", "expected success result"); + const state = result.state; + expect(state).toMatchObject({ + variableType: "text", + accessType: "private", + param: { + variable: { name: "count" }, + exportType: ParamExportType.ToolsOnly, + }, + onChangeParam: { + variable: { name: "On count change" }, + exportType: ParamExportType.ToolsOnly, + }, + }); + expect(tryExtractJson(state.param.defaultExpr!)).toEqual(""); + expect(component.states).toContain(state); + expect(component.params).toContain(state.param); + expect(component.params).toContain(state.onChangeParam); + }); + + it("creates a writable number state with an initial value", () => { + const { site, tplMgr, component } = setupWithComponent(); + + const result = createComponentState({ + site, + component, + tplMgr, + name: "count", + variableType: "number", + accessType: "writable", + initialValue: codeLit(5), + }); + + assert(result.result === "success", "expected success result"); + const state = result.state; + expect(state).toMatchObject({ + variableType: "number", + accessType: "writable", + param: { exportType: ParamExportType.External }, + onChangeParam: { exportType: ParamExportType.External }, + }); + expect(tryExtractJson(state.param.defaultExpr!)).toEqual(5); + }); + + it("dedupes duplicate names", () => { + const { site, tplMgr, component } = setupWithComponent(); + + const first = createComponentState({ + site, + component, + tplMgr, + name: "count", + }); + const second = createComponentState({ + site, + component, + tplMgr, + name: "count", + }); + + assert(first.result === "success", "expected success result"); + assert(second.result === "success", "expected success result"); + expect(second.state.param.variable.name).toEqual("count 2"); + }); + + it("rejects an initial value that does not match the variable type", () => { + const { site, tplMgr, component } = setupWithComponent(); + + const result = createComponentState({ + site, + component, + tplMgr, + name: "count", + variableType: "number", + initialValue: codeLit("not a number"), + }); + + assert(result.result === "error", "expected error result"); + expect(result.message).toContain('not valid for a "number" state'); + expect(component.states).toHaveLength(0); + }); + + it("falls back to the type default when initialValue is null", () => { + const { site, tplMgr, component } = setupWithComponent(); + + const result = createComponentState({ + site, + component, + tplMgr, + name: "count", + initialValue: null, + }); + + assert(result.result === "success", "expected success result"); + expect(tryExtractJson(result.state.param.defaultExpr!)).toEqual(""); + }); + + it("creates a state with an expression initial value", () => { + const { site, tplMgr, component } = setupWithComponent(); + const expr = customCode("$ctx.locale"); + + const result = createComponentState({ + site, + component, + tplMgr, + name: "locale", + initialValue: expr, + }); + + assert(result.result === "success", "expected success result"); + expect(result.state.param.defaultExpr).toBe(expr); + }); + + it("rejects a writable state with an expression initial value", () => { + const { site, tplMgr, component } = setupWithComponent(); + + const result = createComponentState({ + site, + component, + tplMgr, + name: "locale", + accessType: "writable", + initialValue: customCode("$ctx.locale"), + }); + + expect(result).toMatchObject({ + result: "error", + message: + "Initial value for read-and-write state cannot contain references to dynamic values that are available only in the current component context.", + }); + expect(component.states).toHaveLength(0); + }); + + it("rejects an empty name", () => { + const { site, tplMgr, component } = setupWithComponent(); + + const result = createComponentState({ + site, + component, + tplMgr, + name: " ", + }); + + expect(result.result).toEqual("error"); + }); + + it("propagates an implicit state to instances when the state is public", () => { + const { site, tplMgr, page, button, instance } = + setupComponentWithInstance(); + + const result = createComponentState({ + site, + component: button, + tplMgr, + name: "count", + accessType: "readonly", + }); + + assert(result.result === "success", "expected success result"); + expect(page.states).toMatchObject([ + { implicitState: result.state, tplNode: instance }, + ]); + // Instances holding public states must be named for `$state` paths. + expect(instance.name).toBeTruthy(); + }); +}); diff --git a/platform/wab/src/wab/client/operations/create-component-state.ts b/platform/wab/src/wab/client/operations/create-component-state.ts new file mode 100644 index 0000000000..043887c365 --- /dev/null +++ b/platform/wab/src/wab/client/operations/create-component-state.ts @@ -0,0 +1,89 @@ +import { OperationResult } from "@/wab/client/operations/common"; +import { + validateStateAccessType, + validateStateInitialValue, +} from "@/wab/client/operations/utils/validate-state-changes"; +import { TplMgr } from "@/wab/shared/TplMgr"; +import { isCodeComponent } from "@/wab/shared/core/components"; +import { codeLit, tryExtractJson } from "@/wab/shared/core/exprs"; +import { mkParamsForState } from "@/wab/shared/core/lang"; +import { + NormalStateVariableType, + StateAccessType, + addComponentState, + genOnChangeParamName, + getDefaultValueForStateVariableType, + mkState, +} from "@/wab/shared/core/states"; +import { Component, Expr, Site, State } from "@/wab/shared/model/classes"; + +export type CreateComponentStateResult = OperationResult<{ state: State }>; + +/** + * Create an explicit state variable on the component. The name is deduped + * against existing param/tpl names (numeric suffix), and the change-handler + * param is derived from it. The initial value is any expression; omitting it + * (or passing null) uses the variable type's default. Statically-known values + * are validated against the variable type. + */ +export function createComponentState(opts: { + site: Site; + component: Component; + tplMgr: TplMgr; + name: string; + variableType?: NormalStateVariableType; + accessType?: StateAccessType; + initialValue?: Expr | null; +}): CreateComponentStateResult { + const { + site, + component, + tplMgr, + variableType = "text", + accessType = "private", + initialValue, + } = opts; + + if (isCodeComponent(component)) { + return { + result: "error", + message: `Component "${component.name}" is a code component; its states are managed by its code registration.`, + }; + } + if (!opts.name.trim()) { + return { result: "error", message: "State name cannot be empty." }; + } + if (initialValue !== undefined && initialValue !== null) { + const staticValue = tryExtractJson(initialValue); + const invalidMessage = + staticValue !== undefined + ? validateStateInitialValue(variableType, staticValue) + : validateStateAccessType(accessType, initialValue); + if (invalidMessage) { + return { result: "error", message: invalidMessage }; + } + } + + const name = tplMgr.getUniqueParamName(component, opts.name); + const onChangeProp = tplMgr.getUniqueParamName( + component, + genOnChangeParamName(name) + ); + const { valueParam, onChangeParam } = mkParamsForState({ + name, + onChangeProp, + variableType, + accessType, + defaultExpr: + initialValue ?? + codeLit(getDefaultValueForStateVariableType(variableType)), + }); + const state = mkState({ + param: valueParam, + onChangeParam, + variableType, + accessType, + }); + addComponentState(site, component, state); + return { result: "success", state }; +} diff --git a/platform/wab/src/wab/client/operations/create-component.spec.ts b/platform/wab/src/wab/client/operations/create-component.spec.ts new file mode 100644 index 0000000000..3df17cf294 --- /dev/null +++ b/platform/wab/src/wab/client/operations/create-component.spec.ts @@ -0,0 +1,209 @@ +import { createComponent } from "@/wab/client/operations/create-component"; +import { createVariantGroup } from "@/wab/client/operations/create-variant-group"; +import { setupComponentWithTplTree } from "@/wab/client/operations/tests/utils"; +import { VariantOptionsType } from "@/wab/shared/TplMgr"; +import { assert } from "@/wab/shared/common"; +import { ComponentType } from "@/wab/shared/core/components"; +import * as Tpls from "@/wab/shared/core/tpls"; + +describe("createComponent", () => { + function setup() { + return setupComponentWithTplTree(Tpls.mkTplTagX("div", {})); + } + + it("creates a reusable component with default root", () => { + const { site, tplMgr } = setup(); + const before = site.components.length; + + const result = createComponent({ + tplMgr, + name: "CopilotNewButton", + type: ComponentType.Plain, + }); + + assert(result.result === "success", "expected created result"); + expect(site.components.length).toEqual(before + 1); + expect(result.component.name).toEqual("CopilotNewButton"); + expect(result.component.type).toEqual(ComponentType.Plain); + expect(result.component.tplTree).toBeDefined(); + expect(result.component.variantGroups).toEqual([]); + }); + + it("creates a page with default pageMeta synthesized from name", () => { + const { site, tplMgr } = setup(); + + const result = createComponent({ + tplMgr, + name: "PricingPage", + type: ComponentType.Page, + }); + + assert(result.result === "success", "expected created result"); + expect(result.component.type).toEqual(ComponentType.Page); + assert(result.component.pageMeta, "Expected pageMeta to exists"); + expect(result.component.pageMeta.path).toEqual("/pricing-page"); + expect(result.component.pageMeta.roleId).toEqual(site.defaultPageRoleId); + expect( + site.pageArenas.some((a) => a.component === result.component) + ).toEqual(true); + }); + + it("creates a page with caller-provided pageMeta", () => { + const { tplMgr } = setup(); + + const result = createComponent({ + tplMgr, + name: "AboutPage", + type: ComponentType.Page, + pageMeta: { + path: "/about", + title: "About Us", + description: "Learn about our company", + canonical: "https://example.com/about", + openGraphImage: "https://example.com/og/about.png", + params: { section: "team" }, + query: { utm: "homepage" }, + }, + }); + + assert(result.result === "success", "expected created result"); + const { pageMeta } = result.component; + assert(pageMeta, "Expected pageMeta to exists"); + expect(pageMeta.path).toEqual("/about"); + expect(pageMeta.title).toEqual("About Us"); + expect(pageMeta.description).toEqual("Learn about our company"); + expect(pageMeta.canonical).toEqual("https://example.com/about"); + expect(pageMeta.openGraphImage).toEqual("https://example.com/og/about.png"); + expect(pageMeta.params).toEqual({ section: "team" }); + expect(pageMeta.query).toEqual({ utm: "homepage" }); + }); + + it("accepts a partial pageMeta and synthesizes the rest", () => { + const { site, tplMgr } = setup(); + + const result = createComponent({ + tplMgr, + name: "ContactPage", + type: ComponentType.Page, + pageMeta: { title: "Get in touch" }, + }); + + assert(result.result === "success", "expected created result"); + const { pageMeta } = result.component; + assert(pageMeta, "Expected pageMeta to exists"); + expect(pageMeta.title).toEqual("Get in touch"); + // Missing path falls back to the slugified component name. + expect(pageMeta.path).toEqual("/contact-page"); + // roleId is system-controlled, sourced from the site. + expect(pageMeta.roleId).toEqual(site.defaultPageRoleId); + }); + + it("normalizes raw caller-provided path input", () => { + const { tplMgr } = setup(); + + const result = createComponent({ + tplMgr, + name: "RawPathPage", + type: ComponentType.Page, + pageMeta: { path: "About Us" }, + }); + + assert(result.result === "success", "expected created result"); + // nameToPath kebab-cases segments and adds the leading slash. + assert(result.component.pageMeta, "Expected pageMeta to exists"); + expect(result.component.pageMeta.path).toEqual("/about-us"); + }); + + it("uniquifies colliding page paths", () => { + const { tplMgr } = setup(); + + const first = createComponent({ + tplMgr, + name: "PricingA", + type: ComponentType.Page, + pageMeta: { path: "/pricing" }, + }); + const second = createComponent({ + tplMgr, + name: "PricingB", + type: ComponentType.Page, + pageMeta: { path: "/pricing" }, + }); + + assert(first.result === "success", "expected first to be created"); + assert(second.result === "success", "expected second to be created"); + assert(first.component.pageMeta, "Expected pageMeta to exists"); + assert(second.component.pageMeta, "Expected pageMeta to exists"); + + expect(first.component.pageMeta.path).toEqual("/pricing"); + expect(second.component.pageMeta.path).not.toEqual("/pricing"); + }); + + it("composes with createVariantGroup to add variant groups", () => { + const { tplMgr } = setup(); + + const result = createComponent({ + tplMgr, + name: "CopilotBadge", + type: ComponentType.Plain, + }); + assert(result.result === "success", "expected success result"); + + const { component } = result; + createVariantGroup({ + component, + tplMgr, + name: "color", + optionsType: VariantOptionsType.singleChoice, + }); + createVariantGroup({ + component, + tplMgr, + name: "isRounded", + optionsType: VariantOptionsType.standalone, + }); + + expect(component.variantGroups.length).toEqual(2); + + const colorGroup = component.variantGroups.find( + (g) => g.param.variable.name === "color" + ); + expect(colorGroup).toBeDefined(); + + const toggleGroup = component.variantGroups.find( + (g) => g.param.variable.name === "isRounded" + ); + expect(toggleGroup).toBeDefined(); + // toggle (standalone) groups have exactly one implicit variant + expect(toggleGroup!.variants.length).toEqual(1); + }); + + it("errors on empty name", () => { + const { tplMgr } = setup(); + const result = createComponent({ + tplMgr, + name: " ", + type: ComponentType.Plain, + }); + expect(result.result).toEqual("error"); + }); + + it("uniquifies colliding component names", () => { + const { tplMgr } = setup(); + + const first = createComponent({ + tplMgr, + name: "CopilotDup", + type: ComponentType.Plain, + }); + const second = createComponent({ + tplMgr, + name: "CopilotDup", + type: ComponentType.Plain, + }); + + assert(first.result === "success", "expected first to be created"); + assert(second.result === "success", "expected second to be created"); + expect(first.component.name).not.toEqual(second.component.name); + }); +}); diff --git a/platform/wab/src/wab/client/operations/create-component.ts b/platform/wab/src/wab/client/operations/create-component.ts new file mode 100644 index 0000000000..0f94efb14a --- /dev/null +++ b/platform/wab/src/wab/client/operations/create-component.ts @@ -0,0 +1,28 @@ +import { OperationResult } from "@/wab/client/operations/common"; +import { TplMgr } from "@/wab/shared/TplMgr"; +import { ComponentType } from "@/wab/shared/core/components"; +import { Component, PageMetaParams, TplNode } from "@/wab/shared/model/classes"; + +export type CreateComponentResult = OperationResult<{ component: Component }>; + +/** + * Create a new component or page + */ +export function createComponent(opts: { + tplMgr: TplMgr; + name: string; + type: ComponentType; + rootTpl?: TplNode; + pageMeta?: Partial>; +}): CreateComponentResult { + const { tplMgr, name, type, rootTpl, pageMeta } = opts; + + if (!name.trim()) { + return { result: "error", message: "Component name cannot be empty." }; + } + + return { + result: "success", + component: tplMgr.addComponent({ name, type, rootTpl, pageMeta }), + }; +} diff --git a/platform/wab/src/wab/client/operations/create-style-token.spec.ts b/platform/wab/src/wab/client/operations/create-style-token.spec.ts new file mode 100644 index 0000000000..34f6f57173 --- /dev/null +++ b/platform/wab/src/wab/client/operations/create-style-token.spec.ts @@ -0,0 +1,42 @@ +import { createStyleToken } from "@/wab/client/operations/create-style-token"; +import { TplMgr } from "@/wab/shared/TplMgr"; +import { assert } from "@/wab/shared/common"; +import { createSite } from "@/wab/shared/core/sites"; + +describe("createStyleToken", () => { + function setup() { + const site = createSite(); + const tplMgr = new TplMgr({ site }); + return { site, tplMgr }; + } + + it("creates a Color token with the given value", () => { + const { site, tplMgr } = setup(); + const before = site.styleTokens.length; + + const result = createStyleToken({ + tplMgr, + name: "primary", + type: "Color", + value: "#ff0000", + }); + + assert(result.result === "success", "expected success result"); + expect(site.styleTokens.length).toEqual(before + 1); + expect(result.token.name).toEqual("primary"); + expect(result.token.type).toEqual("Color"); + expect(result.token.value).toEqual("#ff0000"); + expect(result.token.variantedValues).toEqual([]); + }); + + it("errors on empty name", () => { + const { tplMgr } = setup(); + const result = createStyleToken({ + tplMgr, + name: " ", + type: "Color", + value: "#000", + }); + expect(result.result).toEqual("error"); + }); +}); diff --git a/platform/wab/src/wab/client/operations/create-style-token.ts b/platform/wab/src/wab/client/operations/create-style-token.ts new file mode 100644 index 0000000000..ae2f210c75 --- /dev/null +++ b/platform/wab/src/wab/client/operations/create-style-token.ts @@ -0,0 +1,34 @@ +import { OperationResult } from "@/wab/client/operations/common"; +import { StyleTokenType } from "@/wab/commons/StyleToken"; +import { TplMgr } from "@/wab/shared/TplMgr"; +import { StyleToken } from "@/wab/shared/model/classes"; + +export type CreateStyleTokenResult = OperationResult<{ token: StyleToken }>; + +/** + * Create a new style token. Token name is uniquified against the site's + * existing tokens. + * + * @param opts.tplMgr - TplMgr instance for the site. + * @param opts.name - Desired token name. + * @param opts.type - Token type (Color, Spacing, FontSize, etc.). + * @param opts.value - Initial value. Either a raw CSS value (e.g. '#fff', '8px') + * or a token reference 'var(--token-{uuid})' that points at another token. + */ +export function createStyleToken(opts: { + tplMgr: TplMgr; + name: string; + type: StyleTokenType; + value: string; +}): CreateStyleTokenResult { + const { tplMgr, name, type, value } = opts; + + if (!name.trim()) { + return { result: "error", message: "Token name cannot be empty." }; + } + + return { + result: "success", + token: tplMgr.addStyleToken({ name, tokenType: type, value }), + }; +} diff --git a/platform/wab/src/wab/client/operations/create-variant-group.spec.ts b/platform/wab/src/wab/client/operations/create-variant-group.spec.ts new file mode 100644 index 0000000000..ce1d022569 --- /dev/null +++ b/platform/wab/src/wab/client/operations/create-variant-group.spec.ts @@ -0,0 +1,69 @@ +import { createComponent } from "@/wab/client/operations/create-component"; +import { createVariantGroup } from "@/wab/client/operations/create-variant-group"; +import { setupComponentWithTplTree } from "@/wab/client/operations/tests/utils"; +import { VariantOptionsType } from "@/wab/shared/TplMgr"; +import { assert } from "@/wab/shared/common"; +import { ComponentType } from "@/wab/shared/core/components"; +import * as Tpls from "@/wab/shared/core/tpls"; + +describe("createVariantGroup", () => { + function setupWithComponent() { + const { site, tplMgr } = setupComponentWithTplTree( + Tpls.mkTplTagX("div", {}) + ); + const created = createComponent({ + tplMgr, + name: "CopilotVGTest", + type: ComponentType.Plain, + }); + assert(created.result === "success", "setup failed"); + return { site, tplMgr, component: created.component }; + } + + it("adds a single-choice group", () => { + const { tplMgr, component } = setupWithComponent(); + + const result = createVariantGroup({ + component, + tplMgr, + name: "size", + optionsType: VariantOptionsType.singleChoice, + }); + + assert(result.result === "success", "expected success result"); + expect(result.group.multi).toEqual(false); + expect(result.group.param.variable.name).toEqual("size"); + expect(result.group.variants).toEqual([]); + expect(component.variantGroups).toContain(result.group); + }); + + it("adds a multi-choice group", () => { + const { tplMgr, component } = setupWithComponent(); + + const result = createVariantGroup({ + component, + tplMgr, + name: "decor", + optionsType: VariantOptionsType.multiChoice, + }); + + assert(result.result === "success", "expected success result"); + expect(result.group.multi).toEqual(true); + expect(result.group.variants).toEqual([]); + }); + + it("adds a toggle (standalone) group with an implicit single variant", () => { + const { tplMgr, component } = setupWithComponent(); + + const result = createVariantGroup({ + component, + tplMgr, + name: "isActive", + optionsType: VariantOptionsType.standalone, + }); + + assert(result.result === "success", "expected success result"); + // standalone group has a single implicit variant + expect(result.group.variants.length).toEqual(1); + }); +}); diff --git a/platform/wab/src/wab/client/operations/create-variant-group.ts b/platform/wab/src/wab/client/operations/create-variant-group.ts new file mode 100644 index 0000000000..66ee4c1a6e --- /dev/null +++ b/platform/wab/src/wab/client/operations/create-variant-group.ts @@ -0,0 +1,28 @@ +import { OperationResult } from "@/wab/client/operations/common"; +import { TplMgr, VariantOptionsType } from "@/wab/shared/TplMgr"; +import { Component, ComponentVariantGroup } from "@/wab/shared/model/classes"; + +export type CreateVariantGroupResult = OperationResult<{ + group: ComponentVariantGroup; +}>; + +/** + * Create a new variant group on a component. + * + * @param opts.component - The component to add the group to. + * @param opts.tplMgr - TplMgr instance for the site. + * @param opts.name - Desired group name. TplMgr uniquifies if needed. + * @param opts.optionsType - {@link VariantOptionsType}. + */ +export function createVariantGroup(opts: { + component: Component; + tplMgr: TplMgr; + name: string; + optionsType: VariantOptionsType; +}): CreateVariantGroupResult { + const { component, tplMgr, name, optionsType } = opts; + return { + result: "success", + group: tplMgr.createVariantGroup({ component, name, optionsType }), + }; +} diff --git a/platform/wab/src/wab/client/operations/create-variant.spec.ts b/platform/wab/src/wab/client/operations/create-variant.spec.ts new file mode 100644 index 0000000000..9b8e76f545 --- /dev/null +++ b/platform/wab/src/wab/client/operations/create-variant.spec.ts @@ -0,0 +1,100 @@ +import { createComponent } from "@/wab/client/operations/create-component"; +import { createVariant } from "@/wab/client/operations/create-variant"; +import { createVariantGroup } from "@/wab/client/operations/create-variant-group"; +import { setupComponentWithTplTree } from "@/wab/client/operations/tests/utils"; +import { VariantOptionsType } from "@/wab/shared/TplMgr"; +import { assert } from "@/wab/shared/common"; +import { ComponentType } from "@/wab/shared/core/components"; +import * as Tpls from "@/wab/shared/core/tpls"; +import { ComponentVariantGroup } from "@/wab/shared/model/classes"; + +describe("createVariant", () => { + function setupWithGroup() { + const { site, tplMgr } = setupComponentWithTplTree( + Tpls.mkTplTagX("div", {}) + ); + const created = createComponent({ + tplMgr, + name: "CopilotVariantTest", + type: ComponentType.Plain, + }); + assert(created.result === "success", "setup failed"); + + const groupResult = createVariantGroup({ + component: created.component, + tplMgr, + name: "state", + optionsType: VariantOptionsType.singleChoice, + }); + assert(groupResult.result === "success", "group setup failed"); + + return { + site, + tplMgr, + component: created.component, + group: groupResult.group, + }; + } + + it("adds a new variant to an existing group", () => { + const { tplMgr, component, group } = setupWithGroup(); + const before = group.variants.length; + + const result = createVariant({ + component, + tplMgr, + variantGroup: group, + name: "hovered", + }); + + assert(result.result === "success", "expected success result"); + expect(group.variants.length).toEqual(before + 1); + expect(result.variant.name).toEqual("hovered"); + expect(group.variants).toContain(result.variant); + }); + + it("returns error if group does not belong to component", () => { + const { tplMgr, component } = setupWithGroup(); + const strayGroup = { param: { variable: { name: "stray" } } }; + + const result = createVariant({ + component, + tplMgr, + variantGroup: strayGroup as unknown as ComponentVariantGroup, + name: "foo", + }); + + expect(result.result).toEqual("error"); + }); + + it("rejects adding variants to a standalone group", () => { + const { tplMgr } = setupComponentWithTplTree(Tpls.mkTplTagX("div", {})); + const created = createComponent({ + tplMgr, + name: "CopilotStandaloneTest", + type: ComponentType.Plain, + }); + assert(created.result === "success", "setup failed"); + + const groupResult = createVariantGroup({ + component: created.component, + tplMgr, + name: "isRounded", + optionsType: VariantOptionsType.standalone, + }); + assert(groupResult.result === "success", "group setup failed"); + const standaloneGroup = groupResult.group; + const before = standaloneGroup.variants.length; + + const result = createVariant({ + component: created.component, + tplMgr, + variantGroup: standaloneGroup, + name: "extra", + }); + + expect(result.result).toEqual("error"); + // The implicit variant stays the only one — invariant preserved. + expect(standaloneGroup.variants.length).toEqual(before); + }); +}); diff --git a/platform/wab/src/wab/client/operations/create-variant.ts b/platform/wab/src/wab/client/operations/create-variant.ts new file mode 100644 index 0000000000..3a7a5c84a6 --- /dev/null +++ b/platform/wab/src/wab/client/operations/create-variant.ts @@ -0,0 +1,50 @@ +import { OperationResult } from "@/wab/client/operations/common"; +import { TplMgr } from "@/wab/shared/TplMgr"; +import { isStandaloneVariantGroup } from "@/wab/shared/Variants"; +import { + Component, + ComponentVariantGroup, + Variant, +} from "@/wab/shared/model/classes"; + +export type CreateVariantResult = OperationResult<{ variant: Variant }>; + +/** + * Add a single variant to an existing component variant group. If a variant + * with the same name already exists in the group, TplMgr uniquifies it. + * + * @param opts.component - The owning component. + * @param opts.tplMgr - TplMgr instance for the site. + * @param opts.variantGroup - The group to add the variant to. Must belong to `component`. + * @param opts.name - Variant name. + */ +export function createVariant(opts: { + component: Component; + tplMgr: TplMgr; + variantGroup: ComponentVariantGroup; + name: string; +}): CreateVariantResult { + const { component, tplMgr, variantGroup, name } = opts; + + if (!component.variantGroups.includes(variantGroup)) { + return { + result: "error", + message: `Variant group "${variantGroup.param.variable.name}" does not belong to component "${component.name}".`, + }; + } + + // Standalone groups are identified structurally by their single implicit + // variant whose name matches the group name. Adding another variant breaks + // that invariant + if (isStandaloneVariantGroup(variantGroup)) { + return { + result: "error", + message: `Variant group "${variantGroup.param.variable.name}" is standalone and only supports its single implicit variant.`, + }; + } + + return { + result: "success", + variant: tplMgr.createVariant(component, variantGroup, name), + }; +} diff --git a/platform/wab/src/wab/client/operations/delete-component-state.spec.ts b/platform/wab/src/wab/client/operations/delete-component-state.spec.ts new file mode 100644 index 0000000000..78ac144188 --- /dev/null +++ b/platform/wab/src/wab/client/operations/delete-component-state.spec.ts @@ -0,0 +1,167 @@ +import { createComponent } from "@/wab/client/operations/create-component"; +import { createComponentState } from "@/wab/client/operations/create-component-state"; +import { deleteComponentState } from "@/wab/client/operations/delete-component-state"; +import { + setupComponentWithInstance, + setupComponentWithTplTree, +} from "@/wab/client/operations/tests/utils"; +import { ensureVariantSetting, getBaseVariant } from "@/wab/shared/Variants"; +import { assert } from "@/wab/shared/common"; +import { ComponentType } from "@/wab/shared/core/components"; +import { customCode } from "@/wab/shared/core/exprs"; +import { getStateVarName } from "@/wab/shared/core/states"; +import * as Tpls from "@/wab/shared/core/tpls"; +import { TplTag, isKnownVariantGroupState } from "@/wab/shared/model/classes"; + +describe("deleteComponentState", () => { + function setupWithState() { + const { site, tplMgr } = setupComponentWithTplTree( + Tpls.mkTplTagX("div", {}) + ); + const created = createComponent({ + tplMgr, + name: "StateTest", + type: ComponentType.Plain, + }); + assert(created.result === "success", "setup failed"); + const component = created.component; + const stateResult = createComponentState({ + site, + component, + tplMgr, + name: "count", + }); + assert(stateResult.result === "success", "state setup failed"); + return { site, tplMgr, component, state: stateResult.state }; + } + + it("deletes an unreferenced state along with both its params", () => { + const { site, component, state } = setupWithState(); + + const result = deleteComponentState(state, { site, component }); + + assert(result.result === "success", "expected success result"); + expect(component.states).not.toContain(state); + expect(component.params).not.toContain(state.param); + expect(component.params).not.toContain(state.onChangeParam); + }); + + it("blocks deletion while the state is referenced in its component", () => { + const { site, component, state } = setupWithState(); + const root = component.tplTree as TplTag; + const vs = ensureVariantSetting(root, [getBaseVariant(component)]); + vs.attrs["title"] = customCode(`$state.${getStateVarName(state)}`); + + const result = deleteComponentState(state, { site, component }); + + expect(result).toMatchObject({ + result: "error", + message: + 'Cannot delete state "count": it is referenced in component "StateTest".', + referencingNode: root, + }); + expect(component.states).toContain(state); + }); + + it("blocks deletion while implicit copies are referenced elsewhere", () => { + const { site, tplMgr, page, button, instance } = + setupComponentWithInstance(); + const created = createComponentState({ + site, + component: button, + tplMgr, + name: "count", + accessType: "readonly", + }); + assert(created.result === "success", "state setup failed"); + const implicitState = page.states.find( + (s) => s.implicitState === created.state && s.tplNode === instance + ); + assert(implicitState, "expected an implicit state on the page"); + const pageRoot = page.tplTree as TplTag; + const vs = ensureVariantSetting(pageRoot, [getBaseVariant(page)]); + vs.attrs["title"] = customCode(`$state.${getStateVarName(implicitState)}`); + + const result = deleteComponentState(created.state, { + site, + component: button, + }); + + // The Button already has a "count" prop param, so the created + // state is deduped to "count 2" (var name "count2"). + expect(result).toMatchObject({ + result: "error", + message: + 'Cannot delete state "count2": it is referenced in UnnamedComponent.', + }); + expect(button.states).toContain(created.state); + }); + + it("deletes a public state and removes its unreferenced implicit copies", () => { + const { site, tplMgr, page, button } = setupComponentWithInstance(); + const created = createComponentState({ + site, + component: button, + tplMgr, + name: "count", + accessType: "readonly", + }); + assert(created.result === "success", "state setup failed"); + expect(page.states).toHaveLength(1); + + const result = deleteComponentState(created.state, { + site, + component: button, + }); + + assert(result.result === "success", "expected success result"); + expect(page.states).toHaveLength(0); + }); + + it("rejects implicit states", () => { + const { site, tplMgr, page, button, instance } = + setupComponentWithInstance(); + const created = createComponentState({ + site, + component: button, + tplMgr, + name: "count", + accessType: "readonly", + }); + assert(created.result === "success", "state setup failed"); + const implicitState = page.states.find( + (s) => s.implicitState === created.state && s.tplNode === instance + ); + assert(implicitState, "expected an implicit state on the page"); + + const result = deleteComponentState(implicitState, { + site, + component: page, + }); + + expect(result).toMatchObject({ + result: "error", + message: + 'State "button.count2" is an implicit state; it can only be removed by deleting its element.', + }); + }); + + it("rejects variant-group states", () => { + const { site, button } = setupComponentWithInstance(); + const variantGroupState = button.states.find((s) => + isKnownVariantGroupState(s) + ); + assert(variantGroupState, "expected a variant-group state"); + + const result = deleteComponentState(variantGroupState, { + site, + component: button, + }); + + expect(result).toMatchObject({ + result: "error", + message: + 'State "size" backs a variant group; delete the variant group instead.', + }); + }); +}); diff --git a/platform/wab/src/wab/client/operations/delete-component-state.ts b/platform/wab/src/wab/client/operations/delete-component-state.ts new file mode 100644 index 0000000000..e18bd1a668 --- /dev/null +++ b/platform/wab/src/wab/client/operations/delete-component-state.ts @@ -0,0 +1,102 @@ +import { + canDeleteState, + getComponentDisplayName, + isCodeComponent, +} from "@/wab/shared/core/components"; +import { + findImplicitUsages, + getStateVarName, + isStateUsedInExpr, + removeComponentState, +} from "@/wab/shared/core/states"; +import { findExprsInComponent } from "@/wab/shared/core/tpls"; +import { + Component, + Site, + State, + TplNode, + isKnownVariantGroupState, +} from "@/wab/shared/model/classes"; +import { uniq } from "lodash"; + +export type DeleteComponentStateResult = + | { result: "success" } + | { + result: "error"; + message: string; + /** + * The TplNode holding an expression that references the state, + * preventing deletion. Present only for references within the + * state's own component. Used to render a clickable + * "Go to reference" link in the error notification. + */ + referencingNode?: TplNode | null; + }; + +/** + * Delete a state variable, removing both of its params. Errors if the state + * is still referenced (in this component's expressions, or in other + * components through implicit copies) instead of cascading, and if the state + * is not user-deletable (implicit copy of a child component's state, + * variant-group-backed, or Plume built-in). + */ +export function deleteComponentState( + state: State, + opts: { + site: Site; + component: Component; + } +): DeleteComponentStateResult { + const { site, component } = opts; + const stateName = getStateVarName(state); + + if (isCodeComponent(component)) { + return { + result: "error", + message: `Component "${component.name}" is a code component; its states are managed by its code registration.`, + }; + } + if (state.implicitState) { + return { + result: "error", + message: `State "${stateName}" is an implicit state; it can only be removed by deleting its element.`, + }; + } + if (isKnownVariantGroupState(state)) { + return { + result: "error", + message: `State "${stateName}" backs a variant group; delete the variant group instead.`, + }; + } + if (!canDeleteState(component, state)) { + return { + result: "error", + message: `State "${stateName}" is a built-in state of component "${component.name}" and cannot be deleted.`, + }; + } + + const refs = findExprsInComponent(component).filter(({ expr }) => + isStateUsedInExpr(state, expr) + ); + if (refs.length > 0) { + return { + result: "error", + message: `Cannot delete state "${stateName}": it is referenced in component "${component.name}".`, + referencingNode: refs.find((r) => r.node)?.node, + }; + } + const referencingComponents = uniq( + findImplicitUsages(site, state).map((usage) => usage.component) + ); + if (referencingComponents.length > 0) { + return { + result: "error", + message: `Cannot delete state "${stateName}": it is referenced in ${referencingComponents + .map((c) => getComponentDisplayName(c)) + .join(", ")}.`, + }; + } + + removeComponentState(site, component, state); + return { result: "success" }; +} diff --git a/platform/wab/src/wab/client/operations/delete-component.spec.ts b/platform/wab/src/wab/client/operations/delete-component.spec.ts new file mode 100644 index 0000000000..782b4a2300 --- /dev/null +++ b/platform/wab/src/wab/client/operations/delete-component.spec.ts @@ -0,0 +1,96 @@ +import { deleteComponent } from "@/wab/client/operations/delete-component"; +import { fakeStudioCtx } from "@/wab/client/test/fake-init-ctx"; +import { $$$ } from "@/wab/shared/TplQuery"; +import { getBaseVariant } from "@/wab/shared/Variants"; +import { assert } from "@/wab/shared/common"; +import { ComponentType } from "@/wab/shared/core/components"; +import { mkTplComponent } from "@/wab/shared/core/tpls"; +import { Component, TplTag } from "@/wab/shared/model/classes"; + +describe("deleteComponent", () => { + function setup() { + const { studioCtx } = fakeStudioCtx(); + // Deleting a component the studio is focused on triggers an arena switch; + // stub it out so the operation under test doesn't drive navigation. + jest.spyOn(studioCtx, "switchToArena").mockImplementation(() => {}); + const tplMgr = studioCtx.tplMgr(); + // deleteComponent mutates the model directly, so it must run in a change. + const runDeleteOperation = (component: Component) => + studioCtx.changeUnsafe(() => + deleteComponent(component, studioCtx.site, studioCtx, tplMgr) + ); + return { studioCtx, runDeleteOperation }; + } + + it("deletes a component with no usages", async () => { + const { studioCtx, runDeleteOperation } = setup(); + const component = studioCtx.addComponent("Comp", { + type: ComponentType.Plain, + }); + expect(studioCtx.site.components).toContain(component); + + const result = await runDeleteOperation(component); + + assert(result.result === "success", "expected success"); + expect(studioCtx.site.components).not.toContain(component); + }); + + it("deletes a page component", async () => { + const { studioCtx, runDeleteOperation } = setup(); + const page = studioCtx.addComponent("Home", { type: ComponentType.Page }); + + const result = await runDeleteOperation(page); + + assert(result.result === "success", "expected success"); + expect(studioCtx.site.components).not.toContain(page); + }); + + it("errors instead of deleting when the component is still referenced", async () => { + const { studioCtx, runDeleteOperation } = setup(); + const target = studioCtx.addComponent("Target", { + type: ComponentType.Plain, + }); + const user = studioCtx.addComponent("User", { + type: ComponentType.Plain, + }); + + // Make `user` reference `target` by instantiating it in user's tree. + const userRoot = user.tplTree as TplTag; + $$$(userRoot).append(mkTplComponent(target, getBaseVariant(user))); + + const result = await runDeleteOperation(target); + + expect(result.result).toEqual("error"); + expect(studioCtx.site.components).toContain(target); + }); + + it("refuses to delete the default page wrapper", async () => { + const { studioCtx, runDeleteOperation } = setup(); + const wrapper = studioCtx.addComponent("Wrapper", { + type: ComponentType.Plain, + }); + studioCtx.site.pageWrapper = wrapper; + + const result = await runDeleteOperation(wrapper); + + expect(result.result).toEqual("error"); + expect(studioCtx.site.components).toContain(wrapper); + }); + + it("refuses to delete a sub-component", async () => { + const { studioCtx, runDeleteOperation } = setup(); + const parent = studioCtx.addComponent("Parent", { + type: ComponentType.Plain, + }); + const sub = studioCtx.addComponent("Sub", { + type: ComponentType.Plain, + }); + sub.superComp = parent; + parent.subComps.push(sub); + + const result = await runDeleteOperation(sub); + + expect(result.result).toEqual("error"); + expect(studioCtx.site.components).toContain(sub); + }); +}); diff --git a/platform/wab/src/wab/client/operations/delete-component.tsx b/platform/wab/src/wab/client/operations/delete-component.tsx new file mode 100644 index 0000000000..fbba9b18ae --- /dev/null +++ b/platform/wab/src/wab/client/operations/delete-component.tsx @@ -0,0 +1,82 @@ +import type { StudioCtx } from "@/wab/client/studio-ctx/StudioCtx"; +import { isDedicatedArena } from "@/wab/shared/Arenas"; +import type { TplMgr } from "@/wab/shared/TplMgr"; +import { + getComponentDisplayName, + getSubComponents, + isCodeComponent, +} from "@/wab/shared/core/components"; +import { getReferencingComponents } from "@/wab/shared/core/sites"; +import { Component, Site } from "@/wab/shared/model/classes"; +import { uniq } from "lodash"; + +export type DeleteComponentResult = + | { result: "success"; message: string } + | { result: "error"; message: string }; + +/** + * Delete a component (or page) from the site, along with its sub-components. + * + * Validates that the component can be safely deleted: it must not be a + * sub-component, the default page wrapper, or still referenced by another + * component. If any check fails, returns an error and leaves the site untouched. + * + */ +export function deleteComponent( + component: Component, + site: Site, + studioCtx: StudioCtx, + tplMgr: TplMgr +): DeleteComponentResult { + // A sub-component only exists in service of its super-component and is deleted + // alongside it; it cannot be deleted on its own. + if (component.superComp && !isCodeComponent(component)) { + return { + result: "error", + message: `Cannot delete "${getComponentDisplayName( + component + )}" because it is a sub-component.`, + }; + } + + if (site.pageWrapper === component) { + return { + result: "error", + message: `Cannot delete "${getComponentDisplayName( + component + )}" because it is set as the default page wrapper.`, + }; + } + + const referencers = getReferencingComponents(site, component); + if (referencers.length > 0) { + return { + result: "error", + message: `Cannot delete "${getComponentDisplayName( + component + )}" because it is still used by ${uniq( + referencers.map(getComponentDisplayName) + ).join(", ")}.`, + }; + } + + const curArena = studioCtx.currentArena; + const comps = [component]; + if (!isCodeComponent(component)) { + // Code components organize sub-components for display only; other + // components own their sub-components and delete them together. + comps.push(...getSubComponents(component)); + } + tplMgr.removeComponentGroup(comps); + studioCtx.pruneInvalidViewCtxs(); + if (isDedicatedArena(curArena) && comps.includes(curArena.component)) { + studioCtx.switchToFirstArena(); + } + + return { + result: "success", + message: `Deleted component "${getComponentDisplayName( + component + )}" (uuid: ${component.uuid}).`, + }; +} diff --git a/platform/wab/src/wab/client/operations/delete-resources.spec.ts b/platform/wab/src/wab/client/operations/delete-resources.spec.ts new file mode 100644 index 0000000000..833d7a2e32 --- /dev/null +++ b/platform/wab/src/wab/client/operations/delete-resources.spec.ts @@ -0,0 +1,232 @@ +import * as quickModals from "@/wab/client/components/quick-modals"; +import { createVariant } from "@/wab/client/operations/create-variant"; +import { deleteResourcesWithUsages } from "@/wab/client/operations/delete-resources"; +import { fakeStudioCtx } from "@/wab/client/test/fake-init-ctx"; +import { VariantOptionsType } from "@/wab/shared/TplMgr"; +import { assert } from "@/wab/shared/common"; +import { ComponentType } from "@/wab/shared/core/components"; +import { Variant } from "@/wab/shared/model/classes"; + +jest.mock("@/wab/client/components/quick-modals", () => ({ + deleteStudioElementConfirm: jest.fn(), +})); + +const mockedConfirm = + quickModals.deleteStudioElementConfirm as jest.MockedFunction< + typeof quickModals.deleteStudioElementConfirm + >; + +describe("deleteResourcesWithUsages", () => { + function setup() { + const { studioCtx } = fakeStudioCtx(); + jest.spyOn(studioCtx, "switchToArena").mockImplementation(() => {}); + const tplMgr = studioCtx.tplMgr(); + const component = studioCtx.addComponent("Comp", { + type: ComponentType.Plain, + }); + const group = tplMgr.createVariantGroup({ + component, + name: "size", + optionsType: VariantOptionsType.singleChoice, + }); + const makeVariant = (name: string): Variant => { + const created = createVariant({ + component, + tplMgr, + variantGroup: group, + name, + }); + assert(created.result === "success", "variant setup failed"); + return created.variant; + }; + // A second component used to populate usage summaries. + const userComp = studioCtx.addComponent("User", { + type: ComponentType.Plain, + }); + return { studioCtx, tplMgr, component, group, makeVariant, userComp }; + } + + beforeEach(() => { + mockedConfirm.mockReset(); + }); + + it("deletes a resource with no usages without showing a dialog", async () => { + const { studioCtx, makeVariant } = setup(); + const variant = makeVariant("small"); + const onDelete = jest.fn(); + + const result = await deleteResourcesWithUsages( + studioCtx, + [{ resource: variant, usageSummary: {}, usageCount: 0 }], + onDelete, + { behaviour: "confirm-if-referenced", deleteLabel: "variant" } + ); + + expect(mockedConfirm).not.toHaveBeenCalled(); + expect(onDelete).toHaveBeenCalledWith(variant); + expect(result.deletedResources).toEqual([variant]); + expect(result.messages).toHaveLength(1); + expect(result.errors).toEqual([]); + }); + + it("errors instead of deleting when behaviour is error-if-referenced and there are usages", async () => { + const { studioCtx, makeVariant, userComp } = setup(); + const variant = makeVariant("small"); + const onDelete = jest.fn(); + + const result = await deleteResourcesWithUsages( + studioCtx, + [ + { + resource: variant, + usageSummary: { components: [userComp] }, + usageCount: 1, + }, + ], + onDelete, + { behaviour: "error-if-referenced", deleteLabel: "variant" } + ); + + expect(onDelete).not.toHaveBeenCalled(); + expect(mockedConfirm).not.toHaveBeenCalled(); + expect(result.deletedResources).toEqual([]); + expect(result.errors).toHaveLength(1); + }); + + it("shows a confirmation dialog when referenced and deletes if confirmed", async () => { + const { studioCtx, makeVariant, userComp } = setup(); + const variant = makeVariant("small"); + const onDelete = jest.fn(); + mockedConfirm.mockResolvedValue(true); + + const result = await deleteResourcesWithUsages( + studioCtx, + [ + { + resource: variant, + usageSummary: { components: [userComp] }, + usageCount: 1, + }, + ], + onDelete, + { behaviour: "confirm-if-referenced", deleteLabel: "variant" } + ); + + expect(mockedConfirm).toHaveBeenCalledTimes(1); + expect(onDelete).toHaveBeenCalledWith(variant); + expect(result.deletedResources).toEqual([variant]); + }); + + it("does not delete when the confirmation dialog is declined", async () => { + const { studioCtx, makeVariant, userComp } = setup(); + const variant = makeVariant("small"); + const onDelete = jest.fn(); + mockedConfirm.mockResolvedValue(false); + + const result = await deleteResourcesWithUsages( + studioCtx, + [ + { + resource: variant, + usageSummary: { components: [userComp] }, + usageCount: 1, + }, + ], + onDelete, + { behaviour: "confirm-if-referenced", deleteLabel: "variant" } + ); + + expect(mockedConfirm).toHaveBeenCalledTimes(1); + expect(onDelete).not.toHaveBeenCalled(); + expect(result.deletedResources).toEqual([]); + expect(result.messages).toEqual([]); + expect(result.cancelled).toEqual(true); + expect(result.errors).toHaveLength(1); + }); + + it("deletes referenced resources without a dialog when behaviour is delete-if-referenced", async () => { + const { studioCtx, makeVariant, userComp } = setup(); + const variant = makeVariant("small"); + const onDelete = jest.fn(); + + const result = await deleteResourcesWithUsages( + studioCtx, + [ + { + resource: variant, + usageSummary: { components: [userComp] }, + usageCount: 1, + }, + ], + onDelete, + { behaviour: "delete-if-referenced", deleteLabel: "variant" } + ); + + expect(mockedConfirm).not.toHaveBeenCalled(); + expect(onDelete).toHaveBeenCalledWith(variant); + expect(result.deletedResources).toEqual([variant]); + }); + + it("defaults to confirm-if-referenced when no behaviour is given", async () => { + const { studioCtx, makeVariant, userComp } = setup(); + const variant = makeVariant("small"); + const onDelete = jest.fn(); + mockedConfirm.mockResolvedValue(false); + + await deleteResourcesWithUsages( + studioCtx, + [ + { + resource: variant, + usageSummary: { components: [userComp] }, + usageCount: 1, + }, + ], + onDelete, + { deleteLabel: "variant" } + ); + + expect(mockedConfirm).toHaveBeenCalledTimes(1); + expect(onDelete).not.toHaveBeenCalled(); + }); + + it("invokes onDelete and records a message for each resource", async () => { + const { studioCtx, makeVariant } = setup(); + const small = makeVariant("small"); + const large = makeVariant("large"); + const onDelete = jest.fn(); + + const result = await deleteResourcesWithUsages( + studioCtx, + [ + { resource: small, usageSummary: {}, usageCount: 0 }, + { resource: large, usageSummary: {}, usageCount: 0 }, + ], + onDelete, + { behaviour: "delete-if-referenced", deleteLabel: "variant" } + ); + + expect(onDelete).toHaveBeenCalledTimes(2); + expect(onDelete).toHaveBeenNthCalledWith(1, small); + expect(onDelete).toHaveBeenNthCalledWith(2, large); + expect(result.deletedResources).toEqual([small, large]); + expect(result.messages).toHaveLength(2); + }); + + it("is a no-op when given an empty resource list", async () => { + const { studioCtx } = setup(); + const onDelete = jest.fn(); + const changeObservedSpy = jest.spyOn(studioCtx, "changeObserved"); + + const result = await deleteResourcesWithUsages(studioCtx, [], onDelete, { + behaviour: "delete-if-referenced", + deleteLabel: "variant", + }); + + expect(onDelete).not.toHaveBeenCalled(); + expect(changeObservedSpy).not.toHaveBeenCalled(); + expect(result.deletedResources).toEqual([]); + expect(result.messages).toEqual([]); + changeObservedSpy.mockRestore(); + }); +}); diff --git a/platform/wab/src/wab/client/operations/delete-resources.ts b/platform/wab/src/wab/client/operations/delete-resources.ts new file mode 100644 index 0000000000..e6e7f2b2cc --- /dev/null +++ b/platform/wab/src/wab/client/operations/delete-resources.ts @@ -0,0 +1,159 @@ +import { deleteStudioElementConfirm } from "@/wab/client/components/quick-modals"; +import { StudioCtx } from "@/wab/client/studio-ctx/StudioCtx"; +import type { AddItemKey } from "@/wab/shared/add-item-keys"; +import type { DefaultStyle } from "@/wab/shared/core/styles"; +import type { + AnimationSequence, + ArenaFrame, + Component, + DataToken, + ImageAsset, + Mixin, + StyleToken, + StyleTokenOverride, + Variant, + VariantGroup, +} from "@/wab/shared/model/classes"; +import { ok } from "neverthrow"; + +export interface UsageSummary { + components?: Component[]; + frames?: ArenaFrame[]; + mixins?: Mixin[]; + styleTokens?: StyleToken[]; + styleTokenOverrides?: StyleTokenOverride[]; + themes?: DefaultStyle[]; + addItemPrefs?: AddItemKey[]; +} + +export type DeletableResource = + | AnimationSequence + | StyleToken + | ImageAsset + | DataToken + | Mixin + | Variant + | VariantGroup; + +export interface ResourceWithUsage { + resource: R; + usageSummary: UsageSummary; + usageCount: number; +} + +export interface DeleteResourcesResult { + deletedResources: R[]; + messages: string[]; + errors?: string[]; + /** True when the user dismissed the confirmation dialog without deleting. */ + cancelled?: boolean; +} + +/** + * Generic resource deletion utility that handles changeObserved coordination, + * optional confirmation dialogs, and structured error/success reporting. + * + * @param behaviour Deletion behavior: + * - "confirm-if-referenced" - show confirmation dialog if there are usages (for UI, default) + * - "delete-if-referenced" - delete even if referenced, no dialog (for copilot tools) + * - "error-if-referenced" - return error if referenced, don't delete (for copilot blocks) + */ +export async function deleteResourcesWithUsages( + studioCtx: StudioCtx, + resourcesWithUsage: ResourceWithUsage[], + onDelete: (resource: R) => void, + opts: { + behaviour?: + | "confirm-if-referenced" + | "delete-if-referenced" + | "error-if-referenced"; + deleteLabel: string; + } +): Promise> { + const messages: string[] = []; + const errors: string[] = []; + + const behaviour = opts.behaviour ?? "confirm-if-referenced"; + const deleteLabel = opts.deleteLabel; + const dialogTitle = `Deleting ${deleteLabel}`; + + // Filter resources with usages for confirmation dialog + const resourcesWithUsages = resourcesWithUsage.filter( + ({ usageCount }) => usageCount > 0 + ); + + // Handle "error-if-referenced" mode + if (behaviour === "error-if-referenced" && resourcesWithUsages.length > 0) { + for (const { resource, usageSummary } of resourcesWithUsages) { + const componentNames = (usageSummary.components ?? []) + .map((c) => `${c.name || "unnamed"} (uuid: ${c.uuid})`) + .join(", "); + const frameNames = (usageSummary.frames ?? []) + .map((f) => f.name || "unnamed") + .join(", "); + const locations = [ + componentNames && `components: ${componentNames}`, + frameNames && `frames: ${frameNames}`, + ] + .filter(Boolean) + .join("; "); + errors.push( + `Cannot delete "${getDeletableResourceLabel(resource)}" (uuid: ${ + resource.uuid + }): still referenced in ${locations}.` + ); + } + return { deletedResources: [], messages, errors }; + } + + // Handle confirmation dialog when there are usages + if (behaviour === "confirm-if-referenced" && resourcesWithUsages.length > 0) { + const confirmed = await deleteStudioElementConfirm( + dialogTitle, + resourcesWithUsages.map(({ resource, usageSummary }) => ({ + element: resource, + summary: usageSummary, + })) + ); + if (!confirmed) { + errors.push(`Deletion of ${deleteLabel} was cancelled.`); + return { deletedResources: [], messages, errors, cancelled: true }; + } + } + + // Delete all resources that were passed in + if (resourcesWithUsage.length > 0) { + const affectedComponentsSet = new Set( + resourcesWithUsage.flatMap(({ usageSummary }) => [ + ...(usageSummary.components ?? []), + ...(usageSummary.frames ?? []).map((f) => f.container.component), + ]) + ); + const affectedComponents = Array.from(affectedComponentsSet); + + await studioCtx.changeObserved( + () => affectedComponents, + () => { + for (const { resource } of resourcesWithUsage) { + onDelete(resource); + messages.push( + `Deleted ${deleteLabel} "${getDeletableResourceLabel( + resource + )}" (uuid: ${resource.uuid}).` + ); + } + return ok(); + } + ); + } + + return { + deletedResources: resourcesWithUsage.map(({ resource }) => resource), + messages, + errors, + }; +} + +function getDeletableResourceLabel(resource: DeletableResource) { + return "name" in resource ? resource.name : resource.typeTag; +} diff --git a/platform/wab/src/wab/client/operations/delete-style-token.spec.ts b/platform/wab/src/wab/client/operations/delete-style-token.spec.ts new file mode 100644 index 0000000000..2959c509d1 --- /dev/null +++ b/platform/wab/src/wab/client/operations/delete-style-token.spec.ts @@ -0,0 +1,43 @@ +import { createStyleToken } from "@/wab/client/operations/create-style-token"; +import { deleteStyleToken } from "@/wab/client/operations/delete-style-token"; +import { mkTokenRef } from "@/wab/commons/StyleToken"; +import { TplMgr } from "@/wab/shared/TplMgr"; +import { assert } from "@/wab/shared/common"; +import { createSite } from "@/wab/shared/core/sites"; + +describe("deleteStyleToken", () => { + function setup() { + const site = createSite(); + const tplMgr = new TplMgr({ site }); + return { site, tplMgr }; + } + + it("inlines the deleted token's value into other tokens that reference it", () => { + const { site, tplMgr } = setup(); + + const baseResult = createStyleToken({ + tplMgr, + name: "gray-900", + type: "Color", + value: "#111827", + }); + assert(baseResult.result === "success", "expected base token created"); + + const aliasResult = createStyleToken({ + tplMgr, + name: "text-primary", + type: "Color", + value: mkTokenRef(baseResult.token), + }); + assert(aliasResult.result === "success", "expected alias token created"); + + expect(site.styleTokens).toContain(baseResult.token); + expect(aliasResult.token.value).toEqual(mkTokenRef(baseResult.token)); + + deleteStyleToken({ site, token: baseResult.token }); + + expect(site.styleTokens).not.toContain(baseResult.token); + // Reference is inlined + expect(aliasResult.token.value).toEqual("#111827"); + }); +}); diff --git a/platform/wab/src/wab/client/operations/delete-style-token.ts b/platform/wab/src/wab/client/operations/delete-style-token.ts new file mode 100644 index 0000000000..6395cd239d --- /dev/null +++ b/platform/wab/src/wab/client/operations/delete-style-token.ts @@ -0,0 +1,20 @@ +import { remove } from "@/wab/shared/common"; +import { changeTokenUsage, extractTokenUsages } from "@/wab/shared/core/styles"; +import { Site, StyleToken } from "@/wab/shared/model/classes"; + +/** + * Delete a local style token. Inlines the token's value at every usage + * (CSS rules, token-to-token refs, overrides, varianted values, props, + * fallbacks) before removing it, so no dangling refs are left. + */ +export function deleteStyleToken(opts: { + site: Site; + token: StyleToken; +}): void { + const { site, token } = opts; + const [usages] = extractTokenUsages(site, token); + for (const usage of usages) { + changeTokenUsage(site, token, usage, "inline"); + } + remove(site.styleTokens, token); +} diff --git a/platform/wab/src/wab/client/operations/delete-tpl.ts b/platform/wab/src/wab/client/operations/delete-tpl.ts index 8781e60bb9..4c612c9cab 100644 --- a/platform/wab/src/wab/client/operations/delete-tpl.ts +++ b/platform/wab/src/wab/client/operations/delete-tpl.ts @@ -1,23 +1,10 @@ +import { validateTplRemoval } from "@/wab/client/operations/utils/validate-tpl-removal"; import { $$$ } from "@/wab/shared/TplQuery"; import { VariantTplMgr } from "@/wab/shared/VariantTplMgr"; import { redistributeColumnsSizes } from "@/wab/shared/columns-utils"; -import { getComponentDisplayName } from "@/wab/shared/core/components"; import { isTagListContainer } from "@/wab/shared/core/rich-text-util"; -import { - findImplicitStatesOfNodesInTree, - findImplicitUsages, - getStateDisplayName, - isStateUsedInExpr, -} from "@/wab/shared/core/states"; import * as Tpls from "@/wab/shared/core/tpls"; -import { - Component, - Site, - State, - TplNode, - isKnownTplRef, -} from "@/wab/shared/model/classes"; -import L from "lodash"; +import { Component, Site, TplNode } from "@/wab/shared/model/classes"; export type DeleteTplResult = | { result: "deleted" } @@ -63,57 +50,13 @@ export function deleteTpl( return { result: "error", message: "Cannot remove the root element." }; } - // Implicit state validation - const removedImplicitStates: State[] = []; - for (const tpl of tpls) { - removedImplicitStates.push( - ...findImplicitStatesOfNodesInTree(component, tpl) - ); - } - - for (const state of removedImplicitStates) { - // Check if state is referenced within the component (excluding deleted subtrees) - const refs = Tpls.findExprsInTree(component.tplTree, tpls).filter( - ({ expr }) => isStateUsedInExpr(state, expr) - ); - if (refs.length > 0) { - const maybeNode = refs.find((r) => r.node)?.node; - return { - result: "error", - message: `It contains variable "${getStateDisplayName( - state - )}" which is referenced in the current component.`, - referencingNode: maybeNode, - }; - } - - // Check cross-component references - const implicitUsages = findImplicitUsages(site, state); - if (implicitUsages.length > 0) { - const components = L.uniq(implicitUsages.map((usage) => usage.component)); - return { - result: "error", - message: `Cannot remove element: it contains variable "${getStateDisplayName( - state - )}" which is referenced in ${components - .map((c) => getComponentDisplayName(c)) - .join(", ")}.`, - }; - } - } - - // TplRef validation - for (const { expr, node: maybeNode } of Tpls.findExprsInComponent( - component - )) { - if (isKnownTplRef(expr) && tpls.includes(expr.tpl)) { - return { - result: "error", - message: - "It is referenced by another element in an invoke action element interaction.", - referencingNode: maybeNode, - }; - } + const error = validateTplRemoval(tpls, component, site); + if (error) { + return { + result: "error", + message: error.message, + referencingNode: error.referencingNode, + }; } // Permanent deletion diff --git a/platform/wab/src/wab/client/operations/delete-variant-group.spec.ts b/platform/wab/src/wab/client/operations/delete-variant-group.spec.ts new file mode 100644 index 0000000000..e378dbba8d --- /dev/null +++ b/platform/wab/src/wab/client/operations/delete-variant-group.spec.ts @@ -0,0 +1,85 @@ +import { deleteVariantGroup } from "@/wab/client/operations/delete-variant-group"; +import { fakeStudioCtx } from "@/wab/client/test/fake-init-ctx"; +import { VariantOptionsType } from "@/wab/shared/TplMgr"; +import { ensureVariantSetting, getBaseVariant } from "@/wab/shared/Variants"; +import { toVarName } from "@/wab/shared/codegen/util"; +import { assert } from "@/wab/shared/common"; +import { ComponentType } from "@/wab/shared/core/components"; +import { customCode } from "@/wab/shared/core/exprs"; +import { TplTag } from "@/wab/shared/model/classes"; + +describe("deleteVariantGroup", () => { + function setup() { + const { studioCtx } = fakeStudioCtx(); + const tplMgr = studioCtx.tplMgr(); + const component = studioCtx.addComponent("Comp", { + type: ComponentType.Plain, + }); + const group = tplMgr.createVariantGroup({ + component, + name: "size", + optionsType: VariantOptionsType.singleChoice, + }); + return { studioCtx, tplMgr, component, group }; + } + + it("deletes a component variant group", async () => { + const { studioCtx, tplMgr, component, group } = setup(); + expect(component.variantGroups).toContain(group); + + const result = await deleteVariantGroup( + group, + component, + studioCtx.site, + studioCtx, + tplMgr + ); + + assert(result.result === "success", "expected success"); + expect(component.variantGroups).not.toContain(group); + expect(result.messages.length).toBeGreaterThan(0); + }); + + it("deletes a global variant group", async () => { + const { studioCtx, tplMgr } = setup(); + const globalGroup = tplMgr.createGlobalVariantGroup("theme"); + expect(studioCtx.site.globalVariantGroups).toContain(globalGroup); + + const result = await deleteVariantGroup( + globalGroup, + undefined, + studioCtx.site, + studioCtx, + tplMgr + ); + + assert(result.result === "success", "expected success"); + expect(studioCtx.site.globalVariantGroups).not.toContain(globalGroup); + }); + + it("errors with references when the group is used in the component", async () => { + const { studioCtx, tplMgr, component, group } = setup(); + + const root = component.tplTree as TplTag; + const baseVs = ensureVariantSetting(root, [getBaseVariant(component)]); + baseVs.dataCond = customCode( + `$state.${toVarName(group.param.variable.name)}` + ); + + const result = await deleteVariantGroup( + group, + component, + studioCtx.site, + studioCtx, + tplMgr + ); + + expect(result.result).toEqual("error"); + if (result.result === "error") { + assert(result.variantGroupRefs != null, "expected variant group refs"); + expect(result.variantGroupRefs.length).toBeGreaterThan(0); + } + // Group is left untouched. + expect(component.variantGroups).toContain(group); + }); +}); diff --git a/platform/wab/src/wab/client/operations/delete-variant-group.tsx b/platform/wab/src/wab/client/operations/delete-variant-group.tsx new file mode 100644 index 0000000000..7d155eff9c --- /dev/null +++ b/platform/wab/src/wab/client/operations/delete-variant-group.tsx @@ -0,0 +1,195 @@ +import { deleteResourcesWithUsages } from "@/wab/client/operations/delete-resources"; +import type { StudioCtx } from "@/wab/client/studio-ctx/StudioCtx"; +import type { TplMgr } from "@/wab/shared/TplMgr"; +import { + findComponentsUsingComponentVariant, + findComponentsUsingGlobalVariant, + findSplitsUsingVariantGroup, + findStyleTokensUsingVariantGroup, +} from "@/wab/shared/cached-selectors"; +import { toVarName } from "@/wab/shared/codegen/util"; +import { ensure, xAddAll } from "@/wab/shared/common"; +import { + findStateForParam, + getComponentDisplayName, + isPlumeComponent, + removeVariantGroup, +} from "@/wab/shared/core/components"; +import { GeneralUsageSummary } from "@/wab/shared/core/sites"; +import { + findImplicitUsages, + isStateUsedInExpr, +} from "@/wab/shared/core/states"; +import { ExprReference, findExprsInComponent } from "@/wab/shared/core/tpls"; +import { + Component, + Site, + Split, + StyleToken, + VariantGroup, + isKnownComponentVariantGroup, +} from "@/wab/shared/model/classes"; +import { getPlumeEditorPlugin } from "@/wab/shared/plume/plume-registry"; + +export type DeleteVariantGroupResult = + | { result: "success"; messages: string[] } + | { + result: "error"; + message: string; + variantGroupRefs?: ExprReference[]; + /** True when the user dismissed the confirmation dialog without deleting. */ + cancelled?: boolean; + }; + +/** + * Delete a variant group from a component or site. + * + * Validates that the variant group can be safely deleted and performs the deletion with cleanup. + * + * @param group - The variant group to delete + * @param component - The component containing the variant group (undefined for global variant groups) + * @param site - The site + * @param studioCtx - StudioCtx for change tracking + * @param tplMgr - TplMgr for cleanup + * @param opts - Deletion options with behaviour ("confirm-if-referenced", "delete-if-referenced", "error-if-referenced") + * @returns Promise indicating success or detailed error + */ +export async function deleteVariantGroup( + group: VariantGroup, + component: Component | undefined, + site: Site, + studioCtx: StudioCtx, + tplMgr: TplMgr, + opts?: { + behaviour?: + | "confirm-if-referenced" + | "delete-if-referenced" + | "error-if-referenced"; + } +): Promise { + if (component) { + // Check if variant group is referenced in the component + if (isKnownComponentVariantGroup(group)) { + const refs = findVariantGroupReferences(component, group); + if (refs.length > 0) { + return { + result: "error", + message: `Variant group is referenced in the current component.`, + variantGroupRefs: refs, + }; + } + } + + // Check if it's a required Plume variant group + if (isPlumeComponent(component)) { + const groupName = toVarName(group.param.variable.name); + const plugin = getPlumeEditorPlugin(component); + const isRequired = plugin?.componentMeta.variantDefs.some( + (def) => def.group === groupName && def.required + ); + if (isRequired) { + return { + result: "error", + message: `The "${group.param.variable.name}" variant group is required for the "${component.name}" component to function properly.`, + }; + } + } + + // Check implicit usages from linked state + if (isKnownComponentVariantGroup(group)) { + const implicitUsages = group.linkedState + ? findImplicitUsages(site, group.linkedState) + : []; + if (implicitUsages.length > 0) { + const components = Array.from( + new Set(implicitUsages.map((usage) => usage.component)) + ); + return { + result: "error", + message: `Variant group is referenced in ${components + .map((c) => getComponentDisplayName(c)) + .join(", ")}.`, + }; + } + } + } + + const usageSummary = extractVariantGroupUsages(site, group, component); + const usageCount = + usageSummary.components.length + + usageSummary.splits.length + + usageSummary.tokens.length; + + const result = await deleteResourcesWithUsages( + studioCtx, + [{ resource: group, usageSummary, usageCount }], + () => { + if (component) { + removeVariantGroup(site, component, group); + studioCtx.ensureComponentStackFramesHasOnlyValidVariants(component); + } else { + tplMgr.removeGlobalVariantGroup(group); + studioCtx.ensureGlobalStackFramesHasOnlyValidVariants(); + } + studioCtx.pruneInvalidViewCtxs(); + }, + { + behaviour: opts?.behaviour ?? "confirm-if-referenced", + deleteLabel: `variant group ${group.param.variable.name}`, + } + ); + + if (result.errors && result.errors.length > 0) { + return { + result: "error", + message: result.errors[0], + cancelled: result.cancelled, + }; + } + + return { result: "success", messages: result.messages }; +} + +/** + * Extract variant group usages across the site. + * Returns components, splits, and tokens that use the variant group. + */ +function extractVariantGroupUsages( + site: Site, + group: VariantGroup, + component?: Component +): GeneralUsageSummary & { splits: Split[]; tokens: StyleToken[] } { + const usingComps = new Set(); + for (const variant of group.variants) { + const compsUsingVariant = component + ? findComponentsUsingComponentVariant(site, component, variant) + : findComponentsUsingGlobalVariant(site, variant); + xAddAll(usingComps, compsUsingVariant); + } + + const usingSplits = findSplitsUsingVariantGroup(site, group); + const usingTokens = findStyleTokensUsingVariantGroup(site, group); + + return { + components: Array.from(usingComps), + frames: [], + splits: usingSplits, + tokens: usingTokens, + }; +} + +/** + * Find variant group references in a component's expressions. + */ +function findVariantGroupReferences( + component: Component, + group: VariantGroup +): ExprReference[] { + const state = ensure( + findStateForParam(component, group.param), + "Variant group param must correspond to state" + ); + return findExprsInComponent(component).filter(({ expr }) => + isStateUsedInExpr(state, expr) + ); +} diff --git a/platform/wab/src/wab/client/operations/delete-variant.spec.ts b/platform/wab/src/wab/client/operations/delete-variant.spec.ts new file mode 100644 index 0000000000..15d5c92c0b --- /dev/null +++ b/platform/wab/src/wab/client/operations/delete-variant.spec.ts @@ -0,0 +1,91 @@ +import { createVariant } from "@/wab/client/operations/create-variant"; +import { deleteVariant } from "@/wab/client/operations/delete-variant"; +import { fakeStudioCtx } from "@/wab/client/test/fake-init-ctx"; +import { VariantOptionsType } from "@/wab/shared/TplMgr"; +import { ensureVariantSetting, getBaseVariant } from "@/wab/shared/Variants"; +import { toVarName } from "@/wab/shared/codegen/util"; +import { assert } from "@/wab/shared/common"; +import { ComponentType } from "@/wab/shared/core/components"; +import { customCode } from "@/wab/shared/core/exprs"; +import { TplTag } from "@/wab/shared/model/classes"; + +describe("deleteVariant", () => { + function setup() { + const { studioCtx } = fakeStudioCtx(); + const tplMgr = studioCtx.tplMgr(); + const component = studioCtx.addComponent("Comp", { + type: ComponentType.Plain, + }); + const group = tplMgr.createVariantGroup({ + component, + name: "size", + optionsType: VariantOptionsType.singleChoice, + }); + const created = createVariant({ + component, + tplMgr, + variantGroup: group, + name: "small", + }); + assert(created.result === "success", "variant setup failed"); + return { studioCtx, tplMgr, component, group, variant: created.variant }; + } + + it("deletes a variant from its group", async () => { + const { studioCtx, tplMgr, component, group, variant } = setup(); + expect(group.variants).toContain(variant); + + const result = await deleteVariant( + variant, + component, + studioCtx.site, + studioCtx, + tplMgr + ); + + assert(result.result === "success", "expected success"); + expect(group.variants).not.toContain(variant); + expect(result.messages.length).toBeGreaterThan(0); + }); + + it("refuses to delete the base variant", async () => { + const { studioCtx, tplMgr, component } = setup(); + + const result = await deleteVariant( + getBaseVariant(component), + component, + studioCtx.site, + studioCtx, + tplMgr + ); + + expect(result.result).toEqual("error"); + }); + + it("errors with references when the variant group is used in the component", async () => { + const { studioCtx, tplMgr, component, group, variant } = setup(); + + // Reference the variant group's state in the component tree. + const root = component.tplTree as TplTag; + const baseVs = ensureVariantSetting(root, [getBaseVariant(component)]); + baseVs.dataCond = customCode( + `$state.${toVarName(group.param.variable.name)}` + ); + + const result = await deleteVariant( + variant, + component, + studioCtx.site, + studioCtx, + tplMgr + ); + + expect(result.result).toEqual("error"); + if (result.result === "error") { + assert(result.variantGroupRefs != null, "expected variant group refs"); + expect(result.variantGroupRefs.length).toBeGreaterThan(0); + } + // Variant is left untouched. + expect(group.variants).toContain(variant); + }); +}); diff --git a/platform/wab/src/wab/client/operations/delete-variant.tsx b/platform/wab/src/wab/client/operations/delete-variant.tsx new file mode 100644 index 0000000000..cc95ff2ef7 --- /dev/null +++ b/platform/wab/src/wab/client/operations/delete-variant.tsx @@ -0,0 +1,152 @@ +import { deleteResourcesWithUsages } from "@/wab/client/operations/delete-resources"; +import type { StudioCtx } from "@/wab/client/studio-ctx/StudioCtx"; +import { getArenaFrames } from "@/wab/shared/Arenas"; +import type { TplMgr } from "@/wab/shared/TplMgr"; +import { isBaseVariant, makeVariantName } from "@/wab/shared/Variants"; +import { + findComponentsUsingComponentVariant, + findComponentsUsingGlobalVariant, +} from "@/wab/shared/cached-selectors"; +import { ensure } from "@/wab/shared/common"; +import { + findStateForParam, + isFrameComponent, + isPlumeComponent, +} from "@/wab/shared/core/components"; +import { GeneralUsageSummary } from "@/wab/shared/core/sites"; +import { isStateUsedInExpr } from "@/wab/shared/core/states"; +import { ExprReference, findExprsInComponent } from "@/wab/shared/core/tpls"; +import { + Component, + Site, + Variant, + isKnownComponentVariantGroup, +} from "@/wab/shared/model/classes"; +import { getPlumeVariantDef } from "@/wab/shared/plume/plume-registry"; + +export type DeleteVariantResult = + | { result: "success"; messages: string[] } + | { + result: "error"; + message: string; + variantGroupRefs?: ExprReference[]; + /** True when the user dismissed the confirmation dialog without deleting. */ + cancelled?: boolean; + }; + +/** + * Delete a variant from a component. + * + * Validates that the variant can be safely deleted and performs the deletion with cleanup. + * + * @param variant - The variant to delete + * @param component - The component containing the variant + * @param opts - Deletion options with behaviour ("confirm-if-referenced", "delete-if-referenced", "error-if-referenced") + * @returns Promise indicating success or detailed error + */ +export async function deleteVariant( + variant: Variant, + component: Component, + site: Site, + studioCtx: StudioCtx, + tplMgr: TplMgr, + opts?: { + behaviour?: + | "confirm-if-referenced" + | "delete-if-referenced" + | "error-if-referenced"; + } +): Promise { + if (isBaseVariant(variant)) { + return { + result: "error", + message: "Cannot delete the base variant.", + }; + } + + // Check if variant group is referenced in the component + if (variant.parent && isKnownComponentVariantGroup(variant.parent)) { + const state = ensure( + findStateForParam(component, variant.parent.param), + "Variant group param must correspond to state" + ); + const refs = findExprsInComponent(component).filter(({ expr }) => + isStateUsedInExpr(state, expr) + ); + + if (refs.length > 0) { + return { + result: "error", + message: `Variant group is referenced in the current component.`, + variantGroupRefs: refs, + }; + } + } + + // Check if it's a required Plume variant + if (isPlumeComponent(component)) { + const variantDef = getPlumeVariantDef(component, variant); + if (variantDef?.required) { + return { + result: "error", + message: `The "${variant.name}" variant is required for the "${component.name}" component to function properly.`, + }; + } + } + + const usageSummary = extractVariantUsages(site, variant, component); + const usageCount = + usageSummary.components.length + usageSummary.frames.length; + + const result = await deleteResourcesWithUsages( + studioCtx, + [{ resource: variant, usageSummary, usageCount }], + () => { + tplMgr.tryRemoveVariant(variant, component); + studioCtx.ensureComponentStackFramesHasOnlyValidVariants(component); + studioCtx.pruneInvalidViewCtxs(); + }, + { + behaviour: opts?.behaviour ?? "confirm-if-referenced", + deleteLabel: `variant ${makeVariantName({ variant, site })}`, + } + ); + + if (result.errors && result.errors.length > 0) { + return { + result: "error", + message: result.errors[0], + cancelled: result.cancelled, + }; + } + + return { result: "success", messages: result.messages }; +} + +/** + * Extract variant usages across the site. + * Returns components that use the variant and frame components that contain the variant. + */ +function extractVariantUsages( + site: Site, + variant: Variant, + component?: Component +): GeneralUsageSummary { + const usingComps = !component + ? findComponentsUsingGlobalVariant(site, variant) + : findComponentsUsingComponentVariant(site, component, variant); + + const arenaFrames = site.arenas.flatMap((arena) => getArenaFrames(arena)); + + const usingFrames = [...usingComps].filter(isFrameComponent).map((c) => + ensure( + arenaFrames.find((frame) => frame.container.component === c), + () => `Couldn't find arenaFrame for component ${c.name} (${c.uuid})` + ) + ); + + return { + components: [...usingComps].filter((c) => !isFrameComponent(c)), + frames: usingFrames, + }; +} diff --git a/platform/wab/src/wab/client/operations/extract-component.spec.ts b/platform/wab/src/wab/client/operations/extract-component.spec.ts new file mode 100644 index 0000000000..44589c281d --- /dev/null +++ b/platform/wab/src/wab/client/operations/extract-component.spec.ts @@ -0,0 +1,110 @@ +import { extractComponent } from "@/wab/client/operations/extract-component"; +import { TplMgr } from "@/wab/shared/TplMgr"; +import { $$$ } from "@/wab/shared/TplQuery"; +import { getBaseVariant, mkVariantSetting } from "@/wab/shared/Variants"; +import { ComponentType } from "@/wab/shared/core/components"; +import { customCode } from "@/wab/shared/core/exprs"; +import { createSite } from "@/wab/shared/core/sites"; +import { + addComponentState, + mkValueStateForTextInput, +} from "@/wab/shared/core/states"; +import { mkTplTagX } from "@/wab/shared/core/tpls"; +import { TplTag, Variant } from "@/wab/shared/model/classes"; + +function setup() { + const site = createSite(); + const tplMgr = new TplMgr({ site }); + const component = tplMgr.addComponent({ + name: "Container", + type: ComponentType.Plain, + }); + const base = getBaseVariant(component); + const root = component.tplTree as TplTag; + return { site, tplMgr, component, base, root }; +} + +function mkChild(base: Variant, opts: { name?: string } = {}) { + return mkTplTagX(opts.name ? "input" : "div", { + name: opts.name, + baseVariant: base, + variants: [mkVariantSetting({ variants: [base] })], + }); +} + +describe("extractComponent operation", () => { + it("extracts a subtree into a new component attached to the site", () => { + const { site, tplMgr, component, base, root } = setup(); + const child = mkChild(base); + $$$(root).append(child); + + const result = extractComponent({ + site, + containingComponent: component, + tpl: child, + name: "Extracted", + tplMgr, + getCanvasEnvForTpl: () => undefined, + }); + + expect(result.result).toEqual("success"); + if (result.result === "success") { + expect(result.tplComponent.component.name).toEqual("Extracted"); + expect(site.components).toContain(result.tplComponent.component); + // The original child is replaced by an instance of the new component. + expect(root.children).toContain(result.tplComponent); + expect(root.children).not.toContain(child); + } + }); + + it("uniquifies the new component name on collision", () => { + const { site, tplMgr, component, base, root } = setup(); + tplMgr.addComponent({ name: "Taken", type: ComponentType.Plain }); + const child = mkChild(base); + $$$(root).append(child); + + const result = extractComponent({ + site, + containingComponent: component, + tpl: child, + name: "Taken", + tplMgr, + getCanvasEnvForTpl: () => undefined, + }); + + expect(result.result).toEqual("success"); + if (result.result === "success") { + expect(result.tplComponent.component.name).not.toEqual("Taken"); + } + }); + + it("returns a structured error when an implicit state is referenced outside the subtree", () => { + const { site, tplMgr, component, base, root } = setup(); + const child = mkChild(base, { name: "myInput" }); + const sibling = mkChild(base); + $$$(root).append(child); + $$$(root).append(sibling); + + const state = mkValueStateForTextInput(child, component, tplMgr); + addComponentState(site, component, state); + + const siblingVs = sibling.vsettings[0]; + siblingVs.dataCond = customCode(`$state.myInput.value`); + + const result = extractComponent({ + site, + containingComponent: component, + tpl: child, + name: "Extracted", + tplMgr, + getCanvasEnvForTpl: () => undefined, + }); + + expect(result.result).toEqual("error"); + if (result.result === "error") { + expect(result.message).toContain("referenced in the current component"); + // No component is created on failure. + expect(site.components.map((c) => c.name)).not.toContain("Extracted"); + } + }); +}); diff --git a/platform/wab/src/wab/client/operations/extract-component.ts b/platform/wab/src/wab/client/operations/extract-component.ts new file mode 100644 index 0000000000..45dd47df41 --- /dev/null +++ b/platform/wab/src/wab/client/operations/extract-component.ts @@ -0,0 +1,81 @@ +import { validateComponentExtraction } from "@/wab/client/operations/utils/validate-component-extraction"; +import { TplMgr } from "@/wab/shared/TplMgr"; +import * as Components from "@/wab/shared/core/components"; +import { CanvasEnv } from "@/wab/shared/eval"; +import { + Component, + Site, + TplComponent, + TplNode, + TplTag, +} from "@/wab/shared/model/classes"; + +export type ExtractComponentResult = + | { result: "success"; tplComponent: TplComponent; warnings: string[] } + | { + result: "error"; + message: string; + referencingNode?: TplNode | null; + }; + +/** + * Extract `tpl` from `containingComponent` into a new reusable component. + * + * Validates that the extraction is safe (no escaping implicit states, no + * interaction-bound states, no dangling TplRefs), creates the new component, + * replaces `tpl` with an instance of it, and attaches the component to the + * site. Returns the new TplComponent and any fallback warnings on success, or + * a structured error. + * + * The new component's name is uniquified against the site, so the resulting + * component name may differ from `name`. + * + * @param opts.site - The site. + * @param opts.containingComponent - Component that owns `tpl`. + * @param opts.tpl - Element to extract. + * @param opts.name - Desired name for the new component (will be uniquified). + * @param opts.resurfaceParams - If true, params used by `tpl` stay on the + * containing component and are piped through as args; if false, they move + * into the new component. + * @param opts.tplMgr - TplMgr instance for the site. + * @param opts.getCanvasEnvForTpl - Resolves a node's canvas env, used to infer + * fallbacks for code expressions. May return undefined when no live render + * tree is available. + */ +export function extractComponent(opts: { + site: Site; + containingComponent: Component; + tpl: TplComponent | TplTag; + name: string; + resurfaceParams?: boolean; + tplMgr: TplMgr; + getCanvasEnvForTpl: (node: TplNode) => CanvasEnv | undefined; +}): ExtractComponentResult { + const { + site, + containingComponent, + tpl, + name, + resurfaceParams = false, + tplMgr, + getCanvasEnvForTpl, + } = opts; + + const error = validateComponentExtraction(tpl, containingComponent, site); + if (error) { + return { result: "error", ...error }; + } + + const { tplComponent, warnings } = Components.extractComponent({ + site, + name: tplMgr.getUniqueComponentName(name), + tpl, + containingComponent, + resurfaceParams, + tplMgr, + getCanvasEnvForTpl, + }); + tplMgr.attachComponent(tplComponent.component); + + return { result: "success", tplComponent, warnings }; +} diff --git a/platform/wab/src/wab/client/operations/html-to-tpl.ts b/platform/wab/src/wab/client/operations/html-to-tpl.ts index 1509031857..368c0d4ef2 100644 --- a/platform/wab/src/wab/client/operations/html-to-tpl.ts +++ b/platform/wab/src/wab/client/operations/html-to-tpl.ts @@ -9,20 +9,52 @@ import { parseHtmlToWebImporterTree } from "@/wab/client/web-importer/html-parse import { isWIBaseVariantSettings, WIAnimationSequence, + WIBase, WIElement, WIFragment, WIScreenVariant, WIStyleVariant, WIVariant, } from "@/wab/client/web-importer/types"; +import { ProjectId } from "@/wab/shared/ApiSchema"; +import { CodeComponentsRegistry } from "@/wab/shared/code-components/code-components"; import { paramToVarName, toVarName } from "@/wab/shared/codegen/util"; import { assertNever, mkShortId, withoutNils } from "@/wab/shared/common"; -import { code, customCode } from "@/wab/shared/core/exprs"; +import { + interpolatedStringToCodeExpr, + interpolatedStringToExpr, + interpolatedStringToRichText, +} from "@/wab/shared/copilot/dynamic-value-input"; +import { mkNormalizedRep } from "@/wab/shared/copilot/utils"; +import { + code, + codeLit, + customCode, + InteractionConditionalMode, +} from "@/wab/shared/core/exprs"; import { ImageAssetType } from "@/wab/shared/core/image-asset-type"; import { getTagAttrForImageAsset } from "@/wab/shared/core/image-assets"; -import { getResponsiveStrategy } from "@/wab/shared/core/sites"; -import { mkRuleSet } from "@/wab/shared/core/styles"; -import { TplTagType } from "@/wab/shared/core/tpls"; +import { + JsonValue, + mkNameArg, + mkParam, + ParamExportType, +} from "@/wab/shared/core/lang"; +import { + allAnimationSequences, + getResponsiveStrategy, +} from "@/wab/shared/core/sites"; +import { validateStylesForTpl } from "@/wab/shared/core/style-props-tpl"; +import { + mkRuleSet, + tryGetAnimationSequenceUuidFromCssVar, +} from "@/wab/shared/core/styles"; +import { + AttrsSpec, + flattenTpls, + mkSlot, + TplTagType, +} from "@/wab/shared/core/tpls"; import { camelCssPropsToKebab } from "@/wab/shared/css"; import { AnimationProperty, @@ -30,15 +62,24 @@ import { isAnimationProperty, parseCssAnimationsFromStyles, } from "@/wab/shared/css/animations"; +import { isDynamicValue } from "@/wab/shared/dynamic-bindings"; +import { EvaluationError } from "@/wab/shared/eval/expression-parser"; import { Animation, AnimationSequence, Component, CustomCode, + EventHandler, + Expr, + FunctionExpr, ImageAssetRef, + Interaction, + isKnownDateRangeStrings, + isKnownDateString, isKnownTplTag, KeyFrame, - RawText, + ObjectPath, + Param, Site, TplNode, TplTag, @@ -46,8 +87,10 @@ import { } from "@/wab/shared/model/classes"; import { isAnyType, - isBoolType, - isNumType, + isChoiceType, + isMultiChoiceType, + typeFactory, + wabToTsType, } from "@/wab/shared/model/model-util"; import { ResponsiveStrategy } from "@/wab/shared/responsiveness"; import { RSH } from "@/wab/shared/RuleSetHelpers"; @@ -63,7 +106,9 @@ import { VariantGroupType, } from "@/wab/shared/Variants"; import { VariantTplMgr } from "@/wab/shared/VariantTplMgr"; -import L, { isArray, isObject } from "lodash"; +import { setTplVisibility, TplVisibility } from "@/wab/shared/visibility-utils"; +import { deserializePlasmicComponentAttrs } from "@/wab/shared/web-exporter/component-utils"; +import L, { isArray } from "lodash"; export interface HtmlToTplResult { /** Tpl nodes ready to be inserted (multiple when root is a WIFragment) */ @@ -72,7 +117,11 @@ export interface HtmlToTplResult { * Finalize deferred changes that must happen inside studioCtx.change(): * animation sequences, variant styles, and image asset attachment. */ - finalize: (opts: { component: Component; tplMgr: TplMgr }) => void; + finalize: (opts: { + component: Component; + tplMgr: TplMgr; + ccRegistry: CodeComponentsRegistry; + }) => void; } /** @@ -109,15 +158,19 @@ export async function htmlToTpl( return null; } - const { tpls, tplImageAssetMap, tplVariantSettingsData } = result; + const { + tpls, + tplImageAssetMap, + tplVariantSettingsData, + tplRepeatData, + tplVisibilityData, + } = result; return { tpls, finalize: (finalizeOpts) => { // Process Animation Sequences (keyframes) - wiAnimationSequenceToSiteAnimationSequence(animationSequences, { - site, - }); + upsertAnimationSequences(animationSequences, { site }); const owningComponent = finalizeOpts.component; @@ -174,11 +227,38 @@ export async function htmlToTpl( processedVariantCombo, safeStyles, unsafeStyles, - animations + animations, + finalizeOpts.ccRegistry ); } } + const baseCombo = [getBaseVariant(owningComponent)]; + + // Apply inline repetition (data-repeat) onto the base variant setting. + // Must run in finalize/studioCtx.change(), since assigning dataRep outside + // change() serializes the value but the canvas env does not register the + // repeat locals (currentItem/currentIndex). + for (const [tplNode, rep] of tplRepeatData.entries()) { + vtm.ensureBaseVariantSetting(tplNode).dataRep = mkNormalizedRep( + rep.collection, + rep.itemName, + rep.indexName + ); + } + + // Apply inline visibility (data-visibility / data-visible-if). Done in finalize + // (after style merge) because setTplVisibility writes a RuleSet flag + // (PLASMIC_DISPLAY_NONE) that must not be overwritten by the WI style merge. + for (const [tplNode, vis] of tplVisibilityData.entries()) { + setTplVisibility(tplNode, baseCombo, vis.visibility); + if (vis.visibility === TplVisibility.CustomExpr && vis.dataCond) { + // Overwrite the placeholder dataCond that setTplVisibility set with + // the real condition expression. + ensureVariantSetting(tplNode, baseCombo).dataCond = vis.dataCond; + } + } + // if we have any image/svg tpls we need to create their respective assets and update their attrs accordingly for (const [assetTpl, assetData] of tplImageAssetMap) { const { asset } = finalizeOpts.tplMgr.getOrCreateImageAsset( @@ -197,6 +277,72 @@ export async function htmlToTpl( }; } +// Attrs handled via dedicated paths instead of vs.attrs. Exported so copilot +// tools can reuse the same exclusion list. +export const htmlAttrsIgnoredByTpl = new Set([ + "class", // RuleSet styles + "className", // RuleSet styles + "style", // RuleSet styles (split to safe/unsafe) + "data-plasmic-name", // Tpl name + "data-plasmic-component", // Plasmic metadata + "data-plasmic-project", // Plasmic metadata (imported-project disambiguation) + "data-props", // Plasmic metadata + "slot", // web-components attr with no Plasmic meaning + "src", // image asset + "srcset", // image asset + "data-repeat", // repetition collection (dataRep) + "data-repeat-item", // repetition item local-var name + "data-repeat-index", // repetition index local-var name + "data-visible-if", // dynamic visibility condition (dataCond) + "data-visibility", // static visibility state (displayNone / notRendered) +]); + +/** Matches both lowercase HTML (`onclick`) and camelCase React (`onClick`). */ +export function isHtmlEventHandlerAttr(name: string) { + return /^on[a-zA-Z]/.test(name); +} + +/** + * Camelcase the first letter of an HTML event-handler attribute, e.g. `onclick` -> `onClick`. + * Compound names like `onmousedown` become `onMousedown` (not `onMouseDown`); codegen + * only requires `startsWith("on")` so they still get picked up as handlers. + */ +export function toReactEventAttr(name: string) { + if (/^on[A-Z]/.test(name)) { + return name; + } + return "on" + name.charAt(2).toUpperCase() + name.slice(3); +} + +/** + * Wrap a JS string from an HTML event-handler attribute into an `EventHandler` expr + * containing a single customFunction interaction. + */ +export function mkEventHandlerExprFromHtmlAttrValue( + jsCode: string +): EventHandler { + const eventHandler = new EventHandler({ interactions: [] }); + const interaction = new Interaction({ + interactionName: "Run code", + actionName: "customFunction", + condExpr: null, + conditionalMode: InteractionConditionalMode.Always, + args: [ + mkNameArg({ + name: "customFunction", + expr: new FunctionExpr({ + bodyExpr: customCode(jsCode), + argNames: [], + }), + }), + ], + parent: eventHandler, + uuid: mkShortId(), + }); + eventHandler.interactions.push(interaction); + return eventHandler; +} + type TplVariantSettingsData = { variantCombo: WIVariant[]; safeStyles: Record; @@ -204,16 +350,37 @@ type TplVariantSettingsData = { wiAnimations: CssAnimation[] | null; }; +type TplVisibilityData = { + visibility: TplVisibility; + /** Present only for TplVisibility.CustomExpr (the data-visible-if condition). */ + dataCond?: ObjectPath | CustomCode; +}; + +type TplRepeatData = { + collection: ObjectPath | CustomCode; + itemName?: string; + indexName?: string; +}; + function applyVariantStyles( vtm: VariantTplMgr, tpl: TplNode, variantCombo: VariantCombo, safeStyles: Record, unsafeStyles: Record, - animations: Animation[] | null + animations: Animation[] | null, + ccRegistry: CodeComponentsRegistry ) { const vs = vtm.ensureVariantSetting(tpl, variantCombo); - RSH(vs.rs, tpl).merge(safeStyles); + // Only styles Studio allows on this tpl may enter the RuleSet; the rest + // are silently dropped since the paste flow has no error channel at the moment. + const { valid } = validateStylesForTpl( + safeStyles, + tpl, + vtm.effectiveRsh(tpl, variantCombo), + ccRegistry + ); + RSH(vs.rs, tpl).merge(valid); if (Object.keys(unsafeStyles).length > 0) { vs.attrs["style"] = code(JSON.stringify(unsafeStyles)); @@ -266,13 +433,58 @@ async function wiTreeToTpl( } >(); const tplVariantSettingsData = new Map(); + // Repetition (data-repeat) and visibility (data-visibility / data-visible-if), + // are both applied in finalize. + const tplRepeatData = new Map(); + const tplVisibilityData = new Map(); + + function collectDataRepeat(node: WIBase, tpl: TplNode) { + const collectionStr = node.attrs["data-repeat"]; + if (collectionStr === undefined) { + return; + } + tplRepeatData.set(tpl, { + collection: interpolatedStringToCodeExpr(collectionStr), + itemName: node.attrs["data-repeat-item"], + indexName: node.attrs["data-repeat-index"], + }); + } + function collectVisibility(node: WIBase, tpl: TplNode) { + const visibleIf = node.attrs["data-visible-if"]; + if (visibleIf !== undefined) { + tplVisibilityData.set(tpl, { + visibility: TplVisibility.CustomExpr, + dataCond: interpolatedStringToCodeExpr(visibleIf), + }); + return; + } + const visibility = node.attrs["data-visibility"]; + if (visibility === "displayNone") { + tplVisibilityData.set(tpl, { visibility: TplVisibility.DisplayNone }); + } else if (visibility === "notRendered") { + tplVisibilityData.set(tpl, { visibility: TplVisibility.NotRendered }); + } else if (visibility !== undefined && visibility !== "visible") { + throw new EvaluationError( + `Invalid data-visibility value ${JSON.stringify( + visibility + )}. Expected "visible", "displayNone", or "notRendered"; use data-visible-if for a dynamic condition.` + ); + } + } + + /** Collect repetition + visibility bindings authored via `data-*` attributes. */ + function collectStructuralBindings(node: WIBase, tpl: TplNode) { + collectDataRepeat(node, tpl); + collectVisibility(node, tpl); + } function collectWIVariantData( node: Exclude, tpl: TplNode ) { + // Container layout defaults don't apply to text and slots nodes. const defaultStyles: Record = - node.type === "text" + node.type === "text" || node.type === "slot-target" ? {} : { display: "flex", @@ -363,6 +575,27 @@ async function wiTreeToTpl( tplVariantSettingsData.set(tpl, tplVariantSettings); } + function htmlAttrsToTplAttrs(node: WIBase): AttrsSpec { + const result: AttrsSpec = {}; + for (const [key, value] of Object.entries(node.attrs)) { + if (htmlAttrsIgnoredByTpl.has(key)) { + continue; + } + if (isHtmlEventHandlerAttr(key)) { + if (!value.trim()) { + continue; + } + result[toReactEventAttr(key)] = + mkEventHandlerExprFromHtmlAttrValue(value); + continue; + } + result[key] = isDynamicValue(value) + ? interpolatedStringToExpr(value) + : value; + } + return result; + } + async function rec(node: WIElement): Promise { // Fragment expands its children in place if (node.type === "fragment") { @@ -374,15 +607,14 @@ async function wiTreeToTpl( const tplName = node.attrs["data-plasmic-name"]; if (node.type === "text") { const tpl = vtm.mkTplTagX(node.tag, { + attrs: htmlAttrsToTplAttrs(node), name: tplName, type: TplTagType.Text, }); const vs = vtm.ensureBaseVariantSetting(tpl); - vs.text = new RawText({ - markers: [], - text: node.text, - }); + vs.text = interpolatedStringToRichText(node.text); collectWIVariantData(node, tpl); + collectStructuralBindings(node, tpl); return [tpl]; } @@ -409,6 +641,7 @@ async function wiTreeToTpl( name: tplName, }); collectWIVariantData(node, tpl); + collectStructuralBindings(node, tpl); // We will store each image to it's corresponding tpl so we can process it // later to upload image and attach asset to this tpl in 'processWebImporterTree', @@ -426,11 +659,16 @@ async function wiTreeToTpl( if (node.type === "component") { const componentName = node.component; - const component = site.components.find( - (c) => toVarName(c.name) === toVarName(componentName) - ); + const component = deserializePlasmicComponentAttrs(site, { + "data-plasmic-component": componentName, + "data-plasmic-project": node.depProjectId as ProjectId | undefined, + }); if (!component) { - throw new Error(`Component not found with name ${componentName}`); + throw new Error( + node.depProjectId + ? `Component "${componentName}" not found in imported project "${node.depProjectId}"` + : `Component not found with name ${componentName}` + ); } // Build args from props and slots @@ -438,15 +676,13 @@ async function wiTreeToTpl( if (node.props) { for (const [propName, propValue] of Object.entries(node.props)) { - const componentArg = getComponentArgFromHtmlProp( + const [param, argValue] = getComponentArgFromHtmlProp( component, componentName, propName, propValue ); - - const [paramName, argValue] = componentArg; - args[paramName] = argValue; + args[param.variable.name] = argValue; } } @@ -474,9 +710,47 @@ async function wiTreeToTpl( args, }); collectWIVariantData(node, tplComponent); + collectStructuralBindings(node, tplComponent); return [tplComponent]; } + if (node.type === "slot-target") { + const defaultChildren = ( + await Promise.all(node.defaultChildren.map((child) => rec(child))) + ).flat(); + + // Slot default contents only carry base variant settings, so keep + // only the base entries collected for the slot's descendants. + for (const child of defaultChildren) { + for (const tpl of flattenTpls(child)) { + const vsData = tplVariantSettingsData.get(tpl); + if (vsData) { + tplVariantSettingsData.set( + tpl, + vsData.filter((vs) => + vs.variantCombo.every((v) => v.type === "base") + ) + ); + } + } + } + + // The param is created detached: the owning component isn't known at + // build time, so whoever attaches the TplSlot to a component must + // register a real slot param for it, keeping only the name from this + // placeholder. + const param = mkParam({ + name: node.name, + type: typeFactory.renderable(), + exportType: ParamExportType.External, + paramType: "slot", + }); + const slot = mkSlot(param, defaultChildren); + vtm.ensureBaseVariantSetting(slot); + collectWIVariantData(node, slot); + return [slot]; + } + if (node.tag === "img") { const getSrc = () => { if (node.attrs.srcset) { @@ -487,14 +761,19 @@ async function wiTreeToTpl( return node.attrs.src; }; + const src = getSrc(); const tpl = vtm.mkTplImage({ attrs: { - src: code(JSON.stringify(getSrc())), + ...htmlAttrsToTplAttrs(node), + src: isDynamicValue(src) + ? interpolatedStringToExpr(src) + : code(JSON.stringify(src)), }, type: ImageAssetType.Picture, name: tplName, }); collectWIVariantData(node, tpl); + collectStructuralBindings(node, tpl); return [tpl]; } @@ -502,6 +781,7 @@ async function wiTreeToTpl( const tpl = vtm.mkTplTagX( node.tag, { + attrs: htmlAttrsToTplAttrs(node), name: tplName, type: TplTagType.Other, }, @@ -513,6 +793,7 @@ async function wiTreeToTpl( ); collectWIVariantData(node, tpl); + collectStructuralBindings(node, tpl); return [tpl]; } @@ -530,49 +811,69 @@ async function wiTreeToTpl( tpls, tplImageAssetMap, tplVariantSettingsData, + tplRepeatData, + tplVisibilityData, }; } -function wiAnimationSequenceToSiteAnimationSequence( +/** + * Upsert WIAnimationSequences into the site. If a sequence with the same + * name already exists, its keyframes are replaced + * with the new ones. Otherwise a new AnimationSequence is created. + */ +export function upsertAnimationSequences( animationSequences: WIAnimationSequence[], opts: { site: Site } -) { +): AnimationSequence[] { const { site } = opts; + const result: AnimationSequence[] = []; for (const sequence of animationSequences) { - const sequenceVarName = toVarName(sequence.name); + const keyframes = sequence.keyframes.map( + (wiKeyframe) => + new KeyFrame({ + percentage: wiKeyframe.percentage, + // We will only utilize the safe styles here. We need to think about the unsafe styles since we don't have any + // better way to display them in MixinControls/AnimationSequenceControls. We can have a new custom style attribute section + // to store unsafe styles or arbitrary css. Since it doesn't exist yet. + rs: mkRuleSet({ + values: camelCssPropsToKebab(wiKeyframe.safeStyles), + }), + }) + ); + const sequenceVarName = toVarName(sequence.name); const existingSequence = site.animationSequences.find( (existing) => toVarName(existing.name) === sequenceVarName ); - // We will skip creating any existing sequence so that it doesn't pollute the list of animation sequences - // when user paste the same html multiple times. if (existingSequence) { - continue; - } - - const keyframes = sequence.keyframes.map((wiKeyframe) => { - return new KeyFrame({ - percentage: wiKeyframe.percentage, - // We will only utilize the safe styles here. We need to think about the unsafe styles since we don't have any - // better way to display them in MixinControls/AnimationSequenceControls. We can have a new custom style attribute section - // to store unsafe styles or arbitrary css. Since it doesn't exist yet. - rs: mkRuleSet({ values: camelCssPropsToKebab(wiKeyframe.safeStyles) }), + // Replace the keyframes on the existing sequence so any references + // to it (Animation.sequence on tpl RuleSets) keep pointing to the + // same AnimationSequence object. + existingSequence.keyframes = keyframes; + result.push(existingSequence); + } else { + const newSequence = new AnimationSequence({ + name: sequence.name, + uuid: mkShortId(), + keyframes, }); - }); - - const newSequence = new AnimationSequence({ - name: sequence.name, - uuid: mkShortId(), - keyframes, - }); - - site.animationSequences.push(newSequence); + site.animationSequences.push(newSequence); + result.push(newSequence); + } } + + return result; } -function wiAnimationsToSiteAnimations( +/** + * Resolve a list of CssAnimation entries (from parsed `animation` + * shorthand). + * CssAnimations whose name doesn't match any existing + * AnimationSequence are silently dropped. + */ +export function wiAnimationsToSiteAnimations( wiAnimations: CssAnimation[], opts: { site: Site } ) { @@ -580,8 +881,14 @@ function wiAnimationsToSiteAnimations( const animations: Animation[] = []; for (const wiAnim of wiAnimations) { - const animationSequence = site.animationSequences.find( - (seq) => toVarName(seq.name) === toVarName(wiAnim.name) + const animSeqUuid = tryGetAnimationSequenceUuidFromCssVar(wiAnim.name); + const animationSequences = allAnimationSequences(site, { + includeDeps: "direct", + }); + const animationSequence = animationSequences.find( + (seq) => + seq.uuid === animSeqUuid || + toVarName(seq.name) === toVarName(wiAnim.name) ); if (!animationSequence) { @@ -624,16 +931,17 @@ function splitStylesByAnimations(styles: Record): { } /** - * Converts an HTML prop name and value to a component arg for the web importer. + * Converts an HTML prop name and value (in the serialized data-props format) + * to the matching component Param and arg Expr. * * Throws on invalid prop name, slot params, or type mismatches. */ -function getComponentArgFromHtmlProp( +export function getComponentArgFromHtmlProp( component: Component, componentName: string, propName: string, value: unknown -): [string, VariantsRef | CustomCode | string | number | boolean] { +): [Param, Expr] { const name = toVarName(propName); const param = component.params.find( (p) => paramToVarName(component, p) === name @@ -668,10 +976,7 @@ function getComponentArgFromHtmlProp( )}` ); } - return [ - param.variable.name, - new VariantsRef({ variants: [variantGroup.variants[0]] }), - ]; + return [param, new VariantsRef({ variants: [variantGroup.variants[0]] })]; } else if (variantGroup.multi) { const values = isArray(value) ? value : [value]; const variants = values.map((v) => { @@ -685,7 +990,7 @@ function getComponentArgFromHtmlProp( } return variant; }); - return [param.variable.name, new VariantsRef({ variants })]; + return [param, new VariantsRef({ variants })]; } else { const variant = variantGroup.variants.find( (v) => toVarName(v.name) === toVarName(`${value}`) @@ -695,42 +1000,105 @@ function getComponentArgFromHtmlProp( `Component "${componentName}" prop "${propName}" has no variant matching "${value}"` ); } - return [param.variable.name, new VariantsRef({ variants: [variant] })]; + return [param, new VariantsRef({ variants: [variant] })]; } } - if (isBoolType(param.type)) { - if (typeof value !== "boolean") { + // A string with `{{ jsExpr }}` is a dynamic data binding, valid for any + // (non-variant-group) param type regardless of its declared type. + if (typeof value === "string" && isDynamicValue(value)) { + return [param, interpolatedStringToExpr(value)]; + } + + // Primitive-valued types (bool, num, text/img/href/target). + const tsType = wabToTsType(param.type); + if (tsType === "boolean" || tsType === "number" || tsType === "string") { + if (typeof value !== tsType) { throw new Error( - `Component "${componentName}" prop "${propName}" expects a boolean but got ${JSON.stringify( + `Component "${componentName}" prop "${propName}" expects a ${tsType} but got ${JSON.stringify( value )}` ); } + return [param, code(JSON.stringify(value))]; + } - return [param.variable.name, code(JSON.stringify(value))]; + if (isChoiceType(param.type)) { + const options = param.type.options.map((opt) => + typeof opt === "object" ? opt.value : opt + ); + if (!options.some((opt) => opt === value)) { + throw new Error( + `Component "${componentName}" prop "${propName}" must be one of ${JSON.stringify( + options + )} but got ${JSON.stringify(value)}` + ); + } + return [param, code(JSON.stringify(value))]; } - if (isNumType(param.type)) { - if (typeof value !== "number") { + if (isMultiChoiceType(param.type)) { + const options = param.type.options.map((opt) => + typeof opt === "object" ? opt.value : opt + ); + if (!Array.isArray(value)) { throw new Error( - `Component "${componentName}" prop "${propName}" expects a number but got ${JSON.stringify( + `Component "${componentName}" prop "${propName}" expects an array but got ${JSON.stringify( value )}` ); } - return [param.variable.name, code(JSON.stringify(value))]; + const invalidValues = value.filter( + (v) => !options.some((opt) => opt === v) + ); + if (invalidValues.length > 0) { + throw new Error( + `Component "${componentName}" prop "${propName}" values must be from ${JSON.stringify( + options + )} but got invalid values: ${JSON.stringify(invalidValues)}` + ); + } + return [param, code(JSON.stringify(value))]; } - // Complex types (object/array/null/any-type) in customCode(JSON.stringify) - if ( - isAnyType(param.type) || - isArray(value) || - isObject(value) || - value === null - ) { - return [param.variable.name, customCode(JSON.stringify(value))]; + // dateString carries a single ISO date string. + if (isKnownDateString(param.type)) { + if (typeof value !== "string") { + throw new Error( + `Component "${componentName}" prop "${propName}" expects a date string but got ${JSON.stringify( + value + )}` + ); + } + return [param, code(JSON.stringify(value))]; + } + + // dateRangeStrings carries a [from, to] pair of ISO date strings; either + // end may be null for an open range. + if (isKnownDateRangeStrings(param.type)) { + if ( + !isArray(value) || + value.length != 2 || + value.some((v) => typeof v !== "string" && v !== null) + ) { + throw new Error( + `Component "${componentName}" prop "${propName}" expects an array of [from, to] date strings but got ${JSON.stringify( + value + )}` + ); + } + return [param, codeLit(value as JsonValue)]; } - return [param.variable.name, code(JSON.stringify(value))]; + // Untyped ('any') props accept arbitrary JSON (objects, arrays, null, and + // scalars). Stored as an unparenthesized code literal (codeLit), the same + // form the studio prop editor stores, so tryExtractJson can read it back + // when serializing the instance. + if (isAnyType(param.type)) { + return [param, codeLit(value as JsonValue)]; + } + + throw new Error( + `Component "${componentName}" prop "${propName}" of type "${param.type.name}" is not supported yet.` + ); } diff --git a/platform/wab/src/wab/client/operations/insert-tpl.spec.ts b/platform/wab/src/wab/client/operations/insert-tpl.spec.ts new file mode 100644 index 0000000000..ab22e07338 --- /dev/null +++ b/platform/wab/src/wab/client/operations/insert-tpl.spec.ts @@ -0,0 +1,272 @@ +import { + canInsertTplAsChild, + insertTplAsChild, + insertTplAt, +} from "@/wab/client/operations/insert-tpl"; +import { setupComponentWithTplTree } from "@/wab/client/operations/tests/utils"; +import { ensureVariantSetting, getBaseVariant } from "@/wab/shared/Variants"; +import { mkParam } from "@/wab/shared/core/lang"; +import * as Tpls from "@/wab/shared/core/tpls"; +import { + ColumnsConfig, + SlotParam, + TplTag, + ensureKnownSlotParam, +} from "@/wab/shared/model/classes"; +import { typeFactory } from "@/wab/shared/model/model-util"; + +function setup(root: TplTag) { + const { component, site, tplMgr, vtm } = setupComponentWithTplTree(root); + return { component, site, tplMgr, vtm, ctx: { vtm, tplMgr } }; +} + +describe("insertTplAt", () => { + it("appends and prepends into a container", () => { + const movedA = Tpls.mkTplTagX("span", {}); + const movedB = Tpls.mkTplTagX("span", {}); + const existing = Tpls.mkTplTagX("span", {}); + const container = Tpls.mkTplTagX("div", {}, existing); + const root = Tpls.mkTplTagX("div", {}, movedA, movedB, container); + const { ctx } = setup(root); + + expect(insertTplAt(movedA, container, "append", ctx)).toEqual({ + result: "success", + }); + expect(container.children).toEqual([existing, movedA]); + + expect(insertTplAt(movedB, container, "prepend", ctx)).toEqual({ + result: "success", + }); + expect(container.children).toEqual([movedB, existing, movedA]); + expect(movedA.parent).toBe(container); + expect(movedB.parent).toBe(container); + expect(root.children).toEqual([container]); + }); + + it("inserts before and after a sibling", () => { + const a = Tpls.mkTplTagX("span", {}); + const b = Tpls.mkTplTagX("span", {}); + const c = Tpls.mkTplTagX("span", {}); + const root = Tpls.mkTplTagX("div", {}, a, b, c); + const { ctx } = setup(root); + + expect(insertTplAt(a, c, "after", ctx)).toEqual({ result: "success" }); + expect(root.children).toEqual([b, c, a]); + + expect(insertTplAt(a, b, "before", ctx)).toEqual({ result: "success" }); + expect(root.children).toEqual([a, b, c]); + }); + + it("keeps the same-parent as-child no-op guard (canvas free-move contract)", () => { + const a = Tpls.mkTplTagX("span", {}); + const b = Tpls.mkTplTagX("span", {}); + const root = Tpls.mkTplTagX("div", {}, a, b); + const { ctx } = setup(root); + + // Re-appending an existing child to its own parent must NOT reorder; + // canvas free-move relies on this to only update position styles. + expect(insertTplAt(a, root, "append", ctx)).toEqual({ result: "success" }); + expect(root.children).toEqual([a, b]); + }); + + it("rejects inserting into a non-container", () => { + const moved = Tpls.mkTplTagX("span", {}); + const img = Tpls.mkTplTagX("img", {}); + const root = Tpls.mkTplTagX("div", {}, moved, img); + const { ctx } = setup(root); + + expect(insertTplAt(moved, img, "append", ctx)).toMatchObject({ + result: "error", + reason: { type: "CantAddToAtomic" }, + }); + expect(root.children).toEqual([moved, img]); + }); + + it("rejects inserting an element into its own descendant", () => { + const grandchild = Tpls.mkTplTagX("span", {}); + const child = Tpls.mkTplTagX("div", {}, grandchild); + const root = Tpls.mkTplTagX("div", {}, child); + const { ctx } = setup(root); + + expect(insertTplAt(child, grandchild, "append", ctx)).toMatchObject({ + result: "error", + reason: { type: "CantAddToSelfDescendant" }, + }); + expect(child.parent).toBe(root); + }); + + it("rejects adding a sibling to the root element", () => { + const moved = Tpls.mkTplTagX("span", {}); + const root = Tpls.mkTplTagX("div", {}, moved); + const { ctx } = setup(root); + + expect(insertTplAt(moved, root, "after", ctx)).toMatchObject({ + result: "error", + reason: { type: "CantAddSiblingToRoot" }, + }); + }); +}); + +describe("insertTplAsChild", () => { + it("converts a text-block parent into a container before inserting", () => { + const moved = Tpls.mkTplTagX("span", {}); + const textBlock = Tpls.mkTplTagX("button", { + type: Tpls.TplTagType.Text, + }); + const root = Tpls.mkTplTagX("div", {}, moved, textBlock); + const { ctx } = setup(root); + + const result = insertTplAsChild(moved, textBlock, ctx); + + expect(result).toEqual({ result: "success" }); + // The text block became a plain container holding [text child, moved] + expect(textBlock.type).toEqual(Tpls.TplTagType.Other); + expect(textBlock.children).toHaveLength(2); + expect(Tpls.isTplTextBlock(textBlock.children[0])).toBe(true); + expect(textBlock.children[1]).toBe(moved); + expect(moved.parent).toBe(textBlock); + }); + + it("adopts the new parent's layout on reparent, resetting stale offsets", () => { + const moved = Tpls.mkTplTagX("div", {}); + const flexParent = Tpls.mkTplTagX("div", {}); + const root = Tpls.mkTplTagX("div", {}, moved, flexParent); + const { component, ctx } = setup(root); + + const baseVariant = getBaseVariant(component); + const movedVs = ensureVariantSetting(moved, [baseVariant]); + movedVs.rs.values = { left: "10px", top: "20px" }; + const parentVs = ensureVariantSetting(flexParent, [baseVariant]); + parentVs.rs.values = { display: "flex", "flex-direction": "row" }; + + expect(insertTplAsChild(moved, flexParent, ctx)).toEqual({ + result: "success", + }); + // Relative positioning adopted: offsets neutralized to auto. (position + // itself stays unset — it already reads as "relative" by default.) + expect(movedVs.rs.values["left"]).toEqual("auto"); + expect(movedVs.rs.values["top"]).toEqual("auto"); + }); + + it("redistributes column sizes when a column is added to a columns container", () => { + const col1 = Tpls.mkTplTagX("div", { type: Tpls.TplTagType.Column }); + const col2 = Tpls.mkTplTagX("div", { type: Tpls.TplTagType.Column }); + const columns = Tpls.mkTplTag("div", [col1, col2]); + columns.type = Tpls.TplTagType.Columns; + const root = Tpls.mkTplTagX("div", {}, columns); + const { component, ctx } = setup(root); + + const baseVariant = getBaseVariant(component); + const vs = ensureVariantSetting(columns, [baseVariant]); + vs.columnsConfig = new ColumnsConfig({ + breakUpRows: false, + colsSizes: [6, 6], + }); + + const col3 = Tpls.mkTplTagX("div", { type: Tpls.TplTagType.Column }); + expect(insertTplAsChild(col3, columns, ctx)).toEqual({ + result: "success", + }); + expect(columns.children).toEqual([col1, col2, col3]); + expect(vs.columnsConfig.colsSizes).toHaveLength(3); + }); + + it("rejects non-column children in a columns container and columns escaping it", () => { + const col = Tpls.mkTplTagX("div", { type: Tpls.TplTagType.Column }); + const columns = Tpls.mkTplTag("div", [col]); + columns.type = Tpls.TplTagType.Columns; + const plain = Tpls.mkTplTagX("span", {}); + const other = Tpls.mkTplTagX("div", {}); + const root = Tpls.mkTplTagX("div", {}, columns, plain, other); + const { ctx } = setup(root); + + expect(insertTplAsChild(plain, columns, ctx)).toMatchObject({ + result: "error", + reason: { type: "CantAddNonColumnToColumns" }, + }); + expect(insertTplAsChild(col, other, ctx)).toMatchObject({ + result: "error", + reason: { type: "CantAddColumnToNonColumns" }, + }); + expect(insertTplAt(plain, col, "after", ctx)).toMatchObject({ + result: "error", + reason: { type: "CantAddNonColumnSiblingToColumn" }, + }); + }); +}); + +describe("canInsertTplAsChild", () => { + it("rejects component cycles", () => { + const root = Tpls.mkTplTagX("div", {}); + const { component, ctx } = setup(root); + + const selfInstance = Tpls.mkTplComponentX({ + component, + baseVariant: getBaseVariant(component), + }); + + expect(canInsertTplAsChild(selfInstance, root, ctx)).toMatchObject({ + type: "ComponentCycle", + }); + }); + + it("rejects nested slots", () => { + const slotContent = Tpls.mkTplTagX("div", {}); + const root = Tpls.mkTplTagX("div", {}); + const { component, ctx } = setup(root); + + const paramA = ensureKnownSlotParam( + mkParam({ + name: "children", + type: typeFactory.renderable(), + paramType: "slot", + }) + ); + component.params.push(paramA); + const slotA = Tpls.mkSlot(paramA, [slotContent]); + root.children.push(slotA); + slotA.parent = root; + + const paramB = mkParam({ + name: "extra", + type: typeFactory.renderable(), + paramType: "slot", + }); + const slotB = Tpls.mkSlot(paramB as SlotParam); + + expect(canInsertTplAsChild(slotB, slotContent, ctx)).toMatchObject({ + type: "NestedSlots", + }); + }); + + it("applies the injected slot default-contents gate", () => { + const root = Tpls.mkTplTagX("div", {}); + const { component, ctx, vtm, tplMgr } = setup(root); + + const param = ensureKnownSlotParam( + mkParam({ + name: "children", + type: typeFactory.renderable(), + paramType: "slot", + }) + ); + component.params.push(param); + const slot = Tpls.mkSlot(param); + root.children.push(slot); + slot.parent = root; + + const moved = Tpls.mkTplTagX("span", {}); + + // Tool can edit default slot content + expect(canInsertTplAsChild(moved, slot, ctx)).toBe(true); + + // Studio-like gate that disallows editing default contents. + expect( + canInsertTplAsChild(moved, slot, { + vtm, + tplMgr, + canEditSlotDefaultContents: () => false, + }) + ).toMatchObject({ type: "CantAddToSlotOutOfContext" }); + }); +}); diff --git a/platform/wab/src/wab/client/operations/insert-tpl.ts b/platform/wab/src/wab/client/operations/insert-tpl.ts new file mode 100644 index 0000000000..b6b5fff70f --- /dev/null +++ b/platform/wab/src/wab/client/operations/insert-tpl.ts @@ -0,0 +1,888 @@ +import type { CantAddToSlotOutOfContext } from "@/wab/client/messages/parenting-msgs"; +import { RSH, hasTypography } from "@/wab/shared/RuleSetHelpers"; +import { + getAncestorTplSlot, + getParentOrSlotSelection, +} from "@/wab/shared/SlotUtils"; +import { TplMgr } from "@/wab/shared/TplMgr"; +import { $$$ } from "@/wab/shared/TplQuery"; +import { VariantTplMgr } from "@/wab/shared/VariantTplMgr"; +import { + VariantCombo, + isBaseVariant, + isPrivateStyleVariant, +} from "@/wab/shared/Variants"; +import { arrayRemove } from "@/wab/shared/collections"; +import { redistributeColumnsSizes } from "@/wab/shared/columns-utils"; +import { ensure, maybe } from "@/wab/shared/common"; +import { SlotSelection } from "@/wab/shared/core/slots"; +import { + CONTENT_LAYOUT_WIDTH_OPTIONS, + contentLayoutChildProps, + flexChildProps, + getAllDefinedStyles, + gridChildProps, + ignoredConvertablePlainTextProps, + typographyCssProps, +} from "@/wab/shared/core/style-props"; +import * as Tpls from "@/wab/shared/core/tpls"; +import { asTpl } from "@/wab/shared/core/vals"; +import { Pt } from "@/wab/shared/geom"; +import { + ContainerLayoutType, + PositionLayoutType, + convertToSlotContent as convertExpToSlotContent, + convertSelfContainerType, + convertToAbsolutePosition, + convertToRelativePosition, + getRshContainerType, + getRshPositionType, +} from "@/wab/shared/layoututils"; +import { + TplComponent, + TplNode, + TplSlot, + TplTag, + Variant, + isKnownTplNode, +} from "@/wab/shared/model/classes"; +import { + CantAddChildMsg, + CantAddSiblingMsg, + canAddChildrenAndWhy, + canAddSiblingsAndWhy, +} from "@/wab/shared/parenting"; +import { + TplVisibility, + clearTplVisibility, + getTplVisibilityAsDescendant, + getVariantSettingVisibility, +} from "@/wab/shared/visibility-utils"; +import { merge } from "lodash"; + +/** + * Context for the pure tpl-insertion operation. + * + * Carries the TplMgrs and ViewCtx dependent functions + * Callers operating without a ViewCtx (copilot tools, unit tests) omit + * the optional functions. + */ +export interface InsertTplCtx { + vtm: VariantTplMgr; + tplMgr: TplMgr; + /** + * Reads the rendered offset of a tpl on the canvas. Only consulted when an + * element's position type changes (to free/fixed/sticky) so it can keep its + * current visual position. When omitted, offsets fall back to origin / unchanged. + */ + getDomOffset?: (tpl: TplNode) => Pt | undefined; + /** + * UI gate for inserting into a TplSlot's default contents. ViewOps passes + * the "Show default slot contents" toggle state for the currently edited + * component; callers without ViewCtx such as tools can omit it. + */ + canEditSlotDefaultContents?: (slot: TplSlot) => boolean; +} + +export type CantInsertTplReason = + | CantAddChildMsg + | CantAddSiblingMsg + | CantAddToSlotOutOfContext + | { type: "CantAddNonColumnToColumns" } + | { type: "CantAddColumnToNonColumns" } + | { type: "CantAddNonColumnSiblingToColumn" } + | { type: "ComponentCycle" } + | { type: "NestedSlots" }; + +export type InsertTplResult = + | { result: "success" } + | { result: "error"; reason: CantInsertTplReason }; + +/** Insertion positions supported by the pure operation (wrap/replace are + * ViewOps compositions on top of these). */ +export type InsertTplLoc = "before" | "after" | "prepend" | "append"; + +export interface InsertTplAsChildOpts { + parentOffset?: Pt; + forceFree?: boolean; + keepFree?: boolean; + prepend?: boolean; + beforeNode?: TplNode; + afterNode?: TplNode; +} + +export function canInsertTplAsChild( + newItem: TplNode, + targetTplOrSlotSelection: TplNode | SlotSelection, + ctx: InsertTplCtx +): true | CantInsertTplReason { + const canAdd = canAddChildrenAndWhy(targetTplOrSlotSelection, newItem); + if (canAdd !== true) { + return canAdd; + } + + if ( + isKnownTplNode(targetTplOrSlotSelection) && + Tpls.isTplColumns(targetTplOrSlotSelection) && + !Tpls.isTplColumn(newItem) + ) { + return { type: "CantAddNonColumnToColumns" }; + } + + if ( + !( + isKnownTplNode(targetTplOrSlotSelection) && + Tpls.isTplColumns(targetTplOrSlotSelection) + ) && + Tpls.isTplColumn(newItem) + ) { + return { type: "CantAddColumnToNonColumns" }; + } + + if ( + Tpls.isTplSlot(targetTplOrSlotSelection) && + !(ctx.canEditSlotDefaultContents?.(targetTplOrSlotSelection) ?? true) + ) { + return { + type: "CantAddToSlotOutOfContext", + tpl: targetTplOrSlotSelection, + }; + } + const destOwner = Tpls.getTplOwnerComponent(asTpl(targetTplOrSlotSelection)); + const hasComponentCycle = Tpls.detectComponentCycle(destOwner, [newItem]); + if (hasComponentCycle) { + return { type: "ComponentCycle" }; + } + + if ( + Tpls.ancestorsUp(asTpl(targetTplOrSlotSelection)).some(Tpls.isTplSlot) && + Tpls.flattenTpls(newItem).some(Tpls.isTplSlot) + ) { + return { type: "NestedSlots" }; + } + + return true; +} + +export function canInsertTplAsSibling( + newItem: TplNode, + target: TplNode | SlotSelection, + ctx: InsertTplCtx +): true | CantInsertTplReason { + const canAdd = canAddSiblingsAndWhy(target, newItem); + if (canAdd !== true) { + return canAdd; + } + + // Column can only be sibling of another column + if ( + !(isKnownTplNode(target) && Tpls.isTplColumn(target)) && + Tpls.isTplColumn(newItem) + ) { + return { type: "CantAddColumnToNonColumns" }; + } + if ( + isKnownTplNode(target) && + Tpls.isTplColumn(target) && + !Tpls.isTplColumn(newItem) + ) { + return { type: "CantAddNonColumnSiblingToColumn" }; + } + + if (target instanceof SlotSelection) { + return { type: "CantAddSiblingToSlotSelection", slotSelection: target }; + } + + const targetParent = ensure( + getParentOrSlotSelection(target), + "Unexpected undefined value of parent/slotSelection for target" + ); + return canInsertTplAsChild(newItem, targetParent, ctx); +} + +export function canInsertTplAt( + newItem: TplNode, + target: TplNode, + loc: InsertTplLoc, + ctx: InsertTplCtx +): true | CantInsertTplReason { + return loc === "before" || loc === "after" + ? canInsertTplAsSibling(newItem, target, ctx) + : canInsertTplAsChild(newItem, target, ctx); +} + +/** + * Inserts the argument `newNode` as a sibling to `targetNode`, before or + * after it. This will also adopt the parent container's container type for the + * newNode (so if parent is free, child becomes free; if parent is flex, child + * becomes relative, etc.) + */ +export function insertTplAsSibling( + newNode: TplNode, + targetNode: TplNode, + loc: "before" | "after", + ctx: InsertTplCtx +): InsertTplResult { + const reason = canInsertTplAsSibling(newNode, targetNode, ctx); + if (reason !== true) { + return { result: "error", reason }; + } + const targetParent = ensure( + getParentOrSlotSelection(targetNode), + "targetNode should have a targetParent to be used for inserting newNode" + ); + return insertTplAsChild( + newNode, + targetParent, + ctx, + loc === "before" ? { beforeNode: targetNode } : { afterNode: targetNode } + ); +} + +/** + * Inserts the argument `newNode` as a child of `newParent` (last child by + * default). This will also adopt the parent container's container type for the + * `newNode` (so if parent is free, child becomes free; if parent is flex, + * child becomes relative, etc.) + * @param opts.parentOffset if parent is free, or if opts.forceFree is true, + * then the `newNode` will be absolutely positioned. `parentOffset` specifies + * where in the new parent container this node should be. + * @param opts.forceFree if parent is not free, usually the child will be + * relatively-positioned. You can force the child to still be free by + * passing true for forceFree. + * @param opts.keepFree if argument `newNode` has position free, keep it, else + * use `newParent` container position to calculate the new child position. + * Defaults to true. + */ +export function insertTplAsChild( + newNode: TplNode, + newParent: TplNode | SlotSelection, + ctx: InsertTplCtx, + opts: InsertTplAsChildOpts = {} +): InsertTplResult { + opts = merge({ keepFree: true }, opts); + const reason = canInsertTplAsChild(newNode, newParent, ctx); + if (reason !== true) { + return { result: "error", reason }; + } + const existingParent = newNode.parent; + const isNewNode = !existingParent; + if (Tpls.isTplTextBlock(newParent)) { + // Break up text block into a container and text, so we can insert more content + newParent = ensure( + convertTextBlockToContainer(newParent, ctx), + "Unexpected undefined tpl after converting text to container" + ); + } + if ( + Tpls.isTplSlot(newParent) && + Tpls.isTplTextBlock(newNode, "div") && + newParent.defaultContents.length === 0 && + Tpls.hasOnlyStyles(newNode, typographyCssProps, { + excludeProps: ignoredConvertablePlainTextProps, + }) + ) { + // When adding a text block into a TplSlot, we're going to forcibly adopt + // its styles for the TplSlot + copyMixins(newNode, newParent, ctx); + transferStyleProps(newNode, newParent, ctx, typographyCssProps); + clearAllStyles(newNode); + } + + adoptLayoutParentContainerStyle(newNode, newParent, opts, ctx); + if ( + isKnownTplNode(newParent) && + (Tpls.isTplSlot(newParent) || getAncestorTplSlot(newParent, true)) + ) { + // If newNode is going to become defaultContent of something, then only keep + // its base variant setting + ctx.vtm.ensureSlotDefaultContentSetting(newNode); + } + if (opts.beforeNode) { + $$$(opts.beforeNode).before(newNode); + } else if (opts.afterNode) { + $$$(opts.afterNode).after(newNode); + } else if (newParent !== existingParent) { + if (opts.prepend) { + $$$(newParent).prepend(newNode); + } else { + $$$(newParent).append(newNode); + } + } + + postInsertAsChildUpdates(newNode, newParent, isNewNode, ctx); + return { result: "success" }; +} + +export function insertTplAt( + newNode: TplNode, + target: TplNode, + loc: InsertTplLoc, + ctx: InsertTplCtx +): InsertTplResult { + switch (loc) { + case "before": + case "after": + return insertTplAsSibling(newNode, target, loc, ctx); + case "prepend": + return insertTplAsChild(newNode, target, ctx, { prepend: true }); + case "append": + return insertTplAsChild(newNode, target, ctx); + } +} + +function postInsertAsChildUpdates( + newNode: TplNode, + newParent: TplNode | SlotSelection, + isNewNode: boolean, + ctx: InsertTplCtx +) { + if ( + isKnownTplNode(newParent) && + Tpls.isTplColumns(newParent) && + Tpls.isTplColumn(newNode) + ) { + redistributeColumnsSizes(newParent, ctx.vtm); + // We clear the tpl column visibility when it's added, + // so that we don't have empty spaces by default when the + // user is recording a variant and adding new column. + const baseVs = ctx.vtm.ensureBaseVariantSetting(newNode); + clearTplVisibility(newNode, baseVs.variants); + } + + if (isNewNode && Tpls.isTplVariantable(newNode)) { + fixupNewlyInsertedNode(newNode, ctx); + } +} + +function fixupNewlyInsertedNode(newNode: TplNode, ctx: InsertTplCtx) { + const vtm = ctx.vtm; + const curCombo = vtm.getTargetVariantComboForNode(newNode, { + forVisibility: true, + }); + if (!isBaseVariant(curCombo)) { + // If this is a new node for a non-base variant, then we may have set its + // visibility to not visible in the base variant, so that it is only visible + // in this current combo. But that is redundant if it is being added to a subtree + // that is already invisible in the base variant, so we clear the visibility setting + // from both its base and cur variants if some ancestor node is already invisible + // in the base variant. + const baseVs = vtm.ensureBaseVariantSetting(newNode); + if ( + getVariantSettingVisibility(baseVs) !== TplVisibility.Visible && + getTplVisibilityAsDescendant(newNode, baseVs.variants, false) !== + TplVisibility.Visible + ) { + clearTplVisibility(newNode, curCombo); + clearTplVisibility(newNode, baseVs.variants); + } + } +} + +export function copyMixins( + fromNode: TplNode, + toNode: TplNode, + ctx: InsertTplCtx +) { + const vtm = ctx.vtm; + for (const fromVs of fromNode.vsettings) { + if (fromVs.variants.some((v) => isPrivateStyleVariant(v))) { + // Only transfer non-private variants + continue; + } + vtm.ensureVariantSetting(toNode, fromVs.variants).rs.mixins = + fromVs.rs.mixins.slice(0); + } +} + +export function transferStyleProps( + fromNode: TplNode, + toNode: TplNode, + ctx: InsertTplCtx, + props?: string[], + clearProps?: string[] +) { + const vtm = ctx.vtm; + for (const fromVs of fromNode.vsettings) { + // Only transfer non-private variants + if (fromVs.variants.some((v) => isPrivateStyleVariant(v))) { + continue; + } + const fromExp = RSH(fromVs.rs, fromNode); + for (const prop of props || getAllDefinedStyles(fromVs.rs)) { + if (fromExp.has(prop)) { + RSH(vtm.ensureVariantSetting(toNode, fromVs.variants).rs, toNode).set( + prop, + fromExp.get(prop) + ); + if (!clearProps || clearProps.includes(prop)) { + fromExp.clear(prop); + } + } + } + } +} + +export function clearAllStyles(tpl: TplNode) { + tpl.vsettings.forEach((vs) => { + vs.rs.values = {}; + vs.rs.mixins = []; + vs.rs.animations = null; + }); +} + +function adoptLayoutParentContainerStyle( + child: TplNode, + parent: TplNode | SlotSelection, + opts: { parentOffset?: Pt; forceFree?: boolean; keepFree?: boolean }, + ctx: InsertTplCtx +) { + const layoutParent = $$$(parent) + .layoutParent({ includeSelf: true }) + .maybeOne(); + const curLayoutParent = $$$(child) + .layoutParent({ includeSelf: false }) + .maybeOne(); + + if (layoutParent === curLayoutParent) { + // If the layout parent hasn't changed, then we will preserve existing styles + // instead of resetting them + return; + } + + const layoutChildren = $$$(child).layoutContent().toArray(); + if (Tpls.isTplTag(layoutParent)) { + for (const layoutChild of layoutChildren) { + if (Tpls.isTplVariantable(layoutChild)) { + adoptParentContainerStyle(layoutChild, layoutParent, opts, ctx); + } + } + } else if (layoutParent instanceof SlotSelection) { + for (const layoutChild of layoutChildren) { + if (Tpls.isTplVariantable(layoutChild)) { + convertToSlotContent(layoutChild, ctx); + } + } + } +} + +/** + * Adopts the parent's container style across all variants where the parent's + * container style is specified. + */ +export function adoptParentContainerStyle( + layoutChild: TplNode, + layoutParent: TplTag, + opts: { parentOffset?: Pt; forceFree?: boolean; keepFree?: boolean }, + ctx: InsertTplCtx +) { + if (!Tpls.isTplTagOrComponent(layoutChild)) { + return; + } + + const vtm = ctx.vtm; + + vtm.ensureBaseVariantSetting(layoutChild); + vtm.ensureCurrentVariantSetting(layoutChild); + + // If we are re-parenting, then we must fix up and adapt to the new parent + // for all variants. Else if we are in the same parent, then we are only + // moving absolute position or the relative ordering of the child, so we + // should only target the current variant. + const curLayoutParent = $$$(layoutChild).layoutParent().maybeOneTpl(); + const variantCombos = + curLayoutParent === layoutParent + ? [vtm.getTargetVariantComboForNode(layoutChild)] + : layoutChild.vsettings.map((vs) => vs.variants); + + // We loop through and adopt parent style for all relavant variants + for (const variantCombo of variantCombos) { + adoptParentContainerStyleForVariant( + layoutChild, + layoutParent, + variantCombo, + opts, + ctx + ); + } +} + +function convertToSlotContent( + child: TplNode, + ctx: InsertTplCtx, + variantCombo?: VariantCombo +) { + const vtm = ctx.vtm; + const combos = variantCombo + ? [variantCombo] + : child.vsettings.map((vs) => vs.variants); + + for (const combo of combos) { + // If adding to a slot, then slot children is always relatively positioned + const effectiveExp = vtm.effectiveVariantSetting(child, combo).rsh(); + if ( + getRshPositionType(effectiveExp) !== PositionLayoutType.auto || + ["left", "top", "bottom", "right"].some((prop) => effectiveExp.has(prop)) + ) { + convertExpToSlotContent( + effectiveExp, + RSH(vtm.ensureVariantSetting(child, combo).rs, child) + ); + } + } +} + +/** + * Adopts the parent's container style for a specific variant + */ +export function adoptParentContainerStyleForVariant( + layoutChild: TplNode, + layoutParent: TplTag, + variantCombo: VariantCombo, + opts: { parentOffset?: Pt; forceFree?: boolean; keepFree?: boolean }, + ctx: InsertTplCtx +) { + if (!Tpls.isTplTagOrComponent(layoutChild)) { + return; + } + const vtm = ctx.vtm; + const effectiveParentExp = vtm + .effectiveVariantSetting(layoutParent, variantCombo) + .rsh(); + const parentContainerType = getRshContainerType(effectiveParentExp); + const effectiveChildExp = vtm + .effectiveVariantSetting(layoutChild, variantCombo) + .rsh(); + const childPositionType = getRshPositionType(effectiveChildExp); + + // Clear irrelevant styles that may have come from + // being a child of a different layout + const exp = RSH( + vtm.ensureVariantSetting(layoutChild, variantCombo).rs, + layoutChild + ); + if (parentContainerType !== ContainerLayoutType.contentLayout) { + exp.clearAll(contentLayoutChildProps); + const width = exp.getRaw("width"); + if (width && CONTENT_LAYOUT_WIDTH_OPTIONS.includes(width)) { + exp.set("width", "stretch"); + } + } + if (parentContainerType !== ContainerLayoutType.grid) { + exp.clearAll(gridChildProps); + } + if (!parentContainerType.includes("flex")) { + exp.clearAll(flexChildProps); + } + + // Fixed elements aren't affected by their parent style changes + if (childPositionType === PositionLayoutType.fixed) { + return; + } + + // as sticky works with both layout types, we just adopt it + // recalculating the offset + if (childPositionType === PositionLayoutType.sticky) { + adoptStickyPositionType(layoutChild, variantCombo, ctx); + return; + } + + const newChildPosType = + opts.forceFree || + parentContainerType === ContainerLayoutType.free || + (opts.keepFree && childPositionType === PositionLayoutType.free) + ? "free" + : "auto"; + if (newChildPosType === "free") { + let offset: Pt | "current" | undefined = opts.parentOffset; + if (!offset) { + if (layoutChild.parent === layoutParent) { + // If this is the same parent, then by default when going to freely-positioned, + // we use the current offset of the DOM + offset = "current"; + } else { + // Else if we are re-parenting, and there's no offset specified, then the best + // we can do is at the origin! + offset = new Pt(0, 0); + } + } + adoptFreePositionType(layoutChild, variantCombo, ctx, offset); + } else { + adoptRelativePositionType(layoutChild, variantCombo, ctx); + } +} + +/** + * Adopts the "free" position type for the argument `node` for the argument + * `variant`. + * + * @param parentOffset If specified, then it is used as the left/top position + * for the `node`. If you specify "current" as parentOffset, then the current + * DOM offset will be used. Note that this is a little weird, as the current + * DOM offset may not actually reflect the argument `variant` you're using! + * If not specified, then top/left are left unchanged. + * + * If we are converting from fixed position, then we are going to ignore + * offsets since it can represent a position outside of the parent, considering + * it can lead to bugs. + * + * If we are converting from relative position, then the width/height of + * current relatively-positioned DOM node will be explicitly set as the + * width/height. + */ +export function adoptFreePositionType( + node: TplTag | TplComponent, + variants: Variant[], + ctx: InsertTplCtx, + parentOffset?: Pt | "current" +) { + const vtm = ctx.vtm; + const effectiveExp = vtm.effectiveVariantSetting(node, variants).rsh(); + const curPosType = getRshPositionType(effectiveExp); + + // We want to avoid creating a new VariantSetting if the effective VS is already + // correct + const mkExp = () => RSH(vtm.ensureVariantSetting(node, variants).rs, node); + + if (curPosType !== PositionLayoutType.free) { + const exp = mkExp(); + convertToAbsolutePosition(exp); + if (!parentOffset) { + parentOffset = ctx.getDomOffset?.(node); + } + } + + let offset: { x: number; y: number } | undefined; + + // Ignore offset if it's coming from a fixed element + if (curPosType === PositionLayoutType.fixed) { + offset = { x: 0, y: 0 }; + } else { + if (parentOffset === "current") { + offset = ctx.getDomOffset?.(node); + } else { + offset = parentOffset; + } + } + + if ( + offset && + (effectiveExp.get("left") !== `${offset.x}px` || + effectiveExp.get("top") !== `${offset.y}px`) + ) { + const exp = mkExp(); + exp.set("left", `${offset.x}px`); + exp.set("top", `${offset.y}px`); + exp.clear("right"); + exp.clear("bottom"); + } +} + +/** + * Adopts "auto" / relative position type for the argument `node` for the + * argument `variant`. + */ +export function adoptRelativePositionType( + node: TplTag | TplComponent, + variantCombo: VariantCombo, + ctx: InsertTplCtx +) { + const vtm = ctx.vtm; + const effectiveExp = vtm.effectiveVariantSetting(node, variantCombo).rsh(); + const curPosType = getRshPositionType(effectiveExp); + if ( + curPosType !== PositionLayoutType.auto || + ["left", "top", "right", "bottom"].some((prop) => effectiveExp.has(prop)) + ) { + const exp = RSH(vtm.ensureVariantSetting(node, variantCombo).rs, node); + convertToRelativePosition(effectiveExp, exp); + } +} + +/** + * Adopts fixed position type for the argument `node`. + * + * Used the element offset to position the element properly. + */ +export function adoptFixedPositionType( + node: TplTag | TplComponent, + variantCombo: VariantCombo, + ctx: InsertTplCtx +) { + const vtm = ctx.vtm; + const effectiveExp = vtm.effectiveVariantSetting(node, variantCombo).rsh(); + const curPosType = getRshPositionType(effectiveExp); + + if (curPosType !== PositionLayoutType.fixed) { + const exp = RSH(vtm.ensureVariantSetting(node, variantCombo).rs, node); + + const offset = ctx.getDomOffset?.(node) || { x: 0, y: 0 }; + exp.set("left", `${offset.x}px`); + exp.set("top", `${offset.y}px`); + exp.clear("right"); + exp.clear("bottom"); + + if (!effectiveExp.has("z-index")) { + exp.set("z-index", "1"); + } + + exp.set("position", "fixed"); + } +} + +/** + * Adopts sticky position type for the argument `node`. + */ +export function adoptStickyPositionType( + node: TplTag | TplComponent, + variantCombo: VariantCombo, + ctx: InsertTplCtx +) { + const vtm = ctx.vtm; + const effectiveExp = vtm.effectiveVariantSetting(node, variantCombo).rsh(); + const curPosType = getRshPositionType(effectiveExp); + + if (curPosType !== PositionLayoutType.sticky) { + const exp = RSH(vtm.ensureVariantSetting(node, variantCombo).rs, node); + + let offset: { x: number; y: number } | undefined; + if ( + curPosType === PositionLayoutType.fixed || + curPosType === PositionLayoutType.auto + ) { + offset = { x: 0, y: 0 }; + } else { + offset = ctx.getDomOffset?.(node) || { x: 0, y: 0 }; + } + + exp.set("left", `${offset.x}px`); + exp.set("top", `${offset.y}px`); + exp.clear("right"); + exp.clear("bottom"); + + if (!effectiveExp.has("z-index")) { + exp.set("z-index", "1"); + } + + exp.set("position", "sticky"); + } +} + +/** + * Converts a text block into a container: the text (and its typography + * styling) moves into a new nested text child, and the original element + * becomes a plain container ready to accept more children. + * + * Returns undefined (without mutating) when the text block is inside a rich + * text block, which is not supported. + */ +export function convertTextBlockToContainer( + tpl: Tpls.TplTextTag, + ctx: InsertTplCtx, + inferFlexStyleFromChild = false +): TplTag | undefined { + if (Tpls.hasTextAncestor(tpl)) { + return undefined; + } + const container = tpl as TplTag; + container.type = "other"; + const vtm = ctx.vtm; + const textChildNode = vtm.mkTplTagX( + "div", + { type: Tpls.TplTagType.Text }, + undefined, + true + ); + textChildNode.children = container.children; + container.children = []; + Tpls.fixParentPointers(textChildNode); + const owningComponent = $$$(container).tryGetOwningComponent(); + const privateStyleVariantsMap = new Map(); + for (const vs of container.vsettings) { + const variantCombo = vs.variants.map((v) => { + if (privateStyleVariantsMap.has(v)) { + return ensure( + privateStyleVariantsMap.get(v), + "Should check if privateStyleVariantsMap contains variant" + ); + } + if (isPrivateStyleVariant(v) && owningComponent) { + const newVariant = ctx.tplMgr.createPrivateStyleVariant( + owningComponent, + textChildNode, + maybe(v.selectors, (s) => [...s]) + ); + privateStyleVariantsMap.set(v, newVariant); + return newVariant; + } + return v; + }); + const childVs = vtm.ensureVariantSetting( + textChildNode, + variantCombo, + vtm.getOwningComponentForNewNode() + ); + // Move the text and typography styling from parent to child vs + childVs.text = vs.text; + vs.text = undefined; + + const parentExpr = RSH(vs.rs, container); + const childExpr = RSH(childVs.rs, container); + + if (inferFlexStyleFromChild) { + // `button` without text-align is assumed to have `text-align: + // center` from default user agent styles. + if (parentExpr.has("text-align") || container.tag === "button") { + const align = parentExpr.get("text-align") || "center"; + if (align === "center") { + parentExpr.set("justify-content", "center"); + } else if (align === "right") { + parentExpr.set("justify-content", "flex-end"); + } + } + } + + for (const prop of typographyCssProps) { + if (parentExpr.has(prop)) { + const val = parentExpr.getRaw(prop); + if (val) { + childExpr.set(prop, val); + } + parentExpr.clear(prop); + } else if (container.tag === "button") { + childExpr.set("text-align", "center"); + } + } + + for (const mixin of vs.rs.mixins) { + if (hasTypography(RSH(mixin.rs, container))) { + childVs.rs.mixins.push(mixin); + arrayRemove(vs.rs.mixins, mixin); + } + } + } + + // On the base variant, set the default container type. + const baseVs = vtm.ensureBaseVariantSetting(container); + const parent = container.parent; + // Effective container type of the parent under the current variant combo + // (what getContainerType(parent, viewCtx) resolves to in the Studio). + const parentType = + parent && Tpls.isTplTagOrComponent(parent) + ? getRshContainerType(vtm.effectiveVariantSetting(parent).rsh()) + : undefined; + if (parentType && parentType !== "free" && !inferFlexStyleFromChild) { + convertSelfContainerType(RSH(baseVs.rs, container), parentType); + } else { + convertSelfContainerType(RSH(baseVs.rs, container), "flex-row"); + } + $$$(container).append(textChildNode); + adoptParentContainerStyleForVariant( + textChildNode, + container, + baseVs.variants, + {}, + ctx + ); + return container; +} diff --git a/platform/wab/src/wab/client/operations/set-component-instance-prop.spec.ts b/platform/wab/src/wab/client/operations/set-component-instance-prop.spec.ts new file mode 100644 index 0000000000..270a654948 --- /dev/null +++ b/platform/wab/src/wab/client/operations/set-component-instance-prop.spec.ts @@ -0,0 +1,205 @@ +import { setComponentInstanceProp } from "@/wab/client/operations/set-component-instance-prop"; +import { setupComponentWithInstance } from "@/wab/client/operations/tests/utils"; +import { assert } from "@/wab/shared/common"; +import { tryExtractJson } from "@/wab/shared/core/exprs"; +import { ensureKnownVariantsRef } from "@/wab/shared/model/classes"; + +describe("setComponentInstanceProp", () => { + it("sets props of different types", () => { + const { instance, getArg, opts } = setupComponentWithInstance(); + + for (const [propName, value] of [ + ["label", "Buy now"], + ["count", 3], + ["disabled", true], + ["data", { columns: 2, header: { sticky: true } }], + ["data", [1, "two", false, { id: 3 }, ["nested"]]], + ] as const) { + const result = setComponentInstanceProp(instance, propName, value, opts); + expect(result.result).toEqual("success"); + expect(tryExtractJson(getArg(instance, propName)!.expr)).toEqual(value); + } + }); + + it("sets literal null on an any-typed prop", () => { + const { instance, getArg, opts } = setupComponentWithInstance(); + + const result = setComponentInstanceProp(instance, "data", null, opts); + + expect(result.result).toEqual("success"); + const arg = getArg(instance, "data"); + expect(arg).toBeDefined(); + expect(tryExtractJson(arg!.expr)).toBeNull(); + }); + + it("updates an existing prop value", () => { + const { instance, getArg, opts } = setupComponentWithInstance(); + + setComponentInstanceProp(instance, "label", "One", opts); + setComponentInstanceProp(instance, "label", "Two", opts); + + expect(tryExtractJson(getArg(instance, "label")!.expr)).toEqual("Two"); + }); + + it("selects a single-choice variant by name", () => { + const { instance, sizeGroup, getArg, opts } = setupComponentWithInstance(); + + const result = setComponentInstanceProp(instance, "size", "large", opts); + + expect(result.result).toEqual("success"); + const variantsRef = ensureKnownVariantsRef(getArg(instance, "size")!.expr); + expect(variantsRef.variants).toEqual([ + sizeGroup.variants.find((v) => v.name === "large"), + ]); + }); + + it("selects multi-choice variants from an array of names", () => { + const { instance, featuresGroup, getArg, opts } = + setupComponentWithInstance(); + + const result = setComponentInstanceProp( + instance, + "features", + ["rounded", "shadow"], + opts + ); + + expect(result.result).toEqual("success"); + const variantsRef = ensureKnownVariantsRef( + getArg(instance, "features")!.expr + ); + expect(variantsRef.variants).toEqual(featuresGroup.variants); + }); + + it("activates a standalone variant with true", () => { + const { instance, darkGroup, getArg, opts } = setupComponentWithInstance(); + + const result = setComponentInstanceProp(instance, "dark", true, opts); + + expect(result.result).toEqual("success"); + const variantsRef = ensureKnownVariantsRef(getArg(instance, "dark")!.expr); + expect(variantsRef.variants).toEqual([darkGroup.variants[0]]); + }); + + it("sets a choice prop to one of its options", () => { + const { instance, getArg, opts } = setupComponentWithInstance(); + + const result = setComponentInstanceProp( + instance, + "tone", + "secondary", + opts + ); + + expect(result.result).toEqual("success"); + expect(tryExtractJson(getArg(instance, "tone")!.expr)).toEqual("secondary"); + }); + + it("sets a dateString prop to an ISO date string", () => { + const { instance, getArg, opts } = setupComponentWithInstance(); + + const result = setComponentInstanceProp( + instance, + "publishedAt", + "2024-01-01T00:00:00.000Z", + opts + ); + + expect(result.result).toEqual("success"); + expect(tryExtractJson(getArg(instance, "publishedAt")!.expr)).toEqual( + "2024-01-01T00:00:00.000Z" + ); + }); + + it("sets a dateRangeStrings prop to a [from, to] pair", () => { + const { instance, getArg, opts } = setupComponentWithInstance(); + + for (const range of [ + ["2024-01-01", "2024-12-31"], + ["2024-01-01T08:30:00.000Z", "2024-12-31T17:00:00.000Z"], + ] as const) { + const result = setComponentInstanceProp( + instance, + "activeRange", + range, + opts + ); + expect(result.result).toEqual("success"); + expect(tryExtractJson(getArg(instance, "activeRange")!.expr)).toEqual( + range + ); + } + }); + + it("errors on an unknown prop", () => { + const { instance, opts } = setupComponentWithInstance(); + + const result = setComponentInstanceProp(instance, "nope", "value", opts); + + assert(result.result === "error", "expected error"); + expect(result.message).toContain(`has no prop "nope"`); + }); + + it("errors on a slot prop", () => { + const { instance, opts } = setupComponentWithInstance(); + + const result = setComponentInstanceProp( + instance, + "children", + "content", + opts + ); + + assert(result.result === "error", "expected error"); + expect(result.message).toContain("slot"); + }); + + it("errors on invalid values without mutating", () => { + const { instance, getArg, opts } = setupComponentWithInstance(); + + for (const [propName, value, expected] of [ + ["disabled", "yes", "expects a boolean"], + ["disabled", ["yes"], "expects a boolean"], + ["disabled", null, "expects a boolean"], + ["count", { value: 3 }, "expects a number"], + ["label", 42, "expects a string"], + ["label", ["x"], "expects a string"], + ["label", null, "expects a string"], + ["tone", "tertiary", "must be one of"], + ["publishedAt", 1700000000000, "expects a date string"], + [ + "activeRange", + "2024-01-01", + "expects an array of [from, to] date strings", + ], + [ + "activeRange", + ["2024-01-01"], + "expects an array of [from, to] date strings", + ], + ["activeRange", [], "expects an array of [from, to] date strings"], + [ + "activeRange", + ["2024-01-01", "2024-06-01", "2024-12-31"], + "expects an array of [from, to] date strings", + ], + ["activeRange", [1, 2], "expects an array of [from, to] date strings"], + ["size", "invalid", `no variant matching "invalid"`], + ] as const) { + const result = setComponentInstanceProp(instance, propName, value, opts); + assert(result.result === "error", "expected error"); + expect(result.message).toContain(expected); + expect(getArg(instance, propName)).toBeUndefined(); + } + }); + + it("errors on a param type that is not supported yet", () => { + const { instance, getArg, opts } = setupComponentWithInstance(); + + const result = setComponentInstanceProp(instance, "query", {}, opts); + + assert(result.result === "error", "expected error"); + expect(result.message).toContain("is not supported yet"); + expect(getArg(instance, "query")).toBeUndefined(); + }); +}); diff --git a/platform/wab/src/wab/client/operations/set-component-instance-prop.ts b/platform/wab/src/wab/client/operations/set-component-instance-prop.ts new file mode 100644 index 0000000000..64107e856f --- /dev/null +++ b/platform/wab/src/wab/client/operations/set-component-instance-prop.ts @@ -0,0 +1,39 @@ +import { OperationResult } from "@/wab/client/operations/common"; +import { getComponentArgFromHtmlProp } from "@/wab/client/operations/html-to-tpl"; +import { TplMgr } from "@/wab/shared/TplMgr"; +import { TplComponent, VariantSetting } from "@/wab/shared/model/classes"; + +export type SetComponentInstancePropResult = OperationResult<{}>; + +/** + * Set a single prop (or variant selection) on a component instance, under + * the given variant setting of the containing component. + */ +export function setComponentInstanceProp( + tpl: TplComponent, + propName: string, + value: unknown, + opts: { + vs: VariantSetting; + tplMgr: TplMgr; + } +): SetComponentInstancePropResult { + const { vs, tplMgr } = opts; + const component = tpl.component; + + try { + const [param, expr] = getComponentArgFromHtmlProp( + component, + component.name, + propName, + value + ); + tplMgr.setArg(tpl, vs, param.variable, expr); + return { result: "success" }; + } catch (err) { + return { + result: "error", + message: err instanceof Error ? err.message : String(err), + }; + } +} diff --git a/platform/wab/src/wab/client/operations/set-style-token-varianted-value.spec.ts b/platform/wab/src/wab/client/operations/set-style-token-varianted-value.spec.ts new file mode 100644 index 0000000000..cd30c0a29a --- /dev/null +++ b/platform/wab/src/wab/client/operations/set-style-token-varianted-value.spec.ts @@ -0,0 +1,61 @@ +import { createStyleToken } from "@/wab/client/operations/create-style-token"; +import { setStyleTokenVariantedValue } from "@/wab/client/operations/set-style-token-varianted-value"; +import { TplMgr } from "@/wab/shared/TplMgr"; +import { assert } from "@/wab/shared/common"; +import { createSite } from "@/wab/shared/core/sites"; +import { Variant } from "@/wab/shared/model/classes"; + +describe("setStyleTokenVariantedValue", () => { + function setup() { + const site = createSite(); + const tplMgr = new TplMgr({ site }); + + const group = tplMgr.createGlobalVariantGroup("theme"); + const dark = tplMgr.createGlobalVariant(group, "dark"); + + const created = createStyleToken({ + tplMgr, + name: "bg", + type: "Color", + value: "#ffffff", + }); + assert(created.result === "success", "setup failed"); + + return { site, tplMgr, token: created.token, dark }; + } + + it("upserts a varianted value and then removes it via null", () => { + const { site, token, dark } = setup(); + + const setResult = setStyleTokenVariantedValue({ + site, + token, + variants: [dark], + value: "#111111", + }); + assert(setResult.result === "success", "expected set success"); + expect(token.variantedValues.length).toEqual(1); + expect(token.variantedValues[0].value).toEqual("#111111"); + expect(token.variantedValues[0].variants).toEqual([dark]); + + const removeResult = setStyleTokenVariantedValue({ + site, + token, + variants: [dark], + value: null, + }); + assert(removeResult.result === "success", "expected remove success"); + expect(token.variantedValues.length).toEqual(0); + }); + + it("errors when no variants are provided", () => { + const { site, token } = setup(); + const result = setStyleTokenVariantedValue({ + site, + token, + variants: [] as Variant[], + value: "#000", + }); + expect(result.result).toEqual("error"); + }); +}); diff --git a/platform/wab/src/wab/client/operations/set-style-token-varianted-value.ts b/platform/wab/src/wab/client/operations/set-style-token-varianted-value.ts new file mode 100644 index 0000000000..b1498ff85f --- /dev/null +++ b/platform/wab/src/wab/client/operations/set-style-token-varianted-value.ts @@ -0,0 +1,52 @@ +import { OperationResult } from "@/wab/client/operations/common"; +import { ImmutableToken, toFinalToken } from "@/wab/shared/core/tokens"; +import { Site, StyleToken, Variant } from "@/wab/shared/model/classes"; + +export type SetStyleTokenVariantedValueResult = OperationResult<{}>; + +/** + * Upsert or remove a single varianted-value entry on a style token. + * + * Variant-set identity follows the model's matching rule: an entry is + * identified by the unordered set of its variants. Passing the same set + * twice updates the existing entry rather than creating a duplicate. + * + * For local tokens the value is written to the token itself; for imported + * (direct dependency) or registered tokens it is written to the token's + * override in the current site. Transitive-dependency tokens, which cannot + * be overridden, return an error. + * + * @param opts.value - New value for the variant combination, or null to + * remove the override entirely. + */ +export function setStyleTokenVariantedValue(opts: { + site: Site; + token: StyleToken; + variants: Variant[]; + value: string | null; +}): SetStyleTokenVariantedValueResult { + const { site, token, variants, value } = opts; + + if (variants.length === 0) { + return { + result: "error", + message: "At least one variant is required for a varianted value.", + }; + } + + const finalToken = toFinalToken(token, site); + if (finalToken instanceof ImmutableToken) { + return { + result: "error", + message: `Token "${token.name}" is from a transitive dependency and cannot be edited or overridden.`, + }; + } + + if (value === null) { + finalToken.removeVariantedValue(variants); + } else { + finalToken.setVariantedValue(variants, value); + } + + return { result: "success" }; +} diff --git a/platform/wab/src/wab/client/operations/tests/utils.ts b/platform/wab/src/wab/client/operations/tests/utils.ts index aff74e5017..9dbcc0472d 100644 --- a/platform/wab/src/wab/client/operations/tests/utils.ts +++ b/platform/wab/src/wab/client/operations/tests/utils.ts @@ -1,8 +1,19 @@ -import { TplMgr } from "@/wab/shared/TplMgr"; +import { createComponent } from "@/wab/client/operations/create-component"; +import { createVariant } from "@/wab/client/operations/create-variant"; +import { createVariantGroup } from "@/wab/client/operations/create-variant-group"; +import { + TplMgr, + VariantOptionsType, + getTplComponentArg, +} from "@/wab/shared/TplMgr"; +import { ensureVariantSetting, getBaseVariant } from "@/wab/shared/Variants"; +import { assert } from "@/wab/shared/common"; import { ComponentType, mkComponent } from "@/wab/shared/core/components"; +import { mkParam } from "@/wab/shared/core/lang"; import { createSite } from "@/wab/shared/core/sites"; import * as Tpls from "@/wab/shared/core/tpls"; -import { TplTag } from "@/wab/shared/model/classes"; +import { Param, TplComponent, TplTag } from "@/wab/shared/model/classes"; +import { typeFactory } from "@/wab/shared/model/model-util"; import { createVariantTplMgr } from "@/wab/shared/tests/site-tests-utils"; export function setupComponentWithTplTree(tplTree: TplTag) { @@ -15,6 +26,144 @@ export function setupComponentWithTplTree(tplTree: TplTag) { Tpls.trackComponentSite(component, site); Tpls.trackComponentRoot(component); const tplMgr = new TplMgr({ site }); - const vtm = createVariantTplMgr(site, tplMgr); + const vtm = createVariantTplMgr(site, tplMgr, component); return { component, site, tplMgr, vtm }; } + +/** + * Set up a "Button" component with prop params of each type (text, num, bool, + * any, choice "tone", dateString "publishedAt", dateRangeStrings "activeRange", + * slot, and a queryData "query" that the data-props converter does not support + * yet) and variant groups of each kind (single choice "size", multi choice + * "features", standalone "dark"), plus an instance of it in a containing + * component, with the instance's base VariantSetting resolved. + */ +export function setupComponentWithInstance() { + const { + site, + tplMgr, + vtm, + component: page, + } = setupComponentWithTplTree(Tpls.mkTplTagX("div", {})); + + const created = createComponent({ + tplMgr, + name: "Button", + type: ComponentType.Plain, + }); + assert(created.result === "success", "component setup failed"); + const button = created.component; + + button.params.push( + mkParam({ name: "label", type: typeFactory.text(), paramType: "prop" }), + mkParam({ name: "count", type: typeFactory.num(), paramType: "prop" }), + mkParam({ name: "disabled", type: typeFactory.bool(), paramType: "prop" }), + mkParam({ name: "data", type: typeFactory.any(), paramType: "prop" }), + mkParam({ + name: "tone", + type: typeFactory.choice(["primary", "secondary"]), + paramType: "prop", + }), + mkParam({ + name: "publishedAt", + type: typeFactory.dateString(), + paramType: "prop", + }), + mkParam({ + name: "activeRange", + type: typeFactory.dateRangeStrings(), + paramType: "prop", + }), + mkParam({ + name: "query", + type: typeFactory.queryData(), + paramType: "prop", + }), + mkParam({ + name: "children", + type: typeFactory.renderable(), + paramType: "slot", + }) + ); + + const sizeResult = createVariantGroup({ + component: button, + tplMgr, + name: "size", + optionsType: VariantOptionsType.singleChoice, + }); + assert(sizeResult.result === "success", "size group setup failed"); + const sizeGroup = sizeResult.group; + for (const name of ["small", "large"]) { + const variantResult = createVariant({ + component: button, + tplMgr, + variantGroup: sizeGroup, + name, + }); + assert(variantResult.result === "success", "size variant setup failed"); + } + + const featuresResult = createVariantGroup({ + component: button, + tplMgr, + name: "features", + optionsType: VariantOptionsType.multiChoice, + }); + assert(featuresResult.result === "success", "features group setup failed"); + const featuresGroup = featuresResult.group; + for (const name of ["rounded", "shadow"]) { + const variantResult = createVariant({ + component: button, + tplMgr, + variantGroup: featuresGroup, + name, + }); + assert(variantResult.result === "success", "features variant setup failed"); + } + + const darkResult = createVariantGroup({ + component: button, + tplMgr, + name: "dark", + optionsType: VariantOptionsType.standalone, + }); + assert(darkResult.result === "success", "dark group setup failed"); + const darkGroup = darkResult.group; + + const baseVariant = getBaseVariant(page); + const instance = Tpls.mkTplComponentX({ + component: button, + baseVariant, + }); + const root = page.tplTree as TplTag; + root.children.push(instance); + instance.parent = root; + + const vs = ensureVariantSetting(instance, [baseVariant]); + + const findParam = (name: string): Param => { + const param = button.params.find((p) => p.variable.name === name); + assert(param, `param "${name}" must exist`); + return param; + }; + + const getArg = (instanceTpl: TplComponent, paramName: string) => { + return getTplComponentArg(instanceTpl, vs, findParam(paramName).variable); + }; + + return { + site, + tplMgr, + vtm, + page, + button, + sizeGroup, + featuresGroup, + darkGroup, + instance, + vs, + getArg, + opts: { vs, tplMgr }, + }; +} diff --git a/platform/wab/src/wab/client/operations/unset-component-instance-prop.spec.ts b/platform/wab/src/wab/client/operations/unset-component-instance-prop.spec.ts new file mode 100644 index 0000000000..ab09befb7e --- /dev/null +++ b/platform/wab/src/wab/client/operations/unset-component-instance-prop.spec.ts @@ -0,0 +1,52 @@ +import { setComponentInstanceProp } from "@/wab/client/operations/set-component-instance-prop"; +import { setupComponentWithInstance } from "@/wab/client/operations/tests/utils"; +import { unsetComponentInstanceProp } from "@/wab/client/operations/unset-component-instance-prop"; +import { assert } from "@/wab/shared/common"; + +describe("unsetComponentInstanceProp", () => { + it("unsets a set prop", () => { + const { instance, getArg, opts } = setupComponentWithInstance(); + + setComponentInstanceProp(instance, "label", "Buy", opts); + const result = unsetComponentInstanceProp(instance, "label", opts); + + expect(result.result).toEqual("success"); + expect(getArg(instance, "label")).toBeUndefined(); + }); + + it("unsets a variant group selection", () => { + const { instance, getArg, opts } = setupComponentWithInstance(); + + setComponentInstanceProp(instance, "size", "small", opts); + const result = unsetComponentInstanceProp(instance, "size", opts); + + expect(result.result).toEqual("success"); + expect(getArg(instance, "size")).toBeUndefined(); + }); + + it("is a no-op on an already-unset prop", () => { + const { instance, opts } = setupComponentWithInstance(); + + const result = unsetComponentInstanceProp(instance, "label", opts); + + expect(result.result).toEqual("success"); + }); + + it("errors on an unknown prop", () => { + const { instance, opts } = setupComponentWithInstance(); + + const result = unsetComponentInstanceProp(instance, "nope", opts); + + assert(result.result === "error", "expected error"); + expect(result.message).toContain(`has no prop "nope"`); + }); + + it("errors on a slot prop", () => { + const { instance, opts } = setupComponentWithInstance(); + + const result = unsetComponentInstanceProp(instance, "children", opts); + + assert(result.result === "error", "expected error"); + expect(result.message).toContain("slot"); + }); +}); diff --git a/platform/wab/src/wab/client/operations/unset-component-instance-prop.ts b/platform/wab/src/wab/client/operations/unset-component-instance-prop.ts new file mode 100644 index 0000000000..52ae1999ff --- /dev/null +++ b/platform/wab/src/wab/client/operations/unset-component-instance-prop.ts @@ -0,0 +1,44 @@ +import { OperationResult } from "@/wab/client/operations/common"; +import { isSlot } from "@/wab/shared/SlotUtils"; +import { TplMgr } from "@/wab/shared/TplMgr"; +import { paramToVarName, toVarName } from "@/wab/shared/codegen/util"; +import { TplComponent, VariantSetting } from "@/wab/shared/model/classes"; + +export type UnsetComponentInstancePropResult = OperationResult<{}>; + +/** + * Unset a single prop on a component instance under the given variant + * setting, reverting it to the component's default. + * Unsetting an already-unset prop is a no-op. + */ +export function unsetComponentInstanceProp( + tpl: TplComponent, + propName: string, + opts: { + vs: VariantSetting; + tplMgr: TplMgr; + } +): UnsetComponentInstancePropResult { + const { vs, tplMgr } = opts; + const component = tpl.component; + + const varName = toVarName(propName); + const param = component.params.find( + (p) => paramToVarName(component, p) === varName + ); + if (!param) { + return { + result: "error", + message: `Component "${component.name}" has no prop "${propName}"`, + }; + } + if (isSlot(param)) { + return { + result: "error", + message: `Component "${component.name}" prop "${propName}" is a slot.`, + }; + } + + tplMgr.tryDelArg(tpl, vs, param.variable); + return { result: "success" }; +} diff --git a/platform/wab/src/wab/client/operations/update-component-state.spec.ts b/platform/wab/src/wab/client/operations/update-component-state.spec.ts new file mode 100644 index 0000000000..85c8ea2bc3 --- /dev/null +++ b/platform/wab/src/wab/client/operations/update-component-state.spec.ts @@ -0,0 +1,286 @@ +import { createComponent } from "@/wab/client/operations/create-component"; +import { createComponentState } from "@/wab/client/operations/create-component-state"; +import { + setupComponentWithInstance, + setupComponentWithTplTree, +} from "@/wab/client/operations/tests/utils"; +import { updateComponentState } from "@/wab/client/operations/update-component-state"; +import { ensureVariantSetting, getBaseVariant } from "@/wab/shared/Variants"; +import { assert } from "@/wab/shared/common"; +import { ComponentType } from "@/wab/shared/core/components"; +import { codeLit, customCode, tryExtractJson } from "@/wab/shared/core/exprs"; +import { ParamExportType } from "@/wab/shared/core/lang"; +import { getStateVarName } from "@/wab/shared/core/states"; +import * as Tpls from "@/wab/shared/core/tpls"; +import { TplTag, isKnownVariantGroupState } from "@/wab/shared/model/classes"; +import { isNumType } from "@/wab/shared/model/model-util"; + +describe("updateComponentState", () => { + function setupWithState() { + const { site, tplMgr } = setupComponentWithTplTree( + Tpls.mkTplTagX("div", {}) + ); + const created = createComponent({ + tplMgr, + name: "StateTest", + type: ComponentType.Plain, + }); + assert(created.result === "success", "setup failed"); + const component = created.component; + const stateResult = createComponentState({ + site, + component, + tplMgr, + name: "count", + }); + assert(stateResult.result === "success", "state setup failed"); + return { + site, + tplMgr, + component, + state: stateResult.state, + opts: { site, component, tplMgr }, + }; + } + + it("renames the state and its change-handler param", () => { + const { state, opts } = setupWithState(); + + const result = updateComponentState(state, { name: "total" }, opts); + + assert(result.result === "success", "expected success result"); + expect(state).toMatchObject({ + param: { variable: { name: "total" } }, + onChangeParam: { variable: { name: "On total change" } }, + }); + }); + + it("changes the variable type and resets the initial value", () => { + const { state, opts } = setupWithState(); + + const result = updateComponentState( + state, + { variableType: "number" }, + opts + ); + + assert(result.result === "success", "expected success result"); + expect(state.variableType).toEqual("number"); + expect(isNumType(state.param.type)).toEqual(true); + expect(tryExtractJson(state.param.defaultExpr!)).toEqual(0); + }); + + it("applies an initial value provided along with a type change", () => { + const { state, opts } = setupWithState(); + + const result = updateComponentState( + state, + { variableType: "number", initialValue: codeLit(42) }, + opts + ); + + assert(result.result === "success", "expected success result"); + expect(tryExtractJson(state.param.defaultExpr!)).toEqual(42); + }); + + it("rejects an initial value that does not match the new type, changing nothing", () => { + const { state, opts } = setupWithState(); + + const result = updateComponentState( + state, + { variableType: "number", initialValue: codeLit("oops") }, + opts + ); + + assert(result.result === "error", "expected error result"); + expect(state.variableType).toEqual("text"); + expect(tryExtractJson(state.param.defaultExpr!)).toEqual(""); + }); + + it("makes a state public and back to private", () => { + const { state, opts } = setupWithState(); + + const toReadonly = updateComponentState( + state, + { accessType: "readonly" }, + opts + ); + assert(toReadonly.result === "success", "expected success result"); + expect(state.accessType).toEqual("readonly"); + expect(state.onChangeParam.exportType).toEqual(ParamExportType.External); + + const toPrivate = updateComponentState( + state, + { accessType: "private" }, + opts + ); + assert(toPrivate.result === "success", "expected success result"); + expect(state.onChangeParam.exportType).toEqual(ParamExportType.ToolsOnly); + }); + + it("blocks making a state writable while its initial value is dynamic", () => { + const { state, opts } = setupWithState(); + state.param.defaultExpr = customCode("$ctx.locale"); + + const blocked = updateComponentState( + state, + { accessType: "writable" }, + opts + ); + expect(blocked).toMatchObject({ + result: "error", + message: + "Initial value for read-and-write state cannot contain references to dynamic values that are available only in the current component context.", + }); + expect(state.accessType).toEqual("private"); + + const replaced = updateComponentState( + state, + { accessType: "writable", initialValue: codeLit("en") }, + opts + ); + assert(replaced.result === "success", "expected success result"); + expect(state.accessType).toEqual("writable"); + expect(tryExtractJson(state.param.defaultExpr!)).toEqual("en"); + }); + + it("clears the initial value with null", () => { + const { state, opts } = setupWithState(); + expect(tryExtractJson(state.param.defaultExpr!)).toEqual(""); + + const result = updateComponentState(state, { initialValue: null }, opts); + + assert(result.result === "success", "expected success result"); + expect(state.param.defaultExpr).toBeNull(); + }); + + it("sets an expression initial value", () => { + const { state, opts } = setupWithState(); + const expr = customCode("$ctx.locale"); + + const result = updateComponentState(state, { initialValue: expr }, opts); + + assert(result.result === "success", "expected success result"); + expect(state.param.defaultExpr).toBe(expr); + }); + + it("blocks an expression initial value on a read-and-write state", () => { + const { state, opts } = setupWithState(); + const madeWritable = updateComponentState( + state, + { accessType: "writable" }, + opts + ); + assert(madeWritable.result === "success", "setup failed"); + + const result = updateComponentState( + state, + { initialValue: customCode("$ctx.locale") }, + opts + ); + + expect(result).toMatchObject({ + result: "error", + message: + "Initial value for read-and-write state cannot contain references to dynamic values that are available only in the current component context.", + }); + expect(tryExtractJson(state.param.defaultExpr!)).toEqual(""); + }); + + it("blocks making a state private while other components reference it", () => { + const { site, tplMgr, page, button, instance } = + setupComponentWithInstance(); + const opts = { site, component: button, tplMgr }; + const created = createComponentState({ + site, + component: button, + tplMgr, + name: "count", + accessType: "readonly", + }); + assert(created.result === "success", "state setup failed"); + const state = created.state; + + // Reference the implicit copy from the containing page. + const implicitState = page.states.find( + (s) => s.implicitState === state && s.tplNode === instance + ); + assert(implicitState, "expected an implicit state on the page"); + const pageRoot = page.tplTree as TplTag; + const vs = ensureVariantSetting(pageRoot, [getBaseVariant(page)]); + vs.attrs["title"] = customCode(`$state.${getStateVarName(implicitState)}`); + + const result = updateComponentState(state, { accessType: "private" }, opts); + + expect(result).toMatchObject({ + result: "error", + message: "Variable is referenced in UnnamedComponent.", + }); + expect(state.accessType).toEqual("readonly"); + }); + + it("only allows accessType changes on implicit states", () => { + const { site, tplMgr, page, button, instance } = + setupComponentWithInstance(); + const created = createComponentState({ + site, + component: button, + tplMgr, + name: "count", + accessType: "readonly", + }); + assert(created.result === "success", "state setup failed"); + const implicitState = page.states.find( + (s) => s.implicitState === created.state && s.tplNode === instance + ); + assert(implicitState, "expected an implicit state on the page"); + const opts = { site, component: page, tplMgr }; + + const renamed = updateComponentState( + implicitState, + { name: "renamed" }, + opts + ); + expect(renamed).toMatchObject({ + result: "error", + message: + 'State "button.count2" is an implicit state of element "Button"; only its access type can be changed.', + }); + + const exposed = updateComponentState( + implicitState, + { accessType: "readonly" }, + opts + ); + assert(exposed.result === "success", "expected success result"); + expect(implicitState.accessType).toEqual("readonly"); + }); + + it("rejects variant-group states", () => { + const { site, tplMgr, button } = setupComponentWithInstance(); + const variantGroupState = button.states.find((s) => + isKnownVariantGroupState(s) + ); + assert(variantGroupState, "expected a variant-group state"); + + const result = updateComponentState( + variantGroupState, + { accessType: "readonly" }, + { site, component: button, tplMgr } + ); + + expect(result).toMatchObject({ + result: "error", + message: + 'State "size" backs a variant group; manage it through variant group operations.', + }); + }); + + it("rejects an empty change set", () => { + const { state, opts } = setupWithState(); + + const result = updateComponentState(state, {}, opts); + + expect(result.result).toEqual("error"); + }); +}); diff --git a/platform/wab/src/wab/client/operations/update-component-state.ts b/platform/wab/src/wab/client/operations/update-component-state.ts new file mode 100644 index 0000000000..c8f6412285 --- /dev/null +++ b/platform/wab/src/wab/client/operations/update-component-state.ts @@ -0,0 +1,171 @@ +import { OperationResult } from "@/wab/client/operations/common"; +import { + validateStateAccessType, + validateStateInitialValue, +} from "@/wab/client/operations/utils/validate-state-changes"; +import { TplMgr } from "@/wab/shared/TplMgr"; +import { + getComponentDisplayName, + isCodeComponent, +} from "@/wab/shared/core/components"; +import { codeLit, tryExtractJson } from "@/wab/shared/core/exprs"; +import { + NormalStateVariableType, + StateAccessType, + findImplicitUsages, + getDefaultValueForStateVariableType, + getStateVarName, + updateStateAccessType, +} from "@/wab/shared/core/states"; +import { + Component, + Expr, + Site, + State, + isKnownVariantGroupState, +} from "@/wab/shared/model/classes"; +import { convertVariableTypeToWabType } from "@/wab/shared/model/model-util"; +import { uniq } from "lodash"; + +export type UpdateComponentStateResult = OperationResult<{}>; + +export interface ComponentStateChanges { + name?: string; + variableType?: NormalStateVariableType; + accessType?: StateAccessType; + initialValue?: Expr | null; +} + +/** + * Update fields of an existing state variable. All requested changes are + * validated up front, so an error result means nothing was changed. + * + * Field semantics: + * - name: deduped rename; `$state`/`$props` references and the change-handler + * param are fixed up automatically. + * - variableType: resets the initial value to the new type's default, unless + * an initialValue is provided in the same call. + * - accessType: making a state private is rejected while other components + * reference its implicit copies; making it writable is rejected while the + * initial value references `$`-vars. + * - initialValue: any expression; null clears the initial value. + * Statically-known values are validated against the variable type. + * + * Implicit states only support accessType changes (that is how a child + * element's state gets exposed from the component); variant-group states are + * managed through variant group operations instead. + */ +export function updateComponentState( + state: State, + changes: ComponentStateChanges, + opts: { + site: Site; + component: Component; + tplMgr: TplMgr; + } +): UpdateComponentStateResult { + const { site, component, tplMgr } = opts; + const { name, variableType, accessType, initialValue } = changes; + const stateName = getStateVarName(state); + + if (isCodeComponent(component)) { + return { + result: "error", + message: `Component "${component.name}" is a code component; its states are managed by its code registration.`, + }; + } + if (isKnownVariantGroupState(state)) { + return { + result: "error", + message: `State "${stateName}" backs a variant group; manage it through variant group operations.`, + }; + } + if ( + name === undefined && + variableType === undefined && + accessType === undefined && + initialValue === undefined + ) { + return { + result: "error", + message: `No changes provided for state "${stateName}".`, + }; + } + + if ( + state.tplNode && + (name !== undefined || + variableType !== undefined || + initialValue !== undefined) + ) { + return { + result: "error", + message: `State "${stateName}" is an implicit state of element "${state.tplNode.name}"; only its access type can be changed.`, + }; + } + + if (name !== undefined && !name.trim()) { + return { result: "error", message: "State name cannot be empty." }; + } + + if (initialValue !== undefined && initialValue !== null) { + const staticValue = tryExtractJson(initialValue); + if (staticValue !== undefined) { + const invalidMessage = validateStateInitialValue( + variableType ?? state.variableType, + staticValue + ); + if (invalidMessage) { + return { result: "error", message: invalidMessage }; + } + } + } + if (accessType === "private" && state.accessType !== "private") { + const referencingComponents = uniq( + findImplicitUsages(site, state).map((usage) => usage.component) + ); + if (referencingComponents.length > 0) { + return { + result: "error", + message: `Variable is referenced in ${referencingComponents + .map((c) => getComponentDisplayName(c)) + .join(", ")}.`, + }; + } + } + // Only an accessType change or an incoming initial value can produce the + // invalid writable-with-dynamic-initial-value combination. + if (accessType !== undefined || initialValue !== undefined) { + const finalDefaultExpr = + initialValue !== undefined + ? initialValue + : variableType !== undefined && variableType !== state.variableType + ? codeLit(getDefaultValueForStateVariableType(variableType)) + : state.param.defaultExpr; + const invalidMessage = validateStateAccessType( + accessType ?? (state.accessType as StateAccessType), + finalDefaultExpr + ); + if (invalidMessage) { + return { result: "error", message: invalidMessage }; + } + } + + if (name !== undefined) { + tplMgr.renameParam(component, state.param, name); + } + if (variableType !== undefined && variableType !== state.variableType) { + state.param.type = convertVariableTypeToWabType(variableType); + state.variableType = variableType; + state.param.defaultExpr = codeLit( + getDefaultValueForStateVariableType(variableType) + ); + } + if (initialValue !== undefined) { + state.param.defaultExpr = initialValue; + } + if (accessType !== undefined && accessType !== state.accessType) { + updateStateAccessType(site, component, state, accessType); + } + return { result: "success" }; +} diff --git a/platform/wab/src/wab/client/operations/upsert-animation.spec.ts b/platform/wab/src/wab/client/operations/upsert-animation.spec.ts new file mode 100644 index 0000000000..367dbe80a6 --- /dev/null +++ b/platform/wab/src/wab/client/operations/upsert-animation.spec.ts @@ -0,0 +1,84 @@ +import { upsertAnimation } from "@/wab/client/operations/upsert-animation"; +import { assert } from "@/wab/shared/common"; +import { createSite } from "@/wab/shared/core/sites"; + +describe("upsertAnimation", () => { + function setup() { + const site = createSite(); + return { site }; + } + + it("creates an animation, taking the name from the @keyframes identifier", () => { + const { site } = setup(); + const before = site.animationSequences.length; + + const result = upsertAnimation({ + site, + keyframesRule: + "@keyframes fadeIn { 0% { opacity: 0 } 100% { opacity: 1 } }", + }); + + assert(result.result === "success", "expected success result"); + expect(site.animationSequences.length).toEqual(before + 1); + expect(result.animation.name).toEqual("fadeIn"); + expect(result.animation.keyframes.length).toEqual(2); + expect(result.animation.keyframes[0].percentage).toEqual(0); + expect(result.animation.keyframes[0].rs.values).toEqual({ opacity: "0" }); + expect(result.animation.keyframes[1].percentage).toEqual(100); + expect(result.animation.keyframes[1].rs.values).toEqual({ opacity: "1" }); + }); + + it("supports from/to selector syntax", () => { + const { site } = setup(); + const result = upsertAnimation({ + site, + keyframesRule: + "@keyframes slide { from { transform: translateX(0) } to { transform: translateX(100px) } }", + }); + assert(result.result === "success", "expected success result"); + expect(result.animation.name).toEqual("slide"); + expect(result.animation.keyframes[0].percentage).toEqual(0); + expect(result.animation.keyframes[1].percentage).toEqual(100); + }); + + it("upserts when the name collides: keyframes replaced, UUID preserved", () => { + const { site } = setup(); + const first = upsertAnimation({ + site, + keyframesRule: + "@keyframes fadeIn { 0% { opacity: 0 } 100% { opacity: 1 } }", + }); + const second = upsertAnimation({ + site, + keyframesRule: + "@keyframes fadeIn { 0% { opacity: 0.5 } 100% { opacity: 0.9 } }", + }); + assert( + first.result === "success" && second.result === "success", + "expected both to succeed" + ); + + // Same object, same uuid, only one entry in site.animationSequences + expect(second.animation).toBe(first.animation); + expect(second.animation.uuid).toEqual(first.animation.uuid); + expect(site.animationSequences.length).toEqual(1); + + // Keyframes were replaced with the second rule's values + expect(first.animation.keyframes[0].rs.values).toEqual({ opacity: "0.5" }); + expect(first.animation.keyframes[1].rs.values).toEqual({ opacity: "0.9" }); + }); + + it("errors when the CSS contains no @keyframes rule", () => { + const { site } = setup(); + const before = site.animationSequences.length; + + const result = upsertAnimation({ + site, + keyframesRule: "0% { opacity: 0 } 100% { opacity: 1 }", + }); + + expect(result.result).toEqual("error"); + // No orphan animation created on parse failure + expect(site.animationSequences.length).toEqual(before); + }); +}); diff --git a/platform/wab/src/wab/client/operations/upsert-animation.ts b/platform/wab/src/wab/client/operations/upsert-animation.ts new file mode 100644 index 0000000000..bebfc5abae --- /dev/null +++ b/platform/wab/src/wab/client/operations/upsert-animation.ts @@ -0,0 +1,80 @@ +import { OperationResult } from "@/wab/client/operations/common"; +import { upsertAnimationSequences } from "@/wab/client/operations/html-to-tpl"; +import { processKeyframesRule } from "@/wab/client/web-importer/html-parser"; +import { AnimationSequence, Site } from "@/wab/shared/model/classes"; +import { Atrule, parse as cssParse, walk } from "css-tree"; + +export type UpsertAnimationResult = OperationResult<{ + animation: AnimationSequence; +}>; + +/** + * Upsert an animation from a CSS `@keyframes` block. + * The animation's name comes from the `@keyframes` identifier. If an + * animation with that name already exists, its keyframes are replaced + * in place + */ +export function upsertAnimation(opts: { + site: Site; + keyframesRule: string; +}): UpsertAnimationResult { + const { site, keyframesRule } = opts; + + let parsedCssVal; + try { + parsedCssVal = cssParse(keyframesRule); + } catch (e: unknown) { + return { + result: "error", + message: `Failed to parse provided CSS`, + }; + } + + let keyframesAtrule: Atrule | null = null; + walk(parsedCssVal, (node) => { + if ( + !keyframesAtrule && + node.type === "Atrule" && + node.name === "keyframes" + ) { + keyframesAtrule = node; + } + }); + + if (!keyframesAtrule) { + return { + result: "error", + message: "No `@keyframes` rule found in the provided CSS.", + }; + } + + const wiSequence = processKeyframesRule(keyframesAtrule); + if (!wiSequence) { + return { + result: "error", + message: "Failed to parse the `@keyframes` rule.", + }; + } + + if (!wiSequence.name.trim()) { + return { + result: "error", + message: + "The @keyframes rule is missing an identifier. Expected @keyframes { ... }.", + }; + } + + if (wiSequence.keyframes.length === 0) { + return { + result: "error", + message: + "The `@keyframes` rule has no valid keyframe selectors. Use `from`, `to`, or `N%` selectors.", + }; + } + + const [animation] = upsertAnimationSequences([wiSequence], { + site, + }); + + return { result: "success", animation }; +} diff --git a/platform/wab/src/wab/client/operations/utils/validate-component-extraction.ts b/platform/wab/src/wab/client/operations/utils/validate-component-extraction.ts new file mode 100644 index 0000000000..4d8d3af555 --- /dev/null +++ b/platform/wab/src/wab/client/operations/utils/validate-component-extraction.ts @@ -0,0 +1,143 @@ +import { getComponentDisplayName } from "@/wab/shared/core/components"; +import { + findImplicitStatesOfNodesInTree, + findImplicitUsages, + getStateDisplayName, + isStateUsedInExpr, +} from "@/wab/shared/core/states"; +import * as Tpls from "@/wab/shared/core/tpls"; +import { + Component, + Site, + TplNode, + ensureKnownEventHandler, + isKnownEventHandler, + isKnownTplRef, +} from "@/wab/shared/model/classes"; +import { capitalizeFirst } from "@/wab/shared/strs"; +import L from "lodash"; + +type ComponentExtractionError = { + message: string; + referencingNode?: TplNode | null; +}; + +/** + * Check whether `tpl` can be extracted from `containingComponent` into a new + * component. Returns null if extraction is safe; otherwise an error with a + * user-facing message and, when applicable, the node holding the blocking + * reference. + */ +export function validateComponentExtraction( + tpl: TplNode, + containingComponent: Component, + site: Site +): ComponentExtractionError | null { + if (Tpls.isBodyTpl(tpl)) { + return { + message: + "Page body is a special element. Choose another element to extract as a component.", + }; + } + + if (Tpls.isTplTextBlock(tpl.parent)) { + return { + message: + "Cannot extract inline text into a component. This feature is not supported at the moment.", + }; + } + + if (!Tpls.isTplTagOrComponent(tpl) || Tpls.isTplColumn(tpl)) { + return { + message: + "You can only extract tags or component instances into a new Component.", + }; + } + + const flattenedTplsSet = new Set(Tpls.flattenTpls(tpl)); + + const removedImplicitStates = new Set( + findImplicitStatesOfNodesInTree(containingComponent, tpl) + ); + const containingComponentExprs = Tpls.findExprsInTree( + containingComponent.tplTree, + [tpl] + ); + for (const state of removedImplicitStates) { + const refs = containingComponentExprs.filter(({ expr }) => + isStateUsedInExpr(state, expr) + ); + if (refs.length > 0) { + return { + message: `Selected elements contain variable "${getStateDisplayName( + state + )}" which is referenced in the current component.`, + referencingNode: refs.find((r) => r.node)?.node, + }; + } + const implicitUsages = findImplicitUsages(site, state); + if (implicitUsages.length > 0) { + const components = L.uniq(implicitUsages.map((usage) => usage.component)); + return { + message: `Selected nodes contain variable "${getStateDisplayName( + state + )}" which is referenced in ${components + .map((c) => getComponentDisplayName(c)) + .join(", ")}.`, + }; + } + } + + const tplExprs = Tpls.findExprsInTree(tpl); + const exprsInInteractions = tplExprs + .filter(({ expr }) => isKnownEventHandler(expr)) + .flatMap(({ expr }) => { + const eventHandler = ensureKnownEventHandler(expr); + return eventHandler.interactions.flatMap((interaction) => + Tpls.findExprsInInteraction(interaction) + ); + }); + const remainingStates = containingComponent.states.filter( + (s) => !removedImplicitStates.has(s) + ); + for (const state of remainingStates) { + // We try to extract the component if the state is not referenced in any + // interaction. We guess that this state is read-only in this context and + // can be passed in as a prop of the new component. + const refsInInteractions = new Set( + exprsInInteractions.filter((expr) => isStateUsedInExpr(state, expr)) + ); + if (refsInInteractions.size === 0) { + continue; + } + const refs = tplExprs.filter( + ({ expr }) => + isStateUsedInExpr(state, expr) && refsInInteractions.has(expr) + ); + if (refs.length > 0) { + return { + message: `Selected elements contain reference to "${getStateDisplayName( + state + )}".`, + referencingNode: refs.find((r) => r.node)?.node, + }; + } + } + + for (const tplRef of tplExprs) { + const expr = tplRef.expr; + if (isKnownTplRef(expr)) { + if (!flattenedTplsSet.has(expr.tpl)) { + const name = Tpls.isTplNamable(expr.tpl) ? expr.tpl.name : undefined; + return { + message: `Selected elements contain reference to "${ + name ?? capitalizeFirst(Tpls.summarizeTpl(expr.tpl)) + }".`, + referencingNode: tplRef.node ?? null, + }; + } + } + } + + return null; +} diff --git a/platform/wab/src/wab/client/operations/utils/validate-state-changes.ts b/platform/wab/src/wab/client/operations/utils/validate-state-changes.ts new file mode 100644 index 0000000000..9147348af4 --- /dev/null +++ b/platform/wab/src/wab/client/operations/utils/validate-state-changes.ts @@ -0,0 +1,58 @@ +import { unexpected } from "@/wab/shared/common"; +import { StateAccessType, StateVariableType } from "@/wab/shared/core/states"; +import { exprUsesDollarVars } from "@/wab/shared/eval/expression-parser"; +import { Expr } from "@/wab/shared/model/classes"; +import { isArray, isBoolean, isNumber, isPlainObject, isString } from "lodash"; + +/** + * Checks that a JSON initial value is compatible with the state's variable + * type. Returns an error message, or undefined if the value is valid. + */ +export function validateStateInitialValue( + variableType: StateVariableType, + value: unknown +): string | undefined { + const validateType = () => { + switch (variableType) { + case "text": + case "dateString": + return isString(value); + case "number": + return isNumber(value); + case "boolean": + return isBoolean(value); + case "array": + return isArray(value); + case "object": + return isPlainObject(value); + case "dateRangeStrings": + return isArray(value) && value.every((v) => isString(v)); + default: + unexpected(`unexpected variable type: ${variableType}`); + } + }; + + return validateType() + ? undefined + : `Initial value ${JSON.stringify( + value + )} is not valid for a "${variableType}" state.`; +} + +/** + * Checks that a state's access type is compatible with its initial value + * expression. A writable state's initial value becomes a prop default + * evaluated at the instantiation site, so it must not reference $-vars that + * only exist inside the owning component. Returns an error message, or + * undefined if the combination is valid. + */ +export function validateStateAccessType( + accessType: StateAccessType, + initialValueExpr: Expr | null | undefined +): string | undefined { + return accessType === "writable" && + initialValueExpr && + exprUsesDollarVars(initialValueExpr) + ? "Initial value for read-and-write state cannot contain references to dynamic values that are available only in the current component context." + : undefined; +} diff --git a/platform/wab/src/wab/client/operations/utils/validate-tpl-removal.ts b/platform/wab/src/wab/client/operations/utils/validate-tpl-removal.ts new file mode 100644 index 0000000000..f6f9053723 --- /dev/null +++ b/platform/wab/src/wab/client/operations/utils/validate-tpl-removal.ts @@ -0,0 +1,75 @@ +import { getComponentDisplayName } from "@/wab/shared/core/components"; +import { + findImplicitStatesOfNodesInTree, + findImplicitUsages, + getStateDisplayName, + isStateUsedInExpr, +} from "@/wab/shared/core/states"; +import * as Tpls from "@/wab/shared/core/tpls"; +import { + Component, + Site, + TplNode, + isKnownTplRef, +} from "@/wab/shared/model/classes"; +import L from "lodash"; + +type TplRemovalError = { + message: string; + referencingNode?: TplNode | null; +}; + +/** + * Check whether removing the given tpls from their component would leave a + * dangling reference — either an implicit state referenced outside the + * subtree (locally or cross-component) or a TplRef pointing into it. + * + * Returns null if removal is safe. + */ +export function validateTplRemoval( + tpls: TplNode[], + component: Component, + site: Site +): TplRemovalError | null { + const removedImplicitStates = tpls.flatMap((tpl) => + findImplicitStatesOfNodesInTree(component, tpl) + ); + + for (const state of removedImplicitStates) { + const refs = Tpls.findExprsInTree(component.tplTree, tpls).filter( + ({ expr }) => isStateUsedInExpr(state, expr) + ); + if (refs.length > 0) { + return { + message: `It contains variable "${getStateDisplayName( + state + )}" which is referenced in the current component.`, + referencingNode: refs.find((r) => r.node)?.node, + }; + } + + const usages = findImplicitUsages(site, state); + if (usages.length > 0) { + const components = L.uniq(usages.map((u) => u.component)); + return { + message: `It contains variable "${getStateDisplayName( + state + )}" which is referenced in ${components + .map((c) => getComponentDisplayName(c)) + .join(", ")}.`, + }; + } + } + + for (const { expr, node } of Tpls.findExprsInComponent(component)) { + if (isKnownTplRef(expr) && tpls.includes(expr.tpl)) { + return { + message: + "It is referenced by another element in an invoke action element interaction.", + referencingNode: node, + }; + } + } + + return null; +} diff --git a/platform/wab/src/wab/client/optimized-branching.spec.ts b/platform/wab/src/wab/client/optimized-branching.spec.ts index 6c90b05827..d905039319 100644 --- a/platform/wab/src/wab/client/optimized-branching.spec.ts +++ b/platform/wab/src/wab/client/optimized-branching.spec.ts @@ -1,5 +1,8 @@ import { fakeStudioCtx } from "@/wab/client/test/fake-init-ctx"; import { mkTokenRef } from "@/wab/commons/StyleToken"; +import { TplMgr } from "@/wab/shared/TplMgr"; +import { $$$ } from "@/wab/shared/TplQuery"; +import { getBaseVariant, mkVariantSetting } from "@/wab/shared/Variants"; import { Bundler } from "@/wab/shared/bundler"; import { arrayRemove } from "@/wab/shared/collections"; import { ensure, jsonClone, mkUuid } from "@/wab/shared/common"; @@ -7,25 +10,23 @@ import { ComponentType, mkComponent } from "@/wab/shared/core/components"; import { createSite, writeable } from "@/wab/shared/core/sites"; import { flattenTpls, isTplNamable, mkTplTagX } from "@/wab/shared/core/tpls"; import { - isKnownTplSlot, Site, TplSlot, TplTag, VariantedValue, + isKnownTplSlot, } from "@/wab/shared/model/classes"; import { + TestResult, applyTestMerge, basicSite, fetchLastBundleVersion, lastBundleVersion, testMerge, - TestResult, } from "@/wab/shared/site-diffs/_tests_/utils"; import { inferUpdatedComponents } from "@/wab/shared/site-diffs/merge-components"; import { BranchSide } from "@/wab/shared/site-diffs/merge-core"; -import { TplMgr } from "@/wab/shared/TplMgr"; -import { $$$ } from "@/wab/shared/TplQuery"; -import { getBaseVariant, mkVariantSetting } from "@/wab/shared/Variants"; +import { ok } from "neverthrow"; beforeAll(async () => { await fetchLastBundleVersion(); @@ -57,9 +58,9 @@ async function observedTestMerge({ const { studioCtx: studioCtxA } = fakeStudioCtx({ site: draftASite }); await studioCtxA.changeObserved( () => draftASite.components, - ({ success }) => { + () => { a(draftASite, new TplMgr({ site: draftASite })); - return success(); + return ok(); } ); studioCtxA.dispose(); @@ -69,9 +70,9 @@ async function observedTestMerge({ const { studioCtx: studioCtxB } = fakeStudioCtx({ site: draftBSite }); await studioCtxB.changeObserved( () => draftBSite.components, - ({ success }) => { + () => { b(draftBSite, new TplMgr({ site: draftBSite })); - return success(); + return ok(); } ); studioCtxB.dispose(); diff --git a/platform/wab/src/wab/client/plasmic/PP__plasmic__default_style.css b/platform/wab/src/wab/client/plasmic/PP__plasmic__default_style.css new file mode 100644 index 0000000000..b347b0c883 --- /dev/null +++ b/platform/wab/src/wab/client/plasmic/PP__plasmic__default_style.css @@ -0,0 +1,363 @@ +:where(.all) { + display: block; + white-space: inherit; + grid-row: auto; + grid-column: auto; + position: relative; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + text-decoration-line: none; + margin: 0; + border-width: 0px; +} +:where(.__wab_expr_html_text *) { + white-space: inherit; + grid-row: auto; + grid-column: auto; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + margin: 0; + border-width: 0px; +} + +:where(.img) { + display: inline-block; +} +:where(.__wab_expr_html_text img) { + white-space: inherit; +} + +:where(.li) { + display: list-item; +} +:where(.__wab_expr_html_text li) { + white-space: inherit; +} + +:where(.span) { + display: inline; + position: static; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text span) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.input) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text input) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} + +:where(.textarea) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text textarea) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} + +:where(.button) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text button) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} + +:where(.code) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text code) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.pre) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text pre) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.p) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text p) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.i) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text i) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.em) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text em) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.strong) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text strong) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.h1) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h1) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h2) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h2) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h3) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h3) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h4) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h4) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h5) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h5) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h6) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h6) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.address) { + font-style: inherit; +} +:where(.__wab_expr_html_text address) { + white-space: inherit; + font-style: inherit; +} + +:where(.a) { + color: inherit; +} +:where(.__wab_expr_html_text a) { + white-space: inherit; + color: inherit; +} + +:where(.ol) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ol) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.ul) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ul) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.select) { + padding: 2px 6px; +} +:where(.__wab_expr_html_text select) { + white-space: inherit; + padding: 2px 6px; +} + +.plasmic_default__component_wrapper { + display: grid; +} +.plasmic_default__inline { + display: inline; +} +.plasmic_page_wrapper { + display: flex; + width: 100%; + min-height: 100vh; + align-items: stretch; + align-self: start; +} +.plasmic_page_wrapper > * { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} diff --git a/platform/wab/src/wab/client/plasmic/PP__plasmickit_alert_banner.css b/platform/wab/src/wab/client/plasmic/PP__plasmickit_alert_banner.css new file mode 100644 index 0000000000..7268a9745a --- /dev/null +++ b/platform/wab/src/wab/client/plasmic/PP__plasmickit_alert_banner.css @@ -0,0 +1,645 @@ +@import "./PP__plasmickit_design_system.css"; /* plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss */ +@import "./plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; /* plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss */ +@import "./plasmic_kit_icons/plasmic_q_4_icons.css"; /* plasmic-import: oT38tGyqov9SPWHpf3Y2Rf/projectcss */ +@import "./q_4_text_mixins_product/plasmic_q_4_text_mixins_product.css"; /* plasmic-import: sDniSX4oPUZFyk2sXXb3nh/projectcss */ +@import "./react_aria/plasmic.css"; /* plasmic-import: gmeH6XgPaBtkt51HunAo4g/projectcss */ +@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500&display=swap"); + +.plasmic_tokens_29njzcsBEPR4koRddw4knF { + --token-uiW-MmuHD: rgb(224, 62, 40); + --plasmic-token-spectrum-coral-40: var(--token-uiW-MmuHD); + --token-NqCPYGSE8x: rgb(0, 110, 173); + --plasmic-token-spectrum-cyan-40: var(--token-NqCPYGSE8x); + --token-olzpv9Zfv0: rgb(255, 255, 255); + --plasmic-token-white: var(--token-olzpv9Zfv0); + --token-B65u9V-kYf: rgb(245, 247, 250); + --plasmic-token-spectrum-gray-100: var(--token-B65u9V-kYf); +} + +.plasmic_default_styles { + --mixin-qP3g6Hd5AdC_text-decoration-line: none; + --mixin-qP3g6Hd5AdC_font-family: "Inter", sans-serif; + --mixin-qP3g6Hd5AdC_color: var(--token-0IloF6TmFvF); + --mixin-qP3g6Hd5AdC_font-size: 12px; + --mixin-qP3g6Hd5AdC_white-space: pre-wrap; + --mixin-qP3g6Hd5AdC_line-height: 1.5; + --mixin-2zEfljePq9P_color: var(--token-VUsIDivgUss); + --mixin-2zEfljePq9P_white-space: pre-wrap; + --mixin-EEKi5Tu2fbK_white-space: pre-wrap; + --mixin-YQD_Uc8Md__font-family: "Inter", sans-serif; + --mixin-YQD_Uc8Md__font-size: 72px; + --mixin-YQD_Uc8Md__font-weight: 500; + --mixin-YQD_Uc8Md__white-space: pre-wrap; + --mixin-vEOXQLfcbC_font-family: "Inter", sans-serif; + --mixin-vEOXQLfcbC_font-size: 48px; + --mixin-vEOXQLfcbC_font-weight: 500; + --mixin-vEOXQLfcbC_white-space: pre-wrap; + --mixin-EXCWDILscU_font-family: "Inter", sans-serif; + --mixin-EXCWDILscU_font-size: 32px; + --mixin-EXCWDILscU_font-weight: 500; + --mixin-EXCWDILscU_white-space: pre-wrap; + --mixin-N7cG0Ri48QP_font-family: "Inter", sans-serif; + --mixin-N7cG0Ri48QP_font-size: 24px; + --mixin-N7cG0Ri48QP_font-weight: 500; + --mixin-N7cG0Ri48QP_white-space: pre-wrap; + --mixin-__gfw12lSVA_font-family: "Inter", sans-serif; + --mixin-__gfw12lSVA_font-size: 20px; + --mixin-__gfw12lSVA_font-weight: 500; + --mixin-__gfw12lSVA_white-space: pre-wrap; + --mixin-eoQXVRNaCyL_font-family: "Inter", sans-serif; + --mixin-eoQXVRNaCyL_font-size: 16px; + --mixin-eoQXVRNaCyL_font-weight: 500; + --mixin-eoQXVRNaCyL_white-space: pre-wrap; + --mixin-fkU_lzw4PF5_white-space: pre-wrap; + --mixin-v9e0yiTlX_o_white-space: pre-wrap; + --mixin-MMatKfNT024_white-space: pre-wrap; + --mixin-EuhGUWboGh2_position: relative; + --mixin-EuhGUWboGh2_white-space: pre-wrap; + --mixin-_MYD1z_SMDp_position: relative; + --mixin-_MYD1z_SMDp_white-space: pre-wrap; + --mixin-Yot8xJYsc_white-space: pre-wrap; + --mixin-985HZFQW4_white-space: pre-wrap; + --mixin-3i6_2FI7G_white-space: pre-wrap; + --mixin-3HZrBcpB6_white-space: pre-wrap; + --mixin-n1REaG4FH_white-space: pre-wrap; + --mixin-Hk5zzHaLS_white-space: pre-wrap; + --mixin-B4DR1AgPG_white-space: pre-wrap; + --mixin-bhSle9dw7_white-space: pre-wrap; + --mixin-5d8gGYi39_white-space: pre-wrap; + --mixin-sxjZ0YFFF_white-space: pre-wrap; + --mixin-GZm4AQ_Ek_white-space: pre-wrap; + --mixin-qjB654aOL_white-space: pre-wrap; +} + +:where(.all) { + display: block; + white-space: inherit; + grid-row: auto; + grid-column: auto; + position: relative; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + text-decoration-line: none; + margin: 0; + border-width: 0px; +} +:where(.__wab_expr_html_text *) { + white-space: inherit; + grid-row: auto; + grid-column: auto; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + margin: 0; + border-width: 0px; +} + +:where(.img) { + display: inline-block; +} +:where(.__wab_expr_html_text img) { + white-space: inherit; +} + +:where(.li) { + display: list-item; +} +:where(.__wab_expr_html_text li) { + white-space: inherit; +} + +:where(.span) { + display: inline; + position: static; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text span) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.input) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text input) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} + +:where(.textarea) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text textarea) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} + +:where(.button) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text button) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} + +:where(.code) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text code) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.pre) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text pre) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.p) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text p) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.i) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text i) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.em) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text em) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.strong) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text strong) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.h1) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h1) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h2) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h2) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h3) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h3) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h4) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h4) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h5) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h5) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h6) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h6) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.address) { + font-style: inherit; +} +:where(.__wab_expr_html_text address) { + white-space: inherit; + font-style: inherit; +} + +:where(.a) { + color: inherit; +} +:where(.__wab_expr_html_text a) { + white-space: inherit; + color: inherit; +} + +:where(.ol) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ol) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.ul) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ul) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.select) { + padding: 2px 6px; +} +:where(.__wab_expr_html_text select) { + white-space: inherit; + padding: 2px 6px; +} + +.plasmic_default__component_wrapper { + display: grid; +} +.plasmic_default__inline { + display: inline; +} +.plasmic_page_wrapper { + display: flex; + width: 100%; + min-height: 100vh; + align-items: stretch; + align-self: start; +} +.plasmic_page_wrapper > * { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} +:where(.root_reset_29njzcsBEPR4koRddw4knF) { + font-family: var(--mixin-qP3g6Hd5AdC_font-family); + font-size: var(--mixin-qP3g6Hd5AdC_font-size); + color: var(--mixin-qP3g6Hd5AdC_color); + line-height: var(--mixin-qP3g6Hd5AdC_line-height); + white-space: var(--mixin-qP3g6Hd5AdC_white-space); +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) a:where(.a__29njz), +a:where(.root_reset_29njzcsBEPR4koRddw4knF.a__29njz), +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) a, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) a, +a:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) { + color: var(--mixin-2zEfljePq9P_color); +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) a:where(.a__29njz):hover, +a:where(.root_reset_29njzcsBEPR4koRddw4knF.a__29njz):hover, +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) a:hover, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) a:hover, +a:where(.root_reset_29njzcsBEPR4koRddw4knF_tags):hover { +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) h1:where(.h1__29njz), +h1:where(.root_reset_29njzcsBEPR4koRddw4knF.h1__29njz), +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) h1, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) h1, +h1:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) { + font-family: var(--mixin-YQD_Uc8Md__font-family); + font-size: var(--mixin-YQD_Uc8Md__font-size); + font-weight: var(--mixin-YQD_Uc8Md__font-weight); +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) h2:where(.h2__29njz), +h2:where(.root_reset_29njzcsBEPR4koRddw4knF.h2__29njz), +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) h2, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) h2, +h2:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) { + font-family: var(--mixin-vEOXQLfcbC_font-family); + font-size: var(--mixin-vEOXQLfcbC_font-size); + font-weight: var(--mixin-vEOXQLfcbC_font-weight); +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) h3:where(.h3__29njz), +h3:where(.root_reset_29njzcsBEPR4koRddw4knF.h3__29njz), +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) h3, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) h3, +h3:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) { + font-family: var(--mixin-EXCWDILscU_font-family); + font-size: var(--mixin-EXCWDILscU_font-size); + font-weight: var(--mixin-EXCWDILscU_font-weight); +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) h4:where(.h4__29njz), +h4:where(.root_reset_29njzcsBEPR4koRddw4knF.h4__29njz), +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) h4, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) h4, +h4:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) { + font-family: var(--mixin-N7cG0Ri48QP_font-family); + font-size: var(--mixin-N7cG0Ri48QP_font-size); + font-weight: var(--mixin-N7cG0Ri48QP_font-weight); +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) h5:where(.h5__29njz), +h5:where(.root_reset_29njzcsBEPR4koRddw4knF.h5__29njz), +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) h5, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) h5, +h5:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) { + font-family: var(--mixin-__gfw12lSVA_font-family); + font-size: var(--mixin-__gfw12lSVA_font-size); + font-weight: var(--mixin-__gfw12lSVA_font-weight); +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) h6:where(.h6__29njz), +h6:where(.root_reset_29njzcsBEPR4koRddw4knF.h6__29njz), +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) h6, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) h6, +h6:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) { + font-family: var(--mixin-eoQXVRNaCyL_font-family); + font-size: var(--mixin-eoQXVRNaCyL_font-size); + font-weight: var(--mixin-eoQXVRNaCyL_font-weight); +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) blockquote:where(.blockquote__29njz), +blockquote:where(.root_reset_29njzcsBEPR4koRddw4knF.blockquote__29njz), +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) blockquote, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) blockquote, +blockquote:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) { +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) code:where(.code__29njz), +code:where(.root_reset_29njzcsBEPR4koRddw4knF.code__29njz), +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) code, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) code, +code:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) { +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) pre:where(.pre__29njz), +pre:where(.root_reset_29njzcsBEPR4koRddw4knF.pre__29njz), +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) pre, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) pre, +pre:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) { +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) ol:where(.ol__29njz), +ol:where(.root_reset_29njzcsBEPR4koRddw4knF.ol__29njz), +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) ol, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) ol, +ol:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) { + position: var(--mixin-EuhGUWboGh2_position); +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) ul:where(.ul__29njz), +ul:where(.root_reset_29njzcsBEPR4koRddw4knF.ul__29njz), +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) ul, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) ul, +ul:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) { + position: var(--mixin-_MYD1z_SMDp_position); +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) a:where(.a__29njz):not(:hover), +a:where(.root_reset_29njzcsBEPR4koRddw4knF.a__29njz):not(:hover), +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) a:not(:hover), +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) a:not(:hover), +a:where(.root_reset_29njzcsBEPR4koRddw4knF_tags):not(:hover) { +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) a:where(.a__29njz):active, +a:where(.root_reset_29njzcsBEPR4koRddw4knF.a__29njz):active, +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) a:active, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) a:active, +a:where(.root_reset_29njzcsBEPR4koRddw4knF_tags):active { +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) a:where(.a__29njz):not(:active), +a:where(.root_reset_29njzcsBEPR4koRddw4knF.a__29njz):not(:active), +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) a:not(:active), +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) a:not(:active), +a:where(.root_reset_29njzcsBEPR4koRddw4knF_tags):not(:active) { +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) a:where(.a__29njz):focus, +a:where(.root_reset_29njzcsBEPR4koRddw4knF.a__29njz):focus, +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) a:focus, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) a:focus, +a:where(.root_reset_29njzcsBEPR4koRddw4knF_tags):focus { +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) a:where(.a__29njz):not(:link), +a:where(.root_reset_29njzcsBEPR4koRddw4knF.a__29njz):not(:link), +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) a:not(:link), +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) a:not(:link), +a:where(.root_reset_29njzcsBEPR4koRddw4knF_tags):not(:link) { +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) + blockquote:where(.blockquote__29njz):not(:link), +blockquote:where(.root_reset_29njzcsBEPR4koRddw4knF.blockquote__29njz):not( + :link + ), +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) + blockquote:not(:link), +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) blockquote:not(:link), +blockquote:where(.root_reset_29njzcsBEPR4koRddw4knF_tags):not(:link) { +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) + blockquote:where(.blockquote__29njz):hover, +blockquote:where(.root_reset_29njzcsBEPR4koRddw4knF.blockquote__29njz):hover, +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) + blockquote:hover, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) blockquote:hover, +blockquote:where(.root_reset_29njzcsBEPR4koRddw4knF_tags):hover { +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) code:where(.code__29njz):hover, +code:where(.root_reset_29njzcsBEPR4koRddw4knF.code__29njz):hover, +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) code:hover, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) code:hover, +code:where(.root_reset_29njzcsBEPR4koRddw4knF_tags):hover { +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) li:where(.li__29njz), +li:where(.root_reset_29njzcsBEPR4koRddw4knF.li__29njz), +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) li, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) li, +li:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) { +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) p:where(.p__29njz), +p:where(.root_reset_29njzcsBEPR4koRddw4knF.p__29njz), +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) p, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) p, +p:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) { +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) ul:where(.ul__29njz):hover, +ul:where(.root_reset_29njzcsBEPR4koRddw4knF.ul__29njz):hover, +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) ul:hover, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) ul:hover, +ul:where(.root_reset_29njzcsBEPR4koRddw4knF_tags):hover { +} + +:where(.root_reset_29njzcsBEPR4koRddw4knF) li:where(.li__29njz):hover, +li:where(.root_reset_29njzcsBEPR4koRddw4knF.li__29njz):hover, +:where(.root_reset_29njzcsBEPR4koRddw4knF .__wab_expr_html_text) li:hover, +:where(.root_reset_29njzcsBEPR4koRddw4knF_tags) li:hover, +li:where(.root_reset_29njzcsBEPR4koRddw4knF_tags):hover { +} diff --git a/platform/wab/src/wab/client/plasmic/PP__plasmickit_alert_banner.module.css b/platform/wab/src/wab/client/plasmic/PP__plasmickit_alert_banner.module.css deleted file mode 100644 index 6f1f1b719e..0000000000 --- a/platform/wab/src/wab/client/plasmic/PP__plasmickit_alert_banner.module.css +++ /dev/null @@ -1,582 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500&display=swap"); - -.plasmic_tokens { - --token-uiW-MmuHD: rgb(224, 62, 40); - --plasmic-token-spectrum-coral-40: var(--token-uiW-MmuHD); - --token-NqCPYGSE8x: rgb(0, 110, 173); - --plasmic-token-spectrum-cyan-40: var(--token-NqCPYGSE8x); - --token-olzpv9Zfv0: rgb(255, 255, 255); - --plasmic-token-white: var(--token-olzpv9Zfv0); - --token-B65u9V-kYf: rgb(245, 247, 250); - --plasmic-token-spectrum-gray-100: var(--token-B65u9V-kYf); -} - -.plasmic_default_styles { - --mixin-qP3g6Hd5AdC_text-decoration-line: none; - --mixin-qP3g6Hd5AdC_font-family: "Inter", sans-serif; - --mixin-qP3g6Hd5AdC_color: var(--token-0IloF6TmFvF); - --mixin-qP3g6Hd5AdC_font-size: 12px; - --mixin-qP3g6Hd5AdC_white-space: pre-wrap; - --mixin-qP3g6Hd5AdC_line-height: 1.5; - --mixin-2zEfljePq9P_color: var(--token-VUsIDivgUss); - --mixin-2zEfljePq9P_white-space: pre-wrap; - --mixin-EEKi5Tu2fbK_white-space: pre-wrap; - --mixin-YQD_Uc8Md__font-family: "Inter", sans-serif; - --mixin-YQD_Uc8Md__font-size: 72px; - --mixin-YQD_Uc8Md__font-weight: 500; - --mixin-YQD_Uc8Md__white-space: pre-wrap; - --mixin-vEOXQLfcbC_font-family: "Inter", sans-serif; - --mixin-vEOXQLfcbC_font-size: 48px; - --mixin-vEOXQLfcbC_font-weight: 500; - --mixin-vEOXQLfcbC_white-space: pre-wrap; - --mixin-EXCWDILscU_font-family: "Inter", sans-serif; - --mixin-EXCWDILscU_font-size: 32px; - --mixin-EXCWDILscU_font-weight: 500; - --mixin-EXCWDILscU_white-space: pre-wrap; - --mixin-N7cG0Ri48QP_font-family: "Inter", sans-serif; - --mixin-N7cG0Ri48QP_font-size: 24px; - --mixin-N7cG0Ri48QP_font-weight: 500; - --mixin-N7cG0Ri48QP_white-space: pre-wrap; - --mixin-__gfw12lSVA_font-family: "Inter", sans-serif; - --mixin-__gfw12lSVA_font-size: 20px; - --mixin-__gfw12lSVA_font-weight: 500; - --mixin-__gfw12lSVA_white-space: pre-wrap; - --mixin-eoQXVRNaCyL_font-family: "Inter", sans-serif; - --mixin-eoQXVRNaCyL_font-size: 16px; - --mixin-eoQXVRNaCyL_font-weight: 500; - --mixin-eoQXVRNaCyL_white-space: pre-wrap; - --mixin-fkU_lzw4PF5_white-space: pre-wrap; - --mixin-v9e0yiTlX_o_white-space: pre-wrap; - --mixin-MMatKfNT024_white-space: pre-wrap; - --mixin-EuhGUWboGh2_position: relative; - --mixin-EuhGUWboGh2_white-space: pre-wrap; - --mixin-_MYD1z_SMDp_position: relative; - --mixin-_MYD1z_SMDp_white-space: pre-wrap; - --mixin-Yot8xJYsc_white-space: pre-wrap; - --mixin-985HZFQW4_white-space: pre-wrap; - --mixin-3i6_2FI7G_white-space: pre-wrap; - --mixin-3HZrBcpB6_white-space: pre-wrap; - --mixin-n1REaG4FH_white-space: pre-wrap; - --mixin-Hk5zzHaLS_white-space: pre-wrap; - --mixin-B4DR1AgPG_white-space: pre-wrap; - --mixin-bhSle9dw7_white-space: pre-wrap; - --mixin-5d8gGYi39_white-space: pre-wrap; - --mixin-sxjZ0YFFF_white-space: pre-wrap; - --mixin-GZm4AQ_Ek_white-space: pre-wrap; - --mixin-qjB654aOL_white-space: pre-wrap; -} - -:where(.all) { - display: block; - white-space: inherit; - grid-row: auto; - grid-column: auto; - position: relative; - background: none; - background-size: 100% 100%; - background-repeat: no-repeat; - row-gap: 0px; - column-gap: 0px; - box-shadow: none; - box-sizing: border-box; - text-decoration-line: none; - margin: 0; - border-width: 0px; -} -:where(.__wab_expr_html_text *) { - white-space: inherit; - grid-row: auto; - grid-column: auto; - background: none; - background-size: 100% 100%; - background-repeat: no-repeat; - row-gap: 0px; - column-gap: 0px; - box-shadow: none; - box-sizing: border-box; - margin: 0; - border-width: 0px; -} - -:where(.img) { - display: inline-block; -} -:where(.__wab_expr_html_text img) { - white-space: inherit; -} - -:where(.li) { - display: list-item; -} -:where(.__wab_expr_html_text li) { - white-space: inherit; -} - -:where(.span) { - display: inline; - position: static; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} -:where(.__wab_expr_html_text span) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} - -:where(.input) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: linear-gradient(#ffffff, #ffffff); - padding: 2px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text input) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: linear-gradient(#ffffff, #ffffff); - padding: 2px; - border: 1px solid lightgray; -} - -:where(.textarea) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - padding: 2px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text textarea) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - padding: 2px; - border: 1px solid lightgray; -} - -:where(.button) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: none; - align-items: flex-start; - text-align: center; - padding: 2px 6px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text button) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: none; - align-items: flex-start; - text-align: center; - padding: 2px 6px; - border: 1px solid lightgray; -} - -:where(.code) { - font-family: inherit; - line-height: inherit; -} -:where(.__wab_expr_html_text code) { - white-space: inherit; - font-family: inherit; - line-height: inherit; -} - -:where(.pre) { - font-family: inherit; - line-height: inherit; -} -:where(.__wab_expr_html_text pre) { - white-space: inherit; - font-family: inherit; - line-height: inherit; -} - -:where(.p) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} -:where(.__wab_expr_html_text p) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} - -:where(.h1) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h1) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h2) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h2) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h3) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h3) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h4) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h4) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h5) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h5) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h6) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h6) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.address) { - font-style: inherit; -} -:where(.__wab_expr_html_text address) { - white-space: inherit; - font-style: inherit; -} - -:where(.a) { - color: inherit; -} -:where(.__wab_expr_html_text a) { - white-space: inherit; - color: inherit; -} - -:where(.ol) { - list-style-type: none; - padding: 0; -} -:where(.__wab_expr_html_text ol) { - white-space: inherit; - list-style-type: none; - padding: 0; -} - -:where(.ul) { - list-style-type: none; - padding: 0; -} -:where(.__wab_expr_html_text ul) { - white-space: inherit; - list-style-type: none; - padding: 0; -} - -:where(.select) { - padding: 2px 6px; -} -:where(.__wab_expr_html_text select) { - white-space: inherit; - padding: 2px 6px; -} - -.plasmic_default__component_wrapper { - display: grid; -} -.plasmic_default__inline { - display: inline; -} -.plasmic_page_wrapper { - display: flex; - width: 100%; - min-height: 100vh; - align-items: stretch; - align-self: start; -} -.plasmic_page_wrapper > * { - height: auto !important; -} -.__wab_expr_html_text { - white-space: normal; -} -:where(.root_reset) { - font-family: var(--mixin-qP3g6Hd5AdC_font-family); - font-size: var(--mixin-qP3g6Hd5AdC_font-size); - color: var(--mixin-qP3g6Hd5AdC_color); - line-height: var(--mixin-qP3g6Hd5AdC_line-height); - white-space: var(--mixin-qP3g6Hd5AdC_white-space); -} - -:where(.root_reset) a:where(.a), -a:where(.root_reset.a), -:where(.root_reset .__wab_expr_html_text) a, -:where(.root_reset_tags) a, -a:where(.root_reset_tags) { - color: var(--mixin-2zEfljePq9P_color); -} - -:where(.root_reset) a:where(.a):hover, -a:where(.root_reset.a):hover, -:where(.root_reset .__wab_expr_html_text) a:hover, -:where(.root_reset_tags) a:hover, -a:where(.root_reset_tags):hover { -} - -:where(.root_reset) h1:where(.h1), -h1:where(.root_reset.h1), -:where(.root_reset .__wab_expr_html_text) h1, -:where(.root_reset_tags) h1, -h1:where(.root_reset_tags) { - font-family: var(--mixin-YQD_Uc8Md__font-family); - font-size: var(--mixin-YQD_Uc8Md__font-size); - font-weight: var(--mixin-YQD_Uc8Md__font-weight); -} - -:where(.root_reset) h2:where(.h2), -h2:where(.root_reset.h2), -:where(.root_reset .__wab_expr_html_text) h2, -:where(.root_reset_tags) h2, -h2:where(.root_reset_tags) { - font-family: var(--mixin-vEOXQLfcbC_font-family); - font-size: var(--mixin-vEOXQLfcbC_font-size); - font-weight: var(--mixin-vEOXQLfcbC_font-weight); -} - -:where(.root_reset) h3:where(.h3), -h3:where(.root_reset.h3), -:where(.root_reset .__wab_expr_html_text) h3, -:where(.root_reset_tags) h3, -h3:where(.root_reset_tags) { - font-family: var(--mixin-EXCWDILscU_font-family); - font-size: var(--mixin-EXCWDILscU_font-size); - font-weight: var(--mixin-EXCWDILscU_font-weight); -} - -:where(.root_reset) h4:where(.h4), -h4:where(.root_reset.h4), -:where(.root_reset .__wab_expr_html_text) h4, -:where(.root_reset_tags) h4, -h4:where(.root_reset_tags) { - font-family: var(--mixin-N7cG0Ri48QP_font-family); - font-size: var(--mixin-N7cG0Ri48QP_font-size); - font-weight: var(--mixin-N7cG0Ri48QP_font-weight); -} - -:where(.root_reset) h5:where(.h5), -h5:where(.root_reset.h5), -:where(.root_reset .__wab_expr_html_text) h5, -:where(.root_reset_tags) h5, -h5:where(.root_reset_tags) { - font-family: var(--mixin-__gfw12lSVA_font-family); - font-size: var(--mixin-__gfw12lSVA_font-size); - font-weight: var(--mixin-__gfw12lSVA_font-weight); -} - -:where(.root_reset) h6:where(.h6), -h6:where(.root_reset.h6), -:where(.root_reset .__wab_expr_html_text) h6, -:where(.root_reset_tags) h6, -h6:where(.root_reset_tags) { - font-family: var(--mixin-eoQXVRNaCyL_font-family); - font-size: var(--mixin-eoQXVRNaCyL_font-size); - font-weight: var(--mixin-eoQXVRNaCyL_font-weight); -} - -:where(.root_reset) blockquote:where(.blockquote), -blockquote:where(.root_reset.blockquote), -:where(.root_reset .__wab_expr_html_text) blockquote, -:where(.root_reset_tags) blockquote, -blockquote:where(.root_reset_tags) { -} - -:where(.root_reset) code:where(.code), -code:where(.root_reset.code), -:where(.root_reset .__wab_expr_html_text) code, -:where(.root_reset_tags) code, -code:where(.root_reset_tags) { -} - -:where(.root_reset) pre:where(.pre), -pre:where(.root_reset.pre), -:where(.root_reset .__wab_expr_html_text) pre, -:where(.root_reset_tags) pre, -pre:where(.root_reset_tags) { -} - -:where(.root_reset) ol:where(.ol), -ol:where(.root_reset.ol), -:where(.root_reset .__wab_expr_html_text) ol, -:where(.root_reset_tags) ol, -ol:where(.root_reset_tags) { - position: var(--mixin-EuhGUWboGh2_position); -} - -:where(.root_reset) ul:where(.ul), -ul:where(.root_reset.ul), -:where(.root_reset .__wab_expr_html_text) ul, -:where(.root_reset_tags) ul, -ul:where(.root_reset_tags) { - position: var(--mixin-_MYD1z_SMDp_position); -} - -:where(.root_reset) a:where(.a):not(:hover), -a:where(.root_reset.a):not(:hover), -:where(.root_reset .__wab_expr_html_text) a:not(:hover), -:where(.root_reset_tags) a:not(:hover), -a:where(.root_reset_tags):not(:hover) { -} - -:where(.root_reset) a:where(.a):active, -a:where(.root_reset.a):active, -:where(.root_reset .__wab_expr_html_text) a:active, -:where(.root_reset_tags) a:active, -a:where(.root_reset_tags):active { -} - -:where(.root_reset) a:where(.a):not(:active), -a:where(.root_reset.a):not(:active), -:where(.root_reset .__wab_expr_html_text) a:not(:active), -:where(.root_reset_tags) a:not(:active), -a:where(.root_reset_tags):not(:active) { -} - -:where(.root_reset) a:where(.a):focus, -a:where(.root_reset.a):focus, -:where(.root_reset .__wab_expr_html_text) a:focus, -:where(.root_reset_tags) a:focus, -a:where(.root_reset_tags):focus { -} - -:where(.root_reset) a:where(.a):not(:link), -a:where(.root_reset.a):not(:link), -:where(.root_reset .__wab_expr_html_text) a:not(:link), -:where(.root_reset_tags) a:not(:link), -a:where(.root_reset_tags):not(:link) { -} - -:where(.root_reset) blockquote:where(.blockquote):not(:link), -blockquote:where(.root_reset.blockquote):not(:link), -:where(.root_reset .__wab_expr_html_text) blockquote:not(:link), -:where(.root_reset_tags) blockquote:not(:link), -blockquote:where(.root_reset_tags):not(:link) { -} - -:where(.root_reset) blockquote:where(.blockquote):hover, -blockquote:where(.root_reset.blockquote):hover, -:where(.root_reset .__wab_expr_html_text) blockquote:hover, -:where(.root_reset_tags) blockquote:hover, -blockquote:where(.root_reset_tags):hover { -} - -:where(.root_reset) code:where(.code):hover, -code:where(.root_reset.code):hover, -:where(.root_reset .__wab_expr_html_text) code:hover, -:where(.root_reset_tags) code:hover, -code:where(.root_reset_tags):hover { -} - -:where(.root_reset) li:where(.li), -li:where(.root_reset.li), -:where(.root_reset .__wab_expr_html_text) li, -:where(.root_reset_tags) li, -li:where(.root_reset_tags) { -} - -:where(.root_reset) p:where(.p), -p:where(.root_reset.p), -:where(.root_reset .__wab_expr_html_text) p, -:where(.root_reset_tags) p, -p:where(.root_reset_tags) { -} - -:where(.root_reset) ul:where(.ul):hover, -ul:where(.root_reset.ul):hover, -:where(.root_reset .__wab_expr_html_text) ul:hover, -:where(.root_reset_tags) ul:hover, -ul:where(.root_reset_tags):hover { -} - -:where(.root_reset) li:where(.li):hover, -li:where(.root_reset.li):hover, -:where(.root_reset .__wab_expr_html_text) li:hover, -:where(.root_reset_tags) li:hover, -li:where(.root_reset_tags):hover { -} diff --git a/platform/wab/src/wab/client/plasmic/PP__plasmickit_dashboard.css b/platform/wab/src/wab/client/plasmic/PP__plasmickit_dashboard.css new file mode 100644 index 0000000000..850befd61b --- /dev/null +++ b/platform/wab/src/wab/client/plasmic/PP__plasmickit_dashboard.css @@ -0,0 +1,657 @@ +@import "./PP__plasmickit_design_system.css"; /* plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss */ +@import "./q_4_text_mixins_product/plasmic_q_4_text_mixins_product.css"; /* plasmic-import: sDniSX4oPUZFyk2sXXb3nh/projectcss */ +@import "./plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; /* plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss */ +@import "./plasmic_kit_icons/plasmic_q_4_icons.css"; /* plasmic-import: oT38tGyqov9SPWHpf3Y2Rf/projectcss */ +@import "./plasmic_kit_pricing/plasmic_plasmic_kit_pricing.css"; /* plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss */ +@import "./plasmic_embed_css/plasmic_plasmic_embed_css.css"; /* plasmic-import: 8PtdGodUbexNYgkuyBUcWu/projectcss */ +@import "./react_aria/plasmic.css"; /* plasmic-import: gmeH6XgPaBtkt51HunAo4g/projectcss */ +@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C600%3B0%2C700&family=Paytone+One%3Aital%2Cwght%400%2C400&display=swap"); + +.plasmic_default_styles { + --mixin-qP3g6Hd5AdC_text-decoration-line: none; + --mixin-qP3g6Hd5AdC_font-family: "Inter", sans-serif; + --mixin-qP3g6Hd5AdC_color: var(--token-0IloF6TmFvF); + --mixin-qP3g6Hd5AdC_font-size: 12px; + --mixin-qP3g6Hd5AdC_white-space: pre-wrap; + --mixin-qP3g6Hd5AdC_line-height: 1.5; + --mixin-2zEfljePq9P_color: var(--token-VUsIDivgUss); + --mixin-2zEfljePq9P_white-space: pre-wrap; + --mixin-EEKi5Tu2fbK_white-space: pre-wrap; + --mixin-YQD_Uc8Md__font-family: "Inter", sans-serif; + --mixin-YQD_Uc8Md__font-size: 72px; + --mixin-YQD_Uc8Md__font-weight: 500; + --mixin-YQD_Uc8Md__white-space: pre-wrap; + --mixin-vEOXQLfcbC_font-family: "Inter", sans-serif; + --mixin-vEOXQLfcbC_font-size: 48px; + --mixin-vEOXQLfcbC_font-weight: 500; + --mixin-vEOXQLfcbC_white-space: pre-wrap; + --mixin-EXCWDILscU_font-family: "Inter", sans-serif; + --mixin-EXCWDILscU_font-size: 32px; + --mixin-EXCWDILscU_font-weight: 500; + --mixin-EXCWDILscU_white-space: pre-wrap; + --mixin-N7cG0Ri48QP_font-family: "Inter", sans-serif; + --mixin-N7cG0Ri48QP_font-size: 24px; + --mixin-N7cG0Ri48QP_font-weight: 500; + --mixin-N7cG0Ri48QP_white-space: pre-wrap; + --mixin-__gfw12lSVA_font-family: "Inter", sans-serif; + --mixin-__gfw12lSVA_font-size: 20px; + --mixin-__gfw12lSVA_font-weight: 500; + --mixin-__gfw12lSVA_white-space: pre-wrap; + --mixin-eoQXVRNaCyL_font-family: "Inter", sans-serif; + --mixin-eoQXVRNaCyL_font-size: 16px; + --mixin-eoQXVRNaCyL_font-weight: 500; + --mixin-eoQXVRNaCyL_white-space: pre-wrap; + --mixin-fkU_lzw4PF5_white-space: pre-wrap; + --mixin-v9e0yiTlX_o_white-space: pre-wrap; + --mixin-MMatKfNT024_white-space: pre-wrap; + --mixin-EuhGUWboGh2_position: relative; + --mixin-EuhGUWboGh2_white-space: pre-wrap; + --mixin-_MYD1z_SMDp_position: relative; + --mixin-_MYD1z_SMDp_white-space: pre-wrap; + --mixin-Yot8xJYsc_white-space: pre-wrap; + --mixin-985HZFQW4_white-space: pre-wrap; + --mixin-3i6_2FI7G_white-space: pre-wrap; + --mixin-3HZrBcpB6_white-space: pre-wrap; + --mixin-n1REaG4FH_white-space: pre-wrap; + --mixin-Hk5zzHaLS_white-space: pre-wrap; + --mixin-B4DR1AgPG_white-space: pre-wrap; + --mixin-bhSle9dw7_white-space: pre-wrap; + --mixin-5d8gGYi39_white-space: pre-wrap; + --mixin-sxjZ0YFFF_white-space: pre-wrap; + --mixin-GZm4AQ_Ek_white-space: pre-wrap; + --mixin-qjB654aOL_white-space: pre-wrap; +} + +.plasmic_mixins { + --mixin-oFb7JXPlt_box-shadow: inset 0px 0px 0px 1px var(--token-D666zt2IZPL); + --plasmic-mixin-hover-outline_box-shadow: var(--mixin-oFb7JXPlt_box-shadow); + --mixin-oFb7JXPlt_white-space: pre-wrap; + --plasmic-mixin-hover-outline_white-space: var(--mixin-oFb7JXPlt_white-space); + --mixin-mXv6tl4rq_white-space: pre-wrap; + --plasmic-mixin-20-x-20-icon_white-space: var(--mixin-mXv6tl4rq_white-space); + --mixin-YIXD1_06m_white-space: pre-wrap; + --plasmic-mixin-18-24-heading_white-space: var(--mixin-YIXD1_06m_white-space); + --mixin-XJ2uYNlT8_white-space: pre-wrap; + --plasmic-mixin-wrapper-with-max-width_white-space: var( + --mixin-XJ2uYNlT8_white-space + ); + --mixin-C7U7kULEJ_white-space: pre-wrap; + --plasmic-mixin-plain-button_white-space: var(--mixin-C7U7kULEJ_white-space); + --mixin-E49oEM_Te_white-space: pre-wrap; + --plasmic-mixin-nav-route-header_white-space: var( + --mixin-E49oEM_Te_white-space + ); +} + +:where(.all) { + display: block; + white-space: inherit; + grid-row: auto; + grid-column: auto; + position: relative; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + text-decoration-line: none; + margin: 0; + border-width: 0px; +} +:where(.__wab_expr_html_text *) { + white-space: inherit; + grid-row: auto; + grid-column: auto; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + margin: 0; + border-width: 0px; +} + +:where(.img) { + display: inline-block; +} +:where(.__wab_expr_html_text img) { + white-space: inherit; +} + +:where(.li) { + display: list-item; +} +:where(.__wab_expr_html_text li) { + white-space: inherit; +} + +:where(.span) { + display: inline; + position: static; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text span) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.input) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text input) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} + +:where(.textarea) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text textarea) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} + +:where(.button) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text button) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} + +:where(.code) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text code) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.pre) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text pre) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.p) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text p) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.i) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text i) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.em) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text em) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.strong) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text strong) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.h1) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h1) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h2) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h2) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h3) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h3) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h4) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h4) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h5) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h5) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h6) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h6) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.address) { + font-style: inherit; +} +:where(.__wab_expr_html_text address) { + white-space: inherit; + font-style: inherit; +} + +:where(.a) { + color: inherit; +} +:where(.__wab_expr_html_text a) { + white-space: inherit; + color: inherit; +} + +:where(.ol) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ol) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.ul) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ul) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.select) { + padding: 2px 6px; +} +:where(.__wab_expr_html_text select) { + white-space: inherit; + padding: 2px 6px; +} + +.plasmic_default__component_wrapper { + display: grid; +} +.plasmic_default__inline { + display: inline; +} +.plasmic_page_wrapper { + display: flex; + width: 100%; + min-height: 100vh; + align-items: stretch; + align-self: start; +} +.plasmic_page_wrapper > * { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) { + font-family: var(--mixin-qP3g6Hd5AdC_font-family); + font-size: var(--mixin-qP3g6Hd5AdC_font-size); + color: var(--mixin-qP3g6Hd5AdC_color); + line-height: var(--mixin-qP3g6Hd5AdC_line-height); + white-space: var(--mixin-qP3g6Hd5AdC_white-space); +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) a:where(.a__ooL7E), +a:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.a__ooL7E), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) a, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) a, +a:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) { + color: var(--mixin-2zEfljePq9P_color); +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) a:where(.a__ooL7E):hover, +a:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.a__ooL7E):hover, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) a:hover, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) a:hover, +a:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags):hover { +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) h1:where(.h1__ooL7E), +h1:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.h1__ooL7E), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) h1, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) h1, +h1:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) { + font-family: var(--mixin-YQD_Uc8Md__font-family); + font-size: var(--mixin-YQD_Uc8Md__font-size); + font-weight: var(--mixin-YQD_Uc8Md__font-weight); +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) h2:where(.h2__ooL7E), +h2:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.h2__ooL7E), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) h2, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) h2, +h2:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) { + font-family: var(--mixin-vEOXQLfcbC_font-family); + font-size: var(--mixin-vEOXQLfcbC_font-size); + font-weight: var(--mixin-vEOXQLfcbC_font-weight); +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) h3:where(.h3__ooL7E), +h3:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.h3__ooL7E), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) h3, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) h3, +h3:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) { + font-family: var(--mixin-EXCWDILscU_font-family); + font-size: var(--mixin-EXCWDILscU_font-size); + font-weight: var(--mixin-EXCWDILscU_font-weight); +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) h4:where(.h4__ooL7E), +h4:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.h4__ooL7E), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) h4, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) h4, +h4:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) { + font-family: var(--mixin-N7cG0Ri48QP_font-family); + font-size: var(--mixin-N7cG0Ri48QP_font-size); + font-weight: var(--mixin-N7cG0Ri48QP_font-weight); +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) h5:where(.h5__ooL7E), +h5:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.h5__ooL7E), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) h5, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) h5, +h5:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) { + font-family: var(--mixin-__gfw12lSVA_font-family); + font-size: var(--mixin-__gfw12lSVA_font-size); + font-weight: var(--mixin-__gfw12lSVA_font-weight); +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) h6:where(.h6__ooL7E), +h6:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.h6__ooL7E), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) h6, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) h6, +h6:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) { + font-family: var(--mixin-eoQXVRNaCyL_font-family); + font-size: var(--mixin-eoQXVRNaCyL_font-size); + font-weight: var(--mixin-eoQXVRNaCyL_font-weight); +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) blockquote:where(.blockquote__ooL7E), +blockquote:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.blockquote__ooL7E), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) blockquote, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) blockquote, +blockquote:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) { +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) code:where(.code__ooL7E), +code:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.code__ooL7E), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) code, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) code, +code:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) { +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) pre:where(.pre__ooL7E), +pre:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.pre__ooL7E), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) pre, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) pre, +pre:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) { +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) ol:where(.ol__ooL7E), +ol:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.ol__ooL7E), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) ol, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) ol, +ol:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) { + position: var(--mixin-EuhGUWboGh2_position); +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) ul:where(.ul__ooL7E), +ul:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.ul__ooL7E), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) ul, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) ul, +ul:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) { + position: var(--mixin-_MYD1z_SMDp_position); +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) a:where(.a__ooL7E):not(:hover), +a:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.a__ooL7E):not(:hover), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) a:not(:hover), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) a:not(:hover), +a:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags):not(:hover) { +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) a:where(.a__ooL7E):active, +a:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.a__ooL7E):active, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) a:active, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) a:active, +a:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags):active { +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) a:where(.a__ooL7E):not(:active), +a:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.a__ooL7E):not(:active), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) a:not(:active), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) a:not(:active), +a:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags):not(:active) { +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) a:where(.a__ooL7E):focus, +a:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.a__ooL7E):focus, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) a:focus, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) a:focus, +a:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags):focus { +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) a:where(.a__ooL7E):not(:link), +a:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.a__ooL7E):not(:link), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) a:not(:link), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) a:not(:link), +a:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags):not(:link) { +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) + blockquote:where(.blockquote__ooL7E):not(:link), +blockquote:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.blockquote__ooL7E):not( + :link + ), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) + blockquote:not(:link), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) blockquote:not(:link), +blockquote:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags):not(:link) { +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) + blockquote:where(.blockquote__ooL7E):hover, +blockquote:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.blockquote__ooL7E):hover, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) + blockquote:hover, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) blockquote:hover, +blockquote:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags):hover { +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) code:where(.code__ooL7E):hover, +code:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.code__ooL7E):hover, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) code:hover, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) code:hover, +code:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags):hover { +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) li:where(.li__ooL7E), +li:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.li__ooL7E), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) li, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) li, +li:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) { +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) p:where(.p__ooL7E), +p:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.p__ooL7E), +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) p, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) p, +p:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) { +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) ul:where(.ul__ooL7E):hover, +ul:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.ul__ooL7E):hover, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) ul:hover, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) ul:hover, +ul:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags):hover { +} + +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE) li:where(.li__ooL7E):hover, +li:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE.li__ooL7E):hover, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE .__wab_expr_html_text) li:hover, +:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags) li:hover, +li:where(.root_reset_ooL7EhXDmFQWnW9sxtchhE_tags):hover { +} diff --git a/platform/wab/src/wab/client/plasmic/PP__plasmickit_dashboard.module.css b/platform/wab/src/wab/client/plasmic/PP__plasmickit_dashboard.module.css deleted file mode 100644 index b0bf40efa3..0000000000 --- a/platform/wab/src/wab/client/plasmic/PP__plasmickit_dashboard.module.css +++ /dev/null @@ -1,588 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C600%3B0%2C700&family=Paytone+One%3Aital%2Cwght%400%2C400&display=swap"); - -.plasmic_default_styles { - --mixin-qP3g6Hd5AdC_text-decoration-line: none; - --mixin-qP3g6Hd5AdC_font-family: "Inter", sans-serif; - --mixin-qP3g6Hd5AdC_color: var(--token-0IloF6TmFvF); - --mixin-qP3g6Hd5AdC_font-size: 12px; - --mixin-qP3g6Hd5AdC_white-space: pre-wrap; - --mixin-qP3g6Hd5AdC_line-height: 1.5; - --mixin-2zEfljePq9P_color: var(--token-VUsIDivgUss); - --mixin-2zEfljePq9P_white-space: pre-wrap; - --mixin-EEKi5Tu2fbK_white-space: pre-wrap; - --mixin-YQD_Uc8Md__font-family: "Inter", sans-serif; - --mixin-YQD_Uc8Md__font-size: 72px; - --mixin-YQD_Uc8Md__font-weight: 500; - --mixin-YQD_Uc8Md__white-space: pre-wrap; - --mixin-vEOXQLfcbC_font-family: "Inter", sans-serif; - --mixin-vEOXQLfcbC_font-size: 48px; - --mixin-vEOXQLfcbC_font-weight: 500; - --mixin-vEOXQLfcbC_white-space: pre-wrap; - --mixin-EXCWDILscU_font-family: "Inter", sans-serif; - --mixin-EXCWDILscU_font-size: 32px; - --mixin-EXCWDILscU_font-weight: 500; - --mixin-EXCWDILscU_white-space: pre-wrap; - --mixin-N7cG0Ri48QP_font-family: "Inter", sans-serif; - --mixin-N7cG0Ri48QP_font-size: 24px; - --mixin-N7cG0Ri48QP_font-weight: 500; - --mixin-N7cG0Ri48QP_white-space: pre-wrap; - --mixin-__gfw12lSVA_font-family: "Inter", sans-serif; - --mixin-__gfw12lSVA_font-size: 20px; - --mixin-__gfw12lSVA_font-weight: 500; - --mixin-__gfw12lSVA_white-space: pre-wrap; - --mixin-eoQXVRNaCyL_font-family: "Inter", sans-serif; - --mixin-eoQXVRNaCyL_font-size: 16px; - --mixin-eoQXVRNaCyL_font-weight: 500; - --mixin-eoQXVRNaCyL_white-space: pre-wrap; - --mixin-fkU_lzw4PF5_white-space: pre-wrap; - --mixin-v9e0yiTlX_o_white-space: pre-wrap; - --mixin-MMatKfNT024_white-space: pre-wrap; - --mixin-EuhGUWboGh2_position: relative; - --mixin-EuhGUWboGh2_white-space: pre-wrap; - --mixin-_MYD1z_SMDp_position: relative; - --mixin-_MYD1z_SMDp_white-space: pre-wrap; - --mixin-Yot8xJYsc_white-space: pre-wrap; - --mixin-985HZFQW4_white-space: pre-wrap; - --mixin-3i6_2FI7G_white-space: pre-wrap; - --mixin-3HZrBcpB6_white-space: pre-wrap; - --mixin-n1REaG4FH_white-space: pre-wrap; - --mixin-Hk5zzHaLS_white-space: pre-wrap; - --mixin-B4DR1AgPG_white-space: pre-wrap; - --mixin-bhSle9dw7_white-space: pre-wrap; - --mixin-5d8gGYi39_white-space: pre-wrap; - --mixin-sxjZ0YFFF_white-space: pre-wrap; - --mixin-GZm4AQ_Ek_white-space: pre-wrap; - --mixin-qjB654aOL_white-space: pre-wrap; -} - -.plasmic_mixins { - --mixin-oFb7JXPlt_box-shadow: inset 0px 0px 0px 1px var(--token-D666zt2IZPL); - --plasmic-mixin-hover-outline_box-shadow: var(--mixin-oFb7JXPlt_box-shadow); - --mixin-oFb7JXPlt_white-space: pre-wrap; - --plasmic-mixin-hover-outline_white-space: var(--mixin-oFb7JXPlt_white-space); - --mixin-mXv6tl4rq_white-space: pre-wrap; - --plasmic-mixin-20-x-20-icon_white-space: var(--mixin-mXv6tl4rq_white-space); - --mixin-YIXD1_06m_white-space: pre-wrap; - --plasmic-mixin-18-24-heading_white-space: var(--mixin-YIXD1_06m_white-space); - --mixin-XJ2uYNlT8_white-space: pre-wrap; - --plasmic-mixin-wrapper-with-max-width_white-space: var( - --mixin-XJ2uYNlT8_white-space - ); - --mixin-C7U7kULEJ_white-space: pre-wrap; - --plasmic-mixin-plain-button_white-space: var(--mixin-C7U7kULEJ_white-space); - --mixin-E49oEM_Te_white-space: pre-wrap; - --plasmic-mixin-nav-route-header_white-space: var( - --mixin-E49oEM_Te_white-space - ); -} - -:where(.all) { - display: block; - white-space: inherit; - grid-row: auto; - grid-column: auto; - position: relative; - background: none; - background-size: 100% 100%; - background-repeat: no-repeat; - box-shadow: none; - box-sizing: border-box; - text-decoration-line: none; - margin: 0; - border-width: 0px; -} -:where(.__wab_expr_html_text *) { - white-space: inherit; - grid-row: auto; - grid-column: auto; - background: none; - background-size: 100% 100%; - background-repeat: no-repeat; - box-shadow: none; - box-sizing: border-box; - margin: 0; - border-width: 0px; -} - -:where(.img) { - display: inline-block; -} -:where(.__wab_expr_html_text img) { - white-space: inherit; -} - -:where(.li) { - display: list-item; -} -:where(.__wab_expr_html_text li) { - white-space: inherit; -} - -:where(.span) { - display: inline; - position: static; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} -:where(.__wab_expr_html_text span) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} - -:where(.input) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: linear-gradient(#ffffff, #ffffff); - padding: 2px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text input) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: linear-gradient(#ffffff, #ffffff); - padding: 2px; - border: 1px solid lightgray; -} - -:where(.textarea) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - padding: 2px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text textarea) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - padding: 2px; - border: 1px solid lightgray; -} - -:where(.button) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: none; - align-items: flex-start; - text-align: center; - padding: 2px 6px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text button) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: none; - align-items: flex-start; - text-align: center; - padding: 2px 6px; - border: 1px solid lightgray; -} - -:where(.code) { - font-family: inherit; - line-height: inherit; -} -:where(.__wab_expr_html_text code) { - white-space: inherit; - font-family: inherit; - line-height: inherit; -} - -:where(.pre) { - font-family: inherit; - line-height: inherit; -} -:where(.__wab_expr_html_text pre) { - white-space: inherit; - font-family: inherit; - line-height: inherit; -} - -:where(.p) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} -:where(.__wab_expr_html_text p) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} - -:where(.h1) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h1) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h2) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h2) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h3) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h3) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h4) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h4) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h5) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h5) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h6) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h6) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.address) { - font-style: inherit; -} -:where(.__wab_expr_html_text address) { - white-space: inherit; - font-style: inherit; -} - -:where(.a) { - color: inherit; -} -:where(.__wab_expr_html_text a) { - white-space: inherit; - color: inherit; -} - -:where(.ol) { - list-style-type: none; - padding: 0; -} -:where(.__wab_expr_html_text ol) { - white-space: inherit; - list-style-type: none; - padding: 0; -} - -:where(.ul) { - list-style-type: none; - padding: 0; -} -:where(.__wab_expr_html_text ul) { - white-space: inherit; - list-style-type: none; - padding: 0; -} - -:where(.select) { - padding: 2px 6px; -} -:where(.__wab_expr_html_text select) { - white-space: inherit; - padding: 2px 6px; -} - -.plasmic_default__component_wrapper { - display: grid; -} -.plasmic_default__inline { - display: inline; -} -.plasmic_page_wrapper { - display: flex; - width: 100%; - min-height: 100vh; - align-items: stretch; - align-self: start; -} -.plasmic_page_wrapper > * { - height: auto !important; -} -.__wab_expr_html_text { - white-space: normal; -} -:where(.root_reset) { - font-family: var(--mixin-qP3g6Hd5AdC_font-family); - font-size: var(--mixin-qP3g6Hd5AdC_font-size); - color: var(--mixin-qP3g6Hd5AdC_color); - line-height: var(--mixin-qP3g6Hd5AdC_line-height); - white-space: var(--mixin-qP3g6Hd5AdC_white-space); -} - -:where(.root_reset) a:where(.a), -a:where(.root_reset.a), -:where(.root_reset .__wab_expr_html_text) a, -:where(.root_reset_tags) a, -a:where(.root_reset_tags) { - color: var(--mixin-2zEfljePq9P_color); -} - -:where(.root_reset) a:where(.a):hover, -a:where(.root_reset.a):hover, -:where(.root_reset .__wab_expr_html_text) a:hover, -:where(.root_reset_tags) a:hover, -a:where(.root_reset_tags):hover { -} - -:where(.root_reset) h1:where(.h1), -h1:where(.root_reset.h1), -:where(.root_reset .__wab_expr_html_text) h1, -:where(.root_reset_tags) h1, -h1:where(.root_reset_tags) { - font-family: var(--mixin-YQD_Uc8Md__font-family); - font-size: var(--mixin-YQD_Uc8Md__font-size); - font-weight: var(--mixin-YQD_Uc8Md__font-weight); -} - -:where(.root_reset) h2:where(.h2), -h2:where(.root_reset.h2), -:where(.root_reset .__wab_expr_html_text) h2, -:where(.root_reset_tags) h2, -h2:where(.root_reset_tags) { - font-family: var(--mixin-vEOXQLfcbC_font-family); - font-size: var(--mixin-vEOXQLfcbC_font-size); - font-weight: var(--mixin-vEOXQLfcbC_font-weight); -} - -:where(.root_reset) h3:where(.h3), -h3:where(.root_reset.h3), -:where(.root_reset .__wab_expr_html_text) h3, -:where(.root_reset_tags) h3, -h3:where(.root_reset_tags) { - font-family: var(--mixin-EXCWDILscU_font-family); - font-size: var(--mixin-EXCWDILscU_font-size); - font-weight: var(--mixin-EXCWDILscU_font-weight); -} - -:where(.root_reset) h4:where(.h4), -h4:where(.root_reset.h4), -:where(.root_reset .__wab_expr_html_text) h4, -:where(.root_reset_tags) h4, -h4:where(.root_reset_tags) { - font-family: var(--mixin-N7cG0Ri48QP_font-family); - font-size: var(--mixin-N7cG0Ri48QP_font-size); - font-weight: var(--mixin-N7cG0Ri48QP_font-weight); -} - -:where(.root_reset) h5:where(.h5), -h5:where(.root_reset.h5), -:where(.root_reset .__wab_expr_html_text) h5, -:where(.root_reset_tags) h5, -h5:where(.root_reset_tags) { - font-family: var(--mixin-__gfw12lSVA_font-family); - font-size: var(--mixin-__gfw12lSVA_font-size); - font-weight: var(--mixin-__gfw12lSVA_font-weight); -} - -:where(.root_reset) h6:where(.h6), -h6:where(.root_reset.h6), -:where(.root_reset .__wab_expr_html_text) h6, -:where(.root_reset_tags) h6, -h6:where(.root_reset_tags) { - font-family: var(--mixin-eoQXVRNaCyL_font-family); - font-size: var(--mixin-eoQXVRNaCyL_font-size); - font-weight: var(--mixin-eoQXVRNaCyL_font-weight); -} - -:where(.root_reset) blockquote:where(.blockquote), -blockquote:where(.root_reset.blockquote), -:where(.root_reset .__wab_expr_html_text) blockquote, -:where(.root_reset_tags) blockquote, -blockquote:where(.root_reset_tags) { -} - -:where(.root_reset) code:where(.code), -code:where(.root_reset.code), -:where(.root_reset .__wab_expr_html_text) code, -:where(.root_reset_tags) code, -code:where(.root_reset_tags) { -} - -:where(.root_reset) pre:where(.pre), -pre:where(.root_reset.pre), -:where(.root_reset .__wab_expr_html_text) pre, -:where(.root_reset_tags) pre, -pre:where(.root_reset_tags) { -} - -:where(.root_reset) ol:where(.ol), -ol:where(.root_reset.ol), -:where(.root_reset .__wab_expr_html_text) ol, -:where(.root_reset_tags) ol, -ol:where(.root_reset_tags) { - position: var(--mixin-EuhGUWboGh2_position); -} - -:where(.root_reset) ul:where(.ul), -ul:where(.root_reset.ul), -:where(.root_reset .__wab_expr_html_text) ul, -:where(.root_reset_tags) ul, -ul:where(.root_reset_tags) { - position: var(--mixin-_MYD1z_SMDp_position); -} - -:where(.root_reset) a:where(.a):not(:hover), -a:where(.root_reset.a):not(:hover), -:where(.root_reset .__wab_expr_html_text) a:not(:hover), -:where(.root_reset_tags) a:not(:hover), -a:where(.root_reset_tags):not(:hover) { -} - -:where(.root_reset) a:where(.a):active, -a:where(.root_reset.a):active, -:where(.root_reset .__wab_expr_html_text) a:active, -:where(.root_reset_tags) a:active, -a:where(.root_reset_tags):active { -} - -:where(.root_reset) a:where(.a):not(:active), -a:where(.root_reset.a):not(:active), -:where(.root_reset .__wab_expr_html_text) a:not(:active), -:where(.root_reset_tags) a:not(:active), -a:where(.root_reset_tags):not(:active) { -} - -:where(.root_reset) a:where(.a):focus, -a:where(.root_reset.a):focus, -:where(.root_reset .__wab_expr_html_text) a:focus, -:where(.root_reset_tags) a:focus, -a:where(.root_reset_tags):focus { -} - -:where(.root_reset) a:where(.a):not(:link), -a:where(.root_reset.a):not(:link), -:where(.root_reset .__wab_expr_html_text) a:not(:link), -:where(.root_reset_tags) a:not(:link), -a:where(.root_reset_tags):not(:link) { -} - -:where(.root_reset) blockquote:where(.blockquote):not(:link), -blockquote:where(.root_reset.blockquote):not(:link), -:where(.root_reset .__wab_expr_html_text) blockquote:not(:link), -:where(.root_reset_tags) blockquote:not(:link), -blockquote:where(.root_reset_tags):not(:link) { -} - -:where(.root_reset) blockquote:where(.blockquote):hover, -blockquote:where(.root_reset.blockquote):hover, -:where(.root_reset .__wab_expr_html_text) blockquote:hover, -:where(.root_reset_tags) blockquote:hover, -blockquote:where(.root_reset_tags):hover { -} - -:where(.root_reset) code:where(.code):hover, -code:where(.root_reset.code):hover, -:where(.root_reset .__wab_expr_html_text) code:hover, -:where(.root_reset_tags) code:hover, -code:where(.root_reset_tags):hover { -} - -:where(.root_reset) li:where(.li), -li:where(.root_reset.li), -:where(.root_reset .__wab_expr_html_text) li, -:where(.root_reset_tags) li, -li:where(.root_reset_tags) { -} - -:where(.root_reset) p:where(.p), -p:where(.root_reset.p), -:where(.root_reset .__wab_expr_html_text) p, -:where(.root_reset_tags) p, -p:where(.root_reset_tags) { -} - -:where(.root_reset) ul:where(.ul):hover, -ul:where(.root_reset.ul):hover, -:where(.root_reset .__wab_expr_html_text) ul:hover, -:where(.root_reset_tags) ul:hover, -ul:where(.root_reset_tags):hover { -} - -:where(.root_reset) li:where(.li):hover, -li:where(.root_reset.li):hover, -:where(.root_reset .__wab_expr_html_text) li:hover, -:where(.root_reset_tags) li:hover, -li:where(.root_reset_tags):hover { -} diff --git a/platform/wab/src/wab/client/plasmic/PP__plasmickit_design_system.module.css b/platform/wab/src/wab/client/plasmic/PP__plasmickit_design_system.css similarity index 63% rename from platform/wab/src/wab/client/plasmic/PP__plasmickit_design_system.module.css rename to platform/wab/src/wab/client/plasmic/PP__plasmickit_design_system.css index 2d144ef5b6..80cfd1b412 100644 --- a/platform/wab/src/wab/client/plasmic/PP__plasmickit_design_system.module.css +++ b/platform/wab/src/wab/client/plasmic/PP__plasmickit_design_system.css @@ -1,6 +1,10 @@ -@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C600%3B0%2C700&family=IBM+Plex+Mono%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C600%3B0%2C700&display=swap"); +@import "./q_4_text_mixins_product/plasmic_q_4_text_mixins_product.css"; /* plasmic-import: sDniSX4oPUZFyk2sXXb3nh/projectcss */ +@import "./plasmic_kit_icons/plasmic_q_4_icons.css"; /* plasmic-import: oT38tGyqov9SPWHpf3Y2Rf/projectcss */ +@import "./plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; /* plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss */ +@import "./react_aria/plasmic.css"; /* plasmic-import: gmeH6XgPaBtkt51HunAo4g/projectcss */ +@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C600&family=IBM+Plex+Mono%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C600&display=swap"); -.plasmic_tokens { +.plasmic_tokens_tXkSR39sgCDWSitZxC5xFV { --token-aDa535tnF: 32px; --plasmic-token-list-item-height: var(--token-aDa535tnF); --token-G5TIO9SLc: 44px; @@ -9,10 +13,6 @@ --plasmic-token-list-item-h-padding: var(--token-NCc1lDy9R); --token-uzWT6AFCY: 8px; --plasmic-token-list-item-gap: var(--token-uzWT6AFCY); - --token-G18pc1ITl: var(--token-yqAf_E0HIjU); - --plasmic-token-active-bg: var(--token-G18pc1ITl); - --token-N3uwCfNqv: var(--token-D666zt2IZPL); - --plasmic-token-active-fg: var(--token-N3uwCfNqv); --token-YwPV7bN0RvD8: 0.25rem; --plasmic-token-size-4: var(--token-YwPV7bN0RvD8); --token-CVkj_k5wv-Vl: 2rem; @@ -21,15 +21,15 @@ --plasmic-token-size-10: var(--token-5RiZyijnOOJx); --token-CyMxORMQ0iY7: 0.375rem; --plasmic-token-size-6: var(--token-CyMxORMQ0iY7); - --token-RTPypKCJE4bm: #6b7280; + --token-RTPypKCJE4bm: var(--token-UunsGa2Y3t3); --plasmic-token-basic-text-secondary: var(--token-RTPypKCJE4bm); - --token-dED0FYPw-qtp: #030712; + --token-dED0FYPw-qtp: var(--token-0IloF6TmFvF); --plasmic-token-basic-text-primary: var(--token-dED0FYPw-qtp); --token-NQPeu56hWEVO: Inter; --plasmic-token-sans-serif: var(--token-NQPeu56hWEVO); --token-y-e1zIVKHJyd: 12px; --plasmic-token-font-md: var(--token-y-e1zIVKHJyd); - --token-wCNdq3-87nVE: 16px; + --token-wCNdq3-87nVE: 1.33; --plasmic-token-line-height-md: var(--token-wCNdq3-87nVE); --token-XviUmtZ5j0iF: 10px; --plasmic-token-font-sm: var(--token-XviUmtZ5j0iF); @@ -37,25 +37,25 @@ --plasmic-token-line-height-sm: var(--token-ND9WWUwuMDcO); --token-UgD7DVJpT4oO: 16px; --plasmic-token-font-lg: var(--token-UgD7DVJpT4oO); - --token-ArhjzHzow-J7: 1.4; + --token-ArhjzHzow-J7: 1.5; --plasmic-token-line-height-lg: var(--token-ArhjzHzow-J7); - --token-Le11TVejD2x2: #dc2626; + --token-Le11TVejD2x2: var(--token-S8OnTYk9S2Q); --plasmic-token-destructive-destructive: var(--token-Le11TVejD2x2); - --token-CE-OiWjNhspe: #d1d5db; + --token-CE-OiWjNhspe: var(--token-eBt2ZgqRUCz); --plasmic-token-basic-border: var(--token-CE-OiWjNhspe); - --token-iCBCh1BQyu-W: #f3f4f6; + --token-iCBCh1BQyu-W: var(--token-O4S7RMTqZ3); --plasmic-token-muted-muted-soft: var(--token-iCBCh1BQyu-W); - --token-11LpBV8ry6Ok: #e5e7eb; + --token-11LpBV8ry6Ok: var(--token-Ik3bdE1e1Uy); --plasmic-token-muted-muted-soft-hover: var(--token-11LpBV8ry6Ok); --token-vhXSTyxt_gU9: 0.125rem; --plasmic-token-size-2: var(--token-vhXSTyxt_gU9); --token-qP8a3gYPq7fd: var(--token-D666zt2IZPL); --plasmic-token-brand-brand: var(--token-qP8a3gYPq7fd); - --token-rqQDmopteQdV: #ffffff; + --token-rqQDmopteQdV: var(--token-iR8SeEwQZ); --plasmic-token-basic-container-background: var(--token-rqQDmopteQdV); --token-8b4HJYZr1yuK: 1rem; --plasmic-token-size-16: var(--token-8b4HJYZr1yuK); - --token-iaUWdd7UXRPg: #0a0a0a80; + --token-iaUWdd7UXRPg: var(--token-iRjO5KzKh1e_); --plasmic-token-basic-overlay-background: var(--token-iaUWdd7UXRPg); --token-1eDPHMktFbaJ: 1.5rem; --plasmic-token-size-24: var(--token-1eDPHMktFbaJ); @@ -63,70 +63,72 @@ --plasmic-token-size-12: var(--token-XnnXV8YSKg9w); --token-O2OprmOFWLju: 0.5rem; --plasmic-token-size-8: var(--token-O2OprmOFWLju); - --token-Hw7k5Z8h3fym: #374151; + --token-Hw7k5Z8h3fym: var(--token-0IloF6TmFvF); --plasmic-token-neutral-neutral: var(--token-Hw7k5Z8h3fym); - --token-1yZ4iP8JM_qY: #6b7280; + --token-1yZ4iP8JM_qY: var(--token-UunsGa2Y3t3); --plasmic-token-muted-muted: var(--token-1yZ4iP8JM_qY); - --token-8jpX_EM5efeC: #16a34a; + --token-8jpX_EM5efeC: var(--token-oI9RmKl5Rl_y); --plasmic-token-success-success: var(--token-8jpX_EM5efeC); - --token-7jp_etkt0vzn: #facc15; + --token-7jp_etkt0vzn: var(--token-DEbwNasuLfjs); --plasmic-token-warning-warning: var(--token-7jp_etkt0vzn); - --token-8MEyDjsqznQc: #dbeafe; + --token-8MEyDjsqznQc: var(--token-yqAf_E0HIjU); --plasmic-token-brand-brand-soft: var(--token-8MEyDjsqznQc); - --token-XEO_r628N6_d: #e5e7eb; + --token-XEO_r628N6_d: var(--token-Ik3bdE1e1Uy); --plasmic-token-neutral-neutral-soft: var(--token-XEO_r628N6_d); - --token-4mCd-gWqqsQ8: #dcfce7; + --token-4mCd-gWqqsQ8: var(--token-qEDJedw9WWX8); --plasmic-token-success-success-soft: var(--token-4mCd-gWqqsQ8); - --token-EkvAIUHn8RM1: #fef9c3; + --token-EkvAIUHn8RM1: var(--token-WsutfVbnQWpY); --plasmic-token-warning-warning-soft: var(--token-EkvAIUHn8RM1); - --token-iDYSCk74HNX3: #fee2e2; + --token-iDYSCk74HNX3: var(--token-SJeRSg5mW91); --plasmic-token-destructive-destructive-soft: var(--token-iDYSCk74HNX3); - --token-pXBQsVxA1Dpw: #93c5fd; + --token-pXBQsVxA1Dpw: var(--token-JfSQu2FXX0v); --plasmic-token-brand-brand-border: var(--token-pXBQsVxA1Dpw); - --token-JpKJ41ZaDWOC: #d1d5db; + --token-JpKJ41ZaDWOC: var(--token-eBt2ZgqRUCz); --plasmic-token-neutral-neutral-border: var(--token-JpKJ41ZaDWOC); - --token-wYC23OmDKq8S: #e5e7eb; + --token-wYC23OmDKq8S: var(--token-Ik3bdE1e1Uy); --plasmic-token-muted-muted-border: var(--token-wYC23OmDKq8S); - --token-A85r_SSHRqL9: #86efac; + --token-A85r_SSHRqL9: var(--token-LsPj_iMMTYwZ); --plasmic-token-success-success-border: var(--token-A85r_SSHRqL9); - --token-ZBGX7iAwODRl: #fde047; + --token-ZBGX7iAwODRl: var(--token-680C9kW9i_xC); --plasmic-token-warning-warning-border: var(--token-ZBGX7iAwODRl); - --token-ZzZPVo16MDIk: #fca5a5; + --token-ZzZPVo16MDIk: var(--token-pH5HkOAVcYh); --plasmic-token-destructive-destructive-border: var(--token-ZzZPVo16MDIk); - --token-HqN0ftKKGFre: #0000001a; + --token-HqN0ftKKGFre: var(--token-WbdRZ5gvp6S8); --plasmic-token-interaction-hovered: var(--token-HqN0ftKKGFre); - --token-lzUd2yT9mONr: #ffffff40; + --token-lzUd2yT9mONr: var(--token-oycAHZb9VWi-); --plasmic-token-interaction-disabled: var(--token-lzUd2yT9mONr); - --token-OpqgFV3u3Ad_: #00000033; + --token-OpqgFV3u3Ad_: var(--token-XeFw4MGauXBT); --plasmic-token-interaction-pressed: var(--token-OpqgFV3u3Ad_); - --token-sVzFDRV7ByQj: var(--token-yqAf_E0HIjU); + --token-sVzFDRV7ByQj: var(--token-5CkXgt-Rjud); --plasmic-token-brand-brand-foreground: var(--token-sVzFDRV7ByQj); - --token-9DPE9saBArps: #f9fafb; + --token-9DPE9saBArps: var(--token-9jh0BkCENS); --plasmic-token-neutral-neutral-foreground: var(--token-9DPE9saBArps); - --token-aQ6DNRLuvD-u: #e5e7eb; + --token-aQ6DNRLuvD-u: var(--token-Ik3bdE1e1Uy); --plasmic-token-muted-muted-foreground: var(--token-aQ6DNRLuvD-u); - --token-mwrqWBxg1aja: #1e3a8a; + --token-mwrqWBxg1aja: var(--token-VUsIDivgUss); --plasmic-token-brand-brand-soft-foreground: var(--token-mwrqWBxg1aja); - --token-wY6pUTGZH-gG: #422006; + --token-wY6pUTGZH-gG: var(--token-N-GFU-C_NPxa); --plasmic-token-warning-warning-foreground: var(--token-wY6pUTGZH-gG); - --token-Yqmgneul1IpY: #f0fdf4; + --token-Yqmgneul1IpY: var(--token-rUAnrnJzHqeS); --plasmic-token-success-success-foreground: var(--token-Yqmgneul1IpY); - --token-3r_KlvRSQfTH: #fef2f2; + --token-3r_KlvRSQfTH: var(--token-htSNbGB58Rx); --plasmic-token-destructive-destructive-foreground: var(--token-3r_KlvRSQfTH); - --token-DlB9CLEHEK7G: #111827; + --token-DlB9CLEHEK7G: var(--token-0IloF6TmFvF); --plasmic-token-neutral-neutral-soft-foreground: var(--token-DlB9CLEHEK7G); - --token-d_rM8tZD1AWX: #6b7280; + --token-d_rM8tZD1AWX: var(--token-UunsGa2Y3t3); --plasmic-token-muted-muted-soft-foreground: var(--token-d_rM8tZD1AWX); - --token-mN0b9x1xxRPK: #14532d; + --token-mN0b9x1xxRPK: var(--token-XIeN_eWjZN1j); --plasmic-token-success-success-soft-foreground: var(--token-mN0b9x1xxRPK); - --token-v_vgSZpIboN-: #713f12; + --token-v_vgSZpIboN-: var(--token-4bm4kJpqcRTD); --plasmic-token-warning-warning-soft-foreground: var(--token-v_vgSZpIboN-); - --token-2ziDTor6aAuH: #7f1d1d; + --token-2ziDTor6aAuH: var(--token-Ukdc99GMwtn); --plasmic-token-destructive-destructive-soft-foreground: var( --token-2ziDTor6aAuH ); - --token-7ojREB1C2lcs: #171717; + --token-7ojREB1C2lcs: var(--token-jVXWDIdVvlt); --plasmic-token-basic-container-background-dark: var(--token-7ojREB1C2lcs); + --token-WqsKGtAj1ZMI: #0091ff80; + --plasmic-token-focus-ring: var(--token-WqsKGtAj1ZMI); } .plasmic_default_styles { @@ -636,7 +638,7 @@ .__wab_expr_html_text { white-space: normal; } -:where(.root_reset) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) { font-family: var(--mixin-qP3g6Hd5AdC_font-family); font-size: var(--mixin-qP3g6Hd5AdC_font-size); color: var(--mixin-qP3g6Hd5AdC_color); @@ -644,198 +646,204 @@ white-space: var(--mixin-qP3g6Hd5AdC_white-space); } -:where(.root_reset) a:where(.a__tXkSR), -a:where(.root_reset.a__tXkSR), -:where(.root_reset .__wab_expr_html_text) a, -:where(.root_reset_tags) a, -a:where(.root_reset_tags) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) a:where(.a__tXkSR), +a:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.a__tXkSR), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) a, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) a, +a:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) { color: var(--mixin-2zEfljePq9P_color); } -:where(.root_reset) a:where(.a__tXkSR):hover, -a:where(.root_reset.a__tXkSR):hover, -:where(.root_reset .__wab_expr_html_text) a:hover, -:where(.root_reset_tags) a:hover, -a:where(.root_reset_tags):hover { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) a:where(.a__tXkSR):hover, +a:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.a__tXkSR):hover, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) a:hover, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) a:hover, +a:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags):hover { } -:where(.root_reset) h1:where(.h1__tXkSR), -h1:where(.root_reset.h1__tXkSR), -:where(.root_reset .__wab_expr_html_text) h1, -:where(.root_reset_tags) h1, -h1:where(.root_reset_tags) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) h1:where(.h1__tXkSR), +h1:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.h1__tXkSR), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) h1, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) h1, +h1:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) { font-family: var(--mixin-YQD_Uc8Md__font-family); font-size: var(--mixin-YQD_Uc8Md__font-size); font-weight: var(--mixin-YQD_Uc8Md__font-weight); } -:where(.root_reset) h2:where(.h2__tXkSR), -h2:where(.root_reset.h2__tXkSR), -:where(.root_reset .__wab_expr_html_text) h2, -:where(.root_reset_tags) h2, -h2:where(.root_reset_tags) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) h2:where(.h2__tXkSR), +h2:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.h2__tXkSR), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) h2, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) h2, +h2:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) { font-family: var(--mixin-vEOXQLfcbC_font-family); font-size: var(--mixin-vEOXQLfcbC_font-size); font-weight: var(--mixin-vEOXQLfcbC_font-weight); } -:where(.root_reset) h3:where(.h3__tXkSR), -h3:where(.root_reset.h3__tXkSR), -:where(.root_reset .__wab_expr_html_text) h3, -:where(.root_reset_tags) h3, -h3:where(.root_reset_tags) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) h3:where(.h3__tXkSR), +h3:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.h3__tXkSR), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) h3, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) h3, +h3:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) { font-family: var(--mixin-EXCWDILscU_font-family); font-size: var(--mixin-EXCWDILscU_font-size); font-weight: var(--mixin-EXCWDILscU_font-weight); } -:where(.root_reset) h4:where(.h4__tXkSR), -h4:where(.root_reset.h4__tXkSR), -:where(.root_reset .__wab_expr_html_text) h4, -:where(.root_reset_tags) h4, -h4:where(.root_reset_tags) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) h4:where(.h4__tXkSR), +h4:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.h4__tXkSR), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) h4, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) h4, +h4:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) { font-family: var(--mixin-N7cG0Ri48QP_font-family); font-size: var(--mixin-N7cG0Ri48QP_font-size); font-weight: var(--mixin-N7cG0Ri48QP_font-weight); } -:where(.root_reset) h5:where(.h5__tXkSR), -h5:where(.root_reset.h5__tXkSR), -:where(.root_reset .__wab_expr_html_text) h5, -:where(.root_reset_tags) h5, -h5:where(.root_reset_tags) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) h5:where(.h5__tXkSR), +h5:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.h5__tXkSR), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) h5, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) h5, +h5:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) { font-family: var(--mixin-__gfw12lSVA_font-family); font-size: var(--mixin-__gfw12lSVA_font-size); font-weight: var(--mixin-__gfw12lSVA_font-weight); } -:where(.root_reset) h6:where(.h6__tXkSR), -h6:where(.root_reset.h6__tXkSR), -:where(.root_reset .__wab_expr_html_text) h6, -:where(.root_reset_tags) h6, -h6:where(.root_reset_tags) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) h6:where(.h6__tXkSR), +h6:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.h6__tXkSR), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) h6, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) h6, +h6:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) { font-family: var(--mixin-eoQXVRNaCyL_font-family); font-size: var(--mixin-eoQXVRNaCyL_font-size); font-weight: var(--mixin-eoQXVRNaCyL_font-weight); } -:where(.root_reset) blockquote:where(.blockquote__tXkSR), -blockquote:where(.root_reset.blockquote__tXkSR), -:where(.root_reset .__wab_expr_html_text) blockquote, -:where(.root_reset_tags) blockquote, -blockquote:where(.root_reset_tags) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) blockquote:where(.blockquote__tXkSR), +blockquote:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.blockquote__tXkSR), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) blockquote, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) blockquote, +blockquote:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) { } -:where(.root_reset) code:where(.code__tXkSR), -code:where(.root_reset.code__tXkSR), -:where(.root_reset .__wab_expr_html_text) code, -:where(.root_reset_tags) code, -code:where(.root_reset_tags) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) code:where(.code__tXkSR), +code:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.code__tXkSR), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) code, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) code, +code:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) { } -:where(.root_reset) pre:where(.pre__tXkSR), -pre:where(.root_reset.pre__tXkSR), -:where(.root_reset .__wab_expr_html_text) pre, -:where(.root_reset_tags) pre, -pre:where(.root_reset_tags) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) pre:where(.pre__tXkSR), +pre:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.pre__tXkSR), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) pre, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) pre, +pre:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) { } -:where(.root_reset) ol:where(.ol__tXkSR), -ol:where(.root_reset.ol__tXkSR), -:where(.root_reset .__wab_expr_html_text) ol, -:where(.root_reset_tags) ol, -ol:where(.root_reset_tags) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) ol:where(.ol__tXkSR), +ol:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.ol__tXkSR), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) ol, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) ol, +ol:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) { position: var(--mixin-EuhGUWboGh2_position); } -:where(.root_reset) ul:where(.ul__tXkSR), -ul:where(.root_reset.ul__tXkSR), -:where(.root_reset .__wab_expr_html_text) ul, -:where(.root_reset_tags) ul, -ul:where(.root_reset_tags) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) ul:where(.ul__tXkSR), +ul:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.ul__tXkSR), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) ul, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) ul, +ul:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) { position: var(--mixin-_MYD1z_SMDp_position); } -:where(.root_reset) a:where(.a__tXkSR):not(:hover), -a:where(.root_reset.a__tXkSR):not(:hover), -:where(.root_reset .__wab_expr_html_text) a:not(:hover), -:where(.root_reset_tags) a:not(:hover), -a:where(.root_reset_tags):not(:hover) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) a:where(.a__tXkSR):not(:hover), +a:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.a__tXkSR):not(:hover), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) a:not(:hover), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) a:not(:hover), +a:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags):not(:hover) { } -:where(.root_reset) a:where(.a__tXkSR):active, -a:where(.root_reset.a__tXkSR):active, -:where(.root_reset .__wab_expr_html_text) a:active, -:where(.root_reset_tags) a:active, -a:where(.root_reset_tags):active { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) a:where(.a__tXkSR):active, +a:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.a__tXkSR):active, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) a:active, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) a:active, +a:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags):active { } -:where(.root_reset) a:where(.a__tXkSR):not(:active), -a:where(.root_reset.a__tXkSR):not(:active), -:where(.root_reset .__wab_expr_html_text) a:not(:active), -:where(.root_reset_tags) a:not(:active), -a:where(.root_reset_tags):not(:active) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) a:where(.a__tXkSR):not(:active), +a:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.a__tXkSR):not(:active), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) a:not(:active), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) a:not(:active), +a:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags):not(:active) { } -:where(.root_reset) a:where(.a__tXkSR):focus, -a:where(.root_reset.a__tXkSR):focus, -:where(.root_reset .__wab_expr_html_text) a:focus, -:where(.root_reset_tags) a:focus, -a:where(.root_reset_tags):focus { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) a:where(.a__tXkSR):focus, +a:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.a__tXkSR):focus, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) a:focus, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) a:focus, +a:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags):focus { } -:where(.root_reset) a:where(.a__tXkSR):not(:link), -a:where(.root_reset.a__tXkSR):not(:link), -:where(.root_reset .__wab_expr_html_text) a:not(:link), -:where(.root_reset_tags) a:not(:link), -a:where(.root_reset_tags):not(:link) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) a:where(.a__tXkSR):not(:link), +a:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.a__tXkSR):not(:link), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) a:not(:link), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) a:not(:link), +a:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags):not(:link) { } -:where(.root_reset) blockquote:where(.blockquote__tXkSR):not(:link), -blockquote:where(.root_reset.blockquote__tXkSR):not(:link), -:where(.root_reset .__wab_expr_html_text) blockquote:not(:link), -:where(.root_reset_tags) blockquote:not(:link), -blockquote:where(.root_reset_tags):not(:link) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) + blockquote:where(.blockquote__tXkSR):not(:link), +blockquote:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.blockquote__tXkSR):not( + :link + ), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) + blockquote:not(:link), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) blockquote:not(:link), +blockquote:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags):not(:link) { } -:where(.root_reset) blockquote:where(.blockquote__tXkSR):hover, -blockquote:where(.root_reset.blockquote__tXkSR):hover, -:where(.root_reset .__wab_expr_html_text) blockquote:hover, -:where(.root_reset_tags) blockquote:hover, -blockquote:where(.root_reset_tags):hover { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) + blockquote:where(.blockquote__tXkSR):hover, +blockquote:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.blockquote__tXkSR):hover, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) + blockquote:hover, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) blockquote:hover, +blockquote:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags):hover { } -:where(.root_reset) code:where(.code__tXkSR):hover, -code:where(.root_reset.code__tXkSR):hover, -:where(.root_reset .__wab_expr_html_text) code:hover, -:where(.root_reset_tags) code:hover, -code:where(.root_reset_tags):hover { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) code:where(.code__tXkSR):hover, +code:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.code__tXkSR):hover, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) code:hover, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) code:hover, +code:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags):hover { } -:where(.root_reset) li:where(.li__tXkSR), -li:where(.root_reset.li__tXkSR), -:where(.root_reset .__wab_expr_html_text) li, -:where(.root_reset_tags) li, -li:where(.root_reset_tags) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) li:where(.li__tXkSR), +li:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.li__tXkSR), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) li, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) li, +li:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) { } -:where(.root_reset) p:where(.p__tXkSR), -p:where(.root_reset.p__tXkSR), -:where(.root_reset .__wab_expr_html_text) p, -:where(.root_reset_tags) p, -p:where(.root_reset_tags) { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) p:where(.p__tXkSR), +p:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.p__tXkSR), +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) p, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) p, +p:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) { } -:where(.root_reset) ul:where(.ul__tXkSR):hover, -ul:where(.root_reset.ul__tXkSR):hover, -:where(.root_reset .__wab_expr_html_text) ul:hover, -:where(.root_reset_tags) ul:hover, -ul:where(.root_reset_tags):hover { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) ul:where(.ul__tXkSR):hover, +ul:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.ul__tXkSR):hover, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) ul:hover, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) ul:hover, +ul:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags):hover { } -:where(.root_reset) li:where(.li__tXkSR):hover, -li:where(.root_reset.li__tXkSR):hover, -:where(.root_reset .__wab_expr_html_text) li:hover, -:where(.root_reset_tags) li:hover, -li:where(.root_reset_tags):hover { +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV) li:where(.li__tXkSR):hover, +li:where(.root_reset_tXkSR39sgCDWSitZxC5xFV.li__tXkSR):hover, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV .__wab_expr_html_text) li:hover, +:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags) li:hover, +li:where(.root_reset_tXkSR39sgCDWSitZxC5xFV_tags):hover { } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/plasmic_plasmic_kit_cms.module.css b/platform/wab/src/wab/client/plasmic/PP__plasmickit_init_token.css similarity index 55% rename from platform/wab/src/wab/client/plasmic/plasmic_kit_cms/plasmic_plasmic_kit_cms.module.css rename to platform/wab/src/wab/client/plasmic/PP__plasmickit_init_token.css index eef18e712c..f65b003118 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/plasmic_plasmic_kit_cms.module.css +++ b/platform/wab/src/wab/client/plasmic/PP__plasmickit_init_token.css @@ -1,3 +1,7 @@ +@import "./PP__plasmickit_design_system.css"; /* plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss */ +@import "./plasmic_kit_icons/plasmic_q_4_icons.css"; /* plasmic-import: oT38tGyqov9SPWHpf3Y2Rf/projectcss */ +@import "./plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; /* plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss */ +@import "./q_4_text_mixins_product/plasmic_q_4_text_mixins_product.css"; /* plasmic-import: sDniSX4oPUZFyk2sXXb3nh/projectcss */ @import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C600&display=swap"); .plasmic_default_styles { @@ -418,7 +422,7 @@ .__wab_expr_html_text { white-space: normal; } -:where(.root_reset) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) { font-family: var(--mixin-qP3g6Hd5AdC_font-family); font-size: var(--mixin-qP3g6Hd5AdC_font-size); color: var(--mixin-qP3g6Hd5AdC_color); @@ -426,198 +430,204 @@ white-space: var(--mixin-qP3g6Hd5AdC_white-space); } -:where(.root_reset) a:where(.a), -a:where(.root_reset.a), -:where(.root_reset .__wab_expr_html_text) a, -:where(.root_reset_tags) a, -a:where(.root_reset_tags) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) a:where(.a__oYWs1), +a:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.a__oYWs1), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) a, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) a, +a:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) { color: var(--mixin-2zEfljePq9P_color); } -:where(.root_reset) a:where(.a):hover, -a:where(.root_reset.a):hover, -:where(.root_reset .__wab_expr_html_text) a:hover, -:where(.root_reset_tags) a:hover, -a:where(.root_reset_tags):hover { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) a:where(.a__oYWs1):hover, +a:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.a__oYWs1):hover, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) a:hover, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) a:hover, +a:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags):hover { } -:where(.root_reset) h1:where(.h1), -h1:where(.root_reset.h1), -:where(.root_reset .__wab_expr_html_text) h1, -:where(.root_reset_tags) h1, -h1:where(.root_reset_tags) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) h1:where(.h1__oYWs1), +h1:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.h1__oYWs1), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) h1, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) h1, +h1:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) { font-family: var(--mixin-YQD_Uc8Md__font-family); font-size: var(--mixin-YQD_Uc8Md__font-size); font-weight: var(--mixin-YQD_Uc8Md__font-weight); } -:where(.root_reset) h2:where(.h2), -h2:where(.root_reset.h2), -:where(.root_reset .__wab_expr_html_text) h2, -:where(.root_reset_tags) h2, -h2:where(.root_reset_tags) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) h2:where(.h2__oYWs1), +h2:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.h2__oYWs1), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) h2, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) h2, +h2:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) { font-family: var(--mixin-vEOXQLfcbC_font-family); font-size: var(--mixin-vEOXQLfcbC_font-size); font-weight: var(--mixin-vEOXQLfcbC_font-weight); } -:where(.root_reset) h3:where(.h3), -h3:where(.root_reset.h3), -:where(.root_reset .__wab_expr_html_text) h3, -:where(.root_reset_tags) h3, -h3:where(.root_reset_tags) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) h3:where(.h3__oYWs1), +h3:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.h3__oYWs1), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) h3, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) h3, +h3:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) { font-family: var(--mixin-EXCWDILscU_font-family); font-size: var(--mixin-EXCWDILscU_font-size); font-weight: var(--mixin-EXCWDILscU_font-weight); } -:where(.root_reset) h4:where(.h4), -h4:where(.root_reset.h4), -:where(.root_reset .__wab_expr_html_text) h4, -:where(.root_reset_tags) h4, -h4:where(.root_reset_tags) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) h4:where(.h4__oYWs1), +h4:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.h4__oYWs1), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) h4, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) h4, +h4:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) { font-family: var(--mixin-N7cG0Ri48QP_font-family); font-size: var(--mixin-N7cG0Ri48QP_font-size); font-weight: var(--mixin-N7cG0Ri48QP_font-weight); } -:where(.root_reset) h5:where(.h5), -h5:where(.root_reset.h5), -:where(.root_reset .__wab_expr_html_text) h5, -:where(.root_reset_tags) h5, -h5:where(.root_reset_tags) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) h5:where(.h5__oYWs1), +h5:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.h5__oYWs1), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) h5, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) h5, +h5:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) { font-family: var(--mixin-__gfw12lSVA_font-family); font-size: var(--mixin-__gfw12lSVA_font-size); font-weight: var(--mixin-__gfw12lSVA_font-weight); } -:where(.root_reset) h6:where(.h6), -h6:where(.root_reset.h6), -:where(.root_reset .__wab_expr_html_text) h6, -:where(.root_reset_tags) h6, -h6:where(.root_reset_tags) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) h6:where(.h6__oYWs1), +h6:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.h6__oYWs1), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) h6, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) h6, +h6:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) { font-family: var(--mixin-eoQXVRNaCyL_font-family); font-size: var(--mixin-eoQXVRNaCyL_font-size); font-weight: var(--mixin-eoQXVRNaCyL_font-weight); } -:where(.root_reset) blockquote:where(.blockquote), -blockquote:where(.root_reset.blockquote), -:where(.root_reset .__wab_expr_html_text) blockquote, -:where(.root_reset_tags) blockquote, -blockquote:where(.root_reset_tags) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) blockquote:where(.blockquote__oYWs1), +blockquote:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.blockquote__oYWs1), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) blockquote, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) blockquote, +blockquote:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) { } -:where(.root_reset) code:where(.code), -code:where(.root_reset.code), -:where(.root_reset .__wab_expr_html_text) code, -:where(.root_reset_tags) code, -code:where(.root_reset_tags) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) code:where(.code__oYWs1), +code:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.code__oYWs1), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) code, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) code, +code:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) { } -:where(.root_reset) pre:where(.pre), -pre:where(.root_reset.pre), -:where(.root_reset .__wab_expr_html_text) pre, -:where(.root_reset_tags) pre, -pre:where(.root_reset_tags) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) pre:where(.pre__oYWs1), +pre:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.pre__oYWs1), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) pre, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) pre, +pre:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) { } -:where(.root_reset) ol:where(.ol), -ol:where(.root_reset.ol), -:where(.root_reset .__wab_expr_html_text) ol, -:where(.root_reset_tags) ol, -ol:where(.root_reset_tags) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) ol:where(.ol__oYWs1), +ol:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.ol__oYWs1), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) ol, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) ol, +ol:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) { position: var(--mixin-EuhGUWboGh2_position); } -:where(.root_reset) ul:where(.ul), -ul:where(.root_reset.ul), -:where(.root_reset .__wab_expr_html_text) ul, -:where(.root_reset_tags) ul, -ul:where(.root_reset_tags) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) ul:where(.ul__oYWs1), +ul:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.ul__oYWs1), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) ul, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) ul, +ul:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) { position: var(--mixin-_MYD1z_SMDp_position); } -:where(.root_reset) a:where(.a):not(:hover), -a:where(.root_reset.a):not(:hover), -:where(.root_reset .__wab_expr_html_text) a:not(:hover), -:where(.root_reset_tags) a:not(:hover), -a:where(.root_reset_tags):not(:hover) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) a:where(.a__oYWs1):not(:hover), +a:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.a__oYWs1):not(:hover), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) a:not(:hover), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) a:not(:hover), +a:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags):not(:hover) { } -:where(.root_reset) a:where(.a):active, -a:where(.root_reset.a):active, -:where(.root_reset .__wab_expr_html_text) a:active, -:where(.root_reset_tags) a:active, -a:where(.root_reset_tags):active { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) a:where(.a__oYWs1):active, +a:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.a__oYWs1):active, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) a:active, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) a:active, +a:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags):active { } -:where(.root_reset) a:where(.a):not(:active), -a:where(.root_reset.a):not(:active), -:where(.root_reset .__wab_expr_html_text) a:not(:active), -:where(.root_reset_tags) a:not(:active), -a:where(.root_reset_tags):not(:active) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) a:where(.a__oYWs1):not(:active), +a:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.a__oYWs1):not(:active), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) a:not(:active), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) a:not(:active), +a:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags):not(:active) { } -:where(.root_reset) a:where(.a):focus, -a:where(.root_reset.a):focus, -:where(.root_reset .__wab_expr_html_text) a:focus, -:where(.root_reset_tags) a:focus, -a:where(.root_reset_tags):focus { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) a:where(.a__oYWs1):focus, +a:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.a__oYWs1):focus, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) a:focus, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) a:focus, +a:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags):focus { } -:where(.root_reset) a:where(.a):not(:link), -a:where(.root_reset.a):not(:link), -:where(.root_reset .__wab_expr_html_text) a:not(:link), -:where(.root_reset_tags) a:not(:link), -a:where(.root_reset_tags):not(:link) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) a:where(.a__oYWs1):not(:link), +a:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.a__oYWs1):not(:link), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) a:not(:link), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) a:not(:link), +a:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags):not(:link) { } -:where(.root_reset) blockquote:where(.blockquote):not(:link), -blockquote:where(.root_reset.blockquote):not(:link), -:where(.root_reset .__wab_expr_html_text) blockquote:not(:link), -:where(.root_reset_tags) blockquote:not(:link), -blockquote:where(.root_reset_tags):not(:link) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) + blockquote:where(.blockquote__oYWs1):not(:link), +blockquote:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.blockquote__oYWs1):not( + :link + ), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) + blockquote:not(:link), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) blockquote:not(:link), +blockquote:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags):not(:link) { } -:where(.root_reset) blockquote:where(.blockquote):hover, -blockquote:where(.root_reset.blockquote):hover, -:where(.root_reset .__wab_expr_html_text) blockquote:hover, -:where(.root_reset_tags) blockquote:hover, -blockquote:where(.root_reset_tags):hover { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) + blockquote:where(.blockquote__oYWs1):hover, +blockquote:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.blockquote__oYWs1):hover, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) + blockquote:hover, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) blockquote:hover, +blockquote:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags):hover { } -:where(.root_reset) code:where(.code):hover, -code:where(.root_reset.code):hover, -:where(.root_reset .__wab_expr_html_text) code:hover, -:where(.root_reset_tags) code:hover, -code:where(.root_reset_tags):hover { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) code:where(.code__oYWs1):hover, +code:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.code__oYWs1):hover, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) code:hover, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) code:hover, +code:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags):hover { } -:where(.root_reset) li:where(.li), -li:where(.root_reset.li), -:where(.root_reset .__wab_expr_html_text) li, -:where(.root_reset_tags) li, -li:where(.root_reset_tags) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) li:where(.li__oYWs1), +li:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.li__oYWs1), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) li, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) li, +li:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) { } -:where(.root_reset) p:where(.p), -p:where(.root_reset.p), -:where(.root_reset .__wab_expr_html_text) p, -:where(.root_reset_tags) p, -p:where(.root_reset_tags) { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) p:where(.p__oYWs1), +p:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.p__oYWs1), +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) p, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) p, +p:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) { } -:where(.root_reset) ul:where(.ul):hover, -ul:where(.root_reset.ul):hover, -:where(.root_reset .__wab_expr_html_text) ul:hover, -:where(.root_reset_tags) ul:hover, -ul:where(.root_reset_tags):hover { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) ul:where(.ul__oYWs1):hover, +ul:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.ul__oYWs1):hover, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) ul:hover, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) ul:hover, +ul:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags):hover { } -:where(.root_reset) li:where(.li):hover, -li:where(.root_reset.li):hover, -:where(.root_reset .__wab_expr_html_text) li:hover, -:where(.root_reset_tags) li:hover, -li:where(.root_reset_tags):hover { +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F) li:where(.li__oYWs1):hover, +li:where(.root_reset_oYWs1jXLUht24zyQBdCd5F.li__oYWs1):hover, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F .__wab_expr_html_text) li:hover, +:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags) li:hover, +li:where(.root_reset_oYWs1jXLUht24zyQBdCd5F_tags):hover { } diff --git a/platform/wab/src/wab/client/plasmic/PP__plasmickit_init_token.module.css b/platform/wab/src/wab/client/plasmic/PP__plasmickit_init_token.module.css deleted file mode 100644 index f0de18ef7f..0000000000 --- a/platform/wab/src/wab/client/plasmic/PP__plasmickit_init_token.module.css +++ /dev/null @@ -1,13 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400&display=swap"); -.root_reset { - font-family: "Inter", sans-serif; - font-size: 11px; - font-weight: 400; - font-style: normal; - color: #535353; - text-align: left; - text-transform: none; - line-height: 16px; - letter-spacing: normal; - white-space: pre-wrap; -} diff --git a/platform/wab/src/wab/client/plasmic/PP__plasmickit_left_pane.css b/platform/wab/src/wab/client/plasmic/PP__plasmickit_left_pane.css new file mode 100644 index 0000000000..9a192d86af --- /dev/null +++ b/platform/wab/src/wab/client/plasmic/PP__plasmickit_left_pane.css @@ -0,0 +1,644 @@ +@import "./PP__plasmickit_design_system.css"; /* plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss */ +@import "./plasmic_kit_icons/plasmic_q_4_icons.css"; /* plasmic-import: oT38tGyqov9SPWHpf3Y2Rf/projectcss */ +@import "./plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; /* plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss */ +@import "./q_4_text_mixins_product/plasmic_q_4_text_mixins_product.css"; /* plasmic-import: sDniSX4oPUZFyk2sXXb3nh/projectcss */ +@import "./plasmic_kit_style_controls/plasmic_plasmic_kit_styles_pane.css"; /* plasmic-import: gYEVvAzCcLMHDVPvuYxkFh/projectcss */ +@import "./plasmic_embed_css/plasmic_plasmic_embed_css.css"; /* plasmic-import: 8PtdGodUbexNYgkuyBUcWu/projectcss */ +@import "./react_aria/plasmic.css"; /* plasmic-import: gmeH6XgPaBtkt51HunAo4g/projectcss */ +@import "./plasmic_basic_components/plasmic_plasmic_basic_components.css"; /* plasmic-import: caTPwKxj5ZrD9LQ7DMdK4Z/projectcss */ +@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C600%3B0%2C700&display=swap"); + +.plasmic_default_styles { + --mixin-qP3g6Hd5AdC_text-decoration-line: none; + --mixin-qP3g6Hd5AdC_font-family: "Inter", sans-serif; + --mixin-qP3g6Hd5AdC_color: var(--token-0IloF6TmFvF); + --mixin-qP3g6Hd5AdC_font-size: 12px; + --mixin-qP3g6Hd5AdC_white-space: pre-wrap; + --mixin-qP3g6Hd5AdC_line-height: 1.5; + --mixin-2zEfljePq9P_color: var(--token-VUsIDivgUss); + --mixin-2zEfljePq9P_white-space: pre-wrap; + --mixin-EEKi5Tu2fbK_white-space: pre-wrap; + --mixin-YQD_Uc8Md__font-family: "Inter", sans-serif; + --mixin-YQD_Uc8Md__font-size: 72px; + --mixin-YQD_Uc8Md__font-weight: 500; + --mixin-YQD_Uc8Md__white-space: pre-wrap; + --mixin-vEOXQLfcbC_font-family: "Inter", sans-serif; + --mixin-vEOXQLfcbC_font-size: 48px; + --mixin-vEOXQLfcbC_font-weight: 500; + --mixin-vEOXQLfcbC_white-space: pre-wrap; + --mixin-EXCWDILscU_font-family: "Inter", sans-serif; + --mixin-EXCWDILscU_font-size: 32px; + --mixin-EXCWDILscU_font-weight: 500; + --mixin-EXCWDILscU_white-space: pre-wrap; + --mixin-N7cG0Ri48QP_font-family: "Inter", sans-serif; + --mixin-N7cG0Ri48QP_font-size: 24px; + --mixin-N7cG0Ri48QP_font-weight: 500; + --mixin-N7cG0Ri48QP_white-space: pre-wrap; + --mixin-__gfw12lSVA_font-family: "Inter", sans-serif; + --mixin-__gfw12lSVA_font-size: 20px; + --mixin-__gfw12lSVA_font-weight: 500; + --mixin-__gfw12lSVA_white-space: pre-wrap; + --mixin-eoQXVRNaCyL_font-family: "Inter", sans-serif; + --mixin-eoQXVRNaCyL_font-size: 16px; + --mixin-eoQXVRNaCyL_font-weight: 500; + --mixin-eoQXVRNaCyL_white-space: pre-wrap; + --mixin-fkU_lzw4PF5_white-space: pre-wrap; + --mixin-v9e0yiTlX_o_white-space: pre-wrap; + --mixin-MMatKfNT024_white-space: pre-wrap; + --mixin-EuhGUWboGh2_position: relative; + --mixin-EuhGUWboGh2_white-space: pre-wrap; + --mixin-_MYD1z_SMDp_position: relative; + --mixin-_MYD1z_SMDp_white-space: pre-wrap; + --mixin-Yot8xJYsc_white-space: pre-wrap; + --mixin-985HZFQW4_white-space: pre-wrap; + --mixin-3i6_2FI7G_white-space: pre-wrap; + --mixin-3HZrBcpB6_white-space: pre-wrap; + --mixin-n1REaG4FH_white-space: pre-wrap; + --mixin-Hk5zzHaLS_white-space: pre-wrap; + --mixin-B4DR1AgPG_white-space: pre-wrap; + --mixin-bhSle9dw7_white-space: pre-wrap; + --mixin-5d8gGYi39_white-space: pre-wrap; + --mixin-sxjZ0YFFF_white-space: pre-wrap; + --mixin-GZm4AQ_Ek_white-space: pre-wrap; + --mixin-qjB654aOL_white-space: pre-wrap; +} + +.plasmic_mixins { + --mixin-eeky5Y8An_white-space: pre-wrap; + --plasmic-mixin-overlay-box-container_white-space: var( + --mixin-eeky5Y8An_white-space + ); +} + +:where(.all) { + display: block; + white-space: inherit; + grid-row: auto; + grid-column: auto; + position: relative; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + text-decoration-line: none; + margin: 0; + border-width: 0px; +} +:where(.__wab_expr_html_text *) { + white-space: inherit; + grid-row: auto; + grid-column: auto; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + margin: 0; + border-width: 0px; +} + +:where(.img) { + display: inline-block; +} +:where(.__wab_expr_html_text img) { + white-space: inherit; +} + +:where(.li) { + display: list-item; +} +:where(.__wab_expr_html_text li) { + white-space: inherit; +} + +:where(.span) { + display: inline; + position: static; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text span) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.input) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text input) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} + +:where(.textarea) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text textarea) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} + +:where(.button) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text button) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} + +:where(.code) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text code) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.pre) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text pre) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.p) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text p) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.i) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text i) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.em) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text em) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.strong) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text strong) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.h1) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h1) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h2) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h2) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h3) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h3) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h4) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h4) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h5) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h5) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h6) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h6) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.address) { + font-style: inherit; +} +:where(.__wab_expr_html_text address) { + white-space: inherit; + font-style: inherit; +} + +:where(.a) { + color: inherit; +} +:where(.__wab_expr_html_text a) { + white-space: inherit; + color: inherit; +} + +:where(.ol) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ol) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.ul) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ul) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.select) { + padding: 2px 6px; +} +:where(.__wab_expr_html_text select) { + white-space: inherit; + padding: 2px 6px; +} + +.plasmic_default__component_wrapper { + display: grid; +} +.plasmic_default__inline { + display: inline; +} +.plasmic_page_wrapper { + display: flex; + width: 100%; + min-height: 100vh; + align-items: stretch; + align-self: start; +} +.plasmic_page_wrapper > * { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) { + font-family: var(--mixin-qP3g6Hd5AdC_font-family); + font-size: var(--mixin-qP3g6Hd5AdC_font-size); + color: var(--mixin-qP3g6Hd5AdC_color); + line-height: var(--mixin-qP3g6Hd5AdC_line-height); + white-space: var(--mixin-qP3g6Hd5AdC_white-space); +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) a:where(.a__aukbr), +a:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.a__aukbr), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) a, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) a, +a:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) { + color: var(--mixin-2zEfljePq9P_color); +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) a:where(.a__aukbr):hover, +a:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.a__aukbr):hover, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) a:hover, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) a:hover, +a:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags):hover { +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) h1:where(.h1__aukbr), +h1:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.h1__aukbr), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) h1, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) h1, +h1:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) { + font-family: var(--mixin-YQD_Uc8Md__font-family); + font-size: var(--mixin-YQD_Uc8Md__font-size); + font-weight: var(--mixin-YQD_Uc8Md__font-weight); +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) h2:where(.h2__aukbr), +h2:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.h2__aukbr), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) h2, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) h2, +h2:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) { + font-family: var(--mixin-vEOXQLfcbC_font-family); + font-size: var(--mixin-vEOXQLfcbC_font-size); + font-weight: var(--mixin-vEOXQLfcbC_font-weight); +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) h3:where(.h3__aukbr), +h3:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.h3__aukbr), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) h3, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) h3, +h3:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) { + font-family: var(--mixin-EXCWDILscU_font-family); + font-size: var(--mixin-EXCWDILscU_font-size); + font-weight: var(--mixin-EXCWDILscU_font-weight); +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) h4:where(.h4__aukbr), +h4:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.h4__aukbr), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) h4, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) h4, +h4:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) { + font-family: var(--mixin-N7cG0Ri48QP_font-family); + font-size: var(--mixin-N7cG0Ri48QP_font-size); + font-weight: var(--mixin-N7cG0Ri48QP_font-weight); +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) h5:where(.h5__aukbr), +h5:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.h5__aukbr), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) h5, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) h5, +h5:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) { + font-family: var(--mixin-__gfw12lSVA_font-family); + font-size: var(--mixin-__gfw12lSVA_font-size); + font-weight: var(--mixin-__gfw12lSVA_font-weight); +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) h6:where(.h6__aukbr), +h6:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.h6__aukbr), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) h6, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) h6, +h6:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) { + font-family: var(--mixin-eoQXVRNaCyL_font-family); + font-size: var(--mixin-eoQXVRNaCyL_font-size); + font-weight: var(--mixin-eoQXVRNaCyL_font-weight); +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) blockquote:where(.blockquote__aukbr), +blockquote:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.blockquote__aukbr), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) blockquote, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) blockquote, +blockquote:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) { +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) code:where(.code__aukbr), +code:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.code__aukbr), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) code, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) code, +code:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) { +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) pre:where(.pre__aukbr), +pre:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.pre__aukbr), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) pre, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) pre, +pre:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) { +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) ol:where(.ol__aukbr), +ol:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.ol__aukbr), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) ol, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) ol, +ol:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) { + position: var(--mixin-EuhGUWboGh2_position); +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) ul:where(.ul__aukbr), +ul:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.ul__aukbr), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) ul, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) ul, +ul:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) { + position: var(--mixin-_MYD1z_SMDp_position); +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) a:where(.a__aukbr):not(:hover), +a:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.a__aukbr):not(:hover), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) a:not(:hover), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) a:not(:hover), +a:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags):not(:hover) { +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) a:where(.a__aukbr):active, +a:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.a__aukbr):active, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) a:active, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) a:active, +a:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags):active { +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) a:where(.a__aukbr):not(:active), +a:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.a__aukbr):not(:active), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) a:not(:active), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) a:not(:active), +a:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags):not(:active) { +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) a:where(.a__aukbr):focus, +a:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.a__aukbr):focus, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) a:focus, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) a:focus, +a:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags):focus { +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) a:where(.a__aukbr):not(:link), +a:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.a__aukbr):not(:link), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) a:not(:link), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) a:not(:link), +a:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags):not(:link) { +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) + blockquote:where(.blockquote__aukbr):not(:link), +blockquote:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.blockquote__aukbr):not( + :link + ), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) + blockquote:not(:link), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) blockquote:not(:link), +blockquote:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags):not(:link) { +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) + blockquote:where(.blockquote__aukbr):hover, +blockquote:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.blockquote__aukbr):hover, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) + blockquote:hover, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) blockquote:hover, +blockquote:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags):hover { +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) code:where(.code__aukbr):hover, +code:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.code__aukbr):hover, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) code:hover, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) code:hover, +code:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags):hover { +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) li:where(.li__aukbr), +li:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.li__aukbr), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) li, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) li, +li:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) { +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) p:where(.p__aukbr), +p:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.p__aukbr), +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) p, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) p, +p:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) { +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) ul:where(.ul__aukbr):hover, +ul:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.ul__aukbr):hover, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) ul:hover, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) ul:hover, +ul:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags):hover { +} + +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT) li:where(.li__aukbr):hover, +li:where(.root_reset_aukbrhkegRkQ6KizvhdUPT.li__aukbr):hover, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT .__wab_expr_html_text) li:hover, +:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags) li:hover, +li:where(.root_reset_aukbrhkegRkQ6KizvhdUPT_tags):hover { +} diff --git a/platform/wab/src/wab/client/plasmic/PP__plasmickit_left_pane.module.css b/platform/wab/src/wab/client/plasmic/PP__plasmickit_left_pane.module.css deleted file mode 100644 index a5b09d2490..0000000000 --- a/platform/wab/src/wab/client/plasmic/PP__plasmickit_left_pane.module.css +++ /dev/null @@ -1,578 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C600%3B0%2C700&display=swap"); - -.plasmic_default_styles { - --mixin-qP3g6Hd5AdC_text-decoration-line: none; - --mixin-qP3g6Hd5AdC_font-family: "Inter", sans-serif; - --mixin-qP3g6Hd5AdC_color: var(--token-0IloF6TmFvF); - --mixin-qP3g6Hd5AdC_font-size: 12px; - --mixin-qP3g6Hd5AdC_white-space: pre-wrap; - --mixin-qP3g6Hd5AdC_line-height: 1.5; - --mixin-2zEfljePq9P_color: var(--token-VUsIDivgUss); - --mixin-2zEfljePq9P_white-space: pre-wrap; - --mixin-EEKi5Tu2fbK_white-space: pre-wrap; - --mixin-YQD_Uc8Md__font-family: "Inter", sans-serif; - --mixin-YQD_Uc8Md__font-size: 72px; - --mixin-YQD_Uc8Md__font-weight: 500; - --mixin-YQD_Uc8Md__white-space: pre-wrap; - --mixin-vEOXQLfcbC_font-family: "Inter", sans-serif; - --mixin-vEOXQLfcbC_font-size: 48px; - --mixin-vEOXQLfcbC_font-weight: 500; - --mixin-vEOXQLfcbC_white-space: pre-wrap; - --mixin-EXCWDILscU_font-family: "Inter", sans-serif; - --mixin-EXCWDILscU_font-size: 32px; - --mixin-EXCWDILscU_font-weight: 500; - --mixin-EXCWDILscU_white-space: pre-wrap; - --mixin-N7cG0Ri48QP_font-family: "Inter", sans-serif; - --mixin-N7cG0Ri48QP_font-size: 24px; - --mixin-N7cG0Ri48QP_font-weight: 500; - --mixin-N7cG0Ri48QP_white-space: pre-wrap; - --mixin-__gfw12lSVA_font-family: "Inter", sans-serif; - --mixin-__gfw12lSVA_font-size: 20px; - --mixin-__gfw12lSVA_font-weight: 500; - --mixin-__gfw12lSVA_white-space: pre-wrap; - --mixin-eoQXVRNaCyL_font-family: "Inter", sans-serif; - --mixin-eoQXVRNaCyL_font-size: 16px; - --mixin-eoQXVRNaCyL_font-weight: 500; - --mixin-eoQXVRNaCyL_white-space: pre-wrap; - --mixin-fkU_lzw4PF5_white-space: pre-wrap; - --mixin-v9e0yiTlX_o_white-space: pre-wrap; - --mixin-MMatKfNT024_white-space: pre-wrap; - --mixin-EuhGUWboGh2_position: relative; - --mixin-EuhGUWboGh2_white-space: pre-wrap; - --mixin-_MYD1z_SMDp_position: relative; - --mixin-_MYD1z_SMDp_white-space: pre-wrap; - --mixin-Yot8xJYsc_white-space: pre-wrap; - --mixin-985HZFQW4_white-space: pre-wrap; - --mixin-3i6_2FI7G_white-space: pre-wrap; - --mixin-3HZrBcpB6_white-space: pre-wrap; - --mixin-n1REaG4FH_white-space: pre-wrap; - --mixin-Hk5zzHaLS_white-space: pre-wrap; - --mixin-B4DR1AgPG_white-space: pre-wrap; - --mixin-bhSle9dw7_white-space: pre-wrap; - --mixin-5d8gGYi39_white-space: pre-wrap; - --mixin-sxjZ0YFFF_white-space: pre-wrap; - --mixin-GZm4AQ_Ek_white-space: pre-wrap; - --mixin-qjB654aOL_white-space: pre-wrap; -} - -.plasmic_mixins { - --mixin-eeky5Y8An_white-space: pre-wrap; - --plasmic-mixin-overlay-box-container_white-space: var( - --mixin-eeky5Y8An_white-space - ); -} - -:where(.all) { - display: block; - white-space: inherit; - grid-row: auto; - grid-column: auto; - position: relative; - background: none; - background-size: 100% 100%; - background-repeat: no-repeat; - row-gap: 0px; - column-gap: 0px; - box-shadow: none; - box-sizing: border-box; - text-decoration-line: none; - margin: 0; - border-width: 0px; -} -:where(.__wab_expr_html_text *) { - white-space: inherit; - grid-row: auto; - grid-column: auto; - background: none; - background-size: 100% 100%; - background-repeat: no-repeat; - row-gap: 0px; - column-gap: 0px; - box-shadow: none; - box-sizing: border-box; - margin: 0; - border-width: 0px; -} - -:where(.img) { - display: inline-block; -} -:where(.__wab_expr_html_text img) { - white-space: inherit; -} - -:where(.li) { - display: list-item; -} -:where(.__wab_expr_html_text li) { - white-space: inherit; -} - -:where(.span) { - display: inline; - position: static; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} -:where(.__wab_expr_html_text span) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} - -:where(.input) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: linear-gradient(#ffffff, #ffffff); - padding: 2px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text input) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: linear-gradient(#ffffff, #ffffff); - padding: 2px; - border: 1px solid lightgray; -} - -:where(.textarea) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - padding: 2px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text textarea) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - padding: 2px; - border: 1px solid lightgray; -} - -:where(.button) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: none; - align-items: flex-start; - text-align: center; - padding: 2px 6px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text button) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: none; - align-items: flex-start; - text-align: center; - padding: 2px 6px; - border: 1px solid lightgray; -} - -:where(.code) { - font-family: inherit; - line-height: inherit; -} -:where(.__wab_expr_html_text code) { - white-space: inherit; - font-family: inherit; - line-height: inherit; -} - -:where(.pre) { - font-family: inherit; - line-height: inherit; -} -:where(.__wab_expr_html_text pre) { - white-space: inherit; - font-family: inherit; - line-height: inherit; -} - -:where(.p) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} -:where(.__wab_expr_html_text p) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} - -:where(.h1) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h1) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h2) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h2) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h3) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h3) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h4) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h4) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h5) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h5) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h6) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h6) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.address) { - font-style: inherit; -} -:where(.__wab_expr_html_text address) { - white-space: inherit; - font-style: inherit; -} - -:where(.a) { - color: inherit; -} -:where(.__wab_expr_html_text a) { - white-space: inherit; - color: inherit; -} - -:where(.ol) { - list-style-type: none; - padding: 0; -} -:where(.__wab_expr_html_text ol) { - white-space: inherit; - list-style-type: none; - padding: 0; -} - -:where(.ul) { - list-style-type: none; - padding: 0; -} -:where(.__wab_expr_html_text ul) { - white-space: inherit; - list-style-type: none; - padding: 0; -} - -:where(.select) { - padding: 2px 6px; -} -:where(.__wab_expr_html_text select) { - white-space: inherit; - padding: 2px 6px; -} - -.plasmic_default__component_wrapper { - display: grid; -} -.plasmic_default__inline { - display: inline; -} -.plasmic_page_wrapper { - display: flex; - width: 100%; - min-height: 100vh; - align-items: stretch; - align-self: start; -} -.plasmic_page_wrapper > * { - height: auto !important; -} -.__wab_expr_html_text { - white-space: normal; -} -:where(.root_reset) { - font-family: var(--mixin-qP3g6Hd5AdC_font-family); - font-size: var(--mixin-qP3g6Hd5AdC_font-size); - color: var(--mixin-qP3g6Hd5AdC_color); - line-height: var(--mixin-qP3g6Hd5AdC_line-height); - white-space: var(--mixin-qP3g6Hd5AdC_white-space); -} - -:where(.root_reset) a:where(.a), -a:where(.root_reset.a), -:where(.root_reset .__wab_expr_html_text) a, -:where(.root_reset_tags) a, -a:where(.root_reset_tags) { - color: var(--mixin-2zEfljePq9P_color); -} - -:where(.root_reset) a:where(.a):hover, -a:where(.root_reset.a):hover, -:where(.root_reset .__wab_expr_html_text) a:hover, -:where(.root_reset_tags) a:hover, -a:where(.root_reset_tags):hover { -} - -:where(.root_reset) h1:where(.h1), -h1:where(.root_reset.h1), -:where(.root_reset .__wab_expr_html_text) h1, -:where(.root_reset_tags) h1, -h1:where(.root_reset_tags) { - font-family: var(--mixin-YQD_Uc8Md__font-family); - font-size: var(--mixin-YQD_Uc8Md__font-size); - font-weight: var(--mixin-YQD_Uc8Md__font-weight); -} - -:where(.root_reset) h2:where(.h2), -h2:where(.root_reset.h2), -:where(.root_reset .__wab_expr_html_text) h2, -:where(.root_reset_tags) h2, -h2:where(.root_reset_tags) { - font-family: var(--mixin-vEOXQLfcbC_font-family); - font-size: var(--mixin-vEOXQLfcbC_font-size); - font-weight: var(--mixin-vEOXQLfcbC_font-weight); -} - -:where(.root_reset) h3:where(.h3), -h3:where(.root_reset.h3), -:where(.root_reset .__wab_expr_html_text) h3, -:where(.root_reset_tags) h3, -h3:where(.root_reset_tags) { - font-family: var(--mixin-EXCWDILscU_font-family); - font-size: var(--mixin-EXCWDILscU_font-size); - font-weight: var(--mixin-EXCWDILscU_font-weight); -} - -:where(.root_reset) h4:where(.h4), -h4:where(.root_reset.h4), -:where(.root_reset .__wab_expr_html_text) h4, -:where(.root_reset_tags) h4, -h4:where(.root_reset_tags) { - font-family: var(--mixin-N7cG0Ri48QP_font-family); - font-size: var(--mixin-N7cG0Ri48QP_font-size); - font-weight: var(--mixin-N7cG0Ri48QP_font-weight); -} - -:where(.root_reset) h5:where(.h5), -h5:where(.root_reset.h5), -:where(.root_reset .__wab_expr_html_text) h5, -:where(.root_reset_tags) h5, -h5:where(.root_reset_tags) { - font-family: var(--mixin-__gfw12lSVA_font-family); - font-size: var(--mixin-__gfw12lSVA_font-size); - font-weight: var(--mixin-__gfw12lSVA_font-weight); -} - -:where(.root_reset) h6:where(.h6), -h6:where(.root_reset.h6), -:where(.root_reset .__wab_expr_html_text) h6, -:where(.root_reset_tags) h6, -h6:where(.root_reset_tags) { - font-family: var(--mixin-eoQXVRNaCyL_font-family); - font-size: var(--mixin-eoQXVRNaCyL_font-size); - font-weight: var(--mixin-eoQXVRNaCyL_font-weight); -} - -:where(.root_reset) blockquote:where(.blockquote), -blockquote:where(.root_reset.blockquote), -:where(.root_reset .__wab_expr_html_text) blockquote, -:where(.root_reset_tags) blockquote, -blockquote:where(.root_reset_tags) { -} - -:where(.root_reset) code:where(.code), -code:where(.root_reset.code), -:where(.root_reset .__wab_expr_html_text) code, -:where(.root_reset_tags) code, -code:where(.root_reset_tags) { -} - -:where(.root_reset) pre:where(.pre), -pre:where(.root_reset.pre), -:where(.root_reset .__wab_expr_html_text) pre, -:where(.root_reset_tags) pre, -pre:where(.root_reset_tags) { -} - -:where(.root_reset) ol:where(.ol), -ol:where(.root_reset.ol), -:where(.root_reset .__wab_expr_html_text) ol, -:where(.root_reset_tags) ol, -ol:where(.root_reset_tags) { - position: var(--mixin-EuhGUWboGh2_position); -} - -:where(.root_reset) ul:where(.ul), -ul:where(.root_reset.ul), -:where(.root_reset .__wab_expr_html_text) ul, -:where(.root_reset_tags) ul, -ul:where(.root_reset_tags) { - position: var(--mixin-_MYD1z_SMDp_position); -} - -:where(.root_reset) a:where(.a):not(:hover), -a:where(.root_reset.a):not(:hover), -:where(.root_reset .__wab_expr_html_text) a:not(:hover), -:where(.root_reset_tags) a:not(:hover), -a:where(.root_reset_tags):not(:hover) { -} - -:where(.root_reset) a:where(.a):active, -a:where(.root_reset.a):active, -:where(.root_reset .__wab_expr_html_text) a:active, -:where(.root_reset_tags) a:active, -a:where(.root_reset_tags):active { -} - -:where(.root_reset) a:where(.a):not(:active), -a:where(.root_reset.a):not(:active), -:where(.root_reset .__wab_expr_html_text) a:not(:active), -:where(.root_reset_tags) a:not(:active), -a:where(.root_reset_tags):not(:active) { -} - -:where(.root_reset) a:where(.a):focus, -a:where(.root_reset.a):focus, -:where(.root_reset .__wab_expr_html_text) a:focus, -:where(.root_reset_tags) a:focus, -a:where(.root_reset_tags):focus { -} - -:where(.root_reset) a:where(.a):not(:link), -a:where(.root_reset.a):not(:link), -:where(.root_reset .__wab_expr_html_text) a:not(:link), -:where(.root_reset_tags) a:not(:link), -a:where(.root_reset_tags):not(:link) { -} - -:where(.root_reset) blockquote:where(.blockquote):not(:link), -blockquote:where(.root_reset.blockquote):not(:link), -:where(.root_reset .__wab_expr_html_text) blockquote:not(:link), -:where(.root_reset_tags) blockquote:not(:link), -blockquote:where(.root_reset_tags):not(:link) { -} - -:where(.root_reset) blockquote:where(.blockquote):hover, -blockquote:where(.root_reset.blockquote):hover, -:where(.root_reset .__wab_expr_html_text) blockquote:hover, -:where(.root_reset_tags) blockquote:hover, -blockquote:where(.root_reset_tags):hover { -} - -:where(.root_reset) code:where(.code):hover, -code:where(.root_reset.code):hover, -:where(.root_reset .__wab_expr_html_text) code:hover, -:where(.root_reset_tags) code:hover, -code:where(.root_reset_tags):hover { -} - -:where(.root_reset) li:where(.li), -li:where(.root_reset.li), -:where(.root_reset .__wab_expr_html_text) li, -:where(.root_reset_tags) li, -li:where(.root_reset_tags) { -} - -:where(.root_reset) p:where(.p), -p:where(.root_reset.p), -:where(.root_reset .__wab_expr_html_text) p, -:where(.root_reset_tags) p, -p:where(.root_reset_tags) { -} - -:where(.root_reset) ul:where(.ul):hover, -ul:where(.root_reset.ul):hover, -:where(.root_reset .__wab_expr_html_text) ul:hover, -:where(.root_reset_tags) ul:hover, -ul:where(.root_reset_tags):hover { -} - -:where(.root_reset) li:where(.li):hover, -li:where(.root_reset.li):hover, -:where(.root_reset .__wab_expr_html_text) li:hover, -:where(.root_reset_tags) li:hover, -li:where(.root_reset_tags):hover { -} diff --git a/platform/wab/src/wab/client/plasmic/PP__plasmickit_settings.css b/platform/wab/src/wab/client/plasmic/PP__plasmickit_settings.css new file mode 100644 index 0000000000..7e0b2f54b3 --- /dev/null +++ b/platform/wab/src/wab/client/plasmic/PP__plasmickit_settings.css @@ -0,0 +1,652 @@ +@import "./PP__plasmickit_design_system.css"; /* plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss */ +@import "./q_4_text_mixins_product/plasmic_q_4_text_mixins_product.css"; /* plasmic-import: sDniSX4oPUZFyk2sXXb3nh/projectcss */ +@import "./plasmic_kit_icons/plasmic_q_4_icons.css"; /* plasmic-import: oT38tGyqov9SPWHpf3Y2Rf/projectcss */ +@import "./plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; /* plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss */ +@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C600&family=IBM+Plex+Mono%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C600&display=swap"); + +.plasmic_tokens_aaggSgVS8yYsAwQffVQB4p { + --token-sOMskEozy: rgb(5, 5, 5); + --plasmic-token-spectrum-gray-00: var(--token-sOMskEozy); + --token-LLMzohSRzO: rgb(5, 33, 77); + --plasmic-token-spectrum-blue-15: var(--token-LLMzohSRzO); + --token-3FnMyAiLIK: rgb(240, 242, 245); + --plasmic-token-spectrum-gray-95: var(--token-3FnMyAiLIK); + --token-we3FurY2Mq: rgb(181, 84, 0); + --plasmic-token-spectrum-yellow-30: var(--token-we3FurY2Mq); + --token-uh4ekCyB4C: rgb(228, 30, 63); + --plasmic-token-spectrum-red-35: var(--token-uh4ekCyB4C); + --token-HECc6yZMKR: rgb(4, 164, 244); + --plasmic-token-spectrum-cyan-60: var(--token-HECc6yZMKR); + --token-0WgitNN_nh: rgb(50, 52, 54); + --plasmic-token-spectrum-gray-20: var(--token-0WgitNN_nh); + --token-8gS464TlSs2: rgb(245, 83, 61); + --plasmic-token-spectrum-coral-50: var(--token-8gS464TlSs2); +} + +.plasmic_default_styles { + --mixin-qP3g6Hd5AdC_text-decoration-line: none; + --mixin-qP3g6Hd5AdC_font-family: "Inter", sans-serif; + --mixin-qP3g6Hd5AdC_color: var(--token-0IloF6TmFvF); + --mixin-qP3g6Hd5AdC_font-size: 12px; + --mixin-qP3g6Hd5AdC_white-space: pre-wrap; + --mixin-qP3g6Hd5AdC_line-height: 1.5; + --mixin-2zEfljePq9P_color: var(--token-VUsIDivgUss); + --mixin-2zEfljePq9P_white-space: pre-wrap; + --mixin-EEKi5Tu2fbK_white-space: pre-wrap; + --mixin-YQD_Uc8Md__font-family: "Inter", sans-serif; + --mixin-YQD_Uc8Md__font-size: 72px; + --mixin-YQD_Uc8Md__font-weight: 500; + --mixin-YQD_Uc8Md__white-space: pre-wrap; + --mixin-vEOXQLfcbC_font-family: "Inter", sans-serif; + --mixin-vEOXQLfcbC_font-size: 48px; + --mixin-vEOXQLfcbC_font-weight: 500; + --mixin-vEOXQLfcbC_white-space: pre-wrap; + --mixin-EXCWDILscU_font-family: "Inter", sans-serif; + --mixin-EXCWDILscU_font-size: 32px; + --mixin-EXCWDILscU_font-weight: 500; + --mixin-EXCWDILscU_white-space: pre-wrap; + --mixin-N7cG0Ri48QP_font-family: "Inter", sans-serif; + --mixin-N7cG0Ri48QP_font-size: 24px; + --mixin-N7cG0Ri48QP_font-weight: 500; + --mixin-N7cG0Ri48QP_white-space: pre-wrap; + --mixin-__gfw12lSVA_font-family: "Inter", sans-serif; + --mixin-__gfw12lSVA_font-size: 20px; + --mixin-__gfw12lSVA_font-weight: 500; + --mixin-__gfw12lSVA_white-space: pre-wrap; + --mixin-eoQXVRNaCyL_font-family: "Inter", sans-serif; + --mixin-eoQXVRNaCyL_font-size: 16px; + --mixin-eoQXVRNaCyL_font-weight: 500; + --mixin-eoQXVRNaCyL_white-space: pre-wrap; + --mixin-fkU_lzw4PF5_white-space: pre-wrap; + --mixin-v9e0yiTlX_o_white-space: pre-wrap; + --mixin-MMatKfNT024_white-space: pre-wrap; + --mixin-EuhGUWboGh2_position: relative; + --mixin-EuhGUWboGh2_white-space: pre-wrap; + --mixin-_MYD1z_SMDp_position: relative; + --mixin-_MYD1z_SMDp_white-space: pre-wrap; + --mixin-Yot8xJYsc_white-space: pre-wrap; + --mixin-985HZFQW4_white-space: pre-wrap; + --mixin-3i6_2FI7G_white-space: pre-wrap; + --mixin-3HZrBcpB6_white-space: pre-wrap; + --mixin-n1REaG4FH_white-space: pre-wrap; + --mixin-Hk5zzHaLS_white-space: pre-wrap; + --mixin-B4DR1AgPG_white-space: pre-wrap; + --mixin-bhSle9dw7_white-space: pre-wrap; + --mixin-5d8gGYi39_white-space: pre-wrap; + --mixin-sxjZ0YFFF_white-space: pre-wrap; + --mixin-GZm4AQ_Ek_white-space: pre-wrap; + --mixin-qjB654aOL_white-space: pre-wrap; +} + +:where(.all) { + display: block; + white-space: inherit; + grid-row: auto; + grid-column: auto; + position: relative; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + text-decoration-line: none; + margin: 0; + border-width: 0px; +} +:where(.__wab_expr_html_text *) { + white-space: inherit; + grid-row: auto; + grid-column: auto; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + margin: 0; + border-width: 0px; +} + +:where(.img) { + display: inline-block; +} +:where(.__wab_expr_html_text img) { + white-space: inherit; +} + +:where(.li) { + display: list-item; +} +:where(.__wab_expr_html_text li) { + white-space: inherit; +} + +:where(.span) { + display: inline; + position: static; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text span) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.input) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text input) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} + +:where(.textarea) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text textarea) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} + +:where(.button) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text button) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} + +:where(.code) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text code) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.pre) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text pre) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.p) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text p) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.i) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text i) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.em) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text em) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.strong) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text strong) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.h1) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h1) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h2) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h2) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h3) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h3) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h4) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h4) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h5) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h5) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h6) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h6) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.address) { + font-style: inherit; +} +:where(.__wab_expr_html_text address) { + white-space: inherit; + font-style: inherit; +} + +:where(.a) { + color: inherit; +} +:where(.__wab_expr_html_text a) { + white-space: inherit; + color: inherit; +} + +:where(.ol) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ol) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.ul) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ul) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.select) { + padding: 2px 6px; +} +:where(.__wab_expr_html_text select) { + white-space: inherit; + padding: 2px 6px; +} + +.plasmic_default__component_wrapper { + display: grid; +} +.plasmic_default__inline { + display: inline; +} +.plasmic_page_wrapper { + display: flex; + width: 100%; + min-height: 100vh; + align-items: stretch; + align-self: start; +} +.plasmic_page_wrapper > * { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) { + font-family: var(--mixin-qP3g6Hd5AdC_font-family); + font-size: var(--mixin-qP3g6Hd5AdC_font-size); + color: var(--mixin-qP3g6Hd5AdC_color); + line-height: var(--mixin-qP3g6Hd5AdC_line-height); + white-space: var(--mixin-qP3g6Hd5AdC_white-space); +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) a:where(.a__aaggS), +a:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.a__aaggS), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) a, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) a, +a:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) { + color: var(--mixin-2zEfljePq9P_color); +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) a:where(.a__aaggS):hover, +a:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.a__aaggS):hover, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) a:hover, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) a:hover, +a:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags):hover { +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) h1:where(.h1__aaggS), +h1:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.h1__aaggS), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) h1, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) h1, +h1:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) { + font-family: var(--mixin-YQD_Uc8Md__font-family); + font-size: var(--mixin-YQD_Uc8Md__font-size); + font-weight: var(--mixin-YQD_Uc8Md__font-weight); +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) h2:where(.h2__aaggS), +h2:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.h2__aaggS), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) h2, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) h2, +h2:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) { + font-family: var(--mixin-vEOXQLfcbC_font-family); + font-size: var(--mixin-vEOXQLfcbC_font-size); + font-weight: var(--mixin-vEOXQLfcbC_font-weight); +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) h3:where(.h3__aaggS), +h3:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.h3__aaggS), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) h3, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) h3, +h3:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) { + font-family: var(--mixin-EXCWDILscU_font-family); + font-size: var(--mixin-EXCWDILscU_font-size); + font-weight: var(--mixin-EXCWDILscU_font-weight); +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) h4:where(.h4__aaggS), +h4:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.h4__aaggS), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) h4, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) h4, +h4:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) { + font-family: var(--mixin-N7cG0Ri48QP_font-family); + font-size: var(--mixin-N7cG0Ri48QP_font-size); + font-weight: var(--mixin-N7cG0Ri48QP_font-weight); +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) h5:where(.h5__aaggS), +h5:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.h5__aaggS), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) h5, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) h5, +h5:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) { + font-family: var(--mixin-__gfw12lSVA_font-family); + font-size: var(--mixin-__gfw12lSVA_font-size); + font-weight: var(--mixin-__gfw12lSVA_font-weight); +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) h6:where(.h6__aaggS), +h6:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.h6__aaggS), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) h6, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) h6, +h6:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) { + font-family: var(--mixin-eoQXVRNaCyL_font-family); + font-size: var(--mixin-eoQXVRNaCyL_font-size); + font-weight: var(--mixin-eoQXVRNaCyL_font-weight); +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) blockquote:where(.blockquote__aaggS), +blockquote:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.blockquote__aaggS), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) blockquote, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) blockquote, +blockquote:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) { +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) code:where(.code__aaggS), +code:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.code__aaggS), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) code, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) code, +code:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) { +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) pre:where(.pre__aaggS), +pre:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.pre__aaggS), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) pre, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) pre, +pre:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) { +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) ol:where(.ol__aaggS), +ol:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.ol__aaggS), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) ol, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) ol, +ol:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) { + position: var(--mixin-EuhGUWboGh2_position); +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) ul:where(.ul__aaggS), +ul:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.ul__aaggS), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) ul, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) ul, +ul:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) { + position: var(--mixin-_MYD1z_SMDp_position); +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) a:where(.a__aaggS):not(:hover), +a:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.a__aaggS):not(:hover), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) a:not(:hover), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) a:not(:hover), +a:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags):not(:hover) { +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) a:where(.a__aaggS):active, +a:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.a__aaggS):active, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) a:active, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) a:active, +a:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags):active { +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) a:where(.a__aaggS):not(:active), +a:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.a__aaggS):not(:active), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) a:not(:active), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) a:not(:active), +a:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags):not(:active) { +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) a:where(.a__aaggS):focus, +a:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.a__aaggS):focus, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) a:focus, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) a:focus, +a:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags):focus { +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) a:where(.a__aaggS):not(:link), +a:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.a__aaggS):not(:link), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) a:not(:link), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) a:not(:link), +a:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags):not(:link) { +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) + blockquote:where(.blockquote__aaggS):not(:link), +blockquote:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.blockquote__aaggS):not( + :link + ), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) + blockquote:not(:link), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) blockquote:not(:link), +blockquote:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags):not(:link) { +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) + blockquote:where(.blockquote__aaggS):hover, +blockquote:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.blockquote__aaggS):hover, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) + blockquote:hover, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) blockquote:hover, +blockquote:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags):hover { +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) code:where(.code__aaggS):hover, +code:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.code__aaggS):hover, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) code:hover, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) code:hover, +code:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags):hover { +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) li:where(.li__aaggS), +li:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.li__aaggS), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) li, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) li, +li:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) { +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) p:where(.p__aaggS), +p:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.p__aaggS), +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) p, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) p, +p:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) { +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) ul:where(.ul__aaggS):hover, +ul:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.ul__aaggS):hover, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) ul:hover, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) ul:hover, +ul:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags):hover { +} + +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p) li:where(.li__aaggS):hover, +li:where(.root_reset_aaggSgVS8yYsAwQffVQB4p.li__aaggS):hover, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p .__wab_expr_html_text) li:hover, +:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags) li:hover, +li:where(.root_reset_aaggSgVS8yYsAwQffVQB4p_tags):hover { +} diff --git a/platform/wab/src/wab/client/plasmic/PP__plasmickit_settings.module.css b/platform/wab/src/wab/client/plasmic/PP__plasmickit_settings.module.css deleted file mode 100644 index ee2f056afb..0000000000 --- a/platform/wab/src/wab/client/plasmic/PP__plasmickit_settings.module.css +++ /dev/null @@ -1,590 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C600&family=IBM+Plex+Mono%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C600&display=swap"); - -.plasmic_tokens { - --token-sOMskEozy: rgb(5, 5, 5); - --plasmic-token-spectrum-gray-00: var(--token-sOMskEozy); - --token-LLMzohSRzO: rgb(5, 33, 77); - --plasmic-token-spectrum-blue-15: var(--token-LLMzohSRzO); - --token-3FnMyAiLIK: rgb(240, 242, 245); - --plasmic-token-spectrum-gray-95: var(--token-3FnMyAiLIK); - --token-we3FurY2Mq: rgb(181, 84, 0); - --plasmic-token-spectrum-yellow-30: var(--token-we3FurY2Mq); - --token-uh4ekCyB4C: rgb(228, 30, 63); - --plasmic-token-spectrum-red-35: var(--token-uh4ekCyB4C); - --token-HECc6yZMKR: rgb(4, 164, 244); - --plasmic-token-spectrum-cyan-60: var(--token-HECc6yZMKR); - --token-0WgitNN_nh: rgb(50, 52, 54); - --plasmic-token-spectrum-gray-20: var(--token-0WgitNN_nh); - --token-8gS464TlSs2: rgb(245, 83, 61); - --plasmic-token-spectrum-coral-50: var(--token-8gS464TlSs2); -} - -.plasmic_default_styles { - --mixin-qP3g6Hd5AdC_text-decoration-line: none; - --mixin-qP3g6Hd5AdC_font-family: "Inter", sans-serif; - --mixin-qP3g6Hd5AdC_color: var(--token-0IloF6TmFvF); - --mixin-qP3g6Hd5AdC_font-size: 12px; - --mixin-qP3g6Hd5AdC_white-space: pre-wrap; - --mixin-qP3g6Hd5AdC_line-height: 1.5; - --mixin-2zEfljePq9P_color: var(--token-VUsIDivgUss); - --mixin-2zEfljePq9P_white-space: pre-wrap; - --mixin-EEKi5Tu2fbK_white-space: pre-wrap; - --mixin-YQD_Uc8Md__font-family: "Inter", sans-serif; - --mixin-YQD_Uc8Md__font-size: 72px; - --mixin-YQD_Uc8Md__font-weight: 500; - --mixin-YQD_Uc8Md__white-space: pre-wrap; - --mixin-vEOXQLfcbC_font-family: "Inter", sans-serif; - --mixin-vEOXQLfcbC_font-size: 48px; - --mixin-vEOXQLfcbC_font-weight: 500; - --mixin-vEOXQLfcbC_white-space: pre-wrap; - --mixin-EXCWDILscU_font-family: "Inter", sans-serif; - --mixin-EXCWDILscU_font-size: 32px; - --mixin-EXCWDILscU_font-weight: 500; - --mixin-EXCWDILscU_white-space: pre-wrap; - --mixin-N7cG0Ri48QP_font-family: "Inter", sans-serif; - --mixin-N7cG0Ri48QP_font-size: 24px; - --mixin-N7cG0Ri48QP_font-weight: 500; - --mixin-N7cG0Ri48QP_white-space: pre-wrap; - --mixin-__gfw12lSVA_font-family: "Inter", sans-serif; - --mixin-__gfw12lSVA_font-size: 20px; - --mixin-__gfw12lSVA_font-weight: 500; - --mixin-__gfw12lSVA_white-space: pre-wrap; - --mixin-eoQXVRNaCyL_font-family: "Inter", sans-serif; - --mixin-eoQXVRNaCyL_font-size: 16px; - --mixin-eoQXVRNaCyL_font-weight: 500; - --mixin-eoQXVRNaCyL_white-space: pre-wrap; - --mixin-fkU_lzw4PF5_white-space: pre-wrap; - --mixin-v9e0yiTlX_o_white-space: pre-wrap; - --mixin-MMatKfNT024_white-space: pre-wrap; - --mixin-EuhGUWboGh2_position: relative; - --mixin-EuhGUWboGh2_white-space: pre-wrap; - --mixin-_MYD1z_SMDp_position: relative; - --mixin-_MYD1z_SMDp_white-space: pre-wrap; - --mixin-Yot8xJYsc_white-space: pre-wrap; - --mixin-985HZFQW4_white-space: pre-wrap; - --mixin-3i6_2FI7G_white-space: pre-wrap; - --mixin-3HZrBcpB6_white-space: pre-wrap; - --mixin-n1REaG4FH_white-space: pre-wrap; - --mixin-Hk5zzHaLS_white-space: pre-wrap; - --mixin-B4DR1AgPG_white-space: pre-wrap; - --mixin-bhSle9dw7_white-space: pre-wrap; - --mixin-5d8gGYi39_white-space: pre-wrap; - --mixin-sxjZ0YFFF_white-space: pre-wrap; - --mixin-GZm4AQ_Ek_white-space: pre-wrap; - --mixin-qjB654aOL_white-space: pre-wrap; -} - -:where(.all) { - display: block; - white-space: inherit; - grid-row: auto; - grid-column: auto; - position: relative; - background: none; - background-size: 100% 100%; - background-repeat: no-repeat; - row-gap: 0px; - column-gap: 0px; - box-shadow: none; - box-sizing: border-box; - text-decoration-line: none; - margin: 0; - border-width: 0px; -} -:where(.__wab_expr_html_text *) { - white-space: inherit; - grid-row: auto; - grid-column: auto; - background: none; - background-size: 100% 100%; - background-repeat: no-repeat; - row-gap: 0px; - column-gap: 0px; - box-shadow: none; - box-sizing: border-box; - margin: 0; - border-width: 0px; -} - -:where(.img) { - display: inline-block; -} -:where(.__wab_expr_html_text img) { - white-space: inherit; -} - -:where(.li) { - display: list-item; -} -:where(.__wab_expr_html_text li) { - white-space: inherit; -} - -:where(.span) { - display: inline; - position: static; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} -:where(.__wab_expr_html_text span) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} - -:where(.input) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: linear-gradient(#ffffff, #ffffff); - padding: 2px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text input) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: linear-gradient(#ffffff, #ffffff); - padding: 2px; - border: 1px solid lightgray; -} - -:where(.textarea) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - padding: 2px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text textarea) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - padding: 2px; - border: 1px solid lightgray; -} - -:where(.button) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: none; - align-items: flex-start; - text-align: center; - padding: 2px 6px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text button) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: none; - align-items: flex-start; - text-align: center; - padding: 2px 6px; - border: 1px solid lightgray; -} - -:where(.code) { - font-family: inherit; - line-height: inherit; -} -:where(.__wab_expr_html_text code) { - white-space: inherit; - font-family: inherit; - line-height: inherit; -} - -:where(.pre) { - font-family: inherit; - line-height: inherit; -} -:where(.__wab_expr_html_text pre) { - white-space: inherit; - font-family: inherit; - line-height: inherit; -} - -:where(.p) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} -:where(.__wab_expr_html_text p) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} - -:where(.h1) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h1) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h2) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h2) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h3) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h3) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h4) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h4) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h5) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h5) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h6) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h6) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.address) { - font-style: inherit; -} -:where(.__wab_expr_html_text address) { - white-space: inherit; - font-style: inherit; -} - -:where(.a) { - color: inherit; -} -:where(.__wab_expr_html_text a) { - white-space: inherit; - color: inherit; -} - -:where(.ol) { - list-style-type: none; - padding: 0; -} -:where(.__wab_expr_html_text ol) { - white-space: inherit; - list-style-type: none; - padding: 0; -} - -:where(.ul) { - list-style-type: none; - padding: 0; -} -:where(.__wab_expr_html_text ul) { - white-space: inherit; - list-style-type: none; - padding: 0; -} - -:where(.select) { - padding: 2px 6px; -} -:where(.__wab_expr_html_text select) { - white-space: inherit; - padding: 2px 6px; -} - -.plasmic_default__component_wrapper { - display: grid; -} -.plasmic_default__inline { - display: inline; -} -.plasmic_page_wrapper { - display: flex; - width: 100%; - min-height: 100vh; - align-items: stretch; - align-self: start; -} -.plasmic_page_wrapper > * { - height: auto !important; -} -.__wab_expr_html_text { - white-space: normal; -} -:where(.root_reset) { - font-family: var(--mixin-qP3g6Hd5AdC_font-family); - font-size: var(--mixin-qP3g6Hd5AdC_font-size); - color: var(--mixin-qP3g6Hd5AdC_color); - line-height: var(--mixin-qP3g6Hd5AdC_line-height); - white-space: var(--mixin-qP3g6Hd5AdC_white-space); -} - -:where(.root_reset) a:where(.a), -a:where(.root_reset.a), -:where(.root_reset .__wab_expr_html_text) a, -:where(.root_reset_tags) a, -a:where(.root_reset_tags) { - color: var(--mixin-2zEfljePq9P_color); -} - -:where(.root_reset) a:where(.a):hover, -a:where(.root_reset.a):hover, -:where(.root_reset .__wab_expr_html_text) a:hover, -:where(.root_reset_tags) a:hover, -a:where(.root_reset_tags):hover { -} - -:where(.root_reset) h1:where(.h1), -h1:where(.root_reset.h1), -:where(.root_reset .__wab_expr_html_text) h1, -:where(.root_reset_tags) h1, -h1:where(.root_reset_tags) { - font-family: var(--mixin-YQD_Uc8Md__font-family); - font-size: var(--mixin-YQD_Uc8Md__font-size); - font-weight: var(--mixin-YQD_Uc8Md__font-weight); -} - -:where(.root_reset) h2:where(.h2), -h2:where(.root_reset.h2), -:where(.root_reset .__wab_expr_html_text) h2, -:where(.root_reset_tags) h2, -h2:where(.root_reset_tags) { - font-family: var(--mixin-vEOXQLfcbC_font-family); - font-size: var(--mixin-vEOXQLfcbC_font-size); - font-weight: var(--mixin-vEOXQLfcbC_font-weight); -} - -:where(.root_reset) h3:where(.h3), -h3:where(.root_reset.h3), -:where(.root_reset .__wab_expr_html_text) h3, -:where(.root_reset_tags) h3, -h3:where(.root_reset_tags) { - font-family: var(--mixin-EXCWDILscU_font-family); - font-size: var(--mixin-EXCWDILscU_font-size); - font-weight: var(--mixin-EXCWDILscU_font-weight); -} - -:where(.root_reset) h4:where(.h4), -h4:where(.root_reset.h4), -:where(.root_reset .__wab_expr_html_text) h4, -:where(.root_reset_tags) h4, -h4:where(.root_reset_tags) { - font-family: var(--mixin-N7cG0Ri48QP_font-family); - font-size: var(--mixin-N7cG0Ri48QP_font-size); - font-weight: var(--mixin-N7cG0Ri48QP_font-weight); -} - -:where(.root_reset) h5:where(.h5), -h5:where(.root_reset.h5), -:where(.root_reset .__wab_expr_html_text) h5, -:where(.root_reset_tags) h5, -h5:where(.root_reset_tags) { - font-family: var(--mixin-__gfw12lSVA_font-family); - font-size: var(--mixin-__gfw12lSVA_font-size); - font-weight: var(--mixin-__gfw12lSVA_font-weight); -} - -:where(.root_reset) h6:where(.h6), -h6:where(.root_reset.h6), -:where(.root_reset .__wab_expr_html_text) h6, -:where(.root_reset_tags) h6, -h6:where(.root_reset_tags) { - font-family: var(--mixin-eoQXVRNaCyL_font-family); - font-size: var(--mixin-eoQXVRNaCyL_font-size); - font-weight: var(--mixin-eoQXVRNaCyL_font-weight); -} - -:where(.root_reset) blockquote:where(.blockquote), -blockquote:where(.root_reset.blockquote), -:where(.root_reset .__wab_expr_html_text) blockquote, -:where(.root_reset_tags) blockquote, -blockquote:where(.root_reset_tags) { -} - -:where(.root_reset) code:where(.code), -code:where(.root_reset.code), -:where(.root_reset .__wab_expr_html_text) code, -:where(.root_reset_tags) code, -code:where(.root_reset_tags) { -} - -:where(.root_reset) pre:where(.pre), -pre:where(.root_reset.pre), -:where(.root_reset .__wab_expr_html_text) pre, -:where(.root_reset_tags) pre, -pre:where(.root_reset_tags) { -} - -:where(.root_reset) ol:where(.ol), -ol:where(.root_reset.ol), -:where(.root_reset .__wab_expr_html_text) ol, -:where(.root_reset_tags) ol, -ol:where(.root_reset_tags) { - position: var(--mixin-EuhGUWboGh2_position); -} - -:where(.root_reset) ul:where(.ul), -ul:where(.root_reset.ul), -:where(.root_reset .__wab_expr_html_text) ul, -:where(.root_reset_tags) ul, -ul:where(.root_reset_tags) { - position: var(--mixin-_MYD1z_SMDp_position); -} - -:where(.root_reset) a:where(.a):not(:hover), -a:where(.root_reset.a):not(:hover), -:where(.root_reset .__wab_expr_html_text) a:not(:hover), -:where(.root_reset_tags) a:not(:hover), -a:where(.root_reset_tags):not(:hover) { -} - -:where(.root_reset) a:where(.a):active, -a:where(.root_reset.a):active, -:where(.root_reset .__wab_expr_html_text) a:active, -:where(.root_reset_tags) a:active, -a:where(.root_reset_tags):active { -} - -:where(.root_reset) a:where(.a):not(:active), -a:where(.root_reset.a):not(:active), -:where(.root_reset .__wab_expr_html_text) a:not(:active), -:where(.root_reset_tags) a:not(:active), -a:where(.root_reset_tags):not(:active) { -} - -:where(.root_reset) a:where(.a):focus, -a:where(.root_reset.a):focus, -:where(.root_reset .__wab_expr_html_text) a:focus, -:where(.root_reset_tags) a:focus, -a:where(.root_reset_tags):focus { -} - -:where(.root_reset) a:where(.a):not(:link), -a:where(.root_reset.a):not(:link), -:where(.root_reset .__wab_expr_html_text) a:not(:link), -:where(.root_reset_tags) a:not(:link), -a:where(.root_reset_tags):not(:link) { -} - -:where(.root_reset) blockquote:where(.blockquote):not(:link), -blockquote:where(.root_reset.blockquote):not(:link), -:where(.root_reset .__wab_expr_html_text) blockquote:not(:link), -:where(.root_reset_tags) blockquote:not(:link), -blockquote:where(.root_reset_tags):not(:link) { -} - -:where(.root_reset) blockquote:where(.blockquote):hover, -blockquote:where(.root_reset.blockquote):hover, -:where(.root_reset .__wab_expr_html_text) blockquote:hover, -:where(.root_reset_tags) blockquote:hover, -blockquote:where(.root_reset_tags):hover { -} - -:where(.root_reset) code:where(.code):hover, -code:where(.root_reset.code):hover, -:where(.root_reset .__wab_expr_html_text) code:hover, -:where(.root_reset_tags) code:hover, -code:where(.root_reset_tags):hover { -} - -:where(.root_reset) li:where(.li), -li:where(.root_reset.li), -:where(.root_reset .__wab_expr_html_text) li, -:where(.root_reset_tags) li, -li:where(.root_reset_tags) { -} - -:where(.root_reset) p:where(.p), -p:where(.root_reset.p), -:where(.root_reset .__wab_expr_html_text) p, -:where(.root_reset_tags) p, -p:where(.root_reset_tags) { -} - -:where(.root_reset) ul:where(.ul):hover, -ul:where(.root_reset.ul):hover, -:where(.root_reset .__wab_expr_html_text) ul:hover, -:where(.root_reset_tags) ul:hover, -ul:where(.root_reset_tags):hover { -} - -:where(.root_reset) li:where(.li):hover, -li:where(.root_reset.li):hover, -:where(.root_reset .__wab_expr_html_text) li:hover, -:where(.root_reset_tags) li:hover, -li:where(.root_reset_tags):hover { -} diff --git a/platform/wab/src/wab/client/plasmic/PP__plasmickit_share_dialog.css b/platform/wab/src/wab/client/plasmic/PP__plasmickit_share_dialog.css new file mode 100644 index 0000000000..8328cc8c47 --- /dev/null +++ b/platform/wab/src/wab/client/plasmic/PP__plasmickit_share_dialog.css @@ -0,0 +1,634 @@ +@import "./PP__plasmickit_design_system.css"; /* plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss */ +@import "./plasmic_kit_icons/plasmic_q_4_icons.css"; /* plasmic-import: oT38tGyqov9SPWHpf3Y2Rf/projectcss */ +@import "./plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; /* plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss */ +@import "./q_4_text_mixins_product/plasmic_q_4_text_mixins_product.css"; /* plasmic-import: sDniSX4oPUZFyk2sXXb3nh/projectcss */ +@import "./react_aria/plasmic.css"; /* plasmic-import: gmeH6XgPaBtkt51HunAo4g/projectcss */ +@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C600%3B0%2C700&display=swap"); + +.plasmic_default_styles { + --mixin-qP3g6Hd5AdC_text-decoration-line: none; + --mixin-qP3g6Hd5AdC_font-family: "Inter", sans-serif; + --mixin-qP3g6Hd5AdC_color: var(--token-0IloF6TmFvF); + --mixin-qP3g6Hd5AdC_font-size: 12px; + --mixin-qP3g6Hd5AdC_white-space: pre-wrap; + --mixin-qP3g6Hd5AdC_line-height: 1.5; + --mixin-2zEfljePq9P_color: var(--token-VUsIDivgUss); + --mixin-2zEfljePq9P_white-space: pre-wrap; + --mixin-EEKi5Tu2fbK_white-space: pre-wrap; + --mixin-YQD_Uc8Md__font-family: "Inter", sans-serif; + --mixin-YQD_Uc8Md__font-size: 72px; + --mixin-YQD_Uc8Md__font-weight: 500; + --mixin-YQD_Uc8Md__white-space: pre-wrap; + --mixin-vEOXQLfcbC_font-family: "Inter", sans-serif; + --mixin-vEOXQLfcbC_font-size: 48px; + --mixin-vEOXQLfcbC_font-weight: 500; + --mixin-vEOXQLfcbC_white-space: pre-wrap; + --mixin-EXCWDILscU_font-family: "Inter", sans-serif; + --mixin-EXCWDILscU_font-size: 32px; + --mixin-EXCWDILscU_font-weight: 500; + --mixin-EXCWDILscU_white-space: pre-wrap; + --mixin-N7cG0Ri48QP_font-family: "Inter", sans-serif; + --mixin-N7cG0Ri48QP_font-size: 24px; + --mixin-N7cG0Ri48QP_font-weight: 500; + --mixin-N7cG0Ri48QP_white-space: pre-wrap; + --mixin-__gfw12lSVA_font-family: "Inter", sans-serif; + --mixin-__gfw12lSVA_font-size: 20px; + --mixin-__gfw12lSVA_font-weight: 500; + --mixin-__gfw12lSVA_white-space: pre-wrap; + --mixin-eoQXVRNaCyL_font-family: "Inter", sans-serif; + --mixin-eoQXVRNaCyL_font-size: 16px; + --mixin-eoQXVRNaCyL_font-weight: 500; + --mixin-eoQXVRNaCyL_white-space: pre-wrap; + --mixin-fkU_lzw4PF5_white-space: pre-wrap; + --mixin-v9e0yiTlX_o_white-space: pre-wrap; + --mixin-MMatKfNT024_white-space: pre-wrap; + --mixin-EuhGUWboGh2_position: relative; + --mixin-EuhGUWboGh2_white-space: pre-wrap; + --mixin-_MYD1z_SMDp_position: relative; + --mixin-_MYD1z_SMDp_white-space: pre-wrap; + --mixin-Yot8xJYsc_white-space: pre-wrap; + --mixin-985HZFQW4_white-space: pre-wrap; + --mixin-3i6_2FI7G_white-space: pre-wrap; + --mixin-3HZrBcpB6_white-space: pre-wrap; + --mixin-n1REaG4FH_white-space: pre-wrap; + --mixin-Hk5zzHaLS_white-space: pre-wrap; + --mixin-B4DR1AgPG_white-space: pre-wrap; + --mixin-bhSle9dw7_white-space: pre-wrap; + --mixin-5d8gGYi39_white-space: pre-wrap; + --mixin-sxjZ0YFFF_white-space: pre-wrap; + --mixin-GZm4AQ_Ek_white-space: pre-wrap; + --mixin-qjB654aOL_white-space: pre-wrap; +} + +:where(.all) { + display: block; + white-space: inherit; + grid-row: auto; + grid-column: auto; + position: relative; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + text-decoration-line: none; + margin: 0; + border-width: 0px; +} +:where(.__wab_expr_html_text *) { + white-space: inherit; + grid-row: auto; + grid-column: auto; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + margin: 0; + border-width: 0px; +} + +:where(.img) { + display: inline-block; +} +:where(.__wab_expr_html_text img) { + white-space: inherit; +} + +:where(.li) { + display: list-item; +} +:where(.__wab_expr_html_text li) { + white-space: inherit; +} + +:where(.span) { + display: inline; + position: static; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text span) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.input) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text input) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} + +:where(.textarea) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text textarea) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} + +:where(.button) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text button) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} + +:where(.code) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text code) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.pre) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text pre) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.p) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text p) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.i) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text i) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.em) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text em) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.strong) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text strong) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.h1) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h1) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h2) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h2) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h3) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h3) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h4) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h4) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h5) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h5) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h6) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h6) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.address) { + font-style: inherit; +} +:where(.__wab_expr_html_text address) { + white-space: inherit; + font-style: inherit; +} + +:where(.a) { + color: inherit; +} +:where(.__wab_expr_html_text a) { + white-space: inherit; + color: inherit; +} + +:where(.ol) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ol) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.ul) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ul) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.select) { + padding: 2px 6px; +} +:where(.__wab_expr_html_text select) { + white-space: inherit; + padding: 2px 6px; +} + +.plasmic_default__component_wrapper { + display: grid; +} +.plasmic_default__inline { + display: inline; +} +.plasmic_page_wrapper { + display: flex; + width: 100%; + min-height: 100vh; + align-items: stretch; + align-self: start; +} +.plasmic_page_wrapper > * { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) { + font-family: var(--mixin-qP3g6Hd5AdC_font-family); + font-size: var(--mixin-qP3g6Hd5AdC_font-size); + color: var(--mixin-qP3g6Hd5AdC_color); + line-height: var(--mixin-qP3g6Hd5AdC_line-height); + white-space: var(--mixin-qP3g6Hd5AdC_white-space); +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) a:where(.a__kA1Hy), +a:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.a__kA1Hy), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) a, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) a, +a:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) { + color: var(--mixin-2zEfljePq9P_color); +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) a:where(.a__kA1Hy):hover, +a:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.a__kA1Hy):hover, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) a:hover, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) a:hover, +a:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags):hover { +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) h1:where(.h1__kA1Hy), +h1:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.h1__kA1Hy), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) h1, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) h1, +h1:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) { + font-family: var(--mixin-YQD_Uc8Md__font-family); + font-size: var(--mixin-YQD_Uc8Md__font-size); + font-weight: var(--mixin-YQD_Uc8Md__font-weight); +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) h2:where(.h2__kA1Hy), +h2:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.h2__kA1Hy), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) h2, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) h2, +h2:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) { + font-family: var(--mixin-vEOXQLfcbC_font-family); + font-size: var(--mixin-vEOXQLfcbC_font-size); + font-weight: var(--mixin-vEOXQLfcbC_font-weight); +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) h3:where(.h3__kA1Hy), +h3:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.h3__kA1Hy), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) h3, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) h3, +h3:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) { + font-family: var(--mixin-EXCWDILscU_font-family); + font-size: var(--mixin-EXCWDILscU_font-size); + font-weight: var(--mixin-EXCWDILscU_font-weight); +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) h4:where(.h4__kA1Hy), +h4:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.h4__kA1Hy), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) h4, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) h4, +h4:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) { + font-family: var(--mixin-N7cG0Ri48QP_font-family); + font-size: var(--mixin-N7cG0Ri48QP_font-size); + font-weight: var(--mixin-N7cG0Ri48QP_font-weight); +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) h5:where(.h5__kA1Hy), +h5:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.h5__kA1Hy), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) h5, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) h5, +h5:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) { + font-family: var(--mixin-__gfw12lSVA_font-family); + font-size: var(--mixin-__gfw12lSVA_font-size); + font-weight: var(--mixin-__gfw12lSVA_font-weight); +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) h6:where(.h6__kA1Hy), +h6:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.h6__kA1Hy), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) h6, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) h6, +h6:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) { + font-family: var(--mixin-eoQXVRNaCyL_font-family); + font-size: var(--mixin-eoQXVRNaCyL_font-size); + font-weight: var(--mixin-eoQXVRNaCyL_font-weight); +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) blockquote:where(.blockquote__kA1Hy), +blockquote:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.blockquote__kA1Hy), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) blockquote, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) blockquote, +blockquote:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) { +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) code:where(.code__kA1Hy), +code:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.code__kA1Hy), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) code, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) code, +code:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) { +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) pre:where(.pre__kA1Hy), +pre:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.pre__kA1Hy), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) pre, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) pre, +pre:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) { +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) ol:where(.ol__kA1Hy), +ol:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.ol__kA1Hy), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) ol, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) ol, +ol:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) { + position: var(--mixin-EuhGUWboGh2_position); +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) ul:where(.ul__kA1Hy), +ul:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.ul__kA1Hy), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) ul, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) ul, +ul:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) { + position: var(--mixin-_MYD1z_SMDp_position); +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) a:where(.a__kA1Hy):not(:hover), +a:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.a__kA1Hy):not(:hover), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) a:not(:hover), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) a:not(:hover), +a:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags):not(:hover) { +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) a:where(.a__kA1Hy):active, +a:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.a__kA1Hy):active, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) a:active, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) a:active, +a:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags):active { +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) a:where(.a__kA1Hy):not(:active), +a:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.a__kA1Hy):not(:active), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) a:not(:active), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) a:not(:active), +a:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags):not(:active) { +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) a:where(.a__kA1Hy):focus, +a:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.a__kA1Hy):focus, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) a:focus, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) a:focus, +a:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags):focus { +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) a:where(.a__kA1Hy):not(:link), +a:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.a__kA1Hy):not(:link), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) a:not(:link), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) a:not(:link), +a:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags):not(:link) { +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) + blockquote:where(.blockquote__kA1Hy):not(:link), +blockquote:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.blockquote__kA1Hy):not( + :link + ), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) + blockquote:not(:link), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) blockquote:not(:link), +blockquote:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags):not(:link) { +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) + blockquote:where(.blockquote__kA1Hy):hover, +blockquote:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.blockquote__kA1Hy):hover, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) + blockquote:hover, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) blockquote:hover, +blockquote:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags):hover { +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) code:where(.code__kA1Hy):hover, +code:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.code__kA1Hy):hover, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) code:hover, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) code:hover, +code:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags):hover { +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) li:where(.li__kA1Hy), +li:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.li__kA1Hy), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) li, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) li, +li:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) { +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) p:where(.p__kA1Hy), +p:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.p__kA1Hy), +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) p, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) p, +p:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) { +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) ul:where(.ul__kA1Hy):hover, +ul:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.ul__kA1Hy):hover, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) ul:hover, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) ul:hover, +ul:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags):hover { +} + +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B) li:where(.li__kA1Hy):hover, +li:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B.li__kA1Hy):hover, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B .__wab_expr_html_text) li:hover, +:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags) li:hover, +li:where(.root_reset_kA1Hysr5ZeimtATHTDJz5B_tags):hover { +} diff --git a/platform/wab/src/wab/client/plasmic/PP__plasmickit_share_dialog.module.css b/platform/wab/src/wab/client/plasmic/PP__plasmickit_share_dialog.module.css deleted file mode 100644 index 4c4112f8d6..0000000000 --- a/platform/wab/src/wab/client/plasmic/PP__plasmickit_share_dialog.module.css +++ /dev/null @@ -1,571 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C600%3B0%2C700&display=swap"); - -.plasmic_default_styles { - --mixin-qP3g6Hd5AdC_text-decoration-line: none; - --mixin-qP3g6Hd5AdC_font-family: "Inter", sans-serif; - --mixin-qP3g6Hd5AdC_color: var(--token-0IloF6TmFvF); - --mixin-qP3g6Hd5AdC_font-size: 12px; - --mixin-qP3g6Hd5AdC_white-space: pre-wrap; - --mixin-qP3g6Hd5AdC_line-height: 1.5; - --mixin-2zEfljePq9P_color: var(--token-VUsIDivgUss); - --mixin-2zEfljePq9P_white-space: pre-wrap; - --mixin-EEKi5Tu2fbK_white-space: pre-wrap; - --mixin-YQD_Uc8Md__font-family: "Inter", sans-serif; - --mixin-YQD_Uc8Md__font-size: 72px; - --mixin-YQD_Uc8Md__font-weight: 500; - --mixin-YQD_Uc8Md__white-space: pre-wrap; - --mixin-vEOXQLfcbC_font-family: "Inter", sans-serif; - --mixin-vEOXQLfcbC_font-size: 48px; - --mixin-vEOXQLfcbC_font-weight: 500; - --mixin-vEOXQLfcbC_white-space: pre-wrap; - --mixin-EXCWDILscU_font-family: "Inter", sans-serif; - --mixin-EXCWDILscU_font-size: 32px; - --mixin-EXCWDILscU_font-weight: 500; - --mixin-EXCWDILscU_white-space: pre-wrap; - --mixin-N7cG0Ri48QP_font-family: "Inter", sans-serif; - --mixin-N7cG0Ri48QP_font-size: 24px; - --mixin-N7cG0Ri48QP_font-weight: 500; - --mixin-N7cG0Ri48QP_white-space: pre-wrap; - --mixin-__gfw12lSVA_font-family: "Inter", sans-serif; - --mixin-__gfw12lSVA_font-size: 20px; - --mixin-__gfw12lSVA_font-weight: 500; - --mixin-__gfw12lSVA_white-space: pre-wrap; - --mixin-eoQXVRNaCyL_font-family: "Inter", sans-serif; - --mixin-eoQXVRNaCyL_font-size: 16px; - --mixin-eoQXVRNaCyL_font-weight: 500; - --mixin-eoQXVRNaCyL_white-space: pre-wrap; - --mixin-fkU_lzw4PF5_white-space: pre-wrap; - --mixin-v9e0yiTlX_o_white-space: pre-wrap; - --mixin-MMatKfNT024_white-space: pre-wrap; - --mixin-EuhGUWboGh2_position: relative; - --mixin-EuhGUWboGh2_white-space: pre-wrap; - --mixin-_MYD1z_SMDp_position: relative; - --mixin-_MYD1z_SMDp_white-space: pre-wrap; - --mixin-Yot8xJYsc_white-space: pre-wrap; - --mixin-985HZFQW4_white-space: pre-wrap; - --mixin-3i6_2FI7G_white-space: pre-wrap; - --mixin-3HZrBcpB6_white-space: pre-wrap; - --mixin-n1REaG4FH_white-space: pre-wrap; - --mixin-Hk5zzHaLS_white-space: pre-wrap; - --mixin-B4DR1AgPG_white-space: pre-wrap; - --mixin-bhSle9dw7_white-space: pre-wrap; - --mixin-5d8gGYi39_white-space: pre-wrap; - --mixin-sxjZ0YFFF_white-space: pre-wrap; - --mixin-GZm4AQ_Ek_white-space: pre-wrap; - --mixin-qjB654aOL_white-space: pre-wrap; -} - -:where(.all) { - display: block; - white-space: inherit; - grid-row: auto; - grid-column: auto; - position: relative; - background: none; - background-size: 100% 100%; - background-repeat: no-repeat; - row-gap: 0px; - column-gap: 0px; - box-shadow: none; - box-sizing: border-box; - text-decoration-line: none; - margin: 0; - border-width: 0px; -} -:where(.__wab_expr_html_text *) { - white-space: inherit; - grid-row: auto; - grid-column: auto; - background: none; - background-size: 100% 100%; - background-repeat: no-repeat; - row-gap: 0px; - column-gap: 0px; - box-shadow: none; - box-sizing: border-box; - margin: 0; - border-width: 0px; -} - -:where(.img) { - display: inline-block; -} -:where(.__wab_expr_html_text img) { - white-space: inherit; -} - -:where(.li) { - display: list-item; -} -:where(.__wab_expr_html_text li) { - white-space: inherit; -} - -:where(.span) { - display: inline; - position: static; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} -:where(.__wab_expr_html_text span) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} - -:where(.input) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: linear-gradient(#ffffff, #ffffff); - padding: 2px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text input) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: linear-gradient(#ffffff, #ffffff); - padding: 2px; - border: 1px solid lightgray; -} - -:where(.textarea) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - padding: 2px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text textarea) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - padding: 2px; - border: 1px solid lightgray; -} - -:where(.button) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: none; - align-items: flex-start; - text-align: center; - padding: 2px 6px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text button) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: none; - align-items: flex-start; - text-align: center; - padding: 2px 6px; - border: 1px solid lightgray; -} - -:where(.code) { - font-family: inherit; - line-height: inherit; -} -:where(.__wab_expr_html_text code) { - white-space: inherit; - font-family: inherit; - line-height: inherit; -} - -:where(.pre) { - font-family: inherit; - line-height: inherit; -} -:where(.__wab_expr_html_text pre) { - white-space: inherit; - font-family: inherit; - line-height: inherit; -} - -:where(.p) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} -:where(.__wab_expr_html_text p) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} - -:where(.h1) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h1) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h2) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h2) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h3) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h3) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h4) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h4) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h5) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h5) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h6) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h6) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.address) { - font-style: inherit; -} -:where(.__wab_expr_html_text address) { - white-space: inherit; - font-style: inherit; -} - -:where(.a) { - color: inherit; -} -:where(.__wab_expr_html_text a) { - white-space: inherit; - color: inherit; -} - -:where(.ol) { - list-style-type: none; - padding: 0; -} -:where(.__wab_expr_html_text ol) { - white-space: inherit; - list-style-type: none; - padding: 0; -} - -:where(.ul) { - list-style-type: none; - padding: 0; -} -:where(.__wab_expr_html_text ul) { - white-space: inherit; - list-style-type: none; - padding: 0; -} - -:where(.select) { - padding: 2px 6px; -} -:where(.__wab_expr_html_text select) { - white-space: inherit; - padding: 2px 6px; -} - -.plasmic_default__component_wrapper { - display: grid; -} -.plasmic_default__inline { - display: inline; -} -.plasmic_page_wrapper { - display: flex; - width: 100%; - min-height: 100vh; - align-items: stretch; - align-self: start; -} -.plasmic_page_wrapper > * { - height: auto !important; -} -.__wab_expr_html_text { - white-space: normal; -} -:where(.root_reset) { - font-family: var(--mixin-qP3g6Hd5AdC_font-family); - font-size: var(--mixin-qP3g6Hd5AdC_font-size); - color: var(--mixin-qP3g6Hd5AdC_color); - line-height: var(--mixin-qP3g6Hd5AdC_line-height); - white-space: var(--mixin-qP3g6Hd5AdC_white-space); -} - -:where(.root_reset) a:where(.a), -a:where(.root_reset.a), -:where(.root_reset .__wab_expr_html_text) a, -:where(.root_reset_tags) a, -a:where(.root_reset_tags) { - color: var(--mixin-2zEfljePq9P_color); -} - -:where(.root_reset) a:where(.a):hover, -a:where(.root_reset.a):hover, -:where(.root_reset .__wab_expr_html_text) a:hover, -:where(.root_reset_tags) a:hover, -a:where(.root_reset_tags):hover { -} - -:where(.root_reset) h1:where(.h1), -h1:where(.root_reset.h1), -:where(.root_reset .__wab_expr_html_text) h1, -:where(.root_reset_tags) h1, -h1:where(.root_reset_tags) { - font-family: var(--mixin-YQD_Uc8Md__font-family); - font-size: var(--mixin-YQD_Uc8Md__font-size); - font-weight: var(--mixin-YQD_Uc8Md__font-weight); -} - -:where(.root_reset) h2:where(.h2), -h2:where(.root_reset.h2), -:where(.root_reset .__wab_expr_html_text) h2, -:where(.root_reset_tags) h2, -h2:where(.root_reset_tags) { - font-family: var(--mixin-vEOXQLfcbC_font-family); - font-size: var(--mixin-vEOXQLfcbC_font-size); - font-weight: var(--mixin-vEOXQLfcbC_font-weight); -} - -:where(.root_reset) h3:where(.h3), -h3:where(.root_reset.h3), -:where(.root_reset .__wab_expr_html_text) h3, -:where(.root_reset_tags) h3, -h3:where(.root_reset_tags) { - font-family: var(--mixin-EXCWDILscU_font-family); - font-size: var(--mixin-EXCWDILscU_font-size); - font-weight: var(--mixin-EXCWDILscU_font-weight); -} - -:where(.root_reset) h4:where(.h4), -h4:where(.root_reset.h4), -:where(.root_reset .__wab_expr_html_text) h4, -:where(.root_reset_tags) h4, -h4:where(.root_reset_tags) { - font-family: var(--mixin-N7cG0Ri48QP_font-family); - font-size: var(--mixin-N7cG0Ri48QP_font-size); - font-weight: var(--mixin-N7cG0Ri48QP_font-weight); -} - -:where(.root_reset) h5:where(.h5), -h5:where(.root_reset.h5), -:where(.root_reset .__wab_expr_html_text) h5, -:where(.root_reset_tags) h5, -h5:where(.root_reset_tags) { - font-family: var(--mixin-__gfw12lSVA_font-family); - font-size: var(--mixin-__gfw12lSVA_font-size); - font-weight: var(--mixin-__gfw12lSVA_font-weight); -} - -:where(.root_reset) h6:where(.h6), -h6:where(.root_reset.h6), -:where(.root_reset .__wab_expr_html_text) h6, -:where(.root_reset_tags) h6, -h6:where(.root_reset_tags) { - font-family: var(--mixin-eoQXVRNaCyL_font-family); - font-size: var(--mixin-eoQXVRNaCyL_font-size); - font-weight: var(--mixin-eoQXVRNaCyL_font-weight); -} - -:where(.root_reset) blockquote:where(.blockquote), -blockquote:where(.root_reset.blockquote), -:where(.root_reset .__wab_expr_html_text) blockquote, -:where(.root_reset_tags) blockquote, -blockquote:where(.root_reset_tags) { -} - -:where(.root_reset) code:where(.code), -code:where(.root_reset.code), -:where(.root_reset .__wab_expr_html_text) code, -:where(.root_reset_tags) code, -code:where(.root_reset_tags) { -} - -:where(.root_reset) pre:where(.pre), -pre:where(.root_reset.pre), -:where(.root_reset .__wab_expr_html_text) pre, -:where(.root_reset_tags) pre, -pre:where(.root_reset_tags) { -} - -:where(.root_reset) ol:where(.ol), -ol:where(.root_reset.ol), -:where(.root_reset .__wab_expr_html_text) ol, -:where(.root_reset_tags) ol, -ol:where(.root_reset_tags) { - position: var(--mixin-EuhGUWboGh2_position); -} - -:where(.root_reset) ul:where(.ul), -ul:where(.root_reset.ul), -:where(.root_reset .__wab_expr_html_text) ul, -:where(.root_reset_tags) ul, -ul:where(.root_reset_tags) { - position: var(--mixin-_MYD1z_SMDp_position); -} - -:where(.root_reset) a:where(.a):not(:hover), -a:where(.root_reset.a):not(:hover), -:where(.root_reset .__wab_expr_html_text) a:not(:hover), -:where(.root_reset_tags) a:not(:hover), -a:where(.root_reset_tags):not(:hover) { -} - -:where(.root_reset) a:where(.a):active, -a:where(.root_reset.a):active, -:where(.root_reset .__wab_expr_html_text) a:active, -:where(.root_reset_tags) a:active, -a:where(.root_reset_tags):active { -} - -:where(.root_reset) a:where(.a):not(:active), -a:where(.root_reset.a):not(:active), -:where(.root_reset .__wab_expr_html_text) a:not(:active), -:where(.root_reset_tags) a:not(:active), -a:where(.root_reset_tags):not(:active) { -} - -:where(.root_reset) a:where(.a):focus, -a:where(.root_reset.a):focus, -:where(.root_reset .__wab_expr_html_text) a:focus, -:where(.root_reset_tags) a:focus, -a:where(.root_reset_tags):focus { -} - -:where(.root_reset) a:where(.a):not(:link), -a:where(.root_reset.a):not(:link), -:where(.root_reset .__wab_expr_html_text) a:not(:link), -:where(.root_reset_tags) a:not(:link), -a:where(.root_reset_tags):not(:link) { -} - -:where(.root_reset) blockquote:where(.blockquote):not(:link), -blockquote:where(.root_reset.blockquote):not(:link), -:where(.root_reset .__wab_expr_html_text) blockquote:not(:link), -:where(.root_reset_tags) blockquote:not(:link), -blockquote:where(.root_reset_tags):not(:link) { -} - -:where(.root_reset) blockquote:where(.blockquote):hover, -blockquote:where(.root_reset.blockquote):hover, -:where(.root_reset .__wab_expr_html_text) blockquote:hover, -:where(.root_reset_tags) blockquote:hover, -blockquote:where(.root_reset_tags):hover { -} - -:where(.root_reset) code:where(.code):hover, -code:where(.root_reset.code):hover, -:where(.root_reset .__wab_expr_html_text) code:hover, -:where(.root_reset_tags) code:hover, -code:where(.root_reset_tags):hover { -} - -:where(.root_reset) li:where(.li), -li:where(.root_reset.li), -:where(.root_reset .__wab_expr_html_text) li, -:where(.root_reset_tags) li, -li:where(.root_reset_tags) { -} - -:where(.root_reset) p:where(.p), -p:where(.root_reset.p), -:where(.root_reset .__wab_expr_html_text) p, -:where(.root_reset_tags) p, -p:where(.root_reset_tags) { -} - -:where(.root_reset) ul:where(.ul):hover, -ul:where(.root_reset.ul):hover, -:where(.root_reset .__wab_expr_html_text) ul:hover, -:where(.root_reset_tags) ul:hover, -ul:where(.root_reset_tags):hover { -} - -:where(.root_reset) li:where(.li):hover, -li:where(.root_reset.li):hover, -:where(.root_reset .__wab_expr_html_text) li:hover, -:where(.root_reset_tags) li:hover, -li:where(.root_reset_tags):hover { -} diff --git a/platform/wab/src/wab/client/plasmic/PlasmicButton.module.css b/platform/wab/src/wab/client/plasmic/PlasmicButton.module.css index 734510ed6d..d6343f80a8 100644 --- a/platform/wab/src/wab/client/plasmic/PlasmicButton.module.css +++ b/platform/wab/src/wab/client/plasmic/PlasmicButton.module.css @@ -162,112 +162,112 @@ border-style: solid; border-color: var(--token-yUAjM3D7ZnY); } -.root:hover { +.root:hover:hover { background: var(--token-bV4cCeIniS6); } -.root:focus { +.root:focus:focus { box-shadow: 0px 0px 0px 2px #0091ff80; outline: none; } -.root:active { +.root:active:active { background: var(--token-Ik3bdE1e1Uy); } -.roottype_primary:hover { +.roottype_primary:hover:hover { background: var(--token-mu3x63xzJRW); } -.roottype_primary:focus { +.roottype_primary:focus:focus { box-shadow: 0px 0px 0px 2px #0091ff80; outline: none; } -.roottype_primary:active { +.roottype_primary:active:active { background: var(--token-VUsIDivgUss); } -.roottype_link:hover { +.roottype_link:hover:hover { background: #ffffff00; } -.roottype_link:focus { +.roottype_link:focus:focus { outline: none; } -.roottype_link:active { +.roottype_link:active:active { background: none; } -.roottype_backlitError:hover { +.roottype_backlitError:hover:hover { background: var(--token-HKVCQ5ZKovK); } -.roottype_backlitError:active { +.roottype_backlitError:active:active { background: var(--token-5kjtdCiiOPB); } -.roottype_backlitInfo:active { +.roottype_backlitInfo:active:active { background: var(--token-RhvOnhv_xIi); } -.roottype_backlitInfo:hover { +.roottype_backlitInfo:hover:hover { background: var(--token-dqEx_KxIoYV); } -.roottype_toggleOn:hover { +.roottype_toggleOn:hover:hover { border-style: solid; border-color: #dbdbd7; } -.roottype_toggleOff:hover { +.roottype_toggleOff:hover:hover { background: var(--token-bV4cCeIniS6); border-style: solid; border-color: #dbdbd7; } -.roottype_clearPrimary:hover { +.roottype_clearPrimary:hover:hover { background: var(--token-dqEx_KxIoYV); } -.roottype_clearPrimary:focus { +.roottype_clearPrimary:focus:focus { outline: none; } -.roottype_clearPrimary:active { +.roottype_clearPrimary:active:active { background: var(--token-RhvOnhv_xIi); } -.roottype_seamless:hover { +.roottype_seamless:hover:hover { background: none; } -.roottype_seamless:active { +.roottype_seamless:active:active { background: none; } -.roottype_noPressed:active { +.roottype_noPressed:active:active { background: none; } -.rootwithIcons_endIconOnHover:hover { +.rootwithIcons_endIconOnHover:hover:hover { padding-right: 6px; background: none; column-gap: 0px; row-gap: 0px; } -.rootwithIcons_endIconOnHover:focus { +.rootwithIcons_endIconOnHover:focus:focus { box-shadow: none; outline: none; } -.rootcolor_blue:hover { +.rootcolor_blue:hover:hover { background: var(--token-dqEx_KxIoYV); } -.rootcolor_blue:active { +.rootcolor_blue:active:active { background: var(--token-RhvOnhv_xIi); } -.rootcolor_green:hover { +.rootcolor_green:hover:hover { background: var(--token-dv0BWWyaHl7H); } -.rootcolor_green:active { +.rootcolor_green:active:active { background: var(--token-3AptjBfMqvPS); } -.rootcolor_red:hover { +.rootcolor_red:hover:hover { background: var(--token-HKVCQ5ZKovK); } -.rootcolor_red:active { +.rootcolor_red:active:active { background: var(--token-5kjtdCiiOPB); } -.rootcolor_purple:hover { +.rootcolor_purple:hover:hover { background: var(--token-oPrqrxbKHqk); } -.rootcolor_purple:active { +.rootcolor_purple:active:active { background: var(--token-I2zAJ678hbp); } -.rootcolor_darkRed:hover { +.rootcolor_darkRed:hover:hover { background: var(--token-Y2CWh0ci95a); } -.rootcolor_darkRed:active { +.rootcolor_darkRed:active:active { background: var(--token-Y2CWh0ci95a); } .startIconContainer { diff --git a/platform/wab/src/wab/client/plasmic/PlasmicButton.tsx b/platform/wab/src/wab/client/plasmic/PlasmicButton.tsx index 841b01f7b2..ad227c82fe 100644 --- a/platform/wab/src/wab/client/plasmic/PlasmicButton.tsx +++ b/platform/wab/src/wab/client/plasmic/PlasmicButton.tsx @@ -34,7 +34,7 @@ import { _useStyleTokens } from "./plasmic_kit_design_system/PlasmicStyleTokensP import "@plasmicapp/react-web/lib/plasmic.css"; import sty from "./PlasmicButton.module.css"; // plasmic-import: SEF-sRmSoqV5c/css -import projectcss from "./PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "./PP__plasmickit_design_system.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss import ArrowRightSvgIcon from "./plasmic_kit_icons/icons/PlasmicIcon__ArrowRightSvg"; // plasmic-import: 9Jv8jb253/icon import ChevronDownSvgIcon from "./plasmic_kit_icons/icons/PlasmicIcon__ChevronDownSvg"; // plasmic-import: xZrB9_0ir/icon @@ -240,6 +240,7 @@ function PlasmicButton__RenderFunc(props: { ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, @@ -262,12 +263,12 @@ function PlasmicButton__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.button, - projectcss.button__tXkSR, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "button", + "button__tXkSR", + "root_reset_tXkSR39sgCDWSitZxC5xFV", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { @@ -413,7 +414,7 @@ function PlasmicButton__RenderFunc(props: {
), @@ -660,7 +661,7 @@ function PlasmicButton__RenderFunc(props: {
), diff --git a/platform/wab/src/wab/client/plasmic/PlasmicIconButton.module.css b/platform/wab/src/wab/client/plasmic/PlasmicIconButton.module.css index b80c4343a6..2122910ebe 100644 --- a/platform/wab/src/wab/client/plasmic/PlasmicIconButton.module.css +++ b/platform/wab/src/wab/client/plasmic/PlasmicIconButton.module.css @@ -153,134 +153,134 @@ .rootisActive_type_primary_type_dividedRight { background: var(--token-mu3x63xzJRW); } -.roottype_round:hover { +.roottype_round:hover:hover { background: var(--token-Ik3bdE1e1Uy); border-color: #ffffff00; } -.roottype_round:active { +.roottype_round:active:active { background: var(--token-Ik3bdE1e1Uy); } -.roottype_roundClear:active { +.roottype_roundClear:active:active { background: var(--token-Ik3bdE1e1Uy); } -.roottype_roundClear:hover { +.roottype_roundClear:hover:hover { background: var(--token-bV4cCeIniS6); } -.roottype_dividedRight:hover { +.roottype_dividedRight:hover:hover { background: var(--token-Ik3bdE1e1Uy); } -.roottype_dividedRight:active { +.roottype_dividedRight:active:active { background: var(--token-Ik3bdE1e1Uy); } -.roottype_primary:active { +.roottype_primary:active:active { background: var(--token-VUsIDivgUss); } -.roottype_primary:hover { +.roottype_primary:hover:hover { background: var(--token-mu3x63xzJRW); } -.roottype_noDivider:hover { +.roottype_noDivider:hover:hover { background: var(--token-Ik3bdE1e1Uy); } -.roottype_noDivider:active { +.roottype_noDivider:active:active { background: var(--token-Ik3bdE1e1Uy); } -.roottype_stepUp:hover { +.roottype_stepUp:hover:hover { background: var(--token-Ik3bdE1e1Uy); } -.roottype_stepUp:active { +.roottype_stepUp:active:active { background: var(--token-hoA5qaM-91G); } -.roottype_red:hover { +.roottype_red:hover:hover { background: linear-gradient( var(--token-HKVCQ5ZKovK), var(--token-HKVCQ5ZKovK) ), var(--token-brSQU2ryS); } -.roottype_red:active { +.roottype_red:active:active { background: linear-gradient( var(--token-5kjtdCiiOPB), var(--token-5kjtdCiiOPB) ), var(--token-brSQU2ryS); } -.roottype_green:hover { +.roottype_green:hover:hover { background: linear-gradient( var(--token-dv0BWWyaHl7H), var(--token-dv0BWWyaHl7H) ), var(--token-brSQU2ryS); } -.roottype_green:active { +.roottype_green:active:active { background: linear-gradient( var(--token-3AptjBfMqvPS), var(--token-3AptjBfMqvPS) ), var(--token-brSQU2ryS); } -.roottype_blue:hover { +.roottype_blue:hover:hover { background: linear-gradient( var(--token-dqEx_KxIoYV), var(--token-dqEx_KxIoYV) ), var(--token-brSQU2ryS); } -.roottype_blue:active { +.roottype_blue:active:active { background: linear-gradient( var(--token-RhvOnhv_xIi), var(--token-RhvOnhv_xIi) ), var(--token-brSQU2ryS); } -.roottype_purple:hover { +.roottype_purple:hover:hover { background: linear-gradient( var(--token-oPrqrxbKHqk), var(--token-oPrqrxbKHqk) ), var(--token-brSQU2ryS); } -.roottype_purple:active { +.roottype_purple:active:active { background: linear-gradient( var(--token-I2zAJ678hbp), var(--token-I2zAJ678hbp) ), var(--token-brSQU2ryS); } -.rootisActive:hover { +.rootisActive:hover:hover { background: var(--token-hoA5qaM-91G); border-color: rgb(201, 204, 209); } -.rootwithBackgroundHover:hover { +.rootwithBackgroundHover:hover:hover { background: var(--token-Ik3bdE1e1Uy); } -.rootwithBackgroundHover:active { +.rootwithBackgroundHover:active:active { background: var(--token-Ik3bdE1e1Uy); } -.rootwithRedBackgroundHover:hover { +.rootwithRedBackgroundHover:hover:hover { background: var(--token-HKVCQ5ZKovK); } -.rootwithRedBackgroundHover:active { +.rootwithRedBackgroundHover:active:active { background: var(--token-5kjtdCiiOPB); } -.rootwithGreenBackgroundHover:hover { +.rootwithGreenBackgroundHover:hover:hover { background: var(--token-dv0BWWyaHl7H); } -.rootwithGreenBackgroundHover:active { +.rootwithGreenBackgroundHover:active:active { background: var(--token-3AptjBfMqvPS); } -.roottype_primary_type_dividedRight:hover { +.roottype_primary_type_dividedRight:hover:hover { background: var(--token-mu3x63xzJRW); } -.roottype_primary_type_dividedRight:active { +.roottype_primary_type_dividedRight:active:active { background: var(--token-VUsIDivgUss); } -.roottype_noDivider_type_primary:hover { +.roottype_noDivider_type_primary:hover:hover { background: var(--token-VUsIDivgUss); } -.rootwithBackgroundHover_type_primary:hover { +.rootwithBackgroundHover_type_primary:hover:hover { background: var(--token-VUsIDivgUss); } -.root___focus__focusVisible:focus { +.root___focus__focusVisible:focus:focus { box-shadow: 0px 0px 0px 2px #0091ff80; outline: none; } diff --git a/platform/wab/src/wab/client/plasmic/PlasmicIconButton.tsx b/platform/wab/src/wab/client/plasmic/PlasmicIconButton.tsx index 6b6bbb9fff..7afe772ef4 100644 --- a/platform/wab/src/wab/client/plasmic/PlasmicIconButton.tsx +++ b/platform/wab/src/wab/client/plasmic/PlasmicIconButton.tsx @@ -34,7 +34,7 @@ import { _useStyleTokens } from "./plasmic_kit_design_system/PlasmicStyleTokensP import "@plasmicapp/react-web/lib/plasmic.css"; import sty from "./PlasmicIconButton.module.css"; // plasmic-import: LPry-TF4j22a/css -import projectcss from "./PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "./PP__plasmickit_design_system.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss import DotsHorizontalIcon from "./plasmic_kit_design_system/PlasmicIcon__DotsHorizontal"; // plasmic-import: GkkhQuMH0/icon import ChevronDownSvgIcon from "./plasmic_kit_icons/icons/PlasmicIcon__ChevronDownSvg"; // plasmic-import: xZrB9_0ir/icon @@ -263,6 +263,7 @@ function PlasmicIconButton__RenderFunc(props: { ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, @@ -291,12 +292,12 @@ function PlasmicIconButton__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.button, - projectcss.button__tXkSR, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "button", + "button__tXkSR", + "root_reset_tXkSR39sgCDWSitZxC5xFV", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { @@ -401,7 +402,7 @@ function PlasmicIconButton__RenderFunc(props: { {renderPlasmicSlot({ defaultContents: ( ), @@ -559,7 +560,7 @@ function PlasmicIconButton__RenderFunc(props: { ? renderPlasmicSlot({ defaultContents: ( ), @@ -659,7 +660,7 @@ function PlasmicIconButton__RenderFunc(props: { * { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} +:where(.root_reset_caTPwKxj5ZrD9LQ7DMdK4Z) { +} diff --git a/platform/wab/src/wab/client/plasmic/plasmic_embed_css/PlasmicStyleTokensProvider.tsx b/platform/wab/src/wab/client/plasmic/plasmic_embed_css/PlasmicStyleTokensProvider.tsx index e0335a2915..3bd4d39faa 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_embed_css/PlasmicStyleTokensProvider.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_embed_css/PlasmicStyleTokensProvider.tsx @@ -9,10 +9,10 @@ import { createUseStyleTokens } from "@plasmicapp/react-web"; import { _useGlobalVariants } from "./plasmic"; // plasmic-import: 8PtdGodUbexNYgkuyBUcWu/projectModule -import projectcss from "./plasmic_plasmic_embed_css.module.css"; // plasmic-import: 8PtdGodUbexNYgkuyBUcWu/projectcss +import "./plasmic_plasmic_embed_css.css"; // plasmic-import: 8PtdGodUbexNYgkuyBUcWu/projectcss const data = { - base: `${projectcss.plasmic_tokens}`, + base: `${"plasmic_tokens_8PtdGodUbexNYgkuyBUcWu"}`, varianted: [], }; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_embed_css/plasmic_plasmic_embed_css.module.css b/platform/wab/src/wab/client/plasmic/plasmic_embed_css/plasmic_plasmic_embed_css.css similarity index 99% rename from platform/wab/src/wab/client/plasmic/plasmic_embed_css/plasmic_plasmic_embed_css.module.css rename to platform/wab/src/wab/client/plasmic/plasmic_embed_css/plasmic_plasmic_embed_css.css index f2ce0a3751..2f7470b2e0 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_embed_css/plasmic_plasmic_embed_css.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_embed_css/plasmic_plasmic_embed_css.css @@ -365,6 +365,6 @@ .__wab_expr_html_text { white-space: normal; } -:where(.root_reset) { +:where(.root_reset_8PtdGodUbexNYgkuyBUcWu) { white-space: var(--mixin-2CBzNdhBI2Og_white-space); } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftFontsPanel.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftFontsPanel.module.css index 9322d80715..0ab764c57a 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftFontsPanel.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftFontsPanel.module.css @@ -38,10 +38,10 @@ width: 16px; height: 1em; } -.textWithInfo__kCMq:global(.__wab_instance) { +.textWithInfo__dwb8X:global(.__wab_instance) { max-width: 100%; } -.text__tsu2V { +.text__z1ZX7 { font-weight: 600; font-size: 14px; } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftFontsPanel.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftFontsPanel.tsx index d41c5a6033..04ca71afc6 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftFontsPanel.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftFontsPanel.tsx @@ -30,7 +30,7 @@ import { _useStyleTokens } from "../plasmic_kit_left_pane/PlasmicStyleTokensProv import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../PP__plasmickit_left_pane.module.css"; // plasmic-import: aukbrhkegRkQ6KizvhdUPT/projectcss +import "../PP__plasmickit_left_pane.css"; // plasmic-import: aukbrhkegRkQ6KizvhdUPT/projectcss import sty from "./PlasmicLeftFontsPanel.module.css"; // plasmic-import: 5oz1qmvGBe/css import ChevronDownSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__ChevronDownSvg"; // plasmic-import: xZrB9_0ir/icon @@ -99,10 +99,10 @@ function PlasmicLeftFontsPanel__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_aukbrhkegRkQ6KizvhdUPT", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root )} @@ -123,14 +123,14 @@ function PlasmicLeftFontsPanel__RenderFunc(props: { className={classNames("__wab_instance", sty.newFontButton)} endIcon={ } size={"wide"} startIcon={ } @@ -146,9 +146,10 @@ function PlasmicLeftFontsPanel__RenderFunc(props: { data-plasmic-name={"link"} data-plasmic-override={overrides.link} className={classNames( - projectcss.all, - projectcss.a, - projectcss.__wab_text, + "all", + "a", + "a__aukbr", + "__wab_text", sty.link )} href={"https://docs.plasmic.app/learn/custom-fonts/"} @@ -164,7 +165,7 @@ function PlasmicLeftFontsPanel__RenderFunc(props: {
) as React.ReactElement | null; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftImagesPanel.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftImagesPanel.tsx index 820cfb5dcc..d2bcd20a26 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftImagesPanel.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftImagesPanel.tsx @@ -33,7 +33,7 @@ import { _useStyleTokens } from "../plasmic_kit_left_pane/PlasmicStyleTokensProv import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../PP__plasmickit_left_pane.module.css"; // plasmic-import: aukbrhkegRkQ6KizvhdUPT/projectcss +import "../PP__plasmickit_left_pane.css"; // plasmic-import: aukbrhkegRkQ6KizvhdUPT/projectcss import sty from "./PlasmicLeftImagesPanel.module.css"; // plasmic-import: ECu8FUyP0f3/css import ChevronDownSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__ChevronDownSvg"; // plasmic-import: xZrB9_0ir/icon @@ -110,15 +110,17 @@ function PlasmicLeftImagesPanel__RenderFunc(props: { path: "compact", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.compact, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.compact, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -131,10 +133,10 @@ function PlasmicLeftImagesPanel__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_aukbrhkegRkQ6KizvhdUPT", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { [sty.rootcompact]: hasVariant($state, "compact", "compact") } @@ -162,14 +164,14 @@ function PlasmicLeftImagesPanel__RenderFunc(props: { data-plasmic-override={overrides.newIconButton} endIcon={ } size={hasVariant($state, "compact", "compact") ? "small" : "wide"} startIcon={ } @@ -192,18 +194,13 @@ function PlasmicLeftImagesPanel__RenderFunc(props: { })} >
{hasVariant($state, "compact", "compact") ? "Icons" @@ -221,7 +218,7 @@ function PlasmicLeftImagesPanel__RenderFunc(props: {
@@ -235,14 +232,14 @@ function PlasmicLeftImagesPanel__RenderFunc(props: { data-plasmic-override={overrides.newImageButton} endIcon={ } size={"wide"} startIcon={ } @@ -265,18 +262,13 @@ function PlasmicLeftImagesPanel__RenderFunc(props: { })} >
{hasVariant($state, "compact", "compact") ? "Images" @@ -296,7 +288,7 @@ function PlasmicLeftImagesPanel__RenderFunc(props: {
@@ -354,7 +346,8 @@ type NodeComponentProps = variants?: PlasmicLeftImagesPanel__VariantsArgs; args?: PlasmicLeftImagesPanel__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftImportsPanel.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftImportsPanel.module.css index 85a74a682a..524e5680e6 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftImportsPanel.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftImportsPanel.module.css @@ -84,10 +84,10 @@ width: 16px; height: 1em; } -.textWithInfo__bJbEd:global(.__wab_instance) { +.textWithInfo__xyYdk:global(.__wab_instance) { max-width: 100%; } -.text__pG0Yd { +.text__xQiC2 { font-weight: 600; font-size: 14px; } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftImportsPanel.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftImportsPanel.tsx index 4e9e917497..402d1bd62a 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftImportsPanel.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftImportsPanel.tsx @@ -33,7 +33,7 @@ import { _useStyleTokens } from "../plasmic_kit_left_pane/PlasmicStyleTokensProv import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../PP__plasmickit_left_pane.module.css"; // plasmic-import: aukbrhkegRkQ6KizvhdUPT/projectcss +import "../PP__plasmickit_left_pane.css"; // plasmic-import: aukbrhkegRkQ6KizvhdUPT/projectcss import sty from "./PlasmicLeftImportsPanel.module.css"; // plasmic-import: MeRxD_0BtJ/css import ChevronDownSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__ChevronDownSvg"; // plasmic-import: xZrB9_0ir/icon @@ -114,21 +114,24 @@ function PlasmicLeftImportsPanel__RenderFunc(props: { path: "state", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.state, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.state, }, { path: "withUpdateAll", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.withUpdateAll, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.withUpdateAll, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -141,10 +144,10 @@ function PlasmicLeftImportsPanel__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_aukbrhkegRkQ6KizvhdUPT", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { @@ -171,7 +174,7 @@ function PlasmicLeftImportsPanel__RenderFunc(props: {
} size={"wide"} startIcon={ } @@ -208,14 +211,14 @@ function PlasmicLeftImportsPanel__RenderFunc(props: { } endIcon={ } size={"wide"} startIcon={ } size={"wide"} startIcon={ } size={"wide"} startIcon={ } @@ -149,7 +149,7 @@ function PlasmicLeftMixinsPanel__RenderFunc(props: {
) as React.ReactElement | null; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftPaneHeader.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftPaneHeader.tsx index 4eb14c28d2..84b1f540fa 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftPaneHeader.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftPaneHeader.tsx @@ -34,7 +34,7 @@ import { _useStyleTokens } from "../plasmic_kit_left_pane/PlasmicStyleTokensProv import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../PP__plasmickit_left_pane.module.css"; // plasmic-import: aukbrhkegRkQ6KizvhdUPT/projectcss +import "../PP__plasmickit_left_pane.css"; // plasmic-import: aukbrhkegRkQ6KizvhdUPT/projectcss import sty from "./PlasmicLeftPaneHeader.module.css"; // plasmic-import: XLa52PvduIy/css import ChevronDownSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__ChevronDownSvg"; // plasmic-import: xZrB9_0ir/icon @@ -153,52 +153,56 @@ function PlasmicLeftPaneHeader__RenderFunc(props: { path: "noActions", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.noActions, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.noActions, }, { path: "showAlert", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.showAlert, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.showAlert, }, { path: "compact", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.compact, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.compact, }, { path: "expandState", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.expandState, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.expandState, }, { path: "hasTitleActions", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.hasTitleActions, }, { path: "noDescription", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.noDescription, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.noDescription, }, { path: "borderless", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.borderless, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.borderless, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -211,10 +215,10 @@ function PlasmicLeftPaneHeader__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_aukbrhkegRkQ6KizvhdUPT", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.header, { @@ -239,7 +243,7 @@ function PlasmicLeftPaneHeader__RenderFunc(props: { > {(hasVariant($state, "compact", "compact") ? false : true) ? (
{renderPlasmicSlot({ defaultContents: null, @@ -380,32 +380,28 @@ function PlasmicLeftPaneHeader__RenderFunc(props: {
{renderPlasmicSlot({ defaultContents: @@ -425,7 +421,7 @@ function PlasmicLeftPaneHeader__RenderFunc(props: {
@@ -521,7 +517,7 @@ function PlasmicLeftPaneHeader__RenderFunc(props: { }) : null}
} size={"wide"} startIcon={ } @@ -628,7 +624,8 @@ type NodeComponentProps = variants?: PlasmicLeftPaneHeader__VariantsArgs; args?: PlasmicLeftPaneHeader__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftSearchPanel.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftSearchPanel.tsx index 7b82df70da..109bb55639 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftSearchPanel.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicLeftSearchPanel.tsx @@ -32,7 +32,7 @@ import { _useStyleTokens } from "../plasmic_kit_left_pane/PlasmicStyleTokensProv import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../PP__plasmickit_left_pane.module.css"; // plasmic-import: aukbrhkegRkQ6KizvhdUPT/projectcss +import "../PP__plasmickit_left_pane.css"; // plasmic-import: aukbrhkegRkQ6KizvhdUPT/projectcss import sty from "./PlasmicLeftSearchPanel.module.css"; // plasmic-import: TqAPn0srTq/css import CollapseAllIcon from "../plasmic_kit_design_system/PlasmicIcon__CollapseAll"; // plasmic-import: Bg-ZlWgLuQ/icon @@ -107,15 +107,18 @@ function PlasmicLeftSearchPanel__RenderFunc(props: { path: "rightOptions", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.rightOptions, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.rightOptions, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -128,10 +131,10 @@ function PlasmicLeftSearchPanel__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_aukbrhkegRkQ6KizvhdUPT", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.searchPanel, { @@ -168,7 +171,7 @@ function PlasmicLeftSearchPanel__RenderFunc(props: {
) : null} - - +
{(hasVariant($state, "noProjects", "noProjects") ? true : false) ? renderPlasmicSlot({ defaultContents: (
{ 'You have no projects. Create a new one by hitting "New project" in the top bar.' @@ -880,8 +861,9 @@ function PlasmicProjectList__RenderFunc(props: { data-plasmic-override={overrides.preview2} alt={""} className={classNames( - projectcss.all, - projectcss.img, + "all", + "img", + "img__ooL7E", sty.preview2 )} src={image3YherfIxkolNxf} @@ -891,8 +873,9 @@ function PlasmicProjectList__RenderFunc(props: { {""} @@ -919,8 +902,9 @@ function PlasmicProjectList__RenderFunc(props: { data-plasmic-override={overrides.preview3} alt={""} className={classNames( - projectcss.all, - projectcss.img, + "all", + "img", + "img__ooL7E", sty.preview3 )} src={image3YherfIxkolNxf} @@ -930,8 +914,9 @@ function PlasmicProjectList__RenderFunc(props: { {""} @@ -963,8 +948,9 @@ function PlasmicProjectList__RenderFunc(props: { {""} @@ -1000,8 +987,9 @@ function PlasmicProjectList__RenderFunc(props: { {""} @@ -1032,15 +1021,15 @@ function PlasmicProjectList__RenderFunc(props: { } icon={ } name={"Deleted"} states={"collapsed"} /> - - +
+
) as React.ReactElement | null; } @@ -1155,7 +1144,8 @@ type NodeComponentProps = variants?: PlasmicProjectList__VariantsArgs; args?: PlasmicProjectList__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicProjectListItem.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicProjectListItem.module.css index 62ee03a9a6..86994e2549 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicProjectListItem.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicProjectListItem.module.css @@ -4,37 +4,26 @@ position: relative; display: flex; flex-direction: row; + align-items: center; + justify-content: space-between; width: 100%; background: var(--token-iR8SeEwQZ); + column-gap: 8px; min-width: 0; border-radius: 8px; padding: 1rem; border: 1px solid var(--token-eBt2ZgqRUCz); } -.root > :global(.__wab_flex-container) { - flex-direction: row; - align-items: center; - justify-content: space-between; - min-width: 0; - margin-left: calc(0px - 8px); - width: calc(100% + 8px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-left: 8px; -} -.root:hover { +.root:hover:hover { box-shadow: 0px 4px 8px 1px var(--token-zBV3PmIqbJ9F); opacity: 1; background: var(--token-bV4cCeIniS6); border-color: var(--token-PTyaboLP9ZK); } -.root:active { +.root:active:active { background: var(--token-Ik3bdE1e1Uy); } -.root___focus__focusVisible:focus { +.root___focus__focusVisible:focus:focus { box-shadow: 0px 0px 0px 2px #0091ff80; outline: none; } @@ -64,22 +53,9 @@ .freeBox__e1Zgn { display: flex; position: relative; -} -.freeBox__e1Zgn > :global(.__wab_flex-container) { align-items: center; justify-content: flex-start; - margin-left: calc(0px - 4px); - width: calc(100% + 4px); -} -.freeBox__e1Zgn > :global(.__wab_flex-container) > *, -.freeBox__e1Zgn > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox__e1Zgn > :global(.__wab_flex-container) > picture > img, -.freeBox__e1Zgn - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 4px; + column-gap: 4px; } .slotTargetTimestamp { font-size: 11px; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicProjectListItem.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicProjectListItem.tsx index 8853535bf7..b90628ed28 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicProjectListItem.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicProjectListItem.tsx @@ -18,12 +18,10 @@ import { MultiChoiceArg, PlasmicLink as PlasmicLink__, SingleBooleanChoiceArg, - Stack as Stack__, StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, hasVariant, renderPlasmicSlot, useDollarState, @@ -32,19 +30,16 @@ import { import { useDataEnv } from "@plasmicapp/react-web/lib/host"; import CopyButton from "../../components/CopyButton"; // plasmic-import: u7TII072Seb/component -import Shared from "../../components/dashboard/Shared"; // plasmic-import: r2L4x5kulJ/component import EditableResourceName from "../../components/EditableResourceName"; // plasmic-import: UttGK3xVrb/component +import Shared from "../../components/dashboard/Shared"; // plasmic-import: r2L4x5kulJ/component import Button from "../../components/widgets/Button"; // plasmic-import: SEF-sRmSoqV5c/component import MenuButton from "../../components/widgets/MenuButton"; // plasmic-import: h69wHrrKtL/component - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useStyleTokens } from "../plasmic_kit_dashboard/PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider +import { _useGlobalVariants } from "../plasmic_kit_dashboard/plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicProjectListItem.module.css"; // plasmic-import: 2FvZipCkyxl/css import ArrowRightSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__ArrowRightSvg"; // plasmic-import: 9Jv8jb253/icon @@ -127,21 +122,27 @@ function PlasmicProjectListItem__RenderFunc(props: { path: "explorations", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.explorations, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.explorations, }, { path: "showWorkspace", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.showWorkspace, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.showWorkspace, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -158,48 +159,24 @@ function PlasmicProjectListItem__RenderFunc(props: { hover_root: isRootHover, }; - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return ( -
- {"\u2022"}
@@ -335,13 +305,13 @@ function PlasmicProjectListItem__RenderFunc(props: { })} endIcon={ } startIcon={ } @@ -351,13 +321,7 @@ function PlasmicProjectListItem__RenderFunc(props: { : undefined } > -
+
{"PlasmicKit"}
@@ -382,13 +346,13 @@ function PlasmicProjectListItem__RenderFunc(props: { version={"ID: ooL7EhXDmFQWnW9sxtchhE"} /> ) : null} - +
{"updated just now"}
- + ) as React.ReactElement | null; } @@ -465,7 +425,8 @@ type NodeComponentProps = variants?: PlasmicProjectListItem__VariantsArgs; args?: PlasmicProjectListItem__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicProjectListSection.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicProjectListSection.module.css index a1535f5215..2a6060e15b 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicProjectListSection.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicProjectListSection.module.css @@ -5,20 +5,10 @@ position: relative; flex-direction: column; background: var(--token-9jh0BkCENS); + row-gap: 0px; border-radius: 1rem; border: 1px solid var(--token-hoA5qaM-91G); } -.root > :global(.__wab_flex-container) { - flex-direction: column; - margin-top: calc(0px - 0px); - height: calc(100% + 0px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-top: 0px; -} .rootstates_collapsed { padding-bottom: 0px; } @@ -29,27 +19,13 @@ display: flex; flex-direction: row; cursor: pointer; + justify-content: space-between; + align-items: center; + column-gap: 8px; border-radius: 16px 16px 0px 0px; padding: 1rem; border-style: none; } -.header > :global(.__wab_flex-container) { - flex-direction: row; - justify-content: space-between; - align-items: center; - margin-left: calc(0px - 8px); - width: calc(100% + 8px); -} -.header > :global(.__wab_flex-container) > *, -.header > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.header > :global(.__wab_flex-container) > picture > img, -.header - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 8px; -} .headerstates_collapsed { border-radius: 16px; } @@ -101,21 +77,7 @@ padding-right: 1rem; padding-bottom: 1rem; padding-left: 1rem; -} -.freeBox___3C2Jp > :global(.__wab_flex-container) { - flex-direction: column; - margin-top: calc(0px - 16px); - height: calc(100% + 16px); -} -.freeBox___3C2Jp > :global(.__wab_flex-container) > *, -.freeBox___3C2Jp > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox___3C2Jp > :global(.__wab_flex-container) > picture > img, -.freeBox___3C2Jp - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-top: 16px; + row-gap: 16px; } .starterGroup__gEj3J:global(.__wab_instance) { position: relative; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicProjectListSection.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicProjectListSection.tsx index c420b8c8da..d8e91348bc 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicProjectListSection.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicProjectListSection.tsx @@ -14,32 +14,27 @@ import * as React from "react"; import { - Flex as Flex__, - PlasmicIcon as PlasmicIcon__, - SingleChoiceArg, - Stack as Stack__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, + Flex as Flex__, hasVariant, + PlasmicIcon as PlasmicIcon__, renderPlasmicSlot, + SingleChoiceArg, + StrictProps, useDollarState, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; import StarterGroup from "../../components/StarterGroup"; // plasmic-import: u6dq5eydCj/component import StarterProject from "../../components/StarterProject"; // plasmic-import: CCsDeqqYeoM/component - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useGlobalVariants } from "../plasmic_kit_dashboard/plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule +import { _useStyleTokens } from "../plasmic_kit_dashboard/PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicProjectListSection.module.css"; // plasmic-import: diKNfA_-roE/css import eyeSvgZxKyHRa6Q6Pa from "../plasmic_kit_design_system/images/eyeSvg.svg"; // plasmic-import: Zx-kyHRa6Q6PA/picture @@ -126,76 +121,53 @@ function PlasmicProjectListSection__RenderFunc(props: { path: "states", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.states, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.states, }, { path: "type", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.type, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.type, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return ( - - ), @@ -236,7 +208,7 @@ function PlasmicProjectListSection__RenderFunc(props: { ), }), })} -
+
- + {(hasVariant($state, "states", "collapsed") ? false : true) ? ( - @@ -323,8 +295,9 @@ function PlasmicProjectListSection__RenderFunc(props: { {""} @@ -368,8 +342,9 @@ function PlasmicProjectListSection__RenderFunc(props: { {""} @@ -405,8 +381,9 @@ function PlasmicProjectListSection__RenderFunc(props: { {""} @@ -438,9 +416,9 @@ function PlasmicProjectListSection__RenderFunc(props: { ), value: args.container, })} - +
) : null} -
+
) as React.ReactElement | null; } @@ -469,7 +447,8 @@ type NodeComponentProps = variants?: PlasmicProjectListSection__VariantsArgs; args?: PlasmicProjectListSection__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicSearchbox.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicSearchbox.tsx index ff96efc431..667f54c881 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicSearchbox.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicSearchbox.tsx @@ -30,7 +30,7 @@ import { _useStyleTokens } from "../plasmic_kit_design_system/PlasmicStyleTokens import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_design_system.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss import sty from "./PlasmicSearchbox.module.css"; // plasmic-import: po7gr0PX4_gWo/css import CloseSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__CloseSvg"; // plasmic-import: DhvEHyCHT/icon @@ -157,6 +157,7 @@ function PlasmicSearchbox__RenderFunc(props: { ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, @@ -198,7 +199,7 @@ function PlasmicSearchbox__RenderFunc(props: { placeholder={args.placeholder} prefixIcon={ :global(.__wab_flex-container) { - flex-direction: column; - margin-top: calc(0px - 8px); - height: calc(100% + 8px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-top: 8px; + row-gap: 8px; } .freeBox__pv2In { display: flex; @@ -25,23 +15,9 @@ display: flex; position: relative; flex-direction: row; -} -.freeBox__vZxO3 > :global(.__wab_flex-container) { - flex-direction: row; align-items: center; justify-content: flex-start; - margin-left: calc(0px - 2px); - width: calc(100% + 2px); -} -.freeBox__vZxO3 > :global(.__wab_flex-container) > *, -.freeBox__vZxO3 > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox__vZxO3 > :global(.__wab_flex-container) > picture > img, -.freeBox__vZxO3 - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 2px; + column-gap: 2px; } .slotTargetHeading { font-size: 14px; @@ -62,20 +38,7 @@ .freeBox__irp33 { display: flex; position: relative; -} -.freeBox__irp33 > :global(.__wab_flex-container) { - margin-left: calc(0px - 8px); - width: calc(100% + 8px); -} -.freeBox__irp33 > :global(.__wab_flex-container) > *, -.freeBox__irp33 > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox__irp33 > :global(.__wab_flex-container) > picture > img, -.freeBox__irp33 - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 8px; + column-gap: 8px; } .viewDocs:global(.__wab_instance) { position: relative; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicStarterGroup.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicStarterGroup.tsx index ea855211a1..6c2d19046b 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicStarterGroup.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicStarterGroup.tsx @@ -14,32 +14,27 @@ import * as React from "react"; import { - Flex as Flex__, - SingleBooleanChoiceArg, - SingleChoiceArg, - Stack as Stack__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, + Flex as Flex__, hasVariant, renderPlasmicSlot, + SingleBooleanChoiceArg, + SingleChoiceArg, + StrictProps, useDollarState, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; import Link from "../../components/Link"; // plasmic-import: IQU7DmjqUs/component import StarterProject from "../../components/StarterProject"; // plasmic-import: CCsDeqqYeoM/component - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useGlobalVariants } from "../plasmic_kit_dashboard/plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule +import { _useStyleTokens } from "../plasmic_kit_dashboard/PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicStarterGroup.module.css"; // plasmic-import: u6dq5eydCj/css import eyeSvgZxKyHRa6Q6Pa from "../plasmic_kit_design_system/images/eyeSvg.svg"; // plasmic-import: Zx-kyHRa6Q6PA/picture @@ -130,71 +125,52 @@ function PlasmicStarterGroup__RenderFunc(props: { path: "type", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.type, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.type, }, { path: "twoColumnGrid", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.twoColumnGrid, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.twoColumnGrid, }, { path: "gridColumns", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.gridColumns, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.gridColumns, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return ( - {(hasVariant($state, "type", "withoutHeader") ? false : true) ? (
- +
{renderPlasmicSlot({ defaultContents: "Subheading", value: args.heading, @@ -231,22 +203,18 @@ function PlasmicStarterGroup__RenderFunc(props: { - - +
+
} @@ -259,17 +227,17 @@ function PlasmicStarterGroup__RenderFunc(props: { className={classNames("__wab_instance", sty.more)} icon={ } text={"See all\u2026"} /> - +
) : null}
@@ -343,8 +313,9 @@ function PlasmicStarterGroup__RenderFunc(props: { {""} @@ -373,7 +345,7 @@ function PlasmicStarterGroup__RenderFunc(props: { value: args.container, })}
-
+
) as React.ReactElement | null; } @@ -404,7 +376,8 @@ type NodeComponentProps = variants?: PlasmicStarterGroup__VariantsArgs; args?: PlasmicStarterGroup__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicStarterProject.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicStarterProject.module.css index 5a7f43449e..f296a7e926 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicStarterProject.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicStarterProject.module.css @@ -17,19 +17,19 @@ box-shadow: 0px 8px 24px -16px #00000038, 0px 8px 15px -16px #00000024; border-radius: 8px; } -.root:focus { +.root:focus:focus { outline: none; } -.rootimage_withImage:focus { +.rootimage_withImage:focus:focus { outline: none; } -.rootimage_withImage:hover { +.rootimage_withImage:hover:hover { box-shadow: 0px 8px 32px -8px #00000038, 0px 8px 20px -16px #00000024; } -.rootwithDropShadow:focus { +.rootwithDropShadow:focus:focus { outline: none; } -.rootwithDropShadow:hover { +.rootwithDropShadow:hover:hover { box-shadow: 0px 8px 32px -8px #00000038, 0px 8px 20px -16px #00000024; } .button { @@ -203,51 +203,18 @@ } .freeBox__h0Gn { display: flex; - height: 100%; - min-height: 0; - padding: 20px 16px; -} -.freeBox__h0Gn > :global(.__wab_flex-container) { align-items: flex-start; justify-content: flex-start; + height: 100%; + column-gap: 8px; min-height: 0; - margin-left: calc(0px - 8px); - width: calc(100% + 8px); -} -.freeBox__h0Gn > :global(.__wab_flex-container) > *, -.freeBox__h0Gn > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox__h0Gn > :global(.__wab_flex-container) > picture > img, -.freeBox__h0Gn - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 8px; -} -.freeBoxicon_withIcon__h0GNn8MlJ > :global(.__wab_flex-container) { - margin-left: calc(0px - 8px); - width: calc(100% + 8px); - margin-top: calc(0px - 0px); - height: calc(100% + 0px); + padding: 20px 16px; } -.freeBoxicon_withIcon__h0GNn8MlJ > :global(.__wab_flex-container) > *, -.freeBoxicon_withIcon__h0GNn8MlJ - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > *, -.freeBoxicon_withIcon__h0GNn8MlJ - > :global(.__wab_flex-container) - > picture - > img, -.freeBoxicon_withIcon__h0GNn8MlJ - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 8px; - margin-top: 0px; +.freeBoxicon_withIcon__h0GNn8MlJ { + column-gap: 8px; + row-gap: 0px; } -.freeBoxshowPreview__h0GNtvNg7 > :global(.__wab_flex-container) { +.freeBoxshowPreview__h0GNtvNg7 { justify-content: space-between; align-items: center; } @@ -290,21 +257,7 @@ display: flex; position: relative; flex-direction: column; -} -.freeBox__wHm4F > :global(.__wab_flex-container) { - flex-direction: column; - margin-top: calc(0px - 4px); - height: calc(100% + 4px); -} -.freeBox__wHm4F > :global(.__wab_flex-container) > *, -.freeBox__wHm4F > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox__wHm4F > :global(.__wab_flex-container) > picture > img, -.freeBox__wHm4F - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-top: 4px; + row-gap: 4px; } .root:focus .freeBox__wHm4F { outline: none; @@ -315,25 +268,11 @@ transform-origin: top left; box-sizing: border-box; display: flex; - flex-direction: row; - border-radius: 0px; -} -.frame317 > :global(.__wab_flex-container) { flex-direction: row; flex-wrap: wrap; align-items: baseline; - margin-left: calc(0px - 6px); - width: calc(100% + 6px); -} -.frame317 > :global(.__wab_flex-container) > *, -.frame317 > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.frame317 > :global(.__wab_flex-container) > picture > img, -.frame317 - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 6px; + column-gap: 6px; + border-radius: 0px; } .root:focus .frame317 { outline: none; @@ -374,25 +313,11 @@ box-sizing: border-box; display: flex; flex-direction: row; + align-items: center; + column-gap: 16px; border-radius: 0px; padding: 0px; } -.frame308 > :global(.__wab_flex-container) { - flex-direction: row; - align-items: center; - margin-left: calc(0px - 16px); - width: calc(100% + 16px); -} -.frame308 > :global(.__wab_flex-container) > *, -.frame308 > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.frame308 > :global(.__wab_flex-container) > picture > img, -.frame308 - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 16px; -} .slotTargetInstruction { text-align: left; } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicStarterProject.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicStarterProject.tsx index 3f85799e2b..f392700fa4 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicStarterProject.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicStarterProject.tsx @@ -14,29 +14,25 @@ import * as React from "react"; import { - Flex as Flex__, - SingleBooleanChoiceArg, - SingleChoiceArg, - Stack as Stack__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, + Flex as Flex__, hasVariant, renderPlasmicSlot, + SingleBooleanChoiceArg, + SingleChoiceArg, + StrictProps, useDollarState, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useGlobalVariants } from "../plasmic_kit_dashboard/plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule +import { _useStyleTokens } from "../plasmic_kit_dashboard/PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicStarterProject.module.css"; // plasmic-import: CCsDeqqYeoM/css import imageDQeKTjQst from "../plasmic_kit_dashboard/images/image.png"; // plasmic-import: dQeKTjQST/picture @@ -72,18 +68,18 @@ export const PlasmicStarterProject__VariantProps = new Array( ); export type PlasmicStarterProject__ArgsType = { - instruction?: React.ReactNode; - name?: React.ReactNode; preview?: React.ReactNode; children?: React.ReactNode; + name?: React.ReactNode; + instruction?: React.ReactNode; previewIcon?: React.ReactNode; }; type ArgPropType = keyof PlasmicStarterProject__ArgsType; export const PlasmicStarterProject__ArgProps = new Array( - "instruction", - "name", "preview", "children", + "name", + "instruction", "previewIcon" ); @@ -97,10 +93,10 @@ export type PlasmicStarterProject__OverridesType = { }; export interface DefaultStarterProjectProps { - instruction?: React.ReactNode; - name?: React.ReactNode; preview?: React.ReactNode; children?: React.ReactNode; + name?: React.ReactNode; + instruction?: React.ReactNode; previewIcon?: React.ReactNode; type?: SingleChoiceArg<"first" | "second" | "third" | "noBorder">; icon?: SingleChoiceArg<"withIcon" | "unnamedVariant">; @@ -147,51 +143,56 @@ function PlasmicStarterProject__RenderFunc(props: { path: "type", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.type, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.type, }, { path: "icon", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.icon, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.icon, }, { path: "image", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.image, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.image, }, { path: "withDescrip", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.withDescrip, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.withDescrip, }, { path: "showPreview", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.showPreview, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.showPreview, }, { path: "withDropShadow", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.withDropShadow, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.withDropShadow, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return (
) : null}
- {(hasVariant($state, "icon", "withIcon") ? true : false) ? (
), @@ -537,10 +516,8 @@ function PlasmicStarterProject__RenderFunc(props: { : null}
) : null} - - @@ -670,16 +645,14 @@ function PlasmicStarterProject__RenderFunc(props: { ), }), })} - +
{( hasVariant($state, "withDescrip", "withDescrip") ? true : false ) ? ( - +
) : null} - +
{(hasVariant($state, "showPreview", "showPreview") ? true : false) ? renderPlasmicSlot({ defaultContents: ( ), @@ -790,74 +763,73 @@ function PlasmicStarterProject__RenderFunc(props: { }), }) : null} - +
@@ -908,7 +880,8 @@ type NodeComponentProps = variants?: PlasmicStarterProject__VariantsArgs; args?: PlasmicStarterProject__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicTextbox.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicTextbox.module.css index 984f82dc6f..18484ad0a8 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicTextbox.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicTextbox.module.css @@ -48,87 +48,87 @@ .rootwhiteBackground { background: #ffffff; } -.root:focus-within { +.root:focus-within:focus-within { box-shadow: 0px 0px 0px 2px #0091ff80; outline: none; } -.rootstyleType_gray:focus-within { +.rootstyleType_gray:focus-within:focus-within { background: var(--token-iR8SeEwQZ); outline: none; } -.rootstyleType_gray:active { +.rootstyleType_gray:active:active { background: var(--token-Ik3bdE1e1Uy); } -.rootstyleType_red:focus-within { +.rootstyleType_red:focus-within:focus-within { background: var(--token-iR8SeEwQZ); outline: none; } -.rootstyleType_red:active { +.rootstyleType_red:active:active { background: var(--token-5kjtdCiiOPB); } -.rootstyleType_green:focus-within { +.rootstyleType_green:focus-within:focus-within { background: var(--token-iR8SeEwQZ); outline: none; } -.rootstyleType_green:active { +.rootstyleType_green:active:active { background: var(--token-Tc_ZOUnBuGQ_); } -.rootstyleType_blue:focus-within { +.rootstyleType_blue:focus-within:focus-within { background: var(--token-iR8SeEwQZ); outline: none; } -.rootstyleType_blue:active { +.rootstyleType_blue:active:active { background: var(--token-RhvOnhv_xIi); } -.rootstyleType_purple:focus-within { +.rootstyleType_purple:focus-within:focus-within { background: var(--token-iR8SeEwQZ); outline: none; } -.rootstyleType_purple:active { +.rootstyleType_purple:active:active { background: var(--token-I2zAJ678hbp); } -.rootnoOutline:focus-within { +.rootnoOutline:focus-within:focus-within { box-shadow: none; outline: none; } -.rootextraPadding:focus-within { +.rootextraPadding:focus-within:focus-within { box-shadow: none; outline: none; } -.root:hover:not(:focus-within) { +.root:hover:not(:focus-within):hover:not(:focus-within) { box-shadow: inset 0px 0px 0px 1px var(--token-eBt2ZgqRUCz); outline: none; } -.rootstyleType_gray:hover:not(:focus-within) { +.rootstyleType_gray:hover:not(:focus-within):hover:not(:focus-within) { box-shadow: none; background: var(--token-bV4cCeIniS6); outline: none; } -.rootstyleType_red:hover:not(:focus-within) { +.rootstyleType_red:hover:not(:focus-within):hover:not(:focus-within) { box-shadow: none; background: var(--token-HKVCQ5ZKovK); outline: none; } -.rootstyleType_green:hover:not(:focus-within) { +.rootstyleType_green:hover:not(:focus-within):hover:not(:focus-within) { box-shadow: none; background: var(--token-5TSkL5SqnvBt); outline: none; } -.rootstyleType_blue:hover:not(:focus-within) { +.rootstyleType_blue:hover:not(:focus-within):hover:not(:focus-within) { box-shadow: none; background: var(--token-dqEx_KxIoYV); outline: none; } -.rootstyleType_purple:hover:not(:focus-within) { +.rootstyleType_purple:hover:not(:focus-within):hover:not(:focus-within) { box-shadow: none; background: var(--token-oPrqrxbKHqk); outline: none; } -.rootnoOutline:hover:not(:focus-within) { +.rootnoOutline:hover:not(:focus-within):hover:not(:focus-within) { box-shadow: none; outline: none; } -.rootextraPadding:hover:not(:focus-within) { +.rootextraPadding:hover:not(:focus-within):hover:not(:focus-within) { box-shadow: none; outline: none; } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicTextbox.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicTextbox.tsx index 6ecd16b841..2ec196177d 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicTextbox.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit/PlasmicTextbox.tsx @@ -32,7 +32,7 @@ import { _useStyleTokens } from "../plasmic_kit_design_system/PlasmicStyleTokens import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_design_system.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss import sty from "./PlasmicTextbox.module.css"; // plasmic-import: pA22NEzDCsn_/css import CloseSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__CloseSvg"; // plasmic-import: DhvEHyCHT/icon @@ -256,6 +256,7 @@ function PlasmicTextbox__RenderFunc(props: { ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, @@ -273,10 +274,10 @@ function PlasmicTextbox__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_tXkSR39sgCDWSitZxC5xFV", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { @@ -359,7 +360,7 @@ function PlasmicTextbox__RenderFunc(props: {
), @@ -466,136 +467,110 @@ function PlasmicTextbox__RenderFunc(props: { { $refs["textbox"] = ref; @@ -609,7 +584,7 @@ function PlasmicTextbox__RenderFunc(props: {
), diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_alert_banner/PlasmicAutoOpenBanner.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_alert_banner/PlasmicAutoOpenBanner.tsx index fe6b7d8d75..d2d7fdffb3 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_alert_banner/PlasmicAutoOpenBanner.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_alert_banner/PlasmicAutoOpenBanner.tsx @@ -14,18 +14,20 @@ import * as React from "react"; import { - Flex as Flex__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, + Flex as Flex__, + StrictProps, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; import Banner from "../../components/Banner"; // plasmic-import: LlDTs6h34ISG/component +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: 29njzcsBEPR4koRddw4knF/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; +import "../PP__plasmickit_alert_banner.css"; // plasmic-import: 29njzcsBEPR4koRddw4knF/projectcss import sty from "./PlasmicAutoOpenBanner.module.css"; // plasmic-import: ETj0D1AzSHQn/css createPlasmicElementProxy; @@ -78,6 +80,8 @@ function PlasmicAutoOpenBanner__RenderFunc(props: { const refsRef = React.useRef({}); const $refs = refsRef.current; + const styleTokensClassNames = _useStyleTokens(); + return ( = variants?: PlasmicAutoOpenBanner__VariantsArgs; args?: PlasmicAutoOpenBanner__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_alert_banner/PlasmicBanner.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_alert_banner/PlasmicBanner.tsx index b73ca8d20d..4a6750d797 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_alert_banner/PlasmicBanner.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_alert_banner/PlasmicBanner.tsx @@ -14,26 +14,25 @@ import * as React from "react"; import { + classNames, + createPlasmicElementProxy, + deriveRenderOpts, Flex as Flex__, + hasVariant, PlasmicIcon as PlasmicIcon__, SingleBooleanChoiceArg, SingleChoiceArg, StrictProps, - classNames, - createPlasmicElementProxy, - deriveRenderOpts, - hasVariant, useDollarState, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; import Button from "../../components/widgets/Button"; // plasmic-import: SEF-sRmSoqV5c/component +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: 29njzcsBEPR4koRddw4knF/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../PP__plasmickit_alert_banner.module.css"; // plasmic-import: 29njzcsBEPR4koRddw4knF/projectcss -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss +import "../PP__plasmickit_alert_banner.css"; // plasmic-import: 29njzcsBEPR4koRddw4knF/projectcss import sty from "./PlasmicBanner.module.css"; // plasmic-import: LlDTs6h34ISG/css import CloseIcon from "../plasmic_kit/PlasmicIcon__Close"; // plasmic-import: hy7vKrgdAZwW4/icon @@ -147,36 +146,40 @@ function PlasmicBanner__RenderFunc(props: { path: "type", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.type, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.type, }, { path: "size", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.size, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.size, }, { path: "block", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.block, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.block, }, { path: "iconType", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.iconType, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.iconType, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); + const styleTokensClassNames = _useStyleTokens(); + return (
-
-
+
+
{(() => { @@ -269,23 +265,18 @@ function PlasmicBanner__RenderFunc(props: {
{(() => { @@ -306,7 +297,7 @@ function PlasmicBanner__RenderFunc(props: {
{(() => { @@ -407,11 +394,7 @@ function PlasmicBanner__RenderFunc(props: {
{(() => { @@ -447,12 +430,12 @@ function PlasmicBanner__RenderFunc(props: {
= variants?: PlasmicBanner__VariantsArgs; args?: PlasmicBanner__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_alert_banner/PlasmicPromoBanner.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_alert_banner/PlasmicPromoBanner.tsx index d583db8ba7..60186edcf8 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_alert_banner/PlasmicPromoBanner.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_alert_banner/PlasmicPromoBanner.tsx @@ -14,20 +14,20 @@ import * as React from "react"; import { - Flex as Flex__, - PlasmicLink as PlasmicLink__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, + Flex as Flex__, + PlasmicLink as PlasmicLink__, + StrictProps, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: 29njzcsBEPR4koRddw4knF/styleTokensProvider + import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../PP__plasmickit_alert_banner.module.css"; // plasmic-import: 29njzcsBEPR4koRddw4knF/projectcss -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss +import "../PP__plasmickit_alert_banner.css"; // plasmic-import: 29njzcsBEPR4koRddw4knF/projectcss import sty from "./PlasmicPromoBanner.module.css"; // plasmic-import: V-X3eZLINq/css createPlasmicElementProxy; @@ -91,6 +91,8 @@ function PlasmicPromoBanner__RenderFunc(props: { const refsRef = React.useRef({}); const $refs = refsRef.current; + const styleTokensClassNames = _useStyleTokens(); + return ( {(() => { @@ -159,7 +160,8 @@ type NodeComponentProps = variants?: PlasmicPromoBanner__VariantsArgs; args?: PlasmicPromoBanner__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_alert_banner/PlasmicStyleTokensProvider.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_alert_banner/PlasmicStyleTokensProvider.tsx new file mode 100644 index 0000000000..f3c89fcc14 --- /dev/null +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_alert_banner/PlasmicStyleTokensProvider.tsx @@ -0,0 +1,21 @@ +/* eslint-disable */ +/* tslint:disable */ +// @ts-nocheck + +// This code is auto-generated by Plasmic; please do not edit! +// Plasmic Project: 29njzcsBEPR4koRddw4knF + +import { createUseStyleTokens } from "@plasmicapp/react-web"; + +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: 29njzcsBEPR4koRddw4knF/projectModule + +import "../PP__plasmickit_alert_banner.css"; // plasmic-import: 29njzcsBEPR4koRddw4knF/projectcss +import "../PP__plasmickit_design_system.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss + +const data = { + base: `${"plasmic_tokens_29njzcsBEPR4koRddw4knF"} ${"plasmic_tokens_tXkSR39sgCDWSitZxC5xFV"} ${"plasmic_tokens_95xp9cYcv7HrNWpFWWhbcv"}`, + varianted: [], +}; + +export const _useStyleTokens = createUseStyleTokens(data, _useGlobalVariants); diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_alert_banner/plasmic.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_alert_banner/plasmic.tsx new file mode 100644 index 0000000000..f95477aae2 --- /dev/null +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_alert_banner/plasmic.tsx @@ -0,0 +1,10 @@ +/* eslint-disable */ +/* tslint:disable */ +// @ts-nocheck + +// This code is auto-generated by Plasmic; please do not edit! +// Plasmic Project: 29njzcsBEPR4koRddw4knF + +import { createUseGlobalVariants } from "@plasmicapp/react-web"; + +export const _useGlobalVariants = createUseGlobalVariants({}); diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicAnalyticsHeader.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicAnalyticsHeader.module.css index 3e62132399..47c0a44c4b 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicAnalyticsHeader.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicAnalyticsHeader.module.css @@ -21,28 +21,14 @@ min-width: 0; } .freeBox__iuSq1 { - flex-direction: row; display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; width: auto; height: auto; max-width: 100%; -} -.freeBox__iuSq1 > :global(.__wab_flex-container) { - flex-direction: row; - justify-content: flex-start; - align-items: center; - margin-left: calc(0px - 8px); - width: calc(100% + 8px); -} -.freeBox__iuSq1 > :global(.__wab_flex-container) > *, -.freeBox__iuSq1 > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox__iuSq1 > :global(.__wab_flex-container) > picture > img, -.freeBox__iuSq1 - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 8px; + column-gap: 8px; } .logo { object-fit: fill; @@ -54,9 +40,6 @@ .logo > picture > img { object-fit: fill; } -.logo > :global(.__wab_img-spacer) > img { - object-fit: fill; -} .freeBox__qb1Yn { display: flex; position: relative; @@ -89,28 +72,14 @@ color: var(--token-UunsGa2Y3t3); } .backBtn { - flex-direction: row; display: flex; position: relative; - cursor: pointer; - padding: 0.5rem; -} -.backBtn > :global(.__wab_flex-container) { flex-direction: row; - justify-content: flex-start; align-items: center; - margin-left: calc(0px - 4px); - width: calc(100% + 4px); -} -.backBtn > :global(.__wab_flex-container) > *, -.backBtn > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.backBtn > :global(.__wab_flex-container) > picture > img, -.backBtn - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 4px; + justify-content: flex-start; + cursor: pointer; + column-gap: 4px; + padding: 0.5rem; } .svg { position: relative; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicAnalyticsHeader.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicAnalyticsHeader.tsx index 0a50fd9c45..be7fd83781 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicAnalyticsHeader.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicAnalyticsHeader.tsx @@ -1,6 +1,6 @@ -// @ts-nocheck /* eslint-disable */ /* tslint:disable */ +// @ts-nocheck /* prettier-ignore-start */ /** @jsxRuntime classic */ @@ -10,49 +10,49 @@ // This class is auto-generated by Plasmic; please do not edit! // Plasmic Project: cQnF1HuwK97HkvkrC6uRk2 // Component: lpGYGncEBV -import * as React from "react"; -import * as ph from "@plasmicapp/host"; -import * as p from "@plasmicapp/react-web"; +import * as React from "react"; import { - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, + Flex as Flex__, + PlasmicImg as PlasmicImg__, + renderPlasmicSlot, + StrictProps, } from "@plasmicapp/react-web"; +import { useDataEnv } from "@plasmicapp/react-web/lib/host"; + +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import projectcss from "./plasmic_plasmic_kit_analytics.module.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss +import "./plasmic_plasmic_kit_analytics.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss import sty from "./PlasmicAnalyticsHeader.module.css"; // plasmic-import: lpGYGncEBV/css import image49X6ZsC5Ww5 from "../plasmic_kit_design_system/images/image4.svg"; // plasmic-import: 9X6ZsC5ww5/picture -import ArrowLeftsvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__ArrowLeftSvg"; // plasmic-import: -d8Kjj4sp/icon +import ArrowLeftSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__ArrowLeftSvg"; // plasmic-import: -d8Kjj4sp/icon -export type PlasmicAnalyticsHeader__VariantMembers = {}; +createPlasmicElementProxy; +export type PlasmicAnalyticsHeader__VariantMembers = {}; export type PlasmicAnalyticsHeader__VariantsArgs = {}; type VariantPropType = keyof PlasmicAnalyticsHeader__VariantsArgs; export const PlasmicAnalyticsHeader__VariantProps = new Array(); -export type PlasmicAnalyticsHeader__ArgsType = { - teamName?: React.ReactNode; -}; - +export type PlasmicAnalyticsHeader__ArgsType = { teamName?: React.ReactNode }; type ArgPropType = keyof PlasmicAnalyticsHeader__ArgsType; export const PlasmicAnalyticsHeader__ArgProps = new Array( "teamName" ); export type PlasmicAnalyticsHeader__OverridesType = { - root?: p.Flex<"div">; - logo?: p.Flex; - backBtn?: p.Flex<"div">; - svg?: p.Flex<"svg">; + root?: Flex__<"div">; + logo?: Flex__; + backBtn?: Flex__<"div">; + svg?: Flex__<"svg">; }; export interface DefaultAnalyticsHeaderProps { @@ -60,28 +60,37 @@ export interface DefaultAnalyticsHeaderProps { className?: string; } +const $$ = {}; + function PlasmicAnalyticsHeader__RenderFunc(props: { variants: PlasmicAnalyticsHeader__VariantsArgs; args: PlasmicAnalyticsHeader__ArgsType; overrides: PlasmicAnalyticsHeader__OverridesType; - forNode?: string; }) { const { variants, overrides, forNode } = props; - const $ctx = ph.useDataEnv?.() || {}; const args = React.useMemo( () => Object.assign( {}, - - props.args + Object.fromEntries( + Object.entries(props.args).filter(([_, v]) => v !== undefined) + ) ), - [props.args] ); - const $props = args; + const $props = { + ...args, + ...variants, + }; + + const $ctx = useDataEnv?.() || {}; + const refsRef = React.useRef({}); + const $refs = refsRef.current; + + const styleTokensClassNames = _useStyleTokens(); return (
- {true ? ( -
- {true ? ( - - - -
-
- {p.renderPlasmicSlot({ - defaultContents: "Current team name", - value: args.teamName, - className: classNames(sty.slotTargetTeamName), - })} -
- -
- {"Analytics"} -
-
-
- ) : null} - - - - -
- {"Back to projects/studio"} +
+
+ + +
+
+ {renderPlasmicSlot({ + defaultContents: "Current team name", + value: args.teamName, + className: classNames(sty.slotTargetTeamName), + })}
- +
+ {"Analytics"} +
+
+
+
+ + +
+ {"Back to projects/studio"} +
- ) : null} +
) as React.ReactElement | null; } @@ -190,7 +174,7 @@ type DescendantsType = (typeof PlasmicDescendants)[T][number]; type NodeDefaultElementType = { root: "div"; - logo: typeof p.PlasmicImg; + logo: typeof PlasmicImg__; backBtn: "div"; svg: "svg"; }; @@ -200,14 +184,14 @@ type NodeOverridesType = Pick< PlasmicAnalyticsHeader__OverridesType, DescendantsType >; - type NodeComponentProps = // Explicitly specify variants, args, and overrides as objects { variants?: PlasmicAnalyticsHeader__VariantsArgs; args?: PlasmicAnalyticsHeader__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props @@ -230,14 +214,12 @@ function makeNodeComponent(nodeName: NodeName) { () => deriveRenderOpts(props, { name: nodeName, - descendantNames: [...PlasmicDescendants[nodeName]], + descendantNames: PlasmicDescendants[nodeName], internalArgPropNames: PlasmicAnalyticsHeader__ArgProps, internalVariantPropNames: PlasmicAnalyticsHeader__VariantProps, }), - [props, nodeName] ); - return PlasmicAnalyticsHeader__RenderFunc({ variants, args, diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicChartView.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicChartView.module.css index 74ee248528..f94d11c6a9 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicChartView.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicChartView.module.css @@ -74,7 +74,6 @@ width: 100%; height: auto; max-width: 100%; - plasmic-display-none: false; min-width: 0; padding: 8px; } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicChartView.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicChartView.tsx index 0f53278874..476857e17a 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicChartView.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicChartView.tsx @@ -1,6 +1,6 @@ -// @ts-nocheck /* eslint-disable */ /* tslint:disable */ +// @ts-nocheck /* prettier-ignore-start */ /** @jsxRuntime classic */ @@ -10,55 +10,54 @@ // This class is auto-generated by Plasmic; please do not edit! // Plasmic Project: cQnF1HuwK97HkvkrC6uRk2 // Component: vSQc3cNg5Q -import * as React from "react"; -import * as ph from "@plasmicapp/host"; -import * as p from "@plasmicapp/react-web"; +import * as React from "react"; import { - SingleBooleanChoiceArg, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, + Flex as Flex__, hasVariant, + renderPlasmicSlot, + SingleBooleanChoiceArg, + StrictProps, + useDollarState, } from "@plasmicapp/react-web"; +import { useDataEnv } from "@plasmicapp/react-web/lib/host"; + +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import projectcss from "./plasmic_plasmic_kit_analytics.module.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss +import "./plasmic_plasmic_kit_analytics.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss import sty from "./PlasmicChartView.module.css"; // plasmic-import: vSQc3cNg5Q/css +createPlasmicElementProxy; + export type PlasmicChartView__VariantMembers = { loading: "loading"; empty: "empty"; }; - export type PlasmicChartView__VariantsArgs = { loading?: SingleBooleanChoiceArg<"loading">; empty?: SingleBooleanChoiceArg<"empty">; }; - type VariantPropType = keyof PlasmicChartView__VariantsArgs; export const PlasmicChartView__VariantProps = new Array( "loading", "empty" ); -export type PlasmicChartView__ArgsType = { - chart?: React.ReactNode; -}; - +export type PlasmicChartView__ArgsType = { chart?: React.ReactNode }; type ArgPropType = keyof PlasmicChartView__ArgsType; export const PlasmicChartView__ArgProps = new Array("chart"); export type PlasmicChartView__OverridesType = { - root?: p.Flex<"div">; - freeBox?: p.Flex<"div">; - loadingBox?: p.Flex<"div">; - emptyBox?: p.Flex<"div">; + root?: Flex__<"div">; + freeBox?: Flex__<"div">; + loadingBox?: Flex__<"div">; + emptyBox?: Flex__<"div">; }; export interface DefaultChartViewProps { @@ -68,28 +67,63 @@ export interface DefaultChartViewProps { className?: string; } +const $$ = {}; + function PlasmicChartView__RenderFunc(props: { variants: PlasmicChartView__VariantsArgs; args: PlasmicChartView__ArgsType; overrides: PlasmicChartView__OverridesType; - forNode?: string; }) { const { variants, overrides, forNode } = props; - const $ctx = ph.useDataEnv?.() || {}; const args = React.useMemo( () => Object.assign( {}, - - props.args + Object.fromEntries( + Object.entries(props.args).filter(([_, v]) => v !== undefined) + ) ), - [props.args] ); - const $props = args; + const $props = { + ...args, + ...variants, + }; + + const $ctx = useDataEnv?.() || {}; + const refsRef = React.useRef({}); + const $refs = refsRef.current; + + const stateSpecs: Parameters[0] = React.useMemo( + () => [ + { + path: "loading", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.loading, + }, + { + path: "empty", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.empty, + }, + ], + [$props, $ctx, $refs] + ); + + const $state = useDollarState(stateSpecs, { + $props, + $ctx, + $queries: {}, + $q: {}, + $refs, + }); + + const styleTokensClassNames = _useStyleTokens(); return (
{( - hasVariant(variants, "empty", "empty") + hasVariant($state, "empty", "empty") ? false - : hasVariant(variants, "loading", "loading") + : hasVariant($state, "loading", "loading") ? false : true ) - ? p.renderPlasmicSlot({ + ? renderPlasmicSlot({ defaultContents: null, value: args.chart, }) : null} - {( - hasVariant(variants, "empty", "empty") - ? true - : hasVariant(variants, "loading", "loading") - ? true - : true - ) ? ( +
- {( - hasVariant(variants, "empty", "empty") - ? true - : hasVariant(variants, "loading", "loading") - ? true - : true - ) ? ( -
- {"Loading your data ..."} -
- ) : null} + {"Loading your data ..."}
- ) : null} +
{( - hasVariant(variants, "empty", "empty") + hasVariant($state, "empty", "empty") ? true - : hasVariant(variants, "loading", "loading") + : hasVariant($state, "loading", "loading") ? true : false ) ? (
- {( - hasVariant(variants, "empty", "empty") - ? true - : hasVariant(variants, "loading", "loading") - ? true - : true - ) ? ( -
- {hasVariant(variants, "empty", "empty") - ? "No data found" - : "Loading your data ..."} -
- ) : null} +
+ {hasVariant($state, "empty", "empty") + ? "No data found" + : "Loading your data ..."} +
) : null}
@@ -253,14 +242,14 @@ type NodeOverridesType = Pick< PlasmicChartView__OverridesType, DescendantsType >; - type NodeComponentProps = // Explicitly specify variants, args, and overrides as objects { variants?: PlasmicChartView__VariantsArgs; args?: PlasmicChartView__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props @@ -283,14 +272,12 @@ function makeNodeComponent(nodeName: NodeName) { () => deriveRenderOpts(props, { name: nodeName, - descendantNames: [...PlasmicDescendants[nodeName]], + descendantNames: PlasmicDescendants[nodeName], internalArgPropNames: PlasmicChartView__ArgProps, internalVariantPropNames: PlasmicChartView__VariantProps, }), - [props, nodeName] ); - return PlasmicChartView__RenderFunc({ variants, args, diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicDataFilters.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicDataFilters.module.css index 56b6ed0781..7b83ddad11 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicDataFilters.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicDataFilters.module.css @@ -15,27 +15,13 @@ position: relative; } .freeBox { - flex-direction: row; position: relative; display: flex; - padding: 1.5rem; -} -.freeBox > :global(.__wab_flex-container) { flex-direction: row; - justify-content: flex-end; align-items: flex-end; - margin-left: calc(0px - 8px); - width: calc(100% + 8px); -} -.freeBox > :global(.__wab_flex-container) > *, -.freeBox > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox > :global(.__wab_flex-container) > picture > img, -.freeBox - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 8px; + justify-content: flex-end; + column-gap: 8px; + padding: 1.5rem; } .exportBtn:global(.__wab_instance) { position: relative; @@ -44,14 +30,12 @@ display: flex; position: relative; object-fit: cover; - width: 1em; height: 1em; } .svg__zAmqT { display: flex; position: relative; object-fit: cover; - width: 1em; height: 1em; } .shareBtn:global(.__wab_instance) { @@ -61,7 +45,6 @@ display: flex; position: relative; object-fit: cover; - width: 1em; height: 1em; } .text { @@ -71,6 +54,5 @@ display: flex; position: relative; object-fit: cover; - width: 1em; height: 1em; } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicDataFilters.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicDataFilters.tsx index c15819ec6b..f383f37803 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicDataFilters.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicDataFilters.tsx @@ -1,6 +1,6 @@ -// @ts-nocheck /* eslint-disable */ /* tslint:disable */ +// @ts-nocheck /* prettier-ignore-start */ /** @jsxRuntime classic */ @@ -10,30 +10,31 @@ // This class is auto-generated by Plasmic; please do not edit! // Plasmic Project: cQnF1HuwK97HkvkrC6uRk2 // Component: Dza4MqGNx4p -import * as React from "react"; -import * as ph from "@plasmicapp/host"; -import * as p from "@plasmicapp/react-web"; +import * as React from "react"; import { - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, + Flex as Flex__, + StrictProps, } from "@plasmicapp/react-web"; +import { useDataEnv } from "@plasmicapp/react-web/lib/host"; + import LabeledSelect from "../../components/analytics/LabeledSelect"; // plasmic-import: bQ74QBVIbHI/component import PeriodPicker from "../../components/analytics/PeriodPicker"; // plasmic-import: Jt0CZzY1xy/component import Button from "../../components/widgets/Button"; // plasmic-import: SEF-sRmSoqV5c/component +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import projectcss from "./plasmic_plasmic_kit_analytics.module.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss +import "./plasmic_plasmic_kit_analytics.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss import sty from "./PlasmicDataFilters.module.css"; // plasmic-import: Dza4MqGNx4p/css -export type PlasmicDataFilters__VariantMembers = {}; +createPlasmicElementProxy; +export type PlasmicDataFilters__VariantMembers = {}; export type PlasmicDataFilters__VariantsArgs = {}; type VariantPropType = keyof PlasmicDataFilters__VariantsArgs; export const PlasmicDataFilters__VariantProps = new Array(); @@ -43,42 +44,51 @@ type ArgPropType = keyof PlasmicDataFilters__ArgsType; export const PlasmicDataFilters__ArgProps = new Array(); export type PlasmicDataFilters__OverridesType = { - root?: p.Flex<"div">; - timeRangeFilter?: p.Flex; - eventFilter?: p.Flex; - periodPicker?: p.Flex; - freeBox?: p.Flex<"div">; - exportBtn?: p.Flex; - shareBtn?: p.Flex; - text?: p.Flex<"div">; + root?: Flex__<"div">; + timeRangeFilter?: Flex__; + eventFilter?: Flex__; + periodPicker?: Flex__; + freeBox?: Flex__<"div">; + exportBtn?: Flex__; + shareBtn?: Flex__; + text?: Flex__<"div">; }; export interface DefaultDataFiltersProps { className?: string; } +const $$ = {}; + function PlasmicDataFilters__RenderFunc(props: { variants: PlasmicDataFilters__VariantsArgs; args: PlasmicDataFilters__ArgsType; overrides: PlasmicDataFilters__OverridesType; - forNode?: string; }) { const { variants, overrides, forNode } = props; - const $ctx = ph.useDataEnv?.() || {}; const args = React.useMemo( () => Object.assign( {}, - - props.args + Object.fromEntries( + Object.entries(props.args).filter(([_, v]) => v !== undefined) + ) ), - [props.args] ); - const $props = args; + const $props = { + ...args, + ...variants, + }; + + const $ctx = useDataEnv?.() || {}; + const refsRef = React.useRef({}); + const $refs = refsRef.current; + + const styleTokensClassNames = _useStyleTokens(); return (
@@ -118,42 +127,35 @@ function PlasmicDataFilters__RenderFunc(props: { className={classNames("__wab_instance", sty.periodPicker)} /> - - - +
) as React.ReactElement | null; } @@ -169,7 +171,6 @@ const PlasmicDescendants = { "shareBtn", "text", ], - timeRangeFilter: ["timeRangeFilter"], eventFilter: ["eventFilter"], periodPicker: ["periodPicker"], @@ -197,14 +198,14 @@ type NodeOverridesType = Pick< PlasmicDataFilters__OverridesType, DescendantsType >; - type NodeComponentProps = // Explicitly specify variants, args, and overrides as objects { variants?: PlasmicDataFilters__VariantsArgs; args?: PlasmicDataFilters__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props @@ -227,14 +228,12 @@ function makeNodeComponent(nodeName: NodeName) { () => deriveRenderOpts(props, { name: nodeName, - descendantNames: [...PlasmicDescendants[nodeName]], + descendantNames: PlasmicDescendants[nodeName], internalArgPropNames: PlasmicDataFilters__ArgProps, internalVariantPropNames: PlasmicDataFilters__VariantProps, }), - [props, nodeName] ); - return PlasmicDataFilters__RenderFunc({ variants, args, diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicGlobalVariant__Screen.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicGlobalVariant__Screen.tsx index 0d234b1547..55346836d9 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicGlobalVariant__Screen.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicGlobalVariant__Screen.tsx @@ -1,28 +1,26 @@ -// @ts-nocheck /* eslint-disable */ /* tslint:disable */ +// @ts-nocheck /* prettier-ignore-start */ + +import { createUseScreenVariants } from "@plasmicapp/react-web"; import * as React from "react"; -import * as p from "@plasmicapp/react-web"; export type ScreenValue = "mobileOnly"; export const ScreenContext = React.createContext( "PLEASE_RENDER_INSIDE_PROVIDER" as any ); - -/** - * @deprecated Plasmic now uses a custom hook for Screen variants, which is - * automatically included in your components. Please remove this provider - * from your code. - */ -export function ScreenVariantProvider(props: React.PropsWithChildren) { - console.warn( - "DEPRECATED: Plasmic now uses a custom hook for Screen variants, which is automatically included in your components. Please remove this provider from your code." +export function ScreenContextProvider( + props: React.PropsWithChildren<{ value: ScreenValue[] | undefined }> +) { + return ( + + {props.children} + ); - return props.children; } -export const useScreenVariants = p.createUseScreenVariants(true, { +export const useScreenVariants = createUseScreenVariants(true, { mobileOnly: "(min-width:0px) and (max-width:768px)", }); diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicLabeledSelect.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicLabeledSelect.module.css index e0f321fc66..0d56263754 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicLabeledSelect.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicLabeledSelect.module.css @@ -1,23 +1,12 @@ .root { - flex-direction: column; display: flex; + flex-direction: column; position: relative; width: 100%; + row-gap: 8px; min-width: 0; padding: 1.5rem; } -.root > :global(.__wab_flex-container) { - flex-direction: column; - min-width: 0; - margin-top: calc(0px - 8px); - height: calc(100% + 8px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-top: 8px; -} .rootwithBottomBorder { border-bottom: 1px solid var(--token-hoA5qaM-91G); } @@ -91,7 +80,7 @@ .option__ekSaT:global(.__wab_instance) { position: relative; } -.option___1IiGb:global(.__wab_instance) { +.option__jVzhs:global(.__wab_instance) { position: relative; } .option___7XjA:global(.__wab_instance) { diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicLabeledSelect.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicLabeledSelect.tsx index 5db646f757..086c317e35 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicLabeledSelect.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicLabeledSelect.tsx @@ -1,6 +1,6 @@ -// @ts-nocheck /* eslint-disable */ /* tslint:disable */ +// @ts-nocheck /* prettier-ignore-start */ /** @jsxRuntime classic */ @@ -10,44 +10,46 @@ // This class is auto-generated by Plasmic; please do not edit! // Plasmic Project: cQnF1HuwK97HkvkrC6uRk2 // Component: bQ74QBVIbHI -import * as React from "react"; -import * as ph from "@plasmicapp/host"; -import * as p from "@plasmicapp/react-web"; +import * as React from "react"; import { - SingleBooleanChoiceArg, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, + Flex as Flex__, hasVariant, + renderPlasmicSlot, + SingleBooleanChoiceArg, + StrictProps, + useDollarState, } from "@plasmicapp/react-web"; +import { useDataEnv } from "@plasmicapp/react-web/lib/host"; + import Select from "../../components/widgets/Select"; // plasmic-import: j_4IQyOWK2b/component import Select__Option from "../../components/widgets/Select__Option"; // plasmic-import: rr-LWdMni2G/component import Select__OptionGroup from "../../components/widgets/Select__OptionGroup"; // plasmic-import: _qMm1mtrqOi/component +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import projectcss from "./plasmic_plasmic_kit_analytics.module.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss +import "./plasmic_plasmic_kit_analytics.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss import sty from "./PlasmicLabeledSelect.module.css"; // plasmic-import: bQ74QBVIbHI/css import InfoIcon from "../plasmic_kit/PlasmicIcon__Info"; // plasmic-import: BjAly3N4fWuWe/icon +createPlasmicElementProxy; + export type PlasmicLabeledSelect__VariantMembers = { withBottomBorder: "withBottomBorder"; noRightPadding: "noRightPadding"; withInfo: "withInfo"; }; - export type PlasmicLabeledSelect__VariantsArgs = { withBottomBorder?: SingleBooleanChoiceArg<"withBottomBorder">; noRightPadding?: SingleBooleanChoiceArg<"noRightPadding">; withInfo?: SingleBooleanChoiceArg<"withInfo">; }; - type VariantPropType = keyof PlasmicLabeledSelect__VariantsArgs; export const PlasmicLabeledSelect__VariantProps = new Array( "withBottomBorder", @@ -55,18 +57,15 @@ export const PlasmicLabeledSelect__VariantProps = new Array( "withInfo" ); -export type PlasmicLabeledSelect__ArgsType = { - label?: React.ReactNode; -}; - +export type PlasmicLabeledSelect__ArgsType = { label?: React.ReactNode }; type ArgPropType = keyof PlasmicLabeledSelect__ArgsType; export const PlasmicLabeledSelect__ArgProps = new Array("label"); export type PlasmicLabeledSelect__OverridesType = { - root?: p.Flex<"div">; - freeBox?: p.Flex<"div">; - info?: p.Flex<"svg">; - select?: p.Flex; + root?: Flex__<"div">; + freeBox?: Flex__<"div">; + info?: Flex__<"svg">; + select?: Flex__; }; export interface DefaultLabeledSelectProps { @@ -77,54 +76,93 @@ export interface DefaultLabeledSelectProps { className?: string; } +const $$ = {}; + function PlasmicLabeledSelect__RenderFunc(props: { variants: PlasmicLabeledSelect__VariantsArgs; args: PlasmicLabeledSelect__ArgsType; overrides: PlasmicLabeledSelect__OverridesType; - forNode?: string; }) { const { variants, overrides, forNode } = props; - const $ctx = ph.useDataEnv?.() || {}; const args = React.useMemo( () => Object.assign( {}, - - props.args + Object.fromEntries( + Object.entries(props.args).filter(([_, v]) => v !== undefined) + ) ), - [props.args] ); - const $props = args; + const $props = { + ...args, + ...variants, + }; + + const $ctx = useDataEnv?.() || {}; + const refsRef = React.useRef({}); + const $refs = refsRef.current; + + const stateSpecs: Parameters[0] = React.useMemo( + () => [ + { + path: "withBottomBorder", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.withBottomBorder, + }, + { + path: "noRightPadding", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.noRightPadding, + }, + { + path: "withInfo", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.withInfo, + }, + ], + [$props, $ctx, $refs] + ); + + const $state = useDollarState(stateSpecs, { + $props, + $ctx, + $queries: {}, + $q: {}, + $refs, + }); + + const styleTokensClassNames = _useStyleTokens(); return ( - - {p.renderPlasmicSlot({ + {renderPlasmicSlot({ defaultContents: "Label", value: args.label, className: classNames(sty.slotTargetLabel), })} - - {(hasVariant(variants, "withInfo", "withInfo") ? true : true) ? ( - - ) : null} +
- - +
) as React.ReactElement | null; } @@ -248,14 +275,14 @@ type NodeOverridesType = Pick< PlasmicLabeledSelect__OverridesType, DescendantsType >; - type NodeComponentProps = // Explicitly specify variants, args, and overrides as objects { variants?: PlasmicLabeledSelect__VariantsArgs; args?: PlasmicLabeledSelect__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props @@ -278,14 +305,12 @@ function makeNodeComponent(nodeName: NodeName) { () => deriveRenderOpts(props, { name: nodeName, - descendantNames: [...PlasmicDescendants[nodeName]], + descendantNames: PlasmicDescendants[nodeName], internalArgPropNames: PlasmicLabeledSelect__ArgProps, internalVariantPropNames: PlasmicLabeledSelect__VariantProps, }), - [props, nodeName] ); - return PlasmicLabeledSelect__RenderFunc({ variants, args, diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicOptimizationOption.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicOptimizationOption.module.css index 8940bddb97..e65ab7d395 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicOptimizationOption.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicOptimizationOption.module.css @@ -1,34 +1,23 @@ .root { - flex-direction: row; display: flex; + flex-direction: row; + align-items: center; position: relative; width: 100%; cursor: pointer; + column-gap: 4px; min-width: 0; border-radius: 6px; padding: 0.5rem; } -.root > :global(.__wab_flex-container) { - flex-direction: row; - align-items: center; - min-width: 0; - margin-left: calc(0px - 4px); - width: calc(100% + 4px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-left: 4px; -} .rootselected { background: var(--token-dqEx_KxIoYV); pointer-events: none; } -.root:hover { +.root:hover:hover { background: var(--token-bV4cCeIniS6); } -.root:active { +.root:active:active { background: var(--token-Ik3bdE1e1Uy); } .svg { diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicOptimizationOption.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicOptimizationOption.tsx index d612feea33..ca7f211c9a 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicOptimizationOption.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicOptimizationOption.tsx @@ -1,6 +1,6 @@ -// @ts-nocheck /* eslint-disable */ /* tslint:disable */ +// @ts-nocheck /* prettier-ignore-start */ /** @jsxRuntime classic */ @@ -10,57 +10,57 @@ // This class is auto-generated by Plasmic; please do not edit! // Plasmic Project: cQnF1HuwK97HkvkrC6uRk2 // Component: yvny0cDy_e -import * as React from "react"; -import * as ph from "@plasmicapp/host"; -import * as p from "@plasmicapp/react-web"; +import * as React from "react"; import { - SingleBooleanChoiceArg, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, + Flex as Flex__, hasVariant, + PlasmicIcon as PlasmicIcon__, + renderPlasmicSlot, + SingleBooleanChoiceArg, + StrictProps, + useDollarState, } from "@plasmicapp/react-web"; +import { useDataEnv } from "@plasmicapp/react-web/lib/host"; + +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import projectcss from "./plasmic_plasmic_kit_analytics.module.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss +import "./plasmic_plasmic_kit_analytics.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss import sty from "./PlasmicOptimizationOption.module.css"; // plasmic-import: yvny0cDy_e/css import UnsetIcon from "../plasmic_kit/PlasmicIcon__Unset"; // plasmic-import: 8G7yEB3Bs8mxb/icon -import RocketsvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__RocketSvg"; // plasmic-import: uRQfbBjV9/icon +import RocketSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__RocketSvg"; // plasmic-import: uRQfbBjV9/icon + +createPlasmicElementProxy; export type PlasmicOptimizationOption__VariantMembers = { selected: "selected"; unset: "unset"; }; - export type PlasmicOptimizationOption__VariantsArgs = { selected?: SingleBooleanChoiceArg<"selected">; unset?: SingleBooleanChoiceArg<"unset">; }; - type VariantPropType = keyof PlasmicOptimizationOption__VariantsArgs; export const PlasmicOptimizationOption__VariantProps = new Array("selected", "unset"); -export type PlasmicOptimizationOption__ArgsType = { - label?: React.ReactNode; -}; - +export type PlasmicOptimizationOption__ArgsType = { label?: React.ReactNode }; type ArgPropType = keyof PlasmicOptimizationOption__ArgsType; export const PlasmicOptimizationOption__ArgProps = new Array( "label" ); export type PlasmicOptimizationOption__OverridesType = { - root?: p.Flex<"div">; - svg?: p.Flex<"svg">; - freeBox?: p.Flex<"div">; + root?: Flex__<"div">; + svg?: Flex__<"svg">; + freeBox?: Flex__<"div">; }; export interface DefaultOptimizationOptionProps { @@ -70,57 +70,89 @@ export interface DefaultOptimizationOptionProps { className?: string; } +const $$ = {}; + function PlasmicOptimizationOption__RenderFunc(props: { variants: PlasmicOptimizationOption__VariantsArgs; args: PlasmicOptimizationOption__ArgsType; overrides: PlasmicOptimizationOption__OverridesType; - forNode?: string; }) { const { variants, overrides, forNode } = props; - const $ctx = ph.useDataEnv?.() || {}; const args = React.useMemo( () => Object.assign( {}, - - props.args + Object.fromEntries( + Object.entries(props.args).filter(([_, v]) => v !== undefined) + ) ), - [props.args] ); - const $props = args; + const $props = { + ...args, + ...variants, + }; + + const $ctx = useDataEnv?.() || {}; + const refsRef = React.useRef({}); + const $refs = refsRef.current; + + const stateSpecs: Parameters[0] = React.useMemo( + () => [ + { + path: "selected", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.selected, + }, + { + path: "unset", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.unset, + }, + ], + [$props, $ctx, $refs] + ); + + const $state = useDollarState(stateSpecs, { + $props, + $ctx, + $queries: {}, + $q: {}, + $refs, + }); + + const styleTokensClassNames = _useStyleTokens(); return ( - - @@ -128,23 +160,23 @@ function PlasmicOptimizationOption__RenderFunc(props: {
- {p.renderPlasmicSlot({ + {renderPlasmicSlot({ defaultContents: "Label", value: args.label, className: classNames(sty.slotTargetLabel, { [sty.slotTargetLabelselected]: hasVariant( - variants, + $state, "selected", "selected" ), }), })}
-
+
) as React.ReactElement | null; } @@ -167,14 +199,14 @@ type NodeOverridesType = Pick< PlasmicOptimizationOption__OverridesType, DescendantsType >; - type NodeComponentProps = // Explicitly specify variants, args, and overrides as objects { variants?: PlasmicOptimizationOption__VariantsArgs; args?: PlasmicOptimizationOption__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props @@ -197,14 +229,12 @@ function makeNodeComponent(nodeName: NodeName) { () => deriveRenderOpts(props, { name: nodeName, - descendantNames: [...PlasmicDescendants[nodeName]], + descendantNames: PlasmicDescendants[nodeName], internalArgPropNames: PlasmicOptimizationOption__ArgProps, internalVariantPropNames: PlasmicOptimizationOption__VariantProps, }), - [props, nodeName] ); - return PlasmicOptimizationOption__RenderFunc({ variants, args, diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicOptimizationsSelect.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicOptimizationsSelect.module.css index 2c0e096843..dc887441fd 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicOptimizationsSelect.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicOptimizationsSelect.module.css @@ -1,25 +1,14 @@ .root { - flex-direction: column; display: flex; width: 100%; height: auto; max-width: 100%; + flex-direction: column; position: relative; + row-gap: 8px; min-width: 0; padding: 1.5rem; } -.root > :global(.__wab_flex-container) { - flex-direction: column; - min-width: 0; - margin-top: calc(0px - 8px); - height: calc(100% + 8px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-top: 8px; -} .text { font-size: 14px; font-weight: 600; @@ -31,24 +20,10 @@ padding-bottom: 0.5rem; } .freeBox { - flex-direction: column; display: flex; position: relative; -} -.freeBox > :global(.__wab_flex-container) { flex-direction: column; - margin-top: calc(0px - 4px); - height: calc(100% + 4px); -} -.freeBox > :global(.__wab_flex-container) > *, -.freeBox > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox > :global(.__wab_flex-container) > picture > img, -.freeBox - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-top: 4px; + row-gap: 4px; } .optimizationOption__jRgRr:global(.__wab_instance) { position: relative; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicOptimizationsSelect.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicOptimizationsSelect.tsx index 76ca4d1268..5b97ae08bf 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicOptimizationsSelect.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicOptimizationsSelect.tsx @@ -1,6 +1,6 @@ -// @ts-nocheck /* eslint-disable */ /* tslint:disable */ +// @ts-nocheck /* prettier-ignore-start */ /** @jsxRuntime classic */ @@ -10,28 +10,30 @@ // This class is auto-generated by Plasmic; please do not edit! // Plasmic Project: cQnF1HuwK97HkvkrC6uRk2 // Component: 0bODOMCtGi -import * as React from "react"; -import * as ph from "@plasmicapp/host"; -import * as p from "@plasmicapp/react-web"; +import * as React from "react"; import { - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, + Flex as Flex__, + renderPlasmicSlot, + StrictProps, } from "@plasmicapp/react-web"; +import { useDataEnv } from "@plasmicapp/react-web/lib/host"; + import OptimizationOption from "../../components/analytics/OptimizationOption"; // plasmic-import: yvny0cDy_e/component +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import projectcss from "./plasmic_plasmic_kit_analytics.module.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss +import "./plasmic_plasmic_kit_analytics.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss import sty from "./PlasmicOptimizationsSelect.module.css"; // plasmic-import: 0bODOMCtGi/css -export type PlasmicOptimizationsSelect__VariantMembers = {}; +createPlasmicElementProxy; +export type PlasmicOptimizationsSelect__VariantMembers = {}; export type PlasmicOptimizationsSelect__VariantsArgs = {}; type VariantPropType = keyof PlasmicOptimizationsSelect__VariantsArgs; export const PlasmicOptimizationsSelect__VariantProps = @@ -40,16 +42,15 @@ export const PlasmicOptimizationsSelect__VariantProps = export type PlasmicOptimizationsSelect__ArgsType = { children?: React.ReactNode; }; - type ArgPropType = keyof PlasmicOptimizationsSelect__ArgsType; export const PlasmicOptimizationsSelect__ArgProps = new Array( "children" ); export type PlasmicOptimizationsSelect__OverridesType = { - root?: p.Flex<"div">; - text?: p.Flex<"div">; - freeBox?: p.Flex<"div">; + root?: Flex__<"div">; + text?: Flex__<"div">; + freeBox?: Flex__<"div">; }; export interface DefaultOptimizationsSelectProps { @@ -57,63 +58,66 @@ export interface DefaultOptimizationsSelectProps { className?: string; } +const $$ = {}; + function PlasmicOptimizationsSelect__RenderFunc(props: { variants: PlasmicOptimizationsSelect__VariantsArgs; args: PlasmicOptimizationsSelect__ArgsType; overrides: PlasmicOptimizationsSelect__OverridesType; - forNode?: string; }) { const { variants, overrides, forNode } = props; - const $ctx = ph.useDataEnv?.() || {}; const args = React.useMemo( () => Object.assign( {}, - - props.args + Object.fromEntries( + Object.entries(props.args).filter(([_, v]) => v !== undefined) + ) ), - [props.args] ); - const $props = args; + const $props = { + ...args, + ...variants, + }; + + const $ctx = useDataEnv?.() || {}; + const refsRef = React.useRef({}); + const $refs = refsRef.current; + + const styleTokensClassNames = _useStyleTokens(); return ( -
{"Optimizations"}
- - - {p.renderPlasmicSlot({ + {renderPlasmicSlot({ defaultContents: ( ), - value: args.children, })} - -
+
+
) as React.ReactElement | null; } @@ -177,14 +180,14 @@ type NodeOverridesType = Pick< PlasmicOptimizationsSelect__OverridesType, DescendantsType >; - type NodeComponentProps = // Explicitly specify variants, args, and overrides as objects { variants?: PlasmicOptimizationsSelect__VariantsArgs; args?: PlasmicOptimizationsSelect__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props @@ -207,14 +210,12 @@ function makeNodeComponent(nodeName: NodeName) { () => deriveRenderOpts(props, { name: nodeName, - descendantNames: [...PlasmicDescendants[nodeName]], + descendantNames: PlasmicDescendants[nodeName], internalArgPropNames: PlasmicOptimizationsSelect__ArgProps, internalVariantPropNames: PlasmicOptimizationsSelect__VariantProps, }), - [props, nodeName] ); - return PlasmicOptimizationsSelect__RenderFunc({ variants, args, diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicPeriodPicker.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicPeriodPicker.module.css index 2874ecb21f..8a01dbca44 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicPeriodPicker.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicPeriodPicker.module.css @@ -1,23 +1,12 @@ .root { - flex-direction: column; display: flex; position: relative; - width: 100%; - min-width: 0; - padding: 1.5rem; -} -.root > :global(.__wab_flex-container) { flex-direction: column; justify-content: flex-end; + width: 100%; + row-gap: 8px; min-width: 0; - margin-top: calc(0px - 8px); - height: calc(100% + 8px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-top: 8px; + padding: 1.5rem; } .text { font-size: 14px; @@ -52,7 +41,7 @@ padding: 2px; } .animationboxmonth { - transform: translateX(100%) translateY(0px) translateZ(0px); + transform: translate3d(100%, 0px, 0px); } .highlighter { display: block; @@ -108,9 +97,9 @@ font-weight: 500; cursor: auto; } -.root .monthOption:hover { - background: var(--token-Ik3bdE1e1Uy); -} .root .monthOption:active { background: var(--token-hoA5qaM-91G); } +.root .monthOption:hover { + background: var(--token-Ik3bdE1e1Uy); +} diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicPeriodPicker.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicPeriodPicker.tsx index 2388d17429..e0147d1b44 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicPeriodPicker.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicPeriodPicker.tsx @@ -1,6 +1,6 @@ -// @ts-nocheck /* eslint-disable */ /* tslint:disable */ +// @ts-nocheck /* prettier-ignore-start */ /** @jsxRuntime classic */ @@ -10,35 +10,36 @@ // This class is auto-generated by Plasmic; please do not edit! // Plasmic Project: cQnF1HuwK97HkvkrC6uRk2 // Component: Jt0CZzY1xy -import * as React from "react"; -import * as ph from "@plasmicapp/host"; -import * as p from "@plasmicapp/react-web"; +import * as React from "react"; import { - SingleBooleanChoiceArg, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, + Flex as Flex__, hasVariant, + SingleBooleanChoiceArg, + StrictProps, + useDollarState, } from "@plasmicapp/react-web"; +import { useDataEnv } from "@plasmicapp/react-web/lib/host"; + +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import projectcss from "./plasmic_plasmic_kit_analytics.module.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss +import "./plasmic_plasmic_kit_analytics.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss import sty from "./PlasmicPeriodPicker.module.css"; // plasmic-import: Jt0CZzY1xy/css +createPlasmicElementProxy; + export type PlasmicPeriodPicker__VariantMembers = { month: "month"; }; - export type PlasmicPeriodPicker__VariantsArgs = { month?: SingleBooleanChoiceArg<"month">; }; - type VariantPropType = keyof PlasmicPeriodPicker__VariantsArgs; export const PlasmicPeriodPicker__VariantProps = new Array( "month" @@ -49,13 +50,13 @@ type ArgPropType = keyof PlasmicPeriodPicker__ArgsType; export const PlasmicPeriodPicker__ArgProps = new Array(); export type PlasmicPeriodPicker__OverridesType = { - root?: p.Flex<"div">; - text?: p.Flex<"div">; - picker?: p.Flex<"div">; - animationbox?: p.Flex<"div">; - highlighter?: p.Flex<"div">; - dayOption?: p.Flex<"div">; - monthOption?: p.Flex<"div">; + root?: Flex__<"div">; + text?: Flex__<"div">; + picker?: Flex__<"div">; + animationbox?: Flex__<"div">; + highlighter?: Flex__<"div">; + dayOption?: Flex__<"div">; + monthOption?: Flex__<"div">; }; export interface DefaultPeriodPickerProps { @@ -63,104 +64,121 @@ export interface DefaultPeriodPickerProps { className?: string; } +const $$ = {}; + function PlasmicPeriodPicker__RenderFunc(props: { variants: PlasmicPeriodPicker__VariantsArgs; args: PlasmicPeriodPicker__ArgsType; overrides: PlasmicPeriodPicker__OverridesType; - forNode?: string; }) { const { variants, overrides, forNode } = props; - const $ctx = ph.useDataEnv?.() || {}; const args = React.useMemo( () => Object.assign( {}, - - props.args + Object.fromEntries( + Object.entries(props.args).filter(([_, v]) => v !== undefined) + ) ), - [props.args] ); - const $props = args; + const $props = { + ...args, + ...variants, + }; + + const $ctx = useDataEnv?.() || {}; + const refsRef = React.useRef({}); + const $refs = refsRef.current; + + const stateSpecs: Parameters[0] = React.useMemo( + () => [ + { + path: "month", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.month, + }, + ], + [$props, $ctx, $refs] + ); + + const $state = useDollarState(stateSpecs, { + $props, + $ctx, + $queries: {}, + $q: {}, + $refs, + }); + + const styleTokensClassNames = _useStyleTokens(); return ( -
{"View by"}
-
-
{"Day"}
-
{"Month"}
- +
) as React.ReactElement | null; } @@ -174,7 +192,6 @@ const PlasmicDescendants = { "dayOption", "monthOption", ], - text: ["text"], picker: ["picker", "animationbox", "highlighter", "dayOption", "monthOption"], animationbox: ["animationbox", "highlighter"], @@ -200,14 +217,14 @@ type NodeOverridesType = Pick< PlasmicPeriodPicker__OverridesType, DescendantsType >; - type NodeComponentProps = // Explicitly specify variants, args, and overrides as objects { variants?: PlasmicPeriodPicker__VariantsArgs; args?: PlasmicPeriodPicker__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props @@ -230,14 +247,12 @@ function makeNodeComponent(nodeName: NodeName) { () => deriveRenderOpts(props, { name: nodeName, - descendantNames: [...PlasmicDescendants[nodeName]], + descendantNames: PlasmicDescendants[nodeName], internalArgPropNames: PlasmicPeriodPicker__ArgProps, internalVariantPropNames: PlasmicPeriodPicker__VariantProps, }), - [props, nodeName] ); - return PlasmicPeriodPicker__RenderFunc({ variants, args, diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicSharePageModal.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicSharePageModal.module.css index ccbd7a8a63..63427b70ea 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicSharePageModal.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicSharePageModal.module.css @@ -1,26 +1,14 @@ .root { - flex-direction: column; display: flex; + flex-direction: column; position: relative; width: 100%; height: 100%; - min-width: 0; - min-height: 0; -} -.root > :global(.__wab_flex-container) { - flex-direction: column; justify-content: flex-start; align-items: center; + row-gap: 24px; min-width: 0; min-height: 0; - margin-top: calc(0px - 24px); - height: calc(100% + 24px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-top: 24px; } .text { position: relative; @@ -31,33 +19,18 @@ min-width: 0; } .freeBox { - flex-direction: row; display: flex; position: relative; + flex-direction: row; + align-items: stretch; + justify-content: flex-start; width: 100%; height: auto; max-width: 100%; + column-gap: 8px; min-width: 0; padding: 8px; } -.freeBox > :global(.__wab_flex-container) { - flex-direction: row; - justify-content: flex-start; - align-items: stretch; - min-width: 0; - margin-left: calc(0px - 8px); - width: calc(100% + 8px); -} -.freeBox > :global(.__wab_flex-container) > *, -.freeBox > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox > :global(.__wab_flex-container) > picture > img, -.freeBox - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 8px; -} .urlBox:global(.__wab_instance) { max-width: 100%; } @@ -83,13 +56,11 @@ display: flex; position: relative; object-fit: cover; - width: 1em; height: 1em; } .svg__w5XDx { display: flex; position: relative; object-fit: cover; - width: 1em; height: 1em; } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicSharePageModal.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicSharePageModal.tsx index 5744463c42..5a2508c90b 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicSharePageModal.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicSharePageModal.tsx @@ -1,6 +1,6 @@ -// @ts-nocheck /* eslint-disable */ /* tslint:disable */ +// @ts-nocheck /* prettier-ignore-start */ /** @jsxRuntime classic */ @@ -10,37 +10,38 @@ // This class is auto-generated by Plasmic; please do not edit! // Plasmic Project: cQnF1HuwK97HkvkrC6uRk2 // Component: wQH36LoqQL -import * as React from "react"; -import * as ph from "@plasmicapp/host"; -import * as p from "@plasmicapp/react-web"; +import * as React from "react"; import { - SingleBooleanChoiceArg, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, + Flex as Flex__, hasVariant, + SingleBooleanChoiceArg, + StrictProps, + useDollarState, } from "@plasmicapp/react-web"; +import { useDataEnv } from "@plasmicapp/react-web/lib/host"; + import Button from "../../components/widgets/Button"; // plasmic-import: SEF-sRmSoqV5c/component import Textbox from "../../components/widgets/Textbox"; // plasmic-import: pA22NEzDCsn_/component +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import projectcss from "./plasmic_plasmic_kit_analytics.module.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss +import "./plasmic_plasmic_kit_analytics.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss import sty from "./PlasmicSharePageModal.module.css"; // plasmic-import: wQH36LoqQL/css +createPlasmicElementProxy; + export type PlasmicSharePageModal__VariantMembers = { copied: "copied"; }; - export type PlasmicSharePageModal__VariantsArgs = { copied?: SingleBooleanChoiceArg<"copied">; }; - type VariantPropType = keyof PlasmicSharePageModal__VariantsArgs; export const PlasmicSharePageModal__VariantProps = new Array( "copied" @@ -51,12 +52,12 @@ type ArgPropType = keyof PlasmicSharePageModal__ArgsType; export const PlasmicSharePageModal__ArgProps = new Array(); export type PlasmicSharePageModal__OverridesType = { - root?: p.Flex<"div">; - text?: p.Flex<"div">; - h2?: p.Flex<"h2">; - freeBox?: p.Flex<"div">; - urlBox?: p.Flex; - copyBtn?: p.Flex; + root?: Flex__<"div">; + text?: Flex__<"div">; + h2?: Flex__<"h2">; + freeBox?: Flex__<"div">; + urlBox?: Flex__; + copyBtn?: Flex__; }; export interface DefaultSharePageModalProps { @@ -64,52 +65,78 @@ export interface DefaultSharePageModalProps { className?: string; } +const $$ = {}; + function PlasmicSharePageModal__RenderFunc(props: { variants: PlasmicSharePageModal__VariantsArgs; args: PlasmicSharePageModal__ArgsType; overrides: PlasmicSharePageModal__OverridesType; - forNode?: string; }) { const { variants, overrides, forNode } = props; - const $ctx = ph.useDataEnv?.() || {}; const args = React.useMemo( () => Object.assign( {}, - - props.args + Object.fromEntries( + Object.entries(props.args).filter(([_, v]) => v !== undefined) + ) ), - [props.args] ); - const $props = args; + const $props = { + ...args, + ...variants, + }; + + const $ctx = useDataEnv?.() || {}; + const refsRef = React.useRef({}); + const $refs = refsRef.current; + + const stateSpecs: Parameters[0] = React.useMemo( + () => [ + { + path: "copied", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.copied, + }, + ], + [$props, $ctx, $refs] + ); + + const $state = useDollarState(stateSpecs, { + $props, + $ctx, + $queries: {}, + $q: {}, + $refs, + }); + + const styleTokensClassNames = _useStyleTokens(); return ( -
{""} @@ -118,54 +145,49 @@ function PlasmicSharePageModal__RenderFunc(props: { data-plasmic-name={"h2"} data-plasmic-override={overrides.h2} className={classNames( - projectcss.all, - projectcss.h2, - projectcss.__wab_text, + "all", + "h2", + "h2__cQnF1", + "__wab_text", sty.h2 )} > {"Share your analytics page"} } - {""}
+
+ - {true ? ( - - - - - - ) : null} - + {hasVariant($state, "copied", "copied") ? "Copied!" : "Copy"} + +
+
) as React.ReactElement | null; } @@ -194,14 +216,14 @@ type NodeOverridesType = Pick< PlasmicSharePageModal__OverridesType, DescendantsType >; - type NodeComponentProps = // Explicitly specify variants, args, and overrides as objects { variants?: PlasmicSharePageModal__VariantsArgs; args?: PlasmicSharePageModal__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props @@ -224,14 +246,12 @@ function makeNodeComponent(nodeName: NodeName) { () => deriveRenderOpts(props, { name: nodeName, - descendantNames: [...PlasmicDescendants[nodeName]], + descendantNames: PlasmicDescendants[nodeName], internalArgPropNames: PlasmicSharePageModal__ArgProps, internalVariantPropNames: PlasmicSharePageModal__VariantProps, }), - [props, nodeName] ); - return PlasmicSharePageModal__RenderFunc({ variants, args, diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicStyleTokensProvider.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicStyleTokensProvider.tsx new file mode 100644 index 0000000000..89662e10c5 --- /dev/null +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicStyleTokensProvider.tsx @@ -0,0 +1,21 @@ +/* eslint-disable */ +/* tslint:disable */ +// @ts-nocheck + +// This code is auto-generated by Plasmic; please do not edit! +// Plasmic Project: cQnF1HuwK97HkvkrC6uRk2 + +import { createUseStyleTokens } from "@plasmicapp/react-web"; + +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectModule + +import "../PP__plasmickit_design_system.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss +import "./plasmic_plasmic_kit_analytics.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss + +const data = { + base: `${"plasmic_tokens_cQnF1HuwK97HkvkrC6uRk2"} ${"plasmic_tokens_tXkSR39sgCDWSitZxC5xFV"} ${"plasmic_tokens_95xp9cYcv7HrNWpFWWhbcv"}`, + varianted: [], +}; + +export const _useStyleTokens = createUseStyleTokens(data, _useGlobalVariants); diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicTeamAnalytics.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicTeamAnalytics.module.css index 3fc0985dc1..21a7d67ff8 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicTeamAnalytics.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicTeamAnalytics.module.css @@ -27,7 +27,7 @@ .freeBox___65UDq { display: flex; flex-direction: column; - flex-column-gap: 0px; + column-gap: 0px; } } .teamFilters:global(.__wab_instance) { diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicTeamAnalytics.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicTeamAnalytics.tsx index d525ec1eff..7be71e325d 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicTeamAnalytics.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicTeamAnalytics.tsx @@ -1,6 +1,6 @@ -// @ts-nocheck /* eslint-disable */ /* tslint:disable */ +// @ts-nocheck /* prettier-ignore-start */ /** @jsxRuntime classic */ @@ -10,34 +10,63 @@ // This class is auto-generated by Plasmic; please do not edit! // Plasmic Project: cQnF1HuwK97HkvkrC6uRk2 // Component: RrG72JEyZOXn -import * as React from "react"; -import * as ph from "@plasmicapp/host"; -import * as p from "@plasmicapp/react-web"; +import * as React from "react"; import { - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, + Flex as Flex__, + StrictProps, } from "@plasmicapp/react-web"; +import { useDataEnv } from "@plasmicapp/react-web/lib/host"; + import AnalyticsHeader from "../../components/analytics/AnalyticsHeader"; // plasmic-import: lpGYGncEBV/component import ChartView from "../../components/analytics/ChartView"; // plasmic-import: vSQc3cNg5Q/component import DataFilters from "../../components/analytics/DataFilters"; // plasmic-import: Dza4MqGNx4p/component import TeamFilters from "../../components/analytics/TeamFilters"; // plasmic-import: U5oM6fe0OlY/component - -import { useScreenVariants as useScreenVariantsnXbQfeebYy0 } from "../q_4_text_mixins_product/PlasmicGlobalVariant__Screen"; // plasmic-import: NXbQfeebYy0/globalVariant +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import projectcss from "./plasmic_plasmic_kit_analytics.module.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss +import "./plasmic_plasmic_kit_analytics.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss import sty from "./PlasmicTeamAnalytics.module.css"; // plasmic-import: RrG72JEyZOXn/css -export type PlasmicTeamAnalytics__VariantMembers = {}; +const emptyProxy: any = new Proxy(() => "", { + get(_, prop) { + return prop === Symbol.toPrimitive ? () => "" : emptyProxy; + }, +}); + +function wrapQueriesWithLoadingProxy($q: any): any { + return new Proxy($q, { + get(target, queryName) { + const query = target[queryName]; + return !query || query.isLoading || !query.data ? emptyProxy : query; + }, + }); +} + +export type PageCtx = { + pageRoute: string; + pagePath: string; + params: Record; + query: Record; +}; + +export function generateDynamicMetadata($q: any, $ctx: PageCtx) { + return { + openGraph: {}, + twitter: { + card: "summary" as const, + }, + }; +} +createPlasmicElementProxy; + +export type PlasmicTeamAnalytics__VariantMembers = {}; export type PlasmicTeamAnalytics__VariantsArgs = {}; type VariantPropType = keyof PlasmicTeamAnalytics__VariantsArgs; export const PlasmicTeamAnalytics__VariantProps = new Array(); @@ -47,61 +76,63 @@ type ArgPropType = keyof PlasmicTeamAnalytics__ArgsType; export const PlasmicTeamAnalytics__ArgProps = new Array(); export type PlasmicTeamAnalytics__OverridesType = { - root?: p.Flex<"div">; - header?: p.Flex; - teamFilters?: p.Flex; - dataFilters?: p.Flex; - chartView?: p.Flex; + root?: Flex__<"div">; + header?: Flex__; + teamFilters?: Flex__; + dataFilters?: Flex__; + chartView?: Flex__; }; export interface DefaultTeamAnalyticsProps { className?: string; } +const $$ = {}; + function PlasmicTeamAnalytics__RenderFunc(props: { variants: PlasmicTeamAnalytics__VariantsArgs; args: PlasmicTeamAnalytics__ArgsType; overrides: PlasmicTeamAnalytics__OverridesType; - forNode?: string; }) { const { variants, overrides, forNode } = props; - const $ctx = ph.useDataEnv?.() || {}; const args = React.useMemo( () => Object.assign( {}, - - props.args + Object.fromEntries( + Object.entries(props.args).filter(([_, v]) => v !== undefined) + ) ), - [props.args] ); - const $props = args; + const $props = { + ...args, + ...variants, + }; - const globalVariants = ensureGlobalVariants({ - screen: useScreenVariantsnXbQfeebYy0(), - }); + const $ctx = useDataEnv?.() || {}; + const refsRef = React.useRef({}); + const $refs = refsRef.current; + + const styleTokensClassNames = _useStyleTokens(); return ( - {} - -
+
@@ -112,29 +143,27 @@ function PlasmicTeamAnalytics__RenderFunc(props: { teamName={"Current team name"} /> - {true ? ( -
- + + +
+ -
- - - -
+
- ) : null} +
@@ -164,14 +193,14 @@ type NodeOverridesType = Pick< PlasmicTeamAnalytics__OverridesType, DescendantsType >; - type NodeComponentProps = // Explicitly specify variants, args, and overrides as objects { variants?: PlasmicTeamAnalytics__VariantsArgs; args?: PlasmicTeamAnalytics__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props @@ -194,14 +223,12 @@ function makeNodeComponent(nodeName: NodeName) { () => deriveRenderOpts(props, { name: nodeName, - descendantNames: [...PlasmicDescendants[nodeName]], + descendantNames: PlasmicDescendants[nodeName], internalArgPropNames: PlasmicTeamAnalytics__ArgProps, internalVariantPropNames: PlasmicTeamAnalytics__VariantProps, }), - [props, nodeName] ); - return PlasmicTeamAnalytics__RenderFunc({ variants, args, @@ -230,6 +257,13 @@ export const PlasmicTeamAnalytics = Object.assign( // Metadata about props expected for PlasmicTeamAnalytics internalVariantProps: PlasmicTeamAnalytics__VariantProps, internalArgProps: PlasmicTeamAnalytics__ArgProps, + + pageMetadata: generateDynamicMetadata(wrapQueriesWithLoadingProxy({}), { + pageRoute: "/", + pagePath: "/", + params: {}, + query: {}, + }), } ); diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicTeamFilters.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicTeamFilters.tsx index 29639e275d..883d2c28f9 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicTeamFilters.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/PlasmicTeamFilters.tsx @@ -1,6 +1,6 @@ -// @ts-nocheck /* eslint-disable */ /* tslint:disable */ +// @ts-nocheck /* prettier-ignore-start */ /** @jsxRuntime classic */ @@ -10,30 +10,31 @@ // This class is auto-generated by Plasmic; please do not edit! // Plasmic Project: cQnF1HuwK97HkvkrC6uRk2 // Component: U5oM6fe0OlY -import * as React from "react"; -import * as ph from "@plasmicapp/host"; -import * as p from "@plasmicapp/react-web"; +import * as React from "react"; import { - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, + Flex as Flex__, + StrictProps, } from "@plasmicapp/react-web"; +import { useDataEnv } from "@plasmicapp/react-web/lib/host"; + import LabeledSelect from "../../components/analytics/LabeledSelect"; // plasmic-import: bQ74QBVIbHI/component import OptimizationOption from "../../components/analytics/OptimizationOption"; // plasmic-import: yvny0cDy_e/component import OptimizationsSelect from "../../components/analytics/OptimizationsSelect"; // plasmic-import: 0bODOMCtGi/component +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import projectcss from "./plasmic_plasmic_kit_analytics.module.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss +import "./plasmic_plasmic_kit_analytics.css"; // plasmic-import: cQnF1HuwK97HkvkrC6uRk2/projectcss import sty from "./PlasmicTeamFilters.module.css"; // plasmic-import: U5oM6fe0OlY/css -export type PlasmicTeamFilters__VariantMembers = {}; +createPlasmicElementProxy; +export type PlasmicTeamFilters__VariantMembers = {}; export type PlasmicTeamFilters__VariantsArgs = {}; type VariantPropType = keyof PlasmicTeamFilters__VariantsArgs; export const PlasmicTeamFilters__VariantProps = new Array(); @@ -43,39 +44,48 @@ type ArgPropType = keyof PlasmicTeamFilters__ArgsType; export const PlasmicTeamFilters__ArgProps = new Array(); export type PlasmicTeamFilters__OverridesType = { - root?: p.Flex<"div">; - workspaceSelect?: p.Flex; - projectSelect?: p.Flex; - pageSelect?: p.Flex; - optimizationsSelect?: p.Flex; + root?: Flex__<"div">; + workspaceSelect?: Flex__; + projectSelect?: Flex__; + pageSelect?: Flex__; + optimizationsSelect?: Flex__; }; export interface DefaultTeamFiltersProps { className?: string; } +const $$ = {}; + function PlasmicTeamFilters__RenderFunc(props: { variants: PlasmicTeamFilters__VariantsArgs; args: PlasmicTeamFilters__ArgsType; overrides: PlasmicTeamFilters__OverridesType; - forNode?: string; }) { const { variants, overrides, forNode } = props; - const $ctx = ph.useDataEnv?.() || {}; const args = React.useMemo( () => Object.assign( {}, - - props.args + Object.fromEntries( + Object.entries(props.args).filter(([_, v]) => v !== undefined) + ) ), - [props.args] ); - const $props = args; + const $props = { + ...args, + ...variants, + }; + + const $ctx = useDataEnv?.() || {}; + const refsRef = React.useRef({}); + const $refs = refsRef.current; + + const styleTokensClassNames = _useStyleTokens(); return (
- {true ? ( - - ) : null} + = Pick< PlasmicTeamFilters__OverridesType, DescendantsType >; - type NodeComponentProps = // Explicitly specify variants, args, and overrides as objects { variants?: PlasmicTeamFilters__VariantsArgs; args?: PlasmicTeamFilters__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props @@ -219,14 +225,12 @@ function makeNodeComponent(nodeName: NodeName) { () => deriveRenderOpts(props, { name: nodeName, - descendantNames: [...PlasmicDescendants[nodeName]], + descendantNames: PlasmicDescendants[nodeName], internalArgPropNames: PlasmicTeamFilters__ArgProps, internalVariantPropNames: PlasmicTeamFilters__VariantProps, }), - [props, nodeName] ); - return PlasmicTeamFilters__RenderFunc({ variants, args, diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/plasmic.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/plasmic.tsx new file mode 100644 index 0000000000..be4c8dce77 --- /dev/null +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/plasmic.tsx @@ -0,0 +1,14 @@ +/* eslint-disable */ +/* tslint:disable */ +// @ts-nocheck + +// This code is auto-generated by Plasmic; please do not edit! +// Plasmic Project: cQnF1HuwK97HkvkrC6uRk2 + +import { createUseGlobalVariants } from "@plasmicapp/react-web"; + +import { useScreenVariants as useScreenVariantsnXbQfeebYy0 } from "../q_4_text_mixins_product/PlasmicGlobalVariant__Screen"; // plasmic-import: NXbQfeebYy0/globalVariant + +export const _useGlobalVariants = createUseGlobalVariants({ + screen: useScreenVariantsnXbQfeebYy0, +}); diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/plasmic_plasmic_kit_analytics.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/plasmic_plasmic_kit_analytics.css new file mode 100644 index 0000000000..dafb7360df --- /dev/null +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/plasmic_plasmic_kit_analytics.css @@ -0,0 +1,633 @@ +@import "../PP__plasmickit_design_system.css"; /* plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss */ +@import "../plasmic_kit_icons/plasmic_q_4_icons.css"; /* plasmic-import: oT38tGyqov9SPWHpf3Y2Rf/projectcss */ +@import "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; /* plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss */ +@import "../q_4_text_mixins_product/plasmic_q_4_text_mixins_product.css"; /* plasmic-import: sDniSX4oPUZFyk2sXXb3nh/projectcss */ +@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C600&display=swap"); + +.plasmic_default_styles { + --mixin-qP3g6Hd5AdC_text-decoration-line: none; + --mixin-qP3g6Hd5AdC_font-family: "Inter", sans-serif; + --mixin-qP3g6Hd5AdC_color: var(--token-0IloF6TmFvF); + --mixin-qP3g6Hd5AdC_font-size: 12px; + --mixin-qP3g6Hd5AdC_white-space: pre-wrap; + --mixin-qP3g6Hd5AdC_line-height: 1.5; + --mixin-2zEfljePq9P_color: var(--token-VUsIDivgUss); + --mixin-2zEfljePq9P_white-space: pre-wrap; + --mixin-EEKi5Tu2fbK_white-space: pre-wrap; + --mixin-YQD_Uc8Md__font-family: "Inter", sans-serif; + --mixin-YQD_Uc8Md__font-size: 72px; + --mixin-YQD_Uc8Md__font-weight: 500; + --mixin-YQD_Uc8Md__white-space: pre-wrap; + --mixin-vEOXQLfcbC_font-family: "Inter", sans-serif; + --mixin-vEOXQLfcbC_font-size: 48px; + --mixin-vEOXQLfcbC_font-weight: 500; + --mixin-vEOXQLfcbC_white-space: pre-wrap; + --mixin-EXCWDILscU_font-family: "Inter", sans-serif; + --mixin-EXCWDILscU_font-size: 32px; + --mixin-EXCWDILscU_font-weight: 500; + --mixin-EXCWDILscU_white-space: pre-wrap; + --mixin-N7cG0Ri48QP_font-family: "Inter", sans-serif; + --mixin-N7cG0Ri48QP_font-size: 24px; + --mixin-N7cG0Ri48QP_font-weight: 500; + --mixin-N7cG0Ri48QP_white-space: pre-wrap; + --mixin-__gfw12lSVA_font-family: "Inter", sans-serif; + --mixin-__gfw12lSVA_font-size: 20px; + --mixin-__gfw12lSVA_font-weight: 500; + --mixin-__gfw12lSVA_white-space: pre-wrap; + --mixin-eoQXVRNaCyL_font-family: "Inter", sans-serif; + --mixin-eoQXVRNaCyL_font-size: 16px; + --mixin-eoQXVRNaCyL_font-weight: 500; + --mixin-eoQXVRNaCyL_white-space: pre-wrap; + --mixin-fkU_lzw4PF5_white-space: pre-wrap; + --mixin-v9e0yiTlX_o_white-space: pre-wrap; + --mixin-MMatKfNT024_white-space: pre-wrap; + --mixin-EuhGUWboGh2_position: relative; + --mixin-EuhGUWboGh2_white-space: pre-wrap; + --mixin-_MYD1z_SMDp_position: relative; + --mixin-_MYD1z_SMDp_white-space: pre-wrap; + --mixin-Yot8xJYsc_white-space: pre-wrap; + --mixin-985HZFQW4_white-space: pre-wrap; + --mixin-3i6_2FI7G_white-space: pre-wrap; + --mixin-3HZrBcpB6_white-space: pre-wrap; + --mixin-n1REaG4FH_white-space: pre-wrap; + --mixin-Hk5zzHaLS_white-space: pre-wrap; + --mixin-B4DR1AgPG_white-space: pre-wrap; + --mixin-bhSle9dw7_white-space: pre-wrap; + --mixin-5d8gGYi39_white-space: pre-wrap; + --mixin-sxjZ0YFFF_white-space: pre-wrap; + --mixin-GZm4AQ_Ek_white-space: pre-wrap; + --mixin-qjB654aOL_white-space: pre-wrap; +} + +:where(.all) { + display: block; + white-space: inherit; + grid-row: auto; + grid-column: auto; + position: relative; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + text-decoration-line: none; + margin: 0; + border-width: 0px; +} +:where(.__wab_expr_html_text *) { + white-space: inherit; + grid-row: auto; + grid-column: auto; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + margin: 0; + border-width: 0px; +} + +:where(.img) { + display: inline-block; +} +:where(.__wab_expr_html_text img) { + white-space: inherit; +} + +:where(.li) { + display: list-item; +} +:where(.__wab_expr_html_text li) { + white-space: inherit; +} + +:where(.span) { + display: inline; + position: static; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text span) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.input) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text input) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} + +:where(.textarea) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text textarea) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} + +:where(.button) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text button) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} + +:where(.code) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text code) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.pre) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text pre) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.p) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text p) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.i) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text i) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.em) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text em) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.strong) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text strong) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.h1) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h1) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h2) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h2) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h3) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h3) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h4) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h4) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h5) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h5) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h6) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h6) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.address) { + font-style: inherit; +} +:where(.__wab_expr_html_text address) { + white-space: inherit; + font-style: inherit; +} + +:where(.a) { + color: inherit; +} +:where(.__wab_expr_html_text a) { + white-space: inherit; + color: inherit; +} + +:where(.ol) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ol) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.ul) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ul) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.select) { + padding: 2px 6px; +} +:where(.__wab_expr_html_text select) { + white-space: inherit; + padding: 2px 6px; +} + +.plasmic_default__component_wrapper { + display: grid; +} +.plasmic_default__inline { + display: inline; +} +.plasmic_page_wrapper { + display: flex; + width: 100%; + min-height: 100vh; + align-items: stretch; + align-self: start; +} +.plasmic_page_wrapper > * { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) { + font-family: var(--mixin-qP3g6Hd5AdC_font-family); + font-size: var(--mixin-qP3g6Hd5AdC_font-size); + color: var(--mixin-qP3g6Hd5AdC_color); + line-height: var(--mixin-qP3g6Hd5AdC_line-height); + white-space: var(--mixin-qP3g6Hd5AdC_white-space); +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) a:where(.a__cQnF1), +a:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.a__cQnF1), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) a, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) a, +a:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) { + color: var(--mixin-2zEfljePq9P_color); +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) a:where(.a__cQnF1):hover, +a:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.a__cQnF1):hover, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) a:hover, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) a:hover, +a:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags):hover { +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) h1:where(.h1__cQnF1), +h1:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.h1__cQnF1), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) h1, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) h1, +h1:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) { + font-family: var(--mixin-YQD_Uc8Md__font-family); + font-size: var(--mixin-YQD_Uc8Md__font-size); + font-weight: var(--mixin-YQD_Uc8Md__font-weight); +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) h2:where(.h2__cQnF1), +h2:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.h2__cQnF1), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) h2, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) h2, +h2:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) { + font-family: var(--mixin-vEOXQLfcbC_font-family); + font-size: var(--mixin-vEOXQLfcbC_font-size); + font-weight: var(--mixin-vEOXQLfcbC_font-weight); +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) h3:where(.h3__cQnF1), +h3:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.h3__cQnF1), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) h3, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) h3, +h3:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) { + font-family: var(--mixin-EXCWDILscU_font-family); + font-size: var(--mixin-EXCWDILscU_font-size); + font-weight: var(--mixin-EXCWDILscU_font-weight); +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) h4:where(.h4__cQnF1), +h4:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.h4__cQnF1), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) h4, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) h4, +h4:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) { + font-family: var(--mixin-N7cG0Ri48QP_font-family); + font-size: var(--mixin-N7cG0Ri48QP_font-size); + font-weight: var(--mixin-N7cG0Ri48QP_font-weight); +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) h5:where(.h5__cQnF1), +h5:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.h5__cQnF1), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) h5, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) h5, +h5:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) { + font-family: var(--mixin-__gfw12lSVA_font-family); + font-size: var(--mixin-__gfw12lSVA_font-size); + font-weight: var(--mixin-__gfw12lSVA_font-weight); +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) h6:where(.h6__cQnF1), +h6:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.h6__cQnF1), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) h6, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) h6, +h6:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) { + font-family: var(--mixin-eoQXVRNaCyL_font-family); + font-size: var(--mixin-eoQXVRNaCyL_font-size); + font-weight: var(--mixin-eoQXVRNaCyL_font-weight); +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) blockquote:where(.blockquote__cQnF1), +blockquote:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.blockquote__cQnF1), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) blockquote, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) blockquote, +blockquote:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) { +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) code:where(.code__cQnF1), +code:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.code__cQnF1), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) code, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) code, +code:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) { +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) pre:where(.pre__cQnF1), +pre:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.pre__cQnF1), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) pre, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) pre, +pre:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) { +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) ol:where(.ol__cQnF1), +ol:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.ol__cQnF1), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) ol, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) ol, +ol:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) { + position: var(--mixin-EuhGUWboGh2_position); +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) ul:where(.ul__cQnF1), +ul:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.ul__cQnF1), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) ul, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) ul, +ul:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) { + position: var(--mixin-_MYD1z_SMDp_position); +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) a:where(.a__cQnF1):not(:hover), +a:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.a__cQnF1):not(:hover), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) a:not(:hover), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) a:not(:hover), +a:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags):not(:hover) { +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) a:where(.a__cQnF1):active, +a:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.a__cQnF1):active, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) a:active, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) a:active, +a:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags):active { +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) a:where(.a__cQnF1):not(:active), +a:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.a__cQnF1):not(:active), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) a:not(:active), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) a:not(:active), +a:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags):not(:active) { +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) a:where(.a__cQnF1):focus, +a:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.a__cQnF1):focus, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) a:focus, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) a:focus, +a:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags):focus { +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) a:where(.a__cQnF1):not(:link), +a:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.a__cQnF1):not(:link), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) a:not(:link), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) a:not(:link), +a:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags):not(:link) { +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) + blockquote:where(.blockquote__cQnF1):not(:link), +blockquote:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.blockquote__cQnF1):not( + :link + ), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) + blockquote:not(:link), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) blockquote:not(:link), +blockquote:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags):not(:link) { +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) + blockquote:where(.blockquote__cQnF1):hover, +blockquote:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.blockquote__cQnF1):hover, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) + blockquote:hover, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) blockquote:hover, +blockquote:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags):hover { +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) code:where(.code__cQnF1):hover, +code:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.code__cQnF1):hover, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) code:hover, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) code:hover, +code:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags):hover { +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) li:where(.li__cQnF1), +li:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.li__cQnF1), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) li, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) li, +li:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) { +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) p:where(.p__cQnF1), +p:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.p__cQnF1), +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) p, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) p, +p:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) { +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) ul:where(.ul__cQnF1):hover, +ul:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.ul__cQnF1):hover, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) ul:hover, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) ul:hover, +ul:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags):hover { +} + +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2) li:where(.li__cQnF1):hover, +li:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2.li__cQnF1):hover, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2 .__wab_expr_html_text) li:hover, +:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags) li:hover, +li:where(.root_reset_cQnF1HuwK97HkvkrC6uRk2_tags):hover { +} diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/plasmic_plasmic_kit_analytics.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/plasmic_plasmic_kit_analytics.module.css deleted file mode 100644 index 9e8c3a7cc9..0000000000 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_analytics/plasmic_plasmic_kit_analytics.module.css +++ /dev/null @@ -1,543 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C600&display=swap"); - -.plasmic_default_styles { - --mixin-qP3g6Hd5AdC_text-decoration-line: none; - --mixin-qP3g6Hd5AdC_font-family: "Inter"; - --mixin-qP3g6Hd5AdC_color: var(--token-0IloF6TmFvF); - --mixin-qP3g6Hd5AdC_font-size: 12px; - --mixin-qP3g6Hd5AdC_white-space: pre-wrap; - --mixin-qP3g6Hd5AdC_line-height: 1.5; - --mixin-2zEfljePq9P_color: var(--token-VUsIDivgUss); - --mixin-2zEfljePq9P_white-space: pre-wrap; - --mixin-EEKi5Tu2fbK_white-space: pre-wrap; - --mixin-YQD_Uc8Md__font-family: "Inter"; - --mixin-YQD_Uc8Md__font-size: 72px; - --mixin-YQD_Uc8Md__font-weight: 500; - --mixin-YQD_Uc8Md__white-space: pre-wrap; - --mixin-vEOXQLfcbC_font-family: "Inter"; - --mixin-vEOXQLfcbC_font-size: 48px; - --mixin-vEOXQLfcbC_font-weight: 500; - --mixin-vEOXQLfcbC_white-space: pre-wrap; - --mixin-EXCWDILscU_font-family: "Inter"; - --mixin-EXCWDILscU_font-size: 32px; - --mixin-EXCWDILscU_font-weight: 500; - --mixin-EXCWDILscU_white-space: pre-wrap; - --mixin-N7cG0Ri48QP_font-family: "Inter"; - --mixin-N7cG0Ri48QP_font-size: 24px; - --mixin-N7cG0Ri48QP_font-weight: 500; - --mixin-N7cG0Ri48QP_white-space: pre-wrap; - --mixin-__gfw12lSVA_font-family: "Inter"; - --mixin-__gfw12lSVA_font-size: 20px; - --mixin-__gfw12lSVA_font-weight: 500; - --mixin-__gfw12lSVA_white-space: pre-wrap; - --mixin-eoQXVRNaCyL_font-family: "Inter"; - --mixin-eoQXVRNaCyL_font-size: 16px; - --mixin-eoQXVRNaCyL_font-weight: 500; - --mixin-eoQXVRNaCyL_white-space: pre-wrap; - --mixin-fkU_lzw4PF5_white-space: pre-wrap; - --mixin-v9e0yiTlX_o_white-space: pre-wrap; - --mixin-MMatKfNT024_white-space: pre-wrap; - --mixin-EuhGUWboGh2_position: relative; - --mixin-EuhGUWboGh2_white-space: pre-wrap; - --mixin-_MYD1z_SMDp_position: relative; - --mixin-_MYD1z_SMDp_white-space: pre-wrap; - --mixin-Yot8xJYsc_white-space: pre-wrap; - --mixin-985HZFQW4_white-space: pre-wrap; - --mixin-3i6_2FI7G_white-space: pre-wrap; - --mixin-3HZrBcpB6_white-space: pre-wrap; - --mixin-n1REaG4FH_white-space: pre-wrap; - --mixin-Hk5zzHaLS_white-space: pre-wrap; - --mixin-B4DR1AgPG_white-space: pre-wrap; - --mixin-bhSle9dw7_white-space: pre-wrap; - --mixin-5d8gGYi39_white-space: pre-wrap; - --mixin-sxjZ0YFFF_white-space: pre-wrap; - --mixin-GZm4AQ_Ek_white-space: pre-wrap; - --mixin-qjB654aOL_white-space: pre-wrap; -} - -:where(.all) { - display: block; - white-space: inherit; - grid-row: auto; - grid-column: auto; - position: relative; - background: none; - background-size: 100% 100%; - background-repeat: no-repeat; - box-shadow: none; - box-sizing: border-box; - text-decoration-line: none; - margin: 0; - border-width: 0px; -} -:where(.__wab_expr_html_text *) { - white-space: inherit; - grid-row: auto; - grid-column: auto; - background: none; - background-size: 100% 100%; - background-repeat: no-repeat; - box-shadow: none; - box-sizing: border-box; - text-decoration-line: none; - margin: 0; - border-width: 0px; -} - -:where(.img) { - display: inline-block; -} -:where(.__wab_expr_html_text img) { - white-space: inherit; -} - -:where(.li) { - display: list-item; -} -:where(.__wab_expr_html_text li) { - white-space: inherit; -} - -:where(.span) { - display: inline; - position: static; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} -:where(.__wab_expr_html_text span) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} - -:where(.input) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: linear-gradient(#ffffff, #ffffff); - padding: 2px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text input) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: linear-gradient(#ffffff, #ffffff); - padding: 2px; - border: 1px solid lightgray; -} - -:where(.textarea) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - padding: 2px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text textarea) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - padding: 2px; - border: 1px solid lightgray; -} - -:where(.button) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: none; - align-items: flex-start; - text-align: center; - padding: 2px 6px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text button) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: none; - align-items: flex-start; - text-align: center; - padding: 2px 6px; - border: 1px solid lightgray; -} - -:where(.code) { - font-family: inherit; - line-height: inherit; -} -:where(.__wab_expr_html_text code) { - white-space: inherit; - font-family: inherit; - line-height: inherit; -} - -:where(.pre) { - font-family: inherit; - line-height: inherit; -} -:where(.__wab_expr_html_text pre) { - white-space: inherit; - font-family: inherit; - line-height: inherit; -} - -:where(.p) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} -:where(.__wab_expr_html_text p) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} - -:where(.h1) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h1) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h2) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h2) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h3) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h3) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h4) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h4) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h5) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h5) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h6) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h6) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.address) { - font-style: inherit; -} -:where(.__wab_expr_html_text address) { - white-space: inherit; - font-style: inherit; -} - -:where(.a) { - color: inherit; -} -:where(.__wab_expr_html_text a) { - white-space: inherit; - color: inherit; -} - -:where(.ol) { - list-style-type: none; - padding: 0; -} -:where(.__wab_expr_html_text ol) { - white-space: inherit; - list-style-type: none; - padding: 0; -} - -:where(.ul) { - list-style-type: none; - padding: 0; -} -:where(.__wab_expr_html_text ul) { - white-space: inherit; - list-style-type: none; - padding: 0; -} - -:where(.select) { - padding: 2px 6px; -} -:where(.__wab_expr_html_text select) { - white-space: inherit; - padding: 2px 6px; -} - -.plasmic_default__component_wrapper { - display: grid; -} -.plasmic_default__inline { - display: inline; -} -.plasmic_page_wrapper { - display: flex; - width: 100%; - min-height: 100vh; - align-items: stretch; - align-self: start; -} -.plasmic_page_wrapper > * { - height: auto !important; -} -.__wab_expr_html_text { - white-space: normal; -} -.root_reset { - font-family: var(--mixin-qP3g6Hd5AdC_font-family); - font-size: var(--mixin-qP3g6Hd5AdC_font-size); - color: var(--mixin-qP3g6Hd5AdC_color); - line-height: var(--mixin-qP3g6Hd5AdC_line-height); - white-space: var(--mixin-qP3g6Hd5AdC_white-space); -} - -:where(.root_reset .plasmic_default__a), -:where(.root_reset .a), -:where(.root_reset :global(.__wab_expr_html_text) a), -:where(.root_reset.plasmic_default__a) { - color: var(--mixin-2zEfljePq9P_color); -} - -:where(.root_reset .plasmic_default__a:hover), -:where(.root_reset .a:hover), -:where(.root_reset :global(.__wab_expr_html_text) a:hover), -:where(.root_reset.plasmic_default__a:hover) { -} - -:where(.root_reset .plasmic_default__h1), -:where(.root_reset .h1), -:where(.root_reset :global(.__wab_expr_html_text) h1), -:where(.root_reset.plasmic_default__h1) { - font-family: var(--mixin-YQD_Uc8Md__font-family); - font-size: var(--mixin-YQD_Uc8Md__font-size); - font-weight: var(--mixin-YQD_Uc8Md__font-weight); -} - -:where(.root_reset .plasmic_default__h2), -:where(.root_reset .h2), -:where(.root_reset :global(.__wab_expr_html_text) h2), -:where(.root_reset.plasmic_default__h2) { - font-family: var(--mixin-vEOXQLfcbC_font-family); - font-size: var(--mixin-vEOXQLfcbC_font-size); - font-weight: var(--mixin-vEOXQLfcbC_font-weight); -} - -:where(.root_reset .plasmic_default__h3), -:where(.root_reset .h3), -:where(.root_reset :global(.__wab_expr_html_text) h3), -:where(.root_reset.plasmic_default__h3) { - font-family: var(--mixin-EXCWDILscU_font-family); - font-size: var(--mixin-EXCWDILscU_font-size); - font-weight: var(--mixin-EXCWDILscU_font-weight); -} - -:where(.root_reset .plasmic_default__h4), -:where(.root_reset .h4), -:where(.root_reset :global(.__wab_expr_html_text) h4), -:where(.root_reset.plasmic_default__h4) { - font-family: var(--mixin-N7cG0Ri48QP_font-family); - font-size: var(--mixin-N7cG0Ri48QP_font-size); - font-weight: var(--mixin-N7cG0Ri48QP_font-weight); -} - -:where(.root_reset .plasmic_default__h5), -:where(.root_reset .h5), -:where(.root_reset :global(.__wab_expr_html_text) h5), -:where(.root_reset.plasmic_default__h5) { - font-family: var(--mixin-__gfw12lSVA_font-family); - font-size: var(--mixin-__gfw12lSVA_font-size); - font-weight: var(--mixin-__gfw12lSVA_font-weight); -} - -:where(.root_reset .plasmic_default__h6), -:where(.root_reset .h6), -:where(.root_reset :global(.__wab_expr_html_text) h6), -:where(.root_reset.plasmic_default__h6) { - font-family: var(--mixin-eoQXVRNaCyL_font-family); - font-size: var(--mixin-eoQXVRNaCyL_font-size); - font-weight: var(--mixin-eoQXVRNaCyL_font-weight); -} - -:where(.root_reset .plasmic_default__blockquote), -:where(.root_reset .blockquote), -:where(.root_reset :global(.__wab_expr_html_text) blockquote), -:where(.root_reset.plasmic_default__blockquote) { -} - -:where(.root_reset .plasmic_default__code), -:where(.root_reset .code), -:where(.root_reset :global(.__wab_expr_html_text) code), -:where(.root_reset.plasmic_default__code) { -} - -:where(.root_reset .plasmic_default__pre), -:where(.root_reset .pre), -:where(.root_reset :global(.__wab_expr_html_text) pre), -:where(.root_reset.plasmic_default__pre) { -} - -:where(.root_reset .plasmic_default__ol), -:where(.root_reset .ol), -:where(.root_reset :global(.__wab_expr_html_text) ol), -:where(.root_reset.plasmic_default__ol) { - position: var(--mixin-EuhGUWboGh2_position); -} - -:where(.root_reset .plasmic_default__ul), -:where(.root_reset .ul), -:where(.root_reset :global(.__wab_expr_html_text) ul), -:where(.root_reset.plasmic_default__ul) { - position: var(--mixin-_MYD1z_SMDp_position); -} - -:where(.root_reset .plasmic_default__a:not(:hover)), -:where(.root_reset .a:not(:hover)), -:where(.root_reset :global(.__wab_expr_html_text) a:not(:hover)), -:where(.root_reset.plasmic_default__a:not(:hover)) { -} - -:where(.root_reset .plasmic_default__a:active), -:where(.root_reset .a:active), -:where(.root_reset :global(.__wab_expr_html_text) a:active), -:where(.root_reset.plasmic_default__a:active) { -} - -:where(.root_reset .plasmic_default__a:not(:active)), -:where(.root_reset .a:not(:active)), -:where(.root_reset :global(.__wab_expr_html_text) a:not(:active)), -:where(.root_reset.plasmic_default__a:not(:active)) { -} - -:where(.root_reset .plasmic_default__a:focus), -:where(.root_reset .a:focus), -:where(.root_reset :global(.__wab_expr_html_text) a:focus), -:where(.root_reset.plasmic_default__a:focus) { -} - -:where(.root_reset .plasmic_default__a:not(:link)), -:where(.root_reset .a:not(:link)), -:where(.root_reset :global(.__wab_expr_html_text) a:not(:link)), -:where(.root_reset.plasmic_default__a:not(:link)) { -} - -:where(.root_reset .plasmic_default__blockquote:not(:link)), -:where(.root_reset .blockquote:not(:link)), -:where(.root_reset :global(.__wab_expr_html_text) blockquote:not(:link)), -:where(.root_reset.plasmic_default__blockquote:not(:link)) { -} - -:where(.root_reset .plasmic_default__blockquote:hover), -:where(.root_reset .blockquote:hover), -:where(.root_reset :global(.__wab_expr_html_text) blockquote:hover), -:where(.root_reset.plasmic_default__blockquote:hover) { -} - -:where(.root_reset .plasmic_default__code:hover), -:where(.root_reset .code:hover), -:where(.root_reset :global(.__wab_expr_html_text) code:hover), -:where(.root_reset.plasmic_default__code:hover) { -} - -:where(.root_reset .plasmic_default__li), -:where(.root_reset .li), -:where(.root_reset :global(.__wab_expr_html_text) li), -:where(.root_reset.plasmic_default__li) { -} - -:where(.root_reset .plasmic_default__p), -:where(.root_reset .p), -:where(.root_reset :global(.__wab_expr_html_text) p), -:where(.root_reset.plasmic_default__p) { -} - -:where(.root_reset .plasmic_default__ul:hover), -:where(.root_reset .ul:hover), -:where(.root_reset :global(.__wab_expr_html_text) ul:hover), -:where(.root_reset.plasmic_default__ul:hover) { -} - -:where(.root_reset .plasmic_default__li:hover), -:where(.root_reset .li:hover), -:where(.root_reset :global(.__wab_expr_html_text) li:hover), -:where(.root_reset.plasmic_default__li:hover) { -} diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsContentPage.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsContentPage.tsx index f033545131..59d822cde3 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsContentPage.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsContentPage.tsx @@ -32,7 +32,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_cms.module.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss +import "./plasmic_plasmic_kit_cms.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss import sty from "./PlasmicCmsContentPage.module.css"; // plasmic-import: fC6EeUMrpE/css createPlasmicElementProxy; @@ -99,15 +99,17 @@ function PlasmicCmsContentPage__RenderFunc(props: { path: "noModels", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.noModels, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.noModels, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -120,10 +122,10 @@ function PlasmicCmsContentPage__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_ieacQ3Z46z4gwo1FnaB5vY", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { [sty.rootnoModels]: hasVariant($state, "noModels", "noModels") } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsEntriesList.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsEntriesList.tsx index cf9feb9f04..0037f7a213 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsEntriesList.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsEntriesList.tsx @@ -33,7 +33,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_cms.module.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss +import "./plasmic_plasmic_kit_cms.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss import sty from "./PlasmicCmsEntriesList.module.css"; // plasmic-import: k2vc2stl18/css import SortSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__SortSvg"; // plasmic-import: tzSml-ZqphbQ/icon @@ -113,15 +113,17 @@ function PlasmicCmsEntriesList__RenderFunc(props: { path: "isEmpty", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isEmpty, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.isEmpty, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -134,17 +136,17 @@ function PlasmicCmsEntriesList__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_ieacQ3Z46z4gwo1FnaB5vY", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { [sty.rootisEmpty]: hasVariant($state, "isEmpty", "isEmpty") } )} >
-
+
{renderPlasmicSlot({ defaultContents: "FAQs", value: args.modelName, @@ -168,7 +170,7 @@ function PlasmicCmsEntriesList__RenderFunc(props: { withBackgroundHover={true} />
-
+
{(hasVariant($state, "isEmpty", "isEmpty") ? false : true) ? (
diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsEntryDetails.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsEntryDetails.tsx index cf37352ec8..de3cd2b862 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsEntryDetails.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsEntryDetails.tsx @@ -30,7 +30,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_cms.module.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss +import "./plasmic_plasmic_kit_cms.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss import sty from "./PlasmicCmsEntryDetails.module.css"; // plasmic-import: 9vM3ZFGR4eV/css import HistoryIcon from "../plasmic_kit/PlasmicIcon__History"; // plasmic-import: 6ZOswzsUR/icon @@ -107,19 +107,19 @@ function PlasmicCmsEntryDetails__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_ieacQ3Z46z4gwo1FnaB5vY", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root )} > -
+
{"Enter some text"}
@@ -142,11 +138,7 @@ function PlasmicCmsEntryDetails__RenderFunc(props: {
{"Auto-saved"}
@@ -154,7 +146,7 @@ function PlasmicCmsEntryDetails__RenderFunc(props: {
@@ -187,20 +173,14 @@ function PlasmicCmsEntryDetails__RenderFunc(props: { size={"wide"} startIcon={ } type={["clear"]} withIcons={["startIcon"]} > -
+
{"Preview"}
@@ -220,8 +200,8 @@ function PlasmicCmsEntryDetails__RenderFunc(props: { />
-
-
+
+
{renderPlasmicSlot({ defaultContents: null, value: args.children, diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsEntryItem.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsEntryItem.module.css index 854dd1cf86..ec2025471d 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsEntryItem.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsEntryItem.module.css @@ -9,7 +9,7 @@ .rootisActive { background: var(--token-bV4cCeIniS6); } -.root:hover { +.root:hover:hover { background: var(--token-p-rw5DRJTx); } .freeBox__ld9Y4 { diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsEntryItem.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsEntryItem.tsx index 58170f641b..c794f32000 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsEntryItem.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsEntryItem.tsx @@ -30,7 +30,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_cms.module.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss +import "./plasmic_plasmic_kit_cms.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss import sty from "./PlasmicCmsEntryItem.module.css"; // plasmic-import: girCdMST6R/css import PencilSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__PencilSvg"; // plasmic-import: 540duoJvb/icon @@ -110,21 +110,23 @@ function PlasmicCmsEntryItem__RenderFunc(props: { path: "isActive", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isActive, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.isActive, }, { path: "hasDraft", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.hasDraft, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.hasDraft, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -137,17 +139,17 @@ function PlasmicCmsEntryItem__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_ieacQ3Z46z4gwo1FnaB5vY", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { [sty.rootisActive]: hasVariant($state, "isActive", "isActive") } )} >
$props.activeTab, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.activeTab, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -125,10 +127,10 @@ function PlasmicCmsLeftTabs__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_ieacQ3Z46z4gwo1FnaB5vY", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root )} @@ -146,10 +148,7 @@ function PlasmicCmsLeftTabs__RenderFunc(props: { isActive={hasVariant($state, "activeTab", "content") ? true : undefined} withBackgroundHover={true} > - + @@ -190,10 +189,7 @@ function PlasmicCmsLeftTabs__RenderFunc(props: { } withBackgroundHover={true} > - +
) as React.ReactElement | null; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelContent.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelContent.tsx index 0312c47f84..9cabbc9dd9 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelContent.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelContent.tsx @@ -32,7 +32,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_cms.module.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss +import "./plasmic_plasmic_kit_cms.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss import sty from "./PlasmicCmsModelContent.module.css"; // plasmic-import: Tz8Unep1qu/css createPlasmicElementProxy; @@ -100,15 +100,17 @@ function PlasmicCmsModelContent__RenderFunc(props: { path: "noEntries", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.noEntries, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.noEntries, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -121,10 +123,10 @@ function PlasmicCmsModelContent__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_ieacQ3Z46z4gwo1FnaB5vY", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { [sty.rootnoEntries]: hasVariant($state, "noEntries", "noEntries") } @@ -147,11 +149,7 @@ function PlasmicCmsModelContent__RenderFunc(props: {
{"FAQs"}
diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelDetails.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelDetails.tsx index fd1027eaa8..2c8ab79059 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelDetails.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelDetails.tsx @@ -30,7 +30,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_cms.module.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss +import "./plasmic_plasmic_kit_cms.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss import sty from "./PlasmicCmsModelDetails.module.css"; // plasmic-import: pLQf-lY112u/css createPlasmicElementProxy; @@ -102,19 +102,19 @@ function PlasmicCmsModelDetails__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_ieacQ3Z46z4gwo1FnaB5vY", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root )} > -
+
{"Enter some text"}
@@ -136,11 +132,7 @@ function PlasmicCmsModelDetails__RenderFunc(props: {
{"Model schema"}
@@ -148,7 +140,7 @@ function PlasmicCmsModelDetails__RenderFunc(props: {
-
-
+
+
{renderPlasmicSlot({ defaultContents: null, value: args.children, diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelItem.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelItem.module.css index a88b6eaf26..b3078f4442 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelItem.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelItem.module.css @@ -15,7 +15,7 @@ .rootisActive { background: var(--token-bV4cCeIniS6); } -.root:hover { +.root:hover:hover { background: var(--token-bV4cCeIniS6); } .svg { diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelItem.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelItem.tsx index 6393128b2f..a2b8440e17 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelItem.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelItem.tsx @@ -30,7 +30,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_cms.module.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss +import "./plasmic_plasmic_kit_cms.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss import sty from "./PlasmicCmsModelItem.module.css"; // plasmic-import: FpZFUfiTA6/css import BoxSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__BoxSvg"; // plasmic-import: 0qLNxfRGB/icon @@ -100,15 +100,17 @@ function PlasmicCmsModelItem__RenderFunc(props: { path: "isActive", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isActive, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.isActive, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -121,10 +123,10 @@ function PlasmicCmsModelItem__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_ieacQ3Z46z4gwo1FnaB5vY", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { [sty.rootisActive]: hasVariant($state, "isActive", "isActive") } @@ -133,7 +135,7 @@ function PlasmicCmsModelItem__RenderFunc(props: { diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelsList.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelsList.tsx index ceda8dee30..ad7773b0a4 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelsList.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsModelsList.tsx @@ -34,7 +34,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_cms.module.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss +import "./plasmic_plasmic_kit_cms.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss import sty from "./PlasmicCmsModelsList.module.css"; // plasmic-import: M3aa84scyXT/css createPlasmicElementProxy; @@ -118,28 +118,31 @@ function PlasmicCmsModelsList__RenderFunc(props: { path: "isEmpty", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isEmpty, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.isEmpty, }, { path: "isSchemaMode", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isSchemaMode, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.isSchemaMode, }, { path: "hasArchivedModels", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.hasArchivedModels, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -152,10 +155,10 @@ function PlasmicCmsModelsList__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_ieacQ3Z46z4gwo1FnaB5vY", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { @@ -174,7 +177,7 @@ function PlasmicCmsModelsList__RenderFunc(props: { )} >
{hasVariant($state, "isSchemaMode", "isSchemaMode") ? "Edit Models" @@ -241,7 +239,7 @@ function PlasmicCmsModelsList__RenderFunc(props: { /> ) : null}
-
+
{(hasVariant($state, "isEmpty", "isEmpty") ? false : true) ? (
) : null}
{"No models have been created."}
@@ -321,19 +314,13 @@ function PlasmicCmsModelsList__RenderFunc(props: { collapseState={"expanded"} isLast={true} title={ -
+
{"Archived models"}
} >
{(hasVariant($state, "isEmpty", "isEmpty") ? false : true) ? (
) : null}
{"No models have been created."}
diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsRoot.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsRoot.tsx index 4953094420..102e3517de 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsRoot.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsRoot.tsx @@ -34,7 +34,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_cms.module.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss +import "./plasmic_plasmic_kit_cms.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss import sty from "./PlasmicCmsRoot.module.css"; // plasmic-import: FiuFB1wXjp/css createPlasmicElementProxy; @@ -105,15 +105,17 @@ function PlasmicCmsRoot__RenderFunc(props: { path: "activeTab", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.activeTab, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.activeTab, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -126,10 +128,10 @@ function PlasmicCmsRoot__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_ieacQ3Z46z4gwo1FnaB5vY", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root )} @@ -154,7 +156,7 @@ function PlasmicCmsRoot__RenderFunc(props: {
$props.noModels, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.noModels, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -120,10 +122,10 @@ function PlasmicCmsSchemaPage__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_ieacQ3Z46z4gwo1FnaB5vY", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root )} diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsSettingsPage.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsSettingsPage.tsx index 52eaea88cc..2499d0828a 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsSettingsPage.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsSettingsPage.tsx @@ -29,7 +29,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_cms.module.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss +import "./plasmic_plasmic_kit_cms.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss import sty from "./PlasmicCmsSettingsPage.module.css"; // plasmic-import: a5viGetjMi/css createPlasmicElementProxy; @@ -100,15 +100,17 @@ function PlasmicCmsSettingsPage__RenderFunc(props: { path: "noModels", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.noModels, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.noModels, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -121,38 +123,28 @@ function PlasmicCmsSettingsPage__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_ieacQ3Z46z4gwo1FnaB5vY", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root )} > -
-
+
+
-
+
{"Settings"}
{"X models"}
@@ -160,7 +152,7 @@ function PlasmicCmsSettingsPage__RenderFunc(props: {
@@ -191,11 +177,11 @@ function PlasmicCmsSettingsPage__RenderFunc(props: {
-
+
diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsTopBar.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsTopBar.tsx index 84d89dfc65..0c45a89696 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsTopBar.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicCmsTopBar.tsx @@ -30,7 +30,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_cms.module.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss +import "./plasmic_plasmic_kit_cms.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss import sty from "./PlasmicCmsTopBar.module.css"; // plasmic-import: FxC1c7NZtR/css import MarkFullColorIcon from "../plasmic_kit_design_system/PlasmicIcon__MarkFullColor"; // plasmic-import: l_n_OBLJg/icon @@ -106,10 +106,10 @@ function PlasmicCmsTopBar__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_ieacQ3Z46z4gwo1FnaB5vY", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root )} @@ -117,12 +117,12 @@ function PlasmicCmsTopBar__RenderFunc(props: {
@@ -130,7 +130,7 @@ function PlasmicCmsTopBar__RenderFunc(props: { data-plasmic-name={"svg"} data-plasmic-override={overrides.svg} PlasmicIconType={triggers.hover_svg ? MarkFullColorIcon : Icon3Icon} - className={classNames(projectcss.all, sty.svg)} + className={classNames("all", sty.svg)} role={"img"} data-plasmic-trigger-props={[triggerSvgHoverProps]} /> @@ -143,11 +143,7 @@ function PlasmicCmsTopBar__RenderFunc(props: {
{"Some CMS"}
@@ -156,13 +152,13 @@ function PlasmicCmsTopBar__RenderFunc(props: {
) as React.ReactElement | null; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicStyleTokensProvider.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicStyleTokensProvider.tsx index 183e532106..b77cd3a70f 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicStyleTokensProvider.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/PlasmicStyleTokensProvider.tsx @@ -9,13 +9,12 @@ import { createUseStyleTokens } from "@plasmicapp/react-web"; import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectModule -import projectcss from "./plasmic_plasmic_kit_cms.module.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss - -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss +import "../PP__plasmickit_design_system.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss +import "./plasmic_plasmic_kit_cms.css"; // plasmic-import: ieacQ3Z46z4gwo1FnaB5vY/projectcss const data = { - base: `${projectcss.plasmic_tokens} ${plasmic_plasmic_kit_design_system_css.plasmic_tokens} ${plasmic_plasmic_kit_color_tokens_css.plasmic_tokens}`, + base: `${"plasmic_tokens_ieacQ3Z46z4gwo1FnaB5vY"} ${"plasmic_tokens_tXkSR39sgCDWSitZxC5xFV"} ${"plasmic_tokens_95xp9cYcv7HrNWpFWWhbcv"}`, varianted: [], }; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/plasmic_plasmic_kit_cms.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/plasmic_plasmic_kit_cms.css new file mode 100644 index 0000000000..a8cda094bc --- /dev/null +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_cms/plasmic_plasmic_kit_cms.css @@ -0,0 +1,634 @@ +@import "../PP__plasmickit_design_system.css"; /* plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss */ +@import "../plasmic_kit_icons/plasmic_q_4_icons.css"; /* plasmic-import: oT38tGyqov9SPWHpf3Y2Rf/projectcss */ +@import "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; /* plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss */ +@import "../q_4_text_mixins_product/plasmic_q_4_text_mixins_product.css"; /* plasmic-import: sDniSX4oPUZFyk2sXXb3nh/projectcss */ +@import "../react_aria/plasmic.css"; /* plasmic-import: gmeH6XgPaBtkt51HunAo4g/projectcss */ +@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C600&display=swap"); + +.plasmic_default_styles { + --mixin-qP3g6Hd5AdC_text-decoration-line: none; + --mixin-qP3g6Hd5AdC_font-family: "Inter", sans-serif; + --mixin-qP3g6Hd5AdC_color: var(--token-0IloF6TmFvF); + --mixin-qP3g6Hd5AdC_font-size: 12px; + --mixin-qP3g6Hd5AdC_white-space: pre-wrap; + --mixin-qP3g6Hd5AdC_line-height: 1.5; + --mixin-2zEfljePq9P_color: var(--token-VUsIDivgUss); + --mixin-2zEfljePq9P_white-space: pre-wrap; + --mixin-EEKi5Tu2fbK_white-space: pre-wrap; + --mixin-YQD_Uc8Md__font-family: "Inter", sans-serif; + --mixin-YQD_Uc8Md__font-size: 72px; + --mixin-YQD_Uc8Md__font-weight: 500; + --mixin-YQD_Uc8Md__white-space: pre-wrap; + --mixin-vEOXQLfcbC_font-family: "Inter", sans-serif; + --mixin-vEOXQLfcbC_font-size: 48px; + --mixin-vEOXQLfcbC_font-weight: 500; + --mixin-vEOXQLfcbC_white-space: pre-wrap; + --mixin-EXCWDILscU_font-family: "Inter", sans-serif; + --mixin-EXCWDILscU_font-size: 32px; + --mixin-EXCWDILscU_font-weight: 500; + --mixin-EXCWDILscU_white-space: pre-wrap; + --mixin-N7cG0Ri48QP_font-family: "Inter", sans-serif; + --mixin-N7cG0Ri48QP_font-size: 24px; + --mixin-N7cG0Ri48QP_font-weight: 500; + --mixin-N7cG0Ri48QP_white-space: pre-wrap; + --mixin-__gfw12lSVA_font-family: "Inter", sans-serif; + --mixin-__gfw12lSVA_font-size: 20px; + --mixin-__gfw12lSVA_font-weight: 500; + --mixin-__gfw12lSVA_white-space: pre-wrap; + --mixin-eoQXVRNaCyL_font-family: "Inter", sans-serif; + --mixin-eoQXVRNaCyL_font-size: 16px; + --mixin-eoQXVRNaCyL_font-weight: 500; + --mixin-eoQXVRNaCyL_white-space: pre-wrap; + --mixin-fkU_lzw4PF5_white-space: pre-wrap; + --mixin-v9e0yiTlX_o_white-space: pre-wrap; + --mixin-MMatKfNT024_white-space: pre-wrap; + --mixin-EuhGUWboGh2_position: relative; + --mixin-EuhGUWboGh2_white-space: pre-wrap; + --mixin-_MYD1z_SMDp_position: relative; + --mixin-_MYD1z_SMDp_white-space: pre-wrap; + --mixin-Yot8xJYsc_white-space: pre-wrap; + --mixin-985HZFQW4_white-space: pre-wrap; + --mixin-3i6_2FI7G_white-space: pre-wrap; + --mixin-3HZrBcpB6_white-space: pre-wrap; + --mixin-n1REaG4FH_white-space: pre-wrap; + --mixin-Hk5zzHaLS_white-space: pre-wrap; + --mixin-B4DR1AgPG_white-space: pre-wrap; + --mixin-bhSle9dw7_white-space: pre-wrap; + --mixin-5d8gGYi39_white-space: pre-wrap; + --mixin-sxjZ0YFFF_white-space: pre-wrap; + --mixin-GZm4AQ_Ek_white-space: pre-wrap; + --mixin-qjB654aOL_white-space: pre-wrap; +} + +:where(.all) { + display: block; + white-space: inherit; + grid-row: auto; + grid-column: auto; + position: relative; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + text-decoration-line: none; + margin: 0; + border-width: 0px; +} +:where(.__wab_expr_html_text *) { + white-space: inherit; + grid-row: auto; + grid-column: auto; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + margin: 0; + border-width: 0px; +} + +:where(.img) { + display: inline-block; +} +:where(.__wab_expr_html_text img) { + white-space: inherit; +} + +:where(.li) { + display: list-item; +} +:where(.__wab_expr_html_text li) { + white-space: inherit; +} + +:where(.span) { + display: inline; + position: static; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text span) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.input) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text input) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} + +:where(.textarea) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text textarea) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} + +:where(.button) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text button) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} + +:where(.code) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text code) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.pre) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text pre) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.p) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text p) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.i) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text i) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.em) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text em) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.strong) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text strong) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.h1) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h1) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h2) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h2) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h3) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h3) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h4) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h4) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h5) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h5) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h6) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h6) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.address) { + font-style: inherit; +} +:where(.__wab_expr_html_text address) { + white-space: inherit; + font-style: inherit; +} + +:where(.a) { + color: inherit; +} +:where(.__wab_expr_html_text a) { + white-space: inherit; + color: inherit; +} + +:where(.ol) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ol) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.ul) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ul) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.select) { + padding: 2px 6px; +} +:where(.__wab_expr_html_text select) { + white-space: inherit; + padding: 2px 6px; +} + +.plasmic_default__component_wrapper { + display: grid; +} +.plasmic_default__inline { + display: inline; +} +.plasmic_page_wrapper { + display: flex; + width: 100%; + min-height: 100vh; + align-items: stretch; + align-self: start; +} +.plasmic_page_wrapper > * { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) { + font-family: var(--mixin-qP3g6Hd5AdC_font-family); + font-size: var(--mixin-qP3g6Hd5AdC_font-size); + color: var(--mixin-qP3g6Hd5AdC_color); + line-height: var(--mixin-qP3g6Hd5AdC_line-height); + white-space: var(--mixin-qP3g6Hd5AdC_white-space); +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) a:where(.a__ieacQ), +a:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.a__ieacQ), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) a, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) a, +a:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) { + color: var(--mixin-2zEfljePq9P_color); +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) a:where(.a__ieacQ):hover, +a:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.a__ieacQ):hover, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) a:hover, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) a:hover, +a:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags):hover { +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) h1:where(.h1__ieacQ), +h1:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.h1__ieacQ), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) h1, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) h1, +h1:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) { + font-family: var(--mixin-YQD_Uc8Md__font-family); + font-size: var(--mixin-YQD_Uc8Md__font-size); + font-weight: var(--mixin-YQD_Uc8Md__font-weight); +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) h2:where(.h2__ieacQ), +h2:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.h2__ieacQ), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) h2, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) h2, +h2:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) { + font-family: var(--mixin-vEOXQLfcbC_font-family); + font-size: var(--mixin-vEOXQLfcbC_font-size); + font-weight: var(--mixin-vEOXQLfcbC_font-weight); +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) h3:where(.h3__ieacQ), +h3:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.h3__ieacQ), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) h3, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) h3, +h3:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) { + font-family: var(--mixin-EXCWDILscU_font-family); + font-size: var(--mixin-EXCWDILscU_font-size); + font-weight: var(--mixin-EXCWDILscU_font-weight); +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) h4:where(.h4__ieacQ), +h4:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.h4__ieacQ), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) h4, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) h4, +h4:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) { + font-family: var(--mixin-N7cG0Ri48QP_font-family); + font-size: var(--mixin-N7cG0Ri48QP_font-size); + font-weight: var(--mixin-N7cG0Ri48QP_font-weight); +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) h5:where(.h5__ieacQ), +h5:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.h5__ieacQ), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) h5, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) h5, +h5:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) { + font-family: var(--mixin-__gfw12lSVA_font-family); + font-size: var(--mixin-__gfw12lSVA_font-size); + font-weight: var(--mixin-__gfw12lSVA_font-weight); +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) h6:where(.h6__ieacQ), +h6:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.h6__ieacQ), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) h6, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) h6, +h6:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) { + font-family: var(--mixin-eoQXVRNaCyL_font-family); + font-size: var(--mixin-eoQXVRNaCyL_font-size); + font-weight: var(--mixin-eoQXVRNaCyL_font-weight); +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) blockquote:where(.blockquote__ieacQ), +blockquote:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.blockquote__ieacQ), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) blockquote, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) blockquote, +blockquote:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) { +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) code:where(.code__ieacQ), +code:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.code__ieacQ), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) code, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) code, +code:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) { +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) pre:where(.pre__ieacQ), +pre:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.pre__ieacQ), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) pre, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) pre, +pre:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) { +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) ol:where(.ol__ieacQ), +ol:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.ol__ieacQ), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) ol, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) ol, +ol:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) { + position: var(--mixin-EuhGUWboGh2_position); +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) ul:where(.ul__ieacQ), +ul:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.ul__ieacQ), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) ul, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) ul, +ul:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) { + position: var(--mixin-_MYD1z_SMDp_position); +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) a:where(.a__ieacQ):not(:hover), +a:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.a__ieacQ):not(:hover), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) a:not(:hover), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) a:not(:hover), +a:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags):not(:hover) { +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) a:where(.a__ieacQ):active, +a:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.a__ieacQ):active, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) a:active, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) a:active, +a:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags):active { +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) a:where(.a__ieacQ):not(:active), +a:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.a__ieacQ):not(:active), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) a:not(:active), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) a:not(:active), +a:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags):not(:active) { +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) a:where(.a__ieacQ):focus, +a:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.a__ieacQ):focus, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) a:focus, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) a:focus, +a:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags):focus { +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) a:where(.a__ieacQ):not(:link), +a:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.a__ieacQ):not(:link), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) a:not(:link), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) a:not(:link), +a:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags):not(:link) { +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) + blockquote:where(.blockquote__ieacQ):not(:link), +blockquote:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.blockquote__ieacQ):not( + :link + ), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) + blockquote:not(:link), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) blockquote:not(:link), +blockquote:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags):not(:link) { +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) + blockquote:where(.blockquote__ieacQ):hover, +blockquote:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.blockquote__ieacQ):hover, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) + blockquote:hover, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) blockquote:hover, +blockquote:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags):hover { +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) code:where(.code__ieacQ):hover, +code:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.code__ieacQ):hover, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) code:hover, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) code:hover, +code:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags):hover { +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) li:where(.li__ieacQ), +li:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.li__ieacQ), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) li, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) li, +li:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) { +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) p:where(.p__ieacQ), +p:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.p__ieacQ), +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) p, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) p, +p:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) { +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) ul:where(.ul__ieacQ):hover, +ul:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.ul__ieacQ):hover, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) ul:hover, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) ul:hover, +ul:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags):hover { +} + +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY) li:where(.li__ieacQ):hover, +li:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY.li__ieacQ):hover, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY .__wab_expr_html_text) li:hover, +:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags) li:hover, +li:where(.root_reset_ieacQ3Z46z4gwo1FnaB5vY_tags):hover { +} diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicCodeQuickstartDisplay.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicCodeQuickstartDisplay.tsx index 7607d6cb07..c701ac082b 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicCodeQuickstartDisplay.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicCodeQuickstartDisplay.tsx @@ -14,21 +14,20 @@ import * as React from "react"; import { - Flex as Flex__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, + Flex as Flex__, + StrictProps, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; import FrameworkTabs from "../../components/studio/code-quickstart/FrameworkTabs"; // plasmic-import: tf_fQvs5kI8/component +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: pTmuho7nuNtDcvZAf2kJgx/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import projectcss from "./plasmic_plasmic_kit_code_display_and_onboarding.module.css"; // plasmic-import: pTmuho7nuNtDcvZAf2kJgx/projectcss +import "./plasmic_plasmic_kit_code_display_and_onboarding.css"; // plasmic-import: pTmuho7nuNtDcvZAf2kJgx/projectcss import sty from "./PlasmicCodeQuickstartDisplay.module.css"; // plasmic-import: jLDeDF206V/css createPlasmicElementProxy; @@ -84,6 +83,8 @@ function PlasmicCodeQuickstartDisplay__RenderFunc(props: { const refsRef = React.useRef({}); const $refs = refsRef.current; + const styleTokensClassNames = _useStyleTokens(); + return (
) as React.ReactElement | null; @@ -148,7 +147,8 @@ type NodeComponentProps = variants?: PlasmicCodeQuickstartDisplay__VariantsArgs; args?: PlasmicCodeQuickstartDisplay__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicFrameworkTab.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicFrameworkTab.module.css index 76be857fea..e49edef0fa 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicFrameworkTab.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicFrameworkTab.module.css @@ -1,37 +1,27 @@ .root { display: flex; flex-direction: column; + align-items: center; + justify-content: space-evenly; width: 64px; height: 64px; + align-content: unset; position: relative; opacity: 0.75; transition-property: all; transition-duration: 0.2s; transition-timing-function: ease-out; color: var(--token-0IloF6TmFvF); + row-gap: 8px; -webkit-transition-property: all; -webkit-transition-timing-function: ease-out; -webkit-transition-duration: 0.2s; padding: 4px; } -.root > :global(.__wab_flex-container) { - flex-direction: column; - align-items: center; - justify-content: space-evenly; - align-content: unset; - margin-top: calc(0px - 8px); - height: calc(100% + 8px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-top: 8px; -} .rootactive { opacity: 1; } -.root:hover { +.root:hover:hover { opacity: 1; } .fixIconHeight { diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicFrameworkTab.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicFrameworkTab.tsx index afa88dd02a..7e7a467b9b 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicFrameworkTab.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicFrameworkTab.tsx @@ -14,25 +14,24 @@ import * as React from "react"; import { - Flex as Flex__, - PlasmicLink as PlasmicLink__, - SingleBooleanChoiceArg, - Stack as Stack__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, + Flex as Flex__, hasVariant, + PlasmicLink as PlasmicLink__, renderPlasmicSlot, + SingleBooleanChoiceArg, + StrictProps, useDollarState, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: pTmuho7nuNtDcvZAf2kJgx/styleTokensProvider + import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import projectcss from "./plasmic_plasmic_kit_code_display_and_onboarding.module.css"; // plasmic-import: pTmuho7nuNtDcvZAf2kJgx/projectcss +import "./plasmic_plasmic_kit_code_display_and_onboarding.css"; // plasmic-import: pTmuho7nuNtDcvZAf2kJgx/projectcss import sty from "./PlasmicFrameworkTab.module.css"; // plasmic-import: aSLlLoswhi/css createPlasmicElementProxy; @@ -52,7 +51,7 @@ export type PlasmicFrameworkTab__ArgsType = { name?: React.ReactNode; logo?: React.ReactNode; destination?: string; - openInNewTab?: Target; + openInNewTab?: string; }; type ArgPropType = keyof PlasmicFrameworkTab__ArgsType; export const PlasmicFrameworkTab__ArgProps = new Array( @@ -71,7 +70,7 @@ export interface DefaultFrameworkTabProps { name?: React.ReactNode; logo?: React.ReactNode; destination?: string; - openInNewTab?: Target; + openInNewTab?: string; active?: SingleBooleanChoiceArg<"active">; className?: string; } @@ -112,35 +111,36 @@ function PlasmicFrameworkTab__RenderFunc(props: { path: "active", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.active, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.active, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); + const styleTokensClassNames = _useStyleTokens(); + return ( - @@ -167,7 +167,7 @@ function PlasmicFrameworkTab__RenderFunc(props: { [sty.slotTargetNameactive]: hasVariant($state, "active", "active"), }), })} - + ) as React.ReactElement | null; } @@ -194,7 +194,8 @@ type NodeComponentProps = variants?: PlasmicFrameworkTab__VariantsArgs; args?: PlasmicFrameworkTab__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicFrameworkTabs.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicFrameworkTabs.module.css index 468254839e..0d680ab9b6 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicFrameworkTabs.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicFrameworkTabs.module.css @@ -1,30 +1,17 @@ .root { display: flex; - flex-direction: row; - overflow: auto; - flex-shrink: 0; - position: relative; - width: 100%; - min-width: 0; -} -.root > :global(.__wab_flex-container) { flex-direction: row; align-items: unset; justify-content: center; align-content: center; + overflow: auto; + flex-shrink: 0; + position: relative; flex-wrap: wrap; + width: 100%; + column-gap: 2px; + row-gap: 24px; min-width: 0; - margin-left: calc(0px - 2px); - width: calc(100% + 2px); - margin-top: calc(0px - 24px); - height: calc(100% + 24px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-left: 2px; - margin-top: 24px; } .react:global(.__wab_instance) { position: relative; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicFrameworkTabs.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicFrameworkTabs.tsx index 07e8ee5bab..aa6ee7751c 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicFrameworkTabs.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicFrameworkTabs.tsx @@ -14,22 +14,20 @@ import * as React from "react"; import { - Flex as Flex__, - Stack as Stack__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, + Flex as Flex__, + StrictProps, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; import FrameworkTab from "../../components/studio/code-quickstart/FrameworkTab"; // plasmic-import: aSLlLoswhi/component +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: pTmuho7nuNtDcvZAf2kJgx/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import projectcss from "./plasmic_plasmic_kit_code_display_and_onboarding.module.css"; // plasmic-import: pTmuho7nuNtDcvZAf2kJgx/projectcss +import "./plasmic_plasmic_kit_code_display_and_onboarding.css"; // plasmic-import: pTmuho7nuNtDcvZAf2kJgx/projectcss import sty from "./PlasmicFrameworkTabs.module.css"; // plasmic-import: tf_fQvs5kI8/css import GraphqlIcon from "./icons/PlasmicIcon__Graphql"; // plasmic-import: tVE40jlrgY/icon @@ -51,7 +49,7 @@ type VariantPropType = keyof PlasmicFrameworkTabs__VariantsArgs; export const PlasmicFrameworkTabs__VariantProps = new Array(); export type PlasmicFrameworkTabs__ArgsType = { - openInNewTab?: Target; + openInNewTab?: string; reactHref?: string; nextjsHref?: string; gatsbyHref?: string; @@ -93,7 +91,7 @@ export type PlasmicFrameworkTabs__OverridesType = { }; export interface DefaultFrameworkTabsProps { - openInNewTab?: Target; + openInNewTab?: string; reactHref?: string; nextjsHref?: string; gatsbyHref?: string; @@ -137,22 +135,20 @@ function PlasmicFrameworkTabs__RenderFunc(props: { const refsRef = React.useRef({}); const $refs = refsRef.current; + const styleTokensClassNames = _useStyleTokens(); + return ( - @@ -163,7 +159,7 @@ function PlasmicFrameworkTabs__RenderFunc(props: { destination={args.reactHref} logo={ } @@ -178,7 +174,7 @@ function PlasmicFrameworkTabs__RenderFunc(props: { destination={args.nextjsHref} logo={ } @@ -194,11 +190,7 @@ function PlasmicFrameworkTabs__RenderFunc(props: { logo={ {""} } @@ -214,11 +206,7 @@ function PlasmicFrameworkTabs__RenderFunc(props: { logo={ {""} } @@ -234,11 +222,7 @@ function PlasmicFrameworkTabs__RenderFunc(props: { logo={ {""} } @@ -254,11 +238,7 @@ function PlasmicFrameworkTabs__RenderFunc(props: { logo={ {""} } @@ -274,11 +254,7 @@ function PlasmicFrameworkTabs__RenderFunc(props: { logo={ {""} } @@ -294,11 +270,7 @@ function PlasmicFrameworkTabs__RenderFunc(props: { logo={ {""} } @@ -312,10 +284,7 @@ function PlasmicFrameworkTabs__RenderFunc(props: { className={classNames("__wab_instance", sty.rest)} destination={args.restHref} logo={ - + } name={"REST API"} openInNewTab={args.openInNewTab} @@ -328,14 +297,14 @@ function PlasmicFrameworkTabs__RenderFunc(props: { destination={args.graphqlHref} logo={ } name={"GraphQL"} openInNewTab={args.openInNewTab} /> - +
) as React.ReactElement | null; } @@ -392,7 +361,8 @@ type NodeComponentProps = variants?: PlasmicFrameworkTabs__VariantsArgs; args?: PlasmicFrameworkTabs__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicStyleTokensProvider.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicStyleTokensProvider.tsx new file mode 100644 index 0000000000..f558360831 --- /dev/null +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/PlasmicStyleTokensProvider.tsx @@ -0,0 +1,21 @@ +/* eslint-disable */ +/* tslint:disable */ +// @ts-nocheck + +// This code is auto-generated by Plasmic; please do not edit! +// Plasmic Project: pTmuho7nuNtDcvZAf2kJgx + +import { createUseStyleTokens } from "@plasmicapp/react-web"; + +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: pTmuho7nuNtDcvZAf2kJgx/projectModule + +import "../PP__plasmickit_design_system.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss +import "./plasmic_plasmic_kit_code_display_and_onboarding.css"; // plasmic-import: pTmuho7nuNtDcvZAf2kJgx/projectcss + +const data = { + base: `${"plasmic_tokens_pTmuho7nuNtDcvZAf2kJgx"} ${"plasmic_tokens_95xp9cYcv7HrNWpFWWhbcv"} ${"plasmic_tokens_tXkSR39sgCDWSitZxC5xFV"}`, + varianted: [], +}; + +export const _useStyleTokens = createUseStyleTokens(data, _useGlobalVariants); diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/plasmic.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/plasmic.tsx new file mode 100644 index 0000000000..dd2e185e66 --- /dev/null +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/plasmic.tsx @@ -0,0 +1,10 @@ +/* eslint-disable */ +/* tslint:disable */ +// @ts-nocheck + +// This code is auto-generated by Plasmic; please do not edit! +// Plasmic Project: pTmuho7nuNtDcvZAf2kJgx + +import { createUseGlobalVariants } from "@plasmicapp/react-web"; + +export const _useGlobalVariants = createUseGlobalVariants({}); diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/plasmic_plasmic_kit_code_display_and_onboarding.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/plasmic_plasmic_kit_code_display_and_onboarding.css similarity index 77% rename from platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/plasmic_plasmic_kit_code_display_and_onboarding.module.css rename to platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/plasmic_plasmic_kit_code_display_and_onboarding.css index 9417c48748..e72a84ae87 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/plasmic_plasmic_kit_code_display_and_onboarding.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_code_display_and_onboarding/plasmic_plasmic_kit_code_display_and_onboarding.css @@ -1,6 +1,10 @@ +@import "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; /* plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss */ +@import "../PP__plasmickit_design_system.css"; /* plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss */ +@import "../plasmic_kit_icons/plasmic_q_4_icons.css"; /* plasmic-import: oT38tGyqov9SPWHpf3Y2Rf/projectcss */ +@import "../react_aria/plasmic.css"; /* plasmic-import: gmeH6XgPaBtkt51HunAo4g/projectcss */ @import url("https://fonts.googleapis.com/css2?family=Roboto%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C700%3B0%2C900&family=Inter%3Aital%2Cwght%400%2C400%3B0%2C600%3B0%2C700%3B0%2C900&family=Inconsolata%3Aital%2Cwght%400%2C400%3B0%2C600%3B0%2C700%3B0%2C900&display=swap"); -.plasmic_tokens { +.plasmic_tokens_pTmuho7nuNtDcvZAf2kJgx { --plsmc-standard-width: 800px; --plsmc-wide-width: 1280px; --plsmc-viewport-gap: 16px; @@ -146,6 +150,8 @@ background: none; background-size: 100% 100%; background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; box-shadow: none; box-sizing: border-box; text-decoration-line: none; @@ -159,6 +165,8 @@ background: none; background-size: 100% 100%; background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; box-shadow: none; box-sizing: border-box; margin: 0; @@ -321,6 +329,58 @@ text-transform: inherit; } +:where(.i) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text i) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.em) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text em) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.strong) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text strong) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} + :where(.h1) { font-size: inherit; font-weight: inherit; @@ -444,7 +504,7 @@ .__wab_expr_html_text { white-space: normal; } -:where(.root_reset) { +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx) { font-family: var(--mixin-dkP9eq2cgqqy_font-family); font-size: var(--mixin-dkP9eq2cgqqy_font-size); font-weight: var(--mixin-dkP9eq2cgqqy_font-weight); @@ -457,11 +517,11 @@ white-space: var(--mixin-dkP9eq2cgqqy_white-space); } -:where(.root_reset) h1:where(.h1), -h1:where(.root_reset.h1), -:where(.root_reset .__wab_expr_html_text) h1, -:where(.root_reset_tags) h1, -h1:where(.root_reset_tags) { +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx) h1:where(.h1__pTmuh), +h1:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx.h1__pTmuh), +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx .__wab_expr_html_text) h1, +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) h1, +h1:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) { font-family: var(--mixin-WWYYqYcc7vr_font-family); color: var(--mixin-WWYYqYcc7vr_color); font-size: var(--mixin-WWYYqYcc7vr_font-size); @@ -470,11 +530,11 @@ h1:where(.root_reset_tags) { line-height: var(--mixin-WWYYqYcc7vr_line-height); } -:where(.root_reset) h2:where(.h2), -h2:where(.root_reset.h2), -:where(.root_reset .__wab_expr_html_text) h2, -:where(.root_reset_tags) h2, -h2:where(.root_reset_tags) { +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx) h2:where(.h2__pTmuh), +h2:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx.h2__pTmuh), +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx .__wab_expr_html_text) h2, +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) h2, +h2:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) { font-family: var(--mixin-67QoYOeTJKV_font-family); color: var(--mixin-67QoYOeTJKV_color); font-size: var(--mixin-67QoYOeTJKV_font-size); @@ -483,11 +543,11 @@ h2:where(.root_reset_tags) { line-height: var(--mixin-67QoYOeTJKV_line-height); } -:where(.root_reset) h3:where(.h3), -h3:where(.root_reset.h3), -:where(.root_reset .__wab_expr_html_text) h3, -:where(.root_reset_tags) h3, -h3:where(.root_reset_tags) { +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx) h3:where(.h3__pTmuh), +h3:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx.h3__pTmuh), +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx .__wab_expr_html_text) h3, +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) h3, +h3:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) { font-family: var(--mixin-8k4rajUGcUS_font-family); color: var(--mixin-8k4rajUGcUS_color); font-size: var(--mixin-8k4rajUGcUS_font-size); @@ -496,11 +556,11 @@ h3:where(.root_reset_tags) { line-height: var(--mixin-8k4rajUGcUS_line-height); } -:where(.root_reset) h4:where(.h4), -h4:where(.root_reset.h4), -:where(.root_reset .__wab_expr_html_text) h4, -:where(.root_reset_tags) h4, -h4:where(.root_reset_tags) { +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx) h4:where(.h4__pTmuh), +h4:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx.h4__pTmuh), +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx .__wab_expr_html_text) h4, +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) h4, +h4:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) { font-family: var(--mixin-0YOvWQ0bHhC_font-family); color: var(--mixin-0YOvWQ0bHhC_color); font-size: var(--mixin-0YOvWQ0bHhC_font-size); @@ -509,11 +569,11 @@ h4:where(.root_reset_tags) { line-height: var(--mixin-0YOvWQ0bHhC_line-height); } -:where(.root_reset) h5:where(.h5), -h5:where(.root_reset.h5), -:where(.root_reset .__wab_expr_html_text) h5, -:where(.root_reset_tags) h5, -h5:where(.root_reset_tags) { +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx) h5:where(.h5__pTmuh), +h5:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx.h5__pTmuh), +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx .__wab_expr_html_text) h5, +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) h5, +h5:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) { font-family: var(--mixin-Al3D6jUt5WE_font-family); color: var(--mixin-Al3D6jUt5WE_color); font-size: var(--mixin-Al3D6jUt5WE_font-size); @@ -522,11 +582,11 @@ h5:where(.root_reset_tags) { line-height: var(--mixin-Al3D6jUt5WE_line-height); } -:where(.root_reset) h6:where(.h6), -h6:where(.root_reset.h6), -:where(.root_reset .__wab_expr_html_text) h6, -:where(.root_reset_tags) h6, -h6:where(.root_reset_tags) { +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx) h6:where(.h6__pTmuh), +h6:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx.h6__pTmuh), +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx .__wab_expr_html_text) h6, +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) h6, +h6:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) { font-family: var(--mixin-vZ7pyYmxh8X_font-family); color: var(--mixin-vZ7pyYmxh8X_color); font-size: var(--mixin-vZ7pyYmxh8X_font-size); @@ -534,11 +594,11 @@ h6:where(.root_reset_tags) { line-height: var(--mixin-vZ7pyYmxh8X_line-height); } -:where(.root_reset) blockquote:where(.blockquote), -blockquote:where(.root_reset.blockquote), -:where(.root_reset .__wab_expr_html_text) blockquote, -:where(.root_reset_tags) blockquote, -blockquote:where(.root_reset_tags) { +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx) blockquote:where(.blockquote__pTmuh), +blockquote:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx.blockquote__pTmuh), +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx .__wab_expr_html_text) blockquote, +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) blockquote, +blockquote:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) { color: var(--mixin-FPnpkVl16mi_color); padding-left: var(--mixin-FPnpkVl16mi_padding-left); border-left: var(--mixin-FPnpkVl16mi_border-left-width) @@ -546,11 +606,11 @@ blockquote:where(.root_reset_tags) { var(--mixin-FPnpkVl16mi_border-left-color); } -:where(.root_reset) code:where(.code), -code:where(.root_reset.code), -:where(.root_reset .__wab_expr_html_text) code, -:where(.root_reset_tags) code, -code:where(.root_reset_tags) { +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx) code:where(.code__pTmuh), +code:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx.code__pTmuh), +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx .__wab_expr_html_text) code, +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) code, +code:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) { background: #f8f8f8; font-family: var(--mixin-fPpu70unOqM_font-family); border-radius: var(--mixin-fPpu70unOqM_border-top-left-radius) @@ -575,11 +635,11 @@ code:where(.root_reset_tags) { var(--mixin-fPpu70unOqM_border-left-color); } -:where(.root_reset) pre:where(.pre), -pre:where(.root_reset.pre), -:where(.root_reset .__wab_expr_html_text) pre, -:where(.root_reset_tags) pre, -pre:where(.root_reset_tags) { +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx) pre:where(.pre__pTmuh), +pre:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx.pre__pTmuh), +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx .__wab_expr_html_text) pre, +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) pre, +pre:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) { background: #f8f8f8; font-family: var(--mixin-1ay4riYF0PO_font-family); border-radius: var(--mixin-1ay4riYF0PO_border-top-left-radius) @@ -604,11 +664,11 @@ pre:where(.root_reset_tags) { var(--mixin-1ay4riYF0PO_border-left-color); } -:where(.root_reset) ol:where(.ol), -ol:where(.root_reset.ol), -:where(.root_reset .__wab_expr_html_text) ol, -:where(.root_reset_tags) ol, -ol:where(.root_reset_tags) { +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx) ol:where(.ol__pTmuh), +ol:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx.ol__pTmuh), +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx .__wab_expr_html_text) ol, +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) ol, +ol:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) { display: var(--mixin-LkhzeoEoHAm_display); flex-direction: var(--mixin-LkhzeoEoHAm_flex-direction); align-items: var(--mixin-LkhzeoEoHAm_align-items); @@ -617,14 +677,14 @@ ol:where(.root_reset_tags) { padding-left: var(--mixin-LkhzeoEoHAm_padding-left); position: var(--mixin-LkhzeoEoHAm_position); list-style-type: var(--mixin-LkhzeoEoHAm_list-style-type); - flex-column-gap: var(--mixin-LkhzeoEoHAm_flex-column-gap); + column-gap: var(--mixin-LkhzeoEoHAm_column-gap); } -:where(.root_reset) ul:where(.ul), -ul:where(.root_reset.ul), -:where(.root_reset .__wab_expr_html_text) ul, -:where(.root_reset_tags) ul, -ul:where(.root_reset_tags) { +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx) ul:where(.ul__pTmuh), +ul:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx.ul__pTmuh), +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx .__wab_expr_html_text) ul, +:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) ul, +ul:where(.root_reset_pTmuho7nuNtDcvZAf2kJgx_tags) { display: var(--mixin-VsIkJTlSQvr_display); flex-direction: var(--mixin-VsIkJTlSQvr_flex-direction); align-items: var(--mixin-VsIkJTlSQvr_align-items); @@ -633,5 +693,5 @@ ul:where(.root_reset_tags) { padding-left: var(--mixin-VsIkJTlSQvr_padding-left); position: var(--mixin-VsIkJTlSQvr_position); list-style-type: var(--mixin-VsIkJTlSQvr_list-style-type); - flex-column-gap: var(--mixin-VsIkJTlSQvr_flex-column-gap); + column-gap: var(--mixin-VsIkJTlSQvr_column-gap); } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_color_tokens/PlasmicStyleTokensProvider.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_color_tokens/PlasmicStyleTokensProvider.tsx index 515afe86cd..60e1608c4f 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_color_tokens/PlasmicStyleTokensProvider.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_color_tokens/PlasmicStyleTokensProvider.tsx @@ -9,10 +9,10 @@ import { createUseStyleTokens } from "@plasmicapp/react-web"; import { _useGlobalVariants } from "./plasmic"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectModule -import projectcss from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss +import "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss const data = { - base: `${projectcss.plasmic_tokens}`, + base: `${"plasmic_tokens_95xp9cYcv7HrNWpFWWhbcv"}`, varianted: [], }; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicAddCommentMarker.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicAddCommentMarker.module.css index 2622ee8c1d..8108933f73 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicAddCommentMarker.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicAddCommentMarker.module.css @@ -27,7 +27,7 @@ height: 1em; flex-shrink: 0; } -.svg__qeYUf { +.svg__zCd0L { display: flex; position: relative; object-fit: cover; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicAddCommentMarker.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicAddCommentMarker.tsx index 2593624e3f..68ebd5486e 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicAddCommentMarker.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicAddCommentMarker.tsx @@ -30,7 +30,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_comments.module.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss +import "./plasmic_plasmic_kit_comments.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss import sty from "./PlasmicAddCommentMarker.module.css"; // plasmic-import: b0TlBn4m87ta/css import SpeechBubblePlusSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__SpeechBubblePlusSvg"; // plasmic-import: g2gTPsRaJ/icon @@ -99,15 +99,18 @@ function PlasmicAddCommentMarker__RenderFunc(props: { path: "isRecording", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isRecording, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.isRecording, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -125,7 +128,7 @@ function PlasmicAddCommentMarker__RenderFunc(props: {
@@ -169,7 +172,8 @@ type NodeComponentProps = variants?: PlasmicAddCommentMarker__VariantsArgs; args?: PlasmicAddCommentMarker__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentMarker.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentMarker.tsx index 4db9f5cf02..2773b3b494 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentMarker.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentMarker.tsx @@ -28,7 +28,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_comments.module.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss +import "./plasmic_plasmic_kit_comments.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss import sty from "./PlasmicCommentMarker.module.css"; // plasmic-import: hxUVoCIPsT_h/css import _69B43A437055B398Eff90A515Ed4F551Svg2AijDeIx4X from "./images/_69B43A437055B398Eff90A515Ed4F551Svg.svg"; // plasmic-import: 2aijDEIx4x/picture @@ -94,10 +94,10 @@ function PlasmicCommentMarker__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_BP7V3EkXPURJVwwMyWoHn", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root )} @@ -150,7 +150,8 @@ type NodeComponentProps = variants?: PlasmicCommentMarker__VariantsArgs; args?: PlasmicCommentMarker__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPost.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPost.module.css index 841b87e9cb..091bb080f8 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPost.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPost.module.css @@ -25,11 +25,8 @@ padding: var(--token-XnnXV8YSKg9w); border: 1px solid var(--token-JpKJ41ZaDWOC); } -.root:hover { - background: var(--token-9jh0BkCENS); -} -.rootthread:hover { - background: var(--token-G18pc1ITl); +.rootthread:hover:hover { + background: var(--token-8MEyDjsqznQc); cursor: pointer; } .freeBox__sfn9I { @@ -252,7 +249,7 @@ object-fit: cover; height: 1em; } -.svg__ejvDi { +.svg___9MNft { display: flex; position: relative; object-fit: cover; @@ -278,7 +275,7 @@ align-self: flex-start; display: flex; } -.svg__ijMa5 { +.svg__bfTdl { display: flex; position: relative; object-fit: cover; @@ -287,7 +284,7 @@ .texthoverBox { color: var(--token-RTPypKCJE4bm); } -.svg___0MgSt { +.svg___5YKYn { display: flex; position: relative; object-fit: cover; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPost.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPost.tsx index 0d951fe0d0..2641b91381 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPost.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPost.tsx @@ -36,7 +36,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_comments.module.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss +import "./plasmic_plasmic_kit_comments.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss import sty from "./PlasmicCommentPost.module.css"; // plasmic-import: l_AKXl2AAu/css import EmojiPlusSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__EmojiPlusSvg"; // plasmic-import: rtrSZZiat/icon @@ -135,40 +135,42 @@ function PlasmicCommentPost__RenderFunc(props: { path: "thread", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.thread, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.thread, }, { path: "isEditing", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isEditing, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.isEditing, }, { path: "isDeleted", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isDeleted, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.isDeleted, }, { path: "canUpdateHistory", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.canUpdateHistory, }, { path: "hoverBox", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.hoverBox, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.hoverBox, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -181,10 +183,10 @@ function PlasmicCommentPost__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_BP7V3EkXPURJVwwMyWoHn", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { @@ -195,7 +197,7 @@ function PlasmicCommentPost__RenderFunc(props: { )} >
-
+
@@ -265,9 +268,10 @@ function PlasmicCommentPost__RenderFunc(props: { data-plasmic-name={"timestamp"} data-plasmic-override={overrides.timestamp} className={classNames( - projectcss.all, - projectcss.span, - projectcss.__wab_text, + "all", + "span", + "span__BP7V3", + "__wab_text", sty.timestamp, { [sty.timestampisDeleted]: hasVariant( @@ -285,7 +289,7 @@ function PlasmicCommentPost__RenderFunc(props: {
{hasVariant($state, "thread", "thread") ? "Unnamed element in MyComponent" @@ -381,7 +376,7 @@ function PlasmicCommentPost__RenderFunc(props: {
) : null}
{hasVariant($state, "isDeleted", "isDeleted") ? "Deleted comment" @@ -435,7 +417,7 @@ function PlasmicCommentPost__RenderFunc(props: {
@@ -519,15 +501,10 @@ function PlasmicCommentPost__RenderFunc(props: {
{"3 replies"}
@@ -604,7 +581,8 @@ type NodeComponentProps = variants?: PlasmicCommentPost__VariantsArgs; args?: PlasmicCommentPost__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPostForm.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPostForm.module.css index 1eb0047f1a..515f90fe09 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPostForm.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPostForm.module.css @@ -3,12 +3,11 @@ flex-direction: column; align-items: stretch; justify-content: flex-start; - width: 300px; - height: auto; - max-width: 100%; position: relative; - background: #ffffff; row-gap: 8px; + background: var(--token-iR8SeEwQZ); + width: 100%; + min-width: 0; } .freeBox__njtN0 { display: flex; @@ -28,11 +27,11 @@ .bodyInputisPreviewing:global(.__wab_instance):global(.__wab_instance) { display: none; } -.svg__rUygq { +.svg__adz5S { position: relative; height: 1em; } -.svg__ixVwL { +.svg___8EqDs { position: relative; height: 1em; } @@ -83,7 +82,7 @@ color: #60646c; height: 1em; } -.svg__zOdnc { +.svg___68Oqp { display: flex; position: relative; object-fit: cover; @@ -101,7 +100,7 @@ color: #60646c; height: 1em; } -.svg__r593 { +.svg___8NChS { display: flex; position: relative; object-fit: cover; @@ -119,7 +118,7 @@ color: #60646c; height: 1em; } -.svg__idGpz { +.svg__ne0G1 { display: flex; position: relative; object-fit: cover; @@ -136,7 +135,7 @@ .previewButton:global(.__wab_instance):global(.__wab_instance) { max-width: 100%; } -.svg__svkqR { +.svg__fpTbH { position: relative; height: 1em; } @@ -144,7 +143,7 @@ white-space: pre; padding-right: 0px; } -.svg__sDn7J { +.svg___4YBiF { position: relative; height: 1em; } @@ -155,25 +154,25 @@ .cancelButtonisEditing:global(.__wab_instance):global(.__wab_instance) { display: flex; } -.svg___8DFnt { +.svg__mxfT { position: relative; height: 1em; } .text___9U10X { white-space: pre; } -.svg__zTjOb { +.svg__mge6S { position: relative; height: 1em; } -.svg__ockdp { +.svg__cg1V { position: relative; height: 1em; } .text__zljgi { white-space: pre; } -.svg__i9Yd7 { +.svg__thvbE { position: relative; height: 1em; } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPostForm.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPostForm.tsx index bd29873697..15430b4752 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPostForm.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPostForm.tsx @@ -34,7 +34,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_comments.module.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss +import "./plasmic_plasmic_kit_comments.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss import sty from "./PlasmicCommentPostForm.module.css"; // plasmic-import: qi3Y1X2qZ7/css import IconIcon from "./icons/PlasmicIcon__Icon"; // plasmic-import: _-_PqTBs1dWd/icon @@ -115,28 +115,31 @@ function PlasmicCommentPostForm__RenderFunc(props: { path: "isEditing", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isEditing, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.isEditing, }, { path: "bodyInput.value", type: "private", variableType: "text", - initFunc: ({ $props, $state, $queries, $ctx }) => + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props["defaultValue"], }, { path: "isPreviewing", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isPreviewing, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.isPreviewing, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -149,17 +152,17 @@ function PlasmicCommentPostForm__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_BP7V3EkXPURJVwwMyWoHn", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { [sty.rootisEditing]: hasVariant($state, "isEditing", "isEditing") } )} >
{"body"}
@@ -283,7 +281,7 @@ function PlasmicCommentPostForm__RenderFunc(props: { withBackgroundHover={true} > @@ -301,13 +299,13 @@ function PlasmicCommentPostForm__RenderFunc(props: { withBackgroundHover={true} >
{hasVariant($state, "isPreviewing", "isPreviewing") ? "Edit" @@ -367,11 +360,7 @@ function PlasmicCommentPostForm__RenderFunc(props: { color={"muted"} label={
{"Cancel"}
@@ -391,18 +380,13 @@ function PlasmicCommentPostForm__RenderFunc(props: { })} label={
{hasVariant($state, "isEditing", "isEditing") ? "Save" : "Send"}
@@ -461,7 +445,8 @@ type NodeComponentProps = variants?: PlasmicCommentPostForm__VariantsArgs; args?: PlasmicCommentPostForm__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPostFormDialog.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPostFormDialog.module.css index f4ade25b5f..2c90bd3e81 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPostFormDialog.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPostFormDialog.module.css @@ -1,8 +1,5 @@ .root:global(.__wab_instance):global(.__wab_instance) { - max-width: 100%; -} -.commentsDialogHead:global(.__wab_instance) { - max-width: 100%; + min-width: 300px; } .freeBox { display: flex; @@ -10,13 +7,8 @@ position: relative; align-items: stretch; justify-content: flex-start; - padding: var(--token-8b4HJYZr1yuK); + padding: var(--token-O2OprmOFWLju) var(--token-8b4HJYZr1yuK); } .commentPostForm:global(.__wab_instance) { - max-width: 100%; - top: 0px; - z-index: 1; - position: sticky; - left: 0px; - flex-shrink: 0; + position: relative; } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPostFormDialog.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPostFormDialog.tsx index 5b828c7d3a..9cb732472d 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPostFormDialog.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentPostFormDialog.tsx @@ -29,7 +29,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_comments.module.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss +import "./plasmic_plasmic_kit_comments.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss import sty from "./PlasmicCommentPostFormDialog.module.css"; // plasmic-import: bGnXEIS7pS-Y/css createPlasmicElementProxy; @@ -94,12 +94,11 @@ function PlasmicCommentPostFormDialog__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames("__wab_instance", sty.root)} - content={null} - footer={ + content={
} - heading={ + footer={null} + header={ } - showFooter={false} + show={["header"]} /> ) as React.ReactElement | null; } @@ -147,7 +147,8 @@ type NodeComponentProps = variants?: PlasmicCommentPostFormDialog__VariantsArgs; args?: PlasmicCommentPostFormDialog__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsDialogHead.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsDialogHead.module.css index c04f7a6f89..17627984fc 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsDialogHead.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsDialogHead.module.css @@ -1,37 +1,20 @@ -.root { - display: flex; - flex-direction: column; - position: relative; - align-items: center; - justify-content: flex-start; - width: 100%; - min-width: 0; +.root:global(.__wab_instance) { + max-width: 100%; } -.head { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; +.name { + overflow: hidden; +} +.type { + overflow: hidden; width: 100%; - padding-left: var(--token-8b4HJYZr1yuK); - padding-right: var(--token-8b4HJYZr1yuK); min-width: 0; - margin: 0px 0px var(--token-O2OprmOFWLju); } -.commentsHeader:global(.__wab_instance) { - position: relative; -} -.freeBox__zvXog { +.freeBox { display: flex; flex-direction: row; position: relative; - align-items: center; - justify-content: center; - align-self: auto; -} -.freeBoxcanUpdateHistory__zvXoGrIxi6 { - column-gap: var(--token-uzWT6AFCY); - row-gap: 0px; + align-items: stretch; + justify-content: flex-end; } .threadHistoryStatus:global(.__wab_instance) { flex-shrink: 0; @@ -41,30 +24,23 @@ flex-shrink: 0; display: flex; } -.freeBox__smvQk { - display: flex; - flex-direction: column; - position: relative; - align-items: center; - justify-content: center; - width: var(--token-CVkj_k5wv-Vl); - height: var(--token-CVkj_k5wv-Vl); - flex-shrink: 0; +.close:global(.__wab_instance) { + animation: none; + margin-right: -8px; } .svg { + animation: none; + object-fit: cover; + color: var(--token-RTPypKCJE4bm); display: flex; + flex-direction: row; + width: 16px; + height: 16px; position: relative; - object-fit: cover; - height: 1em; } -.svg__krMiI { +.svg__umgbr { display: flex; position: relative; object-fit: cover; height: 1em; } -.listSectionSeparator:global(.__wab_instance) { - max-width: 100%; - position: relative; - flex-shrink: 0; -} diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsDialogHead.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsDialogHead.tsx index cb7fa20356..1864b12e41 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsDialogHead.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsDialogHead.tsx @@ -19,22 +19,20 @@ import { deriveRenderOpts, Flex as Flex__, hasVariant, - PlasmicIcon as PlasmicIcon__, SingleBooleanChoiceArg, StrictProps, useDollarState, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; -import { CommentsHeader } from "../../components/comments/CommentsHeader"; // plasmic-import: PTsdlYdahZ76/component import { ThreadHistoryStatus } from "../../components/comments/ThreadHistoryStatus"; // plasmic-import: E0P_lFzVr70L/component -import ListSectionSeparator from "../../components/ListSectionSeparator"; // plasmic-import: uG5_fPM0sK/component +import DialogHeader from "../../components/widgets/DialogHeader"; // plasmic-import: 5TapYEMkYCfR/component import IconButton from "../../components/widgets/IconButton"; // plasmic-import: LPry-TF4j22a/component import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_comments.module.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss +import "./plasmic_plasmic_kit_comments.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss import sty from "./PlasmicCommentsDialogHead.module.css"; // plasmic-import: tccr1SFVw_AY/css import CloseIcon from "../plasmic_kit/PlasmicIcon__Close"; // plasmic-import: hy7vKrgdAZwW4/icon @@ -43,30 +41,33 @@ createPlasmicElementProxy; export type PlasmicCommentsDialogHead__VariantMembers = { canUpdateHistory: "canUpdateHistory"; + grabbable: "grabbable"; }; export type PlasmicCommentsDialogHead__VariantsArgs = { canUpdateHistory?: SingleBooleanChoiceArg<"canUpdateHistory">; + grabbable?: SingleBooleanChoiceArg<"grabbable">; }; type VariantPropType = keyof PlasmicCommentsDialogHead__VariantsArgs; export const PlasmicCommentsDialogHead__VariantProps = - new Array("canUpdateHistory"); + new Array("canUpdateHistory", "grabbable"); export type PlasmicCommentsDialogHead__ArgsType = {}; type ArgPropType = keyof PlasmicCommentsDialogHead__ArgsType; export const PlasmicCommentsDialogHead__ArgProps = new Array(); export type PlasmicCommentsDialogHead__OverridesType = { - root?: Flex__<"div">; - head?: Flex__<"div">; - commentsHeader?: Flex__; + root?: Flex__; + name?: Flex__<"div">; + type?: Flex__<"div">; + freeBox?: Flex__<"div">; threadHistoryStatus?: Flex__; close?: Flex__; svg?: Flex__<"svg">; - listSectionSeparator?: Flex__; }; export interface DefaultCommentsDialogHeadProps { canUpdateHistory?: SingleBooleanChoiceArg<"canUpdateHistory">; + grabbable?: SingleBooleanChoiceArg<"grabbable">; className?: string; } @@ -106,61 +107,40 @@ function PlasmicCommentsDialogHead__RenderFunc(props: { path: "canUpdateHistory", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.canUpdateHistory, }, + { + path: "grabbable", + type: "private", + variableType: "variant", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.grabbable, + }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); const styleTokensClassNames = _useStyleTokens(); return ( -
-
- - + actions={
-
- - - -
+ + +
+ } + className={classNames("__wab_instance", sty.root, { + [sty.rootcanUpdateHistory]: hasVariant( + $state, + "canUpdateHistory", + "canUpdateHistory" + ), + [sty.rootgrabbable]: hasVariant($state, "grabbable", "grabbable"), + })} + grabbable={ + hasVariant($state, "grabbable", "grabbable") ? true : undefined + } + heading={ +
+ {"Heading"} +
+ } + subheading={ +
+ {"Subheading that is really really really really really really long"}
-
- -
+ } + /> ) as React.ReactElement | null; } const PlasmicDescendants = { root: [ "root", - "head", - "commentsHeader", + "name", + "type", + "freeBox", "threadHistoryStatus", "close", "svg", - "listSectionSeparator", ], - head: ["head", "commentsHeader", "threadHistoryStatus", "close", "svg"], - commentsHeader: ["commentsHeader"], + name: ["name"], + type: ["type"], + freeBox: ["freeBox", "threadHistoryStatus", "close", "svg"], threadHistoryStatus: ["threadHistoryStatus"], close: ["close", "svg"], svg: ["svg"], - listSectionSeparator: ["listSectionSeparator"], } as const; type NodeNameType = keyof typeof PlasmicDescendants; type DescendantsType = (typeof PlasmicDescendants)[T][number]; type NodeDefaultElementType = { - root: "div"; - head: "div"; - commentsHeader: typeof CommentsHeader; + root: typeof DialogHeader; + name: "div"; + type: "div"; + freeBox: "div"; threadHistoryStatus: typeof ThreadHistoryStatus; close: typeof IconButton; svg: "svg"; - listSectionSeparator: typeof ListSectionSeparator; }; type ReservedPropsType = "variants" | "args" | "overrides"; @@ -261,7 +255,8 @@ type NodeComponentProps = variants?: PlasmicCommentsDialogHead__VariantsArgs; args?: PlasmicCommentsDialogHead__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props @@ -310,12 +305,12 @@ export const PlasmicCommentsDialogHead = Object.assign( makeNodeComponent("root"), { // Helper components rendering sub-elements - head: makeNodeComponent("head"), - commentsHeader: makeNodeComponent("commentsHeader"), + _name: makeNodeComponent("name"), + type: makeNodeComponent("type"), + freeBox: makeNodeComponent("freeBox"), threadHistoryStatus: makeNodeComponent("threadHistoryStatus"), close: makeNodeComponent("close"), svg: makeNodeComponent("svg"), - listSectionSeparator: makeNodeComponent("listSectionSeparator"), // Metadata about props expected for PlasmicCommentsDialogHead internalVariantProps: PlasmicCommentsDialogHead__VariantProps, diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsHeader.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsHeader.tsx index d33dc3d7b5..a696542c3f 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsHeader.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsHeader.tsx @@ -30,7 +30,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_comments.module.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss +import "./plasmic_plasmic_kit_comments.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss import sty from "./PlasmicCommentsHeader.module.css"; // plasmic-import: PTsdlYdahZ76/css createPlasmicElementProxy; @@ -108,21 +108,23 @@ function PlasmicCommentsHeader__RenderFunc(props: { path: "showCount", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.showCount, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.showCount, }, { path: "nameOnly", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.nameOnly, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.nameOnly, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -135,24 +137,24 @@ function PlasmicCommentsHeader__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_BP7V3EkXPURJVwwMyWoHn", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { [sty.rootshowCount]: hasVariant($state, "showCount", "showCount") } )} > -
-
+
+
{renderPlasmicSlot({ defaultContents: "Name", value: args.name, className: classNames(sty.slotTargetName), })}
-
+
{(hasVariant($state, "nameOnly", "nameOnly") ? false : true) ? renderPlasmicSlot({ defaultContents: "Type", @@ -169,7 +171,7 @@ function PlasmicCommentsHeader__RenderFunc(props: {
{"4"}
@@ -216,7 +214,8 @@ type NodeComponentProps = variants?: PlasmicCommentsHeader__VariantsArgs; args?: PlasmicCommentsHeader__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsTab.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsTab.module.css index d8224c5247..de64789cc9 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsTab.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsTab.module.css @@ -37,7 +37,7 @@ .filterButton:global(.__wab_instance) { max-width: 100%; } -.svg__dbajD { +.svg__a1Iuy { display: flex; position: relative; object-fit: cover; @@ -55,7 +55,7 @@ position: relative; align-self: flex-end; } -.svg__srMe { +.svg__nlwPd { display: flex; position: relative; object-fit: cover; @@ -67,7 +67,7 @@ width: 16px; height: 16px; } -.svg__x53AV { +.svg__wiAUl { display: flex; position: relative; object-fit: cover; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsTab.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsTab.tsx index ae699d48eb..5124300668 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsTab.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicCommentsTab.tsx @@ -30,7 +30,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_comments.module.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss +import "./plasmic_plasmic_kit_comments.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss import sty from "./PlasmicCommentsTab.module.css"; // plasmic-import: bV6LLO0B3Y/css import BellSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__BellSvg"; // plasmic-import: eCJ0k221t/icon @@ -101,10 +101,10 @@ function PlasmicCommentsTab__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_BP7V3EkXPURJVwwMyWoHn", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root )} @@ -112,16 +112,16 @@ function PlasmicCommentsTab__RenderFunc(props: {
-
+
@@ -152,7 +152,7 @@ function PlasmicCommentsTab__RenderFunc(props: { )} /> -
+
-
+
= variants?: PlasmicCommentsTab__VariantsArgs; args?: PlasmicCommentsTab__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicMarkdownHintRow.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicMarkdownHintRow.tsx index 044683eeb5..e8c34dea0c 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicMarkdownHintRow.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicMarkdownHintRow.tsx @@ -27,7 +27,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_comments.module.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss +import "./plasmic_plasmic_kit_comments.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss import sty from "./PlasmicMarkdownHintRow.module.css"; // plasmic-import: T7mVQBFEWA-V/css createPlasmicElementProxy; @@ -100,22 +100,22 @@ function PlasmicMarkdownHintRow__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_BP7V3EkXPURJVwwMyWoHn", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root )} > -
+
{renderPlasmicSlot({ defaultContents: "Heading", value: args.name, className: classNames(sty.slotTargetName), })}
-
+
{((_par) => (!_par ? [] : Array.isArray(_par) ? _par : [_par]))( (() => { try { @@ -137,11 +137,7 @@ function PlasmicMarkdownHintRow__RenderFunc(props: {
@@ -190,7 +186,8 @@ type NodeComponentProps = variants?: PlasmicMarkdownHintRow__VariantsArgs; args?: PlasmicMarkdownHintRow__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicMarkdownHintsPopoverContent.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicMarkdownHintsPopoverContent.tsx index b960c906d1..774b593a1a 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicMarkdownHintsPopoverContent.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicMarkdownHintsPopoverContent.tsx @@ -28,7 +28,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_comments.module.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss +import "./plasmic_plasmic_kit_comments.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss import sty from "./PlasmicMarkdownHintsPopoverContent.module.css"; // plasmic-import: pTr2lSrGWq8O/css import ArrowUpRightSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__ArrowUpRightSvg"; // plasmic-import: N_BtK6grX/icon @@ -97,10 +97,10 @@ function PlasmicMarkdownHintsPopoverContent__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_BP7V3EkXPURJVwwMyWoHn", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root )} @@ -108,38 +108,26 @@ function PlasmicMarkdownHintsPopoverContent__RenderFunc(props: {
-
+
{"Markdown hints"}
-
+
{"More"}
@@ -147,7 +135,7 @@ function PlasmicMarkdownHintsPopoverContent__RenderFunc(props: {
= variants?: PlasmicMarkdownHintsPopoverContent__VariantsArgs; args?: PlasmicMarkdownHintsPopoverContent__ArgsType; overrides?: NodeOverridesType; - } & Omit< // Specify variants directly as props - PlasmicMarkdownHintsPopoverContent__VariantsArgs, - ReservedPropsType - > & + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicReactionButton.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicReactionButton.module.css index 6220317952..7d2c8a31c7 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicReactionButton.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicReactionButton.module.css @@ -14,10 +14,10 @@ border: 0.5px solid var(--token-Ik3bdE1e1Uy); } .rootincludesSelf { - background: var(--token-G18pc1ITl); + background: var(--token-8MEyDjsqznQc); } -.root:hover { - background: var(--token-G18pc1ITl); +.root:hover:hover { + background: var(--token-8MEyDjsqznQc); } .emoji { width: 20px; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicReactionButton.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicReactionButton.tsx index db849f5da8..a436fdf758 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicReactionButton.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicReactionButton.tsx @@ -29,7 +29,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_comments.module.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss +import "./plasmic_plasmic_kit_comments.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss import sty from "./PlasmicReactionButton.module.css"; // plasmic-import: FOzDmFDbWm/css createPlasmicElementProxy; @@ -96,15 +96,18 @@ function PlasmicReactionButton__RenderFunc(props: { path: "includesSelf", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.includesSelf, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.includesSelf, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -117,11 +120,12 @@ function PlasmicReactionButton__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.button, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "button", + "button__BP7V3", + "root_reset_BP7V3EkXPURJVwwMyWoHn", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { @@ -136,14 +140,14 @@ function PlasmicReactionButton__RenderFunc(props: {
{"\ud83d\udc4d"}
{"1"}
@@ -176,7 +180,8 @@ type NodeComponentProps = variants?: PlasmicReactionButton__VariantsArgs; args?: PlasmicReactionButton__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicStyleTokensProvider.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicStyleTokensProvider.tsx index d66edecdc3..303683bb1e 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicStyleTokensProvider.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicStyleTokensProvider.tsx @@ -9,13 +9,12 @@ import { createUseStyleTokens } from "@plasmicapp/react-web"; import { _useGlobalVariants } from "./plasmic"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectModule -import projectcss from "./plasmic_plasmic_kit_comments.module.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss - -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss +import "../PP__plasmickit_design_system.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss +import "./plasmic_plasmic_kit_comments.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss const data = { - base: `${projectcss.plasmic_tokens} ${plasmic_plasmic_kit_design_system_css.plasmic_tokens} ${plasmic_plasmic_kit_color_tokens_css.plasmic_tokens}`, + base: `${"plasmic_tokens_BP7V3EkXPURJVwwMyWoHn"} ${"plasmic_tokens_tXkSR39sgCDWSitZxC5xFV"} ${"plasmic_tokens_95xp9cYcv7HrNWpFWWhbcv"}`, varianted: [], }; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadComments.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadComments.tsx index 57fa3fddab..bddee1a1b0 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadComments.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadComments.tsx @@ -27,7 +27,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_comments.module.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss +import "./plasmic_plasmic_kit_comments.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss import sty from "./PlasmicThreadComments.module.css"; // plasmic-import: QY53tkpvLv/css createPlasmicElementProxy; @@ -89,10 +89,10 @@ function PlasmicThreadComments__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_BP7V3EkXPURJVwwMyWoHn", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root )} @@ -100,7 +100,7 @@ function PlasmicThreadComments__RenderFunc(props: {
= variants?: PlasmicThreadComments__VariantsArgs; args?: PlasmicThreadComments__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadCommentsDialog.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadCommentsDialog.module.css index d79c71fcf4..5fca161515 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadCommentsDialog.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadCommentsDialog.module.css @@ -1,35 +1,29 @@ -.commentsDialogHead:global(.__wab_instance) { +.root:global(.__wab_instance):global(.__wab_instance) { + min-width: 300px; +} +.commentsDialogHead:global(.__wab_instance):global(.__wab_instance) { max-width: 100%; } -.commentsDialogHeadhover:global(.__wab_instance) { - display: none; +.freeBox__aLeEa { + display: flex; + flex-direction: column; + position: relative; + align-items: center; + justify-content: flex-start; + padding-right: var(--token-8b4HJYZr1yuK); + padding-left: var(--token-8b4HJYZr1yuK); } .threadComments:global(.__wab_instance) { max-width: 100%; } -.commentPosthover:global(.__wab_instance) { - display: flex; -} -.freeBox { +.freeBox___3WKao { display: flex; flex-direction: row; position: relative; align-items: stretch; justify-content: flex-start; - padding: var(--token-8b4HJYZr1yuK); -} -.freeBoxhover { - padding-top: 0px; + padding: var(--token-O2OprmOFWLju) var(--token-8b4HJYZr1yuK); } .replyForm:global(.__wab_instance) { - width: 100%; - left: 0px; - top: 0px; - z-index: 1; - position: sticky; - min-width: 0; -} -.replyFormhover:global(.__wab_instance) { - flex-shrink: 0; - display: none; + position: relative; } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadCommentsDialog.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadCommentsDialog.tsx index 4d12618b2d..2155092957 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadCommentsDialog.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadCommentsDialog.tsx @@ -18,14 +18,10 @@ import { createPlasmicElementProxy, deriveRenderOpts, Flex as Flex__, - hasVariant, - SingleBooleanChoiceArg, StrictProps, - useDollarState, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; -import CommentPost from "../../components/comments/CommentPost"; // plasmic-import: l_AKXl2AAu/component import CommentPostForm from "../../components/comments/CommentPostForm"; // plasmic-import: qi3Y1X2qZ7/component import { CommentsDialogHead } from "../../components/comments/CommentsDialogHead"; // plasmic-import: tccr1SFVw_AY/component import ThreadComments from "../../components/comments/ThreadComments"; // plasmic-import: QY53tkpvLv/component @@ -34,20 +30,16 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_comments.module.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss +import "./plasmic_plasmic_kit_comments.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss import sty from "./PlasmicThreadCommentsDialog.module.css"; // plasmic-import: UhTNVxujj1gR/css createPlasmicElementProxy; -export type PlasmicThreadCommentsDialog__VariantMembers = { - hover: "hover"; -}; -export type PlasmicThreadCommentsDialog__VariantsArgs = { - hover?: SingleBooleanChoiceArg<"hover">; -}; +export type PlasmicThreadCommentsDialog__VariantMembers = {}; +export type PlasmicThreadCommentsDialog__VariantsArgs = {}; type VariantPropType = keyof PlasmicThreadCommentsDialog__VariantsArgs; export const PlasmicThreadCommentsDialog__VariantProps = - new Array("hover"); + new Array(); export type PlasmicThreadCommentsDialog__ArgsType = {}; type ArgPropType = keyof PlasmicThreadCommentsDialog__ArgsType; @@ -57,13 +49,10 @@ export type PlasmicThreadCommentsDialog__OverridesType = { root?: Flex__; commentsDialogHead?: Flex__; threadComments?: Flex__; - commentPost?: Flex__; - freeBox?: Flex__<"div">; replyForm?: Flex__; }; export interface DefaultThreadCommentsDialogProps { - hover?: SingleBooleanChoiceArg<"hover">; className?: string; } @@ -97,24 +86,6 @@ function PlasmicThreadCommentsDialog__RenderFunc(props: { const refsRef = React.useRef({}); const $refs = refsRef.current; - const stateSpecs: Parameters[0] = React.useMemo( - () => [ - { - path: "hover", - type: "private", - variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.hover, - }, - ], - [$props, $ctx, $refs] - ); - const $state = useDollarState(stateSpecs, { - $props, - $ctx, - $queries: {}, - $refs, - }); - const styleTokensClassNames = _useStyleTokens(); return ( @@ -123,73 +94,43 @@ function PlasmicThreadCommentsDialog__RenderFunc(props: { data-plasmic-override={overrides.root} data-plasmic-root={true} data-plasmic-for-node={forNode} + className={classNames("__wab_instance", sty.root)} content={ - - {(hasVariant($state, "hover", "hover") ? false : true) ? ( - - ) : null} - {(hasVariant($state, "hover", "hover") ? true : false) ? ( - - ) : null} - +
+ +
} footer={ -
+
} - heading={ + header={ } - showFooter={false} + show={["header", "footer"]} /> ) as React.ReactElement | null; } const PlasmicDescendants = { - root: [ - "root", - "commentsDialogHead", - "threadComments", - "commentPost", - "freeBox", - "replyForm", - ], + root: ["root", "commentsDialogHead", "threadComments", "replyForm"], commentsDialogHead: ["commentsDialogHead"], threadComments: ["threadComments"], - commentPost: ["commentPost"], - freeBox: ["freeBox", "replyForm"], replyForm: ["replyForm"], } as const; type NodeNameType = keyof typeof PlasmicDescendants; @@ -199,8 +140,6 @@ type NodeDefaultElementType = { root: typeof Dialog; commentsDialogHead: typeof CommentsDialogHead; threadComments: typeof ThreadComments; - commentPost: typeof CommentPost; - freeBox: "div"; replyForm: typeof CommentPostForm; }; @@ -215,7 +154,8 @@ type NodeComponentProps = variants?: PlasmicThreadCommentsDialog__VariantsArgs; args?: PlasmicThreadCommentsDialog__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props @@ -266,8 +206,6 @@ export const PlasmicThreadCommentsDialog = Object.assign( // Helper components rendering sub-elements commentsDialogHead: makeNodeComponent("commentsDialogHead"), threadComments: makeNodeComponent("threadComments"), - commentPost: makeNodeComponent("commentPost"), - freeBox: makeNodeComponent("freeBox"), replyForm: makeNodeComponent("replyForm"), // Metadata about props expected for PlasmicThreadCommentsDialog diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadHistory.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadHistory.tsx index d7219579e3..0c26cd8760 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadHistory.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadHistory.tsx @@ -30,7 +30,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_comments.module.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss +import "./plasmic_plasmic_kit_comments.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss import sty from "./PlasmicThreadHistory.module.css"; // plasmic-import: qiIt-rIFSO0f/css import _69B43A437055B398Eff90A515Ed4F551Svg2AijDeIx4X from "./images/_69B43A437055B398Eff90A515Ed4F551Svg.svg"; // plasmic-import: 2aijDEIx4x/picture @@ -103,15 +103,17 @@ function PlasmicThreadHistory__RenderFunc(props: { path: "isResolved", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isResolved, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.isResolved, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -124,20 +126,20 @@ function PlasmicThreadHistory__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_BP7V3EkXPURJVwwMyWoHn", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { [sty.rootisResolved]: hasVariant($state, "isResolved", "isResolved") } )} > -
+
{""} @@ -175,10 +173,11 @@ function PlasmicThreadHistory__RenderFunc(props: { data-plasmic-name={"userFullName"} data-plasmic-override={overrides.userFullName} className={classNames( - projectcss.all, - projectcss.span, - projectcss.__wab_text, - projectcss.plasmic_default__inline, + "all", + "span", + "span__BP7V3", + "__wab_text", + "plasmic_default__inline", sty.userFullName )} > @@ -191,10 +190,11 @@ function PlasmicThreadHistory__RenderFunc(props: { data-plasmic-name={"timestamp"} data-plasmic-override={overrides.timestamp} className={classNames( - projectcss.all, - projectcss.span, - projectcss.__wab_text, - projectcss.plasmic_default__inline, + "all", + "span", + "span__BP7V3", + "__wab_text", + "plasmic_default__inline", sty.timestamp )} > @@ -205,23 +205,18 @@ function PlasmicThreadHistory__RenderFunc(props: {
-
-
+
+
{hasVariant($state, "isResolved", "isResolved") ? "Comment thread resolved." @@ -274,7 +269,8 @@ type NodeComponentProps = variants?: PlasmicThreadHistory__VariantsArgs; args?: PlasmicThreadHistory__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadHistoryStatus.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadHistoryStatus.module.css index 519783d62f..aadeb41899 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadHistoryStatus.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadHistoryStatus.module.css @@ -13,7 +13,7 @@ object-fit: cover; height: 1em; } -.svg___1OfGb { +.svg__rwIde { display: flex; position: relative; object-fit: cover; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadHistoryStatus.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadHistoryStatus.tsx index 1d1adfa0e2..4fc8acc2f6 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadHistoryStatus.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadHistoryStatus.tsx @@ -31,7 +31,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_comments.module.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss +import "./plasmic_plasmic_kit_comments.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss import sty from "./PlasmicThreadHistoryStatus.module.css"; // plasmic-import: E0P_lFzVr70L/css import CheckedCheckboxSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__CheckedCheckboxSvg"; // plasmic-import: FOJsdThB5rU-/icon @@ -103,21 +103,23 @@ function PlasmicThreadHistoryStatus__RenderFunc(props: { path: "resolved", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.resolved, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.resolved, }, { path: "isLoading", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isLoading, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.isLoading, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -130,10 +132,10 @@ function PlasmicThreadHistoryStatus__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_BP7V3EkXPURJVwwMyWoHn", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { [sty.rootresolved]: hasVariant($state, "resolved", "resolved") } @@ -170,7 +172,6 @@ function PlasmicThreadHistoryStatus__RenderFunc(props: { isLoading={ hasVariant($state, "isLoading", "isLoading") ? true : undefined } - size={"medium"} type={ hasVariant($state, "resolved", "resolved") ? ["black"] : undefined } @@ -179,7 +180,7 @@ function PlasmicThreadHistoryStatus__RenderFunc(props: { = variants?: PlasmicThreadHistoryStatus__VariantsArgs; args?: PlasmicThreadHistoryStatus__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadList.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadList.tsx index 0644816e22..89e96c31a2 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadList.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/PlasmicThreadList.tsx @@ -30,7 +30,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_comments.module.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss +import "./plasmic_plasmic_kit_comments.css"; // plasmic-import: BP7V3EkXPURJVwwMyWoHn/projectcss import sty from "./PlasmicThreadList.module.css"; // plasmic-import: nObxvgrqmfvo/css import SpeechBubblePlusSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__SpeechBubblePlusSvg"; // plasmic-import: g2gTPsRaJ/icon @@ -103,15 +103,17 @@ function PlasmicThreadList__RenderFunc(props: { path: "noComments", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.noComments, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.noComments, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -124,10 +126,10 @@ function PlasmicThreadList__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_BP7V3EkXPURJVwwMyWoHn", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { [sty.rootnoComments]: hasVariant($state, "noComments", "noComments") } @@ -136,7 +138,7 @@ function PlasmicThreadList__RenderFunc(props: {
{"No comments"}
@@ -199,16 +198,17 @@ function PlasmicThreadList__RenderFunc(props: { @@ -262,7 +262,8 @@ type NodeComponentProps = variants?: PlasmicThreadList__VariantsArgs; args?: PlasmicThreadList__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/plasmic.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/plasmic.tsx index 11f02784f9..204a971b2b 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/plasmic.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/plasmic.tsx @@ -7,8 +7,4 @@ import { createUseGlobalVariants } from "@plasmicapp/react-web"; -import { useScreenVariants as useScreenVariants_36Nw8KCcgswV1 } from "./PlasmicGlobalVariant__Screen"; // plasmic-import: 36nw8KCcgswV1/globalVariant - -export const _useGlobalVariants = createUseGlobalVariants({ - screen: useScreenVariants_36Nw8KCcgswV1, -}); +export const _useGlobalVariants = createUseGlobalVariants({}); diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/plasmic_plasmic_kit_comments.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/plasmic_plasmic_kit_comments.css new file mode 100644 index 0000000000..287e54b8b8 --- /dev/null +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/plasmic_plasmic_kit_comments.css @@ -0,0 +1,633 @@ +@import "../PP__plasmickit_design_system.css"; /* plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss */ +@import "../plasmic_kit_icons/plasmic_q_4_icons.css"; /* plasmic-import: oT38tGyqov9SPWHpf3Y2Rf/projectcss */ +@import "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; /* plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss */ +@import "../react_aria/plasmic.css"; /* plasmic-import: gmeH6XgPaBtkt51HunAo4g/projectcss */ +@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C700&family=IBM+Plex+Mono%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C700&display=swap"); + +.plasmic_default_styles { + --mixin-qP3g6Hd5AdC_text-decoration-line: none; + --mixin-qP3g6Hd5AdC_font-family: "Inter", sans-serif; + --mixin-qP3g6Hd5AdC_color: var(--token-0IloF6TmFvF); + --mixin-qP3g6Hd5AdC_font-size: 12px; + --mixin-qP3g6Hd5AdC_white-space: pre-wrap; + --mixin-qP3g6Hd5AdC_line-height: 1.5; + --mixin-2zEfljePq9P_color: var(--token-VUsIDivgUss); + --mixin-2zEfljePq9P_white-space: pre-wrap; + --mixin-EEKi5Tu2fbK_white-space: pre-wrap; + --mixin-YQD_Uc8Md__font-family: "Inter", sans-serif; + --mixin-YQD_Uc8Md__font-size: 72px; + --mixin-YQD_Uc8Md__font-weight: 500; + --mixin-YQD_Uc8Md__white-space: pre-wrap; + --mixin-vEOXQLfcbC_font-family: "Inter", sans-serif; + --mixin-vEOXQLfcbC_font-size: 48px; + --mixin-vEOXQLfcbC_font-weight: 500; + --mixin-vEOXQLfcbC_white-space: pre-wrap; + --mixin-EXCWDILscU_font-family: "Inter", sans-serif; + --mixin-EXCWDILscU_font-size: 32px; + --mixin-EXCWDILscU_font-weight: 500; + --mixin-EXCWDILscU_white-space: pre-wrap; + --mixin-N7cG0Ri48QP_font-family: "Inter", sans-serif; + --mixin-N7cG0Ri48QP_font-size: 24px; + --mixin-N7cG0Ri48QP_font-weight: 500; + --mixin-N7cG0Ri48QP_white-space: pre-wrap; + --mixin-__gfw12lSVA_font-family: "Inter", sans-serif; + --mixin-__gfw12lSVA_font-size: 20px; + --mixin-__gfw12lSVA_font-weight: 500; + --mixin-__gfw12lSVA_white-space: pre-wrap; + --mixin-eoQXVRNaCyL_font-family: "Inter", sans-serif; + --mixin-eoQXVRNaCyL_font-size: 16px; + --mixin-eoQXVRNaCyL_font-weight: 500; + --mixin-eoQXVRNaCyL_white-space: pre-wrap; + --mixin-fkU_lzw4PF5_white-space: pre-wrap; + --mixin-v9e0yiTlX_o_white-space: pre-wrap; + --mixin-MMatKfNT024_white-space: pre-wrap; + --mixin-EuhGUWboGh2_position: relative; + --mixin-EuhGUWboGh2_white-space: pre-wrap; + --mixin-_MYD1z_SMDp_position: relative; + --mixin-_MYD1z_SMDp_white-space: pre-wrap; + --mixin-Yot8xJYsc_white-space: pre-wrap; + --mixin-985HZFQW4_white-space: pre-wrap; + --mixin-3i6_2FI7G_white-space: pre-wrap; + --mixin-3HZrBcpB6_white-space: pre-wrap; + --mixin-n1REaG4FH_white-space: pre-wrap; + --mixin-Hk5zzHaLS_white-space: pre-wrap; + --mixin-B4DR1AgPG_white-space: pre-wrap; + --mixin-bhSle9dw7_white-space: pre-wrap; + --mixin-5d8gGYi39_white-space: pre-wrap; + --mixin-sxjZ0YFFF_white-space: pre-wrap; + --mixin-GZm4AQ_Ek_white-space: pre-wrap; + --mixin-qjB654aOL_white-space: pre-wrap; +} + +:where(.all) { + display: block; + white-space: inherit; + grid-row: auto; + grid-column: auto; + position: relative; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + text-decoration-line: none; + margin: 0; + border-width: 0px; +} +:where(.__wab_expr_html_text *) { + white-space: inherit; + grid-row: auto; + grid-column: auto; + background: none; + background-size: 100% 100%; + background-repeat: no-repeat; + row-gap: 0px; + column-gap: 0px; + box-shadow: none; + box-sizing: border-box; + margin: 0; + border-width: 0px; +} + +:where(.img) { + display: inline-block; +} +:where(.__wab_expr_html_text img) { + white-space: inherit; +} + +:where(.li) { + display: list-item; +} +:where(.__wab_expr_html_text li) { + white-space: inherit; +} + +:where(.span) { + display: inline; + position: static; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text span) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.input) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text input) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: linear-gradient(#ffffff, #ffffff); + padding: 2px; + border: 1px solid lightgray; +} + +:where(.textarea) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text textarea) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + padding: 2px; + border: 1px solid lightgray; +} + +:where(.button) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} +:where(.__wab_expr_html_text button) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; + background-image: none; + align-items: flex-start; + text-align: center; + padding: 2px 6px; + border: 1px solid lightgray; +} + +:where(.code) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text code) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.pre) { + font-family: inherit; + line-height: inherit; +} +:where(.__wab_expr_html_text pre) { + white-space: inherit; + font-family: inherit; + line-height: inherit; +} + +:where(.p) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text p) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.i) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text i) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.em) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text em) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + font-weight: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.strong) { + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} +:where(.__wab_expr_html_text strong) { + white-space: inherit; + font-family: inherit; + line-height: inherit; + font-size: inherit; + color: inherit; + text-transform: inherit; +} + +:where(.h1) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h1) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h2) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h2) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h3) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h3) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h4) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h4) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h5) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h5) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.h6) { + font-size: inherit; + font-weight: inherit; +} +:where(.__wab_expr_html_text h6) { + white-space: inherit; + font-size: inherit; + font-weight: inherit; +} + +:where(.address) { + font-style: inherit; +} +:where(.__wab_expr_html_text address) { + white-space: inherit; + font-style: inherit; +} + +:where(.a) { + color: inherit; +} +:where(.__wab_expr_html_text a) { + white-space: inherit; + color: inherit; +} + +:where(.ol) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ol) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.ul) { + list-style-type: none; + padding: 0; +} +:where(.__wab_expr_html_text ul) { + white-space: inherit; + list-style-type: none; + padding: 0; +} + +:where(.select) { + padding: 2px 6px; +} +:where(.__wab_expr_html_text select) { + white-space: inherit; + padding: 2px 6px; +} + +.plasmic_default__component_wrapper { + display: grid; +} +.plasmic_default__inline { + display: inline; +} +.plasmic_page_wrapper { + display: flex; + width: 100%; + min-height: 100vh; + align-items: stretch; + align-self: start; +} +.plasmic_page_wrapper > * { + height: auto !important; +} +.__wab_expr_html_text { + white-space: normal; +} +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) { + font-family: var(--mixin-qP3g6Hd5AdC_font-family); + font-size: var(--mixin-qP3g6Hd5AdC_font-size); + color: var(--mixin-qP3g6Hd5AdC_color); + line-height: var(--mixin-qP3g6Hd5AdC_line-height); + white-space: var(--mixin-qP3g6Hd5AdC_white-space); +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) a:where(.a__BP7V3), +a:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.a__BP7V3), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) a, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) a, +a:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) { + color: var(--mixin-2zEfljePq9P_color); +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) a:where(.a__BP7V3):hover, +a:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.a__BP7V3):hover, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) a:hover, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) a:hover, +a:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags):hover { +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) h1:where(.h1__BP7V3), +h1:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.h1__BP7V3), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) h1, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) h1, +h1:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) { + font-family: var(--mixin-YQD_Uc8Md__font-family); + font-size: var(--mixin-YQD_Uc8Md__font-size); + font-weight: var(--mixin-YQD_Uc8Md__font-weight); +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) h2:where(.h2__BP7V3), +h2:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.h2__BP7V3), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) h2, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) h2, +h2:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) { + font-family: var(--mixin-vEOXQLfcbC_font-family); + font-size: var(--mixin-vEOXQLfcbC_font-size); + font-weight: var(--mixin-vEOXQLfcbC_font-weight); +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) h3:where(.h3__BP7V3), +h3:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.h3__BP7V3), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) h3, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) h3, +h3:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) { + font-family: var(--mixin-EXCWDILscU_font-family); + font-size: var(--mixin-EXCWDILscU_font-size); + font-weight: var(--mixin-EXCWDILscU_font-weight); +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) h4:where(.h4__BP7V3), +h4:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.h4__BP7V3), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) h4, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) h4, +h4:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) { + font-family: var(--mixin-N7cG0Ri48QP_font-family); + font-size: var(--mixin-N7cG0Ri48QP_font-size); + font-weight: var(--mixin-N7cG0Ri48QP_font-weight); +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) h5:where(.h5__BP7V3), +h5:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.h5__BP7V3), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) h5, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) h5, +h5:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) { + font-family: var(--mixin-__gfw12lSVA_font-family); + font-size: var(--mixin-__gfw12lSVA_font-size); + font-weight: var(--mixin-__gfw12lSVA_font-weight); +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) h6:where(.h6__BP7V3), +h6:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.h6__BP7V3), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) h6, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) h6, +h6:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) { + font-family: var(--mixin-eoQXVRNaCyL_font-family); + font-size: var(--mixin-eoQXVRNaCyL_font-size); + font-weight: var(--mixin-eoQXVRNaCyL_font-weight); +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) blockquote:where(.blockquote__BP7V3), +blockquote:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.blockquote__BP7V3), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) blockquote, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) blockquote, +blockquote:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) { +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) code:where(.code__BP7V3), +code:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.code__BP7V3), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) code, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) code, +code:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) { +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) pre:where(.pre__BP7V3), +pre:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.pre__BP7V3), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) pre, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) pre, +pre:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) { +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) ol:where(.ol__BP7V3), +ol:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.ol__BP7V3), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) ol, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) ol, +ol:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) { + position: var(--mixin-EuhGUWboGh2_position); +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) ul:where(.ul__BP7V3), +ul:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.ul__BP7V3), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) ul, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) ul, +ul:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) { + position: var(--mixin-_MYD1z_SMDp_position); +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) a:where(.a__BP7V3):not(:hover), +a:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.a__BP7V3):not(:hover), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) a:not(:hover), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) a:not(:hover), +a:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags):not(:hover) { +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) a:where(.a__BP7V3):active, +a:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.a__BP7V3):active, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) a:active, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) a:active, +a:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags):active { +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) a:where(.a__BP7V3):not(:active), +a:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.a__BP7V3):not(:active), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) a:not(:active), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) a:not(:active), +a:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags):not(:active) { +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) a:where(.a__BP7V3):focus, +a:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.a__BP7V3):focus, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) a:focus, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) a:focus, +a:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags):focus { +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) a:where(.a__BP7V3):not(:link), +a:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.a__BP7V3):not(:link), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) a:not(:link), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) a:not(:link), +a:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags):not(:link) { +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) + blockquote:where(.blockquote__BP7V3):not(:link), +blockquote:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.blockquote__BP7V3):not( + :link + ), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) + blockquote:not(:link), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) blockquote:not(:link), +blockquote:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags):not(:link) { +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) + blockquote:where(.blockquote__BP7V3):hover, +blockquote:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.blockquote__BP7V3):hover, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) + blockquote:hover, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) blockquote:hover, +blockquote:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags):hover { +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) code:where(.code__BP7V3):hover, +code:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.code__BP7V3):hover, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) code:hover, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) code:hover, +code:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags):hover { +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) li:where(.li__BP7V3), +li:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.li__BP7V3), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) li, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) li, +li:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) { +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) p:where(.p__BP7V3), +p:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.p__BP7V3), +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) p, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) p, +p:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) { +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) ul:where(.ul__BP7V3):hover, +ul:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.ul__BP7V3):hover, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) ul:hover, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) ul:hover, +ul:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags):hover { +} + +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn) li:where(.li__BP7V3):hover, +li:where(.root_reset_BP7V3EkXPURJVwwMyWoHn.li__BP7V3):hover, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn .__wab_expr_html_text) li:hover, +:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags) li:hover, +li:where(.root_reset_BP7V3EkXPURJVwwMyWoHn_tags):hover { +} diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/plasmic_plasmic_kit_comments.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/plasmic_plasmic_kit_comments.module.css deleted file mode 100644 index 2e8e5daae7..0000000000 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_comments/plasmic_plasmic_kit_comments.module.css +++ /dev/null @@ -1,571 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C700&family=IBM+Plex+Mono%3Aital%2Cwght%400%2C400%3B0%2C500%3B0%2C700&display=swap"); - -.plasmic_default_styles { - --mixin-qP3g6Hd5AdC_text-decoration-line: none; - --mixin-qP3g6Hd5AdC_font-family: "Inter", sans-serif; - --mixin-qP3g6Hd5AdC_color: var(--token-0IloF6TmFvF); - --mixin-qP3g6Hd5AdC_font-size: 12px; - --mixin-qP3g6Hd5AdC_white-space: pre-wrap; - --mixin-qP3g6Hd5AdC_line-height: 1.5; - --mixin-2zEfljePq9P_color: var(--token-VUsIDivgUss); - --mixin-2zEfljePq9P_white-space: pre-wrap; - --mixin-EEKi5Tu2fbK_white-space: pre-wrap; - --mixin-YQD_Uc8Md__font-family: "Inter", sans-serif; - --mixin-YQD_Uc8Md__font-size: 72px; - --mixin-YQD_Uc8Md__font-weight: 500; - --mixin-YQD_Uc8Md__white-space: pre-wrap; - --mixin-vEOXQLfcbC_font-family: "Inter", sans-serif; - --mixin-vEOXQLfcbC_font-size: 48px; - --mixin-vEOXQLfcbC_font-weight: 500; - --mixin-vEOXQLfcbC_white-space: pre-wrap; - --mixin-EXCWDILscU_font-family: "Inter", sans-serif; - --mixin-EXCWDILscU_font-size: 32px; - --mixin-EXCWDILscU_font-weight: 500; - --mixin-EXCWDILscU_white-space: pre-wrap; - --mixin-N7cG0Ri48QP_font-family: "Inter", sans-serif; - --mixin-N7cG0Ri48QP_font-size: 24px; - --mixin-N7cG0Ri48QP_font-weight: 500; - --mixin-N7cG0Ri48QP_white-space: pre-wrap; - --mixin-__gfw12lSVA_font-family: "Inter", sans-serif; - --mixin-__gfw12lSVA_font-size: 20px; - --mixin-__gfw12lSVA_font-weight: 500; - --mixin-__gfw12lSVA_white-space: pre-wrap; - --mixin-eoQXVRNaCyL_font-family: "Inter", sans-serif; - --mixin-eoQXVRNaCyL_font-size: 16px; - --mixin-eoQXVRNaCyL_font-weight: 500; - --mixin-eoQXVRNaCyL_white-space: pre-wrap; - --mixin-fkU_lzw4PF5_white-space: pre-wrap; - --mixin-v9e0yiTlX_o_white-space: pre-wrap; - --mixin-MMatKfNT024_white-space: pre-wrap; - --mixin-EuhGUWboGh2_position: relative; - --mixin-EuhGUWboGh2_white-space: pre-wrap; - --mixin-_MYD1z_SMDp_position: relative; - --mixin-_MYD1z_SMDp_white-space: pre-wrap; - --mixin-Yot8xJYsc_white-space: pre-wrap; - --mixin-985HZFQW4_white-space: pre-wrap; - --mixin-3i6_2FI7G_white-space: pre-wrap; - --mixin-3HZrBcpB6_white-space: pre-wrap; - --mixin-n1REaG4FH_white-space: pre-wrap; - --mixin-Hk5zzHaLS_white-space: pre-wrap; - --mixin-B4DR1AgPG_white-space: pre-wrap; - --mixin-bhSle9dw7_white-space: pre-wrap; - --mixin-5d8gGYi39_white-space: pre-wrap; - --mixin-sxjZ0YFFF_white-space: pre-wrap; - --mixin-GZm4AQ_Ek_white-space: pre-wrap; - --mixin-qjB654aOL_white-space: pre-wrap; -} - -:where(.all) { - display: block; - white-space: inherit; - grid-row: auto; - grid-column: auto; - position: relative; - background: none; - background-size: 100% 100%; - background-repeat: no-repeat; - row-gap: 0px; - column-gap: 0px; - box-shadow: none; - box-sizing: border-box; - text-decoration-line: none; - margin: 0; - border-width: 0px; -} -:where(.__wab_expr_html_text *) { - white-space: inherit; - grid-row: auto; - grid-column: auto; - background: none; - background-size: 100% 100%; - background-repeat: no-repeat; - row-gap: 0px; - column-gap: 0px; - box-shadow: none; - box-sizing: border-box; - margin: 0; - border-width: 0px; -} - -:where(.img) { - display: inline-block; -} -:where(.__wab_expr_html_text img) { - white-space: inherit; -} - -:where(.li) { - display: list-item; -} -:where(.__wab_expr_html_text li) { - white-space: inherit; -} - -:where(.span) { - display: inline; - position: static; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} -:where(.__wab_expr_html_text span) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} - -:where(.input) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: linear-gradient(#ffffff, #ffffff); - padding: 2px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text input) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: linear-gradient(#ffffff, #ffffff); - padding: 2px; - border: 1px solid lightgray; -} - -:where(.textarea) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - padding: 2px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text textarea) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - padding: 2px; - border: 1px solid lightgray; -} - -:where(.button) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: none; - align-items: flex-start; - text-align: center; - padding: 2px 6px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text button) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: none; - align-items: flex-start; - text-align: center; - padding: 2px 6px; - border: 1px solid lightgray; -} - -:where(.code) { - font-family: inherit; - line-height: inherit; -} -:where(.__wab_expr_html_text code) { - white-space: inherit; - font-family: inherit; - line-height: inherit; -} - -:where(.pre) { - font-family: inherit; - line-height: inherit; -} -:where(.__wab_expr_html_text pre) { - white-space: inherit; - font-family: inherit; - line-height: inherit; -} - -:where(.p) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} -:where(.__wab_expr_html_text p) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} - -:where(.h1) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h1) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h2) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h2) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h3) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h3) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h4) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h4) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h5) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h5) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h6) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h6) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.address) { - font-style: inherit; -} -:where(.__wab_expr_html_text address) { - white-space: inherit; - font-style: inherit; -} - -:where(.a) { - color: inherit; -} -:where(.__wab_expr_html_text a) { - white-space: inherit; - color: inherit; -} - -:where(.ol) { - list-style-type: none; - padding: 0; -} -:where(.__wab_expr_html_text ol) { - white-space: inherit; - list-style-type: none; - padding: 0; -} - -:where(.ul) { - list-style-type: none; - padding: 0; -} -:where(.__wab_expr_html_text ul) { - white-space: inherit; - list-style-type: none; - padding: 0; -} - -:where(.select) { - padding: 2px 6px; -} -:where(.__wab_expr_html_text select) { - white-space: inherit; - padding: 2px 6px; -} - -.plasmic_default__component_wrapper { - display: grid; -} -.plasmic_default__inline { - display: inline; -} -.plasmic_page_wrapper { - display: flex; - width: 100%; - min-height: 100vh; - align-items: stretch; - align-self: start; -} -.plasmic_page_wrapper > * { - height: auto !important; -} -.__wab_expr_html_text { - white-space: normal; -} -:where(.root_reset) { - font-family: var(--mixin-qP3g6Hd5AdC_font-family); - font-size: var(--mixin-qP3g6Hd5AdC_font-size); - color: var(--mixin-qP3g6Hd5AdC_color); - line-height: var(--mixin-qP3g6Hd5AdC_line-height); - white-space: var(--mixin-qP3g6Hd5AdC_white-space); -} - -:where(.root_reset) a:where(.a), -a:where(.root_reset.a), -:where(.root_reset .__wab_expr_html_text) a, -:where(.root_reset_tags) a, -a:where(.root_reset_tags) { - color: var(--mixin-2zEfljePq9P_color); -} - -:where(.root_reset) a:where(.a):hover, -a:where(.root_reset.a):hover, -:where(.root_reset .__wab_expr_html_text) a:hover, -:where(.root_reset_tags) a:hover, -a:where(.root_reset_tags):hover { -} - -:where(.root_reset) h1:where(.h1), -h1:where(.root_reset.h1), -:where(.root_reset .__wab_expr_html_text) h1, -:where(.root_reset_tags) h1, -h1:where(.root_reset_tags) { - font-family: var(--mixin-YQD_Uc8Md__font-family); - font-size: var(--mixin-YQD_Uc8Md__font-size); - font-weight: var(--mixin-YQD_Uc8Md__font-weight); -} - -:where(.root_reset) h2:where(.h2), -h2:where(.root_reset.h2), -:where(.root_reset .__wab_expr_html_text) h2, -:where(.root_reset_tags) h2, -h2:where(.root_reset_tags) { - font-family: var(--mixin-vEOXQLfcbC_font-family); - font-size: var(--mixin-vEOXQLfcbC_font-size); - font-weight: var(--mixin-vEOXQLfcbC_font-weight); -} - -:where(.root_reset) h3:where(.h3), -h3:where(.root_reset.h3), -:where(.root_reset .__wab_expr_html_text) h3, -:where(.root_reset_tags) h3, -h3:where(.root_reset_tags) { - font-family: var(--mixin-EXCWDILscU_font-family); - font-size: var(--mixin-EXCWDILscU_font-size); - font-weight: var(--mixin-EXCWDILscU_font-weight); -} - -:where(.root_reset) h4:where(.h4), -h4:where(.root_reset.h4), -:where(.root_reset .__wab_expr_html_text) h4, -:where(.root_reset_tags) h4, -h4:where(.root_reset_tags) { - font-family: var(--mixin-N7cG0Ri48QP_font-family); - font-size: var(--mixin-N7cG0Ri48QP_font-size); - font-weight: var(--mixin-N7cG0Ri48QP_font-weight); -} - -:where(.root_reset) h5:where(.h5), -h5:where(.root_reset.h5), -:where(.root_reset .__wab_expr_html_text) h5, -:where(.root_reset_tags) h5, -h5:where(.root_reset_tags) { - font-family: var(--mixin-__gfw12lSVA_font-family); - font-size: var(--mixin-__gfw12lSVA_font-size); - font-weight: var(--mixin-__gfw12lSVA_font-weight); -} - -:where(.root_reset) h6:where(.h6), -h6:where(.root_reset.h6), -:where(.root_reset .__wab_expr_html_text) h6, -:where(.root_reset_tags) h6, -h6:where(.root_reset_tags) { - font-family: var(--mixin-eoQXVRNaCyL_font-family); - font-size: var(--mixin-eoQXVRNaCyL_font-size); - font-weight: var(--mixin-eoQXVRNaCyL_font-weight); -} - -:where(.root_reset) blockquote:where(.blockquote), -blockquote:where(.root_reset.blockquote), -:where(.root_reset .__wab_expr_html_text) blockquote, -:where(.root_reset_tags) blockquote, -blockquote:where(.root_reset_tags) { -} - -:where(.root_reset) code:where(.code), -code:where(.root_reset.code), -:where(.root_reset .__wab_expr_html_text) code, -:where(.root_reset_tags) code, -code:where(.root_reset_tags) { -} - -:where(.root_reset) pre:where(.pre), -pre:where(.root_reset.pre), -:where(.root_reset .__wab_expr_html_text) pre, -:where(.root_reset_tags) pre, -pre:where(.root_reset_tags) { -} - -:where(.root_reset) ol:where(.ol), -ol:where(.root_reset.ol), -:where(.root_reset .__wab_expr_html_text) ol, -:where(.root_reset_tags) ol, -ol:where(.root_reset_tags) { - position: var(--mixin-EuhGUWboGh2_position); -} - -:where(.root_reset) ul:where(.ul), -ul:where(.root_reset.ul), -:where(.root_reset .__wab_expr_html_text) ul, -:where(.root_reset_tags) ul, -ul:where(.root_reset_tags) { - position: var(--mixin-_MYD1z_SMDp_position); -} - -:where(.root_reset) a:where(.a):not(:hover), -a:where(.root_reset.a):not(:hover), -:where(.root_reset .__wab_expr_html_text) a:not(:hover), -:where(.root_reset_tags) a:not(:hover), -a:where(.root_reset_tags):not(:hover) { -} - -:where(.root_reset) a:where(.a):active, -a:where(.root_reset.a):active, -:where(.root_reset .__wab_expr_html_text) a:active, -:where(.root_reset_tags) a:active, -a:where(.root_reset_tags):active { -} - -:where(.root_reset) a:where(.a):not(:active), -a:where(.root_reset.a):not(:active), -:where(.root_reset .__wab_expr_html_text) a:not(:active), -:where(.root_reset_tags) a:not(:active), -a:where(.root_reset_tags):not(:active) { -} - -:where(.root_reset) a:where(.a):focus, -a:where(.root_reset.a):focus, -:where(.root_reset .__wab_expr_html_text) a:focus, -:where(.root_reset_tags) a:focus, -a:where(.root_reset_tags):focus { -} - -:where(.root_reset) a:where(.a):not(:link), -a:where(.root_reset.a):not(:link), -:where(.root_reset .__wab_expr_html_text) a:not(:link), -:where(.root_reset_tags) a:not(:link), -a:where(.root_reset_tags):not(:link) { -} - -:where(.root_reset) blockquote:where(.blockquote):not(:link), -blockquote:where(.root_reset.blockquote):not(:link), -:where(.root_reset .__wab_expr_html_text) blockquote:not(:link), -:where(.root_reset_tags) blockquote:not(:link), -blockquote:where(.root_reset_tags):not(:link) { -} - -:where(.root_reset) blockquote:where(.blockquote):hover, -blockquote:where(.root_reset.blockquote):hover, -:where(.root_reset .__wab_expr_html_text) blockquote:hover, -:where(.root_reset_tags) blockquote:hover, -blockquote:where(.root_reset_tags):hover { -} - -:where(.root_reset) code:where(.code):hover, -code:where(.root_reset.code):hover, -:where(.root_reset .__wab_expr_html_text) code:hover, -:where(.root_reset_tags) code:hover, -code:where(.root_reset_tags):hover { -} - -:where(.root_reset) li:where(.li), -li:where(.root_reset.li), -:where(.root_reset .__wab_expr_html_text) li, -:where(.root_reset_tags) li, -li:where(.root_reset_tags) { -} - -:where(.root_reset) p:where(.p), -p:where(.root_reset.p), -:where(.root_reset .__wab_expr_html_text) p, -:where(.root_reset_tags) p, -p:where(.root_reset_tags) { -} - -:where(.root_reset) ul:where(.ul):hover, -ul:where(.root_reset.ul):hover, -:where(.root_reset .__wab_expr_html_text) ul:hover, -:where(.root_reset_tags) ul:hover, -ul:where(.root_reset_tags):hover { -} - -:where(.root_reset) li:where(.li):hover, -li:where(.root_reset.li):hover, -:where(.root_reset .__wab_expr_html_text) li:hover, -:where(.root_reset_tags) li:hover, -li:where(.root_reset_tags):hover { -} diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_component_props_section/PlasmicCardPickerItem.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_component_props_section/PlasmicCardPickerItem.module.css index 0d5c453635..06dec5ec7e 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_component_props_section/PlasmicCardPickerItem.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_component_props_section/PlasmicCardPickerItem.module.css @@ -13,15 +13,15 @@ padding: 0px; } .rootisSelected { - border-color: var(--token-N3uwCfNqv); + border-color: var(--token-qP8a3gYPq7fd); } .rootlarge { width: 360px; } -.root:hover { +.root:hover:hover { border-color: var(--token-eBt2ZgqRUCz); } -.root:focus { +.root:focus:focus { box-shadow: 0px 0px 0px 2px #0091ff80; outline: none; } @@ -36,7 +36,7 @@ flex-shrink: 0; } .freeBoxisSelected__mWjoK5OaEf { - border-bottom-color: var(--token-G18pc1ITl); + border-bottom-color: var(--token-8MEyDjsqznQc); } .freeBoxlarge__mWjoKeGuqC { height: 210px; @@ -52,13 +52,13 @@ padding: 8px; } .freeBoxisSelected__sxDqT5OaEf { - background: var(--token-G18pc1ITl); + background: var(--token-8MEyDjsqznQc); } .root:hover .freeBox__sxDqT { background: var(--token-bV4cCeIniS6); } .root:focus .freeBox__sxDqT { - background: var(--token-G18pc1ITl); + background: var(--token-8MEyDjsqznQc); outline: none; } .slotTargetTitleisSelected { @@ -86,5 +86,5 @@ height: auto; outline: none; border-radius: 8px; - border: 2px dashed var(--token-N3uwCfNqv); + border: 2px dashed var(--token-qP8a3gYPq7fd); } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_component_props_section/PlasmicCardPickerItem.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_component_props_section/PlasmicCardPickerItem.tsx index 5142d4ef96..91d277773f 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_component_props_section/PlasmicCardPickerItem.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_component_props_section/PlasmicCardPickerItem.tsx @@ -31,7 +31,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_component_props_section.module.css"; // plasmic-import: 783YKJdyRRPxZbx3qiNi5Q/projectcss +import "./plasmic_plasmic_kit_component_props_section.css"; // plasmic-import: 783YKJdyRRPxZbx3qiNi5Q/projectcss import sty from "./PlasmicCardPickerItem.module.css"; // plasmic-import: -ZWJykIq5V-3F/css import EyeSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__EyeSvg"; // plasmic-import: oFYcZi8LU/icon @@ -124,6 +124,7 @@ function PlasmicCardPickerItem__RenderFunc(props: { ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, @@ -146,11 +147,12 @@ function PlasmicCardPickerItem__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.button, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "button", + "button__783YK", + "root_reset_783YKJdyRRPxZbx3qiNi5Q", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { @@ -161,7 +163,7 @@ function PlasmicCardPickerItem__RenderFunc(props: { data-plasmic-trigger-props={[triggerRootFocusProps]} >
), @@ -209,7 +211,7 @@ function PlasmicCardPickerItem__RenderFunc(props: { : null}
{(triggers.focus_root ? true : false) ? ( -
+
) : null} ) as React.ReactElement | null; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_component_props_section/PlasmicCardPickerModal.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_component_props_section/PlasmicCardPickerModal.tsx index 290e339e6a..4abec09993 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_component_props_section/PlasmicCardPickerModal.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_component_props_section/PlasmicCardPickerModal.tsx @@ -34,7 +34,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "./plasmic_plasmic_kit_component_props_section.module.css"; // plasmic-import: 783YKJdyRRPxZbx3qiNi5Q/projectcss +import "./plasmic_plasmic_kit_component_props_section.css"; // plasmic-import: 783YKJdyRRPxZbx3qiNi5Q/projectcss import sty from "./PlasmicCardPickerModal.module.css"; // plasmic-import: 6ODOBecfUs5/css import TrashIcon from "../plasmic_kit/PlasmicIcon__Trash"; // plasmic-import: 7bxap5bzcUODa/icon @@ -123,6 +123,7 @@ function PlasmicCardPickerModal__RenderFunc(props: { ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, @@ -148,14 +149,14 @@ function PlasmicCardPickerModal__RenderFunc(props: { className={classNames("__wab_instance", sty.cancelButton)} endIcon={ } size={"wide"} startIcon={ } @@ -164,11 +165,7 @@ function PlasmicCardPickerModal__RenderFunc(props: {
{"Cancel"}
@@ -179,14 +176,14 @@ function PlasmicCardPickerModal__RenderFunc(props: { className={classNames("__wab_instance", sty.saveButton)} endIcon={ } size={"wide"} startIcon={ } @@ -199,7 +196,7 @@ function PlasmicCardPickerModal__RenderFunc(props: { title={"Card Picker"} >
{ try { return { @@ -265,8 +262,9 @@ function PlasmicCardPickerModal__RenderFunc(props: { {""}(); export type PlasmicBoundingBoxHighlighter__OverridesType = { - root?: p.Flex<"div">; - outerBorder?: p.Flex<"div">; - outerBorder2?: p.Flex<"div">; - innerBorder?: p.Flex<"div">; + root?: Flex__<"div">; + outerBorder?: Flex__<"div">; + outerBorder2?: Flex__<"div">; + innerBorder?: Flex__<"div">; }; export interface DefaultBoundingBoxHighlighterProps { @@ -69,38 +70,49 @@ function PlasmicBoundingBoxHighlighter__RenderFunc(props: { }) { const { variants, overrides, forNode } = props; - const args = React.useMemo(() => Object.assign({}, props.args), [props.args]); + const args = React.useMemo( + () => + Object.assign( + {}, + Object.fromEntries( + Object.entries(props.args).filter(([_, v]) => v !== undefined) + ) + ), + [props.args] + ); const $props = { ...args, ...variants, }; - const $ctx = ph.useDataEnv?.() || {}; + const $ctx = useDataEnv?.() || {}; const refsRef = React.useRef({}); const $refs = refsRef.current; - const currentUser = p.useCurrentUser?.() || {}; - - const stateSpecs: Parameters[0] = React.useMemo( + const stateSpecs: Parameters[0] = React.useMemo( () => [ { path: "isRecording", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isRecording, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.isRecording, }, ], - [$props, $ctx, $refs] ); - const $state = p.useDollarState(stateSpecs, { + + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); + const styleTokensClassNames = _useStyleTokens(); + return (
) as React.ReactElement | null; @@ -165,23 +176,23 @@ type NodeOverridesType = Pick< PlasmicBoundingBoxHighlighter__OverridesType, DescendantsType >; - type NodeComponentProps = // Explicitly specify variants, args, and overrides as objects { variants?: PlasmicBoundingBoxHighlighter__VariantsArgs; args?: PlasmicBoundingBoxHighlighter__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props - /* Specify args directly as props*/ Omit< - PlasmicBoundingBoxHighlighter__ArgsType, - ReservedPropsType - > & - /* Specify overrides for each element directly as props*/ Omit< + } & // Specify variants directly as props + Omit & + // Specify args directly as props + Omit & + // Specify overrides for each element directly as props + Omit< NodeOverridesType, ReservedPropsType | VariantPropType | ArgPropType > & - /* Specify props for the root element*/ Omit< + // Specify props for the root element + Omit< Partial>, ReservedPropsType | VariantPropType | ArgPropType | DescendantsType >; @@ -195,7 +206,7 @@ function makeNodeComponent(nodeName: NodeName) { () => deriveRenderOpts(props, { name: nodeName, - descendantNames: [...PlasmicDescendants[nodeName]], + descendantNames: PlasmicDescendants[nodeName], internalArgPropNames: PlasmicBoundingBoxHighlighter__ArgProps, internalVariantPropNames: PlasmicBoundingBoxHighlighter__VariantProps, }), diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicContextMenuIndicator.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicContextMenuIndicator.module.css index bb3fa13655..14e22cadfd 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicContextMenuIndicator.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicContextMenuIndicator.module.css @@ -9,13 +9,15 @@ width: 100%; min-width: 0; } -.root:hover { +.root:hover:hover { display: flex; flex-direction: column; + column-gap: 0px; } -.root:focus-within { +.root:focus-within:focus-within { display: flex; flex-direction: column; + column-gap: 0px; outline: none; } .menuIndicator:global(.__wab_instance) { diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicContextMenuIndicator.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicContextMenuIndicator.tsx index fbda6b1f68..39c9b378b8 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicContextMenuIndicator.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicContextMenuIndicator.tsx @@ -1,6 +1,6 @@ -// @ts-nocheck /* eslint-disable */ /* tslint:disable */ +// @ts-nocheck /* prettier-ignore-start */ /** @jsxRuntime classic */ @@ -13,26 +13,28 @@ import * as React from "react"; -import * as p from "@plasmicapp/react-web"; -import * as ph from "@plasmicapp/react-web/lib/host"; - import { - SingleBooleanChoiceArg, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, + Flex as Flex__, hasVariant, + renderPlasmicSlot, + SingleBooleanChoiceArg, + StrictProps, + useDollarState, useTrigger, } from "@plasmicapp/react-web"; +import { useDataEnv } from "@plasmicapp/react-web/lib/host"; + import BoundingBoxHighlighter from "../../components/ContextMenuIndicator/BoundingBoxHighlighter"; // plasmic-import: iKmOjRERju/component import ContextMenuIndicatorInner from "../../components/ContextMenuIndicator/ContextMenuIndicatorInner"; // plasmic-import: juosawBbMz/component import MenuIndicator from "../../components/ContextMenuIndicator/MenuIndicator"; // plasmic-import: 5RLoIE7-j5/component +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: fuzE93KTc4ZKNBYf3LAfy/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "./plasmic_plasmic_kit_context_menu_indicator.module.css"; // plasmic-import: fuzE93KTc4ZKNBYf3LAfy/projectcss +import "./plasmic_plasmic_kit_context_menu_indicator.css"; // plasmic-import: fuzE93KTc4ZKNBYf3LAfy/projectcss import sty from "./PlasmicContextMenuIndicator.module.css"; // plasmic-import: AITkGvBysG/css createPlasmicElementProxy; @@ -62,12 +64,12 @@ export const PlasmicContextMenuIndicator__ArgProps = new Array( ); export type PlasmicContextMenuIndicator__OverridesType = { - root?: p.Flex<"div">; - menuIndicator?: p.Flex; - boundingBoxHighlighter?: p.Flex; - contextMenuIndicatorInner?: p.Flex; - invisibleHoverTarget?: p.Flex<"div">; - contextMenuContainer?: p.Flex<"div">; + root?: Flex__<"div">; + menuIndicator?: Flex__; + boundingBoxHighlighter?: Flex__; + contextMenuIndicatorInner?: Flex__; + invisibleHoverTarget?: Flex__<"div">; + contextMenuContainer?: Flex__<"div">; }; export interface DefaultContextMenuIndicatorProps { @@ -89,47 +91,56 @@ function PlasmicContextMenuIndicator__RenderFunc(props: { }) { const { variants, overrides, forNode } = props; - const args = React.useMemo(() => Object.assign({}, props.args), [props.args]); + const args = React.useMemo( + () => + Object.assign( + {}, + Object.fromEntries( + Object.entries(props.args).filter(([_, v]) => v !== undefined) + ) + ), + [props.args] + ); const $props = { ...args, ...variants, }; - const $ctx = ph.useDataEnv?.() || {}; + const $ctx = useDataEnv?.() || {}; const refsRef = React.useRef({}); const $refs = refsRef.current; - const currentUser = p.useCurrentUser?.() || {}; - - const stateSpecs: Parameters[0] = React.useMemo( + const stateSpecs: Parameters[0] = React.useMemo( () => [ { path: "isActive", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isActive, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.isActive, }, { path: "isRecording", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isRecording, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.isRecording, }, { path: "fullWidth", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.fullWidth, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.fullWidth, }, ], - [$props, $ctx, $refs] ); - const $state = p.useDollarState(stateSpecs, { + + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -143,6 +154,8 @@ function PlasmicContextMenuIndicator__RenderFunc(props: { focusWithin_root: isRootFocusWithin, }; + const styleTokensClassNames = _useStyleTokens(); + return (
- {p.renderPlasmicSlot({ + {renderPlasmicSlot({ defaultContents: ( -
+
{"Test text"}
), - value: args.children, })} - {p.renderPlasmicSlot({ + {renderPlasmicSlot({ defaultContents: null, value: args.contextMenu, })} @@ -255,7 +260,6 @@ const PlasmicDescendants = { "invisibleHoverTarget", "contextMenuContainer", ], - menuIndicator: ["menuIndicator"], boundingBoxHighlighter: ["boundingBoxHighlighter"], contextMenuIndicatorInner: ["contextMenuIndicatorInner"], @@ -279,23 +283,23 @@ type NodeOverridesType = Pick< PlasmicContextMenuIndicator__OverridesType, DescendantsType >; - type NodeComponentProps = // Explicitly specify variants, args, and overrides as objects { variants?: PlasmicContextMenuIndicator__VariantsArgs; args?: PlasmicContextMenuIndicator__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props - /* Specify args directly as props*/ Omit< - PlasmicContextMenuIndicator__ArgsType, - ReservedPropsType - > & - /* Specify overrides for each element directly as props*/ Omit< + } & // Specify variants directly as props + Omit & + // Specify args directly as props + Omit & + // Specify overrides for each element directly as props + Omit< NodeOverridesType, ReservedPropsType | VariantPropType | ArgPropType > & - /* Specify props for the root element*/ Omit< + // Specify props for the root element + Omit< Partial>, ReservedPropsType | VariantPropType | ArgPropType | DescendantsType >; @@ -309,7 +313,7 @@ function makeNodeComponent(nodeName: NodeName) { () => deriveRenderOpts(props, { name: nodeName, - descendantNames: [...PlasmicDescendants[nodeName]], + descendantNames: PlasmicDescendants[nodeName], internalArgPropNames: PlasmicContextMenuIndicator__ArgProps, internalVariantPropNames: PlasmicContextMenuIndicator__VariantProps, }), diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicContextMenuIndicatorInner.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicContextMenuIndicatorInner.module.css index 041035785f..e69632c5a2 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicContextMenuIndicatorInner.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicContextMenuIndicatorInner.module.css @@ -10,7 +10,7 @@ left: 100%; top: auto; transform-origin: 50% 50%; - transform: translateX(0%) translateY(25%) translateZ(0px); + transform: translate3d(0%, 25%, 0px); right: auto; opacity: 0; transition-property: all; @@ -21,15 +21,15 @@ } .menuIndicatorinteractive:global(.__wab_instance) { opacity: 0.3; - transform: translateX(0%) translateY(0%) translateZ(0px); + transform: translate3d(0%, 0%, 0px); } .menuIndicatoractive:global(.__wab_instance) { opacity: 1; - transform: translateX(0%) translateY(0%) translateZ(0px); + transform: translate3d(0%, 0%, 0px); } .root:hover .menuIndicator:global(.__wab_instance) { opacity: 1; - transform: translateX(0%) translateY(0%) translateZ(0px); + transform: translate3d(0%, 0%, 0px); } .freeBox { display: block; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicContextMenuIndicatorInner.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicContextMenuIndicatorInner.tsx index 7b0cef3049..5a585b092c 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicContextMenuIndicatorInner.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicContextMenuIndicatorInner.tsx @@ -1,6 +1,6 @@ -// @ts-nocheck /* eslint-disable */ /* tslint:disable */ +// @ts-nocheck /* prettier-ignore-start */ /** @jsxRuntime classic */ @@ -13,24 +13,25 @@ import * as React from "react"; -import * as p from "@plasmicapp/react-web"; -import * as ph from "@plasmicapp/react-web/lib/host"; - import { - SingleBooleanChoiceArg, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, + Flex as Flex__, hasVariant, + SingleBooleanChoiceArg, + StrictProps, + useDollarState, } from "@plasmicapp/react-web"; +import { useDataEnv } from "@plasmicapp/react-web/lib/host"; + import BoundingBoxHighlighter from "../../components/ContextMenuIndicator/BoundingBoxHighlighter"; // plasmic-import: iKmOjRERju/component import MenuIndicator from "../../components/ContextMenuIndicator/MenuIndicator"; // plasmic-import: 5RLoIE7-j5/component +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: fuzE93KTc4ZKNBYf3LAfy/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "./plasmic_plasmic_kit_context_menu_indicator.module.css"; // plasmic-import: fuzE93KTc4ZKNBYf3LAfy/projectcss +import "./plasmic_plasmic_kit_context_menu_indicator.css"; // plasmic-import: fuzE93KTc4ZKNBYf3LAfy/projectcss import sty from "./PlasmicContextMenuIndicatorInner.module.css"; // plasmic-import: juosawBbMz/css createPlasmicElementProxy; @@ -55,10 +56,10 @@ export const PlasmicContextMenuIndicatorInner__ArgProps = new Array(); export type PlasmicContextMenuIndicatorInner__OverridesType = { - root?: p.Flex<"div">; - menuIndicator?: p.Flex; - freeBox?: p.Flex<"div">; - boundingBoxHighlighter?: p.Flex; + root?: Flex__<"div">; + menuIndicator?: Flex__; + freeBox?: Flex__<"div">; + boundingBoxHighlighter?: Flex__; }; export interface DefaultContextMenuIndicatorInnerProps { @@ -78,50 +79,62 @@ function PlasmicContextMenuIndicatorInner__RenderFunc(props: { }) { const { variants, overrides, forNode } = props; - const args = React.useMemo(() => Object.assign({}, props.args), [props.args]); + const args = React.useMemo( + () => + Object.assign( + {}, + Object.fromEntries( + Object.entries(props.args).filter(([_, v]) => v !== undefined) + ) + ), + [props.args] + ); const $props = { ...args, ...variants, }; - const $ctx = ph.useDataEnv?.() || {}; + const $ctx = useDataEnv?.() || {}; const refsRef = React.useRef({}); const $refs = refsRef.current; - const currentUser = p.useCurrentUser?.() || {}; - - const stateSpecs: Parameters[0] = React.useMemo( + const stateSpecs: Parameters[0] = React.useMemo( () => [ { path: "interactive", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.interactive, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.interactive, }, { path: "active", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.active, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.active, }, { path: "isRecording", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isRecording, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.isRecording, }, ], - [$props, $ctx, $refs] ); - const $state = p.useDollarState(stateSpecs, { + + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); + const styleTokensClassNames = _useStyleTokens(); + return (
= Pick< PlasmicContextMenuIndicatorInner__OverridesType, DescendantsType >; - type NodeComponentProps = // Explicitly specify variants, args, and overrides as objects { variants?: PlasmicContextMenuIndicatorInner__VariantsArgs; args?: PlasmicContextMenuIndicatorInner__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props - /* Specify args directly as props*/ Omit< - PlasmicContextMenuIndicatorInner__ArgsType, - ReservedPropsType - > & - /* Specify overrides for each element directly as props*/ Omit< + } & // Specify variants directly as props + Omit & + // Specify args directly as props + Omit & + // Specify overrides for each element directly as props + Omit< NodeOverridesType, ReservedPropsType | VariantPropType | ArgPropType > & - /* Specify props for the root element*/ Omit< + // Specify props for the root element + Omit< Partial>, ReservedPropsType | VariantPropType | ArgPropType | DescendantsType >; @@ -260,7 +272,7 @@ function makeNodeComponent(nodeName: NodeName) { () => deriveRenderOpts(props, { name: nodeName, - descendantNames: [...PlasmicDescendants[nodeName]], + descendantNames: PlasmicDescendants[nodeName], internalArgPropNames: PlasmicContextMenuIndicatorInner__ArgProps, internalVariantPropNames: PlasmicContextMenuIndicatorInner__VariantProps, diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicGlobalVariant__Screen.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicGlobalVariant__Screen.tsx index 641af9293d..55346836d9 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicGlobalVariant__Screen.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicGlobalVariant__Screen.tsx @@ -1,29 +1,26 @@ -// @ts-nocheck /* eslint-disable */ /* tslint:disable */ +// @ts-nocheck /* prettier-ignore-start */ +import { createUseScreenVariants } from "@plasmicapp/react-web"; import * as React from "react"; -import * as p from "@plasmicapp/react-web"; export type ScreenValue = "mobileOnly"; export const ScreenContext = React.createContext( "PLEASE_RENDER_INSIDE_PROVIDER" as any ); - -/** - * @deprecated Plasmic now uses a custom hook for Screen variants, which is - * automatically included in your components. Please remove this provider - * from your code. - */ -export function ScreenVariantProvider(props: React.PropsWithChildren) { - console.warn( - "DEPRECATED: Plasmic now uses a custom hook for Screen variants, which is automatically included in your components. Please remove this provider from your code." +export function ScreenContextProvider( + props: React.PropsWithChildren<{ value: ScreenValue[] | undefined }> +) { + return ( + + {props.children} + ); - return props.children; } -export const useScreenVariants = p.createUseScreenVariants(true, { +export const useScreenVariants = createUseScreenVariants(true, { mobileOnly: "(min-width:0px) and (max-width:768px)", }); diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicMenuIndicator.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicMenuIndicator.module.css index 28584ff752..2f8428ca6c 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicMenuIndicator.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicMenuIndicator.module.css @@ -20,7 +20,7 @@ .dropSmoothCorners { box-shadow: none; background: var(--token-clhN-3CruXgh); - transform: rotateX(0deg) rotateY(0deg) rotateZ(90deg); + transform: rotate3d(0, 0, 1, 90deg); width: 18px; height: 18px; display: flex; @@ -44,6 +44,6 @@ display: block; left: auto; top: auto; - transform: rotateX(0deg) rotateY(0deg) rotateZ(90deg); + transform: rotate3d(0, 0, 1, 90deg); flex-shrink: 0; } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicMenuIndicator.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicMenuIndicator.tsx index c83488002a..17d547bd64 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicMenuIndicator.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicMenuIndicator.tsx @@ -1,6 +1,6 @@ -// @ts-nocheck /* eslint-disable */ /* tslint:disable */ +// @ts-nocheck /* prettier-ignore-start */ /** @jsxRuntime classic */ @@ -13,25 +13,26 @@ import * as React from "react"; -import * as p from "@plasmicapp/react-web"; -import * as ph from "@plasmicapp/react-web/lib/host"; - import { - SingleBooleanChoiceArg, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, + Flex as Flex__, hasVariant, + SingleBooleanChoiceArg, + StrictProps, + useDollarState, } from "@plasmicapp/react-web"; +import { useDataEnv } from "@plasmicapp/react-web/lib/host"; + +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: fuzE93KTc4ZKNBYf3LAfy/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "./plasmic_plasmic_kit_context_menu_indicator.module.css"; // plasmic-import: fuzE93KTc4ZKNBYf3LAfy/projectcss +import "./plasmic_plasmic_kit_context_menu_indicator.css"; // plasmic-import: fuzE93KTc4ZKNBYf3LAfy/projectcss import sty from "./PlasmicMenuIndicator.module.css"; // plasmic-import: 5RLoIE7-j5/css -import DownloadsvgIcon from "./icons/PlasmicIcon__Downloadsvg"; // plasmic-import: s7v30LEVvl/icon +import DownloadSvgIcon from "./icons/PlasmicIcon__DownloadSvg"; // plasmic-import: s7v30LEVvl/icon createPlasmicElementProxy; @@ -54,9 +55,9 @@ type ArgPropType = keyof PlasmicMenuIndicator__ArgsType; export const PlasmicMenuIndicator__ArgProps = new Array(); export type PlasmicMenuIndicator__OverridesType = { - root?: p.Flex<"button">; - dropSmoothCorners?: p.Flex<"div">; - svg?: p.Flex<"svg">; + root?: Flex__<"button">; + dropSmoothCorners?: Flex__<"div">; + svg?: Flex__<"svg">; }; export interface DefaultMenuIndicatorProps { @@ -75,44 +76,56 @@ function PlasmicMenuIndicator__RenderFunc(props: { }) { const { variants, overrides, forNode } = props; - const args = React.useMemo(() => Object.assign({}, props.args), [props.args]); + const args = React.useMemo( + () => + Object.assign( + {}, + Object.fromEntries( + Object.entries(props.args).filter(([_, v]) => v !== undefined) + ) + ), + [props.args] + ); const $props = { ...args, ...variants, }; - const $ctx = ph.useDataEnv?.() || {}; + const $ctx = useDataEnv?.() || {}; const refsRef = React.useRef({}); const $refs = refsRef.current; - const currentUser = p.useCurrentUser?.() || {}; - - const stateSpecs: Parameters[0] = React.useMemo( + const stateSpecs: Parameters[0] = React.useMemo( () => [ { path: "interactive", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.interactive, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.interactive, }, { path: "isRecording", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isRecording, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.isRecording, }, ], - [$props, $ctx, $refs] ); - const $state = p.useDollarState(stateSpecs, { + + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); + const styleTokensClassNames = _useStyleTokens(); + return (
@@ -184,23 +197,23 @@ type NodeOverridesType = Pick< PlasmicMenuIndicator__OverridesType, DescendantsType >; - type NodeComponentProps = // Explicitly specify variants, args, and overrides as objects { variants?: PlasmicMenuIndicator__VariantsArgs; args?: PlasmicMenuIndicator__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props - /* Specify args directly as props*/ Omit< - PlasmicMenuIndicator__ArgsType, - ReservedPropsType - > & - /* Specify overrides for each element directly as props*/ Omit< + } & // Specify variants directly as props + Omit & + // Specify args directly as props + Omit & + // Specify overrides for each element directly as props + Omit< NodeOverridesType, ReservedPropsType | VariantPropType | ArgPropType > & - /* Specify props for the root element*/ Omit< + // Specify props for the root element + Omit< Partial>, ReservedPropsType | VariantPropType | ArgPropType | DescendantsType >; @@ -214,7 +227,7 @@ function makeNodeComponent(nodeName: NodeName) { () => deriveRenderOpts(props, { name: nodeName, - descendantNames: [...PlasmicDescendants[nodeName]], + descendantNames: PlasmicDescendants[nodeName], internalArgPropNames: PlasmicMenuIndicator__ArgProps, internalVariantPropNames: PlasmicMenuIndicator__VariantProps, }), diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicStyleTokensProvider.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicStyleTokensProvider.tsx new file mode 100644 index 0000000000..63f42ba40f --- /dev/null +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/PlasmicStyleTokensProvider.tsx @@ -0,0 +1,20 @@ +/* eslint-disable */ +/* tslint:disable */ +// @ts-nocheck + +// This code is auto-generated by Plasmic; please do not edit! +// Plasmic Project: fuzE93KTc4ZKNBYf3LAfy + +import { createUseStyleTokens } from "@plasmicapp/react-web"; + +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: fuzE93KTc4ZKNBYf3LAfy/projectModule + +import "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss +import "./plasmic_plasmic_kit_context_menu_indicator.css"; // plasmic-import: fuzE93KTc4ZKNBYf3LAfy/projectcss + +const data = { + base: `${"plasmic_tokens_fuzE93KTc4ZKNBYf3LAfy"} ${"plasmic_tokens_95xp9cYcv7HrNWpFWWhbcv"}`, + varianted: [], +}; + +export const _useStyleTokens = createUseStyleTokens(data, _useGlobalVariants); diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/icons/PlasmicIcon__Downloadsvg.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/icons/PlasmicIcon__DownloadSvg.tsx similarity index 85% rename from platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/icons/PlasmicIcon__Downloadsvg.tsx rename to platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/icons/PlasmicIcon__DownloadSvg.tsx index 5fe93e15b0..318c016f8f 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/icons/PlasmicIcon__Downloadsvg.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/icons/PlasmicIcon__DownloadSvg.tsx @@ -1,15 +1,15 @@ -// @ts-nocheck /* eslint-disable */ /* tslint:disable */ +// @ts-nocheck /* prettier-ignore-start */ -import React from "react"; import { classNames } from "@plasmicapp/react-web"; +import React from "react"; -export type DownloadsvgIconProps = React.ComponentProps<"svg"> & { +export type DownloadSvgIconProps = React.ComponentProps<"svg"> & { title?: string; }; -export function DownloadsvgIcon(props: DownloadsvgIconProps) { +export function DownloadSvgIcon(props: DownloadSvgIconProps) { const { className, style, title, ...restProps } = props; return ( & { title?: string; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/plasmic.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/plasmic.tsx new file mode 100644 index 0000000000..364c7ac2db --- /dev/null +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/plasmic.tsx @@ -0,0 +1,14 @@ +/* eslint-disable */ +/* tslint:disable */ +// @ts-nocheck + +// This code is auto-generated by Plasmic; please do not edit! +// Plasmic Project: fuzE93KTc4ZKNBYf3LAfy + +import { createUseGlobalVariants } from "@plasmicapp/react-web"; + +import { useScreenVariants as useScreenVariantsiyzVSfo1WhzCb } from "./PlasmicGlobalVariant__Screen"; // plasmic-import: IyzVSfo1whzCb/globalVariant + +export const _useGlobalVariants = createUseGlobalVariants({ + screen: useScreenVariantsiyzVSfo1WhzCb, +}); diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_variants/plasmic_plasmic_kit_variants.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/plasmic_plasmic_kit_context_menu_indicator.css similarity index 56% rename from platform/wab/src/wab/client/plasmic/plasmic_kit_variants/plasmic_plasmic_kit_variants.module.css rename to platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/plasmic_plasmic_kit_context_menu_indicator.css index 02b81f9538..bb064352fb 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_variants/plasmic_plasmic_kit_variants.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/plasmic_plasmic_kit_context_menu_indicator.css @@ -1,3 +1,5 @@ +@import "../q_4_text_mixins_product/plasmic_q_4_text_mixins_product.css"; /* plasmic-import: sDniSX4oPUZFyk2sXXb3nh/projectcss */ +@import "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; /* plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss */ @import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500&display=swap"); .plasmic_default_styles { @@ -418,7 +420,7 @@ .__wab_expr_html_text { white-space: normal; } -:where(.root_reset) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) { font-family: var(--mixin-qP3g6Hd5AdC_font-family); font-size: var(--mixin-qP3g6Hd5AdC_font-size); color: var(--mixin-qP3g6Hd5AdC_color); @@ -426,198 +428,204 @@ white-space: var(--mixin-qP3g6Hd5AdC_white-space); } -:where(.root_reset) a:where(.a), -a:where(.root_reset.a), -:where(.root_reset .__wab_expr_html_text) a, -:where(.root_reset_tags) a, -a:where(.root_reset_tags) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) a:where(.a__fuzE9), +a:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.a__fuzE9), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) a, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) a, +a:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) { color: var(--mixin-2zEfljePq9P_color); } -:where(.root_reset) a:where(.a):hover, -a:where(.root_reset.a):hover, -:where(.root_reset .__wab_expr_html_text) a:hover, -:where(.root_reset_tags) a:hover, -a:where(.root_reset_tags):hover { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) a:where(.a__fuzE9):hover, +a:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.a__fuzE9):hover, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) a:hover, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) a:hover, +a:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags):hover { } -:where(.root_reset) h1:where(.h1), -h1:where(.root_reset.h1), -:where(.root_reset .__wab_expr_html_text) h1, -:where(.root_reset_tags) h1, -h1:where(.root_reset_tags) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) h1:where(.h1__fuzE9), +h1:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.h1__fuzE9), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) h1, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) h1, +h1:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) { font-family: var(--mixin-YQD_Uc8Md__font-family); font-size: var(--mixin-YQD_Uc8Md__font-size); font-weight: var(--mixin-YQD_Uc8Md__font-weight); } -:where(.root_reset) h2:where(.h2), -h2:where(.root_reset.h2), -:where(.root_reset .__wab_expr_html_text) h2, -:where(.root_reset_tags) h2, -h2:where(.root_reset_tags) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) h2:where(.h2__fuzE9), +h2:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.h2__fuzE9), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) h2, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) h2, +h2:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) { font-family: var(--mixin-vEOXQLfcbC_font-family); font-size: var(--mixin-vEOXQLfcbC_font-size); font-weight: var(--mixin-vEOXQLfcbC_font-weight); } -:where(.root_reset) h3:where(.h3), -h3:where(.root_reset.h3), -:where(.root_reset .__wab_expr_html_text) h3, -:where(.root_reset_tags) h3, -h3:where(.root_reset_tags) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) h3:where(.h3__fuzE9), +h3:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.h3__fuzE9), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) h3, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) h3, +h3:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) { font-family: var(--mixin-EXCWDILscU_font-family); font-size: var(--mixin-EXCWDILscU_font-size); font-weight: var(--mixin-EXCWDILscU_font-weight); } -:where(.root_reset) h4:where(.h4), -h4:where(.root_reset.h4), -:where(.root_reset .__wab_expr_html_text) h4, -:where(.root_reset_tags) h4, -h4:where(.root_reset_tags) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) h4:where(.h4__fuzE9), +h4:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.h4__fuzE9), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) h4, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) h4, +h4:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) { font-family: var(--mixin-N7cG0Ri48QP_font-family); font-size: var(--mixin-N7cG0Ri48QP_font-size); font-weight: var(--mixin-N7cG0Ri48QP_font-weight); } -:where(.root_reset) h5:where(.h5), -h5:where(.root_reset.h5), -:where(.root_reset .__wab_expr_html_text) h5, -:where(.root_reset_tags) h5, -h5:where(.root_reset_tags) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) h5:where(.h5__fuzE9), +h5:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.h5__fuzE9), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) h5, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) h5, +h5:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) { font-family: var(--mixin-__gfw12lSVA_font-family); font-size: var(--mixin-__gfw12lSVA_font-size); font-weight: var(--mixin-__gfw12lSVA_font-weight); } -:where(.root_reset) h6:where(.h6), -h6:where(.root_reset.h6), -:where(.root_reset .__wab_expr_html_text) h6, -:where(.root_reset_tags) h6, -h6:where(.root_reset_tags) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) h6:where(.h6__fuzE9), +h6:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.h6__fuzE9), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) h6, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) h6, +h6:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) { font-family: var(--mixin-eoQXVRNaCyL_font-family); font-size: var(--mixin-eoQXVRNaCyL_font-size); font-weight: var(--mixin-eoQXVRNaCyL_font-weight); } -:where(.root_reset) blockquote:where(.blockquote), -blockquote:where(.root_reset.blockquote), -:where(.root_reset .__wab_expr_html_text) blockquote, -:where(.root_reset_tags) blockquote, -blockquote:where(.root_reset_tags) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) blockquote:where(.blockquote__fuzE9), +blockquote:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.blockquote__fuzE9), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) blockquote, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) blockquote, +blockquote:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) { } -:where(.root_reset) code:where(.code), -code:where(.root_reset.code), -:where(.root_reset .__wab_expr_html_text) code, -:where(.root_reset_tags) code, -code:where(.root_reset_tags) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) code:where(.code__fuzE9), +code:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.code__fuzE9), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) code, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) code, +code:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) { } -:where(.root_reset) pre:where(.pre), -pre:where(.root_reset.pre), -:where(.root_reset .__wab_expr_html_text) pre, -:where(.root_reset_tags) pre, -pre:where(.root_reset_tags) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) pre:where(.pre__fuzE9), +pre:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.pre__fuzE9), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) pre, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) pre, +pre:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) { } -:where(.root_reset) ol:where(.ol), -ol:where(.root_reset.ol), -:where(.root_reset .__wab_expr_html_text) ol, -:where(.root_reset_tags) ol, -ol:where(.root_reset_tags) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) ol:where(.ol__fuzE9), +ol:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.ol__fuzE9), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) ol, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) ol, +ol:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) { position: var(--mixin-EuhGUWboGh2_position); } -:where(.root_reset) ul:where(.ul), -ul:where(.root_reset.ul), -:where(.root_reset .__wab_expr_html_text) ul, -:where(.root_reset_tags) ul, -ul:where(.root_reset_tags) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) ul:where(.ul__fuzE9), +ul:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.ul__fuzE9), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) ul, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) ul, +ul:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) { position: var(--mixin-_MYD1z_SMDp_position); } -:where(.root_reset) a:where(.a):not(:hover), -a:where(.root_reset.a):not(:hover), -:where(.root_reset .__wab_expr_html_text) a:not(:hover), -:where(.root_reset_tags) a:not(:hover), -a:where(.root_reset_tags):not(:hover) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) a:where(.a__fuzE9):not(:hover), +a:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.a__fuzE9):not(:hover), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) a:not(:hover), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) a:not(:hover), +a:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags):not(:hover) { } -:where(.root_reset) a:where(.a):active, -a:where(.root_reset.a):active, -:where(.root_reset .__wab_expr_html_text) a:active, -:where(.root_reset_tags) a:active, -a:where(.root_reset_tags):active { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) a:where(.a__fuzE9):active, +a:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.a__fuzE9):active, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) a:active, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) a:active, +a:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags):active { } -:where(.root_reset) a:where(.a):not(:active), -a:where(.root_reset.a):not(:active), -:where(.root_reset .__wab_expr_html_text) a:not(:active), -:where(.root_reset_tags) a:not(:active), -a:where(.root_reset_tags):not(:active) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) a:where(.a__fuzE9):not(:active), +a:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.a__fuzE9):not(:active), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) a:not(:active), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) a:not(:active), +a:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags):not(:active) { } -:where(.root_reset) a:where(.a):focus, -a:where(.root_reset.a):focus, -:where(.root_reset .__wab_expr_html_text) a:focus, -:where(.root_reset_tags) a:focus, -a:where(.root_reset_tags):focus { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) a:where(.a__fuzE9):focus, +a:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.a__fuzE9):focus, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) a:focus, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) a:focus, +a:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags):focus { } -:where(.root_reset) a:where(.a):not(:link), -a:where(.root_reset.a):not(:link), -:where(.root_reset .__wab_expr_html_text) a:not(:link), -:where(.root_reset_tags) a:not(:link), -a:where(.root_reset_tags):not(:link) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) a:where(.a__fuzE9):not(:link), +a:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.a__fuzE9):not(:link), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) a:not(:link), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) a:not(:link), +a:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags):not(:link) { } -:where(.root_reset) blockquote:where(.blockquote):not(:link), -blockquote:where(.root_reset.blockquote):not(:link), -:where(.root_reset .__wab_expr_html_text) blockquote:not(:link), -:where(.root_reset_tags) blockquote:not(:link), -blockquote:where(.root_reset_tags):not(:link) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) + blockquote:where(.blockquote__fuzE9):not(:link), +blockquote:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.blockquote__fuzE9):not( + :link + ), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) + blockquote:not(:link), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) blockquote:not(:link), +blockquote:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags):not(:link) { } -:where(.root_reset) blockquote:where(.blockquote):hover, -blockquote:where(.root_reset.blockquote):hover, -:where(.root_reset .__wab_expr_html_text) blockquote:hover, -:where(.root_reset_tags) blockquote:hover, -blockquote:where(.root_reset_tags):hover { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) + blockquote:where(.blockquote__fuzE9):hover, +blockquote:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.blockquote__fuzE9):hover, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) + blockquote:hover, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) blockquote:hover, +blockquote:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags):hover { } -:where(.root_reset) code:where(.code):hover, -code:where(.root_reset.code):hover, -:where(.root_reset .__wab_expr_html_text) code:hover, -:where(.root_reset_tags) code:hover, -code:where(.root_reset_tags):hover { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) code:where(.code__fuzE9):hover, +code:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.code__fuzE9):hover, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) code:hover, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) code:hover, +code:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags):hover { } -:where(.root_reset) li:where(.li), -li:where(.root_reset.li), -:where(.root_reset .__wab_expr_html_text) li, -:where(.root_reset_tags) li, -li:where(.root_reset_tags) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) li:where(.li__fuzE9), +li:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.li__fuzE9), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) li, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) li, +li:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) { } -:where(.root_reset) p:where(.p), -p:where(.root_reset.p), -:where(.root_reset .__wab_expr_html_text) p, -:where(.root_reset_tags) p, -p:where(.root_reset_tags) { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) p:where(.p__fuzE9), +p:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.p__fuzE9), +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) p, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) p, +p:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) { } -:where(.root_reset) ul:where(.ul):hover, -ul:where(.root_reset.ul):hover, -:where(.root_reset .__wab_expr_html_text) ul:hover, -:where(.root_reset_tags) ul:hover, -ul:where(.root_reset_tags):hover { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) ul:where(.ul__fuzE9):hover, +ul:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.ul__fuzE9):hover, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) ul:hover, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) ul:hover, +ul:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags):hover { } -:where(.root_reset) li:where(.li):hover, -li:where(.root_reset.li):hover, -:where(.root_reset .__wab_expr_html_text) li:hover, -:where(.root_reset_tags) li:hover, -li:where(.root_reset_tags):hover { +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy) li:where(.li__fuzE9):hover, +li:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy.li__fuzE9):hover, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy .__wab_expr_html_text) li:hover, +:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags) li:hover, +li:where(.root_reset_fuzE93KTc4ZKNBYf3LAfy_tags):hover { } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/plasmic_plasmic_kit_context_menu_indicator.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/plasmic_plasmic_kit_context_menu_indicator.module.css deleted file mode 100644 index 79925df5e9..0000000000 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_context_menu_indicator/plasmic_plasmic_kit_context_menu_indicator.module.css +++ /dev/null @@ -1,568 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Inter%3Aital%2Cwght%400%2C400%3B0%2C500&display=swap"); - -.plasmic_default_styles { - --mixin-qP3g6Hd5AdC_text-decoration-line: none; - --mixin-qP3g6Hd5AdC_font-family: "Inter", sans-serif; - --mixin-qP3g6Hd5AdC_color: var(--token-0IloF6TmFvF); - --mixin-qP3g6Hd5AdC_font-size: 12px; - --mixin-qP3g6Hd5AdC_white-space: pre-wrap; - --mixin-qP3g6Hd5AdC_line-height: 1.5; - --mixin-2zEfljePq9P_color: var(--token-VUsIDivgUss); - --mixin-2zEfljePq9P_white-space: pre-wrap; - --mixin-EEKi5Tu2fbK_white-space: pre-wrap; - --mixin-YQD_Uc8Md__font-family: "Inter", sans-serif; - --mixin-YQD_Uc8Md__font-size: 72px; - --mixin-YQD_Uc8Md__font-weight: 500; - --mixin-YQD_Uc8Md__white-space: pre-wrap; - --mixin-vEOXQLfcbC_font-family: "Inter", sans-serif; - --mixin-vEOXQLfcbC_font-size: 48px; - --mixin-vEOXQLfcbC_font-weight: 500; - --mixin-vEOXQLfcbC_white-space: pre-wrap; - --mixin-EXCWDILscU_font-family: "Inter", sans-serif; - --mixin-EXCWDILscU_font-size: 32px; - --mixin-EXCWDILscU_font-weight: 500; - --mixin-EXCWDILscU_white-space: pre-wrap; - --mixin-N7cG0Ri48QP_font-family: "Inter", sans-serif; - --mixin-N7cG0Ri48QP_font-size: 24px; - --mixin-N7cG0Ri48QP_font-weight: 500; - --mixin-N7cG0Ri48QP_white-space: pre-wrap; - --mixin-__gfw12lSVA_font-family: "Inter", sans-serif; - --mixin-__gfw12lSVA_font-size: 20px; - --mixin-__gfw12lSVA_font-weight: 500; - --mixin-__gfw12lSVA_white-space: pre-wrap; - --mixin-eoQXVRNaCyL_font-family: "Inter", sans-serif; - --mixin-eoQXVRNaCyL_font-size: 16px; - --mixin-eoQXVRNaCyL_font-weight: 500; - --mixin-eoQXVRNaCyL_white-space: pre-wrap; - --mixin-fkU_lzw4PF5_white-space: pre-wrap; - --mixin-v9e0yiTlX_o_white-space: pre-wrap; - --mixin-MMatKfNT024_white-space: pre-wrap; - --mixin-EuhGUWboGh2_position: relative; - --mixin-EuhGUWboGh2_white-space: pre-wrap; - --mixin-_MYD1z_SMDp_position: relative; - --mixin-_MYD1z_SMDp_white-space: pre-wrap; - --mixin-Yot8xJYsc_white-space: pre-wrap; - --mixin-985HZFQW4_white-space: pre-wrap; - --mixin-3i6_2FI7G_white-space: pre-wrap; - --mixin-3HZrBcpB6_white-space: pre-wrap; - --mixin-n1REaG4FH_white-space: pre-wrap; - --mixin-Hk5zzHaLS_white-space: pre-wrap; - --mixin-B4DR1AgPG_white-space: pre-wrap; - --mixin-bhSle9dw7_white-space: pre-wrap; - --mixin-5d8gGYi39_white-space: pre-wrap; - --mixin-sxjZ0YFFF_white-space: pre-wrap; - --mixin-GZm4AQ_Ek_white-space: pre-wrap; - --mixin-qjB654aOL_white-space: pre-wrap; -} - -:where(.all) { - display: block; - white-space: inherit; - grid-row: auto; - grid-column: auto; - position: relative; - background: none; - background-size: 100% 100%; - background-repeat: no-repeat; - box-shadow: none; - box-sizing: border-box; - text-decoration-line: none; - margin: 0; - border-width: 0px; -} -:where(.__wab_expr_html_text *) { - white-space: inherit; - grid-row: auto; - grid-column: auto; - background: none; - background-size: 100% 100%; - background-repeat: no-repeat; - box-shadow: none; - box-sizing: border-box; - text-decoration-line: none; - margin: 0; - border-width: 0px; -} - -:where(.img) { - display: inline-block; -} -:where(.__wab_expr_html_text img) { - white-space: inherit; -} - -:where(.li) { - display: list-item; -} -:where(.__wab_expr_html_text li) { - white-space: inherit; -} - -:where(.span) { - display: inline; - position: static; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} -:where(.__wab_expr_html_text span) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} - -:where(.input) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: linear-gradient(#ffffff, #ffffff); - padding: 2px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text input) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: linear-gradient(#ffffff, #ffffff); - padding: 2px; - border: 1px solid lightgray; -} - -:where(.textarea) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - padding: 2px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text textarea) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - padding: 2px; - border: 1px solid lightgray; -} - -:where(.button) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: none; - align-items: flex-start; - text-align: center; - padding: 2px 6px; - border: 1px solid lightgray; -} -:where(.__wab_expr_html_text button) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; - background-image: none; - align-items: flex-start; - text-align: center; - padding: 2px 6px; - border: 1px solid lightgray; -} - -:where(.code) { - font-family: inherit; - line-height: inherit; -} -:where(.__wab_expr_html_text code) { - white-space: inherit; - font-family: inherit; - line-height: inherit; -} - -:where(.pre) { - font-family: inherit; - line-height: inherit; -} -:where(.__wab_expr_html_text pre) { - white-space: inherit; - font-family: inherit; - line-height: inherit; -} - -:where(.p) { - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} -:where(.__wab_expr_html_text p) { - white-space: inherit; - font-family: inherit; - line-height: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; - color: inherit; - text-transform: inherit; -} - -:where(.h1) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h1) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h2) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h2) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h3) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h3) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h4) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h4) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h5) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h5) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.h6) { - font-size: inherit; - font-weight: inherit; -} -:where(.__wab_expr_html_text h6) { - white-space: inherit; - font-size: inherit; - font-weight: inherit; -} - -:where(.address) { - font-style: inherit; -} -:where(.__wab_expr_html_text address) { - white-space: inherit; - font-style: inherit; -} - -:where(.a) { - color: inherit; -} -:where(.__wab_expr_html_text a) { - white-space: inherit; - color: inherit; -} - -:where(.ol) { - list-style-type: none; - padding: 0; -} -:where(.__wab_expr_html_text ol) { - white-space: inherit; - list-style-type: none; - padding: 0; -} - -:where(.ul) { - list-style-type: none; - padding: 0; -} -:where(.__wab_expr_html_text ul) { - white-space: inherit; - list-style-type: none; - padding: 0; -} - -:where(.select) { - padding: 2px 6px; -} -:where(.__wab_expr_html_text select) { - white-space: inherit; - padding: 2px 6px; -} - -.plasmic_default__component_wrapper { - display: grid; -} -.plasmic_default__inline { - display: inline; -} -.plasmic_page_wrapper { - display: flex; - width: 100%; - min-height: 100vh; - align-items: stretch; - align-self: start; -} -.plasmic_page_wrapper > * { - height: auto !important; -} -.__wab_expr_html_text { - white-space: normal; -} -:where(.root_reset) { - font-family: var(--mixin-qP3g6Hd5AdC_font-family); - font-size: var(--mixin-qP3g6Hd5AdC_font-size); - color: var(--mixin-qP3g6Hd5AdC_color); - line-height: var(--mixin-qP3g6Hd5AdC_line-height); - white-space: var(--mixin-qP3g6Hd5AdC_white-space); -} - -:where(.root_reset) a:where(.a), -a:where(.root_reset.a), -:where(.root_reset .__wab_expr_html_text) a, -:where(.root_reset_tags) a, -a:where(.root_reset_tags) { - color: var(--mixin-2zEfljePq9P_color); -} - -:where(.root_reset) a:where(.a):hover, -a:where(.root_reset.a):hover, -:where(.root_reset .__wab_expr_html_text) a:hover, -:where(.root_reset_tags) a:hover, -a:where(.root_reset_tags):hover { -} - -:where(.root_reset) h1:where(.h1), -h1:where(.root_reset.h1), -:where(.root_reset .__wab_expr_html_text) h1, -:where(.root_reset_tags) h1, -h1:where(.root_reset_tags) { - font-family: var(--mixin-YQD_Uc8Md__font-family); - font-size: var(--mixin-YQD_Uc8Md__font-size); - font-weight: var(--mixin-YQD_Uc8Md__font-weight); -} - -:where(.root_reset) h2:where(.h2), -h2:where(.root_reset.h2), -:where(.root_reset .__wab_expr_html_text) h2, -:where(.root_reset_tags) h2, -h2:where(.root_reset_tags) { - font-family: var(--mixin-vEOXQLfcbC_font-family); - font-size: var(--mixin-vEOXQLfcbC_font-size); - font-weight: var(--mixin-vEOXQLfcbC_font-weight); -} - -:where(.root_reset) h3:where(.h3), -h3:where(.root_reset.h3), -:where(.root_reset .__wab_expr_html_text) h3, -:where(.root_reset_tags) h3, -h3:where(.root_reset_tags) { - font-family: var(--mixin-EXCWDILscU_font-family); - font-size: var(--mixin-EXCWDILscU_font-size); - font-weight: var(--mixin-EXCWDILscU_font-weight); -} - -:where(.root_reset) h4:where(.h4), -h4:where(.root_reset.h4), -:where(.root_reset .__wab_expr_html_text) h4, -:where(.root_reset_tags) h4, -h4:where(.root_reset_tags) { - font-family: var(--mixin-N7cG0Ri48QP_font-family); - font-size: var(--mixin-N7cG0Ri48QP_font-size); - font-weight: var(--mixin-N7cG0Ri48QP_font-weight); -} - -:where(.root_reset) h5:where(.h5), -h5:where(.root_reset.h5), -:where(.root_reset .__wab_expr_html_text) h5, -:where(.root_reset_tags) h5, -h5:where(.root_reset_tags) { - font-family: var(--mixin-__gfw12lSVA_font-family); - font-size: var(--mixin-__gfw12lSVA_font-size); - font-weight: var(--mixin-__gfw12lSVA_font-weight); -} - -:where(.root_reset) h6:where(.h6), -h6:where(.root_reset.h6), -:where(.root_reset .__wab_expr_html_text) h6, -:where(.root_reset_tags) h6, -h6:where(.root_reset_tags) { - font-family: var(--mixin-eoQXVRNaCyL_font-family); - font-size: var(--mixin-eoQXVRNaCyL_font-size); - font-weight: var(--mixin-eoQXVRNaCyL_font-weight); -} - -:where(.root_reset) blockquote:where(.blockquote), -blockquote:where(.root_reset.blockquote), -:where(.root_reset .__wab_expr_html_text) blockquote, -:where(.root_reset_tags) blockquote, -blockquote:where(.root_reset_tags) { -} - -:where(.root_reset) code:where(.code), -code:where(.root_reset.code), -:where(.root_reset .__wab_expr_html_text) code, -:where(.root_reset_tags) code, -code:where(.root_reset_tags) { -} - -:where(.root_reset) pre:where(.pre), -pre:where(.root_reset.pre), -:where(.root_reset .__wab_expr_html_text) pre, -:where(.root_reset_tags) pre, -pre:where(.root_reset_tags) { -} - -:where(.root_reset) ol:where(.ol), -ol:where(.root_reset.ol), -:where(.root_reset .__wab_expr_html_text) ol, -:where(.root_reset_tags) ol, -ol:where(.root_reset_tags) { - position: var(--mixin-EuhGUWboGh2_position); -} - -:where(.root_reset) ul:where(.ul), -ul:where(.root_reset.ul), -:where(.root_reset .__wab_expr_html_text) ul, -:where(.root_reset_tags) ul, -ul:where(.root_reset_tags) { - position: var(--mixin-_MYD1z_SMDp_position); -} - -:where(.root_reset) a:where(.a):not(:hover), -a:where(.root_reset.a):not(:hover), -:where(.root_reset .__wab_expr_html_text) a:not(:hover), -:where(.root_reset_tags) a:not(:hover), -a:where(.root_reset_tags):not(:hover) { -} - -:where(.root_reset) a:where(.a):active, -a:where(.root_reset.a):active, -:where(.root_reset .__wab_expr_html_text) a:active, -:where(.root_reset_tags) a:active, -a:where(.root_reset_tags):active { -} - -:where(.root_reset) a:where(.a):not(:active), -a:where(.root_reset.a):not(:active), -:where(.root_reset .__wab_expr_html_text) a:not(:active), -:where(.root_reset_tags) a:not(:active), -a:where(.root_reset_tags):not(:active) { -} - -:where(.root_reset) a:where(.a):focus, -a:where(.root_reset.a):focus, -:where(.root_reset .__wab_expr_html_text) a:focus, -:where(.root_reset_tags) a:focus, -a:where(.root_reset_tags):focus { -} - -:where(.root_reset) a:where(.a):not(:link), -a:where(.root_reset.a):not(:link), -:where(.root_reset .__wab_expr_html_text) a:not(:link), -:where(.root_reset_tags) a:not(:link), -a:where(.root_reset_tags):not(:link) { -} - -:where(.root_reset) blockquote:where(.blockquote):not(:link), -blockquote:where(.root_reset.blockquote):not(:link), -:where(.root_reset .__wab_expr_html_text) blockquote:not(:link), -:where(.root_reset_tags) blockquote:not(:link), -blockquote:where(.root_reset_tags):not(:link) { -} - -:where(.root_reset) blockquote:where(.blockquote):hover, -blockquote:where(.root_reset.blockquote):hover, -:where(.root_reset .__wab_expr_html_text) blockquote:hover, -:where(.root_reset_tags) blockquote:hover, -blockquote:where(.root_reset_tags):hover { -} - -:where(.root_reset) code:where(.code):hover, -code:where(.root_reset.code):hover, -:where(.root_reset .__wab_expr_html_text) code:hover, -:where(.root_reset_tags) code:hover, -code:where(.root_reset_tags):hover { -} - -:where(.root_reset) li:where(.li), -li:where(.root_reset.li), -:where(.root_reset .__wab_expr_html_text) li, -:where(.root_reset_tags) li, -li:where(.root_reset_tags) { -} - -:where(.root_reset) p:where(.p), -p:where(.root_reset.p), -:where(.root_reset .__wab_expr_html_text) p, -:where(.root_reset_tags) p, -p:where(.root_reset_tags) { -} - -:where(.root_reset) ul:where(.ul):hover, -ul:where(.root_reset.ul):hover, -:where(.root_reset .__wab_expr_html_text) ul:hover, -:where(.root_reset_tags) ul:hover, -ul:where(.root_reset_tags):hover { -} - -:where(.root_reset) li:where(.li):hover, -li:where(.root_reset.li):hover, -:where(.root_reset .__wab_expr_html_text) li:hover, -:where(.root_reset_tags) li:hover, -li:where(.root_reset_tags):hover { -} diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicDomainCard.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicDomainCard.tsx index 96996ca0b8..add8e1bc5c 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicDomainCard.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicDomainCard.tsx @@ -33,7 +33,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../../components/modals/plasmic/plasmic_kit_project_settings/plasmic_plasmic_kit_project_settings.module.css"; // plasmic-import: fpbcKyXdMTvY59T4C5fjcC/projectcss +import "../../components/modals/plasmic/plasmic_kit_project_settings/plasmic_plasmic_kit_project_settings.css"; // plasmic-import: fpbcKyXdMTvY59T4C5fjcC/projectcss import sty from "./PlasmicDomainCard.module.css"; // plasmic-import: eqF_n5a1-6b/css import CheckCircleSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__CheckCircleSvg"; // plasmic-import: h7sB2KeL-/icon @@ -125,27 +125,29 @@ function PlasmicDomainCard__RenderFunc(props: { path: "refreshing", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.refreshing, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.refreshing, }, { path: "error", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.error, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.error, }, { path: "secondary", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.secondary, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.secondary, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -158,10 +160,10 @@ function PlasmicDomainCard__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_fpbcKyXdMTvY59T4C5fjcC", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { @@ -173,7 +175,7 @@ function PlasmicDomainCard__RenderFunc(props: { )} >
{"Custom domain"}
-
+
{"www.foobarfoobarfoobarfoobar.com"}
@@ -233,14 +227,14 @@ function PlasmicDomainCard__RenderFunc(props: { withBackgroundHover={true} >
{"Click here to request access"} @@ -334,7 +330,7 @@ function PlasmicDomainCard__RenderFunc(props: {
{"Correctly configured!"}
} size={"wide"} startIcon={ } size={"wide"} startIcon={ } type={["clear"]} withIcons={["startIcon"]} > -
+
{"Remove"}
{"Set the following records on your DNS provider to continue:"}
-
+
{"Type"}
-
+
{"Name"}
-
+
{"Value"}
{hasVariant($state, "error", "apex") ? "A" : "CNAME"}
{hasVariant($state, "error", "apex") ? "@" : "www"}
{hasVariant($state, "error", "apex") ? "76.76.21.21" @@ -710,75 +664,60 @@ function PlasmicDomainCard__RenderFunc(props: {
{hasVariant($state, "error", "apex") ? "A" : "APEX"}
{hasVariant($state, "error", "apex") ? "@" : "@"}
{hasVariant($state, "error", "apex") ? "76.76.21.21" diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicErrorFeedback.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicErrorFeedback.tsx index f72d81acea..3f5cdc6489 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicErrorFeedback.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicErrorFeedback.tsx @@ -30,7 +30,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../../components/modals/plasmic/plasmic_kit_project_settings/plasmic_plasmic_kit_project_settings.module.css"; // plasmic-import: fpbcKyXdMTvY59T4C5fjcC/projectcss +import "../../components/modals/plasmic/plasmic_kit_project_settings/plasmic_plasmic_kit_project_settings.css"; // plasmic-import: fpbcKyXdMTvY59T4C5fjcC/projectcss import sty from "./PlasmicErrorFeedback.module.css"; // plasmic-import: 6ztKJ9-EG9Y/css import WarningTriangleSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__WarningTriangleSvg"; // plasmic-import: S0L-xosWD/icon @@ -101,15 +101,17 @@ function PlasmicErrorFeedback__RenderFunc(props: { path: "warning", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.warning, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.warning, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -122,10 +124,10 @@ function PlasmicErrorFeedback__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_fpbcKyXdMTvY59T4C5fjcC", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { [sty.rootwarning]: hasVariant($state, "warning", "warning") } @@ -134,7 +136,7 @@ function PlasmicErrorFeedback__RenderFunc(props: { +
{"Requires repo to be public."}
), diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicGitJobStep.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicGitJobStep.tsx index 5089d8bc28..ff9500b6b0 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicGitJobStep.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicGitJobStep.tsx @@ -31,7 +31,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../../components/modals/plasmic/plasmic_kit_project_settings/plasmic_plasmic_kit_project_settings.module.css"; // plasmic-import: fpbcKyXdMTvY59T4C5fjcC/projectcss +import "../../components/modals/plasmic/plasmic_kit_project_settings/plasmic_plasmic_kit_project_settings.css"; // plasmic-import: fpbcKyXdMTvY59T4C5fjcC/projectcss import sty from "./PlasmicGitJobStep.module.css"; // plasmic-import: JzpEJAQTjPX/css import CheckSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__CheckSvg"; // plasmic-import: f0RrtBrXp/icon @@ -103,15 +103,17 @@ function PlasmicGitJobStep__RenderFunc(props: { path: "status", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.status, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.status, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -124,11 +126,12 @@ function PlasmicGitJobStep__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.li, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "li", + "li__fpbcK", + "root_reset_fpbcKyXdMTvY59T4C5fjcC", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { @@ -147,7 +150,7 @@ function PlasmicGitJobStep__RenderFunc(props: { ? WarningTriangleSvgIcon : ChevronRightSvgIcon } - className={classNames(projectcss.all, sty.svg, { + className={classNames("all", sty.svg, { [sty.svgstatus_failed]: hasVariant($state, "status", "failed"), [sty.svgstatus_finished]: hasVariant($state, "status", "finished"), [sty.svgstatus_started]: hasVariant($state, "status", "started"), @@ -159,7 +162,7 @@ function PlasmicGitJobStep__RenderFunc(props: {
{renderPlasmicSlot({ defaultContents: "Step description", diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicPlasmicHostingSettings.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicPlasmicHostingSettings.module.css index aaa7e06f7b..84f6aa3ef2 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicPlasmicHostingSettings.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicPlasmicHostingSettings.module.css @@ -66,6 +66,8 @@ align-items: center; justify-content: flex-start; padding-right: 0.5rem; + font-size: 11px; + line-height: 14px; width: 100%; cursor: text; min-width: 0; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicPlasmicHostingSettings.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicPlasmicHostingSettings.tsx index f89ea4727c..f85730d093 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicPlasmicHostingSettings.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicPlasmicHostingSettings.tsx @@ -39,7 +39,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../../components/modals/plasmic/plasmic_kit_project_settings/plasmic_plasmic_kit_project_settings.module.css"; // plasmic-import: fpbcKyXdMTvY59T4C5fjcC/projectcss +import "../../components/modals/plasmic/plasmic_kit_project_settings/plasmic_plasmic_kit_project_settings.css"; // plasmic-import: fpbcKyXdMTvY59T4C5fjcC/projectcss import sty from "./PlasmicPlasmicHostingSettings.module.css"; // plasmic-import: aFapl-YUjv9/css import ArrowRightSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__ArrowRightSvg"; // plasmic-import: 9Jv8jb253/icon @@ -143,27 +143,30 @@ function PlasmicPlasmicHostingSettings__RenderFunc(props: { path: "customDomain", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.customDomain, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.customDomain, }, { path: "subdomain", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.subdomain, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.subdomain, }, { path: "showBadge.isChecked", type: "private", variableType: "boolean", - initFunc: ({ $props, $state, $queries, $ctx }) => undefined, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => undefined, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -176,10 +179,10 @@ function PlasmicPlasmicHostingSettings__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_fpbcKyXdMTvY59T4C5fjcC", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { @@ -192,7 +195,7 @@ function PlasmicPlasmicHostingSettings__RenderFunc(props: { )} >
{"Subdomain"}
@@ -272,18 +270,13 @@ function PlasmicPlasmicHostingSettings__RenderFunc(props: {
{"foobar.plasmic.website"}
@@ -302,13 +295,13 @@ function PlasmicPlasmicHostingSettings__RenderFunc(props: { withBackgroundHover={true} > ) : null}
@@ -422,7 +416,7 @@ function PlasmicPlasmicHostingSettings__RenderFunc(props: {
) : null}
} size={"wide"} startIcon={ } @@ -506,7 +500,7 @@ function PlasmicPlasmicHostingSettings__RenderFunc(props: {
@@ -541,7 +535,9 @@ function PlasmicPlasmicHostingSettings__RenderFunc(props: { {"{yoursite.com} is already owned by another team. "} {"Click here to request access"} @@ -551,21 +547,21 @@ function PlasmicPlasmicHostingSettings__RenderFunc(props: {
) : null} -
+
{ "Just publish an app or site. Use a custom domain for free. No coding required." @@ -616,7 +578,7 @@ function PlasmicPublishFlowDialog__RenderFunc(props: {
{"Generate a new Next.js / Gatsby / React repo."}
@@ -652,7 +610,7 @@ function PlasmicPublishFlowDialog__RenderFunc(props: {
@@ -205,14 +187,14 @@ function PlasmicPublishWizard__RenderFunc(props: { className={classNames("__wab_instance", sty.connectButton)} endIcon={ } size={"wide"} startIcon={ } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicSpinner.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicSpinner.tsx index c2b831e290..28882a2c8c 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicSpinner.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicSpinner.tsx @@ -29,7 +29,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../../components/modals/plasmic/plasmic_kit_project_settings/plasmic_plasmic_kit_project_settings.module.css"; // plasmic-import: fpbcKyXdMTvY59T4C5fjcC/projectcss +import "../../components/modals/plasmic/plasmic_kit_project_settings/plasmic_plasmic_kit_project_settings.css"; // plasmic-import: fpbcKyXdMTvY59T4C5fjcC/projectcss import sty from "./PlasmicSpinner.module.css"; // plasmic-import: oo-lLDZ5qnA/css import Spinner1S200PxSvgIcon from "./icons/PlasmicIcon__Spinner1S200PxSvg"; // plasmic-import: mwpa_Gia6i/icon @@ -100,15 +100,18 @@ function PlasmicSpinner__RenderFunc(props: { path: "customDomain", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.customDomain, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.customDomain, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -121,10 +124,10 @@ function PlasmicSpinner__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_fpbcKyXdMTvY59T4C5fjcC", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicStyleTokensProvider.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicStyleTokensProvider.tsx index e8895eee72..63c0cf11e0 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicStyleTokensProvider.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicStyleTokensProvider.tsx @@ -9,13 +9,12 @@ import { createUseStyleTokens } from "@plasmicapp/react-web"; import { _useGlobalVariants } from "./plasmic"; // plasmic-import: fpbcKyXdMTvY59T4C5fjcC/projectModule -import projectcss from "../../components/modals/plasmic/plasmic_kit_project_settings/plasmic_plasmic_kit_project_settings.module.css"; // plasmic-import: fpbcKyXdMTvY59T4C5fjcC/projectcss - -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss +import "../../components/modals/plasmic/plasmic_kit_project_settings/plasmic_plasmic_kit_project_settings.css"; // plasmic-import: fpbcKyXdMTvY59T4C5fjcC/projectcss +import "../PP__plasmickit_design_system.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss const data = { - base: `${projectcss.plasmic_tokens} ${plasmic_plasmic_kit_design_system_css.plasmic_tokens} ${plasmic_plasmic_kit_color_tokens_css.plasmic_tokens}`, + base: `${"plasmic_tokens_fpbcKyXdMTvY59T4C5fjcC"} ${"plasmic_tokens_tXkSR39sgCDWSitZxC5xFV"} ${"plasmic_tokens_95xp9cYcv7HrNWpFWWhbcv"}`, varianted: [], }; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicSubsectionPlasmicHosting.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicSubsectionPlasmicHosting.tsx index ddc714237d..f53b683405 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicSubsectionPlasmicHosting.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicSubsectionPlasmicHosting.tsx @@ -40,7 +40,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../../components/modals/plasmic/plasmic_kit_project_settings/plasmic_plasmic_kit_project_settings.module.css"; // plasmic-import: fpbcKyXdMTvY59T4C5fjcC/projectcss +import "../../components/modals/plasmic/plasmic_kit_project_settings/plasmic_plasmic_kit_project_settings.css"; // plasmic-import: fpbcKyXdMTvY59T4C5fjcC/projectcss import sty from "./PlasmicSubsectionPlasmicHosting.module.css"; // plasmic-import: aeDQsBfp-eA/css import CloseIcon from "../plasmic_kit/PlasmicIcon__Close"; // plasmic-import: hy7vKrgdAZwW4/icon @@ -139,33 +139,35 @@ function PlasmicSubsectionPlasmicHosting__RenderFunc(props: { path: "collapse", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.collapse, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.collapse, }, { path: "view", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.view, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.view, }, { path: "checkbox.isChecked", type: "private", variableType: "boolean", - initFunc: ({ $props, $state, $queries, $ctx }) => undefined, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => undefined, }, { path: "pushAs.value", type: "private", variableType: "text", - initFunc: ({ $props, $state, $queries, $ctx }) => undefined, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => undefined, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -178,19 +180,19 @@ function PlasmicSubsectionPlasmicHosting__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_fpbcKyXdMTvY59T4C5fjcC", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { [sty.rootcollapse]: hasVariant($state, "collapse", "collapse") } )} > -
+
-
+
{"Publish to Plasmic Hosting"}
{false ? ( - + ) : null}
-
+
{false ? ( -
-
+
+
{"Push options"}
-
+
-
-
+
+
@@ -675,7 +640,7 @@ function PlasmicSubsectionPlasmicHosting__RenderFunc(props: { className={classNames("__wab_instance", sty.pushAs)} icon={ } @@ -702,16 +667,12 @@ function PlasmicSubsectionPlasmicHosting__RenderFunc(props: { ])} />
-
-
+
+
@@ -721,8 +682,9 @@ function PlasmicSubsectionPlasmicHosting__RenderFunc(props: { data-plasmic-name={"title"} data-plasmic-override={overrides.title} className={classNames( - projectcss.all, - projectcss.input, + "all", + "input", + "input__fpbcK", sty.title )} placeholder={"Title (optional)"} @@ -734,13 +696,11 @@ function PlasmicSubsectionPlasmicHosting__RenderFunc(props: { value={""} />
-
+
@@ -750,8 +710,9 @@ function PlasmicSubsectionPlasmicHosting__RenderFunc(props: { data-plasmic-name={"description"} data-plasmic-override={overrides.description} className={classNames( - projectcss.all, - projectcss.textarea, + "all", + "textarea", + "textarea__fpbcK", sty.description )} placeholder={"Description (optional)"} @@ -771,7 +732,7 @@ function PlasmicSubsectionPlasmicHosting__RenderFunc(props: { ) : null} {(hasVariant($state, "view", "status") ? true : false) ? (
-
+
{"Commit changes"}
@@ -844,8 +799,8 @@ function PlasmicSubsectionPlasmicHosting__RenderFunc(props: { data-plasmic-name={"githubPagesDelayNotice"} data-plasmic-override={overrides.githubPagesDelayNotice} className={classNames( - projectcss.all, - projectcss.__wab_text, + "all", + "__wab_text", sty.githubPagesDelayNotice )} > diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicSubsectionPushDeploy.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicSubsectionPushDeploy.tsx index 13698886c9..361684ba38 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicSubsectionPushDeploy.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_continuous_deployment/PlasmicSubsectionPushDeploy.tsx @@ -40,7 +40,7 @@ import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-impor import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../../components/modals/plasmic/plasmic_kit_project_settings/plasmic_plasmic_kit_project_settings.module.css"; // plasmic-import: fpbcKyXdMTvY59T4C5fjcC/projectcss +import "../../components/modals/plasmic/plasmic_kit_project_settings/plasmic_plasmic_kit_project_settings.css"; // plasmic-import: fpbcKyXdMTvY59T4C5fjcC/projectcss import sty from "./PlasmicSubsectionPushDeploy.module.css"; // plasmic-import: 0HHLsxeAqF8/css import CheckCircleIcon from "../plasmic_kit/PlasmicIcon__CheckCircle"; // plasmic-import: gU-8UYs9RllyJ/icon @@ -153,58 +153,60 @@ function PlasmicSubsectionPushDeploy__RenderFunc(props: { path: "collapse", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.collapse, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.collapse, }, { path: "view", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.view, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.view, }, { path: "connection", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.connection, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.connection, }, { path: "collapseOptions", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.collapseOptions, }, { path: "repoState", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.repoState, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.repoState, }, { path: "result", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.result, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.result, }, { path: "checkbox.isChecked", type: "private", variableType: "boolean", - initFunc: ({ $props, $state, $queries, $ctx }) => undefined, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => undefined, }, { path: "pushAs.value", type: "private", variableType: "text", - initFunc: ({ $props, $state, $queries, $ctx }) => undefined, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => undefined, }, ], [$props, $ctx, $refs] ); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -217,10 +219,10 @@ function PlasmicSubsectionPushDeploy__RenderFunc(props: { data-plasmic-root={true} data-plasmic-for-node={forNode} className={classNames( - projectcss.all, - projectcss.root_reset, - projectcss.plasmic_default_styles, - projectcss.plasmic_mixins, + "all", + "root_reset_fpbcKyXdMTvY59T4C5fjcC", + "plasmic_default_styles", + "plasmic_mixins", styleTokensClassNames, sty.root, { @@ -232,10 +234,10 @@ function PlasmicSubsectionPushDeploy__RenderFunc(props: { } )} > -
+
{"Push to GitHub"}
@@ -392,7 +389,7 @@ function PlasmicSubsectionPushDeploy__RenderFunc(props: { ? CheckCircleIcon : "div" } - className={classNames(projectcss.all, sty.svg___6DFCg, { + className={classNames("all", sty.svg___6DFCg, { [sty.svgview_status_result_failure___6DFCgWsXz9XcibJ]: hasVariant($state, "view", "status") && hasVariant($state, "result", "failure"), @@ -405,7 +402,7 @@ function PlasmicSubsectionPushDeploy__RenderFunc(props: { ) : null}
} size={"small"} startIcon={ } type={["clear"]} >
{hasVariant($state, "collapse", "collapse") ? "Show" : "Remove"}
@@ -476,7 +468,7 @@ function PlasmicSubsectionPushDeploy__RenderFunc(props: { ? OpenIcon : TriangleBottomIcon } - className={classNames(projectcss.all, sty.svg___1Omka, { + className={classNames("all", sty.svg___1Omka, { [sty.svgview_status___1OmkawsXz9]: hasVariant( $state, "view", @@ -492,7 +484,7 @@ function PlasmicSubsectionPushDeploy__RenderFunc(props: { size={hasVariant($state, "view", "status") ? "wide" : undefined} startIcon={ } @@ -501,21 +493,16 @@ function PlasmicSubsectionPushDeploy__RenderFunc(props: { } >
{hasVariant($state, "view", "status") ? "View on GitHub" @@ -533,7 +520,7 @@ function PlasmicSubsectionPushDeploy__RenderFunc(props: { : true ) ? (
{"Publish to a new or existing GitHub repo."}
@@ -575,9 +557,10 @@ function PlasmicSubsectionPushDeploy__RenderFunc(props: { data-plasmic-name={"learnMoreLink"} data-plasmic-override={overrides.learnMoreLink} className={classNames( - projectcss.all, - projectcss.a, - projectcss.__wab_text, + "all", + "a", + "a__fpbcK", + "__wab_text", sty.learnMoreLink )} href={ @@ -590,7 +573,7 @@ function PlasmicSubsectionPushDeploy__RenderFunc(props: {
} size={"wide"} startIcon={ } @@ -750,13 +734,13 @@ function PlasmicSubsectionPushDeploy__RenderFunc(props: { )} endIcon={ } startIcon={ } @@ -801,14 +785,14 @@ function PlasmicSubsectionPushDeploy__RenderFunc(props: { )} endIcon={ } size={"wide"} startIcon={ } @@ -816,8 +800,8 @@ function PlasmicSubsectionPushDeploy__RenderFunc(props: { >
- - - +
+
-
+
{renderPlasmicSlot({ defaultContents: "1 Basic Team", value: args.baseTitle, @@ -315,14 +279,10 @@ function PlasmicBill__RenderFunc(props: { className: classNames(sty.slotTargetBaseDescription), })}
-
-
+
+
{"$"}
@@ -332,25 +292,20 @@ function PlasmicBill__RenderFunc(props: { })}
{hasVariant($state, "type", "year") ? " / year" : " / month"}
-
+
{renderPlasmicSlot({ defaultContents: "10 Basic seats", value: args.seatTitle, @@ -379,14 +334,10 @@ function PlasmicBill__RenderFunc(props: { className: classNames(sty.slotTargetSeatDescription), })}
-
-
+
+
{"$"}
@@ -396,45 +347,35 @@ function PlasmicBill__RenderFunc(props: { })}
{hasVariant($state, "type", "year") ? " / year" : " / month"}
- -
+
+
-
+
{hasVariant($state, "type", "year") ? "New yearly total " @@ -442,15 +383,9 @@ function PlasmicBill__RenderFunc(props: { ? "New monthly total " : "Total"}
-
-
-
+
+
+
{"$"}
{renderPlasmicSlot({ @@ -460,25 +395,20 @@ function PlasmicBill__RenderFunc(props: { })}
{hasVariant($state, "type", "year") ? " / year" : " / month"}
- - +
+
) as React.ReactElement | null; } @@ -507,7 +437,8 @@ type NodeComponentProps = variants?: PlasmicBill__VariantsArgs; args?: PlasmicBill__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsListItem.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsListItem.module.css index 8ec7213795..8b3d333cad 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsListItem.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsListItem.module.css @@ -2,38 +2,28 @@ opacity: 1; position: relative; display: flex; - flex-direction: row; - padding: 12px 16px; - border-top: 1px solid var(--token-hoA5qaM-91G); -} -.root > :global(.__wab_flex-container) { flex-direction: row; align-items: center; justify-content: space-between; - margin-left: calc(0px - 8px); - width: calc(100% + 8px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-left: 8px; + column-gap: 8px; + padding: 12px 16px; + border-top: 1px solid var(--token-hoA5qaM-91G); } .rootisFirstItem { border-top-color: var(--token-brSQU2ryS); } -.root:hover { +.root:hover:hover { opacity: 1; background: var(--token-bV4cCeIniS6); } -.root:focus { +.root:focus:focus { box-shadow: 0px 0px 0px 2px #0091ff80; outline: none; } -.root:active { +.root:active:active { background: var(--token-Ik3bdE1e1Uy); } -.root:focus-within { +.root:focus-within:focus-within { box-shadow: 0px 0px 0px 2px #0091ff80; outline: none; } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsListItem.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsListItem.tsx index 02e134050b..394404b907 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsListItem.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsListItem.tsx @@ -18,12 +18,10 @@ import { MultiChoiceArg, PlasmicLink as PlasmicLink__, SingleBooleanChoiceArg, - Stack as Stack__, StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, hasVariant, renderPlasmicSlot, useDollarState, @@ -36,15 +34,12 @@ import EditableResourceName from "../../components/EditableResourceName"; // pla import PanelDivider from "../../components/PanelDivider"; // plasmic-import: 0NaTcyuAGK2dN/component import Button from "../../components/widgets/Button"; // plasmic-import: SEF-sRmSoqV5c/component import MenuButton from "../../components/widgets/MenuButton"; // plasmic-import: h69wHrrKtL/component - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicCmsListItem.module.css"; // plasmic-import: DEllwXrn27Q/css import ArrowRightSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__ArrowRightSvg"; // plasmic-import: 9Jv8jb253/icon @@ -130,27 +125,34 @@ function PlasmicCmsListItem__RenderFunc(props: { path: "explorations", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.explorations, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.explorations, }, { path: "showWorkspace", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.showWorkspace, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.showWorkspace, }, { path: "isFirstItem", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isFirstItem, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.isFirstItem, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -171,48 +173,24 @@ function PlasmicCmsListItem__RenderFunc(props: { hover_root: isRootHover, }; - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return ( -
} startIcon={ } @@ -372,11 +350,7 @@ function PlasmicCmsListItem__RenderFunc(props: {
{"PlasmicKit"}
@@ -411,7 +385,7 @@ function PlasmicCmsListItem__RenderFunc(props: {
{"updated just now"}
- + ) as React.ReactElement | null; } @@ -504,7 +474,8 @@ type NodeComponentProps = variants?: PlasmicCmsListItem__VariantsArgs; args?: PlasmicCmsListItem__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsPage.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsPage.tsx index b8e38c5f34..254fb2e66d 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsPage.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsPage.tsx @@ -19,25 +19,51 @@ import { classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, - hasVariant, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; import CmsListItem from "../../components/CmsListItem"; // plasmic-import: DEllwXrn27Q/component import CmsSection from "../../components/CmsSection"; // plasmic-import: 54ykx6A8G6T/component import DefaultLayout from "../../components/dashboard/DefaultLayout"; // plasmic-import: nSkQWLjK-B/component - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicCmsPage.module.css"; // plasmic-import: F7n0gyM6hJ6/css +const emptyProxy: any = new Proxy(() => "", { + get(_, prop) { + return prop === Symbol.toPrimitive ? () => "" : emptyProxy; + }, +}); + +function wrapQueriesWithLoadingProxy($q: any): any { + return new Proxy($q, { + get(target, queryName) { + const query = target[queryName]; + return !query || query.isLoading || !query.data ? emptyProxy : query; + }, + }); +} + +export type PageCtx = { + pageRoute: string; + pagePath: string; + params: Record; + query: Record; +}; + +export function generateDynamicMetadata($q: any, $ctx: PageCtx) { + return { + openGraph: {}, + twitter: { + card: "summary" as const, + }, + }; +} + createPlasmicElementProxy; export type PlasmicCmsPage__VariantMembers = {}; @@ -90,48 +116,25 @@ function PlasmicCmsPage__RenderFunc(props: { const refsRef = React.useRef({}); const $refs = refsRef.current; - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const globalVariants = _useGlobalVariants(); + + const styleTokensClassNames = _useStyleTokens(); return ( -
+
@@ -225,7 +228,8 @@ type NodeComponentProps = variants?: PlasmicCmsPage__VariantsArgs; args?: PlasmicCmsPage__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props @@ -282,13 +286,12 @@ export const PlasmicCmsPage = Object.assign( internalVariantProps: PlasmicCmsPage__VariantProps, internalArgProps: PlasmicCmsPage__ArgProps, - // Page metadata - pageMetadata: { - title: "", - description: "", - ogImageSrc: "", - canonical: "", - }, + pageMetadata: generateDynamicMetadata(wrapQueriesWithLoadingProxy({}), { + pageRoute: "/cms/[id]", + pagePath: "/cms/[id]", + params: {}, + query: {}, + }), } ); diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsSection.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsSection.module.css index 223ee65e33..53c511dcd3 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsSection.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsSection.module.css @@ -82,46 +82,18 @@ display: flex; position: relative; flex-direction: row; -} -.freeBox__qR4PO > :global(.__wab_flex-container) { - flex-direction: row; align-items: center; justify-content: flex-start; align-content: unset; - margin-left: calc(0px - 8px); - width: calc(100% + 8px); -} -.freeBox__qR4PO > :global(.__wab_flex-container) > *, -.freeBox__qR4PO > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox__qR4PO > :global(.__wab_flex-container) > picture > img, -.freeBox__qR4PO - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 8px; + column-gap: 8px; } .subtext { display: flex; position: relative; flex-direction: row; -} -.subtext > :global(.__wab_flex-container) { - flex-direction: row; align-items: stretch; justify-content: flex-start; - margin-left: calc(0px - 2px); - width: calc(100% + 2px); -} -.subtext > :global(.__wab_flex-container) > *, -.subtext > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.subtext > :global(.__wab_flex-container) > picture > img, -.subtext - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 2px; + column-gap: 2px; } .slotTargetNumMembers { font-size: 11px; @@ -136,23 +108,10 @@ .actions { display: flex; position: relative; -} -.actions > :global(.__wab_flex-container) { - margin-left: calc(0px - 8px); - width: calc(100% + 8px); -} -.actions > :global(.__wab_flex-container) > *, -.actions > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.actions > :global(.__wab_flex-container) > picture > img, -.actions - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 8px; + column-gap: 8px; } @media (min-width: 0px) and (max-width: 768px) { - .actions > :global(.__wab_flex-container) { + .actions { flex-wrap: wrap; align-items: unset; } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsSection.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsSection.tsx index 8f75d6beb8..dbbae7f11a 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsSection.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCmsSection.tsx @@ -18,12 +18,10 @@ import { PlasmicLink as PlasmicLink__, SingleBooleanChoiceArg, SingleChoiceArg, - Stack as Stack__, StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, hasVariant, renderPlasmicSlot, useDollarState, @@ -34,15 +32,12 @@ import CmsListItem from "../../components/CmsListItem"; // plasmic-import: DEllw import EditableResourceName from "../../components/EditableResourceName"; // plasmic-import: UttGK3xVrb/component import Button from "../../components/widgets/Button"; // plasmic-import: SEF-sRmSoqV5c/component import MenuButton from "../../components/widgets/MenuButton"; // plasmic-import: h69wHrrKtL/component - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicCmsSection.module.css"; // plasmic-import: 54ykx6A8G6T/css import PlusIcon from "../plasmic_kit/PlasmicIcon__Plus"; // plasmic-import: -k064DlQ8k8-L/icon @@ -157,57 +152,63 @@ function PlasmicCmsSection__RenderFunc(props: { path: "noProjects", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.noProjects, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.noProjects, }, { path: "accessLevel", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.accessLevel, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.accessLevel, }, { path: "inTeamPage", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.inTeamPage, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.inTeamPage, }, { path: "showControls", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.showControls, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.showControls, }, { path: "isReadonlyName", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isReadonlyName, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.isReadonlyName, }, { path: "showBackNav", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.showBackNav, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.showBackNav, }, { path: "subHeader", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.subHeader, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.subHeader, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return (
{(hasVariant($state, "inTeamPage", "inTeamPage") ? true : false) ? (
{"Read-only"}
- - +
{renderPlasmicSlot({ defaultContents: "6", @@ -422,31 +392,24 @@ function PlasmicCmsSection__RenderFunc(props: {
{"models"}
- - +
+
- } @@ -479,7 +442,7 @@ function PlasmicCmsSection__RenderFunc(props: { size={"wide"} startIcon={ } @@ -501,17 +464,13 @@ function PlasmicCmsSection__RenderFunc(props: { hoverText={"More…"} withBackgroundHover={true} /> - +
{(hasVariant($state, "noProjects", "noProjects") ? true : false) ? renderPlasmicSlot({ defaultContents: (
{"This workspace has no projects."}
@@ -527,7 +486,7 @@ function PlasmicCmsSection__RenderFunc(props: { }) : null}
{(hasVariant($state, "noProjects", "noProjects") ? false : true) ? (
= variants?: PlasmicCmsSection__VariantsArgs; args?: PlasmicCmsSection__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicContentPage.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicContentPage.module.css index 6544ba240f..c428f1264b 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicContentPage.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicContentPage.module.css @@ -57,25 +57,11 @@ .freeBox__qpmBb { display: flex; position: relative; - flex-direction: column; - padding: 8px; -} -.freeBox__qpmBb > :global(.__wab_flex-container) { flex-direction: column; align-items: stretch; justify-content: flex-start; - margin-top: calc(0px - 8px); - height: calc(100% + 8px); -} -.freeBox__qpmBb > :global(.__wab_flex-container) > *, -.freeBox__qpmBb > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox__qpmBb > :global(.__wab_flex-container) > picture > img, -.freeBox__qpmBb - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-top: 8px; + row-gap: 8px; + padding: 8px; } .freeBox__jpMzn { display: flex; @@ -83,10 +69,7 @@ flex-direction: row; align-items: center; justify-content: space-evenly; - margin-bottom: 0px; - margin-top: calc(0px + 8px) !important; - margin-right: 0px; - margin-left: 0px; + margin: 0px; } .text__o1YhO { font-size: 11px; @@ -126,21 +109,7 @@ display: flex; position: relative; flex-direction: column; -} -.freeBox__d2EH > :global(.__wab_flex-container) { - flex-direction: column; - margin-top: calc(0px - 4px); - height: calc(100% + 4px); -} -.freeBox__d2EH > :global(.__wab_flex-container) > *, -.freeBox__d2EH > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox__d2EH > :global(.__wab_flex-container) > picture > img, -.freeBox__d2EH - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-top: 4px; + row-gap: 4px; } .cmsSection:global(.__wab_instance) { width: 100%; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicContentPage.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicContentPage.tsx index 69bfa9ca88..9dad3453cd 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicContentPage.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicContentPage.tsx @@ -16,36 +16,61 @@ import * as React from "react"; import { Flex as Flex__, PlasmicLink as PlasmicLink__, - Stack as Stack__, StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, - hasVariant, renderPlasmicSlot, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; import CmsListItem from "../../components/CmsListItem"; // plasmic-import: DEllwXrn27Q/component import CmsSection from "../../components/CmsSection"; // plasmic-import: 54ykx6A8G6T/component +import MenuItem from "../../components/MenuItem"; // plasmic-import: Ts79yZbRFG/component import DefaultLayout from "../../components/dashboard/DefaultLayout"; // plasmic-import: nSkQWLjK-B/component import NavTeamSection from "../../components/dashboard/NavTeamSection"; // plasmic-import: VqaN_WL-stA/component -import MenuItem from "../../components/MenuItem"; // plasmic-import: Ts79yZbRFG/component import MenuButton from "../../components/widgets/MenuButton"; // plasmic-import: h69wHrrKtL/component - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicContentPage.module.css"; // plasmic-import: A4UIAN_FGs/css import SettingsSlidersSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__SettingsSlidersSvg"; // plasmic-import: Y1oJwH9hP/icon +const emptyProxy: any = new Proxy(() => "", { + get(_, prop) { + return prop === Symbol.toPrimitive ? () => "" : emptyProxy; + }, +}); + +function wrapQueriesWithLoadingProxy($q: any): any { + return new Proxy($q, { + get(target, queryName) { + const query = target[queryName]; + return !query || query.isLoading || !query.data ? emptyProxy : query; + }, + }); +} + +export type PageCtx = { + pageRoute: string; + pagePath: string; + params: Record; + query: Record; +}; + +export function generateDynamicMetadata($q: any, $ctx: PageCtx) { + return { + openGraph: {}, + twitter: { + card: "summary" as const, + }, + }; +} + createPlasmicElementProxy; export type PlasmicContentPage__VariantMembers = {}; @@ -103,48 +128,25 @@ function PlasmicContentPage__RenderFunc(props: { const refsRef = React.useRef({}); const $refs = refsRef.current; - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const globalVariants = _useGlobalVariants(); + + const styleTokensClassNames = _useStyleTokens(); return ( -
+
} > -
-
+
+
{"Content"}
-
+
- -
+
+
@@ -204,8 +194,9 @@ function PlasmicContentPage__RenderFunc(props: { data-plasmic-name={"editModelsButton"} data-plasmic-override={overrides.editModelsButton} className={classNames( - projectcss.all, - projectcss.a, + "all", + "a", + "a__ooL7E", sty.editModelsButton )} platform={"react"} @@ -214,16 +205,12 @@ function PlasmicContentPage__RenderFunc(props: {
- +
{renderPlasmicSlot({ defaultContents: ( @@ -236,8 +223,8 @@ function PlasmicContentPage__RenderFunc(props: { ), value: args.modelList, })} - - +
+
= variants?: PlasmicContentPage__VariantsArgs; args?: PlasmicContentPage__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props @@ -424,13 +412,12 @@ export const PlasmicContentPage = Object.assign( internalVariantProps: PlasmicContentPage__VariantProps, internalArgProps: PlasmicContentPage__ArgProps, - // Page metadata - pageMetadata: { - title: "", - description: "", - ogImageSrc: "", - canonical: "", - }, + pageMetadata: generateDynamicMetadata(wrapQueriesWithLoadingProxy({}), { + pageRoute: "/content/[id]", + pagePath: "/content/[id]", + params: {}, + query: {}, + }), } ); diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCopyButton.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCopyButton.module.css index 4a00b13396..c0777d44e0 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCopyButton.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCopyButton.module.css @@ -1,23 +1,14 @@ .root { display: flex; position: relative; + align-items: center; + justify-content: flex-start; + column-gap: 4px; border-radius: 2px; padding: 0px; border-style: none; } -.root > :global(.__wab_flex-container) { - align-items: center; - justify-content: flex-start; - margin-left: calc(0px - 4px); - width: calc(100% + 4px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-left: 4px; -} -.root:focus { +.root:focus:focus { box-shadow: 0px 0px 0px 2px #0091ff80; outline: none; } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCopyButton.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCopyButton.tsx index 4823b7c38f..3fdc10c3ee 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCopyButton.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicCopyButton.tsx @@ -14,29 +14,25 @@ import * as React from "react"; import { - Flex as Flex__, - SingleChoiceArg, - Stack as Stack__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, + Flex as Flex__, hasVariant, renderPlasmicSlot, + SingleChoiceArg, + StrictProps, useDollarState, useTrigger, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicCopyButton.module.css"; // plasmic-import: u7TII072Seb/css import CopySvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__CopySvg"; // plasmic-import: aGIZL6Ec9/icon @@ -105,15 +101,19 @@ function PlasmicCopyButton__RenderFunc(props: { path: "mode", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.mode, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.mode, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -122,49 +122,23 @@ function PlasmicCopyButton__RenderFunc(props: { hover_root: isRootHover, }; - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return ( - - + ) as React.ReactElement | null; } @@ -209,7 +183,8 @@ type NodeComponentProps = variants?: PlasmicCopyButton__VariantsArgs; args?: PlasmicCopyButton__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDataSource.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDataSource.module.css index 54eec32fc1..94fa385033 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDataSource.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDataSource.module.css @@ -3,16 +3,20 @@ flex-direction: row; align-items: center; justify-content: space-between; - position: relative; width: 100%; + position: relative; min-width: 0; border-radius: 6px; padding: 0.5rem; } -.root:hover { +.root:hover:hover { + background: var(--token-bV4cCeIniS6); +} +.root:focus-within:focus-within { background: var(--token-bV4cCeIniS6); + outline: none; } -.freeBox { +.freeBox__vUr6W { position: relative; width: 100%; height: auto; @@ -21,6 +25,23 @@ flex-direction: row; min-width: 0; } +.freeBox__fgqCy { + flex-direction: row; + position: relative; + align-items: center; + justify-content: flex-start; + height: auto; + column-gap: var(--token-uzWT6AFCY); + max-height: 18px; + display: none; +} +.root:hover .freeBox__fgqCy { + display: flex; +} +.root:focus-within .freeBox__fgqCy { + display: flex; + outline: none; +} .svg { position: relative; object-fit: cover; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDataSource.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDataSource.tsx index 8426d8c055..1c9e5f8673 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDataSource.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDataSource.tsx @@ -14,28 +14,25 @@ import * as React from "react"; import { - Flex as Flex__, - SingleBooleanChoiceArg, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, + Flex as Flex__, hasVariant, renderPlasmicSlot, + SingleBooleanChoiceArg, + StrictProps, useDollarState, useTrigger, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicDataSource.module.css"; // plasmic-import: B2dxgzfI6E/css import PencilSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__PencilSvg"; // plasmic-import: 540duoJvb/icon @@ -53,18 +50,24 @@ export const PlasmicDataSource__VariantProps = new Array( "readOnly" ); -export type PlasmicDataSource__ArgsType = { children?: React.ReactNode }; +export type PlasmicDataSource__ArgsType = { + children?: React.ReactNode; + menuButton?: React.ReactNode; +}; type ArgPropType = keyof PlasmicDataSource__ArgsType; -export const PlasmicDataSource__ArgProps = new Array("children"); +export const PlasmicDataSource__ArgProps = new Array( + "children", + "menuButton" +); export type PlasmicDataSource__OverridesType = { root?: Flex__<"div">; - freeBox?: Flex__<"div">; svg?: Flex__<"svg">; }; export interface DefaultDataSourceProps { children?: React.ReactNode; + menuButton?: React.ReactNode; readOnly?: SingleBooleanChoiceArg<"readOnly">; className?: string; } @@ -105,26 +108,33 @@ function PlasmicDataSource__RenderFunc(props: { path: "readOnly", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.readOnly, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.readOnly, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); const [isRootHover, triggerRootHoverProps] = useTrigger("useHover", {}); + const [isRootFocusWithin, triggerRootFocusWithinProps] = useTrigger( + "useFocusedWithin", + {} + ); const triggers = { hover_root: isRootHover, + focusWithin_root: isRootFocusWithin, }; - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return (
{renderPlasmicSlot({ @@ -178,29 +170,27 @@ function PlasmicDataSource__RenderFunc(props: { value: args.children, })}
- {( - hasVariant($state, "readOnly", "readOnly") && triggers.hover_root - ? true - : triggers.hover_root - ? true - : false - ) ? ( +
- ) : null} + + {renderPlasmicSlot({ + defaultContents: null, + value: args.menuButton, + })} +
) as React.ReactElement | null; } const PlasmicDescendants = { - root: ["root", "freeBox", "svg"], - freeBox: ["freeBox"], + root: ["root", "svg"], svg: ["svg"], } as const; type NodeNameType = keyof typeof PlasmicDescendants; @@ -208,7 +198,6 @@ type DescendantsType = (typeof PlasmicDescendants)[T][number]; type NodeDefaultElementType = { root: "div"; - freeBox: "div"; svg: "svg"; }; @@ -272,7 +261,6 @@ export const PlasmicDataSource = Object.assign( makeNodeComponent("root"), { // Helper components rendering sub-elements - freeBox: makeNodeComponent("freeBox"), svg: makeNodeComponent("svg"), // Metadata about props expected for PlasmicDataSource diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDataSourceOption.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDataSourceOption.module.css index 85d7437ded..b04a1b967f 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDataSourceOption.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDataSourceOption.module.css @@ -2,32 +2,22 @@ display: flex; height: auto; flex-direction: row; + justify-content: flex-start; + align-items: center; + align-content: unset; cursor: pointer; position: relative; + column-gap: 8px; border-radius: 6px; padding: 0.25rem 0.75rem 0.25rem 0.5rem; } -.root > :global(.__wab_flex-container) { - flex-direction: row; - justify-content: flex-start; - align-items: center; - align-content: unset; - margin-left: calc(0px - 8px); - width: calc(100% + 8px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-left: 8px; -} .rootselected { background: var(--token-bV4cCeIniS6); } -.root:hover { +.root:hover:hover { background: #f3f3f2; } -.root:focus-within { +.root:focus-within:focus-within { box-shadow: 0px 0px 0px 2px var(--token-D666zt2IZPL); outline: none; } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDataSourceOption.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDataSourceOption.tsx index 7f2a47fb22..be886a393e 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDataSourceOption.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDataSourceOption.tsx @@ -14,29 +14,25 @@ import * as React from "react"; import { - Flex as Flex__, - PlasmicLink as PlasmicLink__, - SingleBooleanChoiceArg, - Stack as Stack__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, + Flex as Flex__, hasVariant, + PlasmicLink as PlasmicLink__, renderPlasmicSlot, + SingleBooleanChoiceArg, + StrictProps, useDollarState, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicDataSourceOption.module.css"; // plasmic-import: 89XWXKZUx6q/css import Icon19Icon from "./icons/PlasmicIcon__Icon19"; // plasmic-import: MHEeMLIhlB/icon @@ -115,62 +111,40 @@ function PlasmicDataSourceOption__RenderFunc(props: { path: "selected", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.selected, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.selected, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return ( - {renderPlasmicSlot({ defaultContents: ( ), @@ -203,7 +177,7 @@ function PlasmicDataSourceOption__RenderFunc(props: { ), }), })} - + ) as React.ReactElement | null; } @@ -230,7 +204,8 @@ type NodeComponentProps = variants?: PlasmicDataSourceOption__VariantsArgs; args?: PlasmicDataSourceOption__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDatabaseListItem.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDatabaseListItem.module.css index 73e139c9fa..6ea315aa20 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDatabaseListItem.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDatabaseListItem.module.css @@ -6,33 +6,22 @@ position: relative; display: flex; flex-direction: row; + align-items: center; + justify-content: space-between; background: var(--token-iR8SeEwQZ); + column-gap: 8px; min-width: 0; border-radius: 8px; padding: 16px; border: 1px solid var(--token-hoA5qaM-91G); } -.root > :global(.__wab_flex-container) { - flex-direction: row; - align-items: center; - justify-content: space-between; - min-width: 0; - margin-left: calc(0px - 8px); - width: calc(100% + 8px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-left: 8px; -} -.root:hover { +.root:hover:hover { box-shadow: 0px 4px 8px 1px var(--token-zBV3PmIqbJ9F); opacity: 1; background: var(--token-bV4cCeIniS6); border-color: var(--token-eBt2ZgqRUCz); } -.root:focus { +.root:focus:focus { box-shadow: 0px 0px 0px 2px #0091ff80; outline: none; } @@ -40,7 +29,7 @@ box-shadow: 0px 0px 0px 2px #0091ff80; outline: none; } -.root:focus-within { +.root:focus-within:focus-within { box-shadow: 0px 0px 0px 2px #0091ff80; outline: none; } @@ -51,20 +40,10 @@ box-sizing: border-box; display: flex; width: 100%; - min-width: 0; -} -.left > :global(.__wab_flex-container) { align-items: center; justify-content: flex-start; + column-gap: 4px; min-width: 0; - margin-left: calc(0px - 4px); - width: calc(100% + 4px); -} -.left > :global(.__wab_flex-container) > *, -.left > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.left > :global(.__wab_flex-container) > picture > img, -.left > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-left: 4px; } .root:focus .left { outline: none; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDatabaseListItem.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDatabaseListItem.tsx index 7ec10ed770..a9af089d1f 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDatabaseListItem.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDatabaseListItem.tsx @@ -16,13 +16,10 @@ import * as React from "react"; import { Flex as Flex__, PlasmicLink as PlasmicLink__, - Stack as Stack__, StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, - hasVariant, renderPlasmicSlot, useTrigger, } from "@plasmicapp/react-web"; @@ -31,15 +28,12 @@ import { useDataEnv } from "@plasmicapp/react-web/lib/host"; import EditableResourceName from "../../components/EditableResourceName"; // plasmic-import: UttGK3xVrb/component import Shared from "../../components/dashboard/Shared"; // plasmic-import: r2L4x5kulJ/component import MenuButton from "../../components/widgets/MenuButton"; // plasmic-import: h69wHrrKtL/component - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicDatabaseListItem.module.css"; // plasmic-import: G_RLd7TB5Ns/css import DatabaseSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__DatabaseSvg"; // plasmic-import: I6B50v8zj/icon @@ -104,6 +98,8 @@ function PlasmicDatabaseListItem__RenderFunc(props: { const refsRef = React.useRef({}); const $refs = refsRef.current; + const globalVariants = _useGlobalVariants(); + const [isRootFocusVisible, triggerRootFocusVisibleProps] = useTrigger( "useFocusVisible", { @@ -116,50 +112,24 @@ function PlasmicDatabaseListItem__RenderFunc(props: { hover_root: isRootHover, }; - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return ( - - -
+
-
+
{renderPlasmicSlot({ defaultContents: "updated 1h ago", value: args.timestamp, @@ -205,11 +173,11 @@ function PlasmicDatabaseListItem__RenderFunc(props: { })}
- +
{"updated just now"}
- + ) as React.ReactElement | null; } @@ -282,7 +246,8 @@ type NodeComponentProps = variants?: PlasmicDatabaseListItem__VariantsArgs; args?: PlasmicDatabaseListItem__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDefaultLayout.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDefaultLayout.module.css index 69bb0e233b..d4a1dc6643 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDefaultLayout.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDefaultLayout.module.css @@ -54,23 +54,9 @@ display: flex; position: relative; flex-direction: row; -} -.headerActions > :global(.__wab_flex-container) { - flex-direction: row; align-items: center; justify-content: flex-start; - margin-left: calc(0px - 8px); - width: calc(100% + 8px); -} -.headerActions > :global(.__wab_flex-container) > *, -.headerActions > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.headerActions > :global(.__wab_flex-container) > picture > img, -.headerActions - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 8px; + column-gap: 8px; } .freeBox___8H74X { display: flex; @@ -149,6 +135,7 @@ .wrapper { display: flex; flex-direction: column; + column-gap: 0px; } } .sidebar { @@ -187,19 +174,9 @@ display: flex; position: relative; flex-direction: column; -} -.nav > :global(.__wab_flex-container) { - flex-direction: column; align-items: stretch; justify-content: flex-start; - margin-top: calc(0px - 4px); - height: calc(100% + 4px); -} -.nav > :global(.__wab_flex-container) > *, -.nav > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.nav > :global(.__wab_flex-container) > picture > img, -.nav > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-top: 4px; + row-gap: 4px; } .allProjectsButton:global(.__wab_instance) { position: relative; @@ -235,38 +212,20 @@ } .navSeparator__e9MNn:global(.__wab_instance) { position: relative; - margin-top: calc(8px + 4px) !important; + margin-top: 8px; margin-bottom: 8px; margin-left: 30px; } -.navSeparatorhideStarters__e9MNnwfmdR:global(.__wab_instance) { - margin-top: calc(8px + 4px) !important; -} .navSeparatorhideTeams__e9MNn5Ktlm:global(.__wab_instance) { - margin-top: calc(8px + 4px) !important; display: none; } .freeBox___1I5Dl { display: flex; position: relative; flex-direction: column; -} -.freeBox___1I5Dl > :global(.__wab_flex-container) { - flex-direction: column; align-items: stretch; justify-content: flex-start; - margin-top: calc(0px - 4px); - height: calc(100% + 4px); -} -.freeBox___1I5Dl > :global(.__wab_flex-container) > *, -.freeBox___1I5Dl > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox___1I5Dl > :global(.__wab_flex-container) > picture > img, -.freeBox___1I5Dl - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-top: 4px; + row-gap: 4px; } .freeBoxhideTeams___1I5Dl5Ktlm { display: none; @@ -288,15 +247,11 @@ } .navSeparator__xnjTf:global(.__wab_instance) { position: relative; - margin-top: calc(8px + 4px) !important; + margin-top: 8px; margin-bottom: 8px; margin-left: 30px; } -.navSeparatorhideStarters__xnjTfwfmdR:global(.__wab_instance) { - margin-top: calc(8px + 4px) !important; -} .navSeparatorhideTeams__xnjTf5Ktlm:global(.__wab_instance) { - margin-top: calc(8px + 4px) !important; display: none; } .startersButton:global(.__wab_instance) { @@ -322,22 +277,8 @@ display: flex; position: relative; flex-direction: column; -} -.navFooter > :global(.__wab_flex-container) { - flex-direction: column; align-items: stretch; - margin-top: calc(0px - 4px); - height: calc(100% + 4px); -} -.navFooter > :global(.__wab_flex-container) > *, -.navFooter > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.navFooter > :global(.__wab_flex-container) > picture > img, -.navFooter - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-top: 4px; + row-gap: 4px; } .newTeamButton:global(.__wab_instance) { position: relative; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDefaultLayout.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDefaultLayout.tsx index ed9d3262da..7cdafb3cec 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDefaultLayout.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicDefaultLayout.tsx @@ -18,12 +18,10 @@ import { PlasmicLink as PlasmicLink__, SingleBooleanChoiceArg, SingleChoiceArg, - Stack as Stack__, StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, hasVariant, renderPlasmicSlot, useDollarState, @@ -35,16 +33,12 @@ import NavButton from "../../components/dashboard/NavButton"; // plasmic-import: import NavSeparator from "../../components/dashboard/NavSeparator"; // plasmic-import: cOUHQYmbvX/component import NavTeamSection from "../../components/dashboard/NavTeamSection"; // plasmic-import: VqaN_WL-stA/component import Button from "../../components/widgets/Button"; // plasmic-import: SEF-sRmSoqV5c/component - -import { useScreenVariants as useScreenVariants_2DzYbdw5Xtx } from "../PlasmicGlobalVariant__Screen"; // plasmic-import: 2dzYbdw5Xtx/globalVariant -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicDefaultLayout.module.css"; // plasmic-import: nSkQWLjK-B/css import HelpIcon from "../plasmic_kit/PlasmicIcon__Help"; // plasmic-import: -9-68IGPdLG-5/icon @@ -169,48 +163,50 @@ function PlasmicDefaultLayout__RenderFunc(props: { path: "navigation", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.navigation, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.navigation, }, { path: "hideStarters", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.hideStarters, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.hideStarters, }, { path: "hideTeams", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.hideTeams, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.hideTeams, }, { path: "hideNewProjectButton", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.hideNewProjectButton, }, { path: "newProjectButtonAsDropdown", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.newProjectButtonAsDropdown, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); - const globalVariants = ensureGlobalVariants({ - screen: useScreenVariants_2DzYbdw5Xtx(), - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return (
-
} @@ -345,18 +312,13 @@ function PlasmicDefaultLayout__RenderFunc(props: {
{"New project"}
@@ -369,14 +331,14 @@ function PlasmicDefaultLayout__RenderFunc(props: { className={classNames("__wab_instance", sty.upgradeButton)} endIcon={ } smallIcon={true} startIcon={ } @@ -394,11 +356,11 @@ function PlasmicDefaultLayout__RenderFunc(props: { : undefined } /> - +
} @@ -613,7 +571,7 @@ function PlasmicDefaultLayout__RenderFunc(props: { } startIcon={ } @@ -622,13 +580,11 @@ function PlasmicDefaultLayout__RenderFunc(props: { ? "Starters" : "Starters"} - - +
} startIcon={ } @@ -658,14 +614,14 @@ function PlasmicDefaultLayout__RenderFunc(props: { )} endIcon={ } href={"https://docs.plasmic.app/"} startIcon={ } @@ -679,14 +635,14 @@ function PlasmicDefaultLayout__RenderFunc(props: { className={classNames("__wab_instance", sty.helpButton)} endIcon={ } href={"https://forum.plasmic.app/c/5"} startIcon={ } @@ -700,21 +656,20 @@ function PlasmicDefaultLayout__RenderFunc(props: { className={classNames("__wab_instance", sty.userButton)} endIcon={ } startIcon={ -
+
{renderPlasmicSlot({ defaultContents: ( {""} @@ -728,12 +683,12 @@ function PlasmicDefaultLayout__RenderFunc(props: { > {"kim23"} - +
= variants?: PlasmicDefaultLayout__VariantsArgs; args?: PlasmicDefaultLayout__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicEditableResourceName.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicEditableResourceName.module.css index 7c2c4b97ff..2712d28941 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicEditableResourceName.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicEditableResourceName.module.css @@ -2,24 +2,15 @@ box-sizing: border-box; display: flex; position: relative; -} -.root > :global(.__wab_flex-container) { align-items: center; justify-content: flex-start; - margin-left: calc(0px - 4px); - width: calc(100% + 4px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-left: 4px; + column-gap: 4px; } .rootstate_hover { position: relative; padding: 0px; } -.root:hover { +.root:hover:hover { position: relative; padding: 0px; } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicEditableResourceName.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicEditableResourceName.tsx index 7cb2cc022a..ab32fee0ba 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicEditableResourceName.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicEditableResourceName.tsx @@ -14,30 +14,26 @@ import * as React from "react"; import { - Flex as Flex__, - SingleBooleanChoiceArg, - SingleChoiceArg, - Stack as Stack__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, + Flex as Flex__, hasVariant, renderPlasmicSlot, + SingleBooleanChoiceArg, + SingleChoiceArg, + StrictProps, useDollarState, useTrigger, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicEditableResourceName.module.css"; // plasmic-import: UttGK3xVrb/css import EditSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__EditSvg"; // plasmic-import: _Qa2gdunG/icon @@ -114,27 +110,31 @@ function PlasmicEditableResourceName__RenderFunc(props: { path: "state", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.state, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.state, }, { path: "cantEdit", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.cantEdit, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.cantEdit, }, { path: "size", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.size, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.size, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -143,47 +143,22 @@ function PlasmicEditableResourceName__RenderFunc(props: { hover_root: isRootHover, }; - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return ( - ) : null} - +
) as React.ReactElement | null; } @@ -276,7 +252,8 @@ type NodeComponentProps = variants?: PlasmicEditableResourceName__VariantsArgs; args?: PlasmicEditableResourceName__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicFreeTrialModal.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicFreeTrialModal.module.css index 8fa474e872..e473d8c0d7 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicFreeTrialModal.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicFreeTrialModal.module.css @@ -4,25 +4,15 @@ position: relative; width: 40vw; height: auto; + justify-content: flex-start; + align-items: center; background: var(--token-9jh0BkCENS); justify-self: flex-start; + row-gap: 12px; border-radius: 6px; padding: 30px 70px; border: 2px solid var(--token-bV4cCeIniS6); } -.root > :global(.__wab_flex-container) { - flex-direction: column; - justify-content: flex-start; - align-items: center; - margin-top: calc(0px - 12px); - height: calc(100% + 12px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-top: 12px; -} .svg__er1Mj { object-fit: cover; max-width: 100%; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicFreeTrialModal.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicFreeTrialModal.tsx index 23703e7f43..73e5d1eb7a 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicFreeTrialModal.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicFreeTrialModal.tsx @@ -14,27 +14,21 @@ import * as React from "react"; import { - Flex as Flex__, - Stack as Stack__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, - hasVariant, + Flex as Flex__, + StrictProps, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; import Button from "../../components/widgets/Button"; // plasmic-import: SEF-sRmSoqV5c/component - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicFreeTrialModal.module.css"; // plasmic-import: AqMe9uK-Yh/css import MarkFullColorIcon from "../plasmic_kit_design_system/PlasmicIcon__MarkFullColor"; // plasmic-import: l_n_OBLJg/icon @@ -99,78 +93,48 @@ function PlasmicFreeTrialModal__RenderFunc(props: { const refsRef = React.useRef({}); const $refs = refsRef.current; - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const globalVariants = _useGlobalVariants(); + + const styleTokensClassNames = _useStyleTokens(); return ( -

{`Discover all of Plasmic with a ${$props.trialDays}-day trial of Scale`}

{`We\u2019ve upgraded you to a free ${$props.trialDays}-day trial of the Scale plan. Experience Plasmic's full range of features to choose the best plan for you.\n\nWhen your trial ends, we'll automatically move your account to the Free plan unless you choose to upgrade.`}
-
+
) as React.ReactElement | null; } @@ -226,7 +190,8 @@ type NodeComponentProps = variants?: PlasmicFreeTrialModal__VariantsArgs; args?: PlasmicFreeTrialModal__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicGlobalContextsProvider.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicGlobalContextsProvider.tsx index c59c9ce758..e2ced9f583 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicGlobalContextsProvider.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicGlobalContextsProvider.tsx @@ -1,12 +1,14 @@ /* eslint-disable */ /* tslint:disable */ // @ts-nocheck -// This class is auto-generated by Plasmic; please do not edit! + +// This code is auto-generated by Plasmic; please do not edit! // Plasmic Project: ooL7EhXDmFQWnW9sxtchhE -import { EmbedCss } from "@plasmicpkgs/plasmic-embed-css"; import * as React from "react"; +import { EmbedCss } from "@plasmicpkgs/plasmic-embed-css"; + export interface GlobalContextsProviderProps { children?: React.ReactElement; embedCssProps?: Partial< diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect.module.css deleted file mode 100644 index 49f502e448..0000000000 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect.module.css +++ /dev/null @@ -1,230 +0,0 @@ -.root { - display: inline-flex; - flex-direction: column; - position: relative; - width: auto; - height: auto; -} -.root___focusWithin__focusVisibleWithin:focus-within { - outline: none; -} -.root:hover:not(:focus-within) { - outline: none; -} -.trigger { - position: relative; - display: flex; - flex-direction: row; - border-top-left-radius: 6px; - border-bottom-left-radius: 6px; - padding: 7px; - border: 1px solid var(--token-hoA5qaM-91G); -} -.trigger > :global(.__wab_flex-container) { - flex-direction: row; - align-items: center; - margin-left: calc(0px - 0px); - width: calc(100% + 0px); -} -.trigger > :global(.__wab_flex-container) > *, -.trigger > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.trigger > :global(.__wab_flex-container) > picture > img, -.trigger - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 0px; -} -.triggerisOpen { - background: #f5f5f5; -} -.triggerisDisabled { - cursor: not-allowed; -} -.root:hover:not(:focus-within) .trigger { - background: var(--token-bV4cCeIniS6); - outline: none; -} -.root:focus-within .trigger___focusWithin__focusVisibleWithin { - box-shadow: 0px 0px 0px 2px #0091ff80; - outline: none; -} -.contentContainer { - display: flex; - position: relative; - flex-direction: row; - align-items: stretch; - justify-content: flex-start; - width: 100%; - min-width: 0; -} -.slotTargetSelectedContent { - white-space: pre; -} -.slotTargetSelectedContent > :global(.__wab_text), -.slotTargetSelectedContent > :global(.__wab_expr_html_text), -.slotTargetSelectedContent > :global(.__wab_slot-string-wrapper), -.slotTargetSelectedContent > :global(.__wab_slot) > :global(.__wab_text), -.slotTargetSelectedContent - > :global(.__wab_slot) - > :global(.__wab_expr_html_text), -.slotTargetSelectedContent - > :global(.__wab_slot) - > :global(.__wab_slot-string-wrapper), -.slotTargetSelectedContent - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_text), -.slotTargetSelectedContent - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_expr_html_text), -.slotTargetSelectedContent - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot-string-wrapper), -.slotTargetSelectedContent - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_text), -.slotTargetSelectedContent - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_expr_html_text), -.slotTargetSelectedContent - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot-string-wrapper) { - text-overflow: ellipsis; -} -.slotTargetSelectedContent > *, -.slotTargetSelectedContent > :global(.__wab_slot) > *, -.slotTargetSelectedContent > :global(.__wab_slot) > :global(.__wab_slot) > *, -.slotTargetSelectedContent - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > *, -.slotTargetSelectedContent > picture > img, -.slotTargetSelectedContent > :global(.__wab_slot) > picture > img, -.slotTargetSelectedContent - > :global(.__wab_slot) - > :global(.__wab_slot) - > picture - > img, -.slotTargetSelectedContent - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > picture - > img { - overflow: hidden; -} -.slotTargetPlaceholder { - white-space: pre; - color: #8e8e8e; -} -.slotTargetPlaceholder > :global(.__wab_text), -.slotTargetPlaceholder > :global(.__wab_expr_html_text), -.slotTargetPlaceholder > :global(.__wab_slot-string-wrapper), -.slotTargetPlaceholder > :global(.__wab_slot) > :global(.__wab_text), -.slotTargetPlaceholder > :global(.__wab_slot) > :global(.__wab_expr_html_text), -.slotTargetPlaceholder - > :global(.__wab_slot) - > :global(.__wab_slot-string-wrapper), -.slotTargetPlaceholder - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_text), -.slotTargetPlaceholder - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_expr_html_text), -.slotTargetPlaceholder - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot-string-wrapper), -.slotTargetPlaceholder - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_text), -.slotTargetPlaceholder - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_expr_html_text), -.slotTargetPlaceholder - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot-string-wrapper) { - text-overflow: ellipsis; -} -.slotTargetPlaceholder > *, -.slotTargetPlaceholder > :global(.__wab_slot) > *, -.slotTargetPlaceholder > :global(.__wab_slot) > :global(.__wab_slot) > *, -.slotTargetPlaceholder - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > *, -.slotTargetPlaceholder > picture > img, -.slotTargetPlaceholder > :global(.__wab_slot) > picture > img, -.slotTargetPlaceholder - > :global(.__wab_slot) - > :global(.__wab_slot) - > picture - > img, -.slotTargetPlaceholder - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > picture - > img { - overflow: hidden; -} -.dropdownIcon { - position: relative; - object-fit: cover; - width: 16px; - height: 16px; - color: var(--token-fVn5vRhXJxQ); - flex-shrink: 0; -} -.root:hover:not(:focus-within) .dropdownIcon { - color: var(--token-UunsGa2Y3t3); - outline: none; -} -.root:focus-within .dropdownIcon___focusWithin__focusVisibleWithin { - color: var(--token-UunsGa2Y3t3); - outline: none; -} -.overlay:global(.__wab_instance) { - position: absolute; - left: 0px; - top: 100%; - z-index: 1000; -} -.optionsContainer { - display: flex; - position: relative; - flex-direction: column; - align-items: stretch; - justify-content: flex-start; - width: auto; - height: auto; - overflow: auto; -} -.option__mdBtX:global(.__wab_instance) { - position: relative; - flex-shrink: 0; -} -.option___0Skue:global(.__wab_instance) { - position: relative; - flex-shrink: 0; -} diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect.tsx deleted file mode 100644 index 131e273d69..0000000000 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect.tsx +++ /dev/null @@ -1,582 +0,0 @@ -/* eslint-disable */ -/* tslint:disable */ -// @ts-nocheck -/* prettier-ignore-start */ - -/** @jsxRuntime classic */ -/** @jsx createPlasmicElementProxy */ -/** @jsxFrag React.Fragment */ - -// This class is auto-generated by Plasmic; please do not edit! -// Plasmic Project: ooL7EhXDmFQWnW9sxtchhE -// Component: 6_CfQ5GVLku - -import * as React from "react"; - -import { - Flex as Flex__, - PlasmicIcon as PlasmicIcon__, - SingleBooleanChoiceArg, - Stack as Stack__, - StrictProps, - classNames, - createPlasmicElementProxy, - deriveRenderOpts, - ensureGlobalVariants, - hasVariant, - renderPlasmicSlot, - useDollarState, - useTrigger, -} from "@plasmicapp/react-web"; -import { useDataEnv } from "@plasmicapp/react-web/lib/host"; - -import * as pp from "@plasmicapp/react-web"; -import HostProtocolSelect__Option from "../../components/HostProtocolSelect__Option"; // plasmic-import: aHgWgR3OVni/component -import HostProtocolSelect__OptionGroup from "../../components/HostProtocolSelect__OptionGroup"; // plasmic-import: FB-WsFik1_I/component -import HostProtocolSelect__Overlay from "../../components/HostProtocolSelect__Overlay"; // plasmic-import: WAelYWWWRyr/component - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant - -import "@plasmicapp/react-web/lib/plasmic.css"; - -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import sty from "./PlasmicHostProtocolSelect.module.css"; // plasmic-import: 6_CfQ5GVLku/css - -import ChevronDownSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__ChevronDownSvg"; // plasmic-import: xZrB9_0ir/icon -import ChevronUpSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__ChevronUpSvg"; // plasmic-import: i9D87DzsX/icon - -createPlasmicElementProxy; - -export type PlasmicHostProtocolSelect__VariantMembers = { - showPlaceholder: "showPlaceholder"; - isOpen: "isOpen"; - isDisabled: "isDisabled"; -}; -export type PlasmicHostProtocolSelect__VariantsArgs = { - showPlaceholder?: SingleBooleanChoiceArg<"showPlaceholder">; - isOpen?: SingleBooleanChoiceArg<"isOpen">; - isDisabled?: SingleBooleanChoiceArg<"isDisabled">; -}; -type VariantPropType = keyof PlasmicHostProtocolSelect__VariantsArgs; -export const PlasmicHostProtocolSelect__VariantProps = - new Array("showPlaceholder", "isOpen", "isDisabled"); - -export type PlasmicHostProtocolSelect__ArgsType = { - selectedContent?: React.ReactNode; - placeholder?: React.ReactNode; - children?: React.ReactNode; - value?: "Dynamic options"; - name?: string; - options?: any; - onChange?: (value: string) => void; - "aria-label"?: string; - "aria-labelledby"?: string; -}; -type ArgPropType = keyof PlasmicHostProtocolSelect__ArgsType; -export const PlasmicHostProtocolSelect__ArgProps = new Array( - "selectedContent", - "placeholder", - "children", - "value", - "name", - "options", - "onChange", - "aria-label", - "aria-labelledby" -); - -export type PlasmicHostProtocolSelect__OverridesType = { - root?: Flex__<"div">; - trigger?: Flex__<"button">; - contentContainer?: Flex__<"div">; - dropdownIcon?: Flex__<"svg">; - overlay?: Flex__; - optionsContainer?: Flex__<"div">; -}; - -export interface DefaultHostProtocolSelectProps extends pp.BaseSelectProps { - options?: any; - "aria-label"?: string; - "aria-labelledby"?: string; -} - -const PlasmicHostProtocolSelectContext = React.createContext< - | undefined - | { - variants: PlasmicHostProtocolSelect__VariantsArgs; - args: PlasmicHostProtocolSelect__ArgsType; - } ->(undefined); - -const $$ = {}; - -function PlasmicHostProtocolSelect__RenderFunc(props: { - variants: PlasmicHostProtocolSelect__VariantsArgs; - args: PlasmicHostProtocolSelect__ArgsType; - overrides: PlasmicHostProtocolSelect__OverridesType; - forNode?: string; -}) { - const { variants, overrides, forNode } = props; - - const args = React.useMemo( - () => - Object.assign( - {}, - Object.fromEntries( - Object.entries(props.args).filter(([_, v]) => v !== undefined) - ) - ), - [props.args] - ); - - const $props = { - ...args, - ...variants, - }; - - const $ctx = useDataEnv?.() || {}; - const refsRef = React.useRef({}); - const $refs = refsRef.current; - - const stateSpecs: Parameters[0] = React.useMemo( - () => [ - { - path: "showPlaceholder", - type: "private", - variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => - $props.showPlaceholder, - }, - { - path: "isOpen", - type: "private", - variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isOpen, - }, - { - path: "isDisabled", - type: "private", - variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isDisabled, - }, - { - path: "value", - type: "writable", - variableType: "text", - - valueProp: "value", - onChangeProp: "onChange", - }, - ], - [$props, $ctx, $refs] - ); - const $state = useDollarState(stateSpecs, { - $props, - $ctx, - $queries: {}, - $refs, - }); - - const [isRootFocusWithin, triggerRootFocusWithinProps] = useTrigger( - "useFocusedWithin", - {} - ); - const [isRootFocusVisibleWithin, triggerRootFocusVisibleWithinProps] = - useTrigger("useFocusVisibleWithin", { - isTextInput: false, - }); - const triggers = { - focusWithinFocusVisibleWithin_root: - isRootFocusWithin && isRootFocusVisibleWithin, - }; - - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); - - return ( - -
- { - $refs["trigger"] = ref; - }} - > -
- {( - hasVariant($state, "showPlaceholder", "showPlaceholder") - ? false - : true - ) - ? renderPlasmicSlot({ - defaultContents: "Selected", - value: args.selectedContent, - className: classNames(sty.slotTargetSelectedContent, { - [sty.slotTargetSelectedContentisDisabled]: hasVariant( - $state, - "isDisabled", - "isDisabled" - ), - [sty.slotTargetSelectedContentisOpen]: hasVariant( - $state, - "isOpen", - "isOpen" - ), - [sty.slotTargetSelectedContentshowPlaceholder]: hasVariant( - $state, - "showPlaceholder", - "showPlaceholder" - ), - }), - }) - : null} - {( - hasVariant($state, "showPlaceholder", "showPlaceholder") - ? true - : false - ) - ? renderPlasmicSlot({ - defaultContents: "Select\u2026", - value: args.placeholder, - className: classNames(sty.slotTargetPlaceholder, { - [sty.slotTargetPlaceholdershowPlaceholder]: hasVariant( - $state, - "showPlaceholder", - "showPlaceholder" - ), - }), - }) - : null} -
- {(hasVariant($state, "isDisabled", "isDisabled") ? false : true) ? ( - - ) : null} -
- {(hasVariant($state, "isOpen", "isOpen") ? true : false) ? ( - -
- {renderPlasmicSlot({ - defaultContents: ( - - - {"Option 1"} - - - {"Option 2"} - - - ), - value: args.children, - })} -
-
- ) : null} -
-
- ) as React.ReactElement | null; -} - -function useBehavior

( - props: P, - ref: pp.SelectRef -) { - if (!("options" in props)) { - if (!("children" in props)) { - props = { - ...props, - children: ( - - - {"Option 1"} - - - {"Option 2"} - - - ), - }; - } - } - return pp.useSelect( - PlasmicHostProtocolSelect, - props, - { - ...{ - isOpenVariant: { group: "isOpen", variant: "isOpen" }, - placeholderVariant: { - group: "showPlaceholder", - variant: "showPlaceholder", - }, - isDisabledVariant: { group: "isDisabled", variant: "isDisabled" }, - triggerContentSlot: "selectedContent", - optionsSlot: "children", - placeholderSlot: "placeholder", - root: "root", - trigger: "trigger", - overlay: "overlay", - optionsContainer: "optionsContainer", - }, - OptionComponent: HostProtocolSelect__Option, - OptionGroupComponent: HostProtocolSelect__OptionGroup, - }, - ref - ); -} - -const PlasmicDescendants = { - root: [ - "root", - "trigger", - "contentContainer", - "dropdownIcon", - "overlay", - "optionsContainer", - ], - trigger: ["trigger", "contentContainer", "dropdownIcon"], - contentContainer: ["contentContainer"], - dropdownIcon: ["dropdownIcon"], - overlay: ["overlay", "optionsContainer"], - optionsContainer: ["optionsContainer"], -} as const; -type NodeNameType = keyof typeof PlasmicDescendants; -type DescendantsType = - (typeof PlasmicDescendants)[T][number]; -type NodeDefaultElementType = { - root: "div"; - trigger: "button"; - contentContainer: "div"; - dropdownIcon: "svg"; - overlay: typeof HostProtocolSelect__Overlay; - optionsContainer: "div"; -}; - -type ReservedPropsType = "variants" | "args" | "overrides"; -type NodeOverridesType = Pick< - PlasmicHostProtocolSelect__OverridesType, - DescendantsType ->; -type NodeComponentProps = - // Explicitly specify variants, args, and overrides as objects - { - variants?: PlasmicHostProtocolSelect__VariantsArgs; - args?: PlasmicHostProtocolSelect__ArgsType; - overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props - // Specify args directly as props - Omit & - // Specify overrides for each element directly as props - Omit< - NodeOverridesType, - ReservedPropsType | VariantPropType | ArgPropType - > & - // Specify props for the root element - Omit< - Partial>, - ReservedPropsType | VariantPropType | ArgPropType | DescendantsType - >; - -function makeNodeComponent(nodeName: NodeName) { - type PropsType = NodeComponentProps & { key?: React.Key }; - const func = function ( - props: T & StrictProps - ) { - const { variants, args, overrides } = React.useMemo( - () => - deriveRenderOpts(props, { - name: nodeName, - descendantNames: PlasmicDescendants[nodeName], - internalArgPropNames: PlasmicHostProtocolSelect__ArgProps, - internalVariantPropNames: PlasmicHostProtocolSelect__VariantProps, - }), - [props, nodeName] - ); - return PlasmicHostProtocolSelect__RenderFunc({ - variants, - args, - overrides, - forNode: nodeName, - }); - }; - if (nodeName === "root") { - func.displayName = "PlasmicHostProtocolSelect"; - } else { - func.displayName = `PlasmicHostProtocolSelect.${nodeName}`; - } - return func; -} - -export const PlasmicHostProtocolSelect = Object.assign( - // Top-level PlasmicHostProtocolSelect renders the root element - makeNodeComponent("root"), - { - // Helper components rendering sub-elements - trigger: makeNodeComponent("trigger"), - contentContainer: makeNodeComponent("contentContainer"), - dropdownIcon: makeNodeComponent("dropdownIcon"), - overlay: makeNodeComponent("overlay"), - optionsContainer: makeNodeComponent("optionsContainer"), - - // Metadata about props expected for PlasmicHostProtocolSelect - internalVariantProps: PlasmicHostProtocolSelect__VariantProps, - internalArgProps: PlasmicHostProtocolSelect__ArgProps, - - // Context for sub components - Context: PlasmicHostProtocolSelectContext, - - useBehavior, - } -); - -export default PlasmicHostProtocolSelect; -/* prettier-ignore-end */ diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__Option.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__Option.module.css deleted file mode 100644 index 20f12f14c7..0000000000 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__Option.module.css +++ /dev/null @@ -1,94 +0,0 @@ -.root { - display: flex; - flex-direction: row; - position: relative; - width: 100%; - height: 32px; - align-items: center; - justify-content: flex-start; - min-width: 0; - padding: 4px 16px; -} -.rootisSelected { - background: var(--token-dqEx_KxIoYV); -} -.rootisHighlighted { - background: var(--token-bV4cCeIniS6); -} -.rootisDisabled { - opacity: 0.5; - cursor: not-allowed; -} -.labelContainer { - display: flex; - position: relative; - flex-direction: row; - align-items: stretch; - justify-content: flex-start; -} -.slotTargetChildren { - white-space: pre; -} -.slotTargetChildren > :global(.__wab_text), -.slotTargetChildren > :global(.__wab_expr_html_text), -.slotTargetChildren > :global(.__wab_slot-string-wrapper), -.slotTargetChildren > :global(.__wab_slot) > :global(.__wab_text), -.slotTargetChildren > :global(.__wab_slot) > :global(.__wab_expr_html_text), -.slotTargetChildren - > :global(.__wab_slot) - > :global(.__wab_slot-string-wrapper), -.slotTargetChildren - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_text), -.slotTargetChildren - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_expr_html_text), -.slotTargetChildren - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot-string-wrapper), -.slotTargetChildren - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_text), -.slotTargetChildren - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_expr_html_text), -.slotTargetChildren - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot-string-wrapper) { - text-overflow: ellipsis; -} -.slotTargetChildren > *, -.slotTargetChildren > :global(.__wab_slot) > *, -.slotTargetChildren > :global(.__wab_slot) > :global(.__wab_slot) > *, -.slotTargetChildren - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > *, -.slotTargetChildren > picture > img, -.slotTargetChildren > :global(.__wab_slot) > picture > img, -.slotTargetChildren - > :global(.__wab_slot) - > :global(.__wab_slot) - > picture - > img, -.slotTargetChildren - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > picture - > img { - overflow: hidden; -} -.slotTargetChildrenisSelected { - color: var(--token-VUsIDivgUss); -} diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__Option.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__Option.tsx deleted file mode 100644 index e082cda856..0000000000 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__Option.tsx +++ /dev/null @@ -1,330 +0,0 @@ -/* eslint-disable */ -/* tslint:disable */ -// @ts-nocheck -/* prettier-ignore-start */ - -/** @jsxRuntime classic */ -/** @jsx createPlasmicElementProxy */ -/** @jsxFrag React.Fragment */ - -// This class is auto-generated by Plasmic; please do not edit! -// Plasmic Project: ooL7EhXDmFQWnW9sxtchhE -// Component: aHgWgR3OVni - -import * as React from "react"; - -import { - Flex as Flex__, - SingleBooleanChoiceArg, - StrictProps, - classNames, - createPlasmicElementProxy, - deriveRenderOpts, - ensureGlobalVariants, - hasVariant, - renderPlasmicSlot, - useDollarState, -} from "@plasmicapp/react-web"; -import { useDataEnv } from "@plasmicapp/react-web/lib/host"; - -import * as pp from "@plasmicapp/react-web"; - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant - -import "@plasmicapp/react-web/lib/plasmic.css"; - -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import sty from "./PlasmicHostProtocolSelect__Option.module.css"; // plasmic-import: aHgWgR3OVni/css - -import SUPER__PlasmicHostProtocolSelect from "./PlasmicHostProtocolSelect"; // plasmic-import: 6_CfQ5GVLku/render - -createPlasmicElementProxy; - -export type PlasmicHostProtocolSelect__Option__VariantMembers = { - isSelected: "isSelected"; - isHighlighted: "isHighlighted"; - isDisabled: "isDisabled"; -}; -export type PlasmicHostProtocolSelect__Option__VariantsArgs = { - isSelected?: SingleBooleanChoiceArg<"isSelected">; - isHighlighted?: SingleBooleanChoiceArg<"isHighlighted">; - isDisabled?: SingleBooleanChoiceArg<"isDisabled">; -}; -type VariantPropType = keyof PlasmicHostProtocolSelect__Option__VariantsArgs; -export const PlasmicHostProtocolSelect__Option__VariantProps = - new Array("isSelected", "isHighlighted", "isDisabled"); - -export type PlasmicHostProtocolSelect__Option__ArgsType = { - children?: React.ReactNode; - value?: string; - textValue?: string; -}; -type ArgPropType = keyof PlasmicHostProtocolSelect__Option__ArgsType; -export const PlasmicHostProtocolSelect__Option__ArgProps = - new Array("children", "value", "textValue"); - -export type PlasmicHostProtocolSelect__Option__OverridesType = { - root?: Flex__<"div">; - labelContainer?: Flex__<"div">; -}; - -export interface DefaultHostProtocolSelect__OptionProps - extends pp.BaseSelectOptionProps {} - -const $$ = {}; - -function PlasmicHostProtocolSelect__Option__RenderFunc(props: { - variants: PlasmicHostProtocolSelect__Option__VariantsArgs; - args: PlasmicHostProtocolSelect__Option__ArgsType; - overrides: PlasmicHostProtocolSelect__Option__OverridesType; - forNode?: string; -}) { - const { variants, overrides, forNode } = props; - - const args = React.useMemo( - () => - Object.assign( - {}, - Object.fromEntries( - Object.entries(props.args).filter(([_, v]) => v !== undefined) - ) - ), - [props.args] - ); - - const $props = { - ...args, - ...variants, - }; - - const $ctx = useDataEnv?.() || {}; - const refsRef = React.useRef({}); - const $refs = refsRef.current; - - const stateSpecs: Parameters[0] = React.useMemo( - () => [ - { - path: "isSelected", - type: "private", - variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isSelected, - }, - { - path: "isHighlighted", - type: "private", - variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isHighlighted, - }, - { - path: "isDisabled", - type: "private", - variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isDisabled, - }, - ], - [$props, $ctx, $refs] - ); - const $state = useDollarState(stateSpecs, { - $props, - $ctx, - $queries: {}, - $refs, - }); - - const superContexts = { - HostProtocolSelect: React.useContext( - SUPER__PlasmicHostProtocolSelect.Context - ), - }; - - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); - - return ( -

-
- {renderPlasmicSlot({ - defaultContents: "Option", - value: args.children, - className: classNames(sty.slotTargetChildren, { - [sty.slotTargetChildrenisHighlighted]: hasVariant( - $state, - "isHighlighted", - "isHighlighted" - ), - [sty.slotTargetChildrenisSelected]: hasVariant( - $state, - "isSelected", - "isSelected" - ), - }), - })} -
-
- ) as React.ReactElement | null; -} - -function useBehavior

( - props: P, - ref: pp.SelectOptionRef -) { - return pp.useSelectOption( - PlasmicHostProtocolSelect__Option, - props, - { - isSelectedVariant: { group: "isSelected", variant: "isSelected" }, - isDisabledVariant: { group: "isDisabled", variant: "isDisabled" }, - isHighlightedVariant: { - group: "isHighlighted", - variant: "isHighlighted", - }, - labelSlot: "children", - root: "root", - labelContainer: "labelContainer", - }, - ref - ); -} - -const PlasmicDescendants = { - root: ["root", "labelContainer"], - labelContainer: ["labelContainer"], -} as const; -type NodeNameType = keyof typeof PlasmicDescendants; -type DescendantsType = - (typeof PlasmicDescendants)[T][number]; -type NodeDefaultElementType = { - root: "div"; - labelContainer: "div"; -}; - -type ReservedPropsType = "variants" | "args" | "overrides"; -type NodeOverridesType = Pick< - PlasmicHostProtocolSelect__Option__OverridesType, - DescendantsType ->; -type NodeComponentProps = - // Explicitly specify variants, args, and overrides as objects - { - variants?: PlasmicHostProtocolSelect__Option__VariantsArgs; - args?: PlasmicHostProtocolSelect__Option__ArgsType; - overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props - // Specify args directly as props - Omit & - // Specify overrides for each element directly as props - Omit< - NodeOverridesType, - ReservedPropsType | VariantPropType | ArgPropType - > & - // Specify props for the root element - Omit< - Partial>, - ReservedPropsType | VariantPropType | ArgPropType | DescendantsType - >; - -function makeNodeComponent(nodeName: NodeName) { - type PropsType = NodeComponentProps & { key?: React.Key }; - const func = function ( - props: T & StrictProps - ) { - const { variants, args, overrides } = React.useMemo( - () => - deriveRenderOpts(props, { - name: nodeName, - descendantNames: PlasmicDescendants[nodeName], - internalArgPropNames: PlasmicHostProtocolSelect__Option__ArgProps, - internalVariantPropNames: - PlasmicHostProtocolSelect__Option__VariantProps, - }), - [props, nodeName] - ); - return PlasmicHostProtocolSelect__Option__RenderFunc({ - variants, - args, - overrides, - forNode: nodeName, - }); - }; - if (nodeName === "root") { - func.displayName = "PlasmicHostProtocolSelect__Option"; - } else { - func.displayName = `PlasmicHostProtocolSelect__Option.${nodeName}`; - } - return func; -} - -export const PlasmicHostProtocolSelect__Option = Object.assign( - // Top-level PlasmicHostProtocolSelect__Option renders the root element - makeNodeComponent("root"), - { - // Helper components rendering sub-elements - labelContainer: makeNodeComponent("labelContainer"), - - // Metadata about props expected for PlasmicHostProtocolSelect__Option - internalVariantProps: PlasmicHostProtocolSelect__Option__VariantProps, - internalArgProps: PlasmicHostProtocolSelect__Option__ArgProps, - - useBehavior, - } -); - -export default PlasmicHostProtocolSelect__Option; -/* prettier-ignore-end */ diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__OptionGroup.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__OptionGroup.module.css deleted file mode 100644 index 23fa4fa1f5..0000000000 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__OptionGroup.module.css +++ /dev/null @@ -1,104 +0,0 @@ -.root { - display: flex; - position: relative; - width: 100%; - height: auto; - flex-direction: column; - background: #ffffff; - min-width: 0; -} -.separator { - display: flex; - position: relative; - flex-direction: row; - align-items: stretch; - justify-content: flex-start; - height: 0px; - width: 100%; - min-width: 0; - flex-shrink: 0; - margin: 4px 0px; - border-top: 1px solid var(--token-hoA5qaM-91G); -} -.titleContainer { - display: flex; - position: relative; - flex-direction: row; - align-items: stretch; - justify-content: flex-start; - padding: 4px 8px; -} -.slotTargetTitle { - color: var(--token-UunsGa2Y3t3); - white-space: pre; - font-weight: 600; -} -.slotTargetTitle > :global(.__wab_text), -.slotTargetTitle > :global(.__wab_expr_html_text), -.slotTargetTitle > :global(.__wab_slot-string-wrapper), -.slotTargetTitle > :global(.__wab_slot) > :global(.__wab_text), -.slotTargetTitle > :global(.__wab_slot) > :global(.__wab_expr_html_text), -.slotTargetTitle > :global(.__wab_slot) > :global(.__wab_slot-string-wrapper), -.slotTargetTitle - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_text), -.slotTargetTitle - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_expr_html_text), -.slotTargetTitle - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot-string-wrapper), -.slotTargetTitle - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_text), -.slotTargetTitle - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_expr_html_text), -.slotTargetTitle - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot-string-wrapper) { - text-overflow: ellipsis; -} -.slotTargetTitle > *, -.slotTargetTitle > :global(.__wab_slot) > *, -.slotTargetTitle > :global(.__wab_slot) > :global(.__wab_slot) > *, -.slotTargetTitle - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > *, -.slotTargetTitle > picture > img, -.slotTargetTitle > :global(.__wab_slot) > picture > img, -.slotTargetTitle > :global(.__wab_slot) > :global(.__wab_slot) > picture > img, -.slotTargetTitle - > :global(.__wab_slot) - > :global(.__wab_slot) - > :global(.__wab_slot) - > picture - > img { - overflow: hidden; -} -.optionsContainer { - display: flex; - position: relative; - flex-direction: column; - align-items: stretch; - justify-content: flex-start; -} -.option__f1Y1I:global(.__wab_instance) { - position: relative; - flex-shrink: 0; -} -.option__wbxSk:global(.__wab_instance) { - position: relative; - flex-shrink: 0; -} diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__OptionGroup.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__OptionGroup.tsx deleted file mode 100644 index 5c2febfe41..0000000000 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__OptionGroup.tsx +++ /dev/null @@ -1,358 +0,0 @@ -/* eslint-disable */ -/* tslint:disable */ -// @ts-nocheck -/* prettier-ignore-start */ - -/** @jsxRuntime classic */ -/** @jsx createPlasmicElementProxy */ -/** @jsxFrag React.Fragment */ - -// This class is auto-generated by Plasmic; please do not edit! -// Plasmic Project: ooL7EhXDmFQWnW9sxtchhE -// Component: FB-WsFik1_I - -import * as React from "react"; - -import { - Flex as Flex__, - SingleBooleanChoiceArg, - StrictProps, - classNames, - createPlasmicElementProxy, - deriveRenderOpts, - ensureGlobalVariants, - hasVariant, - renderPlasmicSlot, - useDollarState, -} from "@plasmicapp/react-web"; -import { useDataEnv } from "@plasmicapp/react-web/lib/host"; - -import * as pp from "@plasmicapp/react-web"; -import HostProtocolSelect__Option from "../../components/HostProtocolSelect__Option"; // plasmic-import: aHgWgR3OVni/component - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant - -import "@plasmicapp/react-web/lib/plasmic.css"; - -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import sty from "./PlasmicHostProtocolSelect__OptionGroup.module.css"; // plasmic-import: FB-WsFik1_I/css - -import SUPER__PlasmicHostProtocolSelect from "./PlasmicHostProtocolSelect"; // plasmic-import: 6_CfQ5GVLku/render - -createPlasmicElementProxy; - -export type PlasmicHostProtocolSelect__OptionGroup__VariantMembers = { - noTitle: "noTitle"; - isFirst: "isFirst"; -}; -export type PlasmicHostProtocolSelect__OptionGroup__VariantsArgs = { - noTitle?: SingleBooleanChoiceArg<"noTitle">; - isFirst?: SingleBooleanChoiceArg<"isFirst">; -}; -type VariantPropType = - keyof PlasmicHostProtocolSelect__OptionGroup__VariantsArgs; -export const PlasmicHostProtocolSelect__OptionGroup__VariantProps = - new Array("noTitle", "isFirst"); - -export type PlasmicHostProtocolSelect__OptionGroup__ArgsType = { - children?: React.ReactNode; - title?: React.ReactNode; -}; -type ArgPropType = keyof PlasmicHostProtocolSelect__OptionGroup__ArgsType; -export const PlasmicHostProtocolSelect__OptionGroup__ArgProps = - new Array("children", "title"); - -export type PlasmicHostProtocolSelect__OptionGroup__OverridesType = { - root?: Flex__<"div">; - separator?: Flex__<"div">; - titleContainer?: Flex__<"div">; - optionsContainer?: Flex__<"div">; -}; - -export interface DefaultHostProtocolSelect__OptionGroupProps - extends pp.BaseSelectOptionGroupProps { - title?: React.ReactNode; - noTitle?: SingleBooleanChoiceArg<"noTitle">; -} - -const $$ = {}; - -function PlasmicHostProtocolSelect__OptionGroup__RenderFunc(props: { - variants: PlasmicHostProtocolSelect__OptionGroup__VariantsArgs; - args: PlasmicHostProtocolSelect__OptionGroup__ArgsType; - overrides: PlasmicHostProtocolSelect__OptionGroup__OverridesType; - forNode?: string; -}) { - const { variants, overrides, forNode } = props; - - const args = React.useMemo( - () => - Object.assign( - {}, - Object.fromEntries( - Object.entries(props.args).filter(([_, v]) => v !== undefined) - ) - ), - [props.args] - ); - - const $props = { - ...args, - ...variants, - }; - - const $ctx = useDataEnv?.() || {}; - const refsRef = React.useRef({}); - const $refs = refsRef.current; - - const stateSpecs: Parameters[0] = React.useMemo( - () => [ - { - path: "noTitle", - type: "private", - variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.noTitle, - }, - { - path: "isFirst", - type: "private", - variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isFirst, - }, - ], - [$props, $ctx, $refs] - ); - const $state = useDollarState(stateSpecs, { - $props, - $ctx, - $queries: {}, - $refs, - }); - - const superContexts = { - HostProtocolSelect: React.useContext( - SUPER__PlasmicHostProtocolSelect.Context - ), - }; - - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); - - return ( -

- {(hasVariant($state, "isFirst", "isFirst") ? false : true) ? ( -
- ) : null} - {(hasVariant($state, "noTitle", "noTitle") ? false : true) ? ( -
- {renderPlasmicSlot({ - defaultContents: "Group Name", - value: args.title, - className: classNames(sty.slotTargetTitle, { - [sty.slotTargetTitleisFirst]: hasVariant( - $state, - "isFirst", - "isFirst" - ), - }), - })} -
- ) : null} -
- {renderPlasmicSlot({ - defaultContents: ( - - - - - - ), - value: args.children, - })} -
-
- ) as React.ReactElement | null; -} - -function useBehavior

(props: P) { - return pp.useSelectOptionGroup( - PlasmicHostProtocolSelect__OptionGroup, - props, - { - noTitleVariant: { group: "noTitle", variant: "noTitle" }, - isFirstVariant: { group: "isFirst", variant: "isFirst" }, - optionsSlot: "children", - titleSlot: "title", - root: "root", - separator: "separator", - titleContainer: "titleContainer", - optionsContainer: "optionsContainer", - } - ); -} - -const PlasmicDescendants = { - root: ["root", "separator", "titleContainer", "optionsContainer"], - separator: ["separator"], - titleContainer: ["titleContainer"], - optionsContainer: ["optionsContainer"], -} as const; -type NodeNameType = keyof typeof PlasmicDescendants; -type DescendantsType = - (typeof PlasmicDescendants)[T][number]; -type NodeDefaultElementType = { - root: "div"; - separator: "div"; - titleContainer: "div"; - optionsContainer: "div"; -}; - -type ReservedPropsType = "variants" | "args" | "overrides"; -type NodeOverridesType = Pick< - PlasmicHostProtocolSelect__OptionGroup__OverridesType, - DescendantsType ->; -type NodeComponentProps = - // Explicitly specify variants, args, and overrides as objects - { - variants?: PlasmicHostProtocolSelect__OptionGroup__VariantsArgs; - args?: PlasmicHostProtocolSelect__OptionGroup__ArgsType; - overrides?: NodeOverridesType; - } & Omit< - // Specify variants directly as props - PlasmicHostProtocolSelect__OptionGroup__VariantsArgs, - ReservedPropsType - > & - // Specify args directly as props - Omit & - // Specify overrides for each element directly as props - Omit< - NodeOverridesType, - ReservedPropsType | VariantPropType | ArgPropType - > & - // Specify props for the root element - Omit< - Partial>, - ReservedPropsType | VariantPropType | ArgPropType | DescendantsType - >; - -function makeNodeComponent(nodeName: NodeName) { - type PropsType = NodeComponentProps & { key?: React.Key }; - const func = function ( - props: T & StrictProps - ) { - const { variants, args, overrides } = React.useMemo( - () => - deriveRenderOpts(props, { - name: nodeName, - descendantNames: PlasmicDescendants[nodeName], - internalArgPropNames: - PlasmicHostProtocolSelect__OptionGroup__ArgProps, - internalVariantPropNames: - PlasmicHostProtocolSelect__OptionGroup__VariantProps, - }), - [props, nodeName] - ); - return PlasmicHostProtocolSelect__OptionGroup__RenderFunc({ - variants, - args, - overrides, - forNode: nodeName, - }); - }; - if (nodeName === "root") { - func.displayName = "PlasmicHostProtocolSelect__OptionGroup"; - } else { - func.displayName = `PlasmicHostProtocolSelect__OptionGroup.${nodeName}`; - } - return func; -} - -export const PlasmicHostProtocolSelect__OptionGroup = Object.assign( - // Top-level PlasmicHostProtocolSelect__OptionGroup renders the root element - makeNodeComponent("root"), - { - // Helper components rendering sub-elements - separator: makeNodeComponent("separator"), - titleContainer: makeNodeComponent("titleContainer"), - optionsContainer: makeNodeComponent("optionsContainer"), - - // Metadata about props expected for PlasmicHostProtocolSelect__OptionGroup - internalVariantProps: PlasmicHostProtocolSelect__OptionGroup__VariantProps, - internalArgProps: PlasmicHostProtocolSelect__OptionGroup__ArgProps, - - useBehavior, - } -); - -export default PlasmicHostProtocolSelect__OptionGroup; -/* prettier-ignore-end */ diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__Overlay.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__Overlay.module.css deleted file mode 100644 index 85d576b548..0000000000 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__Overlay.module.css +++ /dev/null @@ -1,74 +0,0 @@ -.root { - display: inline-flex; - flex-direction: column; - position: relative; - width: auto; - height: auto; -} -.top { - display: flex; - position: relative; - flex-direction: row; - align-items: stretch; - justify-content: flex-start; -} -.toprelativePlacement_bottom { - height: 2px; - flex-shrink: 0; -} -.middle { - display: flex; - position: relative; - flex-direction: row; - align-items: stretch; - justify-content: flex-start; - height: 100%; - min-height: 0; -} -.left { - display: flex; - position: relative; - flex-direction: column; - align-items: stretch; - justify-content: flex-start; -} -.leftrelativePlacement_right { - width: 2px; - flex-shrink: 0; -} -.main { - box-shadow: 0px 8px 32px -8px var(--token-XeFw4MGauXBT), - 0px 8px 20px -16px var(--token-JrjdlBU-a5Ju); - position: relative; - align-items: stretch; - justify-content: flex-start; - width: 100%; - overflow: hidden; - display: flex; - flex-direction: column; - background: var(--token-iR8SeEwQZ); - min-width: 0; - border-radius: 4px; -} -.right { - display: flex; - position: relative; - flex-direction: column; - align-items: stretch; - justify-content: flex-start; -} -.rightrelativePlacement_left { - width: 1px; - flex-shrink: 0; -} -.bottom { - display: flex; - position: relative; - flex-direction: row; - align-items: stretch; - justify-content: flex-start; -} -.bottomrelativePlacement_top { - height: 2px; - flex-shrink: 0; -} diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__Overlay.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__Overlay.tsx deleted file mode 100644 index 337bd97110..0000000000 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostProtocolSelect__Overlay.tsx +++ /dev/null @@ -1,410 +0,0 @@ -/* eslint-disable */ -/* tslint:disable */ -// @ts-nocheck -/* prettier-ignore-start */ - -/** @jsxRuntime classic */ -/** @jsx createPlasmicElementProxy */ -/** @jsxFrag React.Fragment */ - -// This class is auto-generated by Plasmic; please do not edit! -// Plasmic Project: ooL7EhXDmFQWnW9sxtchhE -// Component: WAelYWWWRyr - -import * as React from "react"; - -import { - Flex as Flex__, - SingleChoiceArg, - StrictProps, - classNames, - createPlasmicElementProxy, - deriveRenderOpts, - ensureGlobalVariants, - hasVariant, - renderPlasmicSlot, - useDollarState, -} from "@plasmicapp/react-web"; -import { useDataEnv } from "@plasmicapp/react-web/lib/host"; - -import * as pp from "@plasmicapp/react-web"; - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant - -import "@plasmicapp/react-web/lib/plasmic.css"; - -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import sty from "./PlasmicHostProtocolSelect__Overlay.module.css"; // plasmic-import: WAelYWWWRyr/css - -import SUPER__PlasmicHostProtocolSelect from "./PlasmicHostProtocolSelect"; // plasmic-import: 6_CfQ5GVLku/render - -createPlasmicElementProxy; - -export type PlasmicHostProtocolSelect__Overlay__VariantMembers = { - relativePlacement: "top" | "bottom" | "left" | "right"; -}; -export type PlasmicHostProtocolSelect__Overlay__VariantsArgs = { - relativePlacement?: SingleChoiceArg<"top" | "bottom" | "left" | "right">; -}; -type VariantPropType = keyof PlasmicHostProtocolSelect__Overlay__VariantsArgs; -export const PlasmicHostProtocolSelect__Overlay__VariantProps = - new Array("relativePlacement"); - -export type PlasmicHostProtocolSelect__Overlay__ArgsType = { - children?: React.ReactNode; -}; -type ArgPropType = keyof PlasmicHostProtocolSelect__Overlay__ArgsType; -export const PlasmicHostProtocolSelect__Overlay__ArgProps = - new Array("children"); - -export type PlasmicHostProtocolSelect__Overlay__OverridesType = { - root?: Flex__<"div">; - top?: Flex__<"div">; - middle?: Flex__<"div">; - left?: Flex__<"div">; - main?: Flex__<"div">; - right?: Flex__<"div">; - bottom?: Flex__<"div">; -}; - -export interface DefaultHostProtocolSelect__OverlayProps - extends pp.BaseTriggeredOverlayProps { - children?: React.ReactNode; -} - -const $$ = {}; - -function PlasmicHostProtocolSelect__Overlay__RenderFunc(props: { - variants: PlasmicHostProtocolSelect__Overlay__VariantsArgs; - args: PlasmicHostProtocolSelect__Overlay__ArgsType; - overrides: PlasmicHostProtocolSelect__Overlay__OverridesType; - forNode?: string; -}) { - const { variants, overrides, forNode } = props; - - const args = React.useMemo( - () => - Object.assign( - {}, - Object.fromEntries( - Object.entries(props.args).filter(([_, v]) => v !== undefined) - ) - ), - [props.args] - ); - - const $props = { - ...args, - ...variants, - }; - - const $ctx = useDataEnv?.() || {}; - const refsRef = React.useRef({}); - const $refs = refsRef.current; - - const stateSpecs: Parameters[0] = React.useMemo( - () => [ - { - path: "relativePlacement", - type: "private", - variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => - $props.relativePlacement, - }, - ], - [$props, $ctx, $refs] - ); - const $state = useDollarState(stateSpecs, { - $props, - $ctx, - $queries: {}, - $refs, - }); - - const superContexts = { - HostProtocolSelect: React.useContext( - SUPER__PlasmicHostProtocolSelect.Context - ), - }; - - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); - - return ( -

- {(hasVariant($state, "relativePlacement", "bottom") ? true : false) ? ( -
- ) : null} -
- {(hasVariant($state, "relativePlacement", "right") ? true : false) ? ( -
- ) : null} -
- {renderPlasmicSlot({ - defaultContents: null, - value: args.children, - })} -
- {(hasVariant($state, "relativePlacement", "left") ? true : false) ? ( -
- ) : null} -
- {(hasVariant($state, "relativePlacement", "top") ? true : false) ? ( -
- ) : null} -
- ) as React.ReactElement | null; -} - -function useBehavior

( - props: P, - ref: pp.TriggeredOverlayRef -) { - return pp.useTriggeredOverlay( - PlasmicHostProtocolSelect__Overlay, - props, - { - isPlacedTopVariant: { group: "relativePlacement", variant: "top" }, - isPlacedBottomVariant: { group: "relativePlacement", variant: "bottom" }, - isPlacedLeftVariant: { group: "relativePlacement", variant: "left" }, - isPlacedRightVariant: { group: "relativePlacement", variant: "right" }, - contentSlot: "children", - root: "root", - }, - ref - ); -} - -const PlasmicDescendants = { - root: ["root", "top", "middle", "left", "main", "right", "bottom"], - top: ["top"], - middle: ["middle", "left", "main", "right"], - left: ["left"], - main: ["main"], - right: ["right"], - bottom: ["bottom"], -} as const; -type NodeNameType = keyof typeof PlasmicDescendants; -type DescendantsType = - (typeof PlasmicDescendants)[T][number]; -type NodeDefaultElementType = { - root: "div"; - top: "div"; - middle: "div"; - left: "div"; - main: "div"; - right: "div"; - bottom: "div"; -}; - -type ReservedPropsType = "variants" | "args" | "overrides"; -type NodeOverridesType = Pick< - PlasmicHostProtocolSelect__Overlay__OverridesType, - DescendantsType ->; -type NodeComponentProps = - // Explicitly specify variants, args, and overrides as objects - { - variants?: PlasmicHostProtocolSelect__Overlay__VariantsArgs; - args?: PlasmicHostProtocolSelect__Overlay__ArgsType; - overrides?: NodeOverridesType; - } & Omit< - // Specify variants directly as props - PlasmicHostProtocolSelect__Overlay__VariantsArgs, - ReservedPropsType - > & - // Specify args directly as props - Omit & - // Specify overrides for each element directly as props - Omit< - NodeOverridesType, - ReservedPropsType | VariantPropType | ArgPropType - > & - // Specify props for the root element - Omit< - Partial>, - ReservedPropsType | VariantPropType | ArgPropType | DescendantsType - >; - -function makeNodeComponent(nodeName: NodeName) { - type PropsType = NodeComponentProps & { key?: React.Key }; - const func = function ( - props: T & StrictProps - ) { - const { variants, args, overrides } = React.useMemo( - () => - deriveRenderOpts(props, { - name: nodeName, - descendantNames: PlasmicDescendants[nodeName], - internalArgPropNames: PlasmicHostProtocolSelect__Overlay__ArgProps, - internalVariantPropNames: - PlasmicHostProtocolSelect__Overlay__VariantProps, - }), - [props, nodeName] - ); - return PlasmicHostProtocolSelect__Overlay__RenderFunc({ - variants, - args, - overrides, - forNode: nodeName, - }); - }; - if (nodeName === "root") { - func.displayName = "PlasmicHostProtocolSelect__Overlay"; - } else { - func.displayName = `PlasmicHostProtocolSelect__Overlay.${nodeName}`; - } - return func; -} - -export const PlasmicHostProtocolSelect__Overlay = Object.assign( - // Top-level PlasmicHostProtocolSelect__Overlay renders the root element - makeNodeComponent("root"), - { - // Helper components rendering sub-elements - top: makeNodeComponent("top"), - middle: makeNodeComponent("middle"), - left: makeNodeComponent("left"), - main: makeNodeComponent("main"), - right: makeNodeComponent("right"), - bottom: makeNodeComponent("bottom"), - - // Metadata about props expected for PlasmicHostProtocolSelect__Overlay - internalVariantProps: PlasmicHostProtocolSelect__Overlay__VariantProps, - internalArgProps: PlasmicHostProtocolSelect__Overlay__ArgProps, - - useBehavior, - } -); - -export default PlasmicHostProtocolSelect__Overlay; -/* prettier-ignore-end */ diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostUrlInput.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostUrlInput.module.css index 45313d39b3..37e542f3aa 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostUrlInput.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostUrlInput.module.css @@ -2,53 +2,27 @@ display: flex; flex-direction: column; position: relative; + align-items: center; + justify-content: flex-start; width: 100%; height: auto; background: rgb(255, 255, 255); box-shadow: inset 0px 0px 0px 1px var(--token-hoA5qaM-91G); opacity: 1; + row-gap: 8px; min-width: 0; border-radius: 8px; padding: 8px; } -.root > :global(.__wab_flex-container) { - flex-direction: column; - align-items: center; - justify-content: flex-start; - min-width: 0; - margin-top: calc(0px - 8px); - height: calc(100% + 8px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-top: 8px; -} .freeBox__ycLvv { display: flex; flex-direction: row; width: 100%; height: auto; opacity: 1; - min-width: 0; -} -.freeBox__ycLvv > :global(.__wab_flex-container) { - flex-direction: row; align-items: center; + column-gap: 8px; min-width: 0; - margin-left: calc(0px - 8px); - width: calc(100% + 8px); -} -.freeBox__ycLvv > :global(.__wab_flex-container) > *, -.freeBox__ycLvv > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox__ycLvv > :global(.__wab_flex-container) > picture > img, -.freeBox__ycLvv - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 8px; } .text__g2NsR { position: relative; @@ -56,31 +30,6 @@ width: auto; white-space: pre; } -.hostProtocolSelect:global(.__wab_instance) { - position: relative; -} -.option__jSgyS:global(.__wab_instance) { - position: relative; -} -.option__nopaD:global(.__wab_instance) { - position: relative; -} -.urlInput { - position: relative; - width: 100%; - margin-left: calc(-9px + 8px) !important; - border-top-right-radius: 6px; - border-bottom-right-radius: 6px; - min-width: 0; - padding: 7px; - border: 1px solid var(--token-hoA5qaM-91G); -} -.urlInputurlValidationStatus_invalid { - margin-left: calc(-9px + 8px) !important; -} -.urlInputurlValidationStatus_valid { - margin-left: calc(-9px + 8px) !important; -} .clearButton:global(.__wab_instance) { position: relative; } @@ -124,27 +73,12 @@ .freeBox__bFmsS { flex-direction: column; position: relative; - width: 100%; - min-width: 0; - display: none; -} -.freeBox__bFmsS > :global(.__wab_flex-container) { - flex-direction: column; align-items: center; justify-content: flex-start; + width: 100%; + row-gap: 4px; min-width: 0; - margin-top: calc(0px - 4px); - height: calc(100% + 4px); -} -.freeBox__bFmsS > :global(.__wab_flex-container) > *, -.freeBox__bFmsS > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox__bFmsS > :global(.__wab_flex-container) > picture > img, -.freeBox__bFmsS - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-top: 4px; + display: none; } .freeBoxshowPlasmicHostValidations__bFmsSiDwTg { display: flex; @@ -154,26 +88,11 @@ height: auto; max-width: 100%; display: flex; - flex-direction: row; - min-width: 0; -} -.freeBox__oOj3 > :global(.__wab_flex-container) { flex-direction: row; justify-content: flex-start; align-items: center; + column-gap: 4px; min-width: 0; - margin-left: calc(0px - 4px); - width: calc(100% + 4px); -} -.freeBox__oOj3 > :global(.__wab_flex-container) > *, -.freeBox__oOj3 > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox__oOj3 > :global(.__wab_flex-container) > picture > img, -.freeBox__oOj3 - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 4px; } .svg__k9HiC { object-fit: cover; @@ -204,26 +123,11 @@ height: auto; max-width: 100%; display: flex; - flex-direction: row; - min-width: 0; -} -.freeBox__g5LjN > :global(.__wab_flex-container) { flex-direction: row; justify-content: flex-start; align-items: center; + column-gap: 4px; min-width: 0; - margin-left: calc(0px - 4px); - width: calc(100% + 4px); -} -.freeBox__g5LjN > :global(.__wab_flex-container) > *, -.freeBox__g5LjN > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox__g5LjN > :global(.__wab_flex-container) > picture > img, -.freeBox__g5LjN - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 4px; } .svg__pyf5U { object-fit: cover; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostUrlInput.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostUrlInput.tsx index 05d422f3e9..2bf3982368 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostUrlInput.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicHostUrlInput.tsx @@ -14,34 +14,28 @@ import * as React from "react"; import { - Flex as Flex__, - SingleBooleanChoiceArg, - SingleChoiceArg, - Stack as Stack__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, + Flex as Flex__, generateStateOnChangeProp, generateStateValueProp, hasVariant, + SingleBooleanChoiceArg, + SingleChoiceArg, + StrictProps, useDollarState, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; -import HostProtocolSelect from "../../components/HostProtocolSelect"; // plasmic-import: 6_CfQ5GVLku/component -import HostProtocolSelect__Option from "../../components/HostProtocolSelect__Option"; // plasmic-import: aHgWgR3OVni/component +import TextInput from "../../components/plexus/TextInput"; // plasmic-import: J_e2eE41048e/component import Button from "../../components/widgets/Button"; // plasmic-import: SEF-sRmSoqV5c/component - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicHostUrlInput.module.css"; // plasmic-import: XxbnrpTDqu/css import InfoIcon from "../plasmic_kit/PlasmicIcon__Info"; // plasmic-import: BjAly3N4fWuWe/icon @@ -73,8 +67,7 @@ export const PlasmicHostUrlInput__ArgProps = new Array(); export type PlasmicHostUrlInput__OverridesType = { root?: Flex__<"div">; - hostProtocolSelect?: Flex__; - urlInput?: Flex__<"input">; + urlInput?: Flex__; clearButton?: Flex__; confirmButton?: Flex__; }; @@ -118,89 +111,64 @@ function PlasmicHostUrlInput__RenderFunc(props: { const stateSpecs: Parameters[0] = React.useMemo( () => [ - { - path: "hostProtocolSelect.value", - type: "private", - variableType: "text", - initFunc: ({ $props, $state, $queries, $ctx }) => "https://", - }, - { - path: "urlInput.value", - type: "private", - variableType: "text", - initFunc: ({ $props, $state, $queries, $ctx }) => undefined, - }, { path: "urlValidationStatus", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.urlValidationStatus, }, { path: "urlPathStatus", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.urlPathStatus, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.urlPathStatus, }, { path: "showPlasmicHostValidations", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.showPlasmicHostValidations, }, + { + path: "urlInput.value", + type: "private", + variableType: "text", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props["defaultValue"], + }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return ( - -

{"URL:"}
- { - ((...eventArgs) => { - generateStateOnChangeProp($state, [ - "hostProtocolSelect", - "value", - ])(eventArgs[0]); - }).apply(null, eventArgs); + generateStateOnChangeProp($state, ["urlInput", "value"]).apply( + null, + eventArgs + ); if ( eventArgs.length > 1 && @@ -276,61 +234,8 @@ function PlasmicHostUrlInput__RenderFunc(props: { return; } }} - placeholder={"Select\u2026"} - value={generateStateValueProp($state, [ - "hostProtocolSelect", - "value", - ])} - > - - {"https://"} - - - {"http://"} - - - { - ((e) => { - generateStateOnChangeProp($state, ["urlInput", "value"])( - e.target.value - ); - }).apply(null, eventArgs); - }} - placeholder={"my-app.com/plasmic-host"} - ref={(ref) => { - $refs["urlInput"] = ref; - }} - size={1} - type={"text"} - value={generateStateValueProp($state, ["urlInput", "value"]) ?? ""} + placeholder={"https://my-app.com/plasmic-host"} + value={generateStateValueProp($state, ["urlInput", "value"])} /> @@ -371,34 +270,26 @@ function PlasmicHostUrlInput__RenderFunc(props: { disabled={true} endIcon={ } size={"wide"} startIcon={ } type={["primary"]} > -
+
{"Confirm"}
- - +
-
- {"Please enter a valid URL. Note that spaces are not allowed."} + {"Please enter a valid URL."}
-
- +
{"For standard configuration, the URL path should end with "} {"/plasmic-host"}
- - - +
+
+
) as React.ReactElement | null; } const PlasmicDescendants = { - root: [ - "root", - "hostProtocolSelect", - "urlInput", - "clearButton", - "confirmButton", - ], - hostProtocolSelect: ["hostProtocolSelect"], + root: ["root", "urlInput", "clearButton", "confirmButton"], urlInput: ["urlInput"], clearButton: ["clearButton"], confirmButton: ["confirmButton"], @@ -557,8 +435,7 @@ type DescendantsType = (typeof PlasmicDescendants)[T][number]; type NodeDefaultElementType = { root: "div"; - hostProtocolSelect: typeof HostProtocolSelect; - urlInput: "input"; + urlInput: typeof TextInput; clearButton: typeof Button; confirmButton: typeof Button; }; @@ -574,7 +451,8 @@ type NodeComponentProps = variants?: PlasmicHostUrlInput__VariantsArgs; args?: PlasmicHostUrlInput__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props @@ -623,7 +501,6 @@ export const PlasmicHostUrlInput = Object.assign( makeNodeComponent("root"), { // Helper components rendering sub-elements - hostProtocolSelect: makeNodeComponent("hostProtocolSelect"), urlInput: makeNodeComponent("urlInput"), clearButton: makeNodeComponent("clearButton"), confirmButton: makeNodeComponent("confirmButton"), diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicLink.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicLink.module.css index a84b242380..b26ceac592 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicLink.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicLink.module.css @@ -2,24 +2,11 @@ display: flex; cursor: pointer; position: relative; + column-gap: 4px; border-radius: 6px; padding: 8px 8px 8px 12px; } -.viewDocs > :global(.__wab_flex-container) { - margin-left: calc(0px - 4px); - width: calc(100% + 4px); -} -.viewDocs > :global(.__wab_flex-container) > *, -.viewDocs > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.viewDocs > :global(.__wab_flex-container) > picture > img, -.viewDocs - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 4px; -} -.viewDocs:focus { +.viewDocs:focus:focus { box-shadow: 0px 0px 0px 2px #0091ff80; outline: none; } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicLink.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicLink.tsx index a68c84b35d..811ae16455 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicLink.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicLink.tsx @@ -14,29 +14,25 @@ import * as React from "react"; import { - Flex as Flex__, - PlasmicLink as PlasmicLink__, - SingleBooleanChoiceArg, - Stack as Stack__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, + Flex as Flex__, hasVariant, + PlasmicLink as PlasmicLink__, renderPlasmicSlot, + SingleBooleanChoiceArg, + StrictProps, useDollarState, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicLink.module.css"; // plasmic-import: IQU7DmjqUs/css import ArrowUpRightSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__ArrowUpRightSvg"; // plasmic-import: N_BtK6grX/icon @@ -107,62 +103,40 @@ function PlasmicLink__RenderFunc(props: { path: "alt", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.alt, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.alt, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return ( - {renderPlasmicSlot({ defaultContents: ( ), @@ -191,7 +165,7 @@ function PlasmicLink__RenderFunc(props: { className: classNames(sty.slotTargetIcon), })}
- + ) as React.ReactElement | null; } @@ -218,7 +192,8 @@ type NodeComponentProps = variants?: PlasmicLink__VariantsArgs; args?: PlasmicLink__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicMenuItem.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicMenuItem.module.css index c273017ba6..ca7a9ed615 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicMenuItem.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicMenuItem.module.css @@ -11,38 +11,22 @@ position: relative; display: flex; flex-direction: row; - background: #ffffff00; + align-items: center; + justify-content: flex-start; width: 100%; + column-gap: 4px; min-width: 0; border-radius: 6px; padding: 8px; } -.freeBox > :global(.__wab_flex-container) { - flex-direction: row; - align-items: center; - justify-content: flex-start; - min-width: 0; - margin-left: calc(0px - 4px); - width: calc(100% + 4px); -} -.freeBox > :global(.__wab_flex-container) > *, -.freeBox > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox > :global(.__wab_flex-container) > picture > img, -.freeBox - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 4px; -} .freeBoxselected { - background: var(--token-yqAf_E0HIjU); + background: var(--token-8MEyDjsqznQc); } .root:hover .freeBox { background: var(--token-Ik3bdE1e1Uy); } .rootselected:hover .freeBoxselected { - background: var(--token-dqEx_KxIoYV); + background: var(--token-8MEyDjsqznQc); } .circle { position: relative; @@ -54,7 +38,7 @@ border-radius: 1000px; } .circleselected { - background: var(--token-N3uwCfNqv); + background: var(--token-mwrqWBxg1aja); } .icon { position: relative; @@ -62,18 +46,19 @@ max-width: 100%; width: 16px; height: 16px; - color: var(--token-UunsGa2Y3t3); + color: var(--token-RTPypKCJE4bm); flex-shrink: 0; } .iconselected { - color: var(--token-VUsIDivgUss); + color: var(--token-mwrqWBxg1aja); } .slotTargetChildren { font-weight: 400; + color: var(--token-dED0FYPw-qtp); } .slotTargetChildrenselected { font-weight: 500; - color: var(--token-krbUYvO2lx2); + color: var(--token-mwrqWBxg1aja); } .rootselected:hover .slotTargetChildrenselected { color: var(--token-0IloF6TmFvF); diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicMenuItem.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicMenuItem.tsx index 1020e02f00..0527dc2101 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicMenuItem.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicMenuItem.tsx @@ -14,29 +14,25 @@ import * as React from "react"; import { - Flex as Flex__, - PlasmicLink as PlasmicLink__, - SingleBooleanChoiceArg, - Stack as Stack__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, + Flex as Flex__, hasVariant, + PlasmicLink as PlasmicLink__, renderPlasmicSlot, + SingleBooleanChoiceArg, + StrictProps, useDollarState, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicMenuItem.module.css"; // plasmic-import: Ts79yZbRFG/css import BoxSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__BoxSvg"; // plasmic-import: 0qLNxfRGB/icon @@ -114,21 +110,23 @@ function PlasmicMenuItem__RenderFunc(props: { path: "selected", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.selected, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.selected, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return ( -
@@ -192,7 +166,7 @@ function PlasmicMenuItem__RenderFunc(props: { +
) as React.ReactElement | null; } @@ -241,7 +215,8 @@ type NodeComponentProps = variants?: PlasmicMenuItem__VariantsArgs; args?: PlasmicMenuItem__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicMyPlayground.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicMyPlayground.tsx index 94111a1f2d..0e6f0f8e70 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicMyPlayground.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicMyPlayground.tsx @@ -19,25 +19,51 @@ import { classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, - hasVariant, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; import DefaultLayout from "../../components/dashboard/DefaultLayout"; // plasmic-import: nSkQWLjK-B/component import NavTeamSection from "../../components/dashboard/NavTeamSection"; // plasmic-import: VqaN_WL-stA/component import WorkspaceSection from "../../components/dashboard/WorkspaceSection"; // plasmic-import: 5cdjGaqBQ4/component - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicMyPlayground.module.css"; // plasmic-import: KVpOSX15wJ/css +const emptyProxy: any = new Proxy(() => "", { + get(_, prop) { + return prop === Symbol.toPrimitive ? () => "" : emptyProxy; + }, +}); + +function wrapQueriesWithLoadingProxy($q: any): any { + return new Proxy($q, { + get(target, queryName) { + const query = target[queryName]; + return !query || query.isLoading || !query.data ? emptyProxy : query; + }, + }); +} + +export type PageCtx = { + pageRoute: string; + pagePath: string; + params: Record; + query: Record; +}; + +export function generateDynamicMetadata($q: any, $ctx: PageCtx) { + return { + openGraph: {}, + twitter: { + card: "summary" as const, + }, + }; +} + createPlasmicElementProxy; export type PlasmicMyPlayground__VariantMembers = {}; @@ -90,48 +116,25 @@ function PlasmicMyPlayground__RenderFunc(props: { const refsRef = React.useRef({}); const $refs = refsRef.current; - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const globalVariants = _useGlobalVariants(); + + const styleTokensClassNames = _useStyleTokens(); return ( -
+
= variants?: PlasmicMyPlayground__VariantsArgs; args?: PlasmicMyPlayground__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props @@ -245,13 +249,12 @@ export const PlasmicMyPlayground = Object.assign( internalVariantProps: PlasmicMyPlayground__VariantProps, internalArgProps: PlasmicMyPlayground__ArgProps, - // Page metadata - pageMetadata: { - title: "", - description: "", - ogImageSrc: "", - canonical: "", - }, + pageMetadata: generateDynamicMetadata(wrapQueriesWithLoadingProxy({}), { + pageRoute: "/playground", + pagePath: "/playground", + params: {}, + query: {}, + }), } ); diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavButton.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavButton.module.css index ffb8754070..6b2db6248e 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavButton.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavButton.module.css @@ -2,23 +2,13 @@ display: flex; position: relative; flex-direction: row; + align-items: center; + align-content: unset; cursor: pointer; + column-gap: 6px; border-radius: 6px; padding: 6px 12px 6px 8px; } -.root > :global(.__wab_flex-container) { - flex-direction: row; - align-items: center; - align-content: unset; - margin-left: calc(0px - 6px); - width: calc(100% + 6px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-left: 6px; -} .rootdisabled { opacity: 0.5; pointer-events: none; @@ -38,14 +28,14 @@ .rootselected_blue { background: var(--token-dqEx_KxIoYV); } -.root:hover { +.root:hover:hover { background: var(--token-bV4cCeIniS6); } -.root:focus { +.root:focus:focus { box-shadow: 0px 0px 0px 2px #0091ff80; outline: none; } -.root:focus-within { +.root:focus-within:focus-within { box-shadow: 0px 0px 0px 2px #0091ff80; outline: none; } @@ -57,19 +47,19 @@ box-shadow: 0px 0px 0px 2px #0091ff80; outline: none; } -.root:active { +.root:active:active { background: var(--token-Ik3bdE1e1Uy); } -.rootblue:hover { +.rootblue:hover:hover { background: var(--token-dqEx_KxIoYV); } -.rootblue:active { +.rootblue:active:active { background: var(--token-RhvOnhv_xIi); } -.rootviolet:hover { +.rootviolet:hover:hover { background: var(--token-oPrqrxbKHqk); } -.rootviolet:active { +.rootviolet:active:active { background: var(--token-I2zAJ678hbp); } .startIconContainer { @@ -243,28 +233,12 @@ display: flex; position: relative; flex-direction: row; -} -.freeBox > :global(.__wab_flex-container) { - flex-direction: row; align-items: stretch; justify-content: flex-start; } -.freeBoxwithEndIcon > :global(.__wab_flex-container) { - margin-left: calc(0px - 0px); - width: calc(100% + 0px); - margin-top: calc(0px - 0px); - height: calc(100% + 0px); -} -.freeBoxwithEndIcon > :global(.__wab_flex-container) > *, -.freeBoxwithEndIcon > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBoxwithEndIcon > :global(.__wab_flex-container) > picture > img, -.freeBoxwithEndIcon - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 0px; - margin-top: 0px; +.freeBoxwithEndIcon { + column-gap: 0px; + row-gap: 0px; } .slotTargetChildren { color: var(--token-0IloF6TmFvF); diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavButton.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavButton.tsx index ebe70277ab..be266fc630 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavButton.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavButton.tsx @@ -14,30 +14,26 @@ import * as React from "react"; import { - Flex as Flex__, - PlasmicLink as PlasmicLink__, - SingleBooleanChoiceArg, - Stack as Stack__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, + Flex as Flex__, hasVariant, + PlasmicLink as PlasmicLink__, renderPlasmicSlot, + SingleBooleanChoiceArg, + StrictProps, useDollarState, useTrigger, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicNavButton.module.css"; // plasmic-import: 82ZzbE4hazN/css import ArrowRightSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__ArrowRightSvg"; // plasmic-import: 9Jv8jb253/icon @@ -151,51 +147,56 @@ function PlasmicNavButton__RenderFunc(props: { path: "disabled", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.disabled, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.disabled, }, { path: "selected", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.selected, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.selected, }, { path: "withEndIcon", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.withEndIcon, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.withEndIcon, }, { path: "blue", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.blue, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.blue, }, { path: "violet", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.violet, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.violet, }, { path: "bold", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.bold, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.bold, }, { path: "smallIcon", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.smallIcon, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.smallIcon, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); @@ -214,48 +215,24 @@ function PlasmicNavButton__RenderFunc(props: { focusVisible_root: isRootFocusVisible, }; - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return ( - ), @@ -351,12 +328,10 @@ function PlasmicNavButton__RenderFunc(props: { }), })}
- ), @@ -440,8 +415,8 @@ function PlasmicNavButton__RenderFunc(props: { })}
) : null} - - +
+ ) as React.ReactElement | null; } @@ -472,7 +447,8 @@ type NodeComponentProps = variants?: PlasmicNavButton__VariantsArgs; args?: PlasmicNavButton__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavSeparator.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavSeparator.tsx index af84da4c3b..c8ee5174d1 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavSeparator.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavSeparator.tsx @@ -14,26 +14,23 @@ import * as React from "react"; import { - Flex as Flex__, - SingleBooleanChoiceArg, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, + Flex as Flex__, hasVariant, + SingleBooleanChoiceArg, + StrictProps, useDollarState, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicNavSeparator.module.css"; // plasmic-import: cOUHQYmbvX/css createPlasmicElementProxy; @@ -103,27 +100,30 @@ function PlasmicNavSeparator__RenderFunc(props: { path: "hideStarters", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.hideStarters, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.hideStarters, }, { path: "noPadding", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.noPadding, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.noPadding, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return (
= variants?: PlasmicNavSeparator__VariantsArgs; args?: PlasmicNavSeparator__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavTeamButton.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavTeamButton.module.css index 1485cedcf5..0e18bcd739 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavTeamButton.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavTeamButton.module.css @@ -1,32 +1,22 @@ .root { display: flex; flex-direction: row; + justify-content: flex-start; + align-items: center; + align-content: unset; cursor: pointer; position: relative; + column-gap: 4px; border-radius: 6px 6px 0px 0px; padding: 8px; } -.root > :global(.__wab_flex-container) { - flex-direction: row; - justify-content: flex-start; - align-items: center; - align-content: unset; - margin-left: calc(0px - 4px); - width: calc(100% + 4px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-left: 4px; -} .rootselected { background: var(--token-bV4cCeIniS6); } -.root:hover { +.root:hover:hover { background: var(--token-bV4cCeIniS6); } -.root:focus-within { +.root:focus-within:focus-within { box-shadow: 0px 0px 0px 2px var(--token-D666zt2IZPL); outline: none; } @@ -84,21 +74,7 @@ position: relative; display: flex; flex-direction: row; -} -.freeBox__hk3YJ > :global(.__wab_flex-container) { - flex-direction: row; - margin-left: calc(0px - 8px); - width: calc(100% + 8px); -} -.freeBox__hk3YJ > :global(.__wab_flex-container) > *, -.freeBox__hk3YJ > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox__hk3YJ > :global(.__wab_flex-container) > picture > img, -.freeBox__hk3YJ - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 8px; + column-gap: 8px; } .text__awqZb { font-size: 11px; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavTeamButton.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavTeamButton.tsx index 143032376f..cc186f6a0a 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavTeamButton.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavTeamButton.tsx @@ -14,29 +14,25 @@ import * as React from "react"; import { - Flex as Flex__, - PlasmicLink as PlasmicLink__, - SingleBooleanChoiceArg, - Stack as Stack__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, + Flex as Flex__, hasVariant, + PlasmicLink as PlasmicLink__, renderPlasmicSlot, + SingleBooleanChoiceArg, + StrictProps, useDollarState, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicNavTeamButton.module.css"; // plasmic-import: Mql0DTa_iO/css import Icon18Icon from "./icons/PlasmicIcon__Icon18"; // plasmic-import: UfxL0BbcEe/icon @@ -117,66 +113,46 @@ function PlasmicNavTeamButton__RenderFunc(props: { path: "selected", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.selected, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.selected, }, { path: "freeTrial", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.freeTrial, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.freeTrial, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return ( -
{"Organization"}
{(hasVariant($state, "freeTrial", "freeTrial") ? true : false) ? (
{"\u2022"}
@@ -286,9 +250,10 @@ function PlasmicNavTeamButton__RenderFunc(props: { data-plasmic-name={"link"} data-plasmic-override={overrides.link} className={classNames( - projectcss.all, - projectcss.a, - projectcss.__wab_text, + "all", + "a", + "a__ooL7E", + "__wab_text", sty.link, { [sty.linkfreeTrial]: hasVariant( @@ -303,9 +268,9 @@ function PlasmicNavTeamButton__RenderFunc(props: { > {"Free trial"} - +
- + ) as React.ReactElement | null; } @@ -334,7 +299,8 @@ type NodeComponentProps = variants?: PlasmicNavTeamButton__VariantsArgs; args?: PlasmicNavTeamButton__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavTeamSection.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavTeamSection.tsx index 5e878a9915..2c2c122d79 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavTeamSection.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavTeamSection.tsx @@ -14,30 +14,26 @@ import * as React from "react"; import { - Flex as Flex__, - SingleBooleanChoiceArg, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, + Flex as Flex__, hasVariant, renderPlasmicSlot, + SingleBooleanChoiceArg, + StrictProps, useDollarState, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; import NavTeamButton from "../../components/dashboard/NavTeamButton"; // plasmic-import: Mql0DTa_iO/component import NavWorkspaceButton from "../../components/dashboard/NavWorkspaceButton"; // plasmic-import: Cma6XahJmS/component - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicNavTeamSection.module.css"; // plasmic-import: VqaN_WL-stA/css createPlasmicElementProxy; @@ -115,21 +111,23 @@ function PlasmicNavTeamSection__RenderFunc(props: { path: "selected", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.selected, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.selected, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return (
@@ -241,7 +216,8 @@ type NodeComponentProps = variants?: PlasmicNavTeamSection__VariantsArgs; args?: PlasmicNavTeamSection__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavWorkspaceButton.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavWorkspaceButton.module.css index b376d44476..205361b166 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavWorkspaceButton.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavWorkspaceButton.module.css @@ -1,32 +1,22 @@ .root { display: flex; height: auto; - flex-direction: row; - cursor: pointer; - position: relative; - padding: 6px 16px 6px 8px; -} -.root > :global(.__wab_flex-container) { flex-direction: row; justify-content: flex-start; align-items: center; align-content: unset; - margin-left: calc(0px - 6px); - width: calc(100% + 6px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-left: 6px; + cursor: pointer; + position: relative; + column-gap: 6px; + padding: 6px 16px 6px 8px; } .rootselected { background: var(--token-bV4cCeIniS6); } -.root:hover { +.root:hover:hover { background: #f3f3f2; } -.root:focus-within { +.root:focus-within:focus-within { box-shadow: 0px 0px 0px 2px var(--token-D666zt2IZPL); outline: none; } diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavWorkspaceButton.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavWorkspaceButton.tsx index 04b70e0e4e..72c10d2a4c 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavWorkspaceButton.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNavWorkspaceButton.tsx @@ -14,29 +14,25 @@ import * as React from "react"; import { - Flex as Flex__, - PlasmicLink as PlasmicLink__, - SingleBooleanChoiceArg, - Stack as Stack__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, + Flex as Flex__, hasVariant, + PlasmicLink as PlasmicLink__, renderPlasmicSlot, + SingleBooleanChoiceArg, + StrictProps, useDollarState, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicNavWorkspaceButton.module.css"; // plasmic-import: Cma6XahJmS/css import Icon19Icon from "./icons/PlasmicIcon__Icon19"; // plasmic-import: MHEeMLIhlB/icon @@ -117,66 +113,46 @@ function PlasmicNavWorkspaceButton__RenderFunc(props: { path: "selected", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.selected, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.selected, }, { path: "noIcon", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.noIcon, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => $props.noIcon, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return ( - @@ -195,7 +171,7 @@ function PlasmicNavWorkspaceButton__RenderFunc(props: { ? renderPlasmicSlot({ defaultContents: ( ), @@ -223,7 +199,7 @@ function PlasmicNavWorkspaceButton__RenderFunc(props: { ), }), })} - + ) as React.ReactElement | null; } @@ -250,7 +226,8 @@ type NodeComponentProps = variants?: PlasmicNavWorkspaceButton__VariantsArgs; args?: PlasmicNavWorkspaceButton__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNewPriceTierChip.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNewPriceTierChip.tsx deleted file mode 100644 index 0279c55e8f..0000000000 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNewPriceTierChip.tsx +++ /dev/null @@ -1,303 +0,0 @@ -// @ts-nocheck -/* eslint-disable */ -/* tslint:disable */ -/* prettier-ignore-start */ - -/** @jsxRuntime classic */ -/** @jsx createPlasmicElementProxy */ -/** @jsxFrag React.Fragment */ - -// This class is auto-generated by Plasmic; please do not edit! -// Plasmic Project: ooL7EhXDmFQWnW9sxtchhE -// Component: pSCM9YIcqli - -import * as React from "react"; - -import * as p from "@plasmicapp/react-web"; -import * as ph from "@plasmicapp/react-web/lib/host"; - -import { - hasVariant, - classNames, - wrapWithClassName, - createPlasmicElementProxy, - makeFragment, - MultiChoiceArg, - SingleBooleanChoiceArg, - SingleChoiceArg, - pick, - omit, - useTrigger, - StrictProps, - deriveRenderOpts, - ensureGlobalVariants, -} from "@plasmicapp/react-web"; - -import "@plasmicapp/react-web/lib/plasmic.css"; - -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import sty from "./PlasmicNewPriceTierChip.module.css"; // plasmic-import: pSCM9YIcqli/css - -createPlasmicElementProxy; - -export type PlasmicNewPriceTierChip__VariantMembers = { - current: "current"; - simplified: "simplified"; -}; -export type PlasmicNewPriceTierChip__VariantsArgs = { - current?: SingleBooleanChoiceArg<"current">; - simplified?: SingleBooleanChoiceArg<"simplified">; -}; -type VariantPropType = keyof PlasmicNewPriceTierChip__VariantsArgs; -export const PlasmicNewPriceTierChip__VariantProps = new Array( - "current", - "simplified" -); - -export type PlasmicNewPriceTierChip__ArgsType = { - tier?: React.ReactNode; - description?: React.ReactNode; -}; -type ArgPropType = keyof PlasmicNewPriceTierChip__ArgsType; -export const PlasmicNewPriceTierChip__ArgProps = new Array( - "tier", - "description" -); - -export type PlasmicNewPriceTierChip__OverridesType = { - root?: p.Flex<"div">; - freeBox?: p.Flex<"div">; - text?: p.Flex<"div">; -}; - -export interface DefaultNewPriceTierChipProps { - tier?: React.ReactNode; - description?: React.ReactNode; - current?: SingleBooleanChoiceArg<"current">; - simplified?: SingleBooleanChoiceArg<"simplified">; - className?: string; -} - -const __wrapUserFunction = - globalThis.__PlasmicWrapUserFunction ?? ((loc, fn) => fn()); -const __wrapUserPromise = - globalThis.__PlasmicWrapUserPromise ?? - (async (loc, promise) => { - return await promise; - }); - -function PlasmicNewPriceTierChip__RenderFunc(props: { - variants: PlasmicNewPriceTierChip__VariantsArgs; - args: PlasmicNewPriceTierChip__ArgsType; - overrides: PlasmicNewPriceTierChip__OverridesType; - forNode?: string; -}) { - const { variants, overrides, forNode } = props; - - const args = React.useMemo(() => Object.assign({}, props.args), [props.args]); - - const $props = { - ...args, - ...variants, - }; - - const $ctx = ph.useDataEnv?.() || {}; - const refsRef = React.useRef({}); - const $refs = refsRef.current; - - const currentUser = p.useCurrentUser?.() || {}; - - const stateSpecs: Parameters[0] = React.useMemo( - () => [ - { - path: "current", - type: "private", - variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.current, - }, - { - path: "simplified", - type: "private", - variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.simplified, - }, - ], - [$props, $ctx, $refs] - ); - const $state = p.useDollarState(stateSpecs, { - $props, - $ctx, - $queries: {}, - $refs, - }); - - return ( - true ? ( - - {p.renderPlasmicSlot({ - defaultContents: "Free", - value: args.tier, - className: classNames(sty.slotTargetTier, { - [sty.slotTargetTiercurrent]: hasVariant( - $state, - "current", - "current" - ), - }), - })} - {(hasVariant($state, "simplified", "simplified") ? false : true) ? ( -
- {p.renderPlasmicSlot({ - defaultContents: "For anyone getting started with Plasmic.", - value: args.description, - className: classNames(sty.slotTargetDescription, { - [sty.slotTargetDescriptioncurrent]: hasVariant( - $state, - "current", - "current" - ), - [sty.slotTargetDescriptionsimplified]: hasVariant( - $state, - "simplified", - "simplified" - ), - }), - })} - {(hasVariant($state, "current", "current") ? true : false) ? ( -
- {"Current plan"} -
- ) : null} -
- ) : null} -
- ) : null - ) as React.ReactElement | null; -} - -const PlasmicDescendants = { - root: ["root", "freeBox", "text"], - freeBox: ["freeBox", "text"], - text: ["text"], -} as const; -type NodeNameType = keyof typeof PlasmicDescendants; -type DescendantsType = - (typeof PlasmicDescendants)[T][number]; -type NodeDefaultElementType = { - root: "div"; - freeBox: "div"; - text: "div"; -}; - -type ReservedPropsType = "variants" | "args" | "overrides"; -type NodeOverridesType = Pick< - PlasmicNewPriceTierChip__OverridesType, - DescendantsType ->; -type NodeComponentProps = - // Explicitly specify variants, args, and overrides as objects - { - variants?: PlasmicNewPriceTierChip__VariantsArgs; - args?: PlasmicNewPriceTierChip__ArgsType; - overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props - /* Specify args directly as props*/ Omit< - PlasmicNewPriceTierChip__ArgsType, - ReservedPropsType - > & - /* Specify overrides for each element directly as props*/ Omit< - NodeOverridesType, - ReservedPropsType | VariantPropType | ArgPropType - > & - /* Specify props for the root element*/ Omit< - Partial>, - ReservedPropsType | VariantPropType | ArgPropType | DescendantsType - >; - -function makeNodeComponent(nodeName: NodeName) { - type PropsType = NodeComponentProps & { key?: React.Key }; - const func = function ( - props: T & StrictProps - ) { - const { variants, args, overrides } = React.useMemo( - () => - deriveRenderOpts(props, { - name: nodeName, - descendantNames: [...PlasmicDescendants[nodeName]], - internalArgPropNames: PlasmicNewPriceTierChip__ArgProps, - internalVariantPropNames: PlasmicNewPriceTierChip__VariantProps, - }), - [props, nodeName] - ); - return PlasmicNewPriceTierChip__RenderFunc({ - variants, - args, - overrides, - forNode: nodeName, - }); - }; - if (nodeName === "root") { - func.displayName = "PlasmicNewPriceTierChip"; - } else { - func.displayName = `PlasmicNewPriceTierChip.${nodeName}`; - } - return func; -} - -export const PlasmicNewPriceTierChip = Object.assign( - // Top-level PlasmicNewPriceTierChip renders the root element - makeNodeComponent("root"), - { - // Helper components rendering sub-elements - freeBox: makeNodeComponent("freeBox"), - text: makeNodeComponent("text"), - - // Metadata about props expected for PlasmicNewPriceTierChip - internalVariantProps: PlasmicNewPriceTierChip__VariantProps, - internalArgProps: PlasmicNewPriceTierChip__ArgProps, - } -); - -export default PlasmicNewPriceTierChip; -/* prettier-ignore-end */ diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNewPriceTierFeatureItem.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNewPriceTierFeatureItem.tsx deleted file mode 100644 index 3f9a5e2e7e..0000000000 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNewPriceTierFeatureItem.tsx +++ /dev/null @@ -1,318 +0,0 @@ -// @ts-nocheck -/* eslint-disable */ -/* tslint:disable */ -/* prettier-ignore-start */ - -/** @jsxRuntime classic */ -/** @jsx createPlasmicElementProxy */ -/** @jsxFrag React.Fragment */ - -// This class is auto-generated by Plasmic; please do not edit! -// Plasmic Project: ooL7EhXDmFQWnW9sxtchhE -// Component: i3cs7u1d-ck - -import * as React from "react"; - -import * as p from "@plasmicapp/react-web"; -import * as ph from "@plasmicapp/react-web/lib/host"; - -import { - hasVariant, - classNames, - wrapWithClassName, - createPlasmicElementProxy, - makeFragment, - MultiChoiceArg, - SingleBooleanChoiceArg, - SingleChoiceArg, - pick, - omit, - useTrigger, - StrictProps, - deriveRenderOpts, - ensureGlobalVariants, -} from "@plasmicapp/react-web"; - -import "@plasmicapp/react-web/lib/plasmic.css"; - -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import sty from "./PlasmicNewPriceTierFeatureItem.module.css"; // plasmic-import: i3cs7u1d-ck/css - -import Star2Icon from "../plasmic_kit_icons/icons/PlasmicIcon__Star2"; // plasmic-import: InkxX5RyM/icon - -createPlasmicElementProxy; - -export type PlasmicNewPriceTierFeatureItem__VariantMembers = { - tier: "free" | "starter" | "pro" | "team" | "enterprise"; - specialSectionHeading: "specialSectionHeading"; -}; -export type PlasmicNewPriceTierFeatureItem__VariantsArgs = { - tier?: SingleChoiceArg<"free" | "starter" | "pro" | "team" | "enterprise">; - specialSectionHeading?: SingleBooleanChoiceArg<"specialSectionHeading">; -}; -type VariantPropType = keyof PlasmicNewPriceTierFeatureItem__VariantsArgs; -export const PlasmicNewPriceTierFeatureItem__VariantProps = - new Array("tier", "specialSectionHeading"); - -export type PlasmicNewPriceTierFeatureItem__ArgsType = { - children?: React.ReactNode; -}; -type ArgPropType = keyof PlasmicNewPriceTierFeatureItem__ArgsType; -export const PlasmicNewPriceTierFeatureItem__ArgProps = new Array( - "children" -); - -export type PlasmicNewPriceTierFeatureItem__OverridesType = { - root?: p.Flex<"div">; - svg?: p.Flex<"svg">; - freeBox?: p.Flex<"div">; -}; - -export interface DefaultNewPriceTierFeatureItemProps { - children?: React.ReactNode; - tier?: SingleChoiceArg<"free" | "starter" | "pro" | "team" | "enterprise">; - specialSectionHeading?: SingleBooleanChoiceArg<"specialSectionHeading">; - className?: string; -} - -const __wrapUserFunction = - globalThis.__PlasmicWrapUserFunction ?? ((loc, fn) => fn()); -const __wrapUserPromise = - globalThis.__PlasmicWrapUserPromise ?? - (async (loc, promise) => { - return await promise; - }); - -function PlasmicNewPriceTierFeatureItem__RenderFunc(props: { - variants: PlasmicNewPriceTierFeatureItem__VariantsArgs; - args: PlasmicNewPriceTierFeatureItem__ArgsType; - overrides: PlasmicNewPriceTierFeatureItem__OverridesType; - forNode?: string; -}) { - const { variants, overrides, forNode } = props; - - const args = React.useMemo(() => Object.assign({}, props.args), [props.args]); - - const $props = { - ...args, - ...variants, - }; - - const $ctx = ph.useDataEnv?.() || {}; - const refsRef = React.useRef({}); - const $refs = refsRef.current; - - const currentUser = p.useCurrentUser?.() || {}; - - const stateSpecs: Parameters[0] = React.useMemo( - () => [ - { - path: "tier", - type: "private", - variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.tier, - }, - { - path: "specialSectionHeading", - type: "private", - variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => - $props.specialSectionHeading, - }, - ], - [$props, $ctx, $refs] - ); - const $state = p.useDollarState(stateSpecs, { - $props, - $ctx, - $queries: {}, - $refs, - }); - - return ( - - - -
- {p.renderPlasmicSlot({ - defaultContents: "What a cool feature", - value: args.children, - className: classNames(sty.slotTargetChildren, { - [sty.slotTargetChildrenspecialSectionHeading]: hasVariant( - $state, - "specialSectionHeading", - "specialSectionHeading" - ), - [sty.slotTargetChildrentier_enterprise]: hasVariant( - $state, - "tier", - "enterprise" - ), - [sty.slotTargetChildrentier_free]: hasVariant( - $state, - "tier", - "free" - ), - [sty.slotTargetChildrentier_pro]: hasVariant($state, "tier", "pro"), - [sty.slotTargetChildrentier_starter]: hasVariant( - $state, - "tier", - "starter" - ), - [sty.slotTargetChildrentier_team]: hasVariant( - $state, - "tier", - "team" - ), - }), - })} -
-
- ) as React.ReactElement | null; -} - -const PlasmicDescendants = { - root: ["root", "svg", "freeBox"], - svg: ["svg"], - freeBox: ["freeBox"], -} as const; -type NodeNameType = keyof typeof PlasmicDescendants; -type DescendantsType = - (typeof PlasmicDescendants)[T][number]; -type NodeDefaultElementType = { - root: "div"; - svg: "svg"; - freeBox: "div"; -}; - -type ReservedPropsType = "variants" | "args" | "overrides"; -type NodeOverridesType = Pick< - PlasmicNewPriceTierFeatureItem__OverridesType, - DescendantsType ->; -type NodeComponentProps = - // Explicitly specify variants, args, and overrides as objects - { - variants?: PlasmicNewPriceTierFeatureItem__VariantsArgs; - args?: PlasmicNewPriceTierFeatureItem__ArgsType; - overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props - /* Specify args directly as props*/ Omit< - PlasmicNewPriceTierFeatureItem__ArgsType, - ReservedPropsType - > & - /* Specify overrides for each element directly as props*/ Omit< - NodeOverridesType, - ReservedPropsType | VariantPropType | ArgPropType - > & - /* Specify props for the root element*/ Omit< - Partial>, - ReservedPropsType | VariantPropType | ArgPropType | DescendantsType - >; - -function makeNodeComponent(nodeName: NodeName) { - type PropsType = NodeComponentProps & { key?: React.Key }; - const func = function ( - props: T & StrictProps - ) { - const { variants, args, overrides } = React.useMemo( - () => - deriveRenderOpts(props, { - name: nodeName, - descendantNames: [...PlasmicDescendants[nodeName]], - internalArgPropNames: PlasmicNewPriceTierFeatureItem__ArgProps, - internalVariantPropNames: - PlasmicNewPriceTierFeatureItem__VariantProps, - }), - [props, nodeName] - ); - return PlasmicNewPriceTierFeatureItem__RenderFunc({ - variants, - args, - overrides, - forNode: nodeName, - }); - }; - if (nodeName === "root") { - func.displayName = "PlasmicNewPriceTierFeatureItem"; - } else { - func.displayName = `PlasmicNewPriceTierFeatureItem.${nodeName}`; - } - return func; -} - -export const PlasmicNewPriceTierFeatureItem = Object.assign( - // Top-level PlasmicNewPriceTierFeatureItem renders the root element - makeNodeComponent("root"), - { - // Helper components rendering sub-elements - svg: makeNodeComponent("svg"), - freeBox: makeNodeComponent("freeBox"), - - // Metadata about props expected for PlasmicNewPriceTierFeatureItem - internalVariantProps: PlasmicNewPriceTierFeatureItem__VariantProps, - internalArgProps: PlasmicNewPriceTierFeatureItem__ArgProps, - } -); - -export default PlasmicNewPriceTierFeatureItem; -/* prettier-ignore-end */ diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNewProjectModal.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNewProjectModal.module.css index a6f24327fd..47cc843f30 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNewProjectModal.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNewProjectModal.module.css @@ -8,21 +8,7 @@ display: flex; position: relative; flex-direction: column; -} -.freeBox > :global(.__wab_flex-container) { - flex-direction: column; - margin-top: calc(0px - 32px); - height: calc(100% + 32px); -} -.freeBox > :global(.__wab_flex-container) > *, -.freeBox > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox > :global(.__wab_flex-container) > picture > img, -.freeBox - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-top: 32px; + row-gap: 32px; } .starterGroup__krfRp:global(.__wab_instance) { position: relative; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNewProjectModal.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNewProjectModal.tsx index 30f025ac06..61964c1d8b 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNewProjectModal.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicNewProjectModal.tsx @@ -14,14 +14,12 @@ import * as React from "react"; import { - Flex as Flex__, - Stack as Stack__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, + Flex as Flex__, renderPlasmicSlot, + StrictProps, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; @@ -29,12 +27,12 @@ import Modal from "../../components/Modal"; // plasmic-import: rD0wOVzSnE/compon import StarterGroup from "../../components/StarterGroup"; // plasmic-import: u6dq5eydCj/component import StarterProject from "../../components/StarterProject"; // plasmic-import: CCsDeqqYeoM/component import Button from "../../components/widgets/Button"; // plasmic-import: SEF-sRmSoqV5c/component - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicNewProjectModal.module.css"; // plasmic-import: s87vSHZpzQ/css import CheckIcon from "../plasmic_kit/PlasmicIcon__Check"; // plasmic-import: pawp1H5YxB_3B/icon @@ -99,9 +97,9 @@ function PlasmicNewProjectModal__RenderFunc(props: { const refsRef = React.useRef({}); const $refs = refsRef.current; - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const globalVariants = _useGlobalVariants(); + + const styleTokensClassNames = _useStyleTokens(); return ( } size={"wide"} startIcon={ } @@ -133,11 +131,7 @@ function PlasmicNewProjectModal__RenderFunc(props: {
{"Cancel"}
@@ -146,12 +140,10 @@ function PlasmicNewProjectModal__RenderFunc(props: { tintBackground={true} title={"New Project"} > - {renderPlasmicSlot({ defaultContents: ( @@ -175,8 +167,9 @@ function PlasmicNewProjectModal__RenderFunc(props: { {""} @@ -213,8 +207,9 @@ function PlasmicNewProjectModal__RenderFunc(props: { {""} @@ -250,8 +246,9 @@ function PlasmicNewProjectModal__RenderFunc(props: { {""} @@ -287,8 +285,9 @@ function PlasmicNewProjectModal__RenderFunc(props: { {""} @@ -336,8 +336,9 @@ function PlasmicNewProjectModal__RenderFunc(props: { {""} @@ -373,8 +375,9 @@ function PlasmicNewProjectModal__RenderFunc(props: { {""} @@ -410,8 +414,9 @@ function PlasmicNewProjectModal__RenderFunc(props: { {""} @@ -447,8 +453,9 @@ function PlasmicNewProjectModal__RenderFunc(props: { {""} @@ -496,8 +504,9 @@ function PlasmicNewProjectModal__RenderFunc(props: { {""} @@ -533,8 +543,9 @@ function PlasmicNewProjectModal__RenderFunc(props: { {""} @@ -570,8 +582,9 @@ function PlasmicNewProjectModal__RenderFunc(props: { {""} @@ -607,8 +621,9 @@ function PlasmicNewProjectModal__RenderFunc(props: { {""} @@ -640,7 +656,7 @@ function PlasmicNewProjectModal__RenderFunc(props: { ), value: args.children, })} - +
) as React.ReactElement | null; } @@ -672,7 +688,8 @@ type NodeComponentProps = variants?: PlasmicNewProjectModal__VariantsArgs; args?: PlasmicNewProjectModal__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicProjectsFilter.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicProjectsFilter.module.css index beabedfa24..87bf7f938f 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicProjectsFilter.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicProjectsFilter.module.css @@ -1,20 +1,10 @@ .root { display: flex; - flex-direction: row; - position: relative; -} -.root > :global(.__wab_flex-container) { flex-direction: row; align-items: center; justify-content: flex-start; - margin-left: calc(0px - 8px); - width: calc(100% + 8px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-left: 8px; + position: relative; + column-gap: 8px; } .text { font-style: normal; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicProjectsFilter.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicProjectsFilter.tsx index 23ea080a4f..0713d5d35b 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicProjectsFilter.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicProjectsFilter.tsx @@ -14,16 +14,13 @@ import * as React from "react"; import { - Flex as Flex__, - Stack as Stack__, - StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, + Flex as Flex__, generateStateOnChangeProp, generateStateValueProp, - hasVariant, + StrictProps, useDollarState, } from "@plasmicapp/react-web"; import { useDataEnv } from "@plasmicapp/react-web/lib/host"; @@ -31,15 +28,12 @@ import { useDataEnv } from "@plasmicapp/react-web/lib/host"; import Select from "../../components/widgets/Select"; // plasmic-import: j_4IQyOWK2b/component import Select__Option from "../../components/widgets/Select__Option"; // plasmic-import: rr-LWdMni2G/component import Textbox from "../../components/widgets/Textbox"; // plasmic-import: pA22NEzDCsn_/component - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicProjectsFilter.module.css"; // plasmic-import: mdX7wFJOmP/css import CloseSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__CloseSvg"; // plasmic-import: DhvEHyCHT/icon @@ -104,60 +98,37 @@ function PlasmicProjectsFilter__RenderFunc(props: { path: "orderBySelect.value", type: "private", variableType: "text", - initFunc: ({ $props, $state, $queries, $ctx }) => "updatedAt", + initFunc: ({ $props, $state, $queries, $q, $ctx }) => "updatedAt", }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return ( - } size={"wide"} startIcon={ } type={["primary"]} >
{"Update"}
-
- - +
+
} size={"wide"} startIcon={ } type={["secondary"]} >
{"Manage seats"}
@@ -607,25 +497,21 @@ function PlasmicTeamBilling__RenderFunc(props: { )} endIcon={ } size={"wide"} startIcon={ } type={["secondary"]} >
{"Change credit card"}
@@ -636,14 +522,14 @@ function PlasmicTeamBilling__RenderFunc(props: { className={classNames("__wab_instance", sty.manageBilling)} endIcon={ } size={"wide"} startIcon={ } @@ -651,18 +537,14 @@ function PlasmicTeamBilling__RenderFunc(props: { withIcons={["endIcon"]} >
{"Manage billing"}
- +
-
+
- - - +
+
+
) as React.ReactElement | null; } @@ -755,7 +631,8 @@ type NodeComponentProps = variants?: PlasmicTeamBilling__VariantsArgs; args?: PlasmicTeamBilling__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicTeamMemberList.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicTeamMemberList.module.css index fd76ee93f4..30dd2f1d3d 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicTeamMemberList.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicTeamMemberList.module.css @@ -25,24 +25,10 @@ display: flex; position: relative; flex-direction: row; -} -.actions > :global(.__wab_flex-container) { - flex-direction: row; align-items: center; justify-content: flex-start; align-content: unset; - margin-left: calc(0px - 8px); - width: calc(100% + 8px); -} -.actions > :global(.__wab_flex-container) > *, -.actions > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.actions > :global(.__wab_flex-container) > picture > img, -.actions - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 8px; + column-gap: 8px; } .newButton:global(.__wab_instance) { position: relative; @@ -103,22 +89,9 @@ .header { display: flex; position: relative; + column-gap: 16px; padding: 16px; } -.header > :global(.__wab_flex-container) { - margin-left: calc(0px - 16px); - width: calc(100% + 16px); -} -.header > :global(.__wab_flex-container) > *, -.header > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.header > :global(.__wab_flex-container) > picture > img, -.header - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 16px; -} .text__cuGtX { position: relative; width: 30%; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicTeamMemberList.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicTeamMemberList.tsx index d6cd7083bf..0dc7b86d39 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicTeamMemberList.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicTeamMemberList.tsx @@ -16,12 +16,10 @@ import * as React from "react"; import { Flex as Flex__, SingleBooleanChoiceArg, - Stack as Stack__, StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, generateStateOnChangeProp, generateStateValueProp, hasVariant, @@ -35,15 +33,12 @@ import Button from "../../components/widgets/Button"; // plasmic-import: SEF-sRm import Searchbox from "../../components/widgets/Searchbox"; // plasmic-import: po7gr0PX4_gWo/component import Select from "../../components/widgets/Select"; // plasmic-import: j_4IQyOWK2b/component import Select__Option from "../../components/widgets/Select__Option"; // plasmic-import: rr-LWdMni2G/component - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicTeamMemberList.module.css"; // plasmic-import: 3jXSiWKc1-/css import PlusIcon from "../plasmic_kit/PlasmicIcon__Plus"; // plasmic-import: -k064DlQ8k8-L/icon @@ -121,27 +116,30 @@ function PlasmicTeamMemberList__RenderFunc(props: { path: "isCollapsed", type: "private", variableType: "variant", - initFunc: ({ $props, $state, $queries, $ctx }) => $props.isCollapsed, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => + $props.isCollapsed, }, { path: "filterSelect.value", type: "private", variableType: "text", - initFunc: ({ $props, $state, $queries, $ctx }) => undefined, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => undefined, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return (
-
+
{"Members"}
-
- -
+
{"Name"}
-
+
{"Last active"}
-
+
{"Projects"}
-
+
{"Team role"}
- +
{renderPlasmicSlot({ defaultContents: ( @@ -365,11 +308,7 @@ function PlasmicTeamMemberList__RenderFunc(props: { )} email={
{"email@domain.com"}
@@ -384,11 +323,7 @@ function PlasmicTeamMemberList__RenderFunc(props: { )} name={
{"Carl Sagan"}
@@ -402,11 +337,7 @@ function PlasmicTeamMemberList__RenderFunc(props: { )} name={
{"Rosa Diaz"}
@@ -420,11 +351,7 @@ function PlasmicTeamMemberList__RenderFunc(props: { )} name={
{"Jared Dunn"}
@@ -479,7 +406,8 @@ type NodeComponentProps = variants?: PlasmicTeamMemberList__VariantsArgs; args?: PlasmicTeamMemberList__ArgsType; overrides?: NodeOverridesType; - } & Omit & // Specify variants directly as props + } & // Specify variants directly as props + Omit & // Specify args directly as props Omit & // Specify overrides for each element directly as props diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicTeamMemberListItem.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicTeamMemberListItem.module.css index 3941ff258d..7f24d46df3 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicTeamMemberListItem.module.css +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicTeamMemberListItem.module.css @@ -3,24 +3,14 @@ border-right-style: solid; position: relative; width: 100%; - min-width: 0; - padding: 1rem; - border-top: 1px solid var(--token-hoA5qaM-91G); -} -.root > :global(.__wab_flex-container) { align-items: center; justify-content: flex-start; + column-gap: 16px; min-width: 0; - margin-left: calc(0px - 16px); - width: calc(100% + 16px); -} -.root > :global(.__wab_flex-container) > *, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.root > :global(.__wab_flex-container) > picture > img, -.root > :global(.__wab_flex-container) > :global(.__wab_slot) > picture > img { - margin-left: 16px; + padding: 1rem; + border-top: 1px solid var(--token-hoA5qaM-91G); } -.root:focus { +.root:focus:focus { box-shadow: 0px 0px 0px 2px #0091ff80; outline: none; } @@ -64,22 +54,9 @@ } .freeBox__yVnYe { display: flex; -} -.freeBox__yVnYe > :global(.__wab_flex-container) { align-items: center; justify-content: flex-start; - margin-left: calc(0px - 8px); - width: calc(100% + 8px); -} -.freeBox__yVnYe > :global(.__wab_flex-container) > *, -.freeBox__yVnYe > :global(.__wab_flex-container) > :global(.__wab_slot) > *, -.freeBox__yVnYe > :global(.__wab_flex-container) > picture > img, -.freeBox__yVnYe - > :global(.__wab_flex-container) - > :global(.__wab_slot) - > picture - > img { - margin-left: 8px; + column-gap: 8px; } .role:global(.__wab_instance) { width: 128px; diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicTeamMemberListItem.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicTeamMemberListItem.tsx index 046fa3d895..010fbdedda 100644 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicTeamMemberListItem.tsx +++ b/platform/wab/src/wab/client/plasmic/plasmic_kit_dashboard/PlasmicTeamMemberListItem.tsx @@ -15,15 +15,12 @@ import * as React from "react"; import { Flex as Flex__, - Stack as Stack__, StrictProps, classNames, createPlasmicElementProxy, deriveRenderOpts, - ensureGlobalVariants, generateStateOnChangeProp, generateStateValueProp, - hasVariant, renderPlasmicSlot, useDollarState, } from "@plasmicapp/react-web"; @@ -32,15 +29,12 @@ import { useDataEnv } from "@plasmicapp/react-web/lib/host"; import MenuButton from "../../components/widgets/MenuButton"; // plasmic-import: h69wHrrKtL/component import Select from "../../components/widgets/Select"; // plasmic-import: j_4IQyOWK2b/component import Select__Option from "../../components/widgets/Select__Option"; // plasmic-import: rr-LWdMni2G/component - -import { useEnvironment } from "../plasmic_kit_pricing/PlasmicGlobalVariant__Environment"; // plasmic-import: hIjF9NLAUKG-/globalVariant +import { _useStyleTokens } from "./PlasmicStyleTokensProvider"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/styleTokensProvider +import { _useGlobalVariants } from "./plasmic"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectModule import "@plasmicapp/react-web/lib/plasmic.css"; -import plasmic_plasmic_kit_pricing_css from "../plasmic_kit_pricing/plasmic_plasmic_kit_pricing.module.css"; // plasmic-import: ehckhYnyDHgCBbV47m9bkf/projectcss -import plasmic_plasmic_kit_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import projectcss from "../PP__plasmickit_dashboard.module.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss -import plasmic_plasmic_kit_design_system_deprecated_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss +import "../PP__plasmickit_dashboard.css"; // plasmic-import: ooL7EhXDmFQWnW9sxtchhE/projectcss import sty from "./PlasmicTeamMemberListItem.module.css"; // plasmic-import: gdLJj97tYt/css import InformationSvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__InformationSvg"; // plasmic-import: hqBNVBJWB/icon @@ -121,63 +115,40 @@ function PlasmicTeamMemberListItem__RenderFunc(props: { path: "role.value", type: "private", variableType: "text", - initFunc: ({ $props, $state, $queries, $ctx }) => undefined, + initFunc: ({ $props, $state, $queries, $q, $ctx }) => undefined, }, ], [$props, $ctx, $refs] ); + + const globalVariants = _useGlobalVariants(); + const $state = useDollarState(stateSpecs, { $props, $ctx, $queries: {}, + $q: {}, $refs, }); - const globalVariants = ensureGlobalVariants({ - environment: useEnvironment(), - }); + const styleTokensClassNames = _useStyleTokens(); return ( - -
+
{renderPlasmicSlot({ defaultContents: "Name", value: args.name, @@ -189,23 +160,17 @@ function PlasmicTeamMemberListItem__RenderFunc(props: { className: classNames(sty.slotTargetEmail), })}
-
+
{renderPlasmicSlot({ defaultContents: "1d ago", value: args.lastActive, className: classNames(sty.slotTargetLastActive), })}
-
+
{renderPlasmicSlot({ defaultContents: ( -
+
{"10"}
), @@ -213,12 +178,8 @@ function PlasmicTeamMemberListItem__RenderFunc(props: { className: classNames(sty.slotTargetNumProjects), })}
-
- +
+
- } - /> - - {(hasVariant(variants, "type", "basicAuth") ? true : false) ? ( - - - } - keyLabel={"Username"} - readOnlyKey={true} - /> - - - } - keyLabel={"Password"} - readOnlyKey={true} - /> - - ) : null} - {(hasVariant(variants, "type", "apiKey") ? true : false) ? ( - - - } - keyLabel={"Key"} - readOnlyKey={true} - /> - - - } - keyLabel={"Value"} - readOnlyKey={true} - /> - - ) : null} - {(hasVariant(variants, "type", "bearerToken") ? true : false) ? ( - - - } - keyLabel={"Token"} - readOnlyKey={true} - /> - - ) : null} - - ) as React.ReactElement | null; -} - -const PlasmicDescendants = { - root: [ - "root", - "keyValueRow", - "typeSelect", - "usernameRow", - "passwordRow", - "keyRow", - "valueRow", - "tokenRow", - ], - - keyValueRow: ["keyValueRow", "typeSelect"], - typeSelect: ["typeSelect"], - usernameRow: ["usernameRow"], - passwordRow: ["passwordRow"], - keyRow: ["keyRow"], - valueRow: ["valueRow"], - tokenRow: ["tokenRow"], -} as const; -type NodeNameType = keyof typeof PlasmicDescendants; -type DescendantsType = - (typeof PlasmicDescendants)[T][number]; -type NodeDefaultElementType = { - root: "div"; - keyValueRow: typeof KeyValueRow; - typeSelect: typeof Select; - usernameRow: typeof KeyValueRow; - passwordRow: typeof KeyValueRow; - keyRow: typeof KeyValueRow; - valueRow: typeof KeyValueRow; - tokenRow: typeof KeyValueRow; -}; - -type ReservedPropsType = "variants" | "args" | "overrides"; -type NodeOverridesType = Pick< - PlasmicAuthForm__OverridesType, - DescendantsType ->; - -type NodeComponentProps = { - // Explicitly specify variants, args, and overrides as objects - variants?: PlasmicAuthForm__VariantsArgs; - args?: PlasmicAuthForm__ArgsType; - overrides?: NodeOverridesType; -} & Omit & // Specify variants directly as props - // Specify args directly as props - Omit & - // Specify overrides for each element directly as props - Omit< - NodeOverridesType, - ReservedPropsType | VariantPropType | ArgPropType - > & - // Specify props for the root element - Omit< - Partial>, - ReservedPropsType | VariantPropType | ArgPropType | DescendantsType - >; - -function makeNodeComponent(nodeName: NodeName) { - type PropsType = NodeComponentProps & { key?: React.Key }; - const func = function ( - props: T & StrictProps - ) { - const { variants, args, overrides } = deriveRenderOpts(props, { - name: nodeName, - descendantNames: [...PlasmicDescendants[nodeName]], - internalArgPropNames: PlasmicAuthForm__ArgProps, - internalVariantPropNames: PlasmicAuthForm__VariantProps, - }); - - return PlasmicAuthForm__RenderFunc({ - variants, - args, - overrides, - forNode: nodeName, - }); - }; - if (nodeName === "root") { - func.displayName = "PlasmicAuthForm"; - } else { - func.displayName = `PlasmicAuthForm.${nodeName}`; - } - return func; -} - -export const PlasmicAuthForm = Object.assign( - // Top-level PlasmicAuthForm renders the root element - makeNodeComponent("root"), - { - // Helper components rendering sub-elements - keyValueRow: makeNodeComponent("keyValueRow"), - typeSelect: makeNodeComponent("typeSelect"), - usernameRow: makeNodeComponent("usernameRow"), - passwordRow: makeNodeComponent("passwordRow"), - keyRow: makeNodeComponent("keyRow"), - valueRow: makeNodeComponent("valueRow"), - tokenRow: makeNodeComponent("tokenRow"), - - // Metadata about props expected for PlasmicAuthForm - internalVariantProps: PlasmicAuthForm__VariantProps, - internalArgProps: PlasmicAuthForm__ArgProps, - } -); - -export default PlasmicAuthForm; -/* prettier-ignore-end */ diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_data_queries/PlasmicConnectToDataSource.module.css b/platform/wab/src/wab/client/plasmic/plasmic_kit_data_queries/PlasmicConnectToDataSource.module.css deleted file mode 100644 index f703e5b281..0000000000 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_data_queries/PlasmicConnectToDataSource.module.css +++ /dev/null @@ -1,80 +0,0 @@ -.root { - display: flex; - position: relative; - flex-direction: column; - align-items: stretch; - justify-content: flex-start; - width: 100%; - height: auto; - min-width: 0; -} -.modal:global(.__wab_instance) { - position: relative; -} -.title { - font-size: 16px; - font-weight: 700; -} -.instruction { - position: relative; -} -.keyInput:global(.__wab_instance) { - position: relative; -} -.svg__fdl9P { - display: flex; - position: relative; - object-fit: cover; - width: 16px; - height: 16px; -} -.svg__mZYxA { - display: flex; - position: relative; - object-fit: cover; - width: 16px; - height: 16px; -} -.picker:global(.__wab_instance) { - position: relative; -} -.option__awCzq:global(.__wab_instance) { - position: relative; -} -.option__k3LbT:global(.__wab_instance) { - position: relative; -} -.cancelButton:global(.__wab_instance) { - position: relative; -} -.svg__cwvqw { - display: flex; - position: relative; - object-fit: cover; - width: 16px; - height: 16px; -} -.svg___5G2Sd { - display: flex; - position: relative; - object-fit: cover; - width: 16px; - height: 16px; -} -.nextButton:global(.__wab_instance) { - position: relative; -} -.svg__mVw8J { - display: flex; - position: relative; - object-fit: cover; - width: 16px; - height: 16px; -} -.svg__lcGbe { - display: flex; - position: relative; - object-fit: cover; - width: 16px; - height: 16px; -} diff --git a/platform/wab/src/wab/client/plasmic/plasmic_kit_data_queries/PlasmicConnectToDataSource.tsx b/platform/wab/src/wab/client/plasmic/plasmic_kit_data_queries/PlasmicConnectToDataSource.tsx deleted file mode 100644 index 3484b34187..0000000000 --- a/platform/wab/src/wab/client/plasmic/plasmic_kit_data_queries/PlasmicConnectToDataSource.tsx +++ /dev/null @@ -1,308 +0,0 @@ -// @ts-nocheck -/* eslint-disable */ -/* tslint:disable */ -/* prettier-ignore-start */ - -/** @jsxRuntime classic */ -/** @jsx createPlasmicElementProxy */ -/** @jsxFrag React.Fragment */ - -// This class is auto-generated by Plasmic; please do not edit! -// Plasmic Project: 9csusiyEETC5n9fFKLeYNK -// Component: Rh23GExBNXe -import * as p from "@plasmicapp/react-web"; -import { - classNames, - createPlasmicElementProxy, - deriveRenderOpts, - StrictProps, -} from "@plasmicapp/react-web"; -import "@plasmicapp/react-web/lib/plasmic.css"; -import * as React from "react"; -import Modal from "../../components/Modal"; // plasmic-import: rD0wOVzSnE/component -import Button from "../../components/widgets/Button"; // plasmic-import: SEF-sRmSoqV5c/component -import Select from "../../components/widgets/Select"; // plasmic-import: j_4IQyOWK2b/component -import Textbox from "../../components/widgets/Textbox"; // plasmic-import: pA22NEzDCsn_/component -import TrashIcon from "../plasmic_kit/PlasmicIcon__Trash"; // plasmic-import: 7bxap5bzcUODa/icon -import TriangleBottomIcon from "../plasmic_kit/PlasmicIcon__TriangleBottom"; // plasmic-import: A8NQUZ7Lg1OHO/icon -import ClosesvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__CloseSvg"; // plasmic-import: DhvEHyCHT/icon -import SearchsvgIcon from "../plasmic_kit_icons/icons/PlasmicIcon__SearchSvg"; // plasmic-import: R5DLz11OA/icon -import plasmic_plasmic_kit_q_4_color_tokens_css from "../plasmic_kit_q_4_color_tokens/plasmic_plasmic_kit_q_4_color_tokens.module.css"; // plasmic-import: 95xp9cYcv7HrNWpFWWhbcv/projectcss -import plasmic_plasmic_kit_design_system_css from "../PP__plasmickit_design_system.module.css"; // plasmic-import: tXkSR39sgCDWSitZxC5xFV/projectcss -import projectcss from "./plasmic_plasmic_kit_data_queries.module.css"; // plasmic-import: 9csusiyEETC5n9fFKLeYNK/projectcss -import sty from "./PlasmicConnectToDataSource.module.css"; // plasmic-import: Rh23GExBNXe/css - -export type PlasmicConnectToDataSource__VariantMembers = {}; - -export type PlasmicConnectToDataSource__VariantsArgs = {}; -type VariantPropType = keyof PlasmicConnectToDataSource__VariantsArgs; -export const PlasmicConnectToDataSource__VariantProps = - new Array(); - -export type PlasmicConnectToDataSource__ArgsType = {}; -type ArgPropType = keyof PlasmicConnectToDataSource__ArgsType; -export const PlasmicConnectToDataSource__ArgProps = new Array(); - -export type PlasmicConnectToDataSource__OverridesType = { - root?: p.Flex<"div">; - modal?: p.Flex; - title?: p.Flex<"div">; - instruction?: p.Flex<"div">; - keyInput?: p.Flex; - picker?: p.Flex; - cancelButton?: p.Flex; - nextButton?: p.Flex; -}; - -export interface DefaultConnectToDataSourceProps { - className?: string; -} - -function PlasmicConnectToDataSource__RenderFunc(props: { - variants: PlasmicConnectToDataSource__VariantsArgs; - args: PlasmicConnectToDataSource__ArgsType; - overrides: PlasmicConnectToDataSource__OverridesType; - - forNode?: string; -}) { - const { variants, args, overrides, forNode } = props; - const $props = props.args; - - return ( -
- - - - - - } - title={ -
- {"Connect to {data source}"} -
- } - > -
- {"Enter your API key. You can find it by clicking XXX."} -
- - - } - styleType={["bordered"]} - suffixIcon={ - - } - /> - - - - - } - styleType={["bordered"]} - suffixIcon={ - - } - /> - - - } - className={classNames("__wab_instance", sty.hintButton)} - > - - - - - - - } - title={"Params"} - > - - } - /> - - - {( - hasVariant(variants, "builtInDataSource", "builtInDataSource") - ? false - : true - ) ? ( - - } - title={"Query params"} - > - - } - /> - - ) : null} - {( - hasVariant(variants, "builtInDataSource", "builtInDataSource") - ? false - : true - ) ? ( - - } - title={"Path variables"} - > - - } - /> - - ) : null} - {( - hasVariant(variants, "builtInDataSource", "builtInDataSource") - ? false - : true - ) ? ( - - } - title={"Headers"} - > - - } - /> - - ) : null} - - - } - title={"Auth"} - > - - - -
- { - "Codegen must be configured to prevent emitting credentials into client-side code—[learn more]." - } -
-
- - -
- - - } - title={"Body"} - > -