@velkymx/vibeui 0.8.2 → 0.9.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.
Files changed (88) hide show
  1. package/README.md +171 -9
  2. package/dist/components/VibeAlert.vue.d.ts +12 -2
  3. package/dist/components/VibeAutocomplete.vue.d.ts +46 -0
  4. package/dist/components/VibeButton.vue.d.ts +4 -4
  5. package/dist/components/VibeDataTable.vue.d.ts +6 -6
  6. package/dist/components/VibeDatePicker.vue.d.ts +122 -0
  7. package/dist/components/VibeDraggable.vue.d.ts +81 -0
  8. package/dist/components/VibeDroppable.vue.d.ts +74 -0
  9. package/dist/components/VibeFileInput.vue.d.ts +133 -0
  10. package/dist/components/VibeFormCheckbox.vue.d.ts +1 -1
  11. package/dist/components/VibeFormDatepicker.vue.d.ts +1 -1
  12. package/dist/components/VibeFormGroup.vue.d.ts +1 -1
  13. package/dist/components/VibeFormInput.vue.d.ts +1 -1
  14. package/dist/components/VibeFormRadio.vue.d.ts +1 -1
  15. package/dist/components/VibeFormSelect.vue.d.ts +1 -1
  16. package/dist/components/VibeFormSpinbutton.vue.d.ts +1 -1
  17. package/dist/components/VibeFormSwitch.vue.d.ts +1 -1
  18. package/dist/components/VibeFormTextarea.vue.d.ts +1 -1
  19. package/dist/components/VibeFormWysiwyg.vue.d.ts +2 -2
  20. package/dist/components/VibeResizable.vue.d.ts +144 -0
  21. package/dist/components/VibeSkeleton.vue.d.ts +53 -0
  22. package/dist/components/VibeSlider.vue.d.ts +78 -0
  23. package/dist/components/VibeSortable.vue.d.ts +40 -0
  24. package/dist/components/VibeStepper.vue.d.ts +132 -0
  25. package/dist/components/VibeTab.vue.d.ts +45 -0
  26. package/dist/components/VibeTabs.vue.d.ts +82 -0
  27. package/dist/components/VibeToast.vue.d.ts +11 -0
  28. package/dist/components/VibeToastHost.vue.d.ts +15 -0
  29. package/dist/components/dndStore.d.ts +6 -0
  30. package/dist/components/index.d.ts +14 -1
  31. package/dist/composables/useForm.d.ts +22 -0
  32. package/dist/composables/usePosition.d.ts +20 -0
  33. package/dist/composables/useToast.d.ts +52 -0
  34. package/dist/directives/vTooltip.d.ts +25 -0
  35. package/dist/index.d.ts +6 -0
  36. package/dist/types.d.ts +11 -4
  37. package/dist/vibeui.css +1 -1
  38. package/dist/vibeui.es.js +4256 -1827
  39. package/dist/vibeui.umd.js +1 -1
  40. package/package.json +4 -5
  41. package/CLAUDE.md +0 -48
  42. package/docs/README.md +0 -153
  43. package/docs/components/advanced/popover.md +0 -150
  44. package/docs/components/advanced/scrollspy.md +0 -64
  45. package/docs/components/advanced/tooltip.md +0 -111
  46. package/docs/components/card/card.md +0 -215
  47. package/docs/components/core/alert.md +0 -72
  48. package/docs/components/core/badge.md +0 -81
  49. package/docs/components/core/button-group.md +0 -105
  50. package/docs/components/core/button.md +0 -127
  51. package/docs/components/core/close-button.md +0 -82
  52. package/docs/components/core/link.md +0 -36
  53. package/docs/components/core/placeholder.md +0 -135
  54. package/docs/components/core/spinner.md +0 -109
  55. package/docs/components/data/datatable.md +0 -416
  56. package/docs/components/interactive/accordion.md +0 -92
  57. package/docs/components/interactive/carousel.md +0 -97
  58. package/docs/components/interactive/collapse.md +0 -105
  59. package/docs/components/interactive/dropdown.md +0 -93
  60. package/docs/components/interactive/modal.md +0 -148
  61. package/docs/components/interactive/offcanvas.md +0 -89
  62. package/docs/components/interactive/toast.md +0 -114
  63. package/docs/components/layout/col.md +0 -123
  64. package/docs/components/layout/container.md +0 -59
  65. package/docs/components/layout/row.md +0 -113
  66. package/docs/components/list/list-group.md +0 -221
  67. package/docs/components/navigation/breadcrumb.md +0 -116
  68. package/docs/components/navigation/nav.md +0 -88
  69. package/docs/components/navigation/navbar.md +0 -106
  70. package/docs/components/navigation/pagination.md +0 -146
  71. package/docs/components/progress/progress.md +0 -182
  72. package/docs/composables/back-button.md +0 -28
  73. package/docs/composables/breakpoints.md +0 -54
  74. package/docs/composables/color-mode.md +0 -141
  75. package/docs/forms/README.md +0 -88
  76. package/docs/forms/form-checkbox.md +0 -50
  77. package/docs/forms/form-datepicker.md +0 -50
  78. package/docs/forms/form-group.md +0 -80
  79. package/docs/forms/form-input.md +0 -55
  80. package/docs/forms/form-radio.md +0 -58
  81. package/docs/forms/form-select.md +0 -54
  82. package/docs/forms/form-spinbutton.md +0 -55
  83. package/docs/forms/form-switch.md +0 -47
  84. package/docs/forms/form-textarea.md +0 -51
  85. package/docs/forms/form-wysiwyg.md +0 -64
  86. package/docs/forms/input-group.md +0 -51
  87. package/docs/forms/validation.md +0 -599
  88. package/llms.txt +0 -422
