@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,253 @@
1
+ # rel-date-picker
2
+
3
+ A fully accessible date picker component built with Lit for the Reliability Design System. Features a trigger button with calendar popover including month/year dropdowns.
4
+
5
+ ## Features
6
+
7
+ - Trigger button with calendar popover
8
+ - Month and year dropdowns for easy navigation
9
+ - Single date selection
10
+ - Optional clear button
11
+ - Min/max date constraints
12
+ - Custom disabled date predicate
13
+ - Keyboard navigation
14
+ - Full ARIA support
15
+ - Token-driven styling
16
+
17
+ ## Usage
18
+
19
+ ### Basic
20
+
21
+ ```html
22
+ <rel-date-picker></rel-date-picker>
23
+ ```
24
+
25
+ ### With Value
26
+
27
+ ```html
28
+ <rel-date-picker value="2026-01-16"></rel-date-picker>
29
+ ```
30
+
31
+ ### With Label
32
+
33
+ ```html
34
+ <rel-date-picker label="Select appointment date"></rel-date-picker>
35
+ ```
36
+
37
+ ### With Min/Max
38
+
39
+ ```html
40
+ <rel-date-picker
41
+ min="2026-01-01"
42
+ max="2026-12-31"
43
+ placeholder="Select a date in 2026"
44
+ ></rel-date-picker>
45
+ ```
46
+
47
+ ### Clearable
48
+
49
+ ```html
50
+ <rel-date-picker value="2026-01-16" clearable></rel-date-picker>
51
+ ```
52
+
53
+ ### Disabled
54
+
55
+ ```html
56
+ <rel-date-picker value="2026-01-16" disabled></rel-date-picker>
57
+ ```
58
+
59
+ ### Programmatic Control (JavaScript)
60
+
61
+ ```javascript
62
+ const picker = document.querySelector('rel-date-picker');
63
+
64
+ // Set value
65
+ picker.value = '2026-01-16';
66
+
67
+ // Open programmatically
68
+ picker.open = true;
69
+
70
+ // Custom disabled dates (e.g., disable weekends)
71
+ picker.isDateDisabled = (date) => {
72
+ const day = date.getDay();
73
+ return day === 0 || day === 6; // Sunday or Saturday
74
+ };
75
+
76
+ // Listen to changes
77
+ picker.addEventListener('rel-change', (e) => {
78
+ console.log('Selected date:', e.detail.value); // "2026-01-16"
79
+ console.log('Date object:', e.detail.date); // Date object
80
+ });
81
+
82
+ // Listen to popover open/close
83
+ picker.addEventListener('rel-open-change', (e) => {
84
+ console.log('Popover open:', e.detail.open); // boolean
85
+ });
86
+ ```
87
+
88
+ ## Attributes
89
+
90
+ | Attribute | Type | Default | Description |
91
+ |-----------|------|---------|-------------|
92
+ | `value` | `string \| null` | `null` | Selected date in ISO format (YYYY-MM-DD) |
93
+ | `placeholder` | `string` | `"Select date"` | Placeholder text when no date selected |
94
+ | `label` | `string \| null` | `null` | Accessible label for the date picker |
95
+ | `disabled` | `boolean` | `false` | Disables all interaction |
96
+ | `required` | `boolean` | `false` | Sets aria-required (no validation logic) |
97
+ | `min` | `string \| null` | `null` | Minimum selectable date (ISO format) |
98
+ | `max` | `string \| null` | `null` | Maximum selectable date (ISO format) |
99
+ | `week-start` | `"sun" \| "mon"` | `"sun"` | First day of the week |
100
+ | `locale` | `string` | `"en-US"` | Locale for month names (uses Intl.DateTimeFormat) |
101
+ | `open` | `boolean` | `false` | Controls popover open state |
102
+ | `close-on-select` | `boolean` | `true` | Close popover after selecting a date |
103
+ | `clearable` | `boolean` | `false` | Show clear button when date is selected |
104
+
105
+ ## Properties
106
+
107
+ | Property | Type | Description |
108
+ |----------|------|-------------|
109
+ | `isDateDisabled` | `(date: Date) => boolean` | Custom function to disable specific dates |
110
+
111
+ ## Events
112
+
113
+ | Event | Detail | Description |
114
+ |-------|--------|-------------|
115
+ | `rel-change` | `{ value: string \| null, date: Date \| null }` | Fired when selected date changes |
116
+ | `rel-open-change` | `{ open: boolean }` | Fired when popover opens/closes |
117
+
118
+ ## Keyboard Navigation
119
+
120
+ ### Trigger Button
121
+ - **Enter/Space**: Opens the popover
122
+ - **Arrow Down**: Opens the popover
123
+
124
+ ### Inside Calendar
125
+ - **Arrow keys**: Navigate days (left/right) and weeks (up/down)
126
+ - **Home/End**: Jump to week start/end
127
+ - **PageUp/PageDown**: Change month
128
+ - **Shift + PageUp/PageDown**: Change year
129
+ - **Enter/Space**: Select focused day
130
+ - **Escape**: Close popover
131
+
132
+ ### Month/Year Dropdowns
133
+ - **Tab**: Navigate between dropdowns
134
+ - **Click**: Select month or year
135
+
136
+ ## Calendar Features
137
+
138
+ ### Month Dropdown
139
+ - Lists all 12 months localized to the specified locale
140
+ - Scroll through months quickly
141
+ - Current month is highlighted
142
+
143
+ ### Year Dropdown
144
+ - Scrollable list of years
145
+ - Range automatically calculated:
146
+ - With min/max: Uses constrained range with buffer
147
+ - Without: Defaults to [currentYear - 100, currentYear + 10]
148
+ - Current year is highlighted
149
+
150
+ ## Custom Disabled Dates
151
+
152
+ Use the `isDateDisabled` property to implement custom logic:
153
+
154
+ ```javascript
155
+ const picker = document.querySelector('rel-date-picker');
156
+
157
+ // Disable weekends
158
+ picker.isDateDisabled = (date) => {
159
+ const day = date.getDay();
160
+ return day === 0 || day === 6;
161
+ };
162
+
163
+ // Disable specific dates
164
+ const blackoutDates = ['2026-01-15', '2026-01-20', '2026-01-25'];
165
+ picker.isDateDisabled = (date) => {
166
+ const iso = date.toISOString().split('T')[0];
167
+ return blackoutDates.includes(iso);
168
+ };
169
+
170
+ // Disable dates before today
171
+ picker.isDateDisabled = (date) => {
172
+ const today = new Date();
173
+ today.setHours(0, 0, 0, 0);
174
+ return date < today;
175
+ };
176
+ ```
177
+
178
+ ## Complete Example
179
+
180
+ ```html
181
+ <rel-date-picker
182
+ id="appointment-picker"
183
+ label="Appointment Date"
184
+ placeholder="Choose a date"
185
+ min="2026-01-01"
186
+ max="2026-12-31"
187
+ clearable
188
+ required
189
+ ></rel-date-picker>
190
+
191
+ <script>
192
+ const picker = document.getElementById('appointment-picker');
193
+
194
+ // Disable weekends
195
+ picker.isDateDisabled = (date) => {
196
+ const day = date.getDay();
197
+ return day === 0 || day === 6;
198
+ };
199
+
200
+ // Handle selection
201
+ picker.addEventListener('rel-change', (e) => {
202
+ if (e.detail.value) {
203
+ console.log('Appointment scheduled for:', e.detail.value);
204
+ } else {
205
+ console.log('Appointment cleared');
206
+ }
207
+ });
208
+
209
+ // Handle popover state
210
+ picker.addEventListener('rel-open-change', (e) => {
211
+ console.log('Calendar', e.detail.open ? 'opened' : 'closed');
212
+ });
213
+ </script>
214
+ ```
215
+
216
+ ## Accessibility
217
+
218
+ - Trigger button has proper `aria-haspopup`, `aria-expanded`, and `aria-label`
219
+ - Calendar popover uses `role="dialog"`
220
+ - Day buttons use `role="gridcell"` with proper `aria-label` and `aria-selected`
221
+ - All interactive elements are keyboard accessible
222
+ - Focus management:
223
+ - Opening popover focuses first day
224
+ - Closing popover returns focus to trigger
225
+ - Visible focus rings on all interactive elements
226
+ - Respects user's locale for month names and date formatting
227
+
228
+ ## Styling
229
+
230
+ The component uses design tokens from the Reliability Design System. All colors, spacing, and typography are inherited from CSS variables.
231
+
232
+ Key tokens used:
233
+ - `--rel-colors-*` for all colors
234
+ - `--rel-spacing-*` for spacing
235
+ - `--rel-fontSizes-*`, `--rel-fontWeights-*` for typography
236
+ - `--rel-borders-*` for borders and radius
237
+ - `--rel-shadows-*` for popover shadow
238
+ - Selected date: `--rel-colors-green-primary`
239
+ - Today indicator: `--rel-colors-blue-primary`
240
+ - Focus rings: `--rel-colors-blue-primary`
241
+
242
+ ## Date Format
243
+
244
+ - **Input/Output**: ISO 8601 format (YYYY-MM-DD)
245
+ - **Display**: Localized format based on `locale` attribute
246
+ - **Example**:
247
+ - Value: `"2026-01-16"`
248
+ - Display (en-US): `"January 16, 2026"`
249
+ - Display (es-ES): `"16 de enero de 2026"`
250
+
251
+ ## Browser Support
252
+
253
+ Works in all modern browsers with ES2020 support and native Web Components.
@@ -0,0 +1 @@
1
+ export * from "./rel-date-picker";