@classic-homes/theme-svelte 1.30.1 → 1.31.0
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/dist/lib/components/ActionHeader.svelte +23 -19
- package/dist/lib/components/ActionHeader.svelte.d.ts +3 -3
- package/dist/lib/components/BackButton.svelte +53 -0
- package/dist/lib/components/BackButton.svelte.d.ts +13 -0
- package/dist/lib/components/Icon.svelte +8 -0
- package/dist/lib/components/Icon.svelte.d.ts +1 -1
- package/dist/lib/components/layout/Header.svelte +10 -14
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.js +1 -0
- package/package.json +1 -1
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
import { cn } from '../utils.js';
|
|
35
35
|
import Button from './Button.svelte';
|
|
36
36
|
import Icon from './Icon.svelte';
|
|
37
|
+
import BackButton from './BackButton.svelte';
|
|
37
38
|
import DropdownMenu, { type DropdownMenuItem } from './DropdownMenu.svelte';
|
|
38
39
|
|
|
39
40
|
interface Props {
|
|
@@ -45,9 +46,9 @@
|
|
|
45
46
|
caption?: string;
|
|
46
47
|
/** Heading level for the title (default 1) */
|
|
47
48
|
headingLevel?: 1 | 2 | 3;
|
|
48
|
-
/** Renders a back
|
|
49
|
+
/** Renders a labelled back link above the title, linking here */
|
|
49
50
|
backHref?: string;
|
|
50
|
-
/** What the back
|
|
51
|
+
/** What the back link returns to, e.g. "signs" → "Back to signs" */
|
|
51
52
|
backLabel?: string;
|
|
52
53
|
/** Header actions; see `ActionHeaderAction.priority` for how they collapse */
|
|
53
54
|
actions?: ActionHeaderAction[];
|
|
@@ -59,7 +60,7 @@
|
|
|
59
60
|
collapseAt?: 'auto' | 'sm' | 'md' | 'lg' | 'never';
|
|
60
61
|
/** Accessible name of the overflow menu trigger */
|
|
61
62
|
moreLabel?: string;
|
|
62
|
-
/** Leading visual
|
|
63
|
+
/** Leading visual beside the title (e.g. a record thumbnail) */
|
|
63
64
|
media?: Snippet;
|
|
64
65
|
/** Inline content right after the title (keep it small, e.g. one badge) */
|
|
65
66
|
titleSuffix?: Snippet;
|
|
@@ -131,7 +132,6 @@
|
|
|
131
132
|
const narrowMenu = $derived(toMenu([...secondary, ...overflow]));
|
|
132
133
|
|
|
133
134
|
const headingTag = $derived(`h${headingLevel}`);
|
|
134
|
-
const hasLead = $derived(Boolean(backHref || media));
|
|
135
135
|
const hasActions = $derived(primary.length > 0 || secondary.length > 0 || overflow.length > 0);
|
|
136
136
|
|
|
137
137
|
/** Mirrors Button's `outline` variant at `size="sm"` */
|
|
@@ -160,22 +160,17 @@
|
|
|
160
160
|
{...restProps}
|
|
161
161
|
>
|
|
162
162
|
<div class="ah-grid">
|
|
163
|
-
{#if
|
|
163
|
+
{#if backHref}
|
|
164
|
+
<!-- Text, not a bare arrow: an icon-only back button gets mistaken for
|
|
165
|
+
(and confused with) the sidebar collapse toggle beside it. -->
|
|
166
|
+
<div class="ah-back">
|
|
167
|
+
<BackButton href={backHref} label={backLabel} class="-ms-2" />
|
|
168
|
+
</div>
|
|
169
|
+
{/if}
|
|
170
|
+
|
|
171
|
+
{#if media}
|
|
164
172
|
<div class="ah-lead">
|
|
165
|
-
{
|
|
166
|
-
<Button
|
|
167
|
-
variant="ghost"
|
|
168
|
-
size="icon"
|
|
169
|
-
href={backHref}
|
|
170
|
-
class="h-9 w-9 shrink-0"
|
|
171
|
-
aria-label={backLabel ? `Back to ${backLabel}` : 'Back'}
|
|
172
|
-
>
|
|
173
|
-
<Icon name="arrow-left" size={18} aria-hidden="true" />
|
|
174
|
-
</Button>
|
|
175
|
-
{/if}
|
|
176
|
-
{#if media}
|
|
177
|
-
<div class="shrink-0">{@render media()}</div>
|
|
178
|
-
{/if}
|
|
173
|
+
<div class="shrink-0">{@render media()}</div>
|
|
179
174
|
</div>
|
|
180
175
|
{/if}
|
|
181
176
|
|
|
@@ -288,6 +283,7 @@
|
|
|
288
283
|
display: grid;
|
|
289
284
|
grid-template-columns: auto minmax(0, 1fr) auto auto;
|
|
290
285
|
grid-template-areas:
|
|
286
|
+
'back back back back'
|
|
291
287
|
'lead heading actions actions'
|
|
292
288
|
'lead sub sub sub'
|
|
293
289
|
'lead caption caption caption'
|
|
@@ -309,6 +305,12 @@
|
|
|
309
305
|
--ah-title-leading: 1.5rem;
|
|
310
306
|
}
|
|
311
307
|
|
|
308
|
+
.ah-back {
|
|
309
|
+
grid-area: back;
|
|
310
|
+
min-width: 0;
|
|
311
|
+
margin-bottom: 0.25rem;
|
|
312
|
+
}
|
|
313
|
+
|
|
312
314
|
.ah-lead {
|
|
313
315
|
grid-area: lead;
|
|
314
316
|
align-self: start;
|
|
@@ -448,6 +450,7 @@
|
|
|
448
450
|
--ah-subtitle-size: 1rem;
|
|
449
451
|
--ah-subtitle-leading: 1.5rem;
|
|
450
452
|
grid-template-areas:
|
|
453
|
+
'back back back back'
|
|
451
454
|
'lead heading actions tools'
|
|
452
455
|
'lead sub actions tools'
|
|
453
456
|
'lead badges badges badges';
|
|
@@ -456,6 +459,7 @@
|
|
|
456
459
|
/* With a caption the actions sit on the title row and the caption under them */
|
|
457
460
|
[data-has-caption] .ah-grid {
|
|
458
461
|
grid-template-areas:
|
|
462
|
+
'back back back back'
|
|
459
463
|
'lead heading actions tools'
|
|
460
464
|
'lead sub caption tools'
|
|
461
465
|
'lead badges badges badges';
|
|
@@ -35,9 +35,9 @@ interface Props {
|
|
|
35
35
|
caption?: string;
|
|
36
36
|
/** Heading level for the title (default 1) */
|
|
37
37
|
headingLevel?: 1 | 2 | 3;
|
|
38
|
-
/** Renders a back
|
|
38
|
+
/** Renders a labelled back link above the title, linking here */
|
|
39
39
|
backHref?: string;
|
|
40
|
-
/** What the back
|
|
40
|
+
/** What the back link returns to, e.g. "signs" → "Back to signs" */
|
|
41
41
|
backLabel?: string;
|
|
42
42
|
/** Header actions; see `ActionHeaderAction.priority` for how they collapse */
|
|
43
43
|
actions?: ActionHeaderAction[];
|
|
@@ -49,7 +49,7 @@ interface Props {
|
|
|
49
49
|
collapseAt?: 'auto' | 'sm' | 'md' | 'lg' | 'never';
|
|
50
50
|
/** Accessible name of the overflow menu trigger */
|
|
51
51
|
moreLabel?: string;
|
|
52
|
-
/** Leading visual
|
|
52
|
+
/** Leading visual beside the title (e.g. a record thumbnail) */
|
|
53
53
|
media?: Snippet;
|
|
54
54
|
/** Inline content right after the title (keep it small, e.g. one badge) */
|
|
55
55
|
titleSuffix?: Snippet;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* BackButton - a labelled "← Back to {label}" link (or button with `onclick`).
|
|
4
|
+
*
|
|
5
|
+
* The visible text is the point: an icon-only arrow gets confused with other
|
|
6
|
+
* chevron controls (e.g. the sidebar toggle). The label truncates rather
|
|
7
|
+
* than wraps, and the full text stays as the tooltip.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```svelte
|
|
11
|
+
* <BackButton href="/marketing/signs" label="signs" />
|
|
12
|
+
* <BackButton onclick={close} label="all links" />
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
import { cn } from '../utils.js';
|
|
16
|
+
import Icon from './Icon.svelte';
|
|
17
|
+
|
|
18
|
+
interface Props {
|
|
19
|
+
/** Where Back goes; renders a link */
|
|
20
|
+
href?: string;
|
|
21
|
+
/** Click handler; renders a button when there is no `href` */
|
|
22
|
+
onclick?: (event: MouseEvent) => void;
|
|
23
|
+
/** What Back returns to, e.g. "signs" → "Back to signs" (omit for plain "Back") */
|
|
24
|
+
label?: string;
|
|
25
|
+
class?: string;
|
|
26
|
+
[key: string]: unknown;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
let { href, onclick, label, class: className, ...restProps }: Props = $props();
|
|
30
|
+
|
|
31
|
+
const text = $derived(label ? `Back to ${label}` : 'Back');
|
|
32
|
+
|
|
33
|
+
const classes = $derived(
|
|
34
|
+
cn(
|
|
35
|
+
'inline-flex h-8 max-w-full items-center gap-1.5 rounded-md px-2 text-sm font-medium text-muted-foreground',
|
|
36
|
+
'ring-offset-background hover:bg-muted-hover hover:text-foreground',
|
|
37
|
+
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
|
|
38
|
+
className
|
|
39
|
+
)
|
|
40
|
+
);
|
|
41
|
+
</script>
|
|
42
|
+
|
|
43
|
+
{#if href}
|
|
44
|
+
<a {href} class={classes} title={text} data-back-button {onclick} {...restProps}>
|
|
45
|
+
<Icon name="arrow-left" size={16} class="shrink-0" />
|
|
46
|
+
<span class="truncate">{text}</span>
|
|
47
|
+
</a>
|
|
48
|
+
{:else}
|
|
49
|
+
<button type="button" class={classes} title={text} data-back-button {onclick} {...restProps}>
|
|
50
|
+
<Icon name="arrow-left" size={16} class="shrink-0" />
|
|
51
|
+
<span class="truncate">{text}</span>
|
|
52
|
+
</button>
|
|
53
|
+
{/if}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface Props {
|
|
2
|
+
/** Where Back goes; renders a link */
|
|
3
|
+
href?: string;
|
|
4
|
+
/** Click handler; renders a button when there is no `href` */
|
|
5
|
+
onclick?: (event: MouseEvent) => void;
|
|
6
|
+
/** What Back returns to, e.g. "signs" → "Back to signs" (omit for plain "Back") */
|
|
7
|
+
label?: string;
|
|
8
|
+
class?: string;
|
|
9
|
+
[key: string]: unknown;
|
|
10
|
+
}
|
|
11
|
+
declare const BackButton: import("svelte").Component<Props, {}, "">;
|
|
12
|
+
type BackButton = ReturnType<typeof BackButton>;
|
|
13
|
+
export default BackButton;
|
|
@@ -169,6 +169,8 @@
|
|
|
169
169
|
| 'list'
|
|
170
170
|
| 'columns'
|
|
171
171
|
| 'sidebar'
|
|
172
|
+
| 'panel-left-close'
|
|
173
|
+
| 'panel-left-open'
|
|
172
174
|
| 'layers'
|
|
173
175
|
| 'layout'
|
|
174
176
|
| 'move'
|
|
@@ -735,6 +737,12 @@
|
|
|
735
737
|
sidebar: {
|
|
736
738
|
path: 'M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zM9 3v18',
|
|
737
739
|
},
|
|
740
|
+
'panel-left-close': {
|
|
741
|
+
path: 'M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zM9 3v18M16 15l-3-3 3-3',
|
|
742
|
+
},
|
|
743
|
+
'panel-left-open': {
|
|
744
|
+
path: 'M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zM9 3v18M14 9l3 3-3 3',
|
|
745
|
+
},
|
|
738
746
|
layers: { path: 'M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5' },
|
|
739
747
|
layout: {
|
|
740
748
|
path: 'M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zM3 9h18M9 21V9',
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Available icon names for the Icon component.
|
|
3
3
|
* Organized by category for easier discovery.
|
|
4
4
|
*/
|
|
5
|
-
export type IconName = 'close' | 'check' | 'plus' | 'minus' | 'edit' | 'trash' | 'info' | 'alert-circle' | 'alert-triangle' | 'search' | 'settings' | 'home' | 'loading' | 'send' | 'more' | 'more-horizontal' | 'grip' | 'history' | 'copy' | 'download' | 'upload' | 'refresh' | 'save' | 'print' | 'share' | 'cut' | 'paste' | 'undo' | 'redo' | 'archive' | 'power' | 'zap' | 'sparkles' | 'pin' | 'chevron-down' | 'chevron-up' | 'chevron-left' | 'chevron-right' | 'chevrons-down' | 'chevrons-up' | 'chevrons-left' | 'chevrons-right' | 'arrow-left' | 'arrow-right' | 'arrow-up' | 'arrow-down' | 'corner-up-left' | 'corner-up-right' | 'corner-down-left' | 'corner-down-right' | 'menu' | 'external-link' | 'expand' | 'collapse' | 'fullscreen' | 'minimize' | 'user' | 'users' | 'user-plus' | 'user-minus' | 'user-check' | 'user-x' | 'shield' | 'shield-check' | 'shield-off' | 'badge' | 'id-card' | 'message' | 'chat' | 'mail' | 'phone' | 'bell' | 'bell-off' | 'inbox' | 'at-sign' | 'hash' | 'rss' | 'send' | 'message-circle' | 'message-square' | 'file' | 'file-text' | 'file-code' | 'file-plus' | 'file-minus' | 'folder' | 'folder-open' | 'folder-plus' | 'folder-minus' | 'clipboard' | 'clipboard-check' | 'clipboard-list' | 'book' | 'book-open' | 'newspaper' | 'link' | 'image' | 'play' | 'pause' | 'stop' | 'skip-forward' | 'skip-back' | 'rewind' | 'fast-forward' | 'volume' | 'volume-1' | 'volume-2' | 'volume-x' | 'video' | 'video-off' | 'mic' | 'mic-off' | 'music' | 'camera' | 'camera-off' | 'shopping-cart' | 'shopping-bag' | 'credit-card' | 'dollar-sign' | 'percent' | 'tag' | 'tags' | 'package' | 'truck' | 'receipt' | 'wallet' | 'briefcase' | 'eye' | 'eye-off' | 'lock' | 'unlock' | 'key' | 'check-circle' | 'x-circle' | 'help-circle' | 'alert-octagon' | 'circle' | 'square' | 'triangle' | 'star' | 'star-half' | 'heart' | 'bookmark' | 'flag' | 'thumbs-up' | 'thumbs-down' | 'award' | 'trophy' | 'gift' | 'grid' | 'list' | 'columns' | 'sidebar' | 'layers' | 'layout' | 'move' | 'maximize' | 'filter' | 'sort' | 'sort-asc' | 'sort-desc' | 'bar-chart' | 'bar-chart-2' | 'line-chart' | 'pie-chart' | 'trending-up' | 'trending-down' | 'activity' | 'target' | 'calendar' | 'calendar-plus' | 'calendar-minus' | 'calendar-check' | 'clock' | 'timer' | 'hourglass' | 'alarm' | 'sun' | 'moon' | 'cloud' | 'cloud-rain' | 'cloud-snow' | 'wind' | 'thermometer' | 'droplet' | 'umbrella' | 'globe' | 'map' | 'map-pin' | 'navigation' | 'compass' | 'crosshair' | 'smartphone' | 'tablet' | 'laptop' | 'monitor' | 'tv' | 'printer' | 'wifi' | 'wifi-off' | 'bluetooth' | 'battery' | 'battery-charging' | 'cpu' | 'hard-drive' | 'server' | 'database' | 'cloud-upload' | 'cloud-download' | 'terminal' | 'code' | 'code-2' | 'bug' | 'git-branch' | 'git-commit' | 'git-merge' | 'git-pull-request' | 'box' | 'package' | 'lightbulb' | 'tool' | 'wrench' | 'scissors' | 'paperclip' | 'anchor' | 'aperture' | 'loader' | 'rotate-cw' | 'rotate-ccw' | 'log-in' | 'log-out' | 'slash' | 'percent' | 'hash' | 'bold' | 'italic' | 'heading' | 'list-ordered' | 'indent' | 'outdent' | 'quote' | 'table' | 'keyboard' | 'unlink';
|
|
5
|
+
export type IconName = 'close' | 'check' | 'plus' | 'minus' | 'edit' | 'trash' | 'info' | 'alert-circle' | 'alert-triangle' | 'search' | 'settings' | 'home' | 'loading' | 'send' | 'more' | 'more-horizontal' | 'grip' | 'history' | 'copy' | 'download' | 'upload' | 'refresh' | 'save' | 'print' | 'share' | 'cut' | 'paste' | 'undo' | 'redo' | 'archive' | 'power' | 'zap' | 'sparkles' | 'pin' | 'chevron-down' | 'chevron-up' | 'chevron-left' | 'chevron-right' | 'chevrons-down' | 'chevrons-up' | 'chevrons-left' | 'chevrons-right' | 'arrow-left' | 'arrow-right' | 'arrow-up' | 'arrow-down' | 'corner-up-left' | 'corner-up-right' | 'corner-down-left' | 'corner-down-right' | 'menu' | 'external-link' | 'expand' | 'collapse' | 'fullscreen' | 'minimize' | 'user' | 'users' | 'user-plus' | 'user-minus' | 'user-check' | 'user-x' | 'shield' | 'shield-check' | 'shield-off' | 'badge' | 'id-card' | 'message' | 'chat' | 'mail' | 'phone' | 'bell' | 'bell-off' | 'inbox' | 'at-sign' | 'hash' | 'rss' | 'send' | 'message-circle' | 'message-square' | 'file' | 'file-text' | 'file-code' | 'file-plus' | 'file-minus' | 'folder' | 'folder-open' | 'folder-plus' | 'folder-minus' | 'clipboard' | 'clipboard-check' | 'clipboard-list' | 'book' | 'book-open' | 'newspaper' | 'link' | 'image' | 'play' | 'pause' | 'stop' | 'skip-forward' | 'skip-back' | 'rewind' | 'fast-forward' | 'volume' | 'volume-1' | 'volume-2' | 'volume-x' | 'video' | 'video-off' | 'mic' | 'mic-off' | 'music' | 'camera' | 'camera-off' | 'shopping-cart' | 'shopping-bag' | 'credit-card' | 'dollar-sign' | 'percent' | 'tag' | 'tags' | 'package' | 'truck' | 'receipt' | 'wallet' | 'briefcase' | 'eye' | 'eye-off' | 'lock' | 'unlock' | 'key' | 'check-circle' | 'x-circle' | 'help-circle' | 'alert-octagon' | 'circle' | 'square' | 'triangle' | 'star' | 'star-half' | 'heart' | 'bookmark' | 'flag' | 'thumbs-up' | 'thumbs-down' | 'award' | 'trophy' | 'gift' | 'grid' | 'list' | 'columns' | 'sidebar' | 'panel-left-close' | 'panel-left-open' | 'layers' | 'layout' | 'move' | 'maximize' | 'filter' | 'sort' | 'sort-asc' | 'sort-desc' | 'bar-chart' | 'bar-chart-2' | 'line-chart' | 'pie-chart' | 'trending-up' | 'trending-down' | 'activity' | 'target' | 'calendar' | 'calendar-plus' | 'calendar-minus' | 'calendar-check' | 'clock' | 'timer' | 'hourglass' | 'alarm' | 'sun' | 'moon' | 'cloud' | 'cloud-rain' | 'cloud-snow' | 'wind' | 'thermometer' | 'droplet' | 'umbrella' | 'globe' | 'map' | 'map-pin' | 'navigation' | 'compass' | 'crosshair' | 'smartphone' | 'tablet' | 'laptop' | 'monitor' | 'tv' | 'printer' | 'wifi' | 'wifi-off' | 'bluetooth' | 'battery' | 'battery-charging' | 'cpu' | 'hard-drive' | 'server' | 'database' | 'cloud-upload' | 'cloud-download' | 'terminal' | 'code' | 'code-2' | 'bug' | 'git-branch' | 'git-commit' | 'git-merge' | 'git-pull-request' | 'box' | 'package' | 'lightbulb' | 'tool' | 'wrench' | 'scissors' | 'paperclip' | 'anchor' | 'aperture' | 'loader' | 'rotate-cw' | 'rotate-ccw' | 'log-in' | 'log-out' | 'slash' | 'percent' | 'hash' | 'bold' | 'italic' | 'heading' | 'list-ordered' | 'indent' | 'outdent' | 'quote' | 'table' | 'keyboard' | 'unlink';
|
|
6
6
|
interface Props {
|
|
7
7
|
/** The name of the icon to display */
|
|
8
8
|
name: IconName;
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
import type { HeaderSearchConfig } from '../../types/layout.js';
|
|
56
56
|
import { cn } from '../../utils.js';
|
|
57
57
|
import HeaderSearch from '../HeaderSearch.svelte';
|
|
58
|
+
import Icon from '../Icon.svelte';
|
|
58
59
|
|
|
59
60
|
type Breakpoint = 'sm' | 'md' | 'lg';
|
|
60
61
|
|
|
@@ -220,7 +221,9 @@
|
|
|
220
221
|
</button>
|
|
221
222
|
{/if}
|
|
222
223
|
|
|
223
|
-
<!-- Collapse/Expand Button (Desktop sidebar toggle)
|
|
224
|
+
<!-- Collapse/Expand Button (Desktop sidebar toggle). A panel icon, not a
|
|
225
|
+
chevron: a left-pointing arrow next to the page title reads as "Back".
|
|
226
|
+
The divider after it groups it with the sidebar rather than the page. -->
|
|
224
227
|
{#if showCollapseButton}
|
|
225
228
|
<button
|
|
226
229
|
class={cn(
|
|
@@ -231,22 +234,15 @@
|
|
|
231
234
|
)}
|
|
232
235
|
onclick={() => onCollapseClick?.()}
|
|
233
236
|
aria-label={sidebarCollapsed ? 'Expand sidebar' : 'Collapse sidebar'}
|
|
237
|
+
title={sidebarCollapsed ? 'Expand sidebar' : 'Collapse sidebar'}
|
|
234
238
|
aria-expanded={!sidebarCollapsed}
|
|
235
239
|
>
|
|
236
|
-
<
|
|
237
|
-
class={cn('h-5 w-5 transition-transform', sidebarCollapsed && 'rotate-180')}
|
|
238
|
-
fill="none"
|
|
239
|
-
viewBox="0 0 24 24"
|
|
240
|
-
stroke="currentColor"
|
|
241
|
-
>
|
|
242
|
-
<path
|
|
243
|
-
stroke-linecap="round"
|
|
244
|
-
stroke-linejoin="round"
|
|
245
|
-
stroke-width="2"
|
|
246
|
-
d="M11 19l-7-7 7-7m8 14l-7-7 7-7"
|
|
247
|
-
/>
|
|
248
|
-
</svg>
|
|
240
|
+
<Icon name={sidebarCollapsed ? 'panel-left-open' : 'panel-left-close'} size={20} />
|
|
249
241
|
</button>
|
|
242
|
+
<span
|
|
243
|
+
class={cn('-ml-2 h-6 w-px shrink-0 bg-foreground/20', bp.collapseButtonShow)}
|
|
244
|
+
aria-hidden="true"
|
|
245
|
+
></span>
|
|
250
246
|
{/if}
|
|
251
247
|
|
|
252
248
|
<!-- Page Title -->
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -81,6 +81,7 @@ export { default as AvatarFallback } from './components/AvatarFallback.svelte';
|
|
|
81
81
|
export { default as Section } from './components/Section.svelte';
|
|
82
82
|
export { default as PageHeader } from './components/PageHeader.svelte';
|
|
83
83
|
export { default as ActionHeader, type ActionHeaderAction } from './components/ActionHeader.svelte';
|
|
84
|
+
export { default as BackButton } from './components/BackButton.svelte';
|
|
84
85
|
export { default as AppShell } from './components/layout/AppShell.svelte';
|
|
85
86
|
export { default as DashboardLayout } from './components/layout/DashboardLayout.svelte';
|
|
86
87
|
export { default as PublicLayout } from './components/layout/PublicLayout.svelte';
|
package/dist/lib/index.js
CHANGED
|
@@ -106,6 +106,7 @@ export { default as AvatarFallback } from './components/AvatarFallback.svelte';
|
|
|
106
106
|
export { default as Section } from './components/Section.svelte';
|
|
107
107
|
export { default as PageHeader } from './components/PageHeader.svelte';
|
|
108
108
|
export { default as ActionHeader } from './components/ActionHeader.svelte';
|
|
109
|
+
export { default as BackButton } from './components/BackButton.svelte';
|
|
109
110
|
// Layout Components
|
|
110
111
|
export { default as AppShell } from './components/layout/AppShell.svelte';
|
|
111
112
|
export { default as DashboardLayout } from './components/layout/DashboardLayout.svelte';
|