@@ -1,92 +0,0 @@
1
- # VibeAccordion
2
-
3
- Collapsible accordion component for organizing content in a data-driven way.
4
-
5
- ## Props
6
-
7
- | Prop | Type | Default | Description |
8
- |------|------|---------|-------------|
9
- | `id` | `String` | `Auto-generated` | Unique identifier for the accordion |
10
- | `flush` | `Boolean` | `false` | Remove borders and rounded corners |
11
- | `items` | `AccordionItem[]` | Required | Array of accordion items |
12
- | `alwaysOpen` | `Boolean` | `false` | Don't collapse other items when one is opened |
13
-
14
- ### AccordionItem Interface
15
-
16
- ```typescript
17
- interface AccordionItem {
18
- id: string
19
- title: string
20
- content: string
21
- show?: boolean
22
- }
23
- ```
24
-
25
- ## Events
26
-
27
- | Event | Payload | Description |
28
- |-------|---------|-------------|
29
- | `item-click` | `{ item, index }` | Emitted when an accordion item is clicked |
30
- | `show` | `id` | Emitted when an item starts showing |
31
- | `shown` | `id` | Emitted when an item is fully shown |
32
- | `hide` | `id` | Emitted when an item starts hiding |
33
- | `hidden` | `id` | Emitted when an item is fully hidden |
34
-
35
- ## Slots
36
-
37
- | Slot | Scope | Description |
38
- |------|-------|-------------|
39
- | `title` | `{ item, index }` | Custom title rendering |
40
- | `content` | `{ item, index }` | Custom content rendering |
41
-
42
- ## Usage
43
-
44
- ### Basic Example
45
-
46
- ```vue
47
- <template>
48
- <VibeAccordion :items="accordionItems" />
49
- </template>
50
-
51
- <script setup>
52
- const accordionItems = [
53
- {
54
- id: 'collapseOne',
55
- title: 'Accordion Item #1',
56
- content: 'This is the first item\'s content.',
57
- show: true
58
- },
59
- {
60
- id: 'collapseTwo',
61
- title: 'Accordion Item #2',
62
- content: 'This is the second item\'s content.'
63
- }
64
- ]
65
- </script>
66
- ```
67
-
68
- ### Always Open
69
-
70
- Items stay open when another item is opened:
71
-
72
- ```vue
73
- <template>
74
- <VibeAccordion always-open :items="accordionItems" />
75
- </template>
76
- ```
77
-
78
- ## Important Notes
79
-
80
- **Automatic Initialization:** This component automatically initializes Bootstrap's Collapse functionality for each item when it is mounted, provided that Bootstrap's JavaScript is available in your project.
81
-
82
- **Reactivity:** The `show` property in the `AccordionItem` objects is watched. Changing it in your parent state will trigger the corresponding Bootstrap transition.
83
-
84
- ## Bootstrap CSS Classes
85
-
86
- - `.accordion`
87
- - `.accordion-flush`
88
- - `.accordion-item`
89
- - `.accordion-header`
90
- - `.accordion-button`
91
- - `.accordion-collapse`
92
- - `.accordion-body`
@@ -1,97 +0,0 @@
1
- # VibeCarousel
2
-
3
- Data-driven slideshow component for cycling through images or content.
4
-
5
- ## Props
6
-
7
- | Prop | Type | Default | Description |
8
- |------|------|---------|-------------|
9
- | `id` | `String` | `Auto-generated` | Unique identifier |
10
- | `modelValue` | `Number` | `0` | Active slide index (v-model) |
11
- | `controls` | `Boolean` | `true` | Show prev/next controls |
12
- | `indicators` | `Boolean` | `true` | Show slide indicators |
13
- | `ride` | `Boolean\|String` | `false` | Auto-play: `false`, `true`, or `'carousel'` |
14
- | `interval` | `Number\|Boolean` | `5000` | Slide interval in ms (`false` to disable) |
15
- | `keyboard` | `Boolean` | `true` | Keyboard navigation |
16
- | `pause` | `String\|Boolean` | `'hover'` | Pause on hover (`'hover'` or `false`) |
17
- | `wrap` | `Boolean` | `true` | Continuous cycling |
18
- | `touch` | `Boolean` | `true` | Touch swipe support |
19
- | `dark` | `Boolean` | `false` | Dark variant indicators/controls |
20
- | `fade` | `Boolean` | `false` | Fade transition instead of slide |
21
- | `items` | `CarouselItem[]` | Required | Array of carousel items |
22
-
23
- ### CarouselItem Interface
24
-
25
- ```typescript
26
- interface CarouselItem {
27
- src: string
28
- alt?: string
29
- caption?: string
30
- captionText?: string
31
- active?: boolean
32
- interval?: number
33
- }
34
- ```
35
-
36
- ## Events
37
-
38
- | Event | Payload | Description |
39
- |-------|---------|-------------|
40
- | `update:modelValue` | `Number` | Emitted when the active slide changes |
41
- | `slide` | - | Emitted when slide transition starts |
42
- | `slid` | - | Emitted when slide transition completes |
43
-
44
- ## Slots
45
-
46
- | Slot | Scope | Description |
47
- |------|-------|-------------|
48
- | `caption` | `{ item, index }` | Custom caption rendering |
49
-
50
- ## Usage
51
-
52
- ### Reactive Usage (v-model)
53
-
54
- ```vue
55
- <template>
56
- <div>
57
- <VibeCarousel v-model="currentSlide" :items="carouselItems" />
58
-
59
- <div class="mt-3">
60
- <VibeButton @click="currentSlide = 0">Go to Slide 1</VibeButton>
61
- <VibeButton @click="currentSlide = 1">Go to Slide 2</VibeButton>
62
- </div>
63
- </div>
64
- </template>
65
-
66
- <script setup>
67
- import { ref } from 'vue'
68
- const currentSlide = ref(0)
69
- const carouselItems = [...]
70
- </script>
71
- ```
72
-
73
- ### Basic Carousel
74
-
75
- ```vue
76
- <template>
77
- <VibeCarousel :items="carouselItems" />
78
- </template>
79
- ```
80
-
81
- ## Important Notes
82
-
83
- **Automatic Initialization:** This component automatically initializes Bootstrap's Carousel functionality when it is mounted, provided that Bootstrap's JavaScript is available in your project.
84
-
85
- **Instance Exposure:** You can access the underlying Bootstrap instance via template ref using the `bsInstance` property.
86
-
87
- ## Bootstrap CSS Classes
88
-
89
- - `.carousel`
90
- - `.carousel-inner`
91
- - `.carousel-item`
92
- - `.carousel-control-prev`
93
- - `.carousel-control-next`
94
- - `.carousel-indicators`
95
- - `.carousel-caption`
96
- - `.carousel-dark`
97
- - `.carousel-fade`
@@ -1,105 +0,0 @@
1
- # VibeCollapse
2
-
3
- Toggle visibility of content with smooth transitions.
4
-
5
- ## Props
6
-
7
- | Prop | Type | Default | Description |
8
- |------|------|---------|-------------|
9
- | `id` | `String` | `Auto-generated` | Unique identifier |
10
- | `modelValue` | `Boolean` | `false` | Control visibility (v-model) |
11
- | `tag` | `String` | `'div'` | HTML tag to render |
12
- | `horizontal` | `Boolean` | `false` | Horizontal collapse |
13
- | `isNav` | `Boolean` | `false` | Adds `navbar-collapse` class for use inside `VibeNavbar` |
14
-
15
- ## Events
16
-
17
- | Event | Payload | Description |
18
- |-------|---------|-------------|
19
- | `update:modelValue` | `Boolean` | Emitted when visibility changes |
20
- | `show` | - | Emitted when collapse starts showing |
21
- | `shown` | - | Emitted when collapse is fully shown |
22
- | `hide` | - | Emitted when collapse starts hiding |
23
- | `hidden` | - | Emitted when collapse is fully hidden |
24
-
25
- ## Slots
26
-
27
- | Slot | Description |
28
- |------|-------------|
29
- | `default` | Collapsible content |
30
-
31
- ## Usage
32
-
33
- ### Reactive Usage (v-model)
34
-
35
- ```vue
36
- <template>
37
- <div>
38
- <VibeButton variant="primary" @click="show = !show">
39
- Toggle Collapse
40
- </VibeButton>
41
-
42
- <VibeCollapse v-model="show">
43
- <div class="card card-body mt-2">
44
- This content is controlled via Vue state with smooth animations.
45
- </div>
46
- </VibeCollapse>
47
- </div>
48
- </template>
49
-
50
- <script setup>
51
- import { ref } from 'vue'
52
- const show = ref(false)
53
- </script>
54
- ```
55
-
56
- ### Inside a Navbar
57
-
58
- When used inside a `VibeNavbar`, add `is-nav` to get the `navbar-collapse` class. `VibeNavbarToggle` will automatically synchronize with this component.
59
-
60
- ```vue
61
- <template>
62
- <VibeNavbar variant="dark" expand="lg">
63
- <VibeNavbarBrand href="#">Brand</VibeNavbarBrand>
64
- <VibeNavbarToggle target="navContent" />
65
- <VibeCollapse id="navContent" is-nav>
66
- <VibeNavbarNav :items="navItems" />
67
- </VibeCollapse>
68
- </VibeNavbar>
69
- </template>
70
- ```
71
-
72
- ### Horizontal Collapse
73
-
74
- ```vue
75
- <template>
76
- <div>
77
- <VibeButton variant="primary" @click="show = !show">
78
- Toggle Width
79
- </VibeButton>
80
-
81
- <div style="min-height: 120px">
82
- <VibeCollapse v-model="show" horizontal>
83
- <div class="card card-body" style="width: 300px">
84
- This is horizontal collapse content!
85
- </div>
86
- </VibeCollapse>
87
- </div>
88
- </div>
89
- </template>
90
- ```
91
-
92
- ## Important Notes
93
-
94
- **Automatic Initialization:** This component automatically initializes Bootstrap's Collapse functionality when it is mounted, ensuring that smooth sliding transitions are used.
95
-
96
- **State Synchronization:** Refactored to ensure that clicking a toggle (like `VibeNavbarToggle`) updates both Vue's internal state and Bootstrap's JavaScript instance simultaneously.
97
-
98
- **Instance Exposure:** You can access the underlying Bootstrap instance via template ref using the `bsInstance` property.
99
-
100
- ## Bootstrap CSS Classes
101
-
102
- - `.collapse`
103
- - `.navbar-collapse` (when `is-nav` is set)
104
- - `.collapse-horizontal`
105
- - `.show`
@@ -1,93 +0,0 @@
1
- # VibeDropdown
2
-
3
- Data-driven toggleable contextual overlay for displaying lists of links.
4
-
5
- ## Props
6
-
7
- | Prop | Type | Default | Description |
8
- |------|------|---------|-------------|
9
- | `id` | `String` | `Auto-generated` | Unique identifier |
10
- | `text` | `String` | `'Dropdown'` | Button text |
11
- | `variant` | `Variant` | `'primary'` | Button color variant |
12
- | `size` | `Size` | `undefined` | Button size (`'sm'` or `'lg'`) |
13
- | `split` | `Boolean` | `false` | Split button style |
14
- | `direction` | `Direction` | `'down'` | Direction: `'up'`, `'down'`, `'start'`, `'end'` |
15
- | `menuEnd` | `Boolean` | `false` | Align menu to the right |
16
- | `items` | `DropdownItem[]` | Required | Array of dropdown items |
17
- | `autoClose` | `Boolean\|String` | `true` | Close behavior: `true`, `false`, `'inside'`, `'outside'` |
18
-
19
- ### DropdownItem Interface
20
-
21
- ```typescript
22
- interface DropdownItem {
23
- text?: string
24
- href?: string
25
- to?: string | object
26
- active?: boolean
27
- disabled?: boolean
28
- divider?: boolean
29
- header?: boolean
30
- }
31
- ```
32
-
33
- ## Events
34
-
35
- | Event | Payload | Description |
36
- |-------|---------|-------------|
37
- | `item-click` | `{ item, index, event }` | Emitted when an item is clicked |
38
- | `show` | - | Emitted when dropdown starts showing |
39
- | `shown` | - | Emitted when dropdown is fully shown |
40
- | `hide` | - | Emitted when dropdown starts hiding |
41
- | `hidden` | - | Emitted when dropdown is fully hidden |
42
-
43
- ## Slots
44
-
45
- | Slot | Scope | Description |
46
- |------|-------|-------------|
47
- | `button` | - | Custom button content |
48
- | `item` | `{ item, index }` | Custom item rendering |
49
- | `header` | `{ item, index }` | Custom header rendering |
50
-
51
- ## Usage
52
-
53
- ### Programmatic Control
54
-
55
- ```vue
56
- <template>
57
- <div>
58
- <VibeButton @click="$refs.myDropdown.toggle()">External Toggle</VibeButton>
59
-
60
- <VibeDropdown
61
- ref="myDropdown"
62
- text="Dropdown Menu"
63
- :items="dropdownItems"
64
- />
65
- </div>
66
- </template>
67
- ```
68
-
69
- ### Basic Dropdown
70
-
71
- ```vue
72
- <template>
73
- <VibeDropdown
74
- text="Dropdown Menu"
75
- :items="dropdownItems"
76
- />
77
- </template>
78
- ```
79
-
80
- ## Important Notes
81
-
82
- **Automatic Initialization:** This component automatically initializes Bootstrap's Dropdown functionality when it is mounted, provided that Bootstrap's JavaScript is available in your project.
83
-
84
- **Programmatic Methods:** You can call `show()`, `hide()`, and `toggle()` on the component instance via template refs.
85
-
86
- **Instance Exposure:** You can access the underlying Bootstrap instance via template ref using the `bsInstance` property.
87
-
88
- ## Bootstrap CSS Classes
89
-
90
- - `.dropdown`, `.dropup`, `.dropend`, `.dropstart`
91
- - `.dropdown-toggle`
92
- - `.dropdown-menu`
93
- - `.dropdown-item`
@@ -1,148 +0,0 @@
1
- # VibeModal
2
-
3
- Modal dialogs for lightboxes, user notifications, or custom content.
4
-
5
- ## Props
6
-
7
- | Prop | Type | Default | Description |
8
- |------|------|---------|-------------|
9
- | `id` | `String` | `Auto-generated` | Unique identifier for the modal |
10
- | `modelValue` | `Boolean` | `false` | Control visibility (v-model) |
11
- | `title` | `String` | `''` | Modal title |
12
- | `size` | `Size\|'xl'` | `undefined` | Modal size: `'sm'`, `'lg'`, `'xl'` |
13
- | `centered` | `Boolean` | `false` | Vertically center modal |
14
- | `scrollable` | `Boolean` | `false` | Scrollable modal body |
15
- | `fullscreen` | `Boolean\|String` | `false` | Fullscreen: `true` or breakpoint |
16
- | `staticBackdrop` | `Boolean` | `false` | Don't close on backdrop click |
17
- | `hideHeader` | `Boolean` | `false` | Hide header section |
18
- | `hideFooter` | `Boolean` | `false` | Hide footer section |
19
- | `teleport` | `Boolean\|String` | `'body'` | Destination for Vue Teleport |
20
-
21
- ## Events
22
-
23
- | Event | Payload | Description |
24
- |-------|---------|-------------|
25
- | `update:modelValue` | `Boolean` | Emitted when modal visibility changes |
26
- | `show` | - | Emitted when modal starts showing |
27
- | `shown` | - | Emitted when modal is fully shown |
28
- | `hide` | - | Emitted when modal starts hiding |
29
- | `hidden` | - | Emitted when modal is fully hidden |
30
-
31
- ## Slots
32
-
33
- | Slot | Description |
34
- |------|-------------|
35
- | `default` | Modal body content |
36
- | `header` | Custom header content |
37
- | `footer` | Custom footer content |
38
-
39
- ## Usage
40
-
41
- ### Reactive Usage (v-model)
42
-
43
- ```vue
44
- <template>
45
- <div>
46
- <VibeButton variant="primary" @click="showModal = true">
47
- Open Modal
48
- </VibeButton>
49
-
50
- <VibeModal v-model="showModal" title="Reactive Modal">
51
- <p>This modal is controlled via Vue state.</p>
52
- </VibeModal>
53
- </div>
54
- </template>
55
-
56
- <script setup>
57
- import { ref } from 'vue'
58
- const showModal = ref(false)
59
- </script>
60
- ```
61
-
62
- ### Basic Modal (Data Attributes)
63
-
64
- ```vue
65
- <template>
66
- <div>
67
- <!-- You can still use standard Bootstrap data attributes -->
68
- <VibeButton variant="primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
69
- Launch Modal
70
- </VibeButton>
71
-
72
- <VibeModal id="exampleModal" title="Modal Title">
73
- <p>Modal body text goes here.</p>
74
- </VibeModal>
75
- </div>
76
- </template>
77
- ```
78
-
79
- ### Sized Modals
80
-
81
- ```vue
82
- <template>
83
- <div>
84
- <VibeModal title="Small Modal" size="sm">
85
- Small modal content
86
- </VibeModal>
87
-
88
- <VibeModal title="Large Modal" size="lg">
89
- Large modal content
90
- </VibeModal>
91
- </div>
92
- </template>
93
- ```
94
-
95
- ### Centered Modal
96
-
97
- ```vue
98
- <template>
99
- <VibeModal title="Centered Modal" centered>
100
- This modal is vertically centered.
101
- </VibeModal>
102
- </template>
103
- ```
104
-
105
- ### Custom Footer
106
-
107
- ```vue
108
- <template>
109
- <VibeModal title="Custom Footer">
110
- <p>Modal with custom footer buttons.</p>
111
-
112
- <template #footer>
113
- <VibeButton variant="secondary" @click="showModal = false">Close</VibeButton>
114
- <VibeButton variant="primary">Save changes</VibeButton>
115
- </template>
116
- </VibeModal>
117
- </template>
118
- ```
119
-
120
- ## Important Notes
121
-
122
- **Automatic Initialization:** This component automatically initializes Bootstrap's Modal functionality when it is mounted, provided that Bootstrap's JavaScript is available in your project.
123
-
124
- **Teleportation:** By default, this component teleports its DOM elements to the `<body>` to avoid stacking context issues. You can customize this with the `teleport` prop.
125
-
126
- **Instance Exposure:** You can access the underlying Bootstrap instance via template ref using the `bsInstance` property.
127
-
128
- ## Mobile Optimization
129
-
130
- **Safe Areas:** In fullscreen mode, the modal header and footer automatically respect device safe areas (notches) in hybrid apps.
131
-
132
- **Hardware Back Button:** On Android devices in hybrid environments, the hardware back button will automatically close the modal if it is open.
133
-
134
- **Dynamic Height:** Fullscreen modals use `dvh` (dynamic viewport height) units to ensure they occupy the full screen height even when mobile browser bars are visible.
135
-
136
- ## Bootstrap CSS Classes
137
-
138
- - `.modal`
139
- - `.modal-dialog`
140
- - `.modal-content`
141
- - `.modal-header`
142
- - `.modal-title`
143
- - `.modal-body`
144
- - `.modal-footer`
145
- - `.modal-{size}`
146
- - `.modal-dialog-centered`
147
- - `.modal-dialog-scrollable`
148
- - `.modal-fullscreen`
@@ -1,89 +0,0 @@
1
- # VibeOffcanvas
2
-
3
- Hidden sidebar for navigation or additional content.
4
-
5
- ## Props
6
-
7
- | Prop | Type | Default | Description |
8
- |------|------|---------|-------------|
9
- | `id` | `String` | `Auto-generated` | Unique identifier |
10
- | `modelValue` | `Boolean` | `false` | Control visibility (v-model) |
11
- | `title` | `String` | `''` | Offcanvas title |
12
- | `placement` | `OffcanvasPlacement` | `'start'` | Placement: `'start'`, `'end'`, `'top'`, `'bottom'` |
13
- | `backdrop` | `Boolean\|String` | `true` | Backdrop: `true`, `false`, or `'static'` |
14
- | `scroll` | `Boolean` | `false` | Allow body scrolling |
15
- | `teleport` | `Boolean\|String` | `'body'` | Destination for Vue Teleport |
16
-
17
- ## Events
18
-
19
- | Event | Payload | Description |
20
- |-------|---------|-------------|
21
- | `update:modelValue` | `Boolean` | Emitted when visibility changes |
22
- | `show` | - | Emitted when offcanvas starts showing |
23
- | `shown` | - | Emitted when offcanvas is fully shown |
24
- | `hide` | - | Emitted when offcanvas starts hiding |
25
- | `hidden` | - | Emitted when offcanvas is fully hidden |
26
-
27
- ## Slots
28
-
29
- | Slot | Description |
30
- |------|-------------|
31
- | `default` | Offcanvas body content |
32
- | `header` | Custom header content |
33
-
34
- ## Usage
35
-
36
- ### Reactive Usage (v-model)
37
-
38
- ```vue
39
- <template>
40
- <div>
41
- <VibeButton variant="primary" @click="showOffcanvas = true">
42
- Open Offcanvas
43
- </VibeButton>
44
-
45
- <VibeOffcanvas v-model="showOffcanvas" title="Reactive Offcanvas">
46
- This offcanvas is controlled via Vue state.
47
- </VibeOffcanvas>
48
- </div>
49
- </template>
50
-
51
- <script setup>
52
- import { ref } from 'vue'
53
- const showOffcanvas = ref(false)
54
- </script>
55
- ```
56
-
57
- ### Placement Options
58
-
59
- ```vue
60
- <template>
61
- <VibeOffcanvas title="Right Side" placement="end">
62
- Content on the right
63
- </VibeOffcanvas>
64
- </template>
65
- ```
66
-
67
- ## Important Notes
68
-
69
- **Automatic Initialization:** This component automatically initializes Bootstrap's Offcanvas functionality when it is mounted, provided that Bootstrap's JavaScript is available in your project.
70
-
71
- **Teleportation:** By default, this component teleports its DOM elements to the `<body>` to avoid stacking context issues. You can customize this with the `teleport` prop.
72
-
73
- **Instance Exposure:** You can access the underlying Bootstrap instance via template ref using the `bsInstance` property.
74
-
75
- ## Mobile Optimization
76
-
77
- **Safe Areas:** When used in hybrid apps with `viewport-fit=cover`, the offcanvas header automatically adds padding to account for device notches.
78
-
79
- **Hardware Back Button:** On Android devices in hybrid environments, the hardware back button will automatically close the offcanvas if it is open.
80
-
81
- **Dynamic Height:** The offcanvas uses `dvh` (dynamic viewport height) units to ensure it occupies the full screen height even when mobile browser bars are visible.
82
-
83
- ## Bootstrap CSS Classes
84
-
85
- - `.offcanvas`
86
- - `.offcanvas-{placement}`
87
- - `.offcanvas-header`
88
- - `.offcanvas-title`
89
- - `.offcanvas-body`