feat(media): scope selection UI for CDN/media keys#70
Merged
Conversation
Phase 3 — the UI layer for the media API scope model. Lets an owner/admin mint scoped keys (delivery / media:read / media:write) from the CDN panel, completing the scope story DB -> API -> UI. - `FormCheckbox` atom — accessible (label/input association, focus-visible), array v-model for multi-select. - `CDNPanel.vue` — scope checkboxes at key creation (default delivery, must pick at least one), `scopes` sent in the create POST, scope badges on the keys list. `CDNKey` interface carries `scopes`. - `listCDNKeys` now selects `scopes` so the list can render them. - Dictionary: scope labels (ui-strings) + `cdn.scope_insufficient`, `cdn.scope_invalid`, `media.url_blocked` (error-messages) — resolves the Phase 1/2 fallbacks. typecheck + lint clean; 681 tests green. The generated `@contentrain/query` client is rebuilt at build time (gitignored), so only the source dictionary JSON is committed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 3 — Scope selection UI for CDN/media keys
The UI layer for the media API scope model — owners/admins mint scoped keys (
delivery/media:read/media:write) from the CDN panel. Completes the scope story DB → API → UI.Changes
FormCheckboxatom — accessible (label/input association,focus-visiblering,accent-primary-600), arrayv-modelfor multi-select.CDNPanel.vue— scope checkboxes at key creation (defaultdelivery, must pick ≥1);scopessent in the create POST; scope badges on the keys list.CDNKeyinterface carriesscopes.listCDNKeysselectsscopesso the list renders them.cdn.scope_insufficient,cdn.scope_invalid,media.url_blocked(error-messages). Resolves the graceful fallbacks from Phase 1/2.Notes
@contentrain/queryclient is rebuilt at build time (gitignored); only the source dictionary JSON is committed.Checks
typecheck ✅ · lint ✅ · 681 tests green.
Companion to #67 (scope foundation, merged) and #69 (media CRUD routes).