setSelectedStorageType(null)}
+ />
+ );
+ }
if (!clientInfo?.opfsSync || clientInfo.opfsSync?.status === 'error') {
let button = null;
if (storage) {
button = (
-
- dispatch(persistTemporarySite(siteSlug, storage))
- }
- >
- {children}
-
+ persistSiteClick(storage)}>{children}
);
} else {
button = (
- dispatch(persistTemporarySite(siteSlug, 'opfs'))
- }
+ onClick={() => persistSiteClick('opfs')}
>
Save in this browser
@@ -62,9 +69,7 @@ export function SitePersistButton({
- dispatch(persistTemporarySite(siteSlug, 'local-fs'))
- }
+ onClick={() => persistSiteClick('local-fs')}
>
Save in a local directory
diff --git a/packages/playground/website/src/components/site-name-form/index.tsx b/packages/playground/website/src/components/site-name-form/index.tsx
new file mode 100644
index 0000000000..ffb28e4e6a
--- /dev/null
+++ b/packages/playground/website/src/components/site-name-form/index.tsx
@@ -0,0 +1,49 @@
+import React from 'react';
+import { useState } from 'react';
+import ModalButtons from '../modal/modal-buttons';
+import { TextControl } from '@wordpress/components';
+
+interface SiteNameFormProps {
+ onClose: () => void;
+ onSubmit: (newName: string) => void;
+ isBusy: boolean;
+ siteName: string;
+ autoFocusNameInput?: boolean;
+}
+
+export default function SiteNameForm({
+ onClose,
+ onSubmit,
+ isBusy,
+ siteName,
+ autoFocusNameInput = false,
+}: SiteNameFormProps) {
+ const [newName, setNewName] = useState(siteName);
+
+ function submitOnEnter(e: React.KeyboardEvent) {
+ if (e.key === 'Enter') {
+ onSubmit(newName);
+ }
+ }
+
+ return (
+ <>
+
+
+ onSubmit(newName)}
+ submitText="Save"
+ areBusy={isBusy}
+ />
+ >
+ );
+}
diff --git a/packages/playground/website/src/components/toolbar-buttons/rename-menu-item.tsx b/packages/playground/website/src/components/toolbar-buttons/rename-menu-item.tsx
new file mode 100644
index 0000000000..3ba1e26ff3
--- /dev/null
+++ b/packages/playground/website/src/components/toolbar-buttons/rename-menu-item.tsx
@@ -0,0 +1,25 @@
+import { MenuItem } from '@wordpress/components';
+import { setActiveModal } from '../../lib/state/redux/slice-ui';
+import type { PlaygroundDispatch } from '../../lib/state/redux/store';
+import { useDispatch } from 'react-redux';
+import { modalSlugs } from '../layout';
+
+interface Props {
+ onClose: () => void;
+ disabled?: boolean;
+}
+export function RenameMenuItem({ onClose, disabled }: Props) {
+ const dispatch: PlaygroundDispatch = useDispatch();
+ return (
+
+ );
+}
diff --git a/packages/playground/website/src/lib/site-metadata.ts b/packages/playground/website/src/lib/site-metadata.ts
index f0f179739a..d5629b3817 100644
--- a/packages/playground/website/src/lib/site-metadata.ts
+++ b/packages/playground/website/src/lib/site-metadata.ts
@@ -27,6 +27,10 @@ import { resolveBlueprintFromURL } from './state/url/resolve-blueprint-from-url'
*/
export const SiteStorageTypes = ['opfs', 'local-fs', 'none'] as const;
export type SiteStorageType = (typeof SiteStorageTypes)[number];
+export type PersistedSiteStorageType = Extract<
+ SiteStorageType,
+ 'opfs' | 'local-fs'
+>;
/**
* The site logo data.
diff --git a/packages/playground/wordpress-builds/src/sqlite-database-integration/get-sqlite-driver-module-details.ts b/packages/playground/wordpress-builds/src/sqlite-database-integration/get-sqlite-driver-module-details.ts
index 0cda6d0408..a185569ef5 100644
--- a/packages/playground/wordpress-builds/src/sqlite-database-integration/get-sqlite-driver-module-details.ts
+++ b/packages/playground/wordpress-builds/src/sqlite-database-integration/get-sqlite-driver-module-details.ts
@@ -19,7 +19,6 @@ export function getSqliteDriverModuleDetails(
url: string;
} {
switch (version) {
-
case 'develop':
/** @ts-ignore */
return {
diff --git a/packages/playground/wordpress-builds/src/sqlite-database-integration/sqlite-database-integration-versions.json b/packages/playground/wordpress-builds/src/sqlite-database-integration/sqlite-database-integration-versions.json
index 5ad5ea82d3..ae1c3ffcc9 100644
--- a/packages/playground/wordpress-builds/src/sqlite-database-integration/sqlite-database-integration-versions.json
+++ b/packages/playground/wordpress-builds/src/sqlite-database-integration/sqlite-database-integration-versions.json
@@ -1,4 +1,4 @@
{
- "develop": "develop",
- "v2.1.16": "v2.1.16"
-}
\ No newline at end of file
+ "develop": "develop",
+ "v2.1.16": "v2.1.16"
+}