@fikar-ai/design 1.6.0 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/components.css +9 -6
- package/package.json +1 -1
- package/recipes/shell.html +1 -1
- package/templates/jinja/shell.html +1 -1
package/README.md
CHANGED
|
@@ -149,7 +149,9 @@ Rules, in force on every surface:
|
|
|
149
149
|
- From 1024px the sidebar shows open at 248px. It can collapse to an icon rail at 72px.
|
|
150
150
|
- The account cluster (launcher, theme control, avatar) sits at the top right of the top bar on every surface.
|
|
151
151
|
- The collapse control (`.shell-collapse`) is the last child of the sidebar, so it sits at the bottom in
|
|
152
|
-
the same position open or collapsed. It is
|
|
152
|
+
the same position open or collapsed. It is an icon-only button with a static panel icon: left-aligned in
|
|
153
|
+
line with the nav icons when open, centred in the rail when collapsed. Its `<span class="nav-label">Collapse</span>`
|
|
154
|
+
is clipped (not removed) in both states and stays as the accessible name. It is hidden below 1024px.
|
|
153
155
|
- The choice is stored in `localStorage` under `fikar.shell.collapsed`: the value `"1"` means collapsed,
|
|
154
156
|
`"0"` means open, and an absent key is read as open. Since 0.8.0 both `shell.js` and `@fikar-ai/design-react` write `"0"` on
|
|
155
157
|
expand; an older surface that removes the key is still read correctly. Storage is per origin, so the choice does not follow a person from
|
package/components.css
CHANGED
|
@@ -187,20 +187,23 @@ nav.side { display: flex; flex-direction: column; gap: 2px; }
|
|
|
187
187
|
renders as before and the phone drawer never sees the state. Labels are
|
|
188
188
|
clipped, not display:none, so they stay in the accessibility tree and give
|
|
189
189
|
the host's tooltip its text. The collapse control is the last child of the
|
|
190
|
-
sidebar, so it holds the same place open or collapsed.
|
|
190
|
+
sidebar, so it holds the same place open or collapsed. It is an icon-only 38px
|
|
191
|
+
square (panel icon, static): its "Collapse" label is clipped in both states and
|
|
192
|
+
stays as the accessible name. Open, it sits left so its icon lines up with the nav
|
|
193
|
+
icons (14px sidebar padding + 10px item padding); collapsed, it is centred in the rail. ── */
|
|
191
194
|
.shell-collapse { display: none; }
|
|
192
195
|
@media (min-width: 1024px) {
|
|
193
|
-
.shell-collapse { display: flex; align-items: center;
|
|
194
|
-
background: none; color: hsl(var(--muted-foreground)); font-family: inherit; font-size: 14px; font-weight: 500;
|
|
196
|
+
.shell-collapse { position: relative; display: flex; align-items: center; justify-content: center; align-self: flex-start; width: 38px; height: 38px; margin-top: 8px; padding: 0; border: 0; border-radius: var(--r-sm);
|
|
197
|
+
background: none; color: hsl(var(--muted-foreground)); font-family: inherit; font-size: 14px; font-weight: 500; cursor: pointer;
|
|
195
198
|
transition: background-color var(--fast) var(--ease), color var(--fast) var(--ease); }
|
|
196
199
|
.shell-collapse:hover { background: hsl(var(--muted)); color: hsl(var(--foreground)); }
|
|
197
200
|
.shell-collapse svg { width: 18px; height: 18px; flex: 0 0 auto; }
|
|
198
201
|
.shell.is-collapsed { grid-template-columns: 72px 1fr; }
|
|
199
|
-
.shell.is-collapsed .nav-item
|
|
200
|
-
.shell.is-collapsed .
|
|
202
|
+
.shell.is-collapsed .nav-item { position: relative; justify-content: center; padding-left: 0; padding-right: 0; }
|
|
203
|
+
.shell.is-collapsed .shell-collapse { align-self: center; }
|
|
204
|
+
.shell-collapse .nav-label, .shell.is-collapsed .nav-label, .shell.is-collapsed .brand .word, .shell.is-collapsed .side-foot .meta {
|
|
201
205
|
position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0; }
|
|
202
206
|
.shell.is-collapsed .sidebar .brand, .shell.is-collapsed .side-foot { justify-content: center; padding-left: 0; padding-right: 0; }
|
|
203
|
-
.shell.is-collapsed .shell-collapse svg { transform: rotate(180deg); }
|
|
204
207
|
}
|
|
205
208
|
|
|
206
209
|
/* ── app shell: theme-aware logo (KAN-322) ──
|
package/package.json
CHANGED
package/recipes/shell.html
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
<div class="meta"><b>Alex Morgan</b><br><span>Admin</span></div>
|
|
23
23
|
</div>
|
|
24
24
|
<button class="shell-collapse" type="button" aria-controls="sidebar" aria-pressed="false" title="Collapse sidebar">
|
|
25
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><
|
|
25
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M9 3v18"/></svg>
|
|
26
26
|
<span class="nav-label">Collapse</span>
|
|
27
27
|
</button>
|
|
28
28
|
</aside>
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
</div>
|
|
47
47
|
{%- endif %}
|
|
48
48
|
<button class="shell-collapse" type="button" aria-controls="sidebar" aria-pressed="false" title="Collapse sidebar">
|
|
49
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><
|
|
49
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M9 3v18"/></svg>
|
|
50
50
|
<span class="nav-label">Collapse</span>
|
|
51
51
|
</button>
|
|
52
52
|
</aside>
|