=== Atomic Studio for Elementor ===
Contributors: heinvanvlastuin
Tags: figma, elementor, design, import, templates
Requires at least: 7.0
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 1.0.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Turn a Figma frame into a native Elementor page, with its layout, styles and media.

== Description ==

Stop rebuilding your Figma designs by hand. Atomic Studio reads a Figma frame and writes
it into your site as a real Elementor page — typed elements, their styles and media
included. Not a screenshot, not an HTML embed: content you can keep editing in
Elementor like anything else.

* **Pixel-faithful conversion** — layout, spacing, color and type come from the frame itself.
* **Native Elementor styles** on every element, so you edit an imported page in the Elementor editor like any page you built there.
* **Nothing goes live automatically** — every import lands as a draft for you to review and publish.
* **No Figma password or token on your site** — Figma access is authorized through Atomic Studio Cloud. Your site keeps one private key of its own, encrypted, to sign its requests; see External services below for exactly what that means.

= Requirements =

* WordPress 7.0 or newer
* PHP 8.0 or newer
* Elementor 4.2.0 or newer, with the Atomic Editor (Editor V4) switched on. It is on by default on sites that first installed Elementor 4.0 or newer; on an older site, go to Elementor → Settings → Atomic Editor and select Activate.
* Elementor 4.3 or newer to import tablet and mobile designs alongside desktop
* Elementor Pro is not needed
* A Figma account with access to the files you want to import

== External services ==

This plugin does not convert designs on your own server. It relies on Atomic Studio Cloud,
an external service operated by Khomba Business Networking (PTY) LTD at https://atomicstudio.ai. The plugin's
screens are part of the plugin and run inside your WordPress admin; they call
Atomic Studio Cloud for everything below.

**What is sent, and when**

* Your site's address — Every time you open an Atomic Studio screen. It identifies your site, and it is the key your Figma authorization is stored under.
* A signed, single-use statement from your site — Every time you open an Atomic Studio screen. It proves the request comes from your site: your site signs it with a private key only your site holds, and Atomic Studio Cloud accepts each statement once.
* Your site's public key — In that statement, and in your site's answer the first time Atomic Studio Cloud asks to confirm it. It identifies your site. It is public by design; the private half never leaves your site.
* Your WordPress admin's address — In that signed statement. So Atomic Studio Cloud accepts calls from your admin screens when they are on a different address from your site.
* Your WordPress user ID and capabilities — In that signed statement. So Atomic Studio Cloud allows only the actions you are allowed to take.
* The Atomic Studio plugin's version number — With every request the plugin's screens make to Atomic Studio Cloud. So Atomic Studio Cloud can keep older plugin versions working.
* The Figma file and frame URL you paste — When you convert a design. It is the thing being converted. Atomic Studio Cloud reads that frame from Figma on your behalf.
* Your site's server address (its IP address), to Figma's image storage on Amazon S3 — When you import a design that contains images. Your site downloads each image into its media library from the address Figma issued for it, so your published pages never load images from Figma.
* Whether you chose to share imported designs to improve conversion quality — In that signed statement. Atomic Studio Cloud keeps a copy of a conversion only when your site says an administrator opted in.
* The ID and address of the page an import created, or the error code if it failed — After each import. So the import history can say what each import produced and link to the page.

**What is never sent**

* Your posts, pages or any other site content
* Your users, their emails, or their passwords
* Comments, orders, or anything from other plugins
* Your site's private key — it never leaves your site

**Where it goes**

The plugin's screens call these API paths at https://atomicstudio.ai: `/api/embed/session`, `/api/embed/disconnect`, `/api/convert-to-elementor`, `/api/figma/handoff`, `/api/figma/status`, `/api/import-history/list`, `/api/import-history/complete`, `/api/import-history/thumbnail`, `/api/import-history/delete`, `/api/quality-sharing/withdraw`.

Note the direction that is easy to miss: Atomic Studio Cloud also calls back into your site,
at `/wp-json/atomic-studio/v1/verify`, once, the first time it sees your site's key, to confirm the key belongs to
your address. A site it cannot reach still works; it is then known only by its key.

**What is not kept**

* We do not keep the designs you convert or the content generated from them, unless you opt in to sharing them to improve conversion quality. The import history keeps a small preview image of each imported frame for 180 days, and you can delete any entry.
* The plugin stores one private key on your site, encrypted, used only to sign requests. It never leaves your site.
* Changing your site's address means authorizing Figma again.

**Who else is involved**

