@velkymx/vibeui 0.3.0 → 0.4.0
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 +362 -1
- package/dist/App.vue.d.ts +2 -0
- package/dist/components/HelloWorld.vue.d.ts +5 -0
- package/dist/components/VibeAccordion.vue.d.ts +51 -0
- package/dist/components/VibeAccordionItem.vue.d.ts +57 -0
- package/dist/components/VibeAlert.vue.d.ts +61 -0
- package/dist/components/VibeBadge.vue.d.ts +52 -0
- package/dist/components/VibeBreadcrumb.vue.d.ts +43 -0
- package/dist/components/VibeBreadcrumbItem.vue.d.ts +51 -0
- package/dist/components/VibeButton.vue.d.ts +99 -0
- package/dist/components/VibeButtonGroup.vue.d.ts +61 -0
- package/dist/components/VibeCard.vue.d.ts +126 -0
- package/dist/components/VibeCardBody.vue.d.ts +34 -0
- package/dist/components/VibeCardFooter.vue.d.ts +34 -0
- package/dist/components/VibeCardHeader.vue.d.ts +34 -0
- package/dist/components/VibeCardImg.vue.d.ts +44 -0
- package/dist/components/VibeCardText.vue.d.ts +33 -0
- package/dist/components/VibeCardTitle.vue.d.ts +33 -0
- package/dist/components/VibeCarousel.vue.d.ts +137 -0
- package/dist/components/VibeCarouselSlide.vue.d.ts +80 -0
- package/dist/components/VibeCloseButton.vue.d.ts +38 -0
- package/dist/components/VibeCol.vue.d.ts +206 -0
- package/dist/components/VibeCollapse.vue.d.ts +70 -0
- package/dist/components/VibeContainer.vue.d.ts +44 -0
- package/dist/components/VibeDataTable.vue.d.ts +261 -0
- package/dist/components/VibeDropdown.vue.d.ts +96 -0
- package/dist/components/VibeDropdownItem.vue.d.ts +81 -0
- package/dist/components/VibeFormCheckbox.vue.d.ts +134 -0
- package/dist/components/VibeFormDatepicker.vue.d.ts +154 -0
- package/dist/components/VibeFormGroup.vue.d.ts +112 -0
- package/dist/components/VibeFormInput.vue.d.ts +154 -0
- package/dist/components/VibeFormRadio.vue.d.ts +132 -0
- package/dist/components/VibeFormSelect.vue.d.ts +167 -0
- package/dist/components/VibeFormSpinbutton.vue.d.ts +176 -0
- package/dist/components/VibeFormSwitch.vue.d.ts +107 -0
- package/dist/components/VibeFormTextarea.vue.d.ts +163 -0
- package/dist/components/VibeFormWysiwyg.vue.d.ts +156 -0
- package/dist/components/VibeIcon.vue.d.ts +83 -0
- package/dist/components/VibeListGroup.vue.d.ts +63 -0
- package/dist/components/VibeListGroupItem.vue.d.ts +90 -0
- package/dist/components/VibeModal.vue.d.ts +126 -0
- package/dist/components/VibeNav.vue.d.ts +81 -0
- package/dist/components/VibeNavItem.vue.d.ts +80 -0
- package/dist/components/VibeNavbar.vue.d.ts +71 -0
- package/dist/components/VibeNavbarBrand.vue.d.ts +42 -0
- package/dist/components/VibeNavbarNav.vue.d.ts +36 -0
- package/dist/components/VibeNavbarToggle.vue.d.ts +26 -0
- package/dist/components/VibeOffcanvas.vue.d.ts +89 -0
- package/dist/components/VibePagination.vue.d.ts +72 -0
- package/dist/components/VibePaginationItem.vue.d.ts +62 -0
- package/dist/components/VibePlaceholder.vue.d.ts +70 -0
- package/dist/components/VibePopover.vue.d.ts +69 -0
- package/dist/components/VibeProgress.vue.d.ts +33 -0
- package/dist/components/VibeProgressBar.vue.d.ts +88 -0
- package/dist/components/VibeRow.vue.d.ts +269 -0
- package/dist/components/VibeScrollspy.vue.d.ts +71 -0
- package/dist/components/VibeSpinner.vue.d.ts +55 -0
- package/dist/components/VibeTabContent.vue.d.ts +44 -0
- package/dist/components/VibeTabPane.vue.d.ts +70 -0
- package/dist/components/VibeToast.vue.d.ts +90 -0
- package/dist/components/VibeTooltip.vue.d.ts +60 -0
- package/dist/components/index.d.ts +63 -0
- package/dist/composables/useFormValidation.d.ts +26 -0
- package/dist/index.d.ts +3 -0
- package/dist/main.d.ts +0 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types.d.ts +100 -0
- package/dist/vibeui.es.js +1262 -1018
- package/dist/vibeui.umd.js +1 -1
- package/package.json +9 -4
package/README.md
CHANGED
|
@@ -25,6 +25,12 @@ Make sure you also install Bootstrap:
|
|
|
25
25
|
npm install bootstrap
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
+
Optionally, install Bootstrap Icons for icon support:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm install bootstrap-icons
|
|
32
|
+
```
|
|
33
|
+
|
|
28
34
|
## Quick Setup
|
|
29
35
|
|
|
30
36
|
In your Vue app's entry file (`main.ts` or `main.js`):
|
|
@@ -34,6 +40,7 @@ import { createApp } from 'vue';
|
|
|
34
40
|
import App from './App.vue';
|
|
35
41
|
import VibeUI from '@velkymx/vibeui';
|
|
36
42
|
import 'bootstrap/dist/css/bootstrap.min.css';
|
|
43
|
+
import 'bootstrap-icons/font/bootstrap-icons.css'; // Optional: for icon support
|
|
37
44
|
|
|
38
45
|
createApp(App).use(VibeUI).mount('#app');
|
|
39
46
|
```
|
|
@@ -122,6 +129,352 @@ For maximum flexibility and custom content:
|
|
|
122
129
|
|
|
123
130
|
Components with dual-mode support include: `VibeBreadcrumb`, `VibeNav`, `VibeNavbarNav`, `VibePagination`, `VibeListGroup`, `VibeAccordion`, `VibeDropdown`, and `VibeCarousel`.
|
|
124
131
|
|
|
132
|
+
## Tabs
|
|
133
|
+
|
|
134
|
+
VibeUI provides complete tab functionality following Bootstrap 5.3 patterns:
|
|
135
|
+
|
|
136
|
+
```vue
|
|
137
|
+
<template>
|
|
138
|
+
<!-- Tab Navigation -->
|
|
139
|
+
<VibeNav tabs>
|
|
140
|
+
<VibeNavItem tab active target="#home-tab">Home</VibeNavItem>
|
|
141
|
+
<VibeNavItem tab target="#profile-tab">Profile</VibeNavItem>
|
|
142
|
+
<VibeNavItem tab target="#contact-tab">Contact</VibeNavItem>
|
|
143
|
+
</VibeNav>
|
|
144
|
+
|
|
145
|
+
<!-- Tab Content -->
|
|
146
|
+
<VibeTabContent>
|
|
147
|
+
<VibeTabPane id="home-tab" active>
|
|
148
|
+
<h3>Home Content</h3>
|
|
149
|
+
<p>This is the home tab content.</p>
|
|
150
|
+
</VibeTabPane>
|
|
151
|
+
<VibeTabPane id="profile-tab">
|
|
152
|
+
<h3>Profile Content</h3>
|
|
153
|
+
<p>This is the profile tab content.</p>
|
|
154
|
+
</VibeTabPane>
|
|
155
|
+
<VibeTabPane id="contact-tab">
|
|
156
|
+
<h3>Contact Content</h3>
|
|
157
|
+
<p>This is the contact tab content.</p>
|
|
158
|
+
</VibeTabPane>
|
|
159
|
+
</VibeTabContent>
|
|
160
|
+
</template>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**Key Features:**
|
|
164
|
+
- Automatic Bootstrap tab behavior with proper `data-bs-toggle` and `data-bs-target` attributes
|
|
165
|
+
- Accessible with proper ARIA attributes
|
|
166
|
+
- Fade transitions enabled by default
|
|
167
|
+
- Works seamlessly with Bootstrap's JavaScript
|
|
168
|
+
|
|
169
|
+
## Bootstrap Icons
|
|
170
|
+
|
|
171
|
+
VibeUI provides a convenient `VibeIcon` component for using [Bootstrap Icons](https://icons.getbootstrap.com/) (2000+ icons):
|
|
172
|
+
|
|
173
|
+
### Installation
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
npm install bootstrap-icons
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Import the icon font CSS in your `main.ts`:
|
|
180
|
+
|
|
181
|
+
```typescript
|
|
182
|
+
import 'bootstrap-icons/font/bootstrap-icons.css';
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Basic Usage
|
|
186
|
+
|
|
187
|
+
```vue
|
|
188
|
+
<template>
|
|
189
|
+
<!-- Simple icon -->
|
|
190
|
+
<VibeIcon icon="heart-fill" />
|
|
191
|
+
|
|
192
|
+
<!-- With color -->
|
|
193
|
+
<VibeIcon icon="star-fill" color="gold" />
|
|
194
|
+
|
|
195
|
+
<!-- With size -->
|
|
196
|
+
<VibeIcon icon="house" size="2x" />
|
|
197
|
+
|
|
198
|
+
<!-- Custom font size -->
|
|
199
|
+
<VibeIcon icon="alarm" fontSize="2rem" />
|
|
200
|
+
|
|
201
|
+
<!-- In a button -->
|
|
202
|
+
<VibeButton variant="primary">
|
|
203
|
+
<VibeIcon icon="download" /> Download
|
|
204
|
+
</VibeButton>
|
|
205
|
+
</template>
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Props
|
|
209
|
+
|
|
210
|
+
- **icon** (required): Icon name from [Bootstrap Icons](https://icons.getbootstrap.com/)
|
|
211
|
+
- **size**: Preset sizes: `'sm' | 'lg' | '1x' | '2x' | '3x' | '4x' | '5x'`
|
|
212
|
+
- **fontSize**: Custom font size (e.g., `'1.5rem'`, `'24px'`)
|
|
213
|
+
- **color**: Icon color (any CSS color value)
|
|
214
|
+
- **customClass**: Additional CSS classes
|
|
215
|
+
- **flipH**: Flip horizontally
|
|
216
|
+
- **flipV**: Flip vertically
|
|
217
|
+
- **rotate**: Rotate by degrees (`90`, `180`, or `270`)
|
|
218
|
+
|
|
219
|
+
### Advanced Examples
|
|
220
|
+
|
|
221
|
+
```vue
|
|
222
|
+
<template>
|
|
223
|
+
<!-- Flipped icon -->
|
|
224
|
+
<VibeIcon icon="arrow-right" flipH />
|
|
225
|
+
|
|
226
|
+
<!-- Rotated icon -->
|
|
227
|
+
<VibeIcon icon="arrow-up" :rotate="90" />
|
|
228
|
+
|
|
229
|
+
<!-- Large colored icon -->
|
|
230
|
+
<VibeIcon icon="emoji-smile" size="5x" color="#0d6efd" />
|
|
231
|
+
|
|
232
|
+
<!-- Icon with click handler -->
|
|
233
|
+
<VibeIcon icon="trash" color="red" @click="deleteItem" style="cursor: pointer" />
|
|
234
|
+
|
|
235
|
+
<!-- Icon in navigation -->
|
|
236
|
+
<VibeNav>
|
|
237
|
+
<VibeNavItem active>
|
|
238
|
+
<VibeIcon icon="house-fill" /> Home
|
|
239
|
+
</VibeNavItem>
|
|
240
|
+
<VibeNavItem>
|
|
241
|
+
<VibeIcon icon="person" /> Profile
|
|
242
|
+
</VibeNavItem>
|
|
243
|
+
</VibeNav>
|
|
244
|
+
</template>
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
**Browse all 2000+ icons at:** [https://icons.getbootstrap.com/](https://icons.getbootstrap.com/)
|
|
248
|
+
|
|
249
|
+
## Bootstrap Utilities
|
|
250
|
+
|
|
251
|
+
Since VibeUI uses Bootstrap 5.3 CSS, **all Bootstrap utility classes are available** for use with any component or element. This includes spacing, colors, typography, borders, shadows, flexbox, positioning, and more.
|
|
252
|
+
|
|
253
|
+
### Common Utilities
|
|
254
|
+
|
|
255
|
+
#### Spacing (Margin & Padding)
|
|
256
|
+
|
|
257
|
+
```vue
|
|
258
|
+
<template>
|
|
259
|
+
<!-- Margin utilities -->
|
|
260
|
+
<VibeButton class="m-3">Margin all sides</VibeButton>
|
|
261
|
+
<VibeButton class="mt-4 mb-2">Margin top & bottom</VibeButton>
|
|
262
|
+
<VibeButton class="mx-auto">Centered with auto margin</VibeButton>
|
|
263
|
+
|
|
264
|
+
<!-- Padding utilities -->
|
|
265
|
+
<VibeCard class="p-4">Card with padding</VibeCard>
|
|
266
|
+
<VibeCard class="px-5 py-3">Custom x/y padding</VibeCard>
|
|
267
|
+
</template>
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
#### Borders & Rounded Corners
|
|
271
|
+
|
|
272
|
+
```vue
|
|
273
|
+
<template>
|
|
274
|
+
<!-- Border utilities -->
|
|
275
|
+
<VibeCard class="border border-primary">Primary border</VibeCard>
|
|
276
|
+
<VibeCard class="border-top border-3">Thick top border</VibeCard>
|
|
277
|
+
<VibeCard class="border-0">No border</VibeCard>
|
|
278
|
+
|
|
279
|
+
<!-- Rounded corners -->
|
|
280
|
+
<VibeButton class="rounded-pill">Pill shaped</VibeButton>
|
|
281
|
+
<VibeCard class="rounded-0">Sharp corners</VibeCard>
|
|
282
|
+
<VibeCard class="rounded-3">More rounded</VibeCard>
|
|
283
|
+
</template>
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
#### Shadows
|
|
287
|
+
|
|
288
|
+
```vue
|
|
289
|
+
<template>
|
|
290
|
+
<VibeCard class="shadow-sm">Small shadow</VibeCard>
|
|
291
|
+
<VibeCard class="shadow">Regular shadow</VibeCard>
|
|
292
|
+
<VibeCard class="shadow-lg">Large shadow</VibeCard>
|
|
293
|
+
</template>
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
#### Colors (Text & Background)
|
|
297
|
+
|
|
298
|
+
```vue
|
|
299
|
+
<template>
|
|
300
|
+
<!-- Text colors -->
|
|
301
|
+
<VibeAlert class="text-primary">Primary text</VibeAlert>
|
|
302
|
+
<VibeAlert class="text-success">Success text</VibeAlert>
|
|
303
|
+
<VibeAlert class="text-danger">Danger text</VibeAlert>
|
|
304
|
+
|
|
305
|
+
<!-- Background colors -->
|
|
306
|
+
<div class="bg-light p-3">Light background</div>
|
|
307
|
+
<div class="bg-primary text-white p-3">Primary background</div>
|
|
308
|
+
|
|
309
|
+
<!-- Background opacity -->
|
|
310
|
+
<div class="bg-success bg-opacity-25 p-3">25% opacity</div>
|
|
311
|
+
</template>
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
#### Opacity
|
|
315
|
+
|
|
316
|
+
```vue
|
|
317
|
+
<template>
|
|
318
|
+
<VibeIcon icon="star" class="opacity-25" />
|
|
319
|
+
<VibeIcon icon="star" class="opacity-50" />
|
|
320
|
+
<VibeIcon icon="star" class="opacity-75" />
|
|
321
|
+
<VibeIcon icon="star" class="opacity-100" />
|
|
322
|
+
</template>
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
#### Flexbox
|
|
326
|
+
|
|
327
|
+
```vue
|
|
328
|
+
<template>
|
|
329
|
+
<!-- Flex container -->
|
|
330
|
+
<VibeCard class="d-flex justify-content-between align-items-center p-3">
|
|
331
|
+
<span>Left content</span>
|
|
332
|
+
<VibeButton>Right button</VibeButton>
|
|
333
|
+
</VibeCard>
|
|
334
|
+
|
|
335
|
+
<!-- Flex direction -->
|
|
336
|
+
<div class="d-flex flex-column gap-3">
|
|
337
|
+
<VibeButton>Button 1</VibeButton>
|
|
338
|
+
<VibeButton>Button 2</VibeButton>
|
|
339
|
+
</div>
|
|
340
|
+
|
|
341
|
+
<!-- Flex responsive -->
|
|
342
|
+
<div class="d-flex flex-column flex-md-row">
|
|
343
|
+
<VibeCard>Card 1</VibeCard>
|
|
344
|
+
<VibeCard>Card 2</VibeCard>
|
|
345
|
+
</div>
|
|
346
|
+
</template>
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
#### Position
|
|
350
|
+
|
|
351
|
+
```vue
|
|
352
|
+
<template>
|
|
353
|
+
<!-- Position utilities -->
|
|
354
|
+
<div class="position-relative">
|
|
355
|
+
<VibeIcon icon="bell" class="position-absolute top-0 end-0" />
|
|
356
|
+
</div>
|
|
357
|
+
|
|
358
|
+
<!-- Sticky positioning -->
|
|
359
|
+
<VibeNavbar class="sticky-top">
|
|
360
|
+
<!-- Navbar content -->
|
|
361
|
+
</VibeNavbar>
|
|
362
|
+
|
|
363
|
+
<!-- Fixed positioning -->
|
|
364
|
+
<VibeButton class="position-fixed bottom-0 end-0 m-3">
|
|
365
|
+
<VibeIcon icon="chat" />
|
|
366
|
+
</VibeButton>
|
|
367
|
+
</template>
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
#### Display & Visibility
|
|
371
|
+
|
|
372
|
+
```vue
|
|
373
|
+
<template>
|
|
374
|
+
<!-- Display utilities -->
|
|
375
|
+
<VibeAlert class="d-none d-md-block">Hidden on mobile</VibeAlert>
|
|
376
|
+
<VibeButton class="d-inline-block">Inline block</VibeButton>
|
|
377
|
+
|
|
378
|
+
<!-- Visibility -->
|
|
379
|
+
<VibeCard class="visible">Visible</VibeCard>
|
|
380
|
+
<VibeCard class="invisible">Invisible (takes space)</VibeCard>
|
|
381
|
+
</template>
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
#### Sizing
|
|
385
|
+
|
|
386
|
+
```vue
|
|
387
|
+
<template>
|
|
388
|
+
<!-- Width utilities -->
|
|
389
|
+
<VibeButton class="w-100">Full width</VibeButton>
|
|
390
|
+
<VibeButton class="w-75">75% width</VibeButton>
|
|
391
|
+
<VibeButton class="w-auto">Auto width</VibeButton>
|
|
392
|
+
|
|
393
|
+
<!-- Height utilities -->
|
|
394
|
+
<div class="h-100">Full height</div>
|
|
395
|
+
<div class="mh-100">Max height 100%</div>
|
|
396
|
+
|
|
397
|
+
<!-- Viewport units -->
|
|
398
|
+
<div class="vw-100">100% viewport width</div>
|
|
399
|
+
<div class="vh-100">100% viewport height</div>
|
|
400
|
+
</template>
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
#### Typography
|
|
404
|
+
|
|
405
|
+
```vue
|
|
406
|
+
<template>
|
|
407
|
+
<!-- Font size -->
|
|
408
|
+
<p class="fs-1">Very large text</p>
|
|
409
|
+
<p class="fs-6">Small text</p>
|
|
410
|
+
|
|
411
|
+
<!-- Font weight -->
|
|
412
|
+
<span class="fw-bold">Bold</span>
|
|
413
|
+
<span class="fw-light">Light</span>
|
|
414
|
+
|
|
415
|
+
<!-- Text alignment -->
|
|
416
|
+
<p class="text-start">Left aligned</p>
|
|
417
|
+
<p class="text-center">Center aligned</p>
|
|
418
|
+
<p class="text-end">Right aligned</p>
|
|
419
|
+
|
|
420
|
+
<!-- Text transform -->
|
|
421
|
+
<p class="text-uppercase">Uppercase</p>
|
|
422
|
+
<p class="text-lowercase">Lowercase</p>
|
|
423
|
+
<p class="text-capitalize">Capitalized</p>
|
|
424
|
+
</template>
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
### Combined Examples
|
|
428
|
+
|
|
429
|
+
```vue
|
|
430
|
+
<template>
|
|
431
|
+
<!-- Card with multiple utilities -->
|
|
432
|
+
<VibeCard class="shadow-lg rounded-3 border-0 p-4 mb-4">
|
|
433
|
+
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
434
|
+
<h3 class="fw-bold text-primary mb-0">Card Title</h3>
|
|
435
|
+
<VibeIcon icon="star-fill" class="text-warning" size="2x" />
|
|
436
|
+
</div>
|
|
437
|
+
<p class="text-muted mb-3">Card content with utilities</p>
|
|
438
|
+
<VibeButton variant="primary" class="w-100">Full Width Button</VibeButton>
|
|
439
|
+
</VibeCard>
|
|
440
|
+
|
|
441
|
+
<!-- Responsive layout with utilities -->
|
|
442
|
+
<VibeContainer>
|
|
443
|
+
<VibeRow class="g-4">
|
|
444
|
+
<VibeCol :cols="12" :md="6" :lg="4">
|
|
445
|
+
<VibeCard class="h-100 shadow-sm hover-shadow">
|
|
446
|
+
<div class="position-relative">
|
|
447
|
+
<img src="..." class="w-100 rounded-top" />
|
|
448
|
+
<VibeBadge class="position-absolute top-0 end-0 m-2">New</VibeBadge>
|
|
449
|
+
</div>
|
|
450
|
+
<div class="p-3">
|
|
451
|
+
<h5 class="fw-semibold">Product Title</h5>
|
|
452
|
+
<p class="text-muted small mb-3">Description</p>
|
|
453
|
+
<div class="d-flex justify-content-between align-items-center">
|
|
454
|
+
<span class="fs-4 fw-bold text-primary">$29.99</span>
|
|
455
|
+
<VibeButton size="sm">
|
|
456
|
+
<VibeIcon icon="cart-plus" /> Add
|
|
457
|
+
</VibeButton>
|
|
458
|
+
</div>
|
|
459
|
+
</div>
|
|
460
|
+
</VibeCard>
|
|
461
|
+
</VibeCol>
|
|
462
|
+
</VibeRow>
|
|
463
|
+
</VibeContainer>
|
|
464
|
+
</template>
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
### Full Documentation
|
|
468
|
+
|
|
469
|
+
For complete details on all available utilities, see:
|
|
470
|
+
- **[Bootstrap Utilities Documentation](https://getbootstrap.com/docs/5.3/utilities/api/)**
|
|
471
|
+
- **[Spacing](https://getbootstrap.com/docs/5.3/utilities/spacing/)**
|
|
472
|
+
- **[Colors](https://getbootstrap.com/docs/5.3/utilities/colors/)**
|
|
473
|
+
- **[Borders](https://getbootstrap.com/docs/5.3/utilities/borders/)**
|
|
474
|
+
- **[Shadows](https://getbootstrap.com/docs/5.3/utilities/shadows/)**
|
|
475
|
+
- **[Flex](https://getbootstrap.com/docs/5.3/utilities/flex/)**
|
|
476
|
+
- **[Position](https://getbootstrap.com/docs/5.3/utilities/position/)**
|
|
477
|
+
|
|
125
478
|
## Form Components with Validation
|
|
126
479
|
|
|
127
480
|
VibeUI provides comprehensive form components with built-in validation support for both front-end and API-based validation:
|
|
@@ -337,6 +690,11 @@ VibeUI provides built-in validators:
|
|
|
337
690
|
|
|
338
691
|
VibeUI includes all major Bootstrap 5.3 components:
|
|
339
692
|
|
|
693
|
+
### Layout Components
|
|
694
|
+
* **VibeContainer** - Responsive container with fluid and breakpoint variants
|
|
695
|
+
* **VibeRow** - Row wrapper for columns with gutter control and row-cols support
|
|
696
|
+
* **VibeCol** - Responsive grid columns with offset and order support
|
|
697
|
+
|
|
340
698
|
### Core Components
|
|
341
699
|
* **VibeAlert** - Alert messages with variants and dismissible option
|
|
342
700
|
* **VibeBadge** - Badges and labels with pill option
|
|
@@ -359,13 +717,15 @@ VibeUI includes all major Bootstrap 5.3 components:
|
|
|
359
717
|
* **VibeBreadcrumb** - Breadcrumb navigation container
|
|
360
718
|
* **VibeBreadcrumbItem** - Individual breadcrumb items
|
|
361
719
|
* **VibeNav** - Navigation tabs and pills
|
|
362
|
-
* **VibeNavItem** - Navigation items with active state
|
|
720
|
+
* **VibeNavItem** - Navigation items with active state and tab support
|
|
363
721
|
* **VibeNavbar** - Responsive navbar with variants
|
|
364
722
|
* **VibeNavbarBrand** - Navbar branding section
|
|
365
723
|
* **VibeNavbarToggle** - Navbar mobile toggle button
|
|
366
724
|
* **VibeNavbarNav** - Navbar navigation links container
|
|
367
725
|
* **VibePagination** - Pagination container
|
|
368
726
|
* **VibePaginationItem** - Individual pagination items
|
|
727
|
+
* **VibeTabContent** - Container for tab panes
|
|
728
|
+
* **VibeTabPane** - Individual tab panel content
|
|
369
729
|
|
|
370
730
|
### List Components
|
|
371
731
|
* **VibeListGroup** - List group container with flush and horizontal options
|
|
@@ -391,6 +751,7 @@ VibeUI includes all major Bootstrap 5.3 components:
|
|
|
391
751
|
* **VibeTooltip** - Tooltips with placement options (requires Bootstrap JS)
|
|
392
752
|
* **VibePopover** - Popovers with title and content (requires Bootstrap JS)
|
|
393
753
|
* **VibeScrollspy** - Scrollspy for navigation highlighting
|
|
754
|
+
* **VibeIcon** - Bootstrap Icons integration with 2000+ icons
|
|
394
755
|
|
|
395
756
|
### Data Components
|
|
396
757
|
* **VibeDataTable** - Powerful data table with search, sorting, and pagination
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
msg: string;
|
|
3
|
+
};
|
|
4
|
+
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
5
|
+
export default _default;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { AccordionItem } from '../types';
|
|
2
|
+
declare function __VLS_template(): {
|
|
3
|
+
attrs: Partial<{}>;
|
|
4
|
+
slots: {
|
|
5
|
+
default?(_: {}): any;
|
|
6
|
+
};
|
|
7
|
+
refs: {};
|
|
8
|
+
rootEl: HTMLDivElement;
|
|
9
|
+
};
|
|
10
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
11
|
+
declare const __VLS_component: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
12
|
+
id: {
|
|
13
|
+
type: StringConstructor;
|
|
14
|
+
required: true;
|
|
15
|
+
};
|
|
16
|
+
flush: {
|
|
17
|
+
type: BooleanConstructor;
|
|
18
|
+
default: boolean;
|
|
19
|
+
};
|
|
20
|
+
items: {
|
|
21
|
+
type: () => AccordionItem[];
|
|
22
|
+
default: undefined;
|
|
23
|
+
};
|
|
24
|
+
}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
25
|
+
"component-error": (...args: any[]) => void;
|
|
26
|
+
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
27
|
+
id: {
|
|
28
|
+
type: StringConstructor;
|
|
29
|
+
required: true;
|
|
30
|
+
};
|
|
31
|
+
flush: {
|
|
32
|
+
type: BooleanConstructor;
|
|
33
|
+
default: boolean;
|
|
34
|
+
};
|
|
35
|
+
items: {
|
|
36
|
+
type: () => AccordionItem[];
|
|
37
|
+
default: undefined;
|
|
38
|
+
};
|
|
39
|
+
}>> & Readonly<{
|
|
40
|
+
"onComponent-error"?: ((...args: any[]) => any) | undefined;
|
|
41
|
+
}>, {
|
|
42
|
+
items: AccordionItem[];
|
|
43
|
+
flush: boolean;
|
|
44
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
|
|
45
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
46
|
+
export default _default;
|
|
47
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
48
|
+
new (): {
|
|
49
|
+
$slots: S;
|
|
50
|
+
};
|
|
51
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
declare function __VLS_template(): {
|
|
2
|
+
attrs: Partial<{}>;
|
|
3
|
+
slots: {
|
|
4
|
+
default?(_: {}): any;
|
|
5
|
+
};
|
|
6
|
+
refs: {};
|
|
7
|
+
rootEl: HTMLDivElement;
|
|
8
|
+
};
|
|
9
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
10
|
+
declare const __VLS_component: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
11
|
+
id: {
|
|
12
|
+
type: StringConstructor;
|
|
13
|
+
required: true;
|
|
14
|
+
};
|
|
15
|
+
title: {
|
|
16
|
+
type: StringConstructor;
|
|
17
|
+
required: true;
|
|
18
|
+
};
|
|
19
|
+
parentId: {
|
|
20
|
+
type: StringConstructor;
|
|
21
|
+
required: true;
|
|
22
|
+
};
|
|
23
|
+
show: {
|
|
24
|
+
type: BooleanConstructor;
|
|
25
|
+
default: boolean;
|
|
26
|
+
};
|
|
27
|
+
}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
28
|
+
"component-error": (...args: any[]) => void;
|
|
29
|
+
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
30
|
+
id: {
|
|
31
|
+
type: StringConstructor;
|
|
32
|
+
required: true;
|
|
33
|
+
};
|
|
34
|
+
title: {
|
|
35
|
+
type: StringConstructor;
|
|
36
|
+
required: true;
|
|
37
|
+
};
|
|
38
|
+
parentId: {
|
|
39
|
+
type: StringConstructor;
|
|
40
|
+
required: true;
|
|
41
|
+
};
|
|
42
|
+
show: {
|
|
43
|
+
type: BooleanConstructor;
|
|
44
|
+
default: boolean;
|
|
45
|
+
};
|
|
46
|
+
}>> & Readonly<{
|
|
47
|
+
"onComponent-error"?: ((...args: any[]) => any) | undefined;
|
|
48
|
+
}>, {
|
|
49
|
+
show: boolean;
|
|
50
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
|
|
51
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
52
|
+
export default _default;
|
|
53
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
54
|
+
new (): {
|
|
55
|
+
$slots: S;
|
|
56
|
+
};
|
|
57
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
declare function __VLS_template(): {
|
|
2
|
+
attrs: Partial<{}>;
|
|
3
|
+
slots: {
|
|
4
|
+
default?(_: {}): any;
|
|
5
|
+
};
|
|
6
|
+
refs: {};
|
|
7
|
+
rootEl: any;
|
|
8
|
+
};
|
|
9
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
10
|
+
declare const __VLS_component: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
11
|
+
variant: {
|
|
12
|
+
type: StringConstructor;
|
|
13
|
+
default: string;
|
|
14
|
+
};
|
|
15
|
+
modelValue: {
|
|
16
|
+
type: BooleanConstructor;
|
|
17
|
+
default: boolean;
|
|
18
|
+
};
|
|
19
|
+
dismissable: {
|
|
20
|
+
type: BooleanConstructor;
|
|
21
|
+
default: boolean;
|
|
22
|
+
};
|
|
23
|
+
message: {
|
|
24
|
+
type: StringConstructor;
|
|
25
|
+
required: true;
|
|
26
|
+
};
|
|
27
|
+
}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
28
|
+
"update:modelValue": (...args: any[]) => void;
|
|
29
|
+
"component-error": (...args: any[]) => void;
|
|
30
|
+
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
31
|
+
variant: {
|
|
32
|
+
type: StringConstructor;
|
|
33
|
+
default: string;
|
|
34
|
+
};
|
|
35
|
+
modelValue: {
|
|
36
|
+
type: BooleanConstructor;
|
|
37
|
+
default: boolean;
|
|
38
|
+
};
|
|
39
|
+
dismissable: {
|
|
40
|
+
type: BooleanConstructor;
|
|
41
|
+
default: boolean;
|
|
42
|
+
};
|
|
43
|
+
message: {
|
|
44
|
+
type: StringConstructor;
|
|
45
|
+
required: true;
|
|
46
|
+
};
|
|
47
|
+
}>> & Readonly<{
|
|
48
|
+
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
|
|
49
|
+
"onComponent-error"?: ((...args: any[]) => any) | undefined;
|
|
50
|
+
}>, {
|
|
51
|
+
variant: string;
|
|
52
|
+
modelValue: boolean;
|
|
53
|
+
dismissable: boolean;
|
|
54
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
55
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
56
|
+
export default _default;
|
|
57
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
58
|
+
new (): {
|
|
59
|
+
$slots: S;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Variant, Tag } from '../types';
|
|
2
|
+
declare function __VLS_template(): {
|
|
3
|
+
attrs: Partial<{}>;
|
|
4
|
+
slots: {
|
|
5
|
+
default?(_: {}): any;
|
|
6
|
+
};
|
|
7
|
+
refs: {};
|
|
8
|
+
rootEl: any;
|
|
9
|
+
};
|
|
10
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
11
|
+
declare const __VLS_component: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
12
|
+
variant: {
|
|
13
|
+
type: () => Variant;
|
|
14
|
+
default: string;
|
|
15
|
+
};
|
|
16
|
+
pill: {
|
|
17
|
+
type: BooleanConstructor;
|
|
18
|
+
default: boolean;
|
|
19
|
+
};
|
|
20
|
+
tag: {
|
|
21
|
+
type: () => Tag | "a";
|
|
22
|
+
default: string;
|
|
23
|
+
};
|
|
24
|
+
}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
25
|
+
"component-error": (...args: any[]) => void;
|
|
26
|
+
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
27
|
+
variant: {
|
|
28
|
+
type: () => Variant;
|
|
29
|
+
default: string;
|
|
30
|
+
};
|
|
31
|
+
pill: {
|
|
32
|
+
type: BooleanConstructor;
|
|
33
|
+
default: boolean;
|
|
34
|
+
};
|
|
35
|
+
tag: {
|
|
36
|
+
type: () => Tag | "a";
|
|
37
|
+
default: string;
|
|
38
|
+
};
|
|
39
|
+
}>> & Readonly<{
|
|
40
|
+
"onComponent-error"?: ((...args: any[]) => any) | undefined;
|
|
41
|
+
}>, {
|
|
42
|
+
variant: Variant;
|
|
43
|
+
pill: boolean;
|
|
44
|
+
tag: "a" | Tag;
|
|
45
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
46
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
47
|
+
export default _default;
|
|
48
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
49
|
+
new (): {
|
|
50
|
+
$slots: S;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { BreadcrumbItem } from '../types';
|
|
2
|
+
declare function __VLS_template(): {
|
|
3
|
+
attrs: Partial<{}>;
|
|
4
|
+
slots: {
|
|
5
|
+
default?(_: {}): any;
|
|
6
|
+
};
|
|
7
|
+
refs: {};
|
|
8
|
+
rootEl: HTMLElement;
|
|
9
|
+
};
|
|
10
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
11
|
+
declare const __VLS_component: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
12
|
+
ariaLabel: {
|
|
13
|
+
type: StringConstructor;
|
|
14
|
+
default: string;
|
|
15
|
+
};
|
|
16
|
+
items: {
|
|
17
|
+
type: () => BreadcrumbItem[];
|
|
18
|
+
default: undefined;
|
|
19
|
+
};
|
|
20
|
+
}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
21
|
+
"component-error": (...args: any[]) => void;
|
|
22
|
+
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
23
|
+
ariaLabel: {
|
|
24
|
+
type: StringConstructor;
|
|
25
|
+
default: string;
|
|
26
|
+
};
|
|
27
|
+
items: {
|
|
28
|
+
type: () => BreadcrumbItem[];
|
|
29
|
+
default: undefined;
|
|
30
|
+
};
|
|
31
|
+
}>> & Readonly<{
|
|
32
|
+
"onComponent-error"?: ((...args: any[]) => any) | undefined;
|
|
33
|
+
}>, {
|
|
34
|
+
ariaLabel: string;
|
|
35
|
+
items: BreadcrumbItem[];
|
|
36
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLElement>;
|
|
37
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
38
|
+
export default _default;
|
|
39
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
40
|
+
new (): {
|
|
41
|
+
$slots: S;
|
|
42
|
+
};
|
|
43
|
+
};
|