Compare commits

...

3 Commits

Author SHA1 Message Date
Jakub Zych
840af3e922 fix: give long plugin labels more room 2026-10-07 00:07:49 +02:00
Jakub Zych
6d2e3ba8bb docs(planning): log default icon quick fix 2026-10-07 00:07:49 +02:00
Jakub Zych
4a94380b5f fix: use sun as default admin icon 2026-10-06 23:58:44 +02:00
5 changed files with 21 additions and 21 deletions

View File

@@ -5,10 +5,10 @@ current_phase: 15
current_phase_name: Journal plugin
status: executing
stopped_at: Completed 15-04-PLAN.md
last_updated: "2026-10-06T20:31:44.211Z"
last_updated: "2026-10-06T21:58:51.425Z"
last_activity: 2026-10-06
last_activity_desc: Completed quick task 261006-s0v (remove ML copy-from locale UI)
state_head: c05ad09dc23c07be76f69c22e58c4ef2eb34f4b4
state_head: 4a94380b5fe947b657dadd250e1960865ca3285e
progress:
total_phases: 26
completed_phases: 12
@@ -650,6 +650,7 @@ Recent decisions affecting current work:
| 261006-t5r | Make SPA slug preset follow mltext source fields | 2026-10-06 | b5d8506 | [261006-t5r-make-spa-slug-preset-follow-mltext-sourc](./quick/261006-t5r-make-spa-slug-preset-follow-mltext-sourc/) |
| 261006-tnp | Add mltextarea field type | 2026-10-06 | 3596df4 | [261006-tnp-add-mltextarea-field-type](./quick/261006-tnp-add-mltextarea-field-type/) |
| 15 | Commit accumulated planning documents properly | 2026-10-06 | c05ad09 | — |
| 16 | Default icon shouldn't be a square but a sun. | 2026-10-06 | 4a94380 | — |
## Deferred Items

View File

@@ -85,7 +85,6 @@ import {
Settings,
ShieldCheck,
ShoppingCart,
Square,
Star,
Sun,
Table,
@@ -300,8 +299,8 @@ export const winterIcons: Readonly<Record<string, string>> = {
'icon-wrench': 'wrench',
}
/** Neutral icon for names neither lucide map knows. */
export const fallbackIcon: Component = Square
/** Brand icon for names neither lucide map knows. */
export const fallbackIcon: Component = Sun
/** An own entry of a map: names come from the server, so inherited object
* members such as "constructor" or "toString" never count as icons. */

View File

@@ -158,7 +158,7 @@ onBeforeUnmount(cancelClose)
:aria-expanded="collapsed ? (openCode === item.entry.code ? 'true' : 'false') : undefined"
:aria-controls="collapsed && openCode === item.entry.code ? flyoutId(item.entry.code) : undefined"
:class="item.current ? 'bg-accent-soft font-bold text-accent' : 'text-side-text hover:bg-side-hover hover:text-white'"
class="flex w-[68px] flex-col items-center gap-1 rounded-inner px-1.5 py-2 text-center text-[11px] leading-[1.2] tracking-[-0.01em] no-underline transition-colors duration-150 ease-out"
class="flex w-[84px] flex-col items-center gap-1 rounded-inner px-1.5 py-2 text-center text-[11px] leading-[1.2] tracking-[-0.01em] no-underline transition-colors duration-150 ease-out"
@mouseenter="openFlyout(item.entry.code)"
@mouseleave="scheduleClose"
@focus="onItemFocus(item.entry.code)"
@@ -166,7 +166,7 @@ onBeforeUnmount(cancelClose)
@keydown="onItemKeydown($event, item.entry.code)"
>
<component :is="item.icon" :size="20" aria-hidden="true" />
<span>{{ item.entry.label }}</span>
<span class="max-w-full [overflow-wrap:anywhere]">{{ item.entry.label }}</span>
</RouterLink>
<SectionFlyout
v-if="collapsed && openEntry"
@@ -199,10 +199,10 @@ onBeforeUnmount(cancelClose)
data-rail-settings
:aria-current="inSettings ? 'page' : undefined"
:class="inSettings ? 'bg-accent-soft font-bold text-accent' : 'text-side-text hover:bg-side-hover hover:text-white'"
class="flex w-[68px] flex-col items-center gap-1 rounded-inner px-1.5 py-2 text-center text-[11px] leading-[1.2] tracking-[-0.01em] no-underline transition-colors duration-150 ease-out"
class="flex w-[84px] flex-col items-center gap-1 rounded-inner px-1.5 py-2 text-center text-[11px] leading-[1.2] tracking-[-0.01em] no-underline transition-colors duration-150 ease-out"
>
<Settings :size="20" aria-hidden="true" />
<span>{{ t('backend::lang.nav.settings') }}</span>
<span class="max-w-full [overflow-wrap:anywhere]">{{ t('backend::lang.nav.settings') }}</span>
</RouterLink>
</nav>
</template>

View File

@@ -69,7 +69,7 @@
--spacing-row: 54px;
--spacing-row-head: 44px;
--spacing-pager: 34px;
--spacing-rail: 80px;
--spacing-rail: 96px;
--spacing-panel: 224px;
--shadow-card: var(--c-shadow-card);

View File

@@ -19,7 +19,7 @@ import {
Network,
Pencil,
Settings,
Square,
Sun,
Tags,
WandSparkles,
} from '@lucide/vue'
@@ -59,16 +59,16 @@ describe('iconFor', () => {
expect(iconFor('icon-edit')).toBe(Pencil)
})
it('falls back to the neutral square for unknown, empty or missing names', () => {
expect(fallbackIcon).toBe(Square)
expect(iconFor('unknown-icon-name')).toBe(Square)
expect(iconFor('icon-unknown')).toBe(Square)
expect(iconFor('')).toBe(Square)
expect(iconFor(null)).toBe(Square)
expect(iconFor(undefined)).toBe(Square)
expect(iconFor('constructor')).toBe(Square)
expect(iconFor('toString')).toBe(Square)
expect(iconFor('__proto__')).toBe(Square)
it('falls back to the sun for unknown, empty or missing names', () => {
expect(fallbackIcon).toBe(Sun)
expect(iconFor('unknown-icon-name')).toBe(Sun)
expect(iconFor('icon-unknown')).toBe(Sun)
expect(iconFor('')).toBe(Sun)
expect(iconFor(null)).toBe(Sun)
expect(iconFor(undefined)).toBe(Sun)
expect(iconFor('constructor')).toBe(Sun)
expect(iconFor('toString')).toBe(Sun)
expect(iconFor('__proto__')).toBe(Sun)
})
it('maps every Winter alias onto a registered lucide icon', () => {