@reliability-design/web 1.0.3 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/dist/components/rel-accordion/README.md +132 -0
  2. package/dist/components/rel-accordion/rel-accordion.ts +47 -16
  3. package/dist/components/rel-alert/README.md +141 -0
  4. package/dist/components/rel-alert/rel-alert.ts +101 -20
  5. package/dist/components/rel-avatar/README.md +119 -0
  6. package/dist/components/rel-avatar/rel-avatar.ts +3 -2
  7. package/dist/components/rel-badge/README.md +86 -0
  8. package/dist/components/rel-badge/rel-badge.ts +11 -7
  9. package/dist/components/rel-breadcrumb/README.md +102 -0
  10. package/dist/components/rel-breadcrumb/rel-breadcrumb.ts +12 -6
  11. package/dist/components/rel-button/README.md +130 -0
  12. package/dist/components/rel-button/rel-button.ts +64 -8
  13. package/dist/components/rel-calendar/README.md +109 -0
  14. package/dist/components/rel-calendar/index.ts +1 -0
  15. package/dist/components/rel-calendar/rel-calendar.ts +467 -0
  16. package/dist/components/rel-card/README.md +94 -0
  17. package/dist/components/rel-card/rel-card.ts +12 -3
  18. package/dist/components/rel-cardmedia/README.md +127 -0
  19. package/dist/components/rel-cardmedia/rel-cardmedia.ts +14 -4
  20. package/dist/components/rel-carousel/README.md +166 -0
  21. package/dist/components/rel-carousel/index.ts +1 -0
  22. package/dist/components/rel-carousel/rel-carousel.ts +468 -0
  23. package/dist/components/rel-chart/README.md +286 -0
  24. package/dist/components/rel-chart/index.ts +1 -0
  25. package/dist/components/rel-chart/rel-chart.ts +736 -0
  26. package/dist/components/rel-checkbox/README.md +77 -0
  27. package/dist/components/rel-checkbox/rel-checkbox.ts +51 -12
  28. package/dist/components/rel-chip/README.md +114 -0
  29. package/dist/components/rel-chip/rel-chip.ts +83 -9
  30. package/dist/components/rel-container/README.md +99 -0
  31. package/dist/components/rel-date-picker/README.md +253 -0
  32. package/dist/components/rel-date-picker/index.ts +1 -0
  33. package/dist/components/rel-date-picker/rel-date-picker.ts +916 -0
  34. package/dist/components/rel-divider/README.md +100 -0
  35. package/dist/components/rel-divider/rel-divider.ts +9 -0
  36. package/dist/components/rel-drawer/README.md +200 -0
  37. package/dist/components/rel-drawer/index.ts +1 -0
  38. package/dist/components/rel-drawer/rel-drawer-footer.ts +29 -0
  39. package/dist/components/rel-drawer/rel-drawer.ts +612 -0
  40. package/dist/components/rel-kbd/README.md +151 -0
  41. package/dist/components/rel-kbd/rel-kbd.ts +118 -0
  42. package/dist/components/rel-layout/README.md +88 -0
  43. package/dist/components/rel-menu/README.md +151 -0
  44. package/dist/components/rel-menu/rel-menu.ts +64 -24
  45. package/dist/components/rel-menubar/README.md +329 -0
  46. package/dist/components/rel-menubar/index.ts +2 -0
  47. package/dist/components/rel-menubar/rel-menubar-menu.ts +16 -0
  48. package/dist/components/rel-menubar/rel-menubar.ts +605 -0
  49. package/dist/components/rel-nav-menu/README.md +289 -0
  50. package/dist/components/rel-nav-menu/index.ts +3 -0
  51. package/dist/components/rel-nav-menu/rel-nav-menu-item.ts +240 -0
  52. package/dist/components/rel-nav-menu/rel-nav-menu-panel.ts +53 -0
  53. package/dist/components/rel-nav-menu/rel-nav-menu.ts +227 -0
  54. package/dist/components/rel-navbar/README.md +126 -0
  55. package/dist/components/rel-navbar/rel-navbar.ts +104 -0
  56. package/dist/components/rel-otp/README.md +440 -0
  57. package/dist/components/rel-otp/index.ts +1 -0
  58. package/dist/components/rel-otp/rel-otp.ts +504 -0
  59. package/dist/components/rel-pagination/README.md +410 -0
  60. package/dist/components/rel-pagination/index.ts +1 -0
  61. package/dist/components/rel-pagination/rel-pagination.ts +381 -0
  62. package/dist/components/rel-popover/README.md +568 -0
  63. package/dist/components/rel-popover/index.ts +2 -0
  64. package/dist/components/rel-popover/rel-popover-content.ts +55 -0
  65. package/dist/components/rel-popover/rel-popover.ts +330 -0
  66. package/dist/components/rel-progress/README.md +110 -0
  67. package/dist/components/rel-progress/rel-progress.ts +32 -5
  68. package/dist/components/rel-radio/README.md +120 -0
  69. package/dist/components/rel-radio/rel-radio.ts +31 -6
  70. package/dist/components/rel-resizable/README.md +140 -0
  71. package/dist/components/rel-resizable/index.ts +3 -0
  72. package/dist/components/rel-resizable/rel-resizable-group.ts +374 -0
  73. package/dist/components/rel-resizable/rel-resizable-handle.ts +145 -0
  74. package/dist/components/rel-resizable/rel-resizable-panel.ts +47 -0
  75. package/dist/components/rel-segmented-button/README.md +141 -0
  76. package/dist/components/rel-segmented-button/rel-segmented-button.ts +18 -13
  77. package/dist/components/rel-select/README.md +107 -0
  78. package/dist/components/rel-select/rel-select.ts +28 -14
  79. package/dist/components/rel-sheet/README.md +224 -0
  80. package/dist/components/rel-sheet/rel-sheet.ts +684 -0
  81. package/dist/components/rel-sidebar/README.md +209 -0
  82. package/dist/components/rel-sidebar/rel-sidebar.ts +1166 -0
  83. package/dist/components/rel-slider/README.md +135 -0
  84. package/dist/components/rel-slider/rel-slider.ts +44 -9
  85. package/dist/components/rel-snackbar/README.md +134 -0
  86. package/dist/components/rel-snackbar/rel-snackbar.ts +109 -14
  87. package/dist/components/rel-stepper/README.md +160 -0
  88. package/dist/components/rel-stepper/rel-stepper.ts +38 -27
  89. package/dist/components/rel-switch/README.md +102 -0
  90. package/dist/components/rel-switch/rel-switch.ts +34 -12
  91. package/dist/components/rel-tab/README.md +163 -0
  92. package/dist/components/rel-tab/rel-tab.ts +79 -23
  93. package/dist/components/rel-table/README.md +178 -0
  94. package/dist/components/rel-table/rel-table-body.ts +21 -0
  95. package/dist/components/rel-table/rel-table-caption.ts +27 -0
  96. package/dist/components/rel-table/rel-table-cell.ts +42 -0
  97. package/dist/components/rel-table/rel-table-footer.ts +23 -0
  98. package/dist/components/rel-table/rel-table-head.ts +45 -0
  99. package/dist/components/rel-table/rel-table-header.ts +21 -0
  100. package/dist/components/rel-table/rel-table-row.ts +36 -0
  101. package/dist/components/rel-table/rel-table.ts +53 -0
  102. package/dist/components/rel-textfield/README.md +90 -0
  103. package/dist/components/rel-textfield/rel-textfield.ts +55 -39
  104. package/dist/components/rel-toast/README.md +148 -0
  105. package/dist/components/rel-toast/rel-toast.ts +63 -24
  106. package/dist/components/rel-tooltip/README.md +103 -0
  107. package/dist/components/rel-tooltip/rel-tooltip.ts +123 -80
  108. package/dist/components/rel-topbar/rel-topbar-actions.ts +23 -0
  109. package/dist/components/rel-topbar/rel-topbar-brand.ts +46 -0
  110. package/dist/components/rel-topbar/rel-topbar-dropdown-item.ts +33 -0
  111. package/dist/components/rel-topbar/rel-topbar-dropdown.ts +28 -0
  112. package/dist/components/rel-topbar/rel-topbar-item.ts +315 -0
  113. package/dist/components/rel-topbar/rel-topbar-mobile-panel.ts +23 -0
  114. package/dist/components/rel-topbar/rel-topbar-profile.ts +248 -0
  115. package/dist/components/rel-topbar/rel-topbar-utilities.ts +23 -0
  116. package/dist/components/rel-topbar/rel-topbar.ts +329 -0
  117. package/dist/index.d.mts +831 -7
  118. package/dist/index.d.ts +831 -7
  119. package/dist/index.js +9500 -1564
  120. package/dist/index.js.map +1 -1
  121. package/dist/index.mjs +9240 -1344
  122. package/dist/index.mjs.map +1 -1
  123. package/dist/styles/vars.css +187 -25
  124. package/dist/vars-TBB4BMSD.css +346 -0
  125. package/package.json +2 -1
  126. package/dist/vars-6ZIUPIU4.css +0 -184
