@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,209 @@
1
+ # rel-sidebar
2
+
3
+ ## Overview
4
+ A sophisticated sidebar navigation system with multiple components: `rel-sidebar-provider` (state manager), `rel-sidebar` (visual container), `rel-sidebar-trigger` (toggle button), and layout helpers (`rel-sidebar-header`, `rel-sidebar-footer`, `rel-sidebar-content`, `rel-sidebar-rail`). Supports three variants (sidebar, floating, inset), two collapsible modes (offcanvas, icon), mobile detection, localStorage persistence, keyboard shortcuts, and focus trapping.
5
+
6
+ ## Components
7
+ This sidebar system consists of multiple components that work together:
8
+ - **`<rel-sidebar-provider>`**: Root wrapper that manages state
9
+ - **`<rel-sidebar>`**: Visual sidebar container
10
+ - **`<rel-sidebar-trigger>`**: Toggle button
11
+ - **`<rel-sidebar-header>`**: Header layout helper
12
+ - **`<rel-sidebar-footer>`**: Footer layout helper
13
+ - **`<rel-sidebar-content>`**: Main content wrapper
14
+ - **`<rel-sidebar-rail>`**: Collapsed (icon-only) state content
15
+
16
+ ## Usage
17
+ ```html
18
+ <!-- Basic sidebar with provider -->
19
+ <rel-sidebar-provider>
20
+ <rel-sidebar>
21
+ <rel-sidebar-header>
22
+ <h2>App Name</h2>
23
+ <rel-sidebar-trigger>
24
+ <button>☰</button>
25
+ </rel-sidebar-trigger>
26
+ </rel-sidebar-header>
27
+
28
+ <rel-sidebar-content>
29
+ <nav>
30
+ <a href="#home">Home</a>
31
+ <a href="#about">About</a>
32
+ <a href="#contact">Contact</a>
33
+ </nav>
34
+ </rel-sidebar-content>
35
+
36
+ <rel-sidebar-footer>
37
+ <p>© 2024 Company</p>
38
+ </rel-sidebar-footer>
39
+ </rel-sidebar>
40
+
41
+ <main>
42
+ <h1>Main Content</h1>
43
+ <p>Page content goes here</p>
44
+ </main>
45
+ </rel-sidebar-provider>
46
+
47
+ <!-- Controlled open state -->
48
+ <rel-sidebar-provider open="true">
49
+ <rel-sidebar>
50
+ <nav>Navigation items</nav>
51
+ </rel-sidebar>
52
+ <main>Content</main>
53
+ </rel-sidebar-provider>
54
+
55
+ <!-- Right-side floating variant -->
56
+ <rel-sidebar-provider side="right" variant="floating" width="lg">
57
+ <rel-sidebar>
58
+ <h3>Right Sidebar</h3>
59
+ </rel-sidebar>
60
+ <main>Content</main>
61
+ </rel-sidebar-provider>
62
+
63
+ <!-- Offcanvas mode (overlay on all screen sizes) -->
64
+ <rel-sidebar-provider collapsible="offcanvas">
65
+ <rel-sidebar>
66
+ <nav>Menu</nav>
67
+ </rel-sidebar>
68
+ <main>Content</main>
69
+ </rel-sidebar-provider>
70
+
71
+ <!-- Listen for state changes -->
72
+ <rel-sidebar-provider id="sidebarProvider">
73
+ <rel-sidebar>Nav</rel-sidebar>
74
+ <main>Content</main>
75
+ </rel-sidebar-provider>
76
+ <script>
77
+ const provider = document.getElementById('sidebarProvider');
78
+ provider.addEventListener('rel-sidebar-change', (e) => {
79
+ console.log('Open:', e.detail.open);
80
+ console.log('Collapsed:', e.detail.collapsed);
81
+ console.log('Reason:', e.detail.reason);
82
+ });
83
+ </script>
84
+ ```
85
+
86
+ ## API
87
+
88
+ ### rel-sidebar-provider Properties
89
+ | Name | Type | Default | Description |
90
+ |------|------|---------|-------------|
91
+ | `open` (reflected) | `boolean?` | `undefined` | Controlled open state (undefined = uncontrolled) |
92
+ | `defaultopen` | `boolean` | `true` | Default open state (uncontrolled mode) |
93
+ | `collapsed` (reflected) | `boolean?` | `undefined` | Controlled collapsed state |
94
+ | `defaultcollapsed` | `boolean` | `false` | Default collapsed state (uncontrolled mode) |
95
+ | `variant` | `"sidebar" \| "floating" \| "inset"` | `"sidebar"` | Visual variant |
96
+ | `side` | `"left" \| "right"` | `"left"` | Which side the sidebar appears on |
97
+ | `collapsible` | `"offcanvas" \| "icon" \| "none"` | `"icon"` | Collapsible behavior mode |
98
+ | `width` | `"sm" \| "md" \| "lg"` | `"md"` | Sidebar width (240/280/320px) |
99
+ | `persist-key` | `string` | `"rel-sidebar"` | localStorage key for persistence |
100
+ | `keyboard-shortcut` | `boolean` | `true` | Enable Ctrl/Cmd+B shortcut |
101
+ | `disable-persist` | `boolean` | `false` | Disable localStorage persistence |
102
+ | `disable-overlay-close` | `boolean` | `false` | Prevent closing on overlay click |
103
+
104
+ ### rel-sidebar Properties
105
+ | Name | Type | Default | Description |
106
+ |------|------|---------|-------------|
107
+ | `inset` | `boolean` | `false` | Use inset variant styling (overrides provider variant) |
108
+
109
+ ## Events
110
+ | Event | Detail | Description |
111
+ |-------|--------|-------------|
112
+ | `rel-sidebar-change` | `{ open, collapsed, reason }` | Fired when sidebar state changes |
113
+ | `rel-sidebar-state` | `{ isOpen, isCollapsed, isMobile, side, variant, collapsible, width }` | Internal state sync event |
114
+
115
+ ### Change Reasons
116
+ - `"trigger"`: Toggled via trigger button
117
+ - `"rail"`: Toggled collapsed state
118
+ - `"overlay"`: Closed by clicking overlay
119
+ - `"escape"`: Closed via Escape key
120
+ - `"shortcut"`: Toggled via keyboard shortcut (Ctrl/Cmd+B)
121
+ - `"api"`: Changed programmatically via `setOpen()` or `setCollapsed()`
122
+
123
+ ## Methods
124
+
125
+ ### Provider Methods
126
+ ```typescript
127
+ provider.setOpen(nextOpen: boolean, reason?: string): void
128
+ provider.setCollapsed(nextCollapsed: boolean, reason?: string): void
129
+ ```
130
+
131
+ ##Slots
132
+ | Slot | Component | Description |
133
+ |------|-----------|-------------|
134
+ | (default) | All | Main content area |
135
+
136
+ ## CSS Parts
137
+ None exposed.
138
+
139
+ ## Tokens / CSS Variables
140
+
141
+ ### Width Tokens (defined on `<rel-sidebar>`)
142
+ - `--sidebar-width-sm`: `240px` (small width)
143
+ - `--sidebar-width-md`: `280px` (medium width)
144
+ - `--sidebar-width-lg`: `320px` (large width)
145
+ - `--sidebar-width-collapsed`: `56px` (collapsed/icon-only width)
146
+
147
+ ### Transition Tokens
148
+ - `--sidebar-transition-duration`: `0.2s`
149
+ - `--sidebar-transition-timing`: `cubic-bezier(0.4, 0, 0.2, 1)`
150
+
151
+ ### Color Tokens
152
+ - `--rel-surface-secondary` - Sidebar background (`#fafafa`)
153
+ - `--rel-text-primary` - Text color
154
+ - `--rel-border-default` - Border color
155
+ - `--rel-overlay-scrim` - Overlay background (`rgba(0, 0, 0, 0.5)`)
156
+
157
+ ### Shadow Tokens (floating variant)
158
+ - `--rel-shadows-shadow-400` - Floating variant shadow
159
+
160
+ ### Other Tokens
161
+ - `--rel-borders-radius-border-radius-300` - Floating variant border radius
162
+ - `--rel-spacing-space-md` - Floating variant inset, header/footer padding
163
+ - `--rel-spacing-space-2xs` - Used in various layouts
164
+
165
+ ## Accessibility
166
+ - Sidebar uses `role="navigation"`
167
+ - Focus trap active in offcanvas mode
168
+ - Escape key closes offcanvas
169
+ - Keyboard shortcut (Ctrl/Cmd+B) for toggling
170
+ - Restores focus to trigger when closing
171
+
172
+ ### Keyboard Interactions
173
+ | Key | Action |
174
+ |-----|--------|
175
+ | `Ctrl/Cmd + B` | Toggle sidebar (open/collapsed depending on mode) |
176
+ | `Escape` | Close sidebar (offcanvas mode only) |
177
+ | `Tab` | Focus trap within sidebar when open in offcanvas mode |
178
+
179
+ ### Focus Behavior
180
+ - In offcanvas mode, focus moves to first focusable element when opened
181
+ - Focus is trapped within sidebar in offcanvas mode
182
+ - Focus restores to trigger button when closed
183
+
184
+ ## Notes / Edge Cases
185
+ - **Mobile detection**: Automatically detects `max-width: 768px` breakpoint and switches to offcanvas mode
186
+ - **Collapsible modes**:
187
+ - **offcanvas**: Sidebar slides in/out with overlay (like a drawer)
188
+ - **icon**: Sidebar collapses to icon-only width (56px)
189
+ - **none**: Sidebar cannot be collapsed (always full width)
190
+
191
+ - **Variants**:
192
+ - **sidebar**: Fixed position, full height
193
+ - **floating**: Inset with margins, rounded corners, shadow
194
+ - **inset**: Relative position, no shadow
195
+
196
+ - **State persistence**: By default, sidebar state is saved to localStorage and restored on reload (disable with `disable-persist`)
197
+ - **Controlled vs uncontrolled**: If `open` or `collapsed` props are set, the component is controlled and won't manage its own state
198
+ - **Mobile behavior**: On mobile, sidebar starts closed and ignores persisted state
199
+ - **Scroll locking**: In offcanvas mode, body scroll is locked when sidebar is open
200
+ - **Transitions disabled**: When `prefers-reduced-motion: reduce`
201
+ - The provider uses `display: contents` to avoid affecting layout
202
+ - Sidebar is overlaid with `z-index: 1000` in offcanvas mode
203
+ - Overlay is `z-index: 999`
204
+
205
+ ### Width Values
206
+ - **sm**: 240px
207
+ - **md**: 280px
208
+ - **lg**: 320px
209
+ - **collapsed**: 56px