@reliability-design/web 1.3.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/rel-accordion/README.md +13 -13
- package/dist/components/rel-accordion/rel-accordion.ts +80 -45
- package/dist/components/rel-alert/README.md +15 -15
- package/dist/components/rel-alert/rel-alert.ts +153 -158
- package/dist/components/rel-avatar/README.md +15 -15
- package/dist/components/rel-avatar/rel-avatar.ts +42 -38
- package/dist/components/rel-badge/README.md +5 -5
- package/dist/components/rel-badge/rel-badge.ts +46 -11
- package/dist/components/rel-breadcrumb/README.md +7 -7
- package/dist/components/rel-breadcrumb/rel-breadcrumb.ts +16 -13
- package/dist/components/rel-button/README.md +20 -20
- package/dist/components/rel-button/rel-button.ts +292 -105
- package/dist/components/rel-calendar/README.md +5 -5
- package/dist/components/rel-calendar/rel-calendar.ts +61 -45
- package/dist/components/rel-card/README.md +6 -6
- package/dist/components/rel-card/rel-card.ts +88 -35
- package/dist/components/rel-cardmedia/README.md +9 -9
- package/dist/components/rel-cardmedia/rel-cardmedia.ts +27 -20
- package/dist/components/rel-carousel/README.md +3 -3
- package/dist/components/rel-carousel/rel-carousel.ts +174 -90
- package/dist/components/rel-chart/README.md +8 -8
- package/dist/components/rel-chart/rel-chart.ts +59 -41
- package/dist/components/rel-checkbox/README.md +7 -7
- package/dist/components/rel-checkbox/rel-checkbox.ts +61 -61
- package/dist/components/rel-chip/README.md +16 -16
- package/dist/components/rel-chip/rel-chip.ts +143 -111
- package/dist/components/rel-container/README.md +11 -11
- package/dist/components/rel-container/rel-container.ts +35 -9
- package/dist/components/rel-date-picker/README.md +43 -7
- package/dist/components/rel-date-picker/date-format.test.ts +43 -0
- package/dist/components/rel-date-picker/date-format.ts +47 -0
- package/dist/components/rel-date-picker/rel-date-picker.ts +154 -82
- package/dist/components/rel-divider/README.md +9 -9
- package/dist/components/rel-divider/rel-divider.ts +10 -9
- package/dist/components/rel-drawer/README.md +1 -1
- package/dist/components/rel-drawer/rel-drawer-footer.ts +1 -1
- package/dist/components/rel-drawer/rel-drawer.ts +56 -28
- package/dist/components/rel-kbd/README.md +20 -20
- package/dist/components/rel-kbd/rel-kbd.ts +119 -25
- package/dist/components/rel-layout/README.md +1 -1
- package/dist/components/rel-layout/rel-layout.ts +2 -2
- package/dist/components/rel-menu/README.md +15 -15
- package/dist/components/rel-menu/rel-menu.ts +155 -88
- package/dist/components/rel-menubar/README.md +20 -20
- package/dist/components/rel-menubar/rel-menubar.ts +47 -31
- package/dist/components/rel-nav-menu/README.md +21 -21
- package/dist/components/rel-nav-menu/rel-nav-menu-item.ts +17 -14
- package/dist/components/rel-nav-menu/rel-nav-menu-panel.ts +33 -14
- package/dist/components/rel-nav-menu/rel-nav-menu.ts +14 -7
- package/dist/components/rel-navbar/README.md +7 -7
- package/dist/components/rel-navbar/rel-navbar.ts +12 -11
- package/dist/components/rel-otp/README.md +3 -3
- package/dist/components/rel-otp/rel-otp.ts +46 -30
- package/dist/components/rel-pagination/README.md +18 -18
- package/dist/components/rel-pagination/rel-pagination.ts +141 -90
- package/dist/components/rel-popover/README.md +13 -13
- package/dist/components/rel-popover/rel-popover-content.ts +39 -14
- package/dist/components/rel-popover/rel-popover.ts +18 -7
- package/dist/components/rel-progress/README.md +5 -5
- package/dist/components/rel-progress/rel-progress.ts +16 -12
- package/dist/components/rel-radio/README.md +9 -9
- package/dist/components/rel-radio/rel-radio.ts +64 -50
- package/dist/components/rel-range-picker/rel-range-picker.ts +120 -117
- package/dist/components/rel-resizable/README.md +4 -4
- package/dist/components/rel-resizable/rel-resizable-group.ts +15 -4
- package/dist/components/rel-resizable/rel-resizable-handle.ts +13 -9
- package/dist/components/rel-resizable/rel-resizable-panel.ts +11 -0
- package/dist/components/rel-segmented-button/README.md +10 -10
- package/dist/components/rel-segmented-button/rel-segmented-button.ts +39 -40
- package/dist/components/rel-select/README.md +14 -14
- package/dist/components/rel-select/rel-select.ts +120 -188
- package/dist/components/rel-sheet/README.md +10 -10
- package/dist/components/rel-sheet/rel-sheet.ts +82 -23
- package/dist/components/rel-sidebar/README.md +5 -5
- package/dist/components/rel-sidebar/rel-sidebar.ts +75 -60
- package/dist/components/rel-skeleton/rel-skeleton.ts +8 -13
- package/dist/components/rel-slider/README.md +10 -10
- package/dist/components/rel-slider/rel-slider.ts +230 -57
- package/dist/components/rel-snackbar/README.md +9 -9
- package/dist/components/rel-snackbar/rel-snackbar.ts +44 -32
- package/dist/components/rel-stepper/README.md +10 -10
- package/dist/components/rel-stepper/rel-stepper.ts +110 -46
- package/dist/components/rel-switch/README.md +5 -5
- package/dist/components/rel-switch/rel-switch.ts +23 -12
- package/dist/components/rel-tab/README.md +13 -13
- package/dist/components/rel-tab/rel-tab.ts +63 -19
- package/dist/components/rel-table/README.md +7 -7
- package/dist/components/rel-table/rel-table-body.ts +2 -1
- package/dist/components/rel-table/rel-table-caption.ts +10 -7
- package/dist/components/rel-table/rel-table-cell.ts +7 -6
- package/dist/components/rel-table/rel-table-footer.ts +4 -3
- package/dist/components/rel-table/rel-table-head.ts +11 -9
- package/dist/components/rel-table/rel-table-header.ts +2 -1
- package/dist/components/rel-table/rel-table-row.ts +5 -4
- package/dist/components/rel-table/rel-table.ts +16 -7
- package/dist/components/rel-textfield/README.md +11 -11
- package/dist/components/rel-textfield/rel-textfield.ts +172 -91
- package/dist/components/rel-toast/README.md +11 -11
- package/dist/components/rel-toast/rel-toast.ts +33 -30
- package/dist/components/rel-tooltip/README.md +7 -7
- package/dist/components/rel-tooltip/rel-tooltip.ts +160 -123
- package/dist/components/rel-topbar/rel-topbar-actions.ts +1 -2
- package/dist/components/rel-topbar/rel-topbar-brand.ts +8 -5
- package/dist/components/rel-topbar/rel-topbar-dropdown-item.ts +10 -8
- package/dist/components/rel-topbar/rel-topbar-dropdown.ts +4 -5
- package/dist/components/rel-topbar/rel-topbar-item.ts +23 -22
- package/dist/components/rel-topbar/rel-topbar-mobile-panel.ts +0 -1
- package/dist/components/rel-topbar/rel-topbar-profile.ts +68 -50
- package/dist/components/rel-topbar/rel-topbar-utilities.ts +1 -2
- package/dist/components/rel-topbar/rel-topbar.ts +31 -29
- package/dist/index.d.mts +151 -39
- package/dist/index.d.ts +151 -39
- package/dist/index.js +3544 -2289
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3876 -2622
- package/dist/index.mjs.map +1 -1
- package/dist/styles/vars.css +653 -363
- package/dist/vars-WY2XCF5G.css +653 -0
- package/package.json +3 -2
- package/dist/components/rel-range-picker/rel-range-picker.css +0 -349
- package/dist/styles/vars-v2.css +0 -525
- package/dist/vars-F54UGCHM.css +0 -363
- package/dist/vars-v2-VMGWTFJZ.css +0 -525
package/dist/index.d.mts
CHANGED
|
@@ -8,6 +8,8 @@ declare class RelAccordion extends LitElement {
|
|
|
8
8
|
open: boolean;
|
|
9
9
|
size: "md" | "sm";
|
|
10
10
|
type: "default" | "action";
|
|
11
|
+
/** Figma "Style" axis — named appearance because `style` collides with the HTML style attribute. */
|
|
12
|
+
appearance: "shadow" | "plain";
|
|
11
13
|
static styles: lit.CSSResult;
|
|
12
14
|
private toggle;
|
|
13
15
|
render(): lit_html.TemplateResult<1>;
|
|
@@ -15,6 +17,8 @@ declare class RelAccordion extends LitElement {
|
|
|
15
17
|
|
|
16
18
|
declare class RelAlert extends LitElement {
|
|
17
19
|
type: "info" | "success" | "warning" | "error" | "neutral";
|
|
20
|
+
/** Visual treatment (Figma "Style"): solid | subtle | outline. "filled" is a deprecated alias of solid. */
|
|
21
|
+
appearance: "solid" | "subtle" | "outline" | "filled";
|
|
18
22
|
message1: string;
|
|
19
23
|
message2?: string;
|
|
20
24
|
urlText?: string;
|
|
@@ -23,7 +27,7 @@ declare class RelAlert extends LitElement {
|
|
|
23
27
|
dismissed: boolean;
|
|
24
28
|
static styles: lit.CSSResult;
|
|
25
29
|
private dismissAlert;
|
|
26
|
-
private get
|
|
30
|
+
private get iconTemplate();
|
|
27
31
|
render(): lit_html.TemplateResult<1>;
|
|
28
32
|
}
|
|
29
33
|
|
|
@@ -44,7 +48,7 @@ declare class RelBadge extends LitElement {
|
|
|
44
48
|
number: string;
|
|
45
49
|
ariaLabel: string;
|
|
46
50
|
suffix: string;
|
|
47
|
-
size: "sm" | "md" | "lg";
|
|
51
|
+
size: "sm" | "md" | "lg" | "xl";
|
|
48
52
|
variant: "dot" | "number";
|
|
49
53
|
/**
|
|
50
54
|
* Direct CSS color override for the badge background. Accepts any valid
|
|
@@ -76,9 +80,27 @@ declare class RelBreadcrumbs extends LitElement {
|
|
|
76
80
|
render(): lit_html.TemplateResult<1>;
|
|
77
81
|
}
|
|
78
82
|
|
|
83
|
+
/**
|
|
84
|
+
* Style axis. Canonical values are the historical ones; "outline"/"ghost" are
|
|
85
|
+
* accepted Figma-vocabulary aliases for "secondary"/"text". "static" is the
|
|
86
|
+
* Figma Style=Static treatment (transparent, static-light label — for use on
|
|
87
|
+
* colored/dark surfaces). Legacy "icon" is the pre-2.0 collapsed icon-button
|
|
88
|
+
* variant and keeps its exact behavior; prefer icon-only + a style instead.
|
|
89
|
+
*/
|
|
90
|
+
type ButtonVariant = "default" | "primary" | "secondary" | "text" | "link" | "icon" | "static" | "outline" | "ghost";
|
|
91
|
+
/** Tone axis. "neutral"/"brand"/"danger" are Figma-vocabulary aliases. */
|
|
92
|
+
type ButtonTone = "default" | "primary" | "secondary" | "critical" | "success" | "neutral" | "brand" | "danger";
|
|
79
93
|
declare class RelButton extends LitElement {
|
|
80
|
-
variant:
|
|
81
|
-
tone:
|
|
94
|
+
variant: ButtonVariant;
|
|
95
|
+
tone: ButtonTone;
|
|
96
|
+
/**
|
|
97
|
+
* Figma "Type=Icon Only" as an independent axis: a square button of the
|
|
98
|
+
* current style/tone. Unlike legacy variant="icon", this composes with
|
|
99
|
+
* every style (outline/ghost/link included).
|
|
100
|
+
*/
|
|
101
|
+
iconOnly: boolean;
|
|
102
|
+
/** Figma "State=Loading": shows a spinner, blocks interaction. */
|
|
103
|
+
loading: boolean;
|
|
82
104
|
size: "small" | "medium" | "large";
|
|
83
105
|
border: "corner-radius" | "small-corner-radius" | "no-corner-radius";
|
|
84
106
|
disabled: boolean;
|
|
@@ -91,6 +113,10 @@ declare class RelButton extends LitElement {
|
|
|
91
113
|
connectedCallback(): void;
|
|
92
114
|
disconnectedCallback(): void;
|
|
93
115
|
private handleHostClick;
|
|
116
|
+
/** Style axis with Figma-vocabulary aliases folded onto canonical values. */
|
|
117
|
+
private get styleVariant();
|
|
118
|
+
/** Tone axis with Figma-vocabulary aliases folded onto canonical values. */
|
|
119
|
+
private get effectiveTone();
|
|
94
120
|
private get classes();
|
|
95
121
|
private handleClick;
|
|
96
122
|
render(): lit_html.TemplateResult<1>;
|
|
@@ -125,6 +151,12 @@ declare class RelCalendar extends LitElement {
|
|
|
125
151
|
}
|
|
126
152
|
|
|
127
153
|
declare class RelCard extends LitElement {
|
|
154
|
+
/**
|
|
155
|
+
* Figma "Type" axis: custom (default) renders slotted content with card
|
|
156
|
+
* padding; media adds a flush media region (slot name="media") above the
|
|
157
|
+
* content — pair it with <rel-card-media>.
|
|
158
|
+
*/
|
|
159
|
+
type: "custom" | "media";
|
|
128
160
|
static styles: lit.CSSResult;
|
|
129
161
|
render(): lit_html.TemplateResult<1>;
|
|
130
162
|
}
|
|
@@ -137,6 +169,13 @@ declare class RelCarousel extends LitElement {
|
|
|
137
169
|
pauseOnHover: boolean;
|
|
138
170
|
showButtons: boolean;
|
|
139
171
|
showDots: boolean;
|
|
172
|
+
/**
|
|
173
|
+
* Figma "Type" axis. When set it drives which controls render:
|
|
174
|
+
* default = content only · only-indicators = dots · side-arrows = overlaid
|
|
175
|
+
* arrows + dots · bottom-arrows = dots flanked by arrows below the slide.
|
|
176
|
+
* When unset, the legacy show-buttons/show-dots booleans apply unchanged.
|
|
177
|
+
*/
|
|
178
|
+
type?: "default" | "only-indicators" | "side-arrows" | "bottom-arrows";
|
|
140
179
|
orientation: "horizontal" | "vertical";
|
|
141
180
|
label: string;
|
|
142
181
|
gap?: number;
|
|
@@ -160,6 +199,9 @@ declare class RelCarousel extends LitElement {
|
|
|
160
199
|
firstUpdated(): void;
|
|
161
200
|
disconnectedCallback(): void;
|
|
162
201
|
private handleSlotChange;
|
|
202
|
+
private get vertical();
|
|
203
|
+
/** Translate along the orientation axis. */
|
|
204
|
+
private axisTransform;
|
|
163
205
|
private unit;
|
|
164
206
|
private updateTransform;
|
|
165
207
|
private goToPrevious;
|
|
@@ -176,6 +218,10 @@ declare class RelCarousel extends LitElement {
|
|
|
176
218
|
private handleMouseEnter;
|
|
177
219
|
private handleMouseLeave;
|
|
178
220
|
updated(changedProperties: Map<string, any>): void;
|
|
221
|
+
/** Where nav arrows render, honouring the Figma type when set. */
|
|
222
|
+
private get buttonPlacement();
|
|
223
|
+
private get dotsVisible();
|
|
224
|
+
private renderNavButton;
|
|
179
225
|
render(): lit_html.TemplateResult<1>;
|
|
180
226
|
}
|
|
181
227
|
|
|
@@ -223,6 +269,13 @@ declare class RelDatePicker extends LitElement {
|
|
|
223
269
|
max: string | null;
|
|
224
270
|
weekStart: "sun" | "mon";
|
|
225
271
|
locale: string;
|
|
272
|
+
displayFormat: string | null;
|
|
273
|
+
/**
|
|
274
|
+
* Full control over the selected-value display; wins over `displayFormat`.
|
|
275
|
+
* Reactive (attribute:false) so assigning it after render re-renders the
|
|
276
|
+
* trigger — frameworks set callbacks as properties post-creation.
|
|
277
|
+
*/
|
|
278
|
+
formatDate?: (date: Date) => string;
|
|
226
279
|
open: boolean;
|
|
227
280
|
closeOnSelect: boolean;
|
|
228
281
|
clearable: boolean;
|
|
@@ -375,7 +428,7 @@ declare global {
|
|
|
375
428
|
}
|
|
376
429
|
|
|
377
430
|
declare class RelContainer extends LitElement {
|
|
378
|
-
padding: "sm" | "md" | "lg";
|
|
431
|
+
padding: "sm" | "md" | "lg" | "xl";
|
|
379
432
|
shadow: boolean;
|
|
380
433
|
background: "light" | "white" | "none";
|
|
381
434
|
static styles: lit.CSSResult;
|
|
@@ -460,6 +513,20 @@ declare class RelKbd extends LitElement {
|
|
|
460
513
|
static styles: lit.CSSResult;
|
|
461
514
|
render(): lit_html.TemplateResult<1>;
|
|
462
515
|
}
|
|
516
|
+
/**
|
|
517
|
+
* Multi-key shortcut (Figma Kbd Items=1/2/3/4): renders one <rel-kbd> per
|
|
518
|
+
* entry in `items` with "+" separators between them. Slotted <rel-kbd>
|
|
519
|
+
* children may be used instead of the items array.
|
|
520
|
+
*
|
|
521
|
+
* <rel-kbd-group .items=${["Ctrl", "Shift", "P"]} size="md"></rel-kbd-group>
|
|
522
|
+
*/
|
|
523
|
+
declare class RelKbdGroup extends LitElement {
|
|
524
|
+
items: string[];
|
|
525
|
+
size: "sm" | "md" | "lg";
|
|
526
|
+
variant: "default" | "muted";
|
|
527
|
+
static styles: lit.CSSResult;
|
|
528
|
+
render(): lit_html.TemplateResult<1>;
|
|
529
|
+
}
|
|
463
530
|
|
|
464
531
|
declare class RelLayout extends LitElement {
|
|
465
532
|
gap: string;
|
|
@@ -470,7 +537,34 @@ declare class RelLayout extends LitElement {
|
|
|
470
537
|
render(): lit_html.TemplateResult<1>;
|
|
471
538
|
}
|
|
472
539
|
|
|
473
|
-
|
|
540
|
+
interface RadioOption {
|
|
541
|
+
value: string;
|
|
542
|
+
label: string;
|
|
543
|
+
supportingText?: string;
|
|
544
|
+
disabled?: boolean;
|
|
545
|
+
}
|
|
546
|
+
declare class RelRadio extends LitElement {
|
|
547
|
+
options: RadioOption[];
|
|
548
|
+
name: string;
|
|
549
|
+
selectedValue: string | null;
|
|
550
|
+
disabled: boolean;
|
|
551
|
+
error: boolean;
|
|
552
|
+
errorMessage: string;
|
|
553
|
+
value: string;
|
|
554
|
+
checked: boolean;
|
|
555
|
+
private _onChange;
|
|
556
|
+
private _onTouched;
|
|
557
|
+
static styles: lit.CSSResult;
|
|
558
|
+
private onChange;
|
|
559
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
560
|
+
registerOnTouched(fn: () => void): void;
|
|
561
|
+
writeValue(value: string): void;
|
|
562
|
+
private get hasSelection();
|
|
563
|
+
private renderOption;
|
|
564
|
+
render(): lit_html.TemplateResult<1>;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
type MenuType = "default" | "checkbox" | "arrow" | "select-option" | "fixed" | "fit";
|
|
474
568
|
interface MenuItem {
|
|
475
569
|
label: string;
|
|
476
570
|
active?: boolean;
|
|
@@ -492,49 +586,23 @@ declare class RelMenu extends LitElement {
|
|
|
492
586
|
items: MenuItem[];
|
|
493
587
|
private focusedIndex;
|
|
494
588
|
private _items;
|
|
495
|
-
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-
|
|
589
|
+
static readonly _css = "\n :host {\n color: var(--rel-text-default);\n display: inline-block;\n }\n\n .rel-menu {\n position: relative;\n display: inline-block;\n background: var(--rel-bg-neutral);\n color: var(--rel-text-default);\n border-radius: var(--rel-border-radius-md);\n box-shadow: var(--rel-shadows-shadow-300);\n min-width: 220px;\n /* No vertical padding: items fill edge-to-edge so a first/last-item hover\n reaches the menu's top/bottom. NOT overflow:hidden \u2014 that clips the\n type=arrow flyout (position:absolute at left:100%). Instead the first\n and last items carry the outer corner radius so hover backgrounds clip\n to the rounded shape without any overflow. */\n padding: 0;\n outline: none;\n overflow: visible;\n font-family: var(--rel-body-lg-regular-font-family);\n font-weight: var(--rel-body-lg-regular-font-weight);\n font-size: var(--rel-body-lg-regular-font-size);\n line-height: var(--rel-body-lg-regular-line-height);\n letter-spacing: var(--rel-body-lg-regular-letter-spacing);\n }\n\n .rel-menu:focus-visible,\n :host(:focus-visible) .rel-menu {\n outline: 2px solid var(--rel-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-xs);\n padding: var(--rel-spacing-xs) var(--rel-spacing-sm);\n line-height: var(--rel-body-sm-regular-line-height);\n cursor: pointer;\n transition: background 0.15s ease, color 0.15s ease;\n user-select: none;\n }\n\n /* First/last items carry the menu's outer radius so their hover fill clips\n to the rounded corners (replaces the removed overflow:hidden). */\n .rel-menu > .rel-menu-item:first-child {\n border-top-left-radius: var(--rel-border-radius-md);\n border-top-right-radius: var(--rel-border-radius-md);\n }\n\n .rel-menu > .rel-menu-item:last-child {\n border-bottom-left-radius: var(--rel-border-radius-md);\n border-bottom-right-radius: var(--rel-border-radius-md);\n }\n\n .rel-menu-item:hover {\n background: var(--rel-bg-neutral-elevated-1);\n }\n\n .rel-menu-item:active {\n background: var(--rel-bg-neutral-elevated-1);\n }\n\n .rel-menu-item.active {\n background: var(--rel-bg-neutral-elevated-2);\n font-weight: var(--rel-body-lg-medium-font-weight);\n }\n\n .rel-menu-item.disabled {\n background-color: transparent;\n color: var(--rel-text-disabled);\n /* Keep the item pointer-interactive so cursor:not-allowed actually\n renders; clicks are already neutralised by the item.disabled guard in\n onItemClick/onItemEnter. pointer-events:none here would make the row\n transparent to the pointer and suppress the cursor. */\n cursor: not-allowed;\n }\n\n .rel-menu-item[data-focused=\"true\"] {\n outline: 2px solid var(--rel-border-focus);\n outline-offset: -2px;\n }\n\n /* Width modes (Figma Type=Fixed / Type=Fit) */\n .rel-menu.fixed {\n width: var(--rel-menu-width, 300px);\n min-width: 0;\n box-sizing: border-box;\n }\n\n .rel-menu.fit {\n min-width: 0;\n width: max-content;\n }\n\n /* Checkbox (Type=Checkbox) / radio (Type=Select Option) rows render the real\n rel-checkbox / rel-radio. pointer-events:none keeps the whole row the click\n target so onItemClick stays the single source of truth. */\n .menu-control {\n pointer-events: none;\n width: 100%;\n }\n\n .menu-label {\n flex: 1 1 auto;\n }\n\n /* Submenu affordance \u2014 same rel-icon chevron the menubar uses. */\n .submenu-chevron {\n margin-left: auto;\n display: inline-flex;\n align-items: center;\n opacity: 0.6;\n pointer-events: none;\n }\n\n /* Shortcut / hint text (Figma body-sm-regular, caption tone) */\n .menu-shortcut,\n ::slotted([slot=\"shortcut\"]) {\n font-family: var(--rel-body-sm-regular-font-family);\n font-weight: var(--rel-body-sm-regular-font-weight);\n font-size: var(--rel-body-sm-regular-font-size);\n line-height: var(--rel-body-sm-regular-line-height);\n letter-spacing: var(--rel-body-sm-regular-letter-spacing);\n color: var(--rel-text-caption);\n margin-left: auto;\n padding-left: var(--rel-spacing-md);\n }\n\n \n .rel-submenu {\n border: 1px solid var(--rel-border-subtle);\n position: absolute;\n top: calc(-1 * var(--rel-spacing-3xs));\n /* flush against the trigger (no gap) so moving the pointer into the flyout\n never crosses a dead zone that would fire the trigger's mouseleave */\n left: 100%;\n min-width: 200px;\n background: var(--rel-bg-neutral);\n color: var(--rel-text-default);\n border-radius: var(--rel-border-radius-md);\n box-shadow: var(--rel-shadows-shadow-300);\n /* padding:0 + overflow:hidden \u2014 safe here (a submenu has no further nested\n flyout to clip) \u2014 so sub-item hovers fill fully and clip to the corners */\n padding: 0;\n overflow: hidden;\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-xs) var(--rel-spacing-sm);\n }\n ";
|
|
496
590
|
createRenderRoot(): this;
|
|
497
591
|
connectedCallback(): void;
|
|
498
592
|
disconnectedCallback(): void;
|
|
499
593
|
updated(changedProperties: Map<string, unknown>): void;
|
|
594
|
+
/** Index of a submenu locked open by a click (survives hover-out). -1 = none. */
|
|
595
|
+
private lockedIndex;
|
|
500
596
|
private handleDocumentClick;
|
|
501
597
|
private onItemEnter;
|
|
502
598
|
private onItemLeave;
|
|
503
599
|
private onItemClick;
|
|
504
600
|
private onSubClick;
|
|
505
|
-
private toggleCheckbox;
|
|
506
601
|
private onKeydown;
|
|
507
602
|
private renderMenuItem;
|
|
508
603
|
render(): lit_html.TemplateResult<1>;
|
|
509
604
|
}
|
|
510
605
|
|
|
511
|
-
interface RadioOption {
|
|
512
|
-
value: string;
|
|
513
|
-
label: string;
|
|
514
|
-
supportingText?: string;
|
|
515
|
-
disabled?: boolean;
|
|
516
|
-
}
|
|
517
|
-
declare class RelRadio extends LitElement {
|
|
518
|
-
options: RadioOption[];
|
|
519
|
-
name: string;
|
|
520
|
-
selectedValue: string | null;
|
|
521
|
-
disabled: boolean;
|
|
522
|
-
error: boolean;
|
|
523
|
-
errorMessage: string;
|
|
524
|
-
value: string;
|
|
525
|
-
checked: boolean;
|
|
526
|
-
private _onChange;
|
|
527
|
-
private _onTouched;
|
|
528
|
-
static styles: lit.CSSResult;
|
|
529
|
-
private onChange;
|
|
530
|
-
registerOnChange(fn: (value: string) => void): void;
|
|
531
|
-
registerOnTouched(fn: () => void): void;
|
|
532
|
-
writeValue(value: string): void;
|
|
533
|
-
private get hasSelection();
|
|
534
|
-
private renderOption;
|
|
535
|
-
render(): lit_html.TemplateResult<1>;
|
|
536
|
-
}
|
|
537
|
-
|
|
538
606
|
declare class RelMenubar extends LitElement {
|
|
539
607
|
private menus;
|
|
540
608
|
private openMenuIndex;
|
|
@@ -543,7 +611,7 @@ declare class RelMenubar extends LitElement {
|
|
|
543
611
|
private openSubmenuElement;
|
|
544
612
|
private hoverSwitchEnabled;
|
|
545
613
|
private _onScroll?;
|
|
546
|
-
static readonly _css = "\n :host {\n display: block;\n }\n\n
|
|
614
|
+
static readonly _css = "\n /* This component renders into LIGHT DOM (createRenderRoot returns this), so\n :host / <slot> don't work here \u2014 the raw <rel-menubar-menu> definitions\n are data holders that must be hidden with a plain selector. Relying on the\n global rel-menubar-menu.css is not enough: it can't cross a consumer's\n shadow boundary AND it's a no-op in the tsup-built package (css:\"copy\"). */\n rel-menubar {\n color: var(--rel-text-default);\n display: block;\n }\n\n rel-menubar-menu {\n display: none;\n }\n\n .menubar-container {\n display: flex;\n align-items: stretch;\n background: var(--rel-bg-surface-elevated);\n border: var(--rel-stroke-sm) solid var(--rel-border-default);\n border-radius: var(--rel-border-radius-sm);\n overflow: hidden;\n padding: 0;\n gap: var(--rel-spacing-3xs);\n height: 40px;\n width: fit-content;\n font-family: var(--rel-body-sm-regular-font-family);\n font-weight: var(--rel-body-sm-regular-font-weight);\n font-size: var(--rel-body-sm-regular-font-size);\n line-height: var(--rel-body-sm-regular-line-height);\n letter-spacing: var(--rel-body-sm-regular-letter-spacing);\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-sm);\n background: transparent;\n border: none;\n cursor: pointer;\n font-family: inherit;\n font-size: inherit;\n color: var(--rel-text-label);\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-bg-neutral-elevated-2);\n }\n\n .menubar-trigger:focus-visible {\n outline: 2px solid var(--rel-border-focus);\n outline-offset: 2px;\n }\n\n .menubar-panel {\n position: fixed;\n min-width: 220px;\n background: var(--rel-bg-surface);\n border: var(--rel-stroke-sm) solid var(--rel-border-default);\n border-radius: var(--rel-border-radius-sm);\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-sm);\n padding: var(--rel-spacing-xs) var(--rel-spacing-md);\n cursor: pointer;\n transition: background 0.15s ease;\n user-select: none;\n color: var(--rel-text-label);\n line-height: var(--rel-body-sm-regular-line-height);\n }\n\n .menu-item:hover,\n .menu-item.focused {\n background: var(--rel-bg-neutral-elevated-2);\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-stroke-sm);\n background: var(--rel-border-default);\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-bg-surface);\n border: var(--rel-stroke-sm) solid var(--rel-border-default);\n border-radius: var(--rel-border-radius-sm);\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 margin-left: auto;\n display: flex;\n align-items: center;\n gap: var(--rel-spacing-3xs);\n font-family: var(--rel-body-xs-regular-font-family);\n font-weight: var(--rel-body-xs-regular-font-weight);\n font-size: var(--rel-body-xs-regular-font-size);\n line-height: var(--rel-body-xs-regular-line-height);\n letter-spacing: var(--rel-body-xs-regular-letter-spacing);\n }\n\n .menubar-panel rel-checkbox {\n display: block;\n width: 100%;\n padding: var(--rel-spacing-xs, 8px) var(--rel-spacing-md, 16px);\n box-sizing: border-box;\n cursor: pointer;\n }\n ";
|
|
547
615
|
createRenderRoot(): this;
|
|
548
616
|
connectedCallback(): void;
|
|
549
617
|
disconnectedCallback(): void;
|
|
@@ -953,6 +1021,8 @@ declare global {
|
|
|
953
1021
|
|
|
954
1022
|
declare class RelPopoverContent extends LitElement {
|
|
955
1023
|
ariaLabel: string;
|
|
1024
|
+
/** Figma Size axis (S/M/L): panel padding 12/16/20px. */
|
|
1025
|
+
size: "sm" | "md" | "lg";
|
|
956
1026
|
static styles: lit.CSSResult;
|
|
957
1027
|
render(): lit_html.TemplateResult<1>;
|
|
958
1028
|
}
|
|
@@ -1164,6 +1234,11 @@ declare class RelModal extends LitElement {
|
|
|
1164
1234
|
description: string;
|
|
1165
1235
|
dismissible: boolean;
|
|
1166
1236
|
modal: boolean;
|
|
1237
|
+
/**
|
|
1238
|
+
* Figma "Breakpoint" axis. responsive (default) collapses to a full-width
|
|
1239
|
+
* bottom sheet below 480px; web keeps the fixed desktop panel at every size.
|
|
1240
|
+
*/
|
|
1241
|
+
breakpoint: "responsive" | "web";
|
|
1167
1242
|
private overlayElement;
|
|
1168
1243
|
private previousFocus;
|
|
1169
1244
|
private originalBodyOverflow;
|
|
@@ -1187,10 +1262,16 @@ declare global {
|
|
|
1187
1262
|
}
|
|
1188
1263
|
}
|
|
1189
1264
|
|
|
1190
|
-
|
|
1265
|
+
/**
|
|
1266
|
+
* "continuous"/"discrete" are the legacy tick-mode values; Figma's Type axis
|
|
1267
|
+
* adds "default" (alias of continuous) and "range" (dual-thumb interval).
|
|
1268
|
+
*/
|
|
1269
|
+
type SliderType = "continuous" | "discrete" | "default" | "range";
|
|
1191
1270
|
type TrackStyle = "solid" | "dotted";
|
|
1192
1271
|
declare class RelSlider extends LitElement {
|
|
1193
1272
|
type: SliderType;
|
|
1273
|
+
/** Figma Size axis (S/M/L): scales track, thumb and ticks. */
|
|
1274
|
+
size: "sm" | "md" | "lg";
|
|
1194
1275
|
min: number;
|
|
1195
1276
|
max: number;
|
|
1196
1277
|
step: number;
|
|
@@ -1199,13 +1280,26 @@ declare class RelSlider extends LitElement {
|
|
|
1199
1280
|
showTickLabels: boolean;
|
|
1200
1281
|
showBubble: boolean;
|
|
1201
1282
|
value: number;
|
|
1283
|
+
/** Upper value when type="range" (attribute value-end). */
|
|
1284
|
+
valueEnd: number;
|
|
1202
1285
|
private ticks;
|
|
1203
1286
|
private _onChange;
|
|
1204
1287
|
private _onTouched;
|
|
1205
1288
|
static styles: lit.CSSResult;
|
|
1206
1289
|
connectedCallback(): void;
|
|
1207
1290
|
updated(changedProperties: Map<string, any>): void;
|
|
1291
|
+
private get isRange();
|
|
1208
1292
|
private get percentage();
|
|
1293
|
+
private get percentageEnd();
|
|
1294
|
+
private dragThumb;
|
|
1295
|
+
private valueFromPointer;
|
|
1296
|
+
private onRangePointerDown;
|
|
1297
|
+
private onRangePointerMove;
|
|
1298
|
+
private onRangePointerUp;
|
|
1299
|
+
private applyRangeValue;
|
|
1300
|
+
private emitRangeChange;
|
|
1301
|
+
private onRangeInputStart;
|
|
1302
|
+
private onRangeInputEnd;
|
|
1209
1303
|
private setupTicks;
|
|
1210
1304
|
private getTickLeftPct;
|
|
1211
1305
|
private isTickActive;
|
|
@@ -1250,6 +1344,10 @@ type StepStatus = "done" | "progress" | "disabled";
|
|
|
1250
1344
|
type TextAlign = "right" | "below";
|
|
1251
1345
|
type Orientation = "horizontal" | "vertical";
|
|
1252
1346
|
type StepperSize = "small" | "large";
|
|
1347
|
+
/** Figma "Type": indicator content — default (number, check when done), dot, number, icon. */
|
|
1348
|
+
type StepperType = "default" | "dot" | "number" | "icon";
|
|
1349
|
+
/** Figma "Typel": label placement relative to the indicator. */
|
|
1350
|
+
type LabelPlacement = "top" | "centered" | "inverted";
|
|
1253
1351
|
interface Step {
|
|
1254
1352
|
title: string;
|
|
1255
1353
|
status: StepStatus;
|
|
@@ -1259,6 +1357,15 @@ declare class RelStepper extends LitElement {
|
|
|
1259
1357
|
textAlign: TextAlign;
|
|
1260
1358
|
orientation: Orientation;
|
|
1261
1359
|
size: StepperSize;
|
|
1360
|
+
type: StepperType;
|
|
1361
|
+
/**
|
|
1362
|
+
* Figma Typel axis: top = label top-aligned beside the indicator,
|
|
1363
|
+
* centered = label vertically centered beside it, inverted = indicator above
|
|
1364
|
+
* the label. When unset, the legacy textAlign prop drives the layout
|
|
1365
|
+
* (below ≈ inverted, right ≈ centered). Note Figma marks Top+Horizontal
|
|
1366
|
+
* as an unsupported combination.
|
|
1367
|
+
*/
|
|
1368
|
+
labelPlacement?: LabelPlacement;
|
|
1262
1369
|
static styles: lit.CSSResult;
|
|
1263
1370
|
private isDone;
|
|
1264
1371
|
private isProgress;
|
|
@@ -1307,6 +1414,8 @@ declare class RelTabItem extends LitElement {
|
|
|
1307
1414
|
declare class RelTab extends LitElement {
|
|
1308
1415
|
tabs: TabItem[];
|
|
1309
1416
|
activeIndex: number;
|
|
1417
|
+
/** Tab size — styled via :host([size]) rules. */
|
|
1418
|
+
size: "sm" | "md" | "lg";
|
|
1310
1419
|
private _tabItems;
|
|
1311
1420
|
static styles: lit.CSSResult;
|
|
1312
1421
|
private _onSlotChange;
|
|
@@ -1377,11 +1486,14 @@ declare class RelToast extends LitElement {
|
|
|
1377
1486
|
render(): lit_html.TemplateResult<1>;
|
|
1378
1487
|
}
|
|
1379
1488
|
|
|
1380
|
-
type TooltipPosition = "above" | "below";
|
|
1489
|
+
type TooltipPosition = "above" | "below" | "left" | "right";
|
|
1490
|
+
type TooltipType = "single-line" | "multi-line";
|
|
1381
1491
|
declare class RelTooltip extends LitElement {
|
|
1382
1492
|
text: string;
|
|
1383
1493
|
position: TooltipPosition;
|
|
1384
1494
|
showTail: boolean;
|
|
1495
|
+
/** Figma "Type": single-line stays on one line; multi-line wraps at a max width. */
|
|
1496
|
+
type: TooltipType;
|
|
1385
1497
|
private uniqueId;
|
|
1386
1498
|
static styles: lit.CSSResult;
|
|
1387
1499
|
firstUpdated(): void;
|
|
@@ -1389,4 +1501,4 @@ declare class RelTooltip extends LitElement {
|
|
|
1389
1501
|
render(): lit_html.TemplateResult<1>;
|
|
1390
1502
|
}
|
|
1391
1503
|
|
|
1392
|
-
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 };
|
|
1504
|
+
export { type BreadcrumbItem, type ButtonTone, type ButtonVariant, type ChipBorder, type ChipSize, type ChipTone, type ChipVariant, type DrawerCloseReason, type DrawerSide, type LabelPlacement, 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, RelKbdGroup, 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 StepperType, type TabItem, type TextAlign, type TextFieldSize, type TextFieldState, type TextFieldVariant, type ToastType, type TooltipPosition, type TooltipType, type TopbarForceLayout, type TopbarProfileType, type TopbarRewardTier, type TopbarVariant, type TrackStyle };
|