@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 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 { initModal, openModal, closeModal } from '@rhavenside/baseline-ui/dist/baseline.js';
149
-
150
- // Open modal
151
- openModal('my-modal');
152
-
153
- // Close modal
154
- closeModal('my-modal');
155
-
156
- // Initialize manually
157
- const modal = document.getElementById('my-modal');
158
- initModal(modal);
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