diff --git a/.claude/skills/components/display-dialog.md b/.claude/skills/components/display-dialog.md index 10b68056..905dedc6 100644 --- a/.claude/skills/components/display-dialog.md +++ b/.claude/skills/components/display-dialog.md @@ -14,6 +14,7 @@ open/close state management. |---|---|---|---| | `dataDialogId` | `string` | — | **Required.** Unique identifier rendered as `data-dialog-id` attribute. | | `variant` | `'dialog' \| 'modal' \| 'confirm' \| 'alert' \| 'fullscreen'` | `'dialog'` | Controls panel sizing and ARIA role. | +| `theme` | `SemanticTheme` | `undefined` | Optional header accent — `data-theme` on `.header` only; adds a coloured bottom border and tints the close icon. | | `v-model` | `boolean` | — | Controls open/closed state. | | `allowContentScroll` | `boolean` | `false` | Enables independent scroll on `.dialog-content`. | | `lockViewport` | `boolean` | `true` | Adds/removes `lock` class on `
` on mount/close. | @@ -119,6 +120,62 @@ CSS over per-instance overrides — dialogs are site-wide UI: } ``` +## Nested dialogs + +When a dialog needs to launch its own sub-dialog (e.g. "Discard changes?" before closing an edit +form), the cleanest approach is to call `useDialogControls` **inside the dialog component itself**. +The sub-dialog is entirely self-contained — the parent page doesn't need to know about it. + +```vue + + + + + + + +Discard changes?
+Your unsaved changes will be lost.
+ + + + + + +