diff --git a/docs/site/components/columns.tsx b/docs/site/components/columns.tsx
new file mode 100644
index 0000000..bec4ca5
--- /dev/null
+++ b/docs/site/components/columns.tsx
@@ -0,0 +1,50 @@
+import clsx from 'clsx';
+
+export function Columns({
+ count,
+ children,
+}: {
+ count: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
+ children: React.ReactNode;
+}) {
+ return (
+
+ {children}
+
+ );
+}
+
+export function Column({
+ children,
+ heading,
+}: {
+ children: React.ReactNode;
+ heading?: string;
+}) {
+ return (
+
+ {heading !== undefined ? (
+ // styles copied from nextra h5
+
+ {heading}
+
+ ) : null}
+ {children}
+
+ );
+}
diff --git a/docs/site/pages/docs/_meta.json b/docs/site/pages/docs/_meta.json
index 33555f5..a99a1bc 100644
--- a/docs/site/pages/docs/_meta.json
+++ b/docs/site/pages/docs/_meta.json
@@ -5,5 +5,6 @@
"remote-state": "Remote State",
"continuous-deployment": "Continuous Deployment",
"commands": "Commands",
+ "importing": "Importing",
"configuration": "Configuration"
}
diff --git a/docs/site/pages/docs/importing.mdx b/docs/site/pages/docs/importing.mdx
new file mode 100644
index 0000000..a103699
--- /dev/null
+++ b/docs/site/pages/docs/importing.mdx
@@ -0,0 +1,197 @@
+import { Callout, Tabs, Tab } from 'nextra-theme-docs';
+import { Steps, FileTree } from 'nextra/components';
+import { Columns, Column } from '@components/columns';
+
+# Importing
+
+
+The import feature _**DOES NOT**_ convert your existing Roblox project into a
+Mantle project. Do not import, then deploy a place with Mantle without first
+testing on a staging environment as you may destroy your assets.
+
+
+Mantle provides an `import` command that allows you to import your existing Roblox experience into a Mantle
+project. However, the import process can be dangerous and may result in the deletion of your assets. This
+guide will walk you through the process to ensure that you do not lose any of your assets.
+
+
+### Temporarily use local state management
+
+If you're using remote state management, we recommend temporarily switching to local state management for the
+rest of this process to:
+
+1. simplify editing the state file, and
+2. prevent unintentional deploys based on your remote state during the process which could delete your assets.
+
+To temporarily switch, you can follow these steps:
+
+1. Run `mantle state download`
+2. Edit your mantle config file to use local state management (e.g. comment out the `state` object)
+
+### Backup your state file
+
+The import process requires making manual changes to your state file. We recommend backing up your state file
+if it's not already to ensure you can restore it later.
+
+### Target your desired environment
+
+Importing your experience will overwrite the state file in the environment you are targeting. Therefore,
+before importing, you should make sure you are targeting the environment you want to import your experience
+into. For example, if you want to import your experience into the `production` environment, first
+ensure you have configured the `production` environment in your mantle config file:
+
+```yml
+environments:
+ - label: production
+ branches: [prod]
+```
+
+Then, ensure you are targeting the `production` environment by either:
+
+- checking out an associated git branch (if you have specified one), or
+- passing the `--environment` (or `-e`) flag to the import command.
+
+### Import your experience
+
+Run `mantle import --target-id ` to import your experience.
+
+After the import command finishes, you can look at your state file to verify it has populated your targeted
+environment's resources.
+
+ **DO NOT** run `mantle deploy` with this state file until completing the following
+steps or you may lose your assets.
+
+The imported state file includes all of the resources in your experience that Mantle knows about, however they
+have not been linked to your local project yet.
+
+### Understand how Mantle will deploy your experience
+
+If you were to deploy your experience now, Mantle would:
+
+1. Build a "desired" state based on your project's configuration and the files in your project
+2. Compare the "desired" state to the "current" state (the state file you just imported)
+3. Delete any resources in the "current" state that are not in the "desired" state
+4. Create any resources in the "desired" state that are not in the "current" state
+5. Update any resources in the "current" state that exist in the "desired" state but have changes
+
+ Note that if a resource is not present in the state file, Mantle does not know it exists
+when it deploys your project and will therefore never update or delete it.
+
+The way Mantle determines if a resource is in the "current" state is by generating an ID for the resource when
+it builds the "desired" state. This ID is generated differently for different resource types.
+
+Therefore, in order to ensure a safe deployment, you must update each resource in the state file in one of
+three ways:
+
+1. The resource matches a Mantle-managed resource and already has the correct ID and inputs. You should leave
+ it as-is.
+2. The resource matches a Mantle-managed resource but has the wrong ID or inputs. You should update its ID or
+ inputs to the correct ones.
+3. The resource does not match a Mantle-managed resource. You should delete it from the state file so that
+ Mantle will ignore it.
+
+### Update your state file
+
+You'll need to update your state file according to the above description. Follow the steps below for each
+resource type.
+
+When updating the inputs for image-related resources, you'll need to provide the `fileHash` for the image. The
+simplest way to do this will be to get it from the inputs of the matching resource in a different environment
+that is already managed by Mantle. Alternatively, leaving it as `fake-hash` will simply cause Mantle to update
+the image, even if it hasn't changed.
+
+#### Resources with correct IDs and inputs
+
+The following resources should have the correct IDs and inputs already and can be left as-is:
+
+* Experiences (`experience_singleton`)
+* Experience Activation (`experienceActivation_singleton`)
+* Experience Configuration (`experienceConfiguration_singleton`)
+* Experience Thumbnail Order (`experienceThumbnailOrder_singleton`)
+
+#### Experience thumbnails
+
+| Imported ID format | Managed ID format |
+| ----- | ---- |
+| `experienceThumbnail_` | `experienceThumbnail_` |
+
+Example: given the below project structure and Mantle config, make the changes to the state file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ```yml filename="mantle.yml"
+ target:
+ experience:
+ thumbnails:
+ - direct-thumbnail.png
+ - marketing/thumbnail*
+ ```
+
+
+
+```diff filename=".mantle-state.yml"
+environments:
+ prod:
+- - id: experienceThumbnail_57595630
++ - id: experienceThumbnail_direct-thumbnail.png
+ inputs:
+ experienceThumbnail:
+- filePath: fake-path
++ filePath: direct-thumbnail.png
+- fileHash: fake-hash
++ fileHash: 14fff07f4eb2cc47fd4014d1b6693ba1d18a5ae461a8fd78c3bbaae6eef0544d
+ outputs:
+ experienceThumbnail:
+ assetId: 57595630
+ dependencies:
+ - experience_singleton
+- - id: experienceThumbnail_57595629
++ - id: experienceThumbnail_marketing/thumbnail-1.png
+ inputs:
+ experienceThumbnail:
+- filePath: fake-path
++ filePath: marketing/thumbnail-1.png
+- fileHash: fake-hash
++ fileHash: 59440408d802ee81458373a2bb4bd1be0a8c4c74fc5995bc67726ec3e6c0cdd4
+ outputs:
+ experienceThumbnail:
+ assetId: 57595629
+ dependencies:
+ - experience_singleton
+- - id: experienceThumbnail_57595628
++ - id: experienceThumbnail_marketing/thumbnail-2.jpg
+ inputs:
+ experienceThumbnail:
+- filePath: fake-path
++ filePath: marketing/thumbnail-2.jpg
+- fileHash: fake-hash
++ fileHash: 3a4f4d3b506f2a2a394f74ac0725854ca160707e9882b42682b77a5a1175f3c8
+ outputs:
+ experienceThumbnail:
+ assetId: 57595628
+ dependencies:
+ - experience_singleton
+```
+
+#### Images
+
+### Switch back to remote state management
+
+If you switched to local state management, you can now switch back to remote state management by following
+these steps:
+
+1. Edit your mantle config file to use remote state management (e.g. uncomment the `state` object)
+2. Run `mantle state upload` (this will replace your remote state with the local state file you modified as
+ part of this process)
+
+
diff --git a/docs/site/pages/docs/remote-state.mdx b/docs/site/pages/docs/remote-state.mdx
index 43c04ab..090f128 100644
--- a/docs/site/pages/docs/remote-state.mdx
+++ b/docs/site/pages/docs/remote-state.mdx
@@ -1,5 +1,4 @@
import { Card, Cards } from 'nextra/components';
-import { Database } from 'react-feather';
# Remote State