@reliability-design/web 1.1.1 → 1.3.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.
Files changed (69) hide show
  1. package/dist/components/rel-accordion/rel-accordion.ts +289 -150
  2. package/dist/components/rel-alert/rel-alert.ts +34 -34
  3. package/dist/components/rel-avatar/README.md +15 -4
  4. package/dist/components/rel-avatar/rel-avatar.ts +138 -94
  5. package/dist/components/rel-badge/README.md +7 -0
  6. package/dist/components/rel-badge/rel-badge.ts +39 -2
  7. package/dist/components/rel-breadcrumb/rel-breadcrumb.ts +6 -6
  8. package/dist/components/rel-button/rel-button.ts +96 -28
  9. package/dist/components/rel-calendar/rel-calendar.ts +15 -8
  10. package/dist/components/rel-card/rel-card.ts +9 -17
  11. package/dist/components/rel-cardmedia/rel-cardmedia.ts +20 -23
  12. package/dist/components/rel-carousel/rel-carousel.ts +596 -468
  13. package/dist/components/rel-checkbox/rel-checkbox.ts +68 -16
  14. package/dist/components/rel-chip/README.md +7 -0
  15. package/dist/components/rel-chip/rel-chip.ts +411 -244
  16. package/dist/components/rel-container/rel-container.ts +2 -2
  17. package/dist/components/rel-date-picker/rel-date-picker.ts +23 -19
  18. package/dist/components/rel-divider/rel-divider.ts +3 -3
  19. package/dist/components/rel-drawer/rel-drawer-footer.ts +0 -2
  20. package/dist/components/rel-drawer/rel-drawer.ts +46 -90
  21. package/dist/components/rel-kbd/rel-kbd.ts +94 -118
  22. package/dist/components/rel-layout/rel-layout.ts +49 -58
  23. package/dist/components/rel-menu/rel-menu.ts +359 -359
  24. package/dist/components/rel-menubar/rel-menubar-menu.css +3 -0
  25. package/dist/components/rel-menubar/rel-menubar-menu.ts +2 -1
  26. package/dist/components/rel-menubar/rel-menubar.ts +603 -605
  27. package/dist/components/rel-otp/rel-otp.ts +22 -25
  28. package/dist/components/rel-pagination/rel-pagination.ts +442 -381
  29. package/dist/components/rel-popover/rel-popover-content.ts +6 -5
  30. package/dist/components/rel-popover/rel-popover.ts +26 -7
  31. package/dist/components/rel-progress/rel-progress.ts +10 -9
  32. package/dist/components/rel-radio/rel-radio.ts +228 -172
  33. package/dist/components/rel-range-picker/rel-range-picker.css +349 -0
  34. package/dist/components/rel-range-picker/rel-range-picker.ts +1080 -0
  35. package/dist/components/rel-resizable/rel-resizable-handle.ts +8 -7
  36. package/dist/components/rel-segmented-button/rel-segmented-button.ts +41 -20
  37. package/dist/components/rel-select/README.md +34 -28
  38. package/dist/components/rel-select/rel-select.ts +1015 -275
  39. package/dist/components/rel-sheet/rel-sheet.ts +365 -684
  40. package/dist/components/rel-skeleton/rel-skeleton.ts +139 -0
  41. package/dist/components/rel-slider/rel-slider.ts +49 -27
  42. package/dist/components/rel-snackbar/rel-snackbar.ts +28 -28
  43. package/dist/components/rel-stepper/rel-stepper.ts +11 -10
  44. package/dist/components/rel-switch/rel-switch.ts +7 -6
  45. package/dist/components/rel-tab/rel-tab.ts +15 -29
  46. package/dist/components/rel-textfield/rel-textfield.ts +192 -35
  47. package/dist/components/rel-toast/rel-toast.ts +21 -13
  48. package/dist/components/rel-tooltip/rel-tooltip.ts +123 -123
  49. package/dist/components/rel-topbar/rel-topbar-actions.ts +1 -0
  50. package/dist/components/rel-topbar/rel-topbar-brand.ts +1 -0
  51. package/dist/components/rel-topbar/rel-topbar-dropdown-item.ts +32 -2
  52. package/dist/components/rel-topbar/rel-topbar-dropdown.ts +1 -1
  53. package/dist/components/rel-topbar/rel-topbar-item.ts +15 -10
  54. package/dist/components/rel-topbar/rel-topbar-mobile-panel.ts +1 -0
  55. package/dist/components/rel-topbar/rel-topbar-profile.ts +30 -56
  56. package/dist/components/rel-topbar/rel-topbar-utilities.ts +1 -0
  57. package/dist/components/rel-topbar/rel-topbar.ts +137 -28
  58. package/dist/index.d.mts +310 -193
  59. package/dist/index.d.ts +310 -193
  60. package/dist/index.js +5562 -3526
  61. package/dist/index.js.map +1 -1
  62. package/dist/index.mjs +5328 -3284
  63. package/dist/index.mjs.map +1 -1
  64. package/dist/rel-menubar-menu-BEEQDAXW.css +3 -0
  65. package/dist/styles/vars-v2.css +525 -0
  66. package/dist/styles/vars.css +346 -346
  67. package/dist/{vars-TBB4BMSD.css → vars-I2PC74XD.css} +346 -346
  68. package/dist/vars-v2-VMGWTFJZ.css +525 -0
  69. package/package.json +2 -1
package/dist/index.d.mts CHANGED
@@ -1,14 +1,15 @@
1
1
  import * as lit_html from 'lit-html';
2
2
  import * as lit from 'lit';
3
- import { LitElement } from 'lit';
3
+ import { LitElement, PropertyValues } from 'lit';
4
4
  export * from '@reliability-design/icons';
5
5
 
