diff --git a/.changeset/better-cameras-smoke.md b/.changeset/better-cameras-smoke.md new file mode 100644 index 000000000..ecf4e6ccf --- /dev/null +++ b/.changeset/better-cameras-smoke.md @@ -0,0 +1,5 @@ +--- +"@emdash-cms/admin": patch +--- + +Replaces 20 raw `` elements across the admin UI with Kumo's `Switch` and `Checkbox` components. Single-boolean toggles (SEO, Enable comments, Required, etc.) become `Switch`; multi-select / list-context checkboxes (collection multi-select, term tree nodes) become `Checkbox`. Drops manual styling and label markup that duplicated what the Kumo components provide built-in. diff --git a/packages/admin/src/components/ContentTypeEditor.tsx b/packages/admin/src/components/ContentTypeEditor.tsx index db176e442..36ddaa3e9 100644 --- a/packages/admin/src/components/ContentTypeEditor.tsx +++ b/packages/admin/src/components/ContentTypeEditor.tsx @@ -1,4 +1,4 @@ -import { Badge, Button, Input, InputArea, Label, Select } from "@cloudflare/kumo"; +import { Badge, Button, Checkbox, Input, InputArea, Label, Select, Switch } from "@cloudflare/kumo"; import { DndContext, closestCenter, @@ -441,50 +441,43 @@ export function ContentTypeEditor({
{SUPPORT_OPTIONS.map((option) => ( - +
))} {/* SEO toggle */}
- + setHasSeo(checked)} + disabled={isFromCode} + label={ +
+ {t`SEO`} +

+ {t`Add SEO metadata fields (title, description, image) and include in sitemap`} +

+
+ } + />
@@ -493,26 +486,19 @@ export function ContentTypeEditor({

{t`Comments`}

- + setCommentsEnabled(checked)} + disabled={isFromCode} + label={ +
+ {t`Enable comments`} +

+ {t`Allow visitors to leave comments on this collection's content`} +

+
+ } + /> {commentsEnabled && ( <> @@ -545,28 +531,21 @@ export function ContentTypeEditor({ {t`Set to 0 to never close comments automatically.`}

- + setCommentsAutoApproveUsers(checked)} + disabled={isFromCode} + label={ +
+ + {t`Auto-approve authenticated users`} + +

+ {t`Comments from logged-in CMS users are approved automatically`} +

+
+ } + /> )}
diff --git a/packages/admin/src/components/FieldEditor.tsx b/packages/admin/src/components/FieldEditor.tsx index 8babe0eb3..abd319fd3 100644 --- a/packages/admin/src/components/FieldEditor.tsx +++ b/packages/admin/src/components/FieldEditor.tsx @@ -1,4 +1,4 @@ -import { Button, Dialog, Input, InputArea, Select } from "@cloudflare/kumo"; +import { Button, Dialog, Input, InputArea, Select, Switch } from "@cloudflare/kumo"; import { useLingui } from "@lingui/react/macro"; import { TextT, @@ -431,38 +431,26 @@ export function FieldEditor({ open, onOpenChange, field, onSave, isSaving }: Fie {/* Toggles */}
- - + setField("required", checked)} + label={{t`Required`}} + /> + setField("unique", checked)} + label={{t`Unique`}} + /> {(selectedType === "string" || selectedType === "text" || selectedType === "portableText" || selectedType === "slug" || selectedType === "url") && ( - + setField("searchable", checked)} + label={{t`Searchable`}} + /> )}
@@ -600,18 +588,15 @@ export function FieldEditor({ open, onOpenChange, field, onSave, isSaving }: Fie /> - + { + const updated = [...formState.subFields]; + updated[i] = { ...sf, required: checked }; + setFormState((prev) => ({ ...prev, subFields: updated })); + }} + />