@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,224 @@
1
+ # rel-sheet
2
+
3
+ ## Overview
4
+ A slide-in panel component system with multiple helper components. Features four slide directions (top, right, bottom, left), configurable sizes, modal/non-modal modes, focus trapping, scroll locking, and optional overlay. Built with composition: `rel-sheet` (controller), `rel-sheet-trigger` (opener), `rel-sheet-content` (panel), and layout helpers (`rel-sheet-header`, `rel-sheet-footer`, `rel-sheet-title`, `rel-sheet-description`, `rel-sheet-close`).
5
+
6
+ ## Components
7
+ - **`<rel-sheet>`**: Root wrapper that manages open state
8
+ - **`<rel-sheet-trigger>`**: Button to open the sheet
9
+ - **`<rel-sheet-content>`**: Slide-in panel with all visual elements
10
+ - **`<rel-sheet-header>`**: Header layout helper with bottom border
11
+ - **`<rel-sheet-footer>`**: Footer layout helper with top border
12
+ - **`<rel-sheet-title>`**: Title text (auto-linked to `aria-labelledby`)
13
+ - **`<rel-sheet-description>`**: Description text (auto-linked to `aria-describedby`)
14
+ - **`<rel-sheet-close>`**: Custom close button wrapper
15
+
16
+ ## Usage
17
+ ```html
18
+ <!-- Basic right-side sheet -->
19
+ <rel-sheet>
20
+ <rel-sheet-trigger>
21
+ <button>Open Settings</button>
22
+ </rel-sheet-trigger>
23
+
24
+ <rel-sheet-content>
25
+ <rel-sheet-header>
26
+ <rel-sheet-title>Settings</rel-sheet-title>
27
+ <rel-sheet-description>Configure your preferences</rel-sheet-description>
28
+ </rel-sheet-header>
29
+
30
+ <p>Sheet content goes here...</p>
31
+
32
+ <rel-sheet-footer>
33
+ <rel-sheet-close>
34
+ <button>Cancel</button>
35
+ </rel-sheet-close>
36
+ <button>Save</button>
37
+ </rel-sheet-footer>
38
+ </rel-sheet-content>
39
+ </rel-sheet>
40
+
41
+ <!-- Left-side sheet, large size -->
42
+ <rel-sheet>
43
+ <rel-sheet-trigger>
44
+ <button>Open Menu</button>
45
+ </rel-sheet-trigger>
46
+
47
+ <rel-sheet-content side="left" size="lg">
48
+ <nav>
49
+ <a href="#home">Home</a>
50
+ <a href="#about">About</a>
51
+ <a href="#contact">Contact</a>
52
+ </nav>
53
+ </rel-sheet-content>
54
+ </rel-sheet>
55
+
56
+ <!-- Bottom sheet without overlay -->
57
+ <rel-sheet defaultopen>
58
+ <rel-sheet-trigger>
59
+ <button>Toggle Bottom Sheet</button>
60
+ </rel-sheet-trigger>
61
+
62
+ <rel-sheet-content side="bottom" hide-overlay>
63
+ <p>Bottom sheet content</p>
64
+ </rel-sheet-content>
65
+ </rel-sheet>
66
+
67
+ <!-- Controlled state -->
68
+ <rel-sheet id="controlledSheet" open>
69
+ <rel-sheet-trigger>
70
+ <button>Open</button>
71
+ </rel-sheet-trigger>
72
+
73
+ <rel-sheet-content>
74
+ <p>This sheet is controlled externally</p>
75
+ </rel-sheet-content>
76
+ </rel-sheet>
77
+ <script>
78
+ const sheet = document.getElementById('controlledSheet');
79
+ sheet.addEventListener('rel-open-change', (e) => {
80
+ console.log('Sheet open:', e.detail.open);
81
+ console.log('Reason:', e.detail.reason);
82
+ });
83
+ </script>
84
+
85
+ <!-- Without built-in close button -->
86
+ <rel-sheet>
87
+ <rel-sheet-trigger>
88
+ <button>Open</button>
89
+ </rel-sheet-trigger>
90
+
91
+ <rel-sheet-content show-close="false">
92
+ <p>Custom close handling</p>
93
+ <rel-sheet-close>
94
+ <button>Close Me</button>
95
+ </rel-sheet-close>
96
+ </rel-sheet-content>
97
+ </rel-sheet>
98
+ ```
99
+
100
+ ## API
101
+
102
+ ### rel-sheet Properties
103
+ | Name | Type | Default | Description |
104
+ |------|------|---------|-------------|
105
+ | `open` (reflected) | `boolean?` | `undefined` | Controlled open state |
106
+ | `defaultopen` | `boolean` | `false` | Default open state (uncontrolled) |
107
+ | `disabled` | `boolean` | `false` | Disable trigger |
108
+ | `modal` | `boolean` | `true` | Enable modal behavior (focus trap) |
109
+
110
+ ### rel-sheet-content Properties
111
+ | Name | Type | Default | Description |
112
+ |------|------|---------|-------------|
113
+ | `side` | `"top" \| "right" \| "bottom" \| "left"` | `"right"` | Which side the sheet slides from |
114
+ | `size` | `"sm" \| "md" \| "lg" \| "xl"` | `"md"` | Sheet width/height (320/420/540/640px) |
115
+ | `hide-overlay` | `boolean` | `false` | Hide the backdrop overlay |
116
+ | `close-on-overlay` | `boolean` | `true` | Allow closing by clicking overlay |
117
+ | `show-close` | `boolean` | `true` | Show built-in close button (✕) |
118
+
119
+ ## Events
120
+ | Event | Detail | Description |
121
+ |-------|--------|-------------|
122
+ | `rel-open-change` | `{ open, reason }` | Fired when sheet opens/closes |
123
+
124
+ ### Close Reasons
125
+ - `"trigger"`: Toggled via trigger button
126
+ - `"close"`: Closed via close button
127
+ - `"overlay"`: Closed by clicking overlay
128
+ - `"escape"`: Closed via Escape key
129
+ - `"api"`: Changed via `setOpen()` method
130
+
131
+ ## Methods
132
+
133
+ ### Sheet Methods
134
+ ```typescript
135
+ sheet.setOpen(nextOpen: boolean, reason?: string): void
136
+ ```
137
+
138
+ ## Slots
139
+ | Slot | Component | Description |
140
+ |------|-----------|-------------|
141
+ | (default) | `rel-sheet` | Trigger and content elements |
142
+ | (default) | `rel-sheet-trigger` | Trigger button/element |
143
+ | (default) | `rel-sheet-content` | Panel content |
144
+ | (default) | Layout helpers | Content within headers/footers/titles |
145
+
146
+ ## CSS Parts
147
+ | Part | Description |
148
+ |------|-------------|
149
+ | `overlay` | Backdrop overlay element |
150
+ | `panel` | Main panel container |
151
+
152
+ ## Tokens / CSS Variables
153
+
154
+ ### Size Tokens (defined on `<rel-sheet-content>`)
155
+ - `--sheet-size-sm`: `320px`
156
+ - `--sheet-size-md`: `420px`
157
+ - `--sheet-size-lg`: `540px`
158
+ - `--sheet-size-xl`: `640px`
159
+
160
+ ### Transition Tokens
161
+ - `--sheet-transition-duration`: `0.3s`
162
+ - `--sheet-transition-timing`: `cubic-bezier(0.32, 0.72, 0, 1)`
163
+
164
+ ### Color Tokens
165
+ - `--rel-colors-white` - Panel background
166
+ - `--rel-colors-gray-heading` - Title and close button color
167
+ - `--rel-colors-gray-body` - Description color
168
+ - `--rel-colors-gray-surface` - Close button hover background
169
+ - `--rel-colors-gray-border` - Header/footer borders
170
+ - `--rel-overlay-scrim` - Overlay background
171
+ - `--rel-colors-primary-500` - Close button focus outline
172
+
173
+ ### Shadow Tokens
174
+ - `--rel-shadows-shadow-500` - Panel shadow
175
+
176
+ ### Border Tokens
177
+ - `--rel-borders-radius-border-radius-300` - Panel border radius (top corners for bottom, etc.)
178
+
179
+ ### Spacing Tokens
180
+ - `--rel-spacing-space-lg` - Panel content padding
181
+ - `--rel-spacing-space-md` - Header/footer padding, close button positioning
182
+ - `--rel-spacing-space-xs` - Close button padding
183
+
184
+ ## Accessibility
185
+ - Panel uses `role="dialog"` and `aria-modal`
186
+ - Auto-links `aria-labelledby` to `<rel-sheet-title>`
187
+ - Auto-links `aria-describedby` to `<rel-sheet-description>`
188
+ - Focus trap in modal mode
189
+ - Escape key closes sheet
190
+ - Restores focus to trigger on close
191
+
192
+ ### Keyboard Interactions
193
+ | Key | Action |
194
+ |-----|--------|
195
+ | `Escape` | Close sheet |
196
+ | `Tab` | Focus trap within sheet (modal mode only) |
197
+
198
+ ### Focus Behavior
199
+ - On open, focuses first focusable element (or panel if none found)
200
+ - Focus trapped within panel in modal mode
201
+ - On close, restores focus to trigger button
202
+
203
+ ## Notes / Edge Cases
204
+ - **Side positioning and transforms**:
205
+ - **right**: Slides in from right edge, `translateX(100%)` to `translateX(0)`
206
+ - **left**: Slides in from left edge, `translateX(-100%)` to `translateX(0)`
207
+ - **bottom**: Slides in from bottom, `translateY(100%)` to `translateY(0)`
208
+ - **top**: Slides in from top, `translateY(-100%)` to `translateY(0)`
209
+
210
+ - **Size constraints**:
211
+ - Left/right: `max-width: 90vw`
212
+ - Top/bottom: `max-height: 80vh`
213
+
214
+ - **Scroll locking**: Body scroll is locked when sheet is open (with scrollbar width compensation)
215
+ - **Close button position**: Top-right by default, but top-left for `side="left"`
216
+ - **Reduced motion**: Transitions disabled, panel hidden via `display: none` instead of transform
217
+ - The sheet root uses `display: contents`
218
+ - Panel is overlaid with `z-index: 1000`, fixed position
219
+ - Overlay detection for `aria-labelledby`/`aria-describedby` happens automatically based on slotted `<rel-sheet-title>` and `<rel-sheet-description>` elements
220
+ - Built-in close button is "✕" character at font-size 20px
221
+
222
+ ### Controlled vs Uncontrolled
223
+ - If `open` prop is set, the sheet is controlled and won't manage its own state
224
+ - Use `rel-open-change` event to sync controlled state