@reliability-design/web 1.0.2 → 1.0.6
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 +132 -0
- package/dist/components/rel-accordion/rel-accordion.ts +61 -29
- package/dist/components/rel-alert/README.md +141 -0
- package/dist/components/rel-alert/rel-alert.ts +110 -67
- package/dist/components/rel-avatar/README.md +119 -0
- package/dist/components/rel-avatar/rel-avatar.ts +8 -15
- package/dist/components/rel-badge/README.md +86 -0
- package/dist/components/rel-badge/rel-badge.ts +28 -21
- package/dist/components/rel-breadcrumb/README.md +102 -0
- package/dist/components/rel-breadcrumb/rel-breadcrumb.ts +24 -18
- package/dist/components/rel-button/README.md +130 -0
- package/dist/components/rel-button/rel-button.ts +39 -59
- package/dist/components/rel-calendar/README.md +109 -0
- package/dist/components/rel-calendar/index.ts +1 -0
- package/dist/components/rel-calendar/rel-calendar.ts +467 -0
- package/dist/components/rel-card/README.md +94 -0
- package/dist/components/rel-card/rel-card.ts +21 -11
- package/dist/components/rel-cardmedia/README.md +127 -0
- package/dist/components/rel-cardmedia/rel-cardmedia.ts +22 -18
- package/dist/components/rel-carousel/README.md +166 -0
- package/dist/components/rel-carousel/index.ts +1 -0
- package/dist/components/rel-carousel/rel-carousel.ts +469 -0
- package/dist/components/rel-chart/README.md +286 -0
- package/dist/components/rel-chart/index.ts +1 -0
- package/dist/components/rel-chart/rel-chart.ts +736 -0
- package/dist/components/rel-checkbox/README.md +77 -0
- package/dist/components/rel-checkbox/rel-checkbox.ts +36 -45
- package/dist/components/rel-chip/README.md +114 -0
- package/dist/components/rel-chip/rel-chip.ts +47 -122
- package/dist/components/rel-container/README.md +99 -0
- package/dist/components/rel-container/rel-container.ts +1 -6
- package/dist/components/rel-date-picker/README.md +253 -0
- package/dist/components/rel-date-picker/index.ts +1 -0
- package/dist/components/rel-date-picker/rel-date-picker.ts +916 -0
- package/dist/components/rel-divider/README.md +100 -0
- package/dist/components/rel-divider/rel-divider.ts +37 -37
- package/dist/components/rel-drawer/README.md +200 -0
- package/dist/components/rel-drawer/index.ts +1 -0
- package/dist/components/rel-drawer/rel-drawer.ts +621 -0
- package/dist/components/rel-kbd/README.md +151 -0
- package/dist/components/rel-kbd/rel-kbd.ts +118 -0
- package/dist/components/rel-layout/README.md +88 -0
- package/dist/components/rel-layout/rel-layout.ts +12 -14
- package/dist/components/rel-menu/README.md +151 -0
- package/dist/components/rel-menu/rel-menu.ts +18 -10
- package/dist/components/rel-menubar/README.md +329 -0
- package/dist/components/rel-menubar/index.ts +2 -0
- package/dist/components/rel-menubar/rel-menubar-menu.ts +16 -0
- package/dist/components/rel-menubar/rel-menubar.ts +576 -0
- package/dist/components/rel-nav-menu/README.md +289 -0
- package/dist/components/rel-nav-menu/index.ts +3 -0
- package/dist/components/rel-nav-menu/rel-nav-menu-item.ts +143 -0
- package/dist/components/rel-nav-menu/rel-nav-menu-panel.ts +53 -0
- package/dist/components/rel-nav-menu/rel-nav-menu.ts +331 -0
- package/dist/components/rel-navbar/README.md +126 -0
- package/dist/components/rel-navbar/rel-navbar.ts +91 -0
- package/dist/components/rel-otp/README.md +440 -0
- package/dist/components/rel-otp/index.ts +1 -0
- package/dist/components/rel-otp/rel-otp.ts +504 -0
- package/dist/components/rel-pagination/README.md +410 -0
- package/dist/components/rel-pagination/index.ts +1 -0
- package/dist/components/rel-pagination/rel-pagination.ts +376 -0
- package/dist/components/rel-popover/README.md +568 -0
- package/dist/components/rel-popover/index.ts +2 -0
- package/dist/components/rel-popover/rel-popover-content.ts +55 -0
- package/dist/components/rel-popover/rel-popover.ts +327 -0
- package/dist/components/rel-progress/README.md +110 -0
- package/dist/components/rel-progress/rel-progress.ts +58 -20
- package/dist/components/rel-quote-page/README.md +166 -0
- package/dist/components/rel-quote-page/rel-quote-page.ts +816 -0
- package/dist/components/rel-radio/README.md +120 -0
- package/dist/components/rel-radio/rel-radio.ts +41 -73
- package/dist/components/rel-resizable/README.md +140 -0
- package/dist/components/rel-resizable/index.ts +3 -0
- package/dist/components/rel-resizable/rel-resizable-group.ts +374 -0
- package/dist/components/rel-resizable/rel-resizable-handle.ts +149 -0
- package/dist/components/rel-resizable/rel-resizable-panel.ts +47 -0
- package/dist/components/rel-segmented-button/README.md +141 -0
- package/dist/components/rel-segmented-button/rel-segmented-button.ts +18 -13
- package/dist/components/rel-select/README.md +107 -0
- package/dist/components/rel-select/rel-select.ts +14 -14
- package/dist/components/rel-sheet/README.md +224 -0
- package/dist/components/rel-sheet/rel-sheet.ts +683 -0
- package/dist/components/rel-sidebar/README.md +209 -0
- package/dist/components/rel-sidebar/rel-sidebar.ts +1158 -0
- package/dist/components/rel-slider/README.md +135 -0
- package/dist/components/rel-slider/rel-slider.ts +19 -7
- package/dist/components/rel-snackbar/README.md +134 -0
- package/dist/components/rel-snackbar/rel-snackbar.ts +73 -2
- package/dist/components/rel-stepper/README.md +160 -0
- package/dist/components/rel-stepper/rel-stepper.ts +29 -8
- package/dist/components/rel-switch/README.md +102 -0
- package/dist/components/rel-switch/rel-switch.ts +22 -11
- package/dist/components/rel-tab/README.md +163 -0
- package/dist/components/rel-tab/rel-tab.ts +46 -22
- package/dist/components/rel-table/README.md +178 -0
- package/dist/components/rel-table/rel-table-body.ts +16 -0
- package/dist/components/rel-table/rel-table-caption.ts +22 -0
- package/dist/components/rel-table/rel-table-cell.ts +49 -0
- package/dist/components/rel-table/rel-table-footer.ts +18 -0
- package/dist/components/rel-table/rel-table-head.ts +33 -0
- package/dist/components/rel-table/rel-table-header.ts +16 -0
- package/dist/components/rel-table/rel-table-row.ts +32 -0
- package/dist/components/rel-table/rel-table.ts +47 -0
- package/dist/components/rel-textfield/README.md +90 -0
- package/dist/components/rel-textfield/rel-textfield.ts +37 -21
- package/dist/components/rel-toast/README.md +148 -0
- package/dist/components/rel-toast/rel-toast.ts +32 -14
- package/dist/components/rel-tooltip/README.md +103 -0
- package/dist/components/rel-tooltip/rel-tooltip.ts +9 -9
- package/dist/index.d.mts +846 -7
- package/dist/index.d.ts +846 -7
- package/dist/index.js +10860 -1803
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +10820 -1809
- package/dist/index.mjs.map +1 -1
- package/dist/styles/vars.css +293 -183
- package/dist/vars-ITL2K3KO.css +294 -0
- package/package.json +2 -2
- package/dist/components/rel-accordion/rel-accordion.stories.ts +0 -313
- package/dist/components/rel-alert/rel-alert.stories.ts +0 -412
- package/dist/components/rel-avatar/rel-avatar.stories.ts +0 -327
- package/dist/components/rel-badge/rel-badge.stories.ts +0 -350
- package/dist/components/rel-breadcrumb/rel-breadcrumb.stories.ts +0 -306
- package/dist/components/rel-button/rel-button.stories.ts +0 -356
- package/dist/components/rel-card/rel-card.stories.ts +0 -299
- package/dist/components/rel-cardmedia/rel-cardmedia.stories.ts +0 -368
- package/dist/components/rel-checkbox/rel-checkbox.stories.ts +0 -414
- package/dist/components/rel-chip/rel-chip.stories.ts +0 -552
- package/dist/components/rel-container/rel-container.stories.ts +0 -239
- package/dist/components/rel-divider/rel-divider.stories.ts +0 -229
- package/dist/components/rel-layout/rel-layout.stories.ts +0 -713
- package/dist/components/rel-menu/rel-menu.stories.ts +0 -910
- package/dist/components/rel-progress/rel-progress.stories.ts +0 -817
- package/dist/components/rel-radio/rel-radio.stories.ts +0 -1048
- package/dist/components/rel-segmented-button/rel-segmented-button.stories.ts +0 -1079
- package/dist/components/rel-select/rel-select.stories.ts +0 -1201
- package/dist/components/rel-slider/rel-slider.stories.ts +0 -730
- package/dist/components/rel-snackbar/rel-snackbar.stories.ts +0 -808
- package/dist/components/rel-stepper/rel-stepper.stories.ts +0 -752
- package/dist/components/rel-switch/rel-switch.stories.ts +0 -441
- package/dist/components/rel-tab/rel-tab.stories.ts +0 -492
- package/dist/components/rel-textfield/rel-textfield.stories.ts +0 -710
- package/dist/components/rel-toast/rel-toast.stories.ts +0 -394
- package/dist/components/rel-tooltip/rel-tooltip.stories.ts +0 -364
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# rel-quote-page
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
A comprehensive freight shipping quote form component with all necessary fields for LTL (Less Than Truckload) shipping quotes. Features two main sections (Shipping Details and Commodity Details) with 24+ form fields including location search, service level tabs, radio groups, dropdowns, dimension inputs, and date picker. Automatically dispatches `form-change` events for external form handling.
|
|
5
|
+
|
|
6
|
+
## Usage
|
|
7
|
+
```html
|
|
8
|
+
<!-- Basic usage -->
|
|
9
|
+
<rel-quote-page></rel-quote-page>
|
|
10
|
+
|
|
11
|
+
<!-- With form change listener -->
|
|
12
|
+
<rel-quote-page id="quoteForm"></rel-quote-page>
|
|
13
|
+
<script>
|
|
14
|
+
const form = document.getElementById('quoteForm');
|
|
15
|
+
form.addEventListener('form-change', (e) => {
|
|
16
|
+
console.log('Form data:', e.detail);
|
|
17
|
+
// e.detail contains the complete QuoteFormData object
|
|
18
|
+
});
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<!-- Programmatically access form data -->
|
|
22
|
+
<rel-quote-page id="quote"></rel-quote-page>
|
|
23
|
+
<script>
|
|
24
|
+
const quote = document.getElementById('quote');
|
|
25
|
+
// Access form data via the formData property
|
|
26
|
+
console.log(quote.formData.pickupLocation);
|
|
27
|
+
console.log(quote.formData.serviceLevel);
|
|
28
|
+
console.log(quote.formData.totalWeight);
|
|
29
|
+
</script>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## API
|
|
33
|
+
|
|
34
|
+
### Properties
|
|
35
|
+
All form data is managed internally via a reactive `formData` state property (not directly settable). Access it via the `formData` property or the `form-change` event.
|
|
36
|
+
|
|
37
|
+
## Events
|
|
38
|
+
| Event | Detail | Description |
|
|
39
|
+
|-------|--------|-------------|
|
|
40
|
+
| `form-change` | `QuoteFormData` | Fired whenever any form field changes |
|
|
41
|
+
|
|
42
|
+
## QuoteFormData Interface
|
|
43
|
+
```typescript
|
|
44
|
+
interface QuoteFormData {
|
|
45
|
+
// Shipping Details
|
|
46
|
+
pickupLocation: string;
|
|
47
|
+
dropoffLocation: string;
|
|
48
|
+
serviceLevel: "standard" | "guaranteed";
|
|
49
|
+
originType: "commercial" | "residential";
|
|
50
|
+
destinationType: "commercial" | "residential";
|
|
51
|
+
loadingRequirements: string;
|
|
52
|
+
deliveryRequirements: string;
|
|
53
|
+
loadingLimitedAccessType: string;
|
|
54
|
+
deliveryLimitedAccessType: string;
|
|
55
|
+
pickupDate: string; // Date in YYYY-MM-DD format
|
|
56
|
+
|
|
57
|
+
// Commodity Details
|
|
58
|
+
isHazmat: boolean;
|
|
59
|
+
commodity: string;
|
|
60
|
+
commodityDescription: string;
|
|
61
|
+
handlingUnits: number;
|
|
62
|
+
handlingType: string;
|
|
63
|
+
length: number; // inches
|
|
64
|
+
width: number; // inches
|
|
65
|
+
height: number; // inches
|
|
66
|
+
totalWeight: number; // lbs
|
|
67
|
+
class: string; // freight class
|
|
68
|
+
insuredValue: number;
|
|
69
|
+
nmfcNumber: string;
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Slots
|
|
74
|
+
None. This component provides a complete, self-contained form UI.
|
|
75
|
+
|
|
76
|
+
## CSS Parts
|
|
77
|
+
None exposed.
|
|
78
|
+
|
|
79
|
+
## Tokens / CSS Variables
|
|
80
|
+
|
|
81
|
+
### Semantic Tokens
|
|
82
|
+
- `--rel-fontFamilies-primary` - Font family
|
|
83
|
+
|
|
84
|
+
### Font Tokens
|
|
85
|
+
- `--rel-fontSizes-xl` - Section titles (24px)
|
|
86
|
+
- `--rel-fontSizes-lg` - Large text
|
|
87
|
+
- `--rel-fontSizes-md` - Subsection titles (16px)
|
|
88
|
+
- `--rel-fontSizes-sm` - Field labels, inputs (14px)
|
|
89
|
+
- `--rel-fontSizes-xs` - Helper text, dimension labels (12px)
|
|
90
|
+
- `--rel-fontWeights-bold` - Section titles
|
|
91
|
+
- `--rel-fontWeights-semibold` - Subsection titles
|
|
92
|
+
- `--rel-fontWeights-medium` - Field labels, radio labels
|
|
93
|
+
|
|
94
|
+
### Color Tokens
|
|
95
|
+
- `--rel-colors-white` - Component background, input backgrounds, tab background
|
|
96
|
+
- `--rel-colors-black` - Section title, active tab background, radio selected, input focus border
|
|
97
|
+
- `--rel-colors-green-primary` - Subsection title bullet
|
|
98
|
+
- `--rel-colors-red-primary` - Required field asterisks
|
|
99
|
+
- `--rel-colors-gray-heading` - Field labels, subsection titles
|
|
100
|
+
- `--rel-colors-gray-primary` - Input text, radio labels
|
|
101
|
+
- `--rel-colors-gray-placeholder` - Helper text
|
|
102
|
+
- `--rel-colors-gray-border` - Input borders, tab borders
|
|
103
|
+
|
|
104
|
+
### Border Tokens
|
|
105
|
+
- `--rel-borders-radius-border-radius-300` - Component and input border radius (16px/similar)
|
|
106
|
+
|
|
107
|
+
### Spacing Tokens
|
|
108
|
+
- `--rel-spacing-space-xl` - Component padding
|
|
109
|
+
- `--rel-spacing-space-2xl` - Section bottom margin
|
|
110
|
+
- `--rel-spacing-space-lg` - Section row gap, field bottom margin
|
|
111
|
+
- `--rel-spacing-space-md` - Subsection margins, field group gap, service level tab bottom margin
|
|
112
|
+
- `--rel-spacing-space-sm` - Input padding, radio group gap
|
|
113
|
+
- `--rel-spacing-space-xs` - Tab padding, dimension input padding
|
|
114
|
+
- `--rel-spacing-space-2xs` - Field label-input gap
|
|
115
|
+
- `--rel-spacing-space-3xs` - Info icon gap, dimension label gap
|
|
116
|
+
|
|
117
|
+
## Accessibility
|
|
118
|
+
- All required fields are marked with a red asterisk and `required` class
|
|
119
|
+
- Input fields have associated `<label>` elements
|
|
120
|
+
- Radio groups use custom styled divs (not native radios) but support click interaction
|
|
121
|
+
- Helper text provides additional context for complex fields
|
|
122
|
+
- Info icons (`ⓘ`) use `cursor: help` to indicate additional information
|
|
123
|
+
|
|
124
|
+
### Keyboard Interactions
|
|
125
|
+
- Standard form navigation (Tab, Shift+Tab)
|
|
126
|
+
- Native input keyboard support (text, number, date, select)
|
|
127
|
+
- Service level tabs are `<button>` elements and keyboard accessible
|
|
128
|
+
|
|
129
|
+
### Focus Behavior
|
|
130
|
+
- Inputs show focus border via `:focus-visible` (black border)
|
|
131
|
+
- Standard browser focus behavior for all form controls
|
|
132
|
+
|
|
133
|
+
## Notes / Edge Cases
|
|
134
|
+
- **Form sections**:
|
|
135
|
+
1. **Shipping Details**: Pickup/dropoff locations, service level, origin/destination types, loading/delivery requirements, limited access types, pickup date
|
|
136
|
+
2. **Commodity Details**: Hazmat status, commodity info, handling units/type, dimensions (L/W/H), total weight, class, insured value, NMFC number
|
|
137
|
+
|
|
138
|
+
- **Service Level**: Toggle between "Standard" and "Guaranteed" using tab buttons (black background when active)
|
|
139
|
+
|
|
140
|
+
- **Radio groups**: Custom styled (not native `<input type="radio">`) using divs with visual indicators
|
|
141
|
+
|
|
142
|
+
- **Dimension inputs**: Grid layout with 4 columns (Length, Width, Height, Total Weight)
|
|
143
|
+
- Width and Height show "96\" max" helper text
|
|
144
|
+
- Inputs show unit labels (inches, lbs)
|
|
145
|
+
|
|
146
|
+
- **Responsive design**: Two-column grid on desktop (`grid-template-columns: 1fr 1fr`), single column on mobile (≤768px)
|
|
147
|
+
|
|
148
|
+
- **Location inputs**: Include search icon emoji (🔍) on the right side
|
|
149
|
+
|
|
150
|
+
- **Helper text**: Loading Requirements field includes detailed explanation about inside pickup/delivery and liftgate requirements
|
|
151
|
+
|
|
152
|
+
- **Info icons**: Small circular icons with `ⓘ` character, `cursor: help`
|
|
153
|
+
|
|
154
|
+
- **Subsection titles**: Include a green circular bullet (`::before` pseudo-element)
|
|
155
|
+
|
|
156
|
+
- **Dropdowns**: Custom styled `<select>` with SVG dropdown arrow (appearance: none)
|
|
157
|
+
|
|
158
|
+
- The component has max-width of 900px and is centered with `margin: 0 auto`
|
|
159
|
+
|
|
160
|
+
- Box shadow and border radius give the component a card-like appearance
|
|
161
|
+
|
|
162
|
+
- All form updates trigger the `form-change` event with the complete `formData` object
|
|
163
|
+
|
|
164
|
+
- Number inputs use `parseInt()` or `parseFloat()` with fallback to 0 for invalid values
|
|
165
|
+
|
|
166
|
+
- Date input is native HTML5 `type="date"`
|