@rhavenside/baseline-ui 1.0.16 → 1.0.18
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/README.md +162 -11
- package/dist/baseline.css +769 -0
- package/dist/baseline.css.map +1 -1
- package/dist/baseline.js +211 -1
- package/dist/baseline.js.map +3 -3
- package/dist/baseline.min.css +1 -1
- package/dist/baseline.min.js +1 -1
- package/dist/baseline.min.js.map +4 -4
- package/package.json +1 -1
- package/src/baseline.scss +5 -0
- package/src/components/_accordion.scss +123 -0
- package/src/components/_avatar.scss +169 -0
- package/src/components/_divider.scss +92 -0
- package/src/components/_sidebar.scss +284 -0
- package/src/components/_toast.scss +241 -0
- package/src/js/baseline.js +25 -1
- package/src/js/components/accordion.js +43 -0
- package/src/js/components/sidebar.js +101 -0
- package/src/js/components/toast.js +116 -0
- package/src/tokens/_z-index.scss +6 -0
package/README.md
CHANGED
|
@@ -109,6 +109,116 @@ import { initModal, openModal, closeModal } from '@rhavenside/baseline-ui/dist/b
|
|
|
109
109
|
</div>
|
|
110
110
|
```
|
|
111
111
|
|
|
112
|
+
#### Sidebar/Offcanvas
|
|
113
|
+
|
|
114
|
+
Responsive sidebar that transforms into an offcanvas drawer on mobile:
|
|
115
|
+
|
|
116
|
+
```html
|
|
117
|
+
<!-- Hamburger Button (Mobile) -->
|
|
118
|
+
<button class="bl-sidebar-toggle" data-sidebar-toggle="main-sidebar" aria-label="Toggle sidebar">
|
|
119
|
+
☰
|
|
120
|
+
</button>
|
|
121
|
+
|
|
122
|
+
<!-- Sidebar Container -->
|
|
123
|
+
<aside class="bl-sidebar" id="main-sidebar">
|
|
124
|
+
<div class="bl-sidebar-header">
|
|
125
|
+
<h3>Menu</h3>
|
|
126
|
+
<button class="bl-sidebar-close" aria-label="Close sidebar">×</button>
|
|
127
|
+
</div>
|
|
128
|
+
<nav class="bl-sidebar-nav">
|
|
129
|
+
<ul class="bl-nav bl-nav-vertical">
|
|
130
|
+
<li class="bl-nav-item">
|
|
131
|
+
<a href="#" class="bl-nav-link bl-active">Home</a>
|
|
132
|
+
</li>
|
|
133
|
+
<li class="bl-nav-item">
|
|
134
|
+
<a href="#" class="bl-nav-link">About</a>
|
|
135
|
+
</li>
|
|
136
|
+
</ul>
|
|
137
|
+
</nav>
|
|
138
|
+
</aside>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**Responsive Behavior:**
|
|
142
|
+
- **Desktop (≥768px)**: Always visible sidebar, can be collapsed with `bl-sidebar-collapsed` class
|
|
143
|
+
- **Mobile (<768px)**: Hidden by default, opens as offcanvas drawer with backdrop
|
|
144
|
+
|
|
145
|
+
#### Accordion
|
|
146
|
+
|
|
147
|
+
Collapsible content sections:
|
|
148
|
+
|
|
149
|
+
```html
|
|
150
|
+
<div class="bl-accordion" id="faq-accordion">
|
|
151
|
+
<div class="bl-accordion-item">
|
|
152
|
+
<button class="bl-accordion-header" type="button">
|
|
153
|
+
<span>Question 1</span>
|
|
154
|
+
<span class="bl-accordion-icon">▼</span>
|
|
155
|
+
</button>
|
|
156
|
+
<div class="bl-accordion-body">
|
|
157
|
+
<p>Answer 1</p>
|
|
158
|
+
</div>
|
|
159
|
+
</div>
|
|
160
|
+
<div class="bl-accordion-item">
|
|
161
|
+
<button class="bl-accordion-header" type="button">
|
|
162
|
+
<span>Question 2</span>
|
|
163
|
+
<span class="bl-accordion-icon">▼</span>
|
|
164
|
+
</button>
|
|
165
|
+
<div class="bl-accordion-body">
|
|
166
|
+
<p>Answer 2</p>
|
|
167
|
+
</div>
|
|
168
|
+
</div>
|
|
169
|
+
</div>
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Add `bl-accordion-single` class to allow only one item open at a time.
|
|
173
|
+
|
|
174
|
+
#### Divider
|
|
175
|
+
|
|
176
|
+
Horizontal and vertical separators:
|
|
177
|
+
|
|
178
|
+
```html
|
|
179
|
+
<!-- Horizontal Divider -->
|
|
180
|
+
<hr class="bl-divider">
|
|
181
|
+
|
|
182
|
+
<!-- Divider with Text -->
|
|
183
|
+
<div class="bl-divider-text">Or</div>
|
|
184
|
+
|
|
185
|
+
<!-- Vertical Divider -->
|
|
186
|
+
<div class="bl-d-flex">
|
|
187
|
+
<span>Left</span>
|
|
188
|
+
<hr class="bl-divider-vertical">
|
|
189
|
+
<span>Right</span>
|
|
190
|
+
</div>
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
#### Avatar
|
|
194
|
+
|
|
195
|
+
User profile images with initials fallback:
|
|
196
|
+
|
|
197
|
+
```html
|
|
198
|
+
<!-- Basic Avatar -->
|
|
199
|
+
<div class="bl-avatar" data-initials="JD">
|
|
200
|
+
<img src="avatar.jpg" alt="John Doe">
|
|
201
|
+
</div>
|
|
202
|
+
|
|
203
|
+
<!-- Avatar Sizes -->
|
|
204
|
+
<div class="bl-avatar bl-avatar-sm" data-initials="JD"></div>
|
|
205
|
+
<div class="bl-avatar bl-avatar-md" data-initials="JD"></div>
|
|
206
|
+
<div class="bl-avatar bl-avatar-lg" data-initials="JD"></div>
|
|
207
|
+
<div class="bl-avatar bl-avatar-xl" data-initials="JD"></div>
|
|
208
|
+
|
|
209
|
+
<!-- Avatar with Status -->
|
|
210
|
+
<div class="bl-avatar" data-initials="JD">
|
|
211
|
+
<span class="bl-avatar-status bl-avatar-status-online"></span>
|
|
212
|
+
</div>
|
|
213
|
+
|
|
214
|
+
<!-- Avatar Group -->
|
|
215
|
+
<div class="bl-avatar-group">
|
|
216
|
+
<div class="bl-avatar" data-initials="JD"></div>
|
|
217
|
+
<div class="bl-avatar" data-initials="JS"></div>
|
|
218
|
+
<div class="bl-avatar" data-initials="AB"></div>
|
|
219
|
+
</div>
|
|
220
|
+
```
|
|
221
|
+
|
|
112
222
|
### Utilities
|
|
113
223
|
|
|
114
224
|
```html
|
|
@@ -145,17 +255,29 @@ All components are automatically initialized when JavaScript is loaded:
|
|
|
145
255
|
#### Manual Usage
|
|
146
256
|
|
|
147
257
|
```javascript
|
|
148
|
-
import {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
258
|
+
import {
|
|
259
|
+
initModal, openModal, closeModal,
|
|
260
|
+
initSidebar, toggleSidebar, openSidebar, closeSidebar,
|
|
261
|
+
initAccordion, toggleAccordionItem,
|
|
262
|
+
showToast, showToastSuccess, showToastError
|
|
263
|
+
} from '@rhavenside/baseline-ui/dist/baseline.js';
|
|
264
|
+
|
|
265
|
+
// Sidebar
|
|
266
|
+
toggleSidebar('main-sidebar');
|
|
267
|
+
openSidebar('main-sidebar');
|
|
268
|
+
closeSidebar('main-sidebar');
|
|
269
|
+
|
|
270
|
+
// Accordion
|
|
271
|
+
const accordion = document.getElementById('faq-accordion');
|
|
272
|
+
initAccordion(accordion);
|
|
273
|
+
|
|
274
|
+
// Toast Notifications
|
|
275
|
+
showToastSuccess('Operation completed successfully!');
|
|
276
|
+
showToastError('Something went wrong');
|
|
277
|
+
showToast('Custom message', 'info', {
|
|
278
|
+
position: 'bottom-right',
|
|
279
|
+
duration: 3000
|
|
280
|
+
});
|
|
159
281
|
```
|
|
160
282
|
|
|
161
283
|
#### Available Functions
|
|
@@ -165,6 +287,35 @@ initModal(modal);
|
|
|
165
287
|
- **Tooltip**: `initTooltip()`
|
|
166
288
|
- **Tabs**: `initTabs()`
|
|
167
289
|
- **Alert**: `initAlert()`, `dismissAlert()`
|
|
290
|
+
- **Sidebar**: `initSidebar()`, `toggleSidebar()`, `openSidebar()`, `closeSidebar()`
|
|
291
|
+
- **Accordion**: `initAccordion()`, `toggleAccordionItem()`
|
|
292
|
+
- **Toast**: `showToast()`, `showToastSuccess()`, `showToastError()`, `showToastWarning()`, `showToastInfo()`
|
|
293
|
+
|
|
294
|
+
#### Toast Notifications
|
|
295
|
+
|
|
296
|
+
Toast notifications provide user feedback with auto-dismiss:
|
|
297
|
+
|
|
298
|
+
```javascript
|
|
299
|
+
// Success notification
|
|
300
|
+
showToastSuccess('Data saved successfully!');
|
|
301
|
+
|
|
302
|
+
// Error notification
|
|
303
|
+
showToastError('Failed to save data');
|
|
304
|
+
|
|
305
|
+
// Warning notification
|
|
306
|
+
showToastWarning('Please check your input');
|
|
307
|
+
|
|
308
|
+
// Info notification
|
|
309
|
+
showToastInfo('New update available');
|
|
310
|
+
|
|
311
|
+
// Custom toast
|
|
312
|
+
showToast('Custom message', 'info', {
|
|
313
|
+
position: 'top-right', // top-left, top-right, bottom-left, bottom-right, top-center, bottom-center
|
|
314
|
+
duration: 5000, // Auto-dismiss after 5 seconds (0 to disable)
|
|
315
|
+
title: 'Custom Title',
|
|
316
|
+
closable: true
|
|
317
|
+
});
|
|
318
|
+
```
|
|
168
319
|
|
|
169
320
|
## License
|
|
170
321
|
|