@@ -0,0 +1,100 @@
1
+ # rel-divider
2
+
3
+ ## Overview
4
+ A simple divider component supporting horizontal and vertical orientations. Provides a visual separator line with configurable styling via CSS tokens.
5
+
6
+ ## Usage
7
+ ```html
8
+ <!-- Horizontal divider (default) -->
9
+ <p>Section 1</p>
10
+ <rel-divider></rel-divider>
11
+ <p>Section 2</p>
12
+
13
+ <!-- Vertical divider -->
14
+ <div style="display: flex; align-items: center; height: 50px;">
15
+ <span>Item 1</span>
16
+ <rel-divider orientation="vertical"></rel-divider>
17
+ <span>Item 2</span>
18
+ <rel-divider orientation="vertical"></rel-divider>
19
+ <span>Item 3</span>
20
+ </div>
21
+
22
+ <!-- In a toolbar -->
23
+ <div style="display: flex; gap: 16px; align-items: center;">
24
+ <button>Action 1</button>
25
+ <rel-divider orientation="vertical"></rel-divider>
26
+ <button>Action 2</button>
27
+ <rel-divider orientation="vertical"></rel-divider>
28
+ <button>Action 3</button>
29
+ </div>
30
+
31
+ <!-- Between content sections -->
32
+ <section>
33
+ <h2>Section A</h2>
34
+ <p>Content A</p>
35
+ </section>
36
+ <rel-divider></rel-divider>
37
+ <section>
38
+ <h2>Section B</h2>
39
+ <p>Content B</p>
40
+ </section>
41
+ ```
42
+
43
+ ## API
44
+
45
+ ### Attributes/Properties
46
+ | Name | Type | Default | Description |
47
+ |------|------|---------|-------------|
48
+ | `orientation` | `"horizontal" \| "vertical"` | `"horizontal"` | Divider orientation |
49
+
50
+ ## Events
51
+ None.
52
+
53
+ ## Slots
54
+ None.
55
+
56
+ ## CSS Parts
57
+ None exposed.
58
+
59
+ ## Tokens / CSS Variables
60
+
61
+ ### Semantic Tokens
62
+ - `--rel-fontFamilies-primary` - Font family
63
+ - `--rel-colors-gray-primary` - Text color (not used visually, but set)
64
+
65
+ ### Color Tokens
66
+ - `--rel-colors-gray-border` - Divider line color
67
+
68
+ ### Border Tokens
69
+ - `--rel-borders-width-stroke-100` - Line thickness (width/height)
70
+
71
+ ### Spacing Tokens
72
+ - `--rel-spacing-space-md` - Margin around divider
73
+
74
+ ## Accessibility
75
+ - Uses `role="separator"` for proper ARIA semantics
76
+ - Screen readers will announce the divider as a separator
77
+
78
+ ### Keyboard Interactions
79
+ - None (non-interactive element)
80
+
81
+ ### Focus Behavior
82
+ - Does not receive focus
83
+
84
+ ## Notes / Edge Cases
85
+ - **Horizontal orientation**:
86
+ - `width: 100%`
87
+ - `height: var(--rel-borders-width-stroke-100)`
88
+ - `margin: var(--rel-spacing-space-md) 0` (vertical margin)
89
+
90
+ - **Vertical orientation**:
91
+ - `width: var(--rel-borders-width-stroke-100)`
92
+ - `height: 100%`
93
+ - `margin: 0 var(--rel-spacing-space-md)` (horizontal margin)
94
+ - Uses `align-self: stretch` to fill parent height
95
+
96
+ - The divider is purely visual and has `background: transparent` on the host element
97
+ - The actual divider line is rendered by an internal `.rel-divider` div
98
+ - For vertical dividers to work properly, the parent must have a defined height
99
+ - Vertical dividers use `align-self: stretch` to match the parent's height
100
+ - The divider is `display: block` on the host element
@@ -36,6 +36,15 @@
36
36
  }
