@nuralyui/layout 0.0.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/bundle.js +297 -0
- package/content.component.d.ts +35 -0
- package/content.component.js +47 -0
- package/content.style.d.ts +2 -0
- package/content.style.js +17 -0
- package/footer.component.d.ts +38 -0
- package/footer.component.js +60 -0
- package/footer.style.d.ts +2 -0
- package/footer.style.js +17 -0
- package/header.component.d.ts +39 -0
- package/header.component.js +61 -0
- package/header.style.d.ts +2 -0
- package/header.style.js +19 -0
- package/index.d.ts +8 -0
- package/index.js +7 -0
- package/layout.component.d.ts +50 -0
- package/layout.component.js +89 -0
- package/layout.style.d.ts +2 -0
- package/layout.style.js +23 -0
- package/layout.types.d.ts +75 -0
- package/layout.types.js +12 -0
- package/package.json +38 -0
- package/react.d.ts +14 -0
- package/react.js +37 -0
- package/sider.component.d.ts +116 -0
- package/sider.component.js +273 -0
- package/sider.style.d.ts +2 -0
- package/sider.style.js +104 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LitElement, html } from 'lit';
|
|
8
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
9
|
+
import { NuralyUIBaseMixin } from '../../shared/base-mixin.js';
|
|
10
|
+
import { headerStyles } from './header.style.js';
|
|
11
|
+
/**
|
|
12
|
+
* # Header Component
|
|
13
|
+
*
|
|
14
|
+
* The top layout component with default styling.
|
|
15
|
+
* Must be placed inside a Layout component.
|
|
16
|
+
*
|
|
17
|
+
* @element nr-header
|
|
18
|
+
*
|
|
19
|
+
* @slot - Default slot for header content
|
|
20
|
+
*
|
|
21
|
+
* @csspart header - The header container element
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```html
|
|
25
|
+
* <nr-layout>
|
|
26
|
+
* <nr-header>
|
|
27
|
+
* <div class="logo">My App</div>
|
|
28
|
+
* <nav>Navigation</nav>
|
|
29
|
+
* </nr-header>
|
|
30
|
+
* </nr-layout>
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
let NrHeaderElement = class NrHeaderElement extends NuralyUIBaseMixin(LitElement) {
|
|
34
|
+
constructor() {
|
|
35
|
+
super(...arguments);
|
|
36
|
+
/**
|
|
37
|
+
* Height of the header. Default is 64px.
|
|
38
|
+
*/
|
|
39
|
+
this.height = '64px';
|
|
40
|
+
}
|
|
41
|
+
render() {
|
|
42
|
+
return html `
|
|
43
|
+
<header
|
|
44
|
+
class="nr-header"
|
|
45
|
+
part="header"
|
|
46
|
+
style="height: ${this.height}"
|
|
47
|
+
>
|
|
48
|
+
<slot></slot>
|
|
49
|
+
</header>
|
|
50
|
+
`;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
NrHeaderElement.styles = headerStyles;
|
|
54
|
+
__decorate([
|
|
55
|
+
property({ type: String })
|
|
56
|
+
], NrHeaderElement.prototype, "height", void 0);
|
|
57
|
+
NrHeaderElement = __decorate([
|
|
58
|
+
customElement('nr-header')
|
|
59
|
+
], NrHeaderElement);
|
|
60
|
+
export { NrHeaderElement };
|
|
61
|
+
//# sourceMappingURL=header.component.js.map
|
package/header.style.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const headerStyles = css `
|
|
3
|
+
:host {
|
|
4
|
+
display: block;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.nr-header {
|
|
8
|
+
display: flex;
|
|
9
|
+
align-items: center;
|
|
10
|
+
padding: var(--nuraly-layout-header-padding);
|
|
11
|
+
height: var(--nuraly-layout-header-height);
|
|
12
|
+
line-height: var(--nuraly-layout-header-height);
|
|
13
|
+
background: var(--nuraly-layout-header-background);
|
|
14
|
+
color: var(--nuraly-layout-header-text);
|
|
15
|
+
border-bottom: 1px solid var(--nuraly-layout-header-border);
|
|
16
|
+
transition: var(--nuraly-layout-transition);
|
|
17
|
+
}
|
|
18
|
+
`;
|
|
19
|
+
//# sourceMappingURL=header.style.js.map
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { NrLayoutElement } from './layout.component.js';
|
|
2
|
+
export { NrHeaderElement } from './header.component.js';
|
|
3
|
+
export { NrFooterElement } from './footer.component.js';
|
|
4
|
+
export { NrSiderElement } from './sider.component.js';
|
|
5
|
+
export { NrContentElement } from './content.component.js';
|
|
6
|
+
export type { LayoutBreakpoint, SiderTheme, SiderTrigger, OnBreakpoint, OnCollapse, LayoutProps, SiderProps, HeaderProps, FooterProps, ContentProps, } from './layout.types.js';
|
|
7
|
+
export { BREAKPOINT_VALUES } from './layout.types.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
package/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { NrLayoutElement } from './layout.component.js';
|
|
2
|
+
export { NrHeaderElement } from './header.component.js';
|
|
3
|
+
export { NrFooterElement } from './footer.component.js';
|
|
4
|
+
export { NrSiderElement } from './sider.component.js';
|
|
5
|
+
export { NrContentElement } from './content.component.js';
|
|
6
|
+
export { BREAKPOINT_VALUES } from './layout.types.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
declare const NrLayoutElement_base: (new (...args: any[]) => import("../../shared/dependency-mixin.js").DependencyAware) & (new (...args: any[]) => import("../../shared/theme-mixin.js").ThemeAware) & (new (...args: any[]) => import("../../shared/event-handler-mixin.js").EventHandlerCapable) & typeof LitElement;
|
|
3
|
+
/**
|
|
4
|
+
* # Layout Component
|
|
5
|
+
*
|
|
6
|
+
* The layout wrapper component that provides the base structure for a page layout.
|
|
7
|
+
* Can contain Header, Sider, Content, Footer, or nested Layout components.
|
|
8
|
+
*
|
|
9
|
+
* @element nr-layout
|
|
10
|
+
*
|
|
11
|
+
* @slot - Default slot for layout children (Header, Sider, Content, Footer, or nested Layout)
|
|
12
|
+
*
|
|
13
|
+
* @csspart layout - The layout container element
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```html
|
|
17
|
+
* <nr-layout>
|
|
18
|
+
* <nr-header>Header</nr-header>
|
|
19
|
+
* <nr-content>Content</nr-content>
|
|
20
|
+
* <nr-footer>Footer</nr-footer>
|
|
21
|
+
* </nr-layout>
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare class NrLayoutElement extends NrLayoutElement_base {
|
|
25
|
+
static styles: import("lit").CSSResult;
|
|
26
|
+
/**
|
|
27
|
+
* Whether the layout contains a Sider component.
|
|
28
|
+
* When true, the layout uses horizontal flex direction.
|
|
29
|
+
* Automatically detected from slotted content.
|
|
30
|
+
*/
|
|
31
|
+
hasSider: boolean;
|
|
32
|
+
connectedCallback(): void;
|
|
33
|
+
updated(changedProperties: Map<string, unknown>): void;
|
|
34
|
+
/**
|
|
35
|
+
* Detects if the layout has a Sider component as a direct child
|
|
36
|
+
*/
|
|
37
|
+
private detectSider;
|
|
38
|
+
/**
|
|
39
|
+
* Handles slot changes to re-detect sider elements
|
|
40
|
+
*/
|
|
41
|
+
private handleSlotChange;
|
|
42
|
+
render(): import("lit").TemplateResult<1>;
|
|
43
|
+
}
|
|
44
|
+
declare global {
|
|
45
|
+
interface HTMLElementTagNameMap {
|
|
46
|
+
'nr-layout': NrLayoutElement;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=layout.component.d.ts.map
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LitElement, html } from 'lit';
|
|
8
|
+
import { customElement, property, queryAssignedElements } from 'lit/decorators.js';
|
|
9
|
+
import { NuralyUIBaseMixin } from '../../shared/base-mixin.js';
|
|
10
|
+
import { layoutStyles } from './layout.style.js';
|
|
11
|
+
/**
|
|
12
|
+
* # Layout Component
|
|
13
|
+
*
|
|
14
|
+
* The layout wrapper component that provides the base structure for a page layout.
|
|
15
|
+
* Can contain Header, Sider, Content, Footer, or nested Layout components.
|
|
16
|
+
*
|
|
17
|
+
* @element nr-layout
|
|
18
|
+
*
|
|
19
|
+
* @slot - Default slot for layout children (Header, Sider, Content, Footer, or nested Layout)
|
|
20
|
+
*
|
|
21
|
+
* @csspart layout - The layout container element
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```html
|
|
25
|
+
* <nr-layout>
|
|
26
|
+
* <nr-header>Header</nr-header>
|
|
27
|
+
* <nr-content>Content</nr-content>
|
|
28
|
+
* <nr-footer>Footer</nr-footer>
|
|
29
|
+
* </nr-layout>
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
let NrLayoutElement = class NrLayoutElement extends NuralyUIBaseMixin(LitElement) {
|
|
33
|
+
constructor() {
|
|
34
|
+
super(...arguments);
|
|
35
|
+
/**
|
|
36
|
+
* Whether the layout contains a Sider component.
|
|
37
|
+
* When true, the layout uses horizontal flex direction.
|
|
38
|
+
* Automatically detected from slotted content.
|
|
39
|
+
*/
|
|
40
|
+
this.hasSider = false;
|
|
41
|
+
}
|
|
42
|
+
connectedCallback() {
|
|
43
|
+
super.connectedCallback();
|
|
44
|
+
this.detectSider();
|
|
45
|
+
}
|
|
46
|
+
updated(changedProperties) {
|
|
47
|
+
super.updated(changedProperties);
|
|
48
|
+
this.detectSider();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Detects if the layout has a Sider component as a direct child
|
|
52
|
+
*/
|
|
53
|
+
detectSider() {
|
|
54
|
+
var _a;
|
|
55
|
+
const slot = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot');
|
|
56
|
+
if (slot) {
|
|
57
|
+
const assignedElements = slot.assignedElements();
|
|
58
|
+
const hasSiderElement = assignedElements.some((el) => el.tagName.toLowerCase() === 'nr-sider');
|
|
59
|
+
if (this.hasSider !== hasSiderElement) {
|
|
60
|
+
this.hasSider = hasSiderElement;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Handles slot changes to re-detect sider elements
|
|
66
|
+
*/
|
|
67
|
+
handleSlotChange() {
|
|
68
|
+
this.detectSider();
|
|
69
|
+
}
|
|
70
|
+
render() {
|
|
71
|
+
return html `
|
|
72
|
+
<div class="nr-layout" part="layout">
|
|
73
|
+
<slot @slotchange=${this.handleSlotChange}></slot>
|
|
74
|
+
</div>
|
|
75
|
+
`;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
NrLayoutElement.styles = layoutStyles;
|
|
79
|
+
__decorate([
|
|
80
|
+
property({ type: Boolean, reflect: true, attribute: 'has-sider' })
|
|
81
|
+
], NrLayoutElement.prototype, "hasSider", void 0);
|
|
82
|
+
__decorate([
|
|
83
|
+
queryAssignedElements({ selector: 'nr-sider' })
|
|
84
|
+
], NrLayoutElement.prototype, "connectedCallback", null);
|
|
85
|
+
NrLayoutElement = __decorate([
|
|
86
|
+
customElement('nr-layout')
|
|
87
|
+
], NrLayoutElement);
|
|
88
|
+
export { NrLayoutElement };
|
|
89
|
+
//# sourceMappingURL=layout.component.js.map
|
package/layout.style.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const layoutStyles = css `
|
|
3
|
+
:host {
|
|
4
|
+
display: flex;
|
|
5
|
+
flex: auto;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
min-height: 0;
|
|
8
|
+
background: var(--nuraly-layout-background);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
:host([has-sider]) {
|
|
12
|
+
flex-direction: row;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.nr-layout {
|
|
16
|
+
display: flex;
|
|
17
|
+
flex: auto;
|
|
18
|
+
flex-direction: inherit;
|
|
19
|
+
min-height: 0;
|
|
20
|
+
width: 100%;
|
|
21
|
+
}
|
|
22
|
+
`;
|
|
23
|
+
//# sourceMappingURL=layout.style.js.map
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Breakpoints for responsive layout
|
|
3
|
+
*/
|
|
4
|
+
export declare const enum LayoutBreakpoint {
|
|
5
|
+
XS = "xs",
|
|
6
|
+
SM = "sm",
|
|
7
|
+
MD = "md",
|
|
8
|
+
LG = "lg",
|
|
9
|
+
XL = "xl",
|
|
10
|
+
XXL = "xxl"
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Breakpoint width values in pixels
|
|
14
|
+
*/
|
|
15
|
+
export declare const BREAKPOINT_VALUES: Record<LayoutBreakpoint, number>;
|
|
16
|
+
/**
|
|
17
|
+
* Sider theme options
|
|
18
|
+
*/
|
|
19
|
+
export declare const enum SiderTheme {
|
|
20
|
+
Light = "light",
|
|
21
|
+
Dark = "dark"
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Sider collapse trigger type
|
|
25
|
+
*/
|
|
26
|
+
export declare type SiderTrigger = 'default' | null;
|
|
27
|
+
/**
|
|
28
|
+
* Callback for breakpoint changes
|
|
29
|
+
*/
|
|
30
|
+
export declare type OnBreakpoint = (broken: boolean) => void;
|
|
31
|
+
/**
|
|
32
|
+
* Callback for collapse state changes
|
|
33
|
+
*/
|
|
34
|
+
export declare type OnCollapse = (collapsed: boolean, type: 'clickTrigger' | 'responsive') => void;
|
|
35
|
+
/**
|
|
36
|
+
* Layout component properties
|
|
37
|
+
*/
|
|
38
|
+
export interface LayoutProps {
|
|
39
|
+
hasSider?: boolean;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Sider component properties
|
|
43
|
+
*/
|
|
44
|
+
export interface SiderProps {
|
|
45
|
+
breakpoint?: LayoutBreakpoint;
|
|
46
|
+
collapsed?: boolean;
|
|
47
|
+
collapsedWidth?: number;
|
|
48
|
+
collapsible?: boolean;
|
|
49
|
+
defaultCollapsed?: boolean;
|
|
50
|
+
reverseArrow?: boolean;
|
|
51
|
+
theme?: SiderTheme;
|
|
52
|
+
trigger?: SiderTrigger;
|
|
53
|
+
width?: number | string;
|
|
54
|
+
zeroWidthTriggerStyle?: string;
|
|
55
|
+
onBreakpoint?: OnBreakpoint;
|
|
56
|
+
onCollapse?: OnCollapse;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Header component properties
|
|
60
|
+
*/
|
|
61
|
+
export interface HeaderProps {
|
|
62
|
+
height?: number | string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Footer component properties
|
|
66
|
+
*/
|
|
67
|
+
export interface FooterProps {
|
|
68
|
+
padding?: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Content component properties
|
|
72
|
+
*/
|
|
73
|
+
export interface ContentProps {
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=layout.types.d.ts.map
|
package/layout.types.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Breakpoint width values in pixels
|
|
3
|
+
*/
|
|
4
|
+
export const BREAKPOINT_VALUES = {
|
|
5
|
+
["xs" /* LayoutBreakpoint.XS */]: 480,
|
|
6
|
+
["sm" /* LayoutBreakpoint.SM */]: 576,
|
|
7
|
+
["md" /* LayoutBreakpoint.MD */]: 768,
|
|
8
|
+
["lg" /* LayoutBreakpoint.LG */]: 992,
|
|
9
|
+
["xl" /* LayoutBreakpoint.XL */]: 1200,
|
|
10
|
+
["xxl" /* LayoutBreakpoint.XXL */]: 1600,
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=layout.types.js.map
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nuralyui/layout",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Layout components for NuralyUI - includes Layout, Header, Footer, Sider, and Content",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "index.js",
|
|
7
|
+
"module": "index.js",
|
|
8
|
+
"types": "index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./index.js",
|
|
12
|
+
"types": "./index.d.ts"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"*.js",
|
|
17
|
+
"*.d.ts",
|
|
18
|
+
"*.ts",
|
|
19
|
+
"!*.stories.ts",
|
|
20
|
+
"!*.test.ts"
|
|
21
|
+
],
|
|
22
|
+
"keywords": [
|
|
23
|
+
"layout",
|
|
24
|
+
"header",
|
|
25
|
+
"footer",
|
|
26
|
+
"sider",
|
|
27
|
+
"sidebar",
|
|
28
|
+
"content",
|
|
29
|
+
"web-components",
|
|
30
|
+
"lit",
|
|
31
|
+
"nuralyui"
|
|
32
|
+
],
|
|
33
|
+
"author": "NuralyUI Team",
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"peerDependencies": {
|
|
36
|
+
"lit": "^3.0.0"
|
|
37
|
+
}
|
|
38
|
+
}
|
package/react.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { NrLayoutElement } from './layout.component.js';
|
|
2
|
+
import { NrHeaderElement } from './header.component.js';
|
|
3
|
+
import { NrFooterElement } from './footer.component.js';
|
|
4
|
+
import { NrSiderElement } from './sider.component.js';
|
|
5
|
+
import { NrContentElement } from './content.component.js';
|
|
6
|
+
export declare const NrLayout: import("@lit-labs/react").ReactWebComponent<NrLayoutElement, {}>;
|
|
7
|
+
export declare const NrHeader: import("@lit-labs/react").ReactWebComponent<NrHeaderElement, {}>;
|
|
8
|
+
export declare const NrFooter: import("@lit-labs/react").ReactWebComponent<NrFooterElement, {}>;
|
|
9
|
+
export declare const NrSider: import("@lit-labs/react").ReactWebComponent<NrSiderElement, {
|
|
10
|
+
onCollapse: string;
|
|
11
|
+
onBreakpoint: string;
|
|
12
|
+
}>;
|
|
13
|
+
export declare const NrContent: import("@lit-labs/react").ReactWebComponent<NrContentElement, {}>;
|
|
14
|
+
//# sourceMappingURL=react.d.ts.map
|
package/react.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { createComponent } from '@lit-labs/react';
|
|
3
|
+
import { NrLayoutElement } from './layout.component.js';
|
|
4
|
+
import { NrHeaderElement } from './header.component.js';
|
|
5
|
+
import { NrFooterElement } from './footer.component.js';
|
|
6
|
+
import { NrSiderElement } from './sider.component.js';
|
|
7
|
+
import { NrContentElement } from './content.component.js';
|
|
8
|
+
export const NrLayout = createComponent({
|
|
9
|
+
tagName: 'nr-layout',
|
|
10
|
+
elementClass: NrLayoutElement,
|
|
11
|
+
react: React,
|
|
12
|
+
});
|
|
13
|
+
export const NrHeader = createComponent({
|
|
14
|
+
tagName: 'nr-header',
|
|
15
|
+
elementClass: NrHeaderElement,
|
|
16
|
+
react: React,
|
|
17
|
+
});
|
|
18
|
+
export const NrFooter = createComponent({
|
|
19
|
+
tagName: 'nr-footer',
|
|
20
|
+
elementClass: NrFooterElement,
|
|
21
|
+
react: React,
|
|
22
|
+
});
|
|
23
|
+
export const NrSider = createComponent({
|
|
24
|
+
tagName: 'nr-sider',
|
|
25
|
+
elementClass: NrSiderElement,
|
|
26
|
+
react: React,
|
|
27
|
+
events: {
|
|
28
|
+
onCollapse: 'collapse',
|
|
29
|
+
onBreakpoint: 'breakpoint',
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
export const NrContent = createComponent({
|
|
33
|
+
tagName: 'nr-content',
|
|
34
|
+
elementClass: NrContentElement,
|
|
35
|
+
react: React,
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=react.js.map
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { LitElement, PropertyValues } from 'lit';
|
|
2
|
+
import { LayoutBreakpoint, SiderTheme } from './layout.types.js';
|
|
3
|
+
declare const NrSiderElement_base: (new (...args: any[]) => import("../../shared/dependency-mixin.js").DependencyAware) & (new (...args: any[]) => import("../../shared/theme-mixin.js").ThemeAware) & (new (...args: any[]) => import("../../shared/event-handler-mixin.js").EventHandlerCapable) & typeof LitElement;
|
|
4
|
+
/**
|
|
5
|
+
* # Sider Component
|
|
6
|
+
*
|
|
7
|
+
* The sidebar component with collapsible functionality, theme support, and responsive behavior.
|
|
8
|
+
* Must be placed inside a Layout component.
|
|
9
|
+
*
|
|
10
|
+
* @element nr-sider
|
|
11
|
+
*
|
|
12
|
+
* @slot - Default slot for sider content (usually navigation menu)
|
|
13
|
+
* @slot trigger - Custom trigger slot (overrides default trigger)
|
|
14
|
+
*
|
|
15
|
+
* @fires collapse - Fired when the sider is collapsed or expanded
|
|
16
|
+
* @fires breakpoint - Fired when the breakpoint is triggered
|
|
17
|
+
*
|
|
18
|
+
* @csspart sider - The sider container element
|
|
19
|
+
* @csspart trigger - The collapse trigger element
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```html
|
|
23
|
+
* <nr-layout has-sider>
|
|
24
|
+
* <nr-sider collapsible breakpoint="lg">
|
|
25
|
+
* <nav>Navigation Menu</nav>
|
|
26
|
+
* </nr-sider>
|
|
27
|
+
* <nr-content>Content</nr-content>
|
|
28
|
+
* </nr-layout>
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare class NrSiderElement extends NrSiderElement_base {
|
|
32
|
+
static styles: import("lit").CSSResult;
|
|
33
|
+
/**
|
|
34
|
+
* Breakpoint for responsive collapsing
|
|
35
|
+
*/
|
|
36
|
+
breakpoint?: LayoutBreakpoint;
|
|
37
|
+
/**
|
|
38
|
+
* Current collapsed state (controlled)
|
|
39
|
+
*/
|
|
40
|
+
collapsed: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Width when collapsed. Set to 0 for a special trigger.
|
|
43
|
+
*/
|
|
44
|
+
collapsedWidth: number;
|
|
45
|
+
/**
|
|
46
|
+
* Whether the sider can be collapsed
|
|
47
|
+
*/
|
|
48
|
+
collapsible: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Initial collapsed state (uncontrolled)
|
|
51
|
+
*/
|
|
52
|
+
defaultCollapsed: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Reverse the arrow direction (for right-side sider)
|
|
55
|
+
*/
|
|
56
|
+
reverseArrow: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Sider theme (light or dark)
|
|
59
|
+
*/
|
|
60
|
+
theme: SiderTheme;
|
|
61
|
+
/**
|
|
62
|
+
* Custom trigger element. Set to null to hide trigger.
|
|
63
|
+
*/
|
|
64
|
+
trigger: 'default' | null;
|
|
65
|
+
/**
|
|
66
|
+
* Sider width when expanded
|
|
67
|
+
*/
|
|
68
|
+
width: number | string;
|
|
69
|
+
/**
|
|
70
|
+
* Custom styles for zero-width trigger
|
|
71
|
+
*/
|
|
72
|
+
zeroWidthTriggerStyle: string;
|
|
73
|
+
/**
|
|
74
|
+
* Internal state for tracking if breakpoint is active
|
|
75
|
+
*/
|
|
76
|
+
private belowBreakpoint;
|
|
77
|
+
/**
|
|
78
|
+
* ResizeObserver for responsive behavior
|
|
79
|
+
*/
|
|
80
|
+
private resizeObserver?;
|
|
81
|
+
connectedCallback(): void;
|
|
82
|
+
disconnectedCallback(): void;
|
|
83
|
+
updated(changedProperties: PropertyValues): void;
|
|
84
|
+
/**
|
|
85
|
+
* Setup ResizeObserver for responsive breakpoint behavior
|
|
86
|
+
*/
|
|
87
|
+
private setupResizeObserver;
|
|
88
|
+
/**
|
|
89
|
+
* Toggle collapsed state
|
|
90
|
+
*/
|
|
91
|
+
private toggleCollapse;
|
|
92
|
+
/**
|
|
93
|
+
* Dispatch collapse event
|
|
94
|
+
*/
|
|
95
|
+
private dispatchCollapseEvent;
|
|
96
|
+
/**
|
|
97
|
+
* Dispatch breakpoint event
|
|
98
|
+
*/
|
|
99
|
+
private dispatchBreakpointEvent;
|
|
100
|
+
/**
|
|
101
|
+
* Get the current width based on collapsed state
|
|
102
|
+
*/
|
|
103
|
+
private getCurrentWidth;
|
|
104
|
+
/**
|
|
105
|
+
* Render the collapse trigger
|
|
106
|
+
*/
|
|
107
|
+
private renderTrigger;
|
|
108
|
+
render(): import("lit").TemplateResult<1>;
|
|
109
|
+
}
|
|
110
|
+
declare global {
|
|
111
|
+
interface HTMLElementTagNameMap {
|
|
112
|
+
'nr-sider': NrSiderElement;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
export {};
|
|
116
|
+
//# sourceMappingURL=sider.component.d.ts.map
|