--- name: fantasia-context-menu-dividers description: >- Context menu divider policy: full primary-bright group separators vs low-opacity separatorAlt between consecutive items in the same group. Use when adding or editing q-menu q-list rows, AppControlSingleMenu data, or hand-built context menus. --- # Context menu dividers Rule: [fa-context-menu-dividers.mdc](../../rules/fa-context-menu-dividers.mdc). ## Quick rule | Situation | Divider | | --- | --- | | Section / group break | **Group separator** — **`primary-bright`**, full opacity | | 2nd+ item in same group, no group line above | **separatorAlt** — **`text-menu-separator`**, **`opacity: 0.2`** | | Right after group separator | **Nothing** | ## Data-driven menus **`AppControlSingleMenu`** + **`AppControlMenus/_data/*`**: insert **`{ mode: 'separator' }`** only for group breaks. Renderer adds separatorAlt via **`contextMenuShouldShowSeparatorAltBeforeItem`**. ## Hand-built menus 1. Group breaks: **``** before first row of new section (or after prior section). 2. Within section: **``** before each item after the first in that section. 3. **`v-for` lists** (recent projects, browse tabs, locales): **`v-if="contextMenuShouldShowSeparatorAltBeforeIndex(index)"`** before **`q-item`**; do not use full separators between homogeneous rows. Helper: **`AppControlMenus/scripts/functions/contextMenuShouldShowSeparatorAltBeforeItem.ts`**. ## SCSS ```scss @use '../../../globals/AppControlMenus/styles/contextMenuSeparators.mixin' as contextMenuSeparators; .feature__separator { @include contextMenuSeparators.fa-context-menu-separator-group; } .feature__separatorAlt { @include contextMenuSeparators.fa-context-menu-separator-alt; } ``` Import path depth varies by feature folder. Tokens: **`AppControlMenus/styles/_variables.scss`** — **`$appControlMenus-separatorColor`**, **`$appControlMenus-separatorAltColor`**. ## Inventory (action-row menus) | Surface | Pattern | | --- | --- | | **`AppControlSingleMenu`** | Auto separatorAlt + data group separators | | Document tab context menu + browse submenu | Hand-built; reference implementation | | **`ProjectHierarchyTreeNodeContextMenu`** | Hand-built | | **`GlobalLanguageSelector`** | Light theme; separatorAlt between locales | | **`SplashControlsResumeDropdown`** | separatorAlt between recent projects | | **`FaSelectInput`** | separatorAlt between dropdown options | | Color palette swatch context menu | Group separator duplicate → delete only | ## Tests - **`contextMenuShouldShowSeparatorAltBeforeItem.vitest.test.ts`** (AppControlMenus) - **`AppControlSingleMenu.vitest.test.ts`** — separatorAlt presence/absence - Feature vitest: row clicks still work; optional separator class count when behavior is non-obvious ## Related - [fantasia-quasar-vue](../fantasia-quasar-vue/SKILL.md) - [vue-bem-scss.mdc](../../rules/vue-bem-scss.mdc)