* Figma — Reads the design you asked to convert, and serves its images to your site from Amazon S3 during an import. Only when you convert or import, and only the file you named.
* Our hosting provider — Runs Atomic Studio Cloud, so it receives each request's IP address and keeps the server logs. Continuously.
* Our database provider — Stores site records, Figma authorizations, import history, website accounts and, if you opt in, shared imports. Continuously.

Use of Atomic Studio Cloud is subject to its Terms of Service
(https://atomicstudio.ai/legal/terms#the-service) and Privacy Policy (https://atomicstudio.ai/legal/privacy).

== Trademarks ==

Elementor is a trademark of Elementor Ltd. Figma is a trademark of Figma, Inc. WordPress is a trademark of the WordPress Foundation. Atomic Studio is an independent product and is not affiliated with, endorsed by, or sponsored by any of them.

== Source code and build ==

The admin screens are a JavaScript app, shipped unminified in `assets/build/admin.js`. Its full source — TypeScript, CSS, and the build configuration — ships inside this plugin in the `source/` folder, with instructions in `source/README.md`.

To rebuild it, with Node.js 22 and npm, run `npm install` and then `npm run build` in the `source/` folder. The build writes `assets/build/admin.js`. React is not bundled: the app uses the copy WordPress itself ships.

== Installation ==

1. In WordPress, go to Plugins → Add New Plugin and search for "Atomic Studio for Elementor", or upload the zip under Plugins → Add New Plugin → Upload Plugin.
2. Make sure Elementor 4.2.0 or newer is installed and active, with the Atomic Editor switched on (Elementor → Settings → Atomic Editor → Activate). WordPress will not activate this plugin without Elementor. With an older Elementor, or with the Atomic Editor off, the Atomic Studio screens stay off and a notice says what to change.
3. Activate the plugin under Plugins → Installed Plugins.
4. Open Atomic Studio → Import. An administrator reads what the plugin sends to Atomic Studio Cloud and selects "I agree — start using Atomic Studio Cloud". Nothing is sent before that.
5. Select "Connect Figma" and allow access in the Figma tab that opens. Go back to the WordPress tab; it updates on its own.
6. Paste the link to one Figma frame into "Figma frame URL" and select "Import to Elementor". The page is created as a draft.

== Frequently Asked Questions ==

= What Figma access does Atomic Studio need? =

When you connect Figma, you authorize Atomic Studio Cloud to read the Figma files that your Figma account can open (`file_content:read`), and to confirm which Figma account granted access (`current_user:read`). It cannot edit anything in Figma, and it reads a file only when you convert or import from it. Atomic Studio Cloud keeps that authorization until you disconnect Figma from this site, or until 90 days after your site last used Atomic Studio — 14 days for a site Atomic Studio Cloud could not reach (see below). You can also withdraw it from Figma, under authorized apps in your Figma account settings.

= Does converting a design publish it immediately? =

No. Every import lands as a draft, so nothing goes live on your site until you review and publish it yourself.

= Does the plugin store any credentials? =

One. When you activate it, the plugin creates a private key for your site and stores it in your database, encrypted with a key derived from your site's WordPress salts. Your site signs its requests to Atomic Studio Cloud with it; the key itself never leaves your site, and Atomic Studio Cloud holds only the public half. It stores no Figma password or token. Uninstalling the plugin deletes the key. See the External services section above for exactly what is sent and where it goes.

= Does it work on a local or password-protected site? =

Yes. Atomic Studio Cloud normally confirms your site by calling it back once. When it cannot — a site on your own computer, a staging site behind a password, a firewall — your site is known by its key alone. It works the same, with a lower hourly conversion limit shared by every such site connected to the same Figma account, and its record is deleted after 14 days without use.

= How do I stop using Atomic Studio? =

* To remove the Figma authorization, go to Atomic Studio → Connect Figma and select "Disconnect Figma". Pages you have already imported stay as they are.
* Deactivating the plugin withdraws your agreement to use Atomic Studio Cloud; an administrator agrees again after reactivating it.
* Deleting the plugin also deletes your site's private key.

== Screenshots ==

1. Before anything is sent, an administrator agrees to use Atomic Studio Cloud.
2. Authorizing Figma: your Figma credentials never reach this site or the plugin.
3. Paste the link to one Figma frame and import it as a draft Elementor page.
4. The import result: the Figma frame beside the draft page it became.
5. The imported page in the Elementor editor — real headings, containers and text you edit like anything you built there.
6. Full transparency: exactly what this plugin sends to Atomic Studio Cloud, and when.

== Changelog ==

= 1.0.0 =
* Initial release.