37
37
  `;
38
38
 
39
+ connectedCallback() {
40
+ super.connectedCallback();
41
+ this.setAttribute("role", "separator");
42
+ }
43
+
44
+ updated() {
45
+ this.setAttribute("aria-orientation", this.orientation ?? "horizontal");
46
+ }
47
+
39
48
  render() {
40
49
  return html`
41
50
  <div class="rel-divider ${this.orientation}" role="separator"></div>
@@ -0,0 +1,200 @@
1
+ # RelDrawer Component
2
+
3
+ A flexible, accessible drawer/sheet component for the Reliability Design System.
4
+
5
+ ## Features
6
+
7
+ - Slides from bottom (default), left, right, or top
8
+ - Overlay/backdrop with configurable dismiss behavior
9
+ - Drag-to-close for bottom drawers (touch & mouse)
10
+ - Focus trapping for modal mode
11
+ - Keyboard navigation (Escape to close, Tab trap)
12
+ - Token-driven styling (no hardcoded colors)
13
+ - Respects `prefers-reduced-motion`
14
+ - Slot-based content API
15
+
16
+ ## Basic Usage
17
+
18
+ ```html
19
+ <rel-drawer open>
20
+ <h3 slot="title">Drawer Title</h3>
21
+ <p slot="description">Optional description text</p>
22
+
23
+ <p>Your drawer content goes here.</p>
24
+
25
+ <div slot="footer">
26
+ <button>Cancel</button>
27
+ <button>Save</button>
28
+ </div>
29
+ </rel-drawer>
30
+ ```
31
+
32
+ ## Properties
33
+
34
+ | Property | Type | Default | Description |
35
+ |----------|------|---------|-------------|
36
+ | `open` | `boolean` | `false` | Controls drawer visibility (reflects) |
37
+ | `side` | `"bottom" \| "left" \| "right" \| "top"` | `"bottom"` | Edge from which drawer slides |
38
+ | `dismissible` | `boolean` | `true` | Allows backdrop/Escape close |
39
+ | `modal` | `boolean` | `true` | Enables focus trap and `aria-modal` |
40
+ | `close-on-backdrop` | `boolean` | `true` | Close when clicking backdrop |
41
+ | `close-on-escape` | `boolean` | `true` | Close when pressing Escape |
42
+ | `show-handle` | `boolean` | `true` | Show handle bar (bottom drawer only) |
43
+ | `draggable` | `boolean` | `true` | Enable drag-to-close (bottom only) |
44
+ | `snap-threshold` | `number` | `0.25` | Drag distance % to trigger close |
45
+ | `max-height` | `string` | `"80vh"` | Max height for bottom/top drawers |
46
+ | `width` | `string` | `"420px"` | Width for left/right drawers |
47
+ | `disabled` | `boolean` | `false` | Disables all interaction |
48
+
49
+ ## Events
50
+
51
+ | Event | Detail | Description |
52
+ |-------|--------|-------------|
53
+ | `rel-open-change` | `{ open: boolean }` | Fires when open state changes |
54
+ | `rel-close` | `{ reason: "backdrop" \| "escape" \| "drag" \| "programmatic" }` | Fires when drawer closes |
55
+
56
+ ## Slots
57
+
58
+ | Slot | Description |
59
+ |------|-------------|
60
+ | (default) | Drawer content body |
61
+ | `title` | Header title text |
62
+ | `description` | Header description text |
63
+ | `footer` | Footer content (buttons, actions) |
64
+
65
+ ## CSS Parts
66
+
67
+ | Part | Description |
68
+ |------|-------------|
69
+ | `overlay` | Backdrop element |
70
+ | `panel` | Drawer panel container |
71
+ | `handle` | Drag handle bar |
72
+ | `header` | Header container |
73
+ | `content` | Content container |
74
+ | `footer` | Footer container |
75
+ | `close-button` | Close button (X) |
76
+
77
+ ## Examples
78
+
79
+ ### Bottom Sheet (Mobile-style)
80
+
81
+ ```html
82
+ <rel-drawer open side="bottom" max-height="60vh">
83
+ <h3 slot="title">Select an option</h3>
84
+ <ul>
85
+ <li>Option 1</li>
86
+ <li>Option 2</li>
87
+ <li>Option 3</li>
88
+ </ul>
89
+ </rel-drawer>
90
+ ```
91
+
92
+ ### Side Panel (Desktop Navigation)
93
+
94
+ ```html
95
+ <rel-drawer open side="right" width="300px">
96
+ <h3 slot="title">Navigation</h3>
97
+ <nav>
98
+ <a href="/home">Home</a>
99
+ <a href="/about">About</a>
100
+ <a href="/contact">Contact</a>
101
+ </nav>
102
+ </rel-drawer>
103
+ ```
104
+
105
+ ### Programmatic Control
106
+
107
+ ```javascript
108
+ const drawer = document.querySelector('rel-drawer');
109
+
110
+ // Open drawer
111
+ drawer.open = true;
112
+
113
+ // Close drawer
114
+ drawer.open = false;
115
+
116
+ // Listen for close event
117
+ drawer.addEventListener('rel-close', (e) => {
118
+ console.log('Closed via:', e.detail.reason);
119
+ });
120
+ ```
121
+
122
+ ### Non-Modal Drawer
123
+
124
+ ```html
125
+ <rel-drawer open modal="false" dismissible="false">
126
+ <!-- Doesn't trap focus, can't be dismissed -->
127
+ <p>Persistent sidebar content</p>
128
+ </rel-drawer>
129
+ ```
130
+
131
+ ## Accessibility
132
+
133
+ - When `modal="true"`:
134
+ - Sets `role="dialog"` and `aria-modal="true"`
135
+ - Traps focus within drawer
136
+ - Returns focus to trigger element on close
137
+ - Locks body scroll to prevent background scrolling
138
+ - Keyboard support:
139
+ - `Escape`: Close drawer (if `close-on-escape`)
140
+ - `Tab`: Cycle focus within drawer (if `modal`)
141
+ - Screen reader: Announced as dialog when opened
142
+
143
+ ## Styling
144
+
145
+ The drawer uses design system tokens for all colors, spacing, shadows, and borders. You can customize appearance using CSS parts:
146
+
147
+ ```css
148
+ rel-drawer::part(overlay) {
149
+ background: rgba(0, 0, 0, 0.7);
150
+ }
151
+
152
+ rel-drawer::part(panel) {
153
+ box-shadow: 0 0 30px rgba(0, 0, 0, 0.3);
154
+ }
155
+
156
+ rel-drawer::part(handle) {
157
+ background: var(--rel-colors-blue-primary);
158
+ }
159
+ ```
160
+
161
+ ## Framework Integration
162
+
163
+ ### React
164
+
165
+ ```jsx
166
+ <RelDrawer
167
+ open={isOpen}
168
+ onRelClose={(e) => setIsOpen(false)}
169
+ side="right"
170
+ >
171
+ <span slot="title">Settings</span>
172
+ <SettingsForm />
173
+ </RelDrawer>
174
+ ```
175
+
176
+ ### Angular
177
+
178
+ ```html
179
+ <rel-drawer
180
+ [open]="isOpen"
181
+ (rel-close)="isOpen = false"
182
+ side="left"
183
+ >
184
+ <span slot="title">Menu</span>
185
+ <app-menu></app-menu>
186
+ </rel-drawer>
187
+ ```
188
+
189
+ ### Vue
190
+
191
+ ```vue
192
+ <rel-drawer
193
+ :open="isOpen"
194
+ @rel-close="isOpen = false"
195
+ side="bottom"
196
+ >
197
+ <template #title>Options</template>
198
+ <OptionsPanel />
199
+ </rel-drawer>
200
+ ```
@@ -0,0 +1 @@
1
+ export * from "./rel-drawer";
@@ -0,0 +1,29 @@
1
+ import { LitElement, html, css } from "lit";
2
+ import { customElement } from "lit/decorators.js";
3
+
4
+ @customElement("rel-drawer-footer")
5
+ export class RelDrawerFooter extends LitElement {
6
+ static styles = css`
7
+ .drawer-footer {
8
+ display: flex;
9
+ justify-content: flex-end;
10
+ gap: var(--rel-spacing-space-xs);
11
+ padding-top: var(--rel-spacing-space-md);
12
+ border-top: 1px solid var(--rel-color-border-divider);
13
+ }
14
+ `;
15
+
16
+ render() {
17
+ return html`
18
+ <div class="drawer-footer">
19
+ <slot></slot>
20
+ </div>
21
+ `;
22
+ }
23
+ }
24
+
25
+ declare global {
26
+ interface HTMLElementTagNameMap {
27
+ "rel-drawer-footer": RelDrawerFooter;
28
+ }
29
+ }