6
6
  declare class RelAccordion extends LitElement {
7
7
  title: string;
8
8
  open: boolean;
9
+ size: "md" | "sm";
10
+ type: "default" | "action";
9
11
  static styles: lit.CSSResult;
10
12
  private toggle;
11
- private chevron;
12
13
  render(): lit_html.TemplateResult<1>;
13
14
  }
14
15
 
@@ -29,9 +30,12 @@ declare class RelAlert extends LitElement {
29
30
  declare class RelAvatar extends LitElement {
30
31
  size: "lg" | "md" | "sm" | "xs";
31
32
  type: "image" | "text" | "icon";
33
+ variant: "fill" | "subtle" | "outline";
32
34
  src: string;
33
35
  text: string;
34
36
  alt: string;
37
+ bg: string;
38
+ color: string;
35
39
  static styles: lit.CSSResult;
36
40
  render(): lit_html.TemplateResult<1>;
37
41
  }
@@ -42,8 +46,23 @@ declare class RelBadge extends LitElement {
42
46
  suffix: string;
43
47
  size: "sm" | "md" | "lg";
44
48
  variant: "dot" | "number";
49
+ /**
50
+ * Direct CSS color override for the badge background. Accepts any valid
51
+ * CSS color value: hex, rgb(...), hsl(...), named color, or var(--token).
52
+ *
53
+ * Clear it (set to `''`) to fall back to the default token.
54
+ */
55
+ color: string;
56
+ /**
57
+ * Direct CSS color override for the badge text/icon color. Accepts any
58
+ * valid CSS color value: hex, rgb(...), hsl(...), named color, or var(--token).
59
+ *
60
+ * Clear it (set to `''`) to fall back to the default (white).
61
+ */
62
+ textColor: string;
45
63
  static styles: lit.CSSResult;
46
64
  private get classes();
65
+ updated(changedProperties: Map<PropertyKey, unknown>): void;
47
66
  render(): lit_html.TemplateResult<1>;
48
67
  }
49
68
 
@@ -59,12 +78,15 @@ declare class RelBreadcrumbs extends LitElement {
59
78
 
60
79
  declare class RelButton extends LitElement {
61
80
  variant: "default" | "primary" | "secondary" | "text" | "link" | "icon";
62
- tone: "default" | "critical" | "success";
81
+ tone: "default" | "primary" | "secondary" | "critical" | "success";
63
82
  size: "small" | "medium" | "large";
64
83
  border: "corner-radius" | "small-corner-radius" | "no-corner-radius";
65
84
  disabled: boolean;
66
85
  ariaLabel: string | null;
67
86
  static styles: lit.CSSResult;
87
+ connectedCallback(): void;
88
+ disconnectedCallback(): void;
89
+ private handleHostClick;
68
90
  private get classes();
69
91
  private handleClick;
70
92
  render(): lit_html.TemplateResult<1>;
@@ -126,13 +148,19 @@ declare class RelCarousel extends LitElement {
126
148
  private autoplayTimer?;
127
149
  private animationId?;
128
150
  private prefersReducedMotion;
151
+ private clonesBefore;
152
+ private _silentJumping;
153
+ private _ro?;
129
154
  static styles: lit.CSSResult;
130
155
  connectedCallback(): void;
156
+ firstUpdated(): void;
131
157
  disconnectedCallback(): void;
132
158
  private handleSlotChange;
159
+ private unit;
133
160
  private updateTransform;
134
161
  private goToPrevious;
135
162
  private goToNext;
163
+ private silentJump;
136
164
  private goToSlide;
137
165
  private emitChange;
138
166
  private startAutoplay;
@@ -229,21 +257,103 @@ declare class RelDatePicker extends LitElement {
229
257
  render(): lit_html.TemplateResult<1>;
230
258
  }
231
259
 
260
+ declare class RelRangePicker extends LitElement {
261
+ from: string;
262
+ to: string;
263
+ locale: string;
264
+ weekStart: "mon" | "sun";
265
+ minDate: string;
266
+ maxDate: string;
267
+ disabled: boolean;
268
+ open: boolean;
269
+ mode: "popover" | "popup";
270
+ width: string;
271
+ minWidth: string;
272
+ maxWidth: string;
273
+ height: string;
274
+ minHeight: string;
275
+ maxHeight: string;
276
+ placeholder: string;
277
+ triggerVariant: "default" | "icon";
278
+ private draftFrom;
279
+ private draftTo;
280
+ private draftActivePreset;
281
+ private viewYear;
282
+ private viewMonth;
283
+ private isSelectingRange;
284
+ private hoverDate;
285
+ private triggerButton?;
286
+ static styles: lit.CSSResult;
287
+ connectedCallback(): void;
288
+ disconnectedCallback(): void;
289
+ updated(): void;
290
+ private handleClickOutside;
291
+ private handleGlobalKeydown;
292
+ private toggleOpen;
293
+ private openPopover;
294
+ private cancelPopover;
295
+ private applySelection;
296
+ private resetDraft;
297
+ private getTriggerLabel;
298
+ /** Formatted "MM/DD/YYYY → MM/DD/YYYY" (or single date / "") for the current committed `from`/`to`. */
299
+ get displayLabel(): string;
300
+ private parseISODate;
301
+ private formatISODate;
302
+ private formatDisplayDate;
303
+ private isSameDay;
304
+ private isDateDisabled;
305
+ private getQuickSelects;
306
+ private selectQuickSelect;
307
+ private previousMonth;
308
+ private nextMonth;
309
+ private getMonthName;
310
+ private getWeekdayLabels;
311
+ private getCalendarDays;
312
+ private handleDayClick;
313
+ private handleDayHover;
314
+ render(): lit_html.TemplateResult<1>;
315
+ }
316
+ declare global {
317
+ interface HTMLElementTagNameMap {
318
+ "rel-range-picker": RelRangePicker;
319
+ }
320
+ }
321
+
322
+ type ChipTone = "neutral" | "danger" | "warning" | "success" | "info";
323
+ type ChipVariant = "fill" | "subtle";
324
+ type ChipSize = "sm" | "md" | "lg";
325
+ type ChipBorder = "default" | "rounded";
232
326
  declare class RelChip extends LitElement {
327
+ static shadowRootOptions: ShadowRootInit;
233
328
  label: string;
234
- tone: "default" | "blue" | "yellow" | "red" | "green";
329
+ tone: ChipTone;
330
+ variant: ChipVariant;
331
+ size: ChipSize;
332
+ border: ChipBorder;
333
+ /** Icon name from the generated icon dictionary (e.g. "settings") — rendered via <rel-icon>. */
235
334
  leadingIcon?: string;
236
335
  trailingIcon?: string;
336
+ /** Initials text for the avatar (e.g. "JD"). Mutually exclusive with leadingIcon. */
237
337
  avatar?: string;
238
338
  removable: boolean;
239
- outline: boolean;
240
339
  /** IMPORTANT: reflected so CSS + Angular can see it */
241
340
  removed: boolean;
341
+ /** Opt-in native drag-and-drop — reflects the Figma "Dragged" state automatically during a real drag gesture. */
342
+ draggableChip: boolean;
343
+ /** Reflected so CSS can target the Figma "Dragged" visual state. Driven automatically by dragstart/dragend when draggableChip is set. */
344
+ private dragging;
242
345
  static styles: lit.CSSResult;
243
346
  private get classes();
244
347
  private handleRemove;
348
+ private onDragStart;
349
+ private onDragEnd;
350
+ protected updated(changed: Map<string, unknown>): void;
245
351
  render(): lit_html.TemplateResult<1>;
246
- private renderIcon;
352
+ }
353
+ declare global {
354
+ interface HTMLElementTagNameMap {
355
+ "rel-chip": RelChip;
356
+ }
247
357
  }
248
358
 
249
359
  declare class RelContainer extends LitElement {
@@ -273,7 +383,7 @@ declare global {
273
383
  }
274
384
  }
275
385
 
276
- type DrawerSide = "bottom" | "left" | "right" | "top";
386
+ type DrawerSide = "bottom" | "left" | "right";
277
387
  type DrawerCloseReason = "backdrop" | "escape" | "drag" | "programmatic";
278
388
  declare class RelDrawer extends LitElement {
279
389
  open: boolean;
@@ -287,7 +397,6 @@ declare class RelDrawer extends LitElement {
287
397
  snapThreshold: number;
288
398
  maxHeight: string;
289
399
  width: string;
290
- disabled: boolean;
291
400
  title: string;
292
401
  description: string;
293
402
  private isDragging;
@@ -307,7 +416,6 @@ declare class RelDrawer extends LitElement {
307
416
  private handleClose;
308
417
  private lockScroll;
309
418
  private unlockScroll;
310
- private focusPanel;
311
419
  private getFocusableElements;
312
420
  private handleKeydown;
313
421
  private handleOverlayClick;
@@ -318,7 +426,6 @@ declare class RelDrawer extends LitElement {
318
426
  private handlePointerUp;
319
427
  private getPanelStyle;
320
428
  private getOverlayStyle;
321
- private hasSlotContent;
322
429
  render(): lit_html.TemplateResult<1>;
323
430
  }
324
431
  declare global {
@@ -333,7 +440,6 @@ declare class RelKbd extends LitElement {
333
440
  pill: boolean;
334
441
  inset: boolean;
335
442
  static styles: lit.CSSResult;
336
- private get classes();
337
443
  render(): lit_html.TemplateResult<1>;
338
444
  }
339
445
 
@@ -342,6 +448,7 @@ declare class RelLayout extends LitElement {
342
448
  columns: number;
343
449
  responsive: boolean;
344
450
  static styles: lit.CSSResult;
451
+ willUpdate(): void;
345
452
  render(): lit_html.TemplateResult<1>;
346
453
  }
347
454
 
@@ -359,18 +466,19 @@ declare class RelMenuItem extends LitElement {
359
466
  value: string;
360
467
  disabled: boolean;
361
468
  icon: string;
469
+ createRenderRoot(): this;
362
470
  render(): lit_html.TemplateResult<1>;
363
471
  }
364
472
  declare class RelMenu extends LitElement {
365
473
  type: MenuType;
366
474
  items: MenuItem[];
367
475
  private focusedIndex;
368
- private _menuItems;
369
- static styles: lit.CSSResult;
370
- private _onSlotChange;
371
- private get _effectiveItems();
476
+ private _items;
477
+ static readonly _css = "\n :host {\n display: inline-block;\n }\n\n .rel-menu {\n position: relative;\n display: inline-block;\n background: var(--rel-color-bg-primary);\n color: var(--rel-color-text-primary);\n border-radius: var(--rel-borders-radius-border-radius-300);\n box-shadow: var(--rel-shadows-shadow-300);\n min-width: 220px;\n font-family: var(--rel-fontFamilies-primary, sans-serif);\n font-size: var(--rel-fontSizes-sm);\n padding: var(--rel-spacing-space-3xs) 0;\n outline: none;\n overflow: hidden;\n }\n\n .rel-menu:focus-visible,\n :host(:focus-visible) .rel-menu {\n outline: 2px solid var(--rel-color-border-focus);\n outline-offset: 2px;\n }\n\n .rel-menu-item {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--rel-spacing-space-xs);\n padding: var(--rel-spacing-space-xs) var(--rel-spacing-space-sm);\n line-height: var(--rel-lineHeights-sm);\n cursor: pointer;\n transition: background 0.15s ease, color 0.15s ease;\n user-select: none;\n }\n\n .rel-menu-item:hover {\n background: var(--rel-color-bg-hover);\n }\n\n .rel-menu-item:active {\n background: var(--rel-color-bg-hover);\n }\n\n .rel-menu-item.active {\n background: var(--rel-color-bg-hover);\n font-weight: var(--rel-fontWeights-medium);\n }\n\n .rel-menu-item.disabled {\n background-color: transparent;\n color: var(--rel-color-text-disabled);\n cursor: not-allowed;\n }\n\n .rel-menu-item[data-focused=\"true\"] {\n outline: 2px solid var(--rel-color-border-focus);\n outline-offset: -2px;\n }\n\n .menu-check-row {\n display: inline-flex;\n align-items: center;\n gap: var(--rel-spacing-space-2xs);\n width: 100%;\n }\n\n .menu-checkbox {\n width: 16px;\n height: 16px;\n cursor: pointer;\n }\n\n .menu-checkbox:disabled {\n cursor: not-allowed;\n }\n\n .menu-label {\n flex: 1 1 auto;\n }\n\n .chevron {\n font-size: var(--rel-fontSizes-lg);\n opacity: 0.75;\n transform: translateY(1px);\n }\n\n .rel-submenu {\n position: absolute;\n top: calc(-1 * var(--rel-spacing-space-3xs));\n left: calc(100% + var(--rel-spacing-space-2xs));\n min-width: 200px;\n background: var(--rel-color-bg-primary);\n color: var(--rel-color-text-primary);\n border-radius: var(--rel-borders-radius-border-radius-300);\n box-shadow: var(--rel-shadows-shadow-300);\n padding: var(--rel-spacing-space-3xs) 0;\n visibility: hidden;\n pointer-events: none;\n z-index: 20;\n }\n\n .rel-submenu.visible {\n visibility: visible;\n pointer-events: auto;\n }\n\n .rel-submenu .rel-menu-item {\n padding: var(--rel-spacing-space-xs) var(--rel-spacing-space-sm);\n }\n ";
478
+ createRenderRoot(): this;
372
479
  connectedCallback(): void;
373
480
  disconnectedCallback(): void;
481
+ updated(changedProperties: Map<string, unknown>): void;
374
482
  private handleDocumentClick;
375
483
  private onItemEnter;
376
484
  private onItemLeave;
@@ -382,17 +490,47 @@ declare class RelMenu extends LitElement {
382
490
  render(): lit_html.TemplateResult<1>;
383
491
  }
384
492
 
493
+ interface RadioOption {
494
+ value: string;
495
+ label: string;
496
+ supportingText?: string;
497
+ disabled?: boolean;
498
+ }
499
+ declare class RelRadio extends LitElement {
500
+ options: RadioOption[];
501
+ name: string;
502
+ selectedValue: string | null;
503
+ disabled: boolean;
504
+ error: boolean;
505
+ errorMessage: string;
506
+ value: string;
507
+ checked: boolean;
508
+ private _onChange;
509
+ private _onTouched;
510
+ static styles: lit.CSSResult;
511
+ private onChange;
512
+ registerOnChange(fn: (value: string) => void): void;
513
+ registerOnTouched(fn: () => void): void;
514
+ writeValue(value: string): void;
515
+ private get hasSelection();
516
+ private renderOption;
517
+ render(): lit_html.TemplateResult<1>;
518
+ }
519
+
385
520
  declare class RelMenubar extends LitElement {
386
521
  private menus;
387
522
  private openMenuIndex;
388
523
  private focusedTriggerIndex;
389
524
  private focusedItemIndex;
390
525
  private openSubmenuElement;
391
- private container;
392
526
  private hoverSwitchEnabled;
393
- static styles: lit.CSSResult;
527
+ private _onScroll?;
528
+ static readonly _css = "\n :host {\n display: block;\n }\n\n :host > slot {\n display: none;\n }\n\n .menubar-container {\n display: flex;\n align-items: stretch;\n background: var(--rel-color-bg-secondary);\n border: var(--rel-borders-width-stroke-100) solid var(--rel-color-border-default);\n border-radius: var(--rel-borders-radius-border-radius-200);\n overflow: hidden;\n padding: 0;\n gap: var(--rel-spacing-space-3xs);\n font-family: var(--rel-fontFamilies-primary);\n font-size: var(--rel-fontSizes-sm);\n height: 40px;\n width: fit-content;\n }\n\n .menubar-trigger {\n display: flex;\n align-items: center;\n align-self: stretch;\n height: 100%;\n padding: 0 var(--rel-spacing-space-sm);\n background: transparent;\n border: none;\n cursor: pointer;\n font-family: inherit;\n font-size: inherit;\n color: var(--rel-color-text-heading);\n transition: background 0.15s ease;\n user-select: none;\n outline: none;\n }\n\n .menubar-trigger:hover,\n .menubar-trigger.active {\n background: var(--rel-color-bg-selected);\n }\n\n .menubar-trigger:focus-visible {\n outline: 2px solid var(--rel-color-border-focus);\n outline-offset: 2px;\n }\n\n .menubar-panel {\n position: fixed;\n min-width: 220px;\n background: var(--rel-color-bg-primary);\n border: var(--rel-borders-width-stroke-100) solid var(--rel-color-border-default);\n border-radius: var(--rel-borders-radius-border-radius-200);\n box-shadow: var(--rel-shadows-shadow-300);\n padding: 0;\n overflow: hidden;\n z-index: 1000;\n display: none;\n }\n\n .menubar-panel.open {\n display: block;\n }\n\n .menu-item {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--rel-spacing-space-sm);\n padding: var(--rel-spacing-space-xs) var(--rel-spacing-space-md);\n cursor: pointer;\n transition: background 0.15s ease;\n user-select: none;\n color: var(--rel-color-text-heading);\n line-height: var(--rel-lineHeights-sm);\n }\n\n .menu-item:hover,\n .menu-item.focused {\n background: var(--rel-color-bg-selected);\n }\n\n .menu-item[data-disabled=\"true\"] {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .menu-separator {\n height: var(--rel-borders-width-stroke-100);\n background: var(--rel-color-border-divider);\n margin: 0;\n padding: 0;\n }\n\n rel-icon {\n display: inline-flex;\n pointer-events: none;\n }\n\n .menu-submenu-trigger {\n position: relative;\n }\n\n .menu-submenu-trigger rel-icon {\n opacity: 0.6;\n }\n\n .submenu-panel {\n position: fixed;\n min-width: 200px;\n background: var(--rel-color-bg-primary);\n border: var(--rel-borders-width-stroke-100) solid var(--rel-color-border-default);\n border-radius: var(--rel-borders-radius-border-radius-200);\n box-shadow: var(--rel-shadows-shadow-300);\n padding: 0;\n overflow: hidden;\n z-index: 1001;\n display: none;\n }\n\n .submenu-panel.open {\n display: block;\n }\n\n .menu-shortcut {\n opacity: 0.6;\n font-size: var(--rel-fontSizes-xs);\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: var(--rel-spacing-space-3xs);\n }\n\n .menubar-panel rel-checkbox {\n display: block;\n width: 100%;\n padding: var(--rel-spacing-space-xs, 8px) var(--rel-spacing-space-md, 16px);\n box-sizing: border-box;\n cursor: pointer;\n }\n ";
529
+ createRenderRoot(): this;
394
530
  connectedCallback(): void;
395
531
  disconnectedCallback(): void;
532
+ private _repositionOpenSubmenu;
533
+ private _repositionOpenMenu;
396
534
  private discoverMenus;
397
535
  private handleOutsideClick;
398
536
  private closeAllMenus;
@@ -420,59 +558,6 @@ declare class RelMenubarMenu extends LitElement {
420
558
  render(): lit_html.TemplateResult<1>;
421
559
  }
422
560
 
423
- type DensityType$1 = "comfortable" | "compact";
424
- declare class RelNavMenu extends LitElement {
425
- open: string;
426
- disabled: boolean;
427
- density: DensityType$1;
428
- private items;
429
- private focusedIndex;
430
- private hoverSwitchEnabled;
431
- private container;
432
- static styles: lit.CSSResult;
433
- connectedCallback(): void;
434
- disconnectedCallback(): void;
435
- private discoverItems;
436
- private handleSlotChange;
437
- private handleOutsideClick;
438
- private handleNavItemClick;
439
- private handleNavItemHover;
440
- private openPanel;
441
- private closePanel;
442
- private handleKeyDown;
443
- private focusItem;
444
- render(): lit_html.TemplateResult<1>;
445
- }
446
-
447
- declare class RelNavMenuItem extends LitElement {
448
- label: string;
449
- href: string;
450
- itemId: string;
451
- disabled: boolean;
452
- icon: string;
453
- /** Promoted from @state so rel-nav-menu can read it as a property. */
454
- hasContent: boolean;
455
- /** Set by rel-nav-menu to open/close this item's panel. */
456
- open: boolean;
457
- static styles: lit.CSSResult;
458
- connectedCallback(): void;
459
- firstUpdated(): void;
460
- updated(changed: Map<string, any>): void;
461
- private updateHasContent;
462
- private handleSlotChange;
463
- private positionPanel;
464
- private handleTriggerClick;
465
- private handleTriggerMouseEnter;
466
- get triggerId(): string;
467
- get panelId(): string;
468
- render(): lit_html.TemplateResult<1>;
469
- }
470
-
471
- declare class RelNavMenuPanel extends LitElement {
472
- static styles: lit.CSSResult;
473
- render(): lit_html.TemplateResult<1>;
474
- }
475
-
476
561
  /**
477
562
  * @deprecated rel-navbar is deprecated and will be removed in a future release.
478
563
  * Use rel-topbar and its sub-components instead:
@@ -530,6 +615,30 @@ declare global {
530
615
  }
531
616
  }
532
617
 
618
+ declare class RelTopbarDropdown extends LitElement {
619
+ static styles: lit.CSSResult;
620
+ render(): lit_html.TemplateResult<1>;
621
+ }
622
+ declare global {
623
+ interface HTMLElementTagNameMap {
624
+ "rel-topbar-dropdown": RelTopbarDropdown;
625
+ }
626
+ }
627
+
628
+ declare class RelTopbarDropdownItem extends LitElement {
629
+ label: string;
630
+ href: string;
631
+ active: boolean;
632
+ static styles: lit.CSSResult;
633
+ private _handleClick;
634
+ render(): lit_html.TemplateResult<1>;
635
+ }
636
+ declare global {
637
+ interface HTMLElementTagNameMap {
638
+ "rel-topbar-dropdown-item": RelTopbarDropdownItem;
639
+ }
640
+ }
641
+
533
642
  type TopbarVariant = "customer" | "carrier";
534
643
  type TopbarForceLayout = "auto" | "desktop" | "tablet" | "mobile";
535
644
  /**
@@ -564,35 +673,23 @@ declare class RelTopbar extends LitElement {
564
673
  * 'auto' respects CSS media queries.
565
674
  */
566
675
  forceLayout: TopbarForceLayout;
676
+ private _overflowItems;
677
+ private _overflowCount;
678
+ private _overflowItemsData;
679
+ private _resizeObserver?;
680
+ private _resizeTimer?;
681
+ private _measuring;
682
+ private _lastNavWidth;
567
683
  static styles: lit.CSSResult;
684
+ firstUpdated(): void;
685
+ disconnectedCallback(): void;
686
+ private _measureNav;
568
687
  private onRouterSlotChange;
569
688
  private get layoutClass();
570
689
  private handleMenuToggle;
571
690
  render(): lit_html.TemplateResult<1>;
572
691
  }
573
692
 
574
- declare class RelTopbarDropdown extends LitElement {
575
- static styles: lit.CSSResult;
576
- render(): lit_html.TemplateResult<1>;
577
- }
578
- declare global {
579
- interface HTMLElementTagNameMap {
580
- "rel-topbar-dropdown": RelTopbarDropdown;
581
- }
582
- }
583
-
584
- declare class RelTopbarDropdownItem extends LitElement {
585
- label: string;
586
- href: string;
587
- static styles: lit.CSSResult;
588
- render(): lit_html.TemplateResult<1>;
589
- }
590
- declare global {
591
- interface HTMLElementTagNameMap {
592
- "rel-topbar-dropdown-item": RelTopbarDropdownItem;
593
- }
594
- }
595
-
596
693
  /**
597
694
  * `rel-topbar-item` — A navigation item within rel-topbar.
598
695
  *
@@ -661,6 +758,7 @@ declare class RelTopbarProfile extends LitElement {
661
758
  static styles: lit.CSSResult;
662
759
  render(): lit_html.TemplateResult<1>;
663
760
  private _renderAvatar;
761
+ private _avatarBg;
664
762
  private _renderCarrier;
665
763
  }
666
764
 
@@ -684,7 +782,6 @@ declare class RelOtp extends LitElement {
684
782
  showSeparator: boolean;
685
783
  size: "sm" | "md" | "lg";
686
784
  private cells;
687
- private focusedIndex;
688
785
  private hiddenInput?;
689
786
  private isUpdatingFromValue;
690
787
  static styles: lit.CSSResult;
@@ -715,31 +812,38 @@ declare global {
715
812
  }
716
813
  }
717
814
 
718
- type DensityType = "comfortable" | "compact";
719
- type VariantType = "default" | "icons";
720
815
  declare class RelPagination extends LitElement {
816
+ /** Layout type from Figma: extended (numbered pages), compact (prev/next + page text), count-text (range + nav) */
817
+ type: "extended" | "compact" | "count-text";
818
+ /** Controlled current page */
721
819
  page?: number;
820
+ /** Uncontrolled starting page */
722
821
  defaultPage: number;
822
+ /** Total number of pages */
723
823
  totalPages: number;
724
- siblingCount: number;
725
- boundaryCount: number;
824
+ /** Total items (used with perPage to auto-compute totalPages in count-text mode) */
825
+ totalItems: number;
826
+ /** Items per page (count-text mode) */
827
+ perPage: number;
828
+ /** Show "Viewing page X of Y" label below extended pagination */
829
+ showLabel: boolean;
726
830
  disabled: boolean;
727
- density: DensityType;
728
- variant: VariantType;
729
831
  hrefTemplate: string;
730
832
  ariaLabel: string;
731
833
  private currentPage;
732
834
  static styles: lit.CSSResult;
733
835
  connectedCallback(): void;
734
- updated(changedProperties: Map<string, any>): void;
836
+ updated(changedProperties: Map<string, unknown>): void;
735
837
  private get activePage();
736
- private generatePageItems;
838
+ private get computedTotalPages();
839
+ private generatePageNumbers;
737
840
  private handlePageChange;
738
- private getHref;
739
- private handleKeyDown;
740
- private renderPrevIcon;
741
- private renderNextIcon;
742
- private renderItem;
841
+ private renderChevronLeft;
842
+ private renderChevronRight;
843
+ private renderNavBtn;
844
+ private renderExtended;
845
+ private renderCompact;
846
+ private renderCountText;
743
847
  render(): lit_html.TemplateResult<1>;
744
848
  }
745
849
 
@@ -813,31 +917,6 @@ declare class RelProgress extends LitElement {
813
917
  render(): lit_html.TemplateResult<1>;
814
918
  }
815
919
 
816
- interface RadioOption {
817
- value: string;
818
- label: string;
819
- supportingText?: string;
820
- disabled?: boolean;
821
- error?: boolean;
822
- }
823
- declare class RelRadio extends LitElement {
824
- options: RadioOption[];
825
- name: string;
826
- selectedValue: string | null;
827
- disabled: boolean;
828
- value: string;
829
- checked: boolean;
830
- private _onChange;
831
- private _onTouched;
832
- static styles: lit.CSSResult;
833
- private onChange;
834
- registerOnChange(fn: (value: string) => void): void;
835
- registerOnTouched(fn: () => void): void;
836
- writeValue(value: string): void;
837
- private renderOption;
838
- render(): lit_html.TemplateResult<1>;
839
- }
840
-
841
920
  declare class RelResizableGroup extends LitElement {
842
921
  direction: "horizontal" | "vertical";
843
922
  private panels;
@@ -926,98 +1005,131 @@ declare class RelSegmentedButton extends LitElement {
926
1005
  type SelectState = "default" | "error" | "disabled";
927
1006
  type SelectSize = "small" | "medium" | "large";
928
1007
  type SelectBorder = "rounded" | "sharp";
1008
+ type SelectLabelStyle = "default" | "floating";
1009
+ interface SelectOptionObject {
1010
+ value: string;
1011
+ label?: string;
1012
+ supportingText?: string;
1013
+ }
1014
+ type SelectOption = string | SelectOptionObject;
929
1015
  declare class RelSelect extends LitElement {
930
1016
  label: string;
931
- options: string[];
1017
+ labelStyle: SelectLabelStyle;
1018
+ options: SelectOption[];
1019
+ /** Enables multi-select: selected values render as removable chips and options as checkboxes. */
1020
+ multiple: boolean;
1021
+ /** Selected value — single-select mode only. */
932
1022
  selected: string;
1023
+ /** Selected values — multi-select mode only. */
1024
+ selectedValues: string[];
933
1025
  state: SelectState;
934
1026
  supportingText: string;
935
1027
  size: SelectSize;
936
1028
  border: SelectBorder;
937
1029
  leftIcon: string;
938
1030
  rightIcon: string;
1031
+ placeholder: string;
1032
+ searchPlaceholder: string;
1033
+ selectAllLabel: string;
1034
+ /** Max selected chips shown before collapsing the rest into a "+N" badge. */
1035
+ maxVisibleChips: number;
1036
+ /** Hides the in-panel search field. Figma's "Single Option" dropdown has no search bar at all — use this for short, non-searchable lists. */
1037
+ noSearch: boolean;
1038
+ private open;
1039
+ private highlightedIndex;
1040
+ private panelStyle;
1041
+ private searchValue;
1042
+ private internalState;
1043
+ private triggerEl;
1044
+ private searchInputEl;
1045
+ private listboxEl;
1046
+ private uniqueId;
939
1047
  static styles: lit.CSSResult;
940
- private onChange;
1048
+ disconnectedCallback(): void;
1049
+ protected willUpdate(changed: PropertyValues<this>): void;
1050
+ private get normalizedOptions();
1051
+ /** Options matching the current search text (substring match, case-insensitive). */
1052
+ private get filteredOptions();
1053
+ private get hasValue();
1054
+ /** Icon size scales with the select's own size, matching the trigger. */
1055
+ private get iconSize();
1056
+ /** The search field uses "small" sizing for both small and medium select — only "large" select bumps it to "medium". */
1057
+ private get searchIconSize();
1058
+ private get selectAllStatus();
1059
+ private addGlobalListeners;
1060
+ private removeGlobalListeners;
1061
+ private onOutsidePointerDown;
1062
+ private onPageScroll;
1063
+ private emitChange;
1064
+ private openListbox;
1065
+ private closeListbox;
1066
+ private updatePosition;
1067
+ private selectSingleOption;
1068
+ private toggleMultiOption;
1069
+ private toggleSelectAll;
1070
+ private removeChip;
1071
+ private onTriggerClick;
1072
+ private onTriggerKeyDown;
1073
+ private onSearchInput;
1074
+ private onSearchKeyDown;
1075
+ private handleListNavigation;
1076
+ private renderChips;
941
1077
  render(): lit_html.TemplateResult<1>;
942
1078
  }
1079
+ declare global {
1080
+ interface HTMLElementTagNameMap {
1081
+ "rel-select": RelSelect;
1082
+ }
1083
+ }
943
1084
 
944
- type SheetSide = "top" | "right" | "bottom" | "left";
945
- type SheetSize = "sm" | "md" | "lg" | "xl";
946
- type SheetCloseReason = "trigger" | "close" | "overlay" | "escape" | "api";
947
- declare class RelSheet extends LitElement {
948
- open?: boolean;
949
- defaultOpen: boolean;
950
- disabled: boolean;
951
- modal: boolean;
952
- private internalOpen;
1085
+ type SkeletonShape = "line" | "circle" | "block";
1086
+ type SkeletonAnimation = "pulse" | "shimmer" | "none";
1087
+ declare class RelSkeleton extends LitElement {
1088
+ shape: SkeletonShape;
1089
+ lines: number;
1090
+ width: string;
1091
+ height: string;
1092
+ animation: SkeletonAnimation;
1093
+ loaded: boolean;
1094
+ protected updated(changed: Map<string, unknown>): void;
953
1095
  static styles: lit.CSSResult;
954
- connectedCallback(): void;
955
- updated(changed: Map<string, unknown>): void;
956
- private isControlled;
957
- get activeOpen(): boolean;
958
- setOpen(next: boolean, reason?: SheetCloseReason): void;
959
1096
  render(): lit_html.TemplateResult<1>;
960
1097
  }
961
- declare class RelSheetTrigger extends LitElement {
962
- static styles: lit.CSSResult;
963
- private getSheet;
964
- private handleClick;
965
- render(): lit_html.TemplateResult<1>;
1098
+ declare global {
1099
+ interface HTMLElementTagNameMap {
1100
+ "rel-skeleton": RelSkeleton;
1101
+ }
966
1102
  }
967
- declare class RelSheetContent extends LitElement {
968
- side: SheetSide;
969
- size: SheetSize;
970
- hideOverlay: boolean;
971
- closeOnOverlay: boolean;
972
- showClose: boolean;
973
- private panelElement;
1103
+
1104
+ type ModalSide = "top" | "bottom" | "center";
1105
+ declare class RelModal extends LitElement {
1106
+ open: boolean;
1107
+ side: ModalSide;
1108
+ title: string;
1109
+ description: string;
1110
+ dismissible: boolean;
1111
+ modal: boolean;
974
1112
  private overlayElement;
975
- private sheet;
976
1113
  private previousFocus;
977
1114
  private originalBodyOverflow;
978
1115
  private originalBodyPaddingRight;
979
- private isOpen;
980
1116
  static styles: lit.CSSResult;
981
1117
  connectedCallback(): void;
982
1118
  disconnectedCallback(): void;
983
- private findSheet;
984
- private handleSheetOpenChange;
1119
+ updated(changed: Map<string, unknown>): void;
985
1120
  private handleOpen;
986
1121
  private handleClose;
987
- private cleanup;
988
1122
  private lockScroll;
989
1123
  private unlockScroll;
990
- private focusPanel;
991
- private getFocusableElements;
992
1124
  private handleKeydown;
993
1125
  private handleOverlayClick;
994
- private handleCloseClick;
995
- private getSizeValue;
996
- private getTitle;
997
- private getDescription;
998
- render(): lit_html.TemplateResult<1>;
999
- }
1000
- declare class RelSheetHeader extends LitElement {
1001
- static styles: lit.CSSResult;
1002
- render(): lit_html.TemplateResult<1>;
1003
- }
1004
- declare class RelSheetFooter extends LitElement {
1005
- static styles: lit.CSSResult;
1006
- render(): lit_html.TemplateResult<1>;
1007
- }
1008
- declare class RelSheetTitle extends LitElement {
1009
- static styles: lit.CSSResult;
1010
- render(): lit_html.TemplateResult<1>;
1011
- }
1012
- declare class RelSheetDescription extends LitElement {
1013
- static styles: lit.CSSResult;
1126
+ private handleCloseButtonClick;
1014
1127
  render(): lit_html.TemplateResult<1>;
1015
1128
  }
1016
- declare class RelSheetClose extends LitElement {
1017
- static styles: lit.CSSResult;
1018
- private getSheet;
1019
- private handleClick;
1020
- render(): lit_html.TemplateResult<1>;
1129
+ declare global {
1130
+ interface HTMLElementTagNameMap {
1131
+ "rel-modal": RelModal;
1132
+ }
1021
1133
  }
1022
1134
 
1023
1135
  type SliderType = "continuous" | "discrete";
@@ -1075,7 +1187,7 @@ declare class RelSnackbar extends LitElement {
1075
1187
  private clearDismissTimer;
1076
1188
  private onActionClick;
1077
1189
  private dismiss;
1078
- private getIcon;
1190
+ private renderIcon;
1079
1191
  render(): lit_html.TemplateResult<1>;
1080
1192
  }
1081
1193
 
@@ -1148,6 +1260,7 @@ declare class RelTab extends LitElement {
1148
1260
 
1149
1261
  type TextFieldState = "default" | "error" | "disabled";
1150
1262
  type TextFieldSize = "small" | "medium" | "large";
1263
+ type TextFieldVariant = "default" | "underline";
1151
1264
  declare class RelTextfield extends LitElement {
1152
1265
  label?: string;
1153
1266
  placeholder: string;
@@ -1158,9 +1271,13 @@ declare class RelTextfield extends LitElement {
1158
1271
  supportingText?: string;
1159
1272
  state: TextFieldState;
1160
1273
  size: TextFieldSize;
1274
+ floatingLabel: boolean;
1275
+ variant: TextFieldVariant;
1161
1276
  private internalState;
1277
+ private _wasError;
1162
1278
  private uniqueId;
1163
1279
  static styles: lit.CSSResult;
1280
+ connectedCallback(): void;
1164
1281
  private handleFocus;
1165
1282
  private handleBlur;
1166
1283
  private handleInput;
@@ -1197,4 +1314,4 @@ declare class RelTooltip extends LitElement {
1197
1314
  render(): lit_html.TemplateResult<1>;
1198
1315
  }
1199
1316
 
1200
- export { type BreadcrumbItem, type DrawerCloseReason, type DrawerSide, type MenuItem, type MenuType, type Orientation, type OtpType, type ProgressMode, type RadioOption, RelAccordion, RelAlert, RelAvatar, RelBadge, RelBreadcrumbs, RelButton, RelCalendar, RelCard, RelCardMedia, RelCarousel, RelCheckbox, RelChip, RelContainer, RelDatePicker, RelDivider, RelDrawer, RelDrawerFooter, RelKbd, RelLayout, RelMenu, RelMenuItem, RelMenubar, RelMenubarMenu, RelNavMenu, RelNavMenuItem, RelNavMenuPanel, RelNavbar, RelOtp, RelPagination, RelPopover, RelPopoverContent, RelProgress, RelRadio, RelResizableGroup, RelResizableHandle, RelResizablePanel, RelSegmentedButton, RelSelect, RelSheet, RelSheetClose, RelSheetContent, RelSheetDescription, RelSheetFooter, RelSheetHeader, RelSheetTitle, RelSheetTrigger, RelSlider, RelSnackbar, RelStepper, RelSwitch, RelTab, RelTabItem, RelTextfield, RelToast, RelTooltip, RelTopbar, RelTopbarActions, RelTopbarBrand, RelTopbarDropdown, RelTopbarDropdownItem, RelTopbarItem, RelTopbarMobilePanel, RelTopbarProfile, RelTopbarUtilities, type SegmentAlign, type SegmentOption, type SegmentSize, type SelectBorder, type SelectSize, type SelectState, type SheetCloseReason, type SheetSide, type SheetSize, type SliderType, type SnackbarLines, type SnackbarType, type Step, type StepStatus, type StepperSize, type TabItem, type TextAlign, type TextFieldSize, type TextFieldState, type ToastType, type TooltipPosition, type TopbarForceLayout, type TopbarProfileType, type TopbarRewardTier, type TopbarVariant, type TrackStyle };
1317
+ export { type BreadcrumbItem, type ChipBorder, type ChipSize, type ChipTone, type ChipVariant, type DrawerCloseReason, type DrawerSide, type MenuItem, type MenuType, type ModalSide, type Orientation, type OtpType, type ProgressMode, type RadioOption, RelAccordion, RelAlert, RelAvatar, RelBadge, RelBreadcrumbs, RelButton, RelCalendar, RelCard, RelCardMedia, RelCarousel, RelCheckbox, RelChip, RelContainer, RelDatePicker, RelDivider, RelDrawer, RelDrawerFooter, RelKbd, RelLayout, RelMenu, RelMenuItem, RelMenubar, RelMenubarMenu, RelModal, RelNavbar, RelOtp, RelPagination, RelPopover, RelPopoverContent, RelProgress, RelRadio, RelRangePicker, RelResizableGroup, RelResizableHandle, RelResizablePanel, RelSegmentedButton, RelSelect, RelSkeleton, RelSlider, RelSnackbar, RelStepper, RelSwitch, RelTab, RelTabItem, RelTextfield, RelToast, RelTooltip, RelTopbar, RelTopbarActions, RelTopbarBrand, RelTopbarDropdown, RelTopbarDropdownItem, RelTopbarItem, RelTopbarMobilePanel, RelTopbarProfile, RelTopbarUtilities, type SegmentAlign, type SegmentOption, type SegmentSize, type SelectBorder, type SelectLabelStyle, type SelectOption, type SelectOptionObject, type SelectSize, type SelectState, type SkeletonAnimation, type SkeletonShape, type SliderType, type SnackbarLines, type SnackbarType, type Step, type StepStatus, type StepperSize, type TabItem, type TextAlign, type TextFieldSize, type TextFieldState, type TextFieldVariant, type ToastType, type TooltipPosition, type TopbarForceLayout, type TopbarProfileType, type TopbarRewardTier, type TopbarVariant, type TrackStyle };