@nuralyui/breadcrumb 0.0.4 → 0.0.5

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.
Files changed (2) hide show
  1. package/bundle.js +204 -2
  2. package/package.json +1 -1
package/bundle.js CHANGED
@@ -3,9 +3,211 @@ import{css as r,LitElement as a,nothing as e,html as n}from"lit";import{property
3
3
  * @license
4
4
  * Copyright 2023 Nuraly, Laabidi Aymen
5
5
  * SPDX-License-Identifier: MIT
6
- */const s=r`:host{display:block;font-family:var(--nuraly-font-family);font-size:var(--nuraly-breadcrumb-font-size,.875rem);line-height:var(--nuraly-breadcrumb-line-height,1.5);color:var(--nuraly-breadcrumb-item-color)}.breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:0;list-style:none;margin:0;padding:0}.breadcrumb-item{display:inline-flex;align-items:center;gap:var(--nuraly-spacing-1,.25rem);position:relative}.breadcrumb-item:not(:last-child){margin-right:var(--nuraly-breadcrumb-separator-margin,8px)}.breadcrumb-link{display:inline-flex;align-items:center;gap:var(--nuraly-spacing-1,.25rem);color:var(--nuraly-breadcrumb-link-color);text-decoration:none;transition:color var(--nuraly-transition-fast,.15s) ease;cursor:pointer;padding:var(--nuraly-spacing-1,.25rem) 0;border-radius:var(--nuraly-border-radius-small,2px)}.breadcrumb-link:hover{color:var(--nuraly-breadcrumb-link-hover-color)}.breadcrumb-link:focus{outline:var(--nuraly-focus-outline);outline-offset:var(--nuraly-focus-outline-offset)}.breadcrumb-link.disabled{color:var(--nuraly-color-text-disabled);cursor:not-allowed;pointer-events:none}.breadcrumb-text{display:inline-flex;align-items:center;gap:var(--nuraly-spacing-1,.25rem);color:var(--nuraly-breadcrumb-last-item-color);padding:var(--nuraly-spacing-1,.25rem) 0}.breadcrumb-separator{display:inline-flex;align-items:center;color:var(--nuraly-breadcrumb-separator-color);margin:0 var(--nuraly-breadcrumb-separator-margin,8px);user-select:none;font-size:var(--nuraly-breadcrumb-icon-font-size,14px)}.breadcrumb-icon{display:inline-flex;align-items:center;font-size:var(--nuraly-breadcrumb-icon-font-size,14px)}.breadcrumb-item-with-menu{position:relative}.breadcrumb-item-with-menu:hover .breadcrumb-dropdown{display:block}.breadcrumb-dropdown{display:none;position:absolute;top:100%;left:0;z-index:var(--nuraly-z-index-dropdown,1000);background-color:var(--nuraly-color-background-elevated);border:1px solid var(--nuraly-color-border);border-radius:var(--nuraly-border-radius-medium,4px);box-shadow:var(--nuraly-shadow-dropdown);min-width:160px;margin-top:var(--nuraly-spacing-1,.25rem);padding:var(--nuraly-spacing-1,.25rem) 0}.breadcrumb-menu-item{display:flex;align-items:center;gap:var(--nuraly-spacing-2,.5rem);padding:var(--nuraly-spacing-2,.5rem) var(--nuraly-spacing-3,.75rem);color:var(--nuraly-color-text);text-decoration:none;cursor:pointer;transition:background-color var(--nuraly-transition-fast,.15s) ease}.breadcrumb-menu-item:hover{background-color:var(--nuraly-color-background-hover)}.breadcrumb-menu-item.disabled{color:var(--nuraly-color-text-disabled);cursor:not-allowed;pointer-events:none}:host([dir=rtl]) .breadcrumb{direction:rtl}:host([dir=rtl]) .breadcrumb-item:not(:last-child){margin-right:0;margin-left:var(--nuraly-breadcrumb-separator-margin,8px)}:host([dir=rtl]) .breadcrumb-separator{transform:scaleX(-1)}`
6
+ */const s=r`
7
+ :host {
8
+ display: block;
9
+ font-family: var(--nuraly-font-family);
10
+ font-size: var(--nuraly-breadcrumb-font-size, 0.875rem);
11
+ line-height: var(--nuraly-breadcrumb-line-height, 1.5);
12
+ color: var(--nuraly-breadcrumb-item-color);
13
+ }
14
+
15
+ .breadcrumb {
16
+ display: flex;
17
+ align-items: center;
18
+ flex-wrap: wrap;
19
+ gap: 0;
20
+ list-style: none;
21
+ margin: 0;
22
+ padding: 0;
23
+ }
24
+
25
+ .breadcrumb-item {
26
+ display: inline-flex;
27
+ align-items: center;
28
+ gap: var(--nuraly-spacing-1, 0.25rem);
29
+ position: relative;
30
+ }
31
+
32
+ .breadcrumb-item:not(:last-child) {
33
+ margin-right: var(--nuraly-breadcrumb-separator-margin, 8px);
34
+ }
35
+
36
+ .breadcrumb-link {
37
+ display: inline-flex;
38
+ align-items: center;
39
+ gap: var(--nuraly-spacing-1, 0.25rem);
40
+ color: var(--nuraly-breadcrumb-link-color);
41
+ text-decoration: none;
42
+ transition: color var(--nuraly-transition-fast, 0.15s) ease;
43
+ cursor: pointer;
44
+ padding: var(--nuraly-spacing-1, 0.25rem) 0;
45
+ border-radius: var(--nuraly-border-radius-small, 2px);
46
+ }
47
+
48
+ .breadcrumb-link:hover {
49
+ color: var(--nuraly-breadcrumb-link-hover-color);
50
+ }
51
+
52
+ .breadcrumb-link:focus {
53
+ outline: var(--nuraly-focus-outline);
54
+ outline-offset: var(--nuraly-focus-outline-offset);
55
+ }
56
+
57
+ .breadcrumb-link.disabled {
58
+ color: var(--nuraly-color-text-disabled);
59
+ cursor: not-allowed;
60
+ pointer-events: none;
61
+ }
62
+
63
+ .breadcrumb-text {
64
+ display: inline-flex;
65
+ align-items: center;
66
+ gap: var(--nuraly-spacing-1, 0.25rem);
67
+ color: var(--nuraly-breadcrumb-last-item-color);
68
+ padding: var(--nuraly-spacing-1, 0.25rem) 0;
69
+ }
70
+
71
+ .breadcrumb-separator {
72
+ display: inline-flex;
73
+ align-items: center;
74
+ color: var(--nuraly-breadcrumb-separator-color);
75
+ margin: 0 var(--nuraly-breadcrumb-separator-margin, 8px);
76
+ user-select: none;
77
+ font-size: var(--nuraly-breadcrumb-icon-font-size, 14px);
78
+ }
79
+
80
+ .breadcrumb-icon {
81
+ display: inline-flex;
82
+ align-items: center;
83
+ font-size: var(--nuraly-breadcrumb-icon-font-size, 14px);
84
+ }
85
+
86
+ /* Dropdown menu styles */
87
+ .breadcrumb-item-with-menu {
88
+ position: relative;
89
+ }
90
+
91
+ .breadcrumb-item-with-menu:hover .breadcrumb-dropdown {
92
+ display: block;
93
+ }
94
+
95
+ .breadcrumb-dropdown {
96
+ display: none;
97
+ position: absolute;
98
+ top: 100%;
99
+ left: 0;
100
+ z-index: var(--nuraly-z-index-dropdown, 1000);
101
+ background-color: var(--nuraly-color-background-elevated);
102
+ border: 1px solid var(--nuraly-color-border);
103
+ border-radius: var(--nuraly-border-radius-medium, 4px);
104
+ box-shadow: var(--nuraly-shadow-dropdown);
105
+ min-width: 160px;
106
+ margin-top: var(--nuraly-spacing-1, 0.25rem);
107
+ padding: var(--nuraly-spacing-1, 0.25rem) 0;
108
+ }
109
+
110
+ .breadcrumb-menu-item {
111
+ display: flex;
112
+ align-items: center;
113
+ gap: var(--nuraly-spacing-2, 0.5rem);
114
+ padding: var(--nuraly-spacing-2, 0.5rem) var(--nuraly-spacing-3, 0.75rem);
115
+ color: var(--nuraly-color-text);
116
+ text-decoration: none;
117
+ cursor: pointer;
118
+ transition: background-color var(--nuraly-transition-fast, 0.15s) ease;
119
+ }
120
+
121
+ .breadcrumb-menu-item:hover {
122
+ background-color: var(--nuraly-color-background-hover);
123
+ }
124
+
125
+ .breadcrumb-menu-item.disabled {
126
+ color: var(--nuraly-color-text-disabled);
127
+ cursor: not-allowed;
128
+ pointer-events: none;
129
+ }
130
+
131
+ /* RTL Support */
132
+ :host([dir="rtl"]) .breadcrumb {
133
+ direction: rtl;
134
+ }
135
+
136
+ :host([dir="rtl"]) .breadcrumb-item:not(:last-child) {
137
+ margin-right: 0;
138
+ margin-left: var(--nuraly-breadcrumb-separator-margin, 8px);
139
+ }
140
+
141
+ :host([dir="rtl"]) .breadcrumb-separator {
142
+ transform: scaleX(-1);
143
+ }
144
+ `
7
145
  /**
8
146
  * @license
9
147
  * Copyright 2023 Nuraly, Laabidi Aymen
10
148
  * SPDX-License-Identifier: MIT
11
- */;var c=function(r,a,e,n){for(var i,o=arguments.length,t=o<3?a:null===n?n=Object.getOwnPropertyDescriptor(a,e):n,l=r.length-1;l>=0;l--)(i=r[l])&&(t=(o<3?i(t):o>3?i(a,e,t):i(a,e))||t);return o>3&&t&&Object.defineProperty(a,e,t),t};let d=class extends(l(a)){constructor(){super(...arguments),this.requiredComponents=["nr-icon"],this.items=[],this.separator="/"}handleItemClick(r,a){r.disabled?a.preventDefault():(this.dispatchEvent(new CustomEvent("nr-breadcrumb-click",{detail:{item:r,event:a},bubbles:!0,composed:!0})),r.onClick&&r.onClick(a))}handleMenuItemClick(r,a){r.disabled?a.preventDefault():r.onClick&&r.onClick(a)}renderIcon(r){return r.icon?n`<nr-icon class="breadcrumb-icon" name="${r.icon}" type="${r.iconType||"regular"}"></nr-icon>`:e}renderSeparator(){return this.separatorConfig?this.separatorConfig.isIcon?n`<span class="breadcrumb-separator"><nr-icon name="${this.separatorConfig.separator}" type="${this.separatorConfig.iconType||"regular"}"></nr-icon></span>`:n`<span class="breadcrumb-separator">${this.separatorConfig.separator}</span>`:n`<span class="breadcrumb-separator">${this.separator}</span>`}renderMenu(r){return n`<div class="breadcrumb-dropdown">${t(r,(r=>n`${r.href?n`<a class="breadcrumb-menu-item ${r.disabled?"disabled":""}" href="${r.href}" @click="${a=>this.handleMenuItemClick(r,a)}">${r.icon?n`<nr-icon name="${r.icon}"></nr-icon>`:e} <span>${r.label}</span></a>`:n`<div class="breadcrumb-menu-item ${r.disabled?"disabled":""}" @click="${a=>this.handleMenuItemClick(r,a)}">${r.icon?n`<nr-icon name="${r.icon}"></nr-icon>`:e} <span>${r.label}</span></div>`}`))}</div>`}renderItem(r,a){const i=a===this.items.length-1,o=r.menu&&r.menu.length>0,t=n`${this.renderIcon(r)} <span>${r.title}</span>`;return n`<li class="breadcrumb-item ${o?"breadcrumb-item-with-menu":""} ${r.className||""}">${i?n`<span class="breadcrumb-text">${t}</span>`:r.href?n`<a class="breadcrumb-link ${r.disabled?"disabled":""}" href="${r.href}" @click="${a=>this.handleItemClick(r,a)}">${t}</a>`:n`<span class="breadcrumb-link ${r.disabled?"disabled":""}" @click="${a=>this.handleItemClick(r,a)}">${t}</span>`} ${o?this.renderMenu(r.menu):e}</li>${i?e:this.renderSeparator()}`}render(){return this.items&&0!==this.items.length?n`<nav aria-label="Breadcrumb" class="breadcrumb">${t(this.items,((r,a)=>this.renderItem(r,a)))}</nav>`:e}};d.styles=s,c([i({type:Array})],d.prototype,"items",void 0),c([i({type:String})],d.prototype,"separator",void 0),c([i({type:Object,attribute:"separator-config"})],d.prototype,"separatorConfig",void 0),d=c([o("nr-breadcrumb")],d);export{d as NrBreadcrumbElement};
149
+ */;var c=function(r,a,e,n){for(var i,o=arguments.length,t=o<3?a:null===n?n=Object.getOwnPropertyDescriptor(a,e):n,l=r.length-1;l>=0;l--)(i=r[l])&&(t=(o<3?i(t):o>3?i(a,e,t):i(a,e))||t);return o>3&&t&&Object.defineProperty(a,e,t),t};let d=class extends(l(a)){constructor(){super(...arguments),this.requiredComponents=["nr-icon"],this.items=[],this.separator="/"}handleItemClick(r,a){r.disabled?a.preventDefault():(this.dispatchEvent(new CustomEvent("nr-breadcrumb-click",{detail:{item:r,event:a},bubbles:!0,composed:!0})),r.onClick&&r.onClick(a))}handleMenuItemClick(r,a){r.disabled?a.preventDefault():r.onClick&&r.onClick(a)}renderIcon(r){return r.icon?n`
150
+ <nr-icon
151
+ class="breadcrumb-icon"
152
+ name="${r.icon}"
153
+ type="${r.iconType||"regular"}"
154
+ ></nr-icon>
155
+ `:e}renderSeparator(){return this.separatorConfig?this.separatorConfig.isIcon?n`
156
+ <span class="breadcrumb-separator">
157
+ <nr-icon
158
+ name="${this.separatorConfig.separator}"
159
+ type="${this.separatorConfig.iconType||"regular"}"
160
+ ></nr-icon>
161
+ </span>
162
+ `:n`<span class="breadcrumb-separator">${this.separatorConfig.separator}</span>`:n`<span class="breadcrumb-separator">${this.separator}</span>`}renderMenu(r){return n`
163
+ <div class="breadcrumb-dropdown">
164
+ ${t(r,(r=>n`
165
+ ${r.href?n`
166
+ <a
167
+ class="breadcrumb-menu-item ${r.disabled?"disabled":""}"
168
+ href="${r.href}"
169
+ @click="${a=>this.handleMenuItemClick(r,a)}"
170
+ >
171
+ ${r.icon?n`<nr-icon name="${r.icon}"></nr-icon>`:e}
172
+ <span>${r.label}</span>
173
+ </a>
174
+ `:n`
175
+ <div
176
+ class="breadcrumb-menu-item ${r.disabled?"disabled":""}"
177
+ @click="${a=>this.handleMenuItemClick(r,a)}"
178
+ >
179
+ ${r.icon?n`<nr-icon name="${r.icon}"></nr-icon>`:e}
180
+ <span>${r.label}</span>
181
+ </div>
182
+ `}
183
+ `))}
184
+ </div>
185
+ `}renderItem(r,a){const i=a===this.items.length-1,o=r.menu&&r.menu.length>0,t=n`
186
+ ${this.renderIcon(r)}
187
+ <span>${r.title}</span>
188
+ `;return n`
189
+ <li class="breadcrumb-item ${o?"breadcrumb-item-with-menu":""} ${r.className||""}">
190
+ ${i?n`<span class="breadcrumb-text">${t}</span>`:r.href?n`
191
+ <a
192
+ class="breadcrumb-link ${r.disabled?"disabled":""}"
193
+ href="${r.href}"
194
+ @click="${a=>this.handleItemClick(r,a)}"
195
+ >
196
+ ${t}
197
+ </a>
198
+ `:n`
199
+ <span
200
+ class="breadcrumb-link ${r.disabled?"disabled":""}"
201
+ @click="${a=>this.handleItemClick(r,a)}"
202
+ >
203
+ ${t}
204
+ </span>
205
+ `}
206
+ ${o?this.renderMenu(r.menu):e}
207
+ </li>
208
+ ${i?e:this.renderSeparator()}
209
+ `}render(){return this.items&&0!==this.items.length?n`
210
+ <nav aria-label="Breadcrumb" class="breadcrumb">
211
+ ${t(this.items,((r,a)=>this.renderItem(r,a)))}
212
+ </nav>
213
+ `:e}};d.styles=s,c([i({type:Array})],d.prototype,"items",void 0),c([i({type:String})],d.prototype,"separator",void 0),c([i({type:Object,attribute:"separator-config"})],d.prototype,"separatorConfig",void 0),d=c([o("nr-breadcrumb")],d);export{d as NrBreadcrumbElement};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nuralyui/breadcrumb",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "Breadcrumb component for NuralyUI library",
5
5
  "main": "index.js",
6
6
  "type": "module",