@lit-material/navigation 0.0.1 → 0.1.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.
@@ -0,0 +1,1568 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "readme": "",
4
+ "modules": [
5
+ {
6
+ "kind": "javascript-module",
7
+ "path": "src/adaptive-navigation.ts",
8
+ "declarations": [
9
+ {
10
+ "kind": "class",
11
+ "description": "One set of destinations shown as M3 prescribes for the window's width: a\nnavigation bar on compact windows (under 600px), a rail on medium ones\n(600–839px), and a drawer — or a rail, with `expanded=\"rail\"` — on\nexpanded ones (840px and up).\n\nAll three are rendered and CSS shows one, so it needs no script to pick\nand server-rendered markup is already right; the hidden ones are out of\nthe accessibility tree. `selected` is shared, and `change` fires (with the\nnew index in `selected`) whichever one was used.\n\nPlace the bar yourself — e.g. the host fixed or sticky at the bottom on\ncompact windows: it sits where the element is.",
12
+ "name": "LitMaterialAdaptiveNavigation",
13
+ "cssProperties": [
14
+ {
15
+ "description": "Not a variable: breakpoints are fixed at 600px and 840px (M3 window size classes).",
16
+ "name": "--lit-material-adaptive-navigation-medium"
17
+ }
18
+ ],
19
+ "members": [
20
+ {
21
+ "kind": "field",
22
+ "name": "destinations",
23
+ "type": {
24
+ "text": "NavigationDestination[]"
25
+ },
26
+ "default": "[]"
27
+ },
28
+ {
29
+ "kind": "field",
30
+ "name": "selected",
31
+ "type": {
32
+ "text": "number"
33
+ },
34
+ "default": "-1",
35
+ "attribute": "selected"
36
+ },
37
+ {
38
+ "kind": "field",
39
+ "name": "expanded",
40
+ "type": {
41
+ "text": "\"drawer\" | \"rail\""
42
+ },
43
+ "default": "\"drawer\"",
44
+ "description": "What expanded windows show: `drawer` (default) or `rail`.",
45
+ "attribute": "expanded",
46
+ "reflects": true
47
+ },
48
+ {
49
+ "kind": "field",
50
+ "name": "label",
51
+ "type": {
52
+ "text": "string"
53
+ },
54
+ "default": "\"Main\"",
55
+ "description": "The accessible name of the navigation landmark.",
56
+ "attribute": "label"
57
+ },
58
+ {
59
+ "kind": "method",
60
+ "name": "onChange",
61
+ "privacy": "private",
62
+ "return": {
63
+ "type": {
64
+ "text": "void"
65
+ }
66
+ },
67
+ "parameters": [
68
+ {
69
+ "name": "event",
70
+ "type": {
71
+ "text": "Event"
72
+ }
73
+ }
74
+ ]
75
+ },
76
+ {
77
+ "kind": "method",
78
+ "name": "icon",
79
+ "privacy": "private",
80
+ "parameters": [
81
+ {
82
+ "name": "d",
83
+ "type": {
84
+ "text": "NavigationDestination"
85
+ }
86
+ }
87
+ ]
88
+ }
89
+ ],
90
+ "events": [
91
+ {
92
+ "name": "change",
93
+ "type": {
94
+ "text": "Event"
95
+ },
96
+ "description": "The selection changed; read `selected`."
97
+ }
98
+ ],
99
+ "attributes": [
100
+ {
101
+ "name": "selected",
102
+ "type": {
103
+ "text": "number"
104
+ },
105
+ "default": "-1",
106
+ "fieldName": "selected"
107
+ },
108
+ {
109
+ "name": "expanded",
110
+ "type": {
111
+ "text": "\"drawer\" | \"rail\""
112
+ },
113
+ "default": "\"drawer\"",
114
+ "description": "What expanded windows show: `drawer` (default) or `rail`.",
115
+ "fieldName": "expanded"
116
+ },
117
+ {
118
+ "name": "label",
119
+ "type": {
120
+ "text": "string"
121
+ },
122
+ "default": "\"Main\"",
123
+ "description": "The accessible name of the navigation landmark.",
124
+ "fieldName": "label"
125
+ }
126
+ ],
127
+ "superclass": {
128
+ "name": "LitElement",
129
+ "package": "lit"
130
+ },
131
+ "tagName": "lit-material-adaptive-navigation",
132
+ "customElement": true
133
+ }
134
+ ],
135
+ "exports": [
136
+ {
137
+ "kind": "js",
138
+ "name": "LitMaterialAdaptiveNavigation",
139
+ "declaration": {
140
+ "name": "LitMaterialAdaptiveNavigation",
141
+ "module": "src/adaptive-navigation.ts"
142
+ }
143
+ },
144
+ {
145
+ "kind": "custom-element-definition",
146
+ "name": "lit-material-adaptive-navigation",
147
+ "declaration": {
148
+ "name": "LitMaterialAdaptiveNavigation",
149
+ "module": "src/adaptive-navigation.ts"
150
+ }
151
+ }
152
+ ]
153
+ },
154
+ {
155
+ "kind": "javascript-module",
156
+ "path": "src/index.ts",
157
+ "declarations": [],
158
+ "exports": [
159
+ {
160
+ "kind": "js",
161
+ "name": "LitMaterialNavigationDrawer",
162
+ "declaration": {
163
+ "name": "LitMaterialNavigationDrawer",
164
+ "module": "./navigation-drawer.js"
165
+ }
166
+ },
167
+ {
168
+ "kind": "js",
169
+ "name": "NavigationDrawerVariant",
170
+ "declaration": {
171
+ "name": "NavigationDrawerVariant",
172
+ "module": "./navigation-drawer.js"
173
+ }
174
+ },
175
+ {
176
+ "kind": "js",
177
+ "name": "NavigationDrawerPosition",
178
+ "declaration": {
179
+ "name": "NavigationDrawerPosition",
180
+ "module": "./navigation-drawer.js"
181
+ }
182
+ },
183
+ {
184
+ "kind": "js",
185
+ "name": "LitMaterialNavigationDrawerItem",
186
+ "declaration": {
187
+ "name": "LitMaterialNavigationDrawerItem",
188
+ "module": "./navigation-drawer-item.js"
189
+ }
190
+ },
191
+ {
192
+ "kind": "js",
193
+ "name": "LitMaterialNavigationRail",
194
+ "declaration": {
195
+ "name": "LitMaterialNavigationRail",
196
+ "module": "./navigation-rail.js"
197
+ }
198
+ },
199
+ {
200
+ "kind": "js",
201
+ "name": "NavigationRailAlignment",
202
+ "declaration": {
203
+ "name": "NavigationRailAlignment",
204
+ "module": "./navigation-rail.js"
205
+ }
206
+ },
207
+ {
208
+ "kind": "js",
209
+ "name": "LitMaterialNavigationRailItem",
210
+ "declaration": {
211
+ "name": "LitMaterialNavigationRailItem",
212
+ "module": "./navigation-rail-item.js"
213
+ }
214
+ },
215
+ {
216
+ "kind": "js",
217
+ "name": "LitMaterialNavigationBar",
218
+ "declaration": {
219
+ "name": "LitMaterialNavigationBar",
220
+ "module": "./navigation-bar.js"
221
+ }
222
+ },
223
+ {
224
+ "kind": "js",
225
+ "name": "LitMaterialNavigationBarItem",
226
+ "declaration": {
227
+ "name": "LitMaterialNavigationBarItem",
228
+ "module": "./navigation-bar-item.js"
229
+ }
230
+ },
231
+ {
232
+ "kind": "js",
233
+ "name": "LitMaterialAdaptiveNavigation",
234
+ "declaration": {
235
+ "name": "LitMaterialAdaptiveNavigation",
236
+ "module": "./adaptive-navigation.js"
237
+ }
238
+ },
239
+ {
240
+ "kind": "js",
241
+ "name": "NavigationDestination",
242
+ "declaration": {
243
+ "name": "NavigationDestination",
244
+ "module": "./adaptive-navigation.js"
245
+ }
246
+ }
247
+ ]
248
+ },
249
+ {
250
+ "kind": "javascript-module",
251
+ "path": "src/navigation-bar-item-styles.ts",
252
+ "declarations": [
253
+ {
254
+ "kind": "variable",
255
+ "name": "styles",
256
+ "default": "css` :host { display: block; flex: 1; height: 100%; outline: none; -webkit-tap-highlight-color: transparent; } :host([disabled]) { pointer-events: none; } .item { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; box-sizing: border-box; width: 100%; height: 100%; padding-block: 12px 16px; border: none; margin: 0; background-color: transparent; color: var(--md-sys-color-on-surface-variant, #49454f); cursor: pointer; text-decoration: none; font-family: var(--md-sys-typescale-label-medium-font, Roboto, system-ui, sans-serif); font-size: var(--md-sys-typescale-label-medium-size, 0.75rem); font-weight: var(--md-sys-typescale-label-medium-weight, 500); -webkit-appearance: none; appearance: none; } .item:disabled, .item[aria-disabled=\"true\"] { cursor: default; } :host([selected]) .item { color: var(--md-sys-color-on-surface, #1c1b1f); } .icon-container { position: relative; display: flex; align-items: center; justify-content: center; width: 64px; height: 32px; border-radius: var(--md-sys-shape-corner-full, 16px); transition: background-color 150ms var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1)); } :host([selected]) .icon-container { background-color: var(--md-sys-color-secondary-container, #e8def8); } slot.icon::slotted(*) { display: block; width: 24px; height: 24px; } slot.badge::slotted(*) { position: absolute; top: -4px; inset-inline-end: 8px; } .label { max-width: 100%; overflow: hidden; text-align: center; text-overflow: ellipsis; white-space: nowrap; } .state-layer { position: absolute; inset: 0; border-radius: inherit; background-color: currentColor; opacity: 0; pointer-events: none; transition: opacity 100ms linear; } .item:hover .state-layer { opacity: var(--md-sys-state-hover-state-layer-opacity, 0.08); } .state-layer[data-pressed] { opacity: var(--md-sys-state-pressed-state-layer-opacity, 0.1); } .focus-ring { position: absolute; inset: -2px; border-radius: inherit; outline: 3px solid var(--md-sys-color-secondary, #625b71); outline-offset: 2px; pointer-events: none; } .focus-ring[hidden] { display: none; } :host([disabled]) .item { color: color-mix(in srgb, var(--md-sys-color-on-surface, #1c1b1f) 38%, transparent); } @media (prefers-reduced-motion: reduce) { .icon-container, .state-layer { transition: none; } } `"
257
+ }
258
+ ],
259
+ "exports": [
260
+ {
261
+ "kind": "js",
262
+ "name": "styles",
263
+ "declaration": {
264
+ "name": "styles",
265
+ "module": "src/navigation-bar-item-styles.ts"
266
+ }
267
+ }
268
+ ]
269
+ },
270
+ {
271
+ "kind": "javascript-module",
272
+ "path": "src/navigation-bar-item.ts",
273
+ "declarations": [
274
+ {
275
+ "kind": "class",
276
+ "description": "A single destination inside a `lit-material-navigation-bar` — an icon in a\npill-shaped active indicator, with a small label below it, following the\nMD3 navigation bar item spec. Visually and structurally almost identical\nto `lit-material-navigation-rail-item` (same icon-pill + label-below\nlayout, badge slot, ripple/focus-ring scoped to the indicator) — the\ndifference is this item shares the bar's width equally with its siblings\n(`flex: 1`) instead of filling a narrow vertical rail's width, and its\nindicator is 64px wide (the MD3 bar spec) rather than the rail's 56px.\n\nRenders as a real `<button>` by default, or an `<a>` when `href` is set.\n`selected` is normally managed by the parent bar (see its docs), not set\ndirectly.",
277
+ "name": "LitMaterialNavigationBarItem",
278
+ "cssParts": [
279
+ {
280
+ "description": "The `<button>` or `<a>` (layout only, no background of its own).",
281
+ "name": "item"
282
+ },
283
+ {
284
+ "description": "The pill-shaped active indicator behind the icon.",
285
+ "name": "icon-container"
286
+ },
287
+ {
288
+ "description": "The state-layer element the hover/press feedback is drawn on.",
289
+ "name": "ripple"
290
+ },
291
+ {
292
+ "description": "The focus indicator element.",
293
+ "name": "focus-ring"
294
+ }
295
+ ],
296
+ "slots": [
297
+ {
298
+ "description": "The label text.",
299
+ "name": ""
300
+ },
301
+ {
302
+ "description": "The icon.",
303
+ "name": "icon"
304
+ },
305
+ {
306
+ "description": "Optional badge content (a count or dot), positioned over the icon's top-end corner (top-right in LTR, top-left in RTL).",
307
+ "name": "badge"
308
+ }
309
+ ],
310
+ "members": [
311
+ {
312
+ "kind": "field",
313
+ "name": "shadowRootOptions",
314
+ "type": {
315
+ "text": "ShadowRootInit"
316
+ },
317
+ "static": true,
318
+ "default": "{ ...LitElement.shadowRootOptions, delegatesFocus: true, }"
319
+ },
320
+ {
321
+ "kind": "field",
322
+ "name": "selected",
323
+ "type": {
324
+ "text": "boolean"
325
+ },
326
+ "default": "false",
327
+ "attribute": "selected",
328
+ "reflects": true
329
+ },
330
+ {
331
+ "kind": "field",
332
+ "name": "disabled",
333
+ "type": {
334
+ "text": "boolean"
335
+ },
336
+ "default": "false",
337
+ "attribute": "disabled",
338
+ "reflects": true
339
+ },
340
+ {
341
+ "kind": "field",
342
+ "name": "href",
343
+ "type": {
344
+ "text": "string"
345
+ },
346
+ "default": "\"\"",
347
+ "description": "If set, renders the item as a link (`<a>`) instead of a `<button>`.",
348
+ "attribute": "href"
349
+ },
350
+ {
351
+ "kind": "field",
352
+ "name": "target",
353
+ "type": {
354
+ "text": "string"
355
+ },
356
+ "default": "\"\"",
357
+ "attribute": "target"
358
+ },
359
+ {
360
+ "kind": "field",
361
+ "name": "stateLayerElement",
362
+ "type": {
363
+ "text": "HTMLElement | undefined"
364
+ },
365
+ "privacy": "private",
366
+ "readonly": true
367
+ },
368
+ {
369
+ "kind": "field",
370
+ "name": "ripple",
371
+ "privacy": "private",
372
+ "readonly": true,
373
+ "default": "new RippleController(this)"
374
+ },
375
+ {
376
+ "kind": "field",
377
+ "name": "focusRing",
378
+ "privacy": "private",
379
+ "readonly": true,
380
+ "default": "new FocusRingController(this)"
381
+ },
382
+ {
383
+ "kind": "field",
384
+ "name": "content",
385
+ "privacy": "private",
386
+ "readonly": true
387
+ },
388
+ {
389
+ "kind": "method",
390
+ "name": "handleClick",
391
+ "privacy": "private",
392
+ "return": {
393
+ "type": {
394
+ "text": "void"
395
+ }
396
+ },
397
+ "parameters": [
398
+ {
399
+ "name": "event",
400
+ "type": {
401
+ "text": "MouseEvent"
402
+ }
403
+ }
404
+ ]
405
+ },
406
+ {
407
+ "kind": "method",
408
+ "name": "handleLinkClick",
409
+ "privacy": "private",
410
+ "return": {
411
+ "type": {
412
+ "text": "void"
413
+ }
414
+ },
415
+ "parameters": [
416
+ {
417
+ "name": "event",
418
+ "type": {
419
+ "text": "MouseEvent"
420
+ }
421
+ }
422
+ ]
423
+ }
424
+ ],
425
+ "attributes": [
426
+ {
427
+ "name": "selected",
428
+ "type": {
429
+ "text": "boolean"
430
+ },
431
+ "default": "false",
432
+ "fieldName": "selected"
433
+ },
434
+ {
435
+ "name": "disabled",
436
+ "type": {
437
+ "text": "boolean"
438
+ },
439
+ "default": "false",
440
+ "fieldName": "disabled"
441
+ },
442
+ {
443
+ "name": "href",
444
+ "type": {
445
+ "text": "string"
446
+ },
447
+ "default": "\"\"",
448
+ "description": "If set, renders the item as a link (`<a>`) instead of a `<button>`.",
449
+ "fieldName": "href"
450
+ },
451
+ {
452
+ "name": "target",
453
+ "type": {
454
+ "text": "string"
455
+ },
456
+ "default": "\"\"",
457
+ "fieldName": "target"
458
+ }
459
+ ],
460
+ "superclass": {
461
+ "name": "LitElement",
462
+ "package": "lit"
463
+ },
464
+ "tagName": "lit-material-navigation-bar-item",
465
+ "customElement": true
466
+ }
467
+ ],
468
+ "exports": [
469
+ {
470
+ "kind": "js",
471
+ "name": "LitMaterialNavigationBarItem",
472
+ "declaration": {
473
+ "name": "LitMaterialNavigationBarItem",
474
+ "module": "src/navigation-bar-item.ts"
475
+ }
476
+ },
477
+ {
478
+ "kind": "custom-element-definition",
479
+ "name": "lit-material-navigation-bar-item",
480
+ "declaration": {
481
+ "name": "LitMaterialNavigationBarItem",
482
+ "module": "src/navigation-bar-item.ts"
483
+ }
484
+ }
485
+ ]
486
+ },
487
+ {
488
+ "kind": "javascript-module",
489
+ "path": "src/navigation-bar-styles.ts",
490
+ "declarations": [
491
+ {
492
+ "kind": "variable",
493
+ "name": "styles",
494
+ "default": "css` :host { display: block; box-sizing: border-box; } .bar { display: flex; flex-direction: row; align-items: stretch; box-sizing: border-box; width: 100%; height: 80px; background-color: var(--md-sys-color-surface-container, #f3edf7); color: var(--md-sys-color-on-surface, #1c1b1f); } ::slotted(lit-material-navigation-bar-item) { flex: 1; } `"
495
+ }
496
+ ],
497
+ "exports": [
498
+ {
499
+ "kind": "js",
500
+ "name": "styles",
501
+ "declaration": {
502
+ "name": "styles",
503
+ "module": "src/navigation-bar-styles.ts"
504
+ }
505
+ }
506
+ ]
507
+ },
508
+ {
509
+ "kind": "javascript-module",
510
+ "path": "src/navigation-bar.ts",
511
+ "declarations": [
512
+ {
513
+ "kind": "class",
514
+ "description": "Material Design 3 navigation bar — a row of primary destinations\n(`lit-material-navigation-bar-item` elements) sharing a bar's width\nequally, typically docked to the bottom of the screen for compact window\nsizes.\n\nSelection is index-based and managed here (like `lit-material-tabs` and\n`lit-material-navigation-rail`): set `selected` to reflect your current\nroute/section, and each item's own `selected` is kept in sync\nautomatically. Clicking an item updates `selected` and fires `change` —\nitems themselves don't manage selection.\n\nUnlike `lit-material-navigation-rail`, there's no `alignment` property or\n`fab` slot — a bottom bar is a single row of equally-shared destinations,\nnot a strip with room to position things along its length.",
515
+ "name": "LitMaterialNavigationBar",
516
+ "cssParts": [
517
+ {
518
+ "description": "The bar (background, height, padding).",
519
+ "name": "bar"
520
+ }
521
+ ],
522
+ "slots": [
523
+ {
524
+ "description": "`lit-material-navigation-bar-item` elements.",
525
+ "name": ""
526
+ }
527
+ ],
528
+ "members": [
529
+ {
530
+ "kind": "field",
531
+ "name": "selected",
532
+ "type": {
533
+ "text": "number"
534
+ },
535
+ "default": "-1",
536
+ "description": "Index of the selected item. `-1` means no selection.",
537
+ "attribute": "selected"
538
+ },
539
+ {
540
+ "kind": "field",
541
+ "name": "items",
542
+ "type": {
543
+ "text": "LitMaterialNavigationBarItem[]"
544
+ },
545
+ "privacy": "private",
546
+ "readonly": true
547
+ },
548
+ {
549
+ "kind": "method",
550
+ "name": "syncSelected",
551
+ "privacy": "private",
552
+ "return": {
553
+ "type": {
554
+ "text": "void"
555
+ }
556
+ }
557
+ },
558
+ {
559
+ "kind": "field",
560
+ "name": "handleSlotChange",
561
+ "privacy": "private",
562
+ "readonly": true
563
+ },
564
+ {
565
+ "kind": "field",
566
+ "name": "handleClick",
567
+ "privacy": "private",
568
+ "readonly": true
569
+ }
570
+ ],
571
+ "events": [
572
+ {
573
+ "description": "Fires when `selected` changes via an item click.",
574
+ "name": "change"
575
+ }
576
+ ],
577
+ "attributes": [
578
+ {
579
+ "name": "selected",
580
+ "type": {
581
+ "text": "number"
582
+ },
583
+ "default": "-1",
584
+ "description": "Index of the selected item. `-1` means no selection.",
585
+ "fieldName": "selected"
586
+ }
587
+ ],
588
+ "superclass": {
589
+ "name": "LitElement",
590
+ "package": "lit"
591
+ },
592
+ "tagName": "lit-material-navigation-bar",
593
+ "customElement": true
594
+ }
595
+ ],
596
+ "exports": [
597
+ {
598
+ "kind": "js",
599
+ "name": "LitMaterialNavigationBar",
600
+ "declaration": {
601
+ "name": "LitMaterialNavigationBar",
602
+ "module": "src/navigation-bar.ts"
603
+ }
604
+ },
605
+ {
606
+ "kind": "custom-element-definition",
607
+ "name": "lit-material-navigation-bar",
608
+ "declaration": {
609
+ "name": "LitMaterialNavigationBar",
610
+ "module": "src/navigation-bar.ts"
611
+ }
612
+ }
613
+ ]
614
+ },
615
+ {
616
+ "kind": "javascript-module",
617
+ "path": "src/navigation-drawer-item-styles.ts",
618
+ "declarations": [
619
+ {
620
+ "kind": "variable",
621
+ "name": "styles",
622
+ "default": "css` :host { display: block; outline: none; -webkit-tap-highlight-color: transparent; } :host([disabled]) { pointer-events: none; } .item { position: relative; display: flex; align-items: center; gap: 12px; box-sizing: border-box; width: 100%; min-height: 56px; padding-inline: 16px; border: none; border-radius: var(--md-sys-shape-corner-full, 28px); margin: 0; background-color: transparent; color: var(--md-sys-color-on-surface-variant, #49454f); cursor: pointer; text-align: start; text-decoration: none; font-family: var(--md-sys-typescale-label-large-font, Roboto, system-ui, sans-serif); font-size: var(--md-sys-typescale-label-large-size, 0.875rem); font-weight: var(--md-sys-typescale-label-large-weight, 500); -webkit-appearance: none; appearance: none; transition: background-color 150ms var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1)); } .item:disabled, .item[aria-disabled=\"true\"] { cursor: default; } :host([selected]) .item { background-color: var(--md-sys-color-secondary-container, #e8def8); color: var(--md-sys-color-on-secondary-container, #1d192b); } slot.icon::slotted(*) { display: block; width: 24px; height: 24px; } .label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } slot.badge::slotted(*) { display: block; } .state-layer { position: absolute; inset: 0; border-radius: inherit; background-color: currentColor; opacity: 0; pointer-events: none; transition: opacity 100ms linear; } .item:hover .state-layer { opacity: var(--md-sys-state-hover-state-layer-opacity, 0.08); } .state-layer[data-pressed] { opacity: var(--md-sys-state-pressed-state-layer-opacity, 0.1); } .focus-ring { position: absolute; inset: -2px; border-radius: inherit; outline: 3px solid var(--md-sys-color-secondary, #625b71); outline-offset: 2px; pointer-events: none; } .focus-ring[hidden] { display: none; } :host([disabled]) .item { color: color-mix(in srgb, var(--md-sys-color-on-surface, #1c1b1f) 38%, transparent); } @media (prefers-reduced-motion: reduce) { .item, .state-layer { transition: none; } } `"
623
+ }
624
+ ],
625
+ "exports": [
626
+ {
627
+ "kind": "js",
628
+ "name": "styles",
629
+ "declaration": {
630
+ "name": "styles",
631
+ "module": "src/navigation-drawer-item-styles.ts"
632
+ }
633
+ }
634
+ ]
635
+ },
636
+ {
637
+ "kind": "javascript-module",
638
+ "path": "src/navigation-drawer-item.ts",
639
+ "declarations": [
640
+ {
641
+ "kind": "class",
642
+ "description": "A single destination inside a `lit-material-navigation-drawer` — a\npill-shaped row with a leading icon and a label, following the MD3\nnavigation drawer item spec.\n\nRenders as a real `<button>` by default, or an `<a>` when `href` is set —\nboth get the same ripple/focus-ring treatment as `lit-material-list-item`.\n`selected` is normally managed by the parent drawer (see its docs), not\nset directly.",
643
+ "name": "LitMaterialNavigationDrawerItem",
644
+ "cssParts": [
645
+ {
646
+ "description": "The `<button>` or `<a>` row (background/shape).",
647
+ "name": "item"
648
+ },
649
+ {
650
+ "description": "The state-layer element the hover/press feedback is drawn on.",
651
+ "name": "ripple"
652
+ },
653
+ {
654
+ "description": "The focus indicator element.",
655
+ "name": "focus-ring"
656
+ }
657
+ ],
658
+ "slots": [
659
+ {
660
+ "description": "The label text.",
661
+ "name": ""
662
+ },
663
+ {
664
+ "description": "The leading icon.",
665
+ "name": "icon"
666
+ },
667
+ {
668
+ "description": "Optional trailing content (a count or dot).",
669
+ "name": "badge"
670
+ }
671
+ ],
672
+ "members": [
673
+ {
674
+ "kind": "field",
675
+ "name": "shadowRootOptions",
676
+ "type": {
677
+ "text": "ShadowRootInit"
678
+ },
679
+ "static": true,
680
+ "default": "{ ...LitElement.shadowRootOptions, delegatesFocus: true, }"
681
+ },
682
+ {
683
+ "kind": "field",
684
+ "name": "selected",
685
+ "type": {
686
+ "text": "boolean"
687
+ },
688
+ "default": "false",
689
+ "attribute": "selected",
690
+ "reflects": true
691
+ },
692
+ {
693
+ "kind": "field",
694
+ "name": "disabled",
695
+ "type": {
696
+ "text": "boolean"
697
+ },
698
+ "default": "false",
699
+ "attribute": "disabled",
700
+ "reflects": true
701
+ },
702
+ {
703
+ "kind": "field",
704
+ "name": "href",
705
+ "type": {
706
+ "text": "string"
707
+ },
708
+ "default": "\"\"",
709
+ "description": "If set, renders the item as a link (`<a>`) instead of a `<button>`.",
710
+ "attribute": "href"
711
+ },
712
+ {
713
+ "kind": "field",
714
+ "name": "target",
715
+ "type": {
716
+ "text": "string"
717
+ },
718
+ "default": "\"\"",
719
+ "attribute": "target"
720
+ },
721
+ {
722
+ "kind": "field",
723
+ "name": "stateLayerElement",
724
+ "type": {
725
+ "text": "HTMLElement | undefined"
726
+ },
727
+ "privacy": "private",
728
+ "readonly": true
729
+ },
730
+ {
731
+ "kind": "field",
732
+ "name": "ripple",
733
+ "privacy": "private",
734
+ "readonly": true,
735
+ "default": "new RippleController(this)"
736
+ },
737
+ {
738
+ "kind": "field",
739
+ "name": "focusRing",
740
+ "privacy": "private",
741
+ "readonly": true,
742
+ "default": "new FocusRingController(this)"
743
+ },
744
+ {
745
+ "kind": "field",
746
+ "name": "content",
747
+ "privacy": "private",
748
+ "readonly": true
749
+ },
750
+ {
751
+ "kind": "method",
752
+ "name": "handleClick",
753
+ "privacy": "private",
754
+ "return": {
755
+ "type": {
756
+ "text": "void"
757
+ }
758
+ },
759
+ "parameters": [
760
+ {
761
+ "name": "event",
762
+ "type": {
763
+ "text": "MouseEvent"
764
+ }
765
+ }
766
+ ]
767
+ },
768
+ {
769
+ "kind": "method",
770
+ "name": "handleLinkClick",
771
+ "privacy": "private",
772
+ "return": {
773
+ "type": {
774
+ "text": "void"
775
+ }
776
+ },
777
+ "parameters": [
778
+ {
779
+ "name": "event",
780
+ "type": {
781
+ "text": "MouseEvent"
782
+ }
783
+ }
784
+ ]
785
+ }
786
+ ],
787
+ "attributes": [
788
+ {
789
+ "name": "selected",
790
+ "type": {
791
+ "text": "boolean"
792
+ },
793
+ "default": "false",
794
+ "fieldName": "selected"
795
+ },
796
+ {
797
+ "name": "disabled",
798
+ "type": {
799
+ "text": "boolean"
800
+ },
801
+ "default": "false",
802
+ "fieldName": "disabled"
803
+ },
804
+ {
805
+ "name": "href",
806
+ "type": {
807
+ "text": "string"
808
+ },
809
+ "default": "\"\"",
810
+ "description": "If set, renders the item as a link (`<a>`) instead of a `<button>`.",
811
+ "fieldName": "href"
812
+ },
813
+ {
814
+ "name": "target",
815
+ "type": {
816
+ "text": "string"
817
+ },
818
+ "default": "\"\"",
819
+ "fieldName": "target"
820
+ }
821
+ ],
822
+ "superclass": {
823
+ "name": "LitElement",
824
+ "package": "lit"
825
+ },
826
+ "tagName": "lit-material-navigation-drawer-item",
827
+ "customElement": true
828
+ }
829
+ ],
830
+ "exports": [
831
+ {
832
+ "kind": "js",
833
+ "name": "LitMaterialNavigationDrawerItem",
834
+ "declaration": {
835
+ "name": "LitMaterialNavigationDrawerItem",
836
+ "module": "src/navigation-drawer-item.ts"
837
+ }
838
+ },
839
+ {
840
+ "kind": "custom-element-definition",
841
+ "name": "lit-material-navigation-drawer-item",
842
+ "declaration": {
843
+ "name": "LitMaterialNavigationDrawerItem",
844
+ "module": "src/navigation-drawer-item.ts"
845
+ }
846
+ }
847
+ ]
848
+ },
849
+ {
850
+ "kind": "javascript-module",
851
+ "path": "src/navigation-drawer-styles.ts",
852
+ "declarations": [
853
+ {
854
+ "kind": "variable",
855
+ "name": "styles",
856
+ "default": "css` :host { display: contents; } .drawer { display: flex; flex-direction: column; box-sizing: border-box; gap: 4px; width: 360px; max-width: 100%; height: 100%; padding: 12px; background-color: var(--md-sys-color-surface, #fffbfe); color: var(--md-sys-color-on-surface, #1c1b1f); /* Not part of the tab order for \"modal\" (see the component for why it's the default showModal() focus target) — no visible focus indicator of its own. */ outline: none; } .header { padding: 16px 16px 8px; } .header:empty { display: none; } .content { display: flex; flex-direction: column; gap: 4px; min-height: 0; overflow-y: auto; } /* Modal variant: same .drawer content, wrapped in a native <dialog> so the scrim, Escape-to-close, and focus trap all come from the browser. */ .dialog { margin: 0; padding: 0; border: none; inset: 0; width: 100%; height: 100%; max-width: 100%; max-height: 100%; background: transparent; color: inherit; } .dialog[open] { display: flex; justify-content: flex-start; } :host([position=\"end\"]) .dialog[open] { justify-content: flex-end; } .dialog::backdrop { background-color: rgba(0, 0, 0, 0.32); } .dialog .drawer { box-shadow: var( --md-sys-elevation-level1, 0 1px 2px rgba(0, 0, 0, 0.3) ); } `"
857
+ }
858
+ ],
859
+ "exports": [
860
+ {
861
+ "kind": "js",
862
+ "name": "styles",
863
+ "declaration": {
864
+ "name": "styles",
865
+ "module": "src/navigation-drawer-styles.ts"
866
+ }
867
+ }
868
+ ]
869
+ },
870
+ {
871
+ "kind": "javascript-module",
872
+ "path": "src/navigation-drawer.ts",
873
+ "declarations": [
874
+ {
875
+ "kind": "class",
876
+ "description": "Material Design 3 navigation drawer — a vertical panel of primary\ndestinations (`lit-material-navigation-drawer-item` elements).\n\n`standard` renders as a plain, always-in-flow `<nav>` (a persistent side\npanel you place in your own layout). `modal` wraps the same content in a\nnative `<dialog>`, the same foundation `lit-material-dialog` uses — so the\nscrim, Escape-to-close, and focus trap all come from the browser. `position`\npicks which edge a `modal` drawer slides in from.\n\nSelection is index-based and managed here (like `lit-material-tabs`): set\n`selected` to reflect your current route/section, and each item's own\n`selected` is kept in sync automatically. Clicking an item updates\n`selected` and fires `change` — items themselves don't manage selection.",
877
+ "name": "LitMaterialNavigationDrawer",
878
+ "cssParts": [
879
+ {
880
+ "description": "The native `<dialog>` element. Only rendered for `modal`.",
881
+ "name": "dialog"
882
+ },
883
+ {
884
+ "description": "The visible panel (background, width, padding).",
885
+ "name": "drawer"
886
+ },
887
+ {
888
+ "description": "The header slot's container.",
889
+ "name": "header"
890
+ },
891
+ {
892
+ "description": "The items slot's container.",
893
+ "name": "content"
894
+ }
895
+ ],
896
+ "slots": [
897
+ {
898
+ "description": "`lit-material-navigation-drawer-item` elements.",
899
+ "name": ""
900
+ },
901
+ {
902
+ "description": "Optional header content (a title, a close button…).",
903
+ "name": "header"
904
+ }
905
+ ],
906
+ "members": [
907
+ {
908
+ "kind": "field",
909
+ "name": "variant",
910
+ "type": {
911
+ "text": "NavigationDrawerVariant"
912
+ },
913
+ "default": "\"standard\"",
914
+ "attribute": "variant"
915
+ },
916
+ {
917
+ "kind": "field",
918
+ "name": "position",
919
+ "type": {
920
+ "text": "NavigationDrawerPosition"
921
+ },
922
+ "default": "\"start\"",
923
+ "attribute": "position",
924
+ "reflects": true
925
+ },
926
+ {
927
+ "kind": "field",
928
+ "name": "selected",
929
+ "type": {
930
+ "text": "number"
931
+ },
932
+ "default": "-1",
933
+ "description": "Index of the selected item. `-1` means no selection.",
934
+ "attribute": "selected"
935
+ },
936
+ {
937
+ "kind": "field",
938
+ "name": "open",
939
+ "type": {
940
+ "text": "boolean"
941
+ },
942
+ "default": "false",
943
+ "description": "Whether a `modal` drawer is open. Ignored for `standard`.",
944
+ "attribute": "open",
945
+ "reflects": true
946
+ },
947
+ {
948
+ "kind": "field",
949
+ "name": "disableBackdropClose",
950
+ "type": {
951
+ "text": "boolean"
952
+ },
953
+ "default": "false",
954
+ "description": "If set, clicking the backdrop does not close a `modal` drawer.",
955
+ "attribute": "disable-backdrop-close"
956
+ },
957
+ {
958
+ "kind": "field",
959
+ "name": "dialogElement",
960
+ "type": {
961
+ "text": "HTMLDialogElement | undefined"
962
+ },
963
+ "privacy": "private",
964
+ "readonly": true
965
+ },
966
+ {
967
+ "kind": "field",
968
+ "name": "reopenOnClose",
969
+ "type": {
970
+ "text": "boolean"
971
+ },
972
+ "privacy": "private",
973
+ "default": "false"
974
+ },
975
+ {
976
+ "kind": "method",
977
+ "name": "show",
978
+ "return": {
979
+ "type": {
980
+ "text": "void"
981
+ }
982
+ },
983
+ "description": "Opens a `modal` drawer. Equivalent to setting `.open = true`."
984
+ },
985
+ {
986
+ "kind": "method",
987
+ "name": "close",
988
+ "return": {
989
+ "type": {
990
+ "text": "void"
991
+ }
992
+ },
993
+ "description": "Closes a `modal` drawer. Equivalent to setting `.open = false`."
994
+ },
995
+ {
996
+ "kind": "field",
997
+ "name": "items",
998
+ "type": {
999
+ "text": "LitMaterialNavigationDrawerItem[]"
1000
+ },
1001
+ "privacy": "private",
1002
+ "readonly": true
1003
+ },
1004
+ {
1005
+ "kind": "method",
1006
+ "name": "syncSelected",
1007
+ "privacy": "private",
1008
+ "return": {
1009
+ "type": {
1010
+ "text": "void"
1011
+ }
1012
+ }
1013
+ },
1014
+ {
1015
+ "kind": "field",
1016
+ "name": "handleSlotChange",
1017
+ "privacy": "private",
1018
+ "readonly": true
1019
+ },
1020
+ {
1021
+ "kind": "field",
1022
+ "name": "handleClick",
1023
+ "privacy": "private",
1024
+ "readonly": true
1025
+ },
1026
+ {
1027
+ "kind": "method",
1028
+ "name": "renderNav",
1029
+ "privacy": "private"
1030
+ },
1031
+ {
1032
+ "kind": "method",
1033
+ "name": "handleClose",
1034
+ "privacy": "private",
1035
+ "return": {
1036
+ "type": {
1037
+ "text": "void"
1038
+ }
1039
+ }
1040
+ },
1041
+ {
1042
+ "kind": "method",
1043
+ "name": "handleCancel",
1044
+ "privacy": "private",
1045
+ "return": {
1046
+ "type": {
1047
+ "text": "void"
1048
+ }
1049
+ },
1050
+ "parameters": [
1051
+ {
1052
+ "name": "event",
1053
+ "type": {
1054
+ "text": "Event"
1055
+ }
1056
+ }
1057
+ ]
1058
+ },
1059
+ {
1060
+ "kind": "method",
1061
+ "name": "handleBackdropClick",
1062
+ "privacy": "private",
1063
+ "return": {
1064
+ "type": {
1065
+ "text": "void"
1066
+ }
1067
+ },
1068
+ "parameters": [
1069
+ {
1070
+ "name": "event",
1071
+ "type": {
1072
+ "text": "MouseEvent"
1073
+ }
1074
+ }
1075
+ ]
1076
+ }
1077
+ ],
1078
+ "events": [
1079
+ {
1080
+ "name": "close",
1081
+ "type": {
1082
+ "text": "Event"
1083
+ },
1084
+ "description": "`modal` only: re-dispatched from the native `close` event."
1085
+ },
1086
+ {
1087
+ "name": "cancel",
1088
+ "type": {
1089
+ "text": "Event"
1090
+ },
1091
+ "description": "`modal` only: re-dispatched from the native `cancel` event. Cancelable: calling `preventDefault()` stops the drawer from closing."
1092
+ },
1093
+ {
1094
+ "description": "Fires when `selected` changes via an item click.",
1095
+ "name": "change"
1096
+ }
1097
+ ],
1098
+ "attributes": [
1099
+ {
1100
+ "name": "variant",
1101
+ "type": {
1102
+ "text": "NavigationDrawerVariant"
1103
+ },
1104
+ "default": "\"standard\"",
1105
+ "fieldName": "variant"
1106
+ },
1107
+ {
1108
+ "name": "position",
1109
+ "type": {
1110
+ "text": "NavigationDrawerPosition"
1111
+ },
1112
+ "default": "\"start\"",
1113
+ "fieldName": "position"
1114
+ },
1115
+ {
1116
+ "name": "selected",
1117
+ "type": {
1118
+ "text": "number"
1119
+ },
1120
+ "default": "-1",
1121
+ "description": "Index of the selected item. `-1` means no selection.",
1122
+ "fieldName": "selected"
1123
+ },
1124
+ {
1125
+ "name": "open",
1126
+ "type": {
1127
+ "text": "boolean"
1128
+ },
1129
+ "default": "false",
1130
+ "description": "Whether a `modal` drawer is open. Ignored for `standard`.",
1131
+ "fieldName": "open"
1132
+ },
1133
+ {
1134
+ "name": "disable-backdrop-close",
1135
+ "type": {
1136
+ "text": "boolean"
1137
+ },
1138
+ "default": "false",
1139
+ "description": "If set, clicking the backdrop does not close a `modal` drawer.",
1140
+ "fieldName": "disableBackdropClose"
1141
+ }
1142
+ ],
1143
+ "superclass": {
1144
+ "name": "LitElement",
1145
+ "package": "lit"
1146
+ },
1147
+ "tagName": "lit-material-navigation-drawer",
1148
+ "customElement": true
1149
+ }
1150
+ ],
1151
+ "exports": [
1152
+ {
1153
+ "kind": "js",
1154
+ "name": "LitMaterialNavigationDrawer",
1155
+ "declaration": {
1156
+ "name": "LitMaterialNavigationDrawer",
1157
+ "module": "src/navigation-drawer.ts"
1158
+ }
1159
+ },
1160
+ {
1161
+ "kind": "custom-element-definition",
1162
+ "name": "lit-material-navigation-drawer",
1163
+ "declaration": {
1164
+ "name": "LitMaterialNavigationDrawer",
1165
+ "module": "src/navigation-drawer.ts"
1166
+ }
1167
+ }
1168
+ ]
1169
+ },
1170
+ {
1171
+ "kind": "javascript-module",
1172
+ "path": "src/navigation-rail-item-styles.ts",
1173
+ "declarations": [
1174
+ {
1175
+ "kind": "variable",
1176
+ "name": "styles",
1177
+ "default": "css` :host { display: block; outline: none; -webkit-tap-highlight-color: transparent; } :host([disabled]) { pointer-events: none; } .item { position: relative; display: flex; flex-direction: column; align-items: center; gap: 4px; box-sizing: border-box; width: 100%; min-height: 56px; padding-block: 4px; border: none; margin: 0; background-color: transparent; color: var(--md-sys-color-on-surface-variant, #49454f); cursor: pointer; text-decoration: none; font-family: var(--md-sys-typescale-label-medium-font, Roboto, system-ui, sans-serif); font-size: var(--md-sys-typescale-label-medium-size, 0.75rem); font-weight: var(--md-sys-typescale-label-medium-weight, 500); -webkit-appearance: none; appearance: none; } .item:disabled, .item[aria-disabled=\"true\"] { cursor: default; } :host([selected]) .item { color: var(--md-sys-color-on-surface, #1c1b1f); } .icon-container { position: relative; display: flex; align-items: center; justify-content: center; width: 56px; height: 32px; border-radius: var(--md-sys-shape-corner-full, 16px); transition: background-color 150ms var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1)); } :host([selected]) .icon-container { background-color: var(--md-sys-color-secondary-container, #e8def8); } slot.icon::slotted(*) { display: block; width: 24px; height: 24px; } slot.badge::slotted(*) { position: absolute; top: -4px; inset-inline-end: 8px; } .label { max-width: 100%; overflow: hidden; text-align: center; text-overflow: ellipsis; white-space: nowrap; } .state-layer { position: absolute; inset: 0; border-radius: inherit; background-color: currentColor; opacity: 0; pointer-events: none; transition: opacity 100ms linear; } .item:hover .state-layer { opacity: var(--md-sys-state-hover-state-layer-opacity, 0.08); } .state-layer[data-pressed] { opacity: var(--md-sys-state-pressed-state-layer-opacity, 0.1); } .focus-ring { position: absolute; inset: -2px; border-radius: inherit; outline: 3px solid var(--md-sys-color-secondary, #625b71); outline-offset: 2px; pointer-events: none; } .focus-ring[hidden] { display: none; } :host([disabled]) .item { color: color-mix(in srgb, var(--md-sys-color-on-surface, #1c1b1f) 38%, transparent); } @media (prefers-reduced-motion: reduce) { .icon-container, .state-layer { transition: none; } } `"
1178
+ }
1179
+ ],
1180
+ "exports": [
1181
+ {
1182
+ "kind": "js",
1183
+ "name": "styles",
1184
+ "declaration": {
1185
+ "name": "styles",
1186
+ "module": "src/navigation-rail-item-styles.ts"
1187
+ }
1188
+ }
1189
+ ]
1190
+ },
1191
+ {
1192
+ "kind": "javascript-module",
1193
+ "path": "src/navigation-rail-item.ts",
1194
+ "declarations": [
1195
+ {
1196
+ "kind": "class",
1197
+ "description": "A single destination inside a `lit-material-navigation-rail` — an icon in\na pill-shaped active indicator, with a small label below it, following\nthe MD3 navigation rail item spec.\n\nRenders as a real `<button>` by default, or an `<a>` when `href` is set.\nThe ripple/focus-ring are scoped to the icon's indicator pill (not the\nwhole item), matching how the indicator itself is the only part that\nvisibly reacts to press/focus in the spec. `selected` is normally managed\nby the parent rail (see its docs), not set directly.",
1198
+ "name": "LitMaterialNavigationRailItem",
1199
+ "cssParts": [
1200
+ {
1201
+ "description": "The `<button>` or `<a>` (layout only, no background of its own).",
1202
+ "name": "item"
1203
+ },
1204
+ {
1205
+ "description": "The pill-shaped active indicator behind the icon.",
1206
+ "name": "icon-container"
1207
+ },
1208
+ {
1209
+ "description": "The state-layer element the hover/press feedback is drawn on.",
1210
+ "name": "ripple"
1211
+ },
1212
+ {
1213
+ "description": "The focus indicator element.",
1214
+ "name": "focus-ring"
1215
+ }
1216
+ ],
1217
+ "slots": [
1218
+ {
1219
+ "description": "The label text.",
1220
+ "name": ""
1221
+ },
1222
+ {
1223
+ "description": "The icon.",
1224
+ "name": "icon"
1225
+ },
1226
+ {
1227
+ "description": "Optional badge content (a count or dot), positioned over the icon's top-end corner (top-right in LTR, top-left in RTL).",
1228
+ "name": "badge"
1229
+ }
1230
+ ],
1231
+ "members": [
1232
+ {
1233
+ "kind": "field",
1234
+ "name": "shadowRootOptions",
1235
+ "type": {
1236
+ "text": "ShadowRootInit"
1237
+ },
1238
+ "static": true,
1239
+ "default": "{ ...LitElement.shadowRootOptions, delegatesFocus: true, }"
1240
+ },
1241
+ {
1242
+ "kind": "field",
1243
+ "name": "selected",
1244
+ "type": {
1245
+ "text": "boolean"
1246
+ },
1247
+ "default": "false",
1248
+ "attribute": "selected",
1249
+ "reflects": true
1250
+ },
1251
+ {
1252
+ "kind": "field",
1253
+ "name": "disabled",
1254
+ "type": {
1255
+ "text": "boolean"
1256
+ },
1257
+ "default": "false",
1258
+ "attribute": "disabled",
1259
+ "reflects": true
1260
+ },
1261
+ {
1262
+ "kind": "field",
1263
+ "name": "href",
1264
+ "type": {
1265
+ "text": "string"
1266
+ },
1267
+ "default": "\"\"",
1268
+ "description": "If set, renders the item as a link (`<a>`) instead of a `<button>`.",
1269
+ "attribute": "href"
1270
+ },
1271
+ {
1272
+ "kind": "field",
1273
+ "name": "target",
1274
+ "type": {
1275
+ "text": "string"
1276
+ },
1277
+ "default": "\"\"",
1278
+ "attribute": "target"
1279
+ },
1280
+ {
1281
+ "kind": "field",
1282
+ "name": "stateLayerElement",
1283
+ "type": {
1284
+ "text": "HTMLElement | undefined"
1285
+ },
1286
+ "privacy": "private",
1287
+ "readonly": true
1288
+ },
1289
+ {
1290
+ "kind": "field",
1291
+ "name": "ripple",
1292
+ "privacy": "private",
1293
+ "readonly": true,
1294
+ "default": "new RippleController(this)"
1295
+ },
1296
+ {
1297
+ "kind": "field",
1298
+ "name": "focusRing",
1299
+ "privacy": "private",
1300
+ "readonly": true,
1301
+ "default": "new FocusRingController(this)"
1302
+ },
1303
+ {
1304
+ "kind": "field",
1305
+ "name": "content",
1306
+ "privacy": "private",
1307
+ "readonly": true
1308
+ },
1309
+ {
1310
+ "kind": "method",
1311
+ "name": "handleClick",
1312
+ "privacy": "private",
1313
+ "return": {
1314
+ "type": {
1315
+ "text": "void"
1316
+ }
1317
+ },
1318
+ "parameters": [
1319
+ {
1320
+ "name": "event",
1321
+ "type": {
1322
+ "text": "MouseEvent"
1323
+ }
1324
+ }
1325
+ ]
1326
+ },
1327
+ {
1328
+ "kind": "method",
1329
+ "name": "handleLinkClick",
1330
+ "privacy": "private",
1331
+ "return": {
1332
+ "type": {
1333
+ "text": "void"
1334
+ }
1335
+ },
1336
+ "parameters": [
1337
+ {
1338
+ "name": "event",
1339
+ "type": {
1340
+ "text": "MouseEvent"
1341
+ }
1342
+ }
1343
+ ]
1344
+ }
1345
+ ],
1346
+ "attributes": [
1347
+ {
1348
+ "name": "selected",
1349
+ "type": {
1350
+ "text": "boolean"
1351
+ },
1352
+ "default": "false",
1353
+ "fieldName": "selected"
1354
+ },
1355
+ {
1356
+ "name": "disabled",
1357
+ "type": {
1358
+ "text": "boolean"
1359
+ },
1360
+ "default": "false",
1361
+ "fieldName": "disabled"
1362
+ },
1363
+ {
1364
+ "name": "href",
1365
+ "type": {
1366
+ "text": "string"
1367
+ },
1368
+ "default": "\"\"",
1369
+ "description": "If set, renders the item as a link (`<a>`) instead of a `<button>`.",
1370
+ "fieldName": "href"
1371
+ },
1372
+ {
1373
+ "name": "target",
1374
+ "type": {
1375
+ "text": "string"
1376
+ },
1377
+ "default": "\"\"",
1378
+ "fieldName": "target"
1379
+ }
1380
+ ],
1381
+ "superclass": {
1382
+ "name": "LitElement",
1383
+ "package": "lit"
1384
+ },
1385
+ "tagName": "lit-material-navigation-rail-item",
1386
+ "customElement": true
1387
+ }
1388
+ ],
1389
+ "exports": [
1390
+ {
1391
+ "kind": "js",
1392
+ "name": "LitMaterialNavigationRailItem",
1393
+ "declaration": {
1394
+ "name": "LitMaterialNavigationRailItem",
1395
+ "module": "src/navigation-rail-item.ts"
1396
+ }
1397
+ },
1398
+ {
1399
+ "kind": "custom-element-definition",
1400
+ "name": "lit-material-navigation-rail-item",
1401
+ "declaration": {
1402
+ "name": "LitMaterialNavigationRailItem",
1403
+ "module": "src/navigation-rail-item.ts"
1404
+ }
1405
+ }
1406
+ ]
1407
+ },
1408
+ {
1409
+ "kind": "javascript-module",
1410
+ "path": "src/navigation-rail-styles.ts",
1411
+ "declarations": [
1412
+ {
1413
+ "kind": "variable",
1414
+ "name": "styles",
1415
+ "default": "css` :host { display: block; box-sizing: border-box; } .rail { display: flex; flex-direction: column; align-items: center; box-sizing: border-box; width: 80px; height: 100%; padding-block: 12px; background-color: var(--md-sys-color-surface, #fffbfe); color: var(--md-sys-color-on-surface, #1c1b1f); } .fab { flex: none; margin-block-end: 12px; } .fab:empty { display: none; } .items { display: flex; flex: 1; flex-direction: column; gap: 4px; width: 100%; min-height: 0; overflow-y: auto; } .items.top { justify-content: flex-start; } .items.center { justify-content: center; } .items.bottom { justify-content: flex-end; } `"
1416
+ }
1417
+ ],
1418
+ "exports": [
1419
+ {
1420
+ "kind": "js",
1421
+ "name": "styles",
1422
+ "declaration": {
1423
+ "name": "styles",
1424
+ "module": "src/navigation-rail-styles.ts"
1425
+ }
1426
+ }
1427
+ ]
1428
+ },
1429
+ {
1430
+ "kind": "javascript-module",
1431
+ "path": "src/navigation-rail.ts",
1432
+ "declarations": [
1433
+ {
1434
+ "kind": "class",
1435
+ "description": "Material Design 3 navigation rail — a narrow, always-visible vertical bar\nof primary destinations (`lit-material-navigation-rail-item` elements),\ntypically docked to one edge for medium/large window sizes.\n\nSelection is index-based and managed here (like `lit-material-tabs`): set\n`selected` to reflect your current route/section, and each item's own\n`selected` is kept in sync automatically. Clicking an item updates\n`selected` and fires `change` — items themselves don't manage selection.",
1436
+ "name": "LitMaterialNavigationRail",
1437
+ "cssParts": [
1438
+ {
1439
+ "description": "The bar (background, width, padding).",
1440
+ "name": "rail"
1441
+ },
1442
+ {
1443
+ "description": "The fab slot's container.",
1444
+ "name": "fab"
1445
+ },
1446
+ {
1447
+ "description": "The items slot's container.",
1448
+ "name": "items"
1449
+ }
1450
+ ],
1451
+ "slots": [
1452
+ {
1453
+ "description": "`lit-material-navigation-rail-item` elements.",
1454
+ "name": ""
1455
+ },
1456
+ {
1457
+ "description": "An optional FAB shown above the items.",
1458
+ "name": "fab"
1459
+ }
1460
+ ],
1461
+ "members": [
1462
+ {
1463
+ "kind": "field",
1464
+ "name": "alignment",
1465
+ "type": {
1466
+ "text": "NavigationRailAlignment"
1467
+ },
1468
+ "default": "\"top\"",
1469
+ "description": "Where the item group sits within the rail's height.",
1470
+ "attribute": "alignment"
1471
+ },
1472
+ {
1473
+ "kind": "field",
1474
+ "name": "selected",
1475
+ "type": {
1476
+ "text": "number"
1477
+ },
1478
+ "default": "-1",
1479
+ "description": "Index of the selected item. `-1` means no selection.",
1480
+ "attribute": "selected"
1481
+ },
1482
+ {
1483
+ "kind": "field",
1484
+ "name": "items",
1485
+ "type": {
1486
+ "text": "LitMaterialNavigationRailItem[]"
1487
+ },
1488
+ "privacy": "private",
1489
+ "readonly": true
1490
+ },
1491
+ {
1492
+ "kind": "method",
1493
+ "name": "syncSelected",
1494
+ "privacy": "private",
1495
+ "return": {
1496
+ "type": {
1497
+ "text": "void"
1498
+ }
1499
+ }
1500
+ },
1501
+ {
1502
+ "kind": "field",
1503
+ "name": "handleSlotChange",
1504
+ "privacy": "private",
1505
+ "readonly": true
1506
+ },
1507
+ {
1508
+ "kind": "field",
1509
+ "name": "handleClick",
1510
+ "privacy": "private",
1511
+ "readonly": true
1512
+ }
1513
+ ],
1514
+ "events": [
1515
+ {
1516
+ "description": "Fires when `selected` changes via an item click.",
1517
+ "name": "change"
1518
+ }
1519
+ ],
1520
+ "attributes": [
1521
+ {
1522
+ "name": "alignment",
1523
+ "type": {
1524
+ "text": "NavigationRailAlignment"
1525
+ },
1526
+ "default": "\"top\"",
1527
+ "description": "Where the item group sits within the rail's height.",
1528
+ "fieldName": "alignment"
1529
+ },
1530
+ {
1531
+ "name": "selected",
1532
+ "type": {
1533
+ "text": "number"
1534
+ },
1535
+ "default": "-1",
1536
+ "description": "Index of the selected item. `-1` means no selection.",
1537
+ "fieldName": "selected"
1538
+ }
1539
+ ],
1540
+ "superclass": {
1541
+ "name": "LitElement",
1542
+ "package": "lit"
1543
+ },
1544
+ "tagName": "lit-material-navigation-rail",
1545
+ "customElement": true
1546
+ }
1547
+ ],
1548
+ "exports": [
1549
+ {
1550
+ "kind": "js",
1551
+ "name": "LitMaterialNavigationRail",
1552
+ "declaration": {
1553
+ "name": "LitMaterialNavigationRail",
1554
+ "module": "src/navigation-rail.ts"
1555
+ }
1556
+ },
1557
+ {
1558
+ "kind": "custom-element-definition",
1559
+ "name": "lit-material-navigation-rail",
1560
+ "declaration": {
1561
+ "name": "LitMaterialNavigationRail",
1562
+ "module": "src/navigation-rail.ts"
1563
+ }
1564
+ }
1565
+ ]
1566
+ }
1567
+ ]
1568
+ }