@appsbd/vue3-appsbd-ui 1.0.4 → 1.0.5
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/.ai/ai_ref_AbAvatar.md +41 -41
- package/.ai/ai_ref_AbBadge.md +36 -36
- package/.ai/ai_ref_AbButton.md +52 -51
- package/.ai/ai_ref_AbCard.md +51 -51
- package/.ai/ai_ref_AbCarousel.md +36 -36
- package/.ai/ai_ref_AbChart.md +46 -46
- package/.ai/ai_ref_AbColorPicker.md +42 -42
- package/.ai/ai_ref_AbConfirmPopover.md +54 -54
- package/.ai/ai_ref_AbCustomField.md +66 -66
- package/.ai/ai_ref_AbDarkModeToggler.md +33 -33
- package/.ai/ai_ref_AbDateTimePicker.md +74 -74
- package/.ai/ai_ref_AbEasyModal.md +56 -56
- package/.ai/ai_ref_AbField.md +88 -88
- package/.ai/ai_ref_AbFileUploader.md +47 -47
- package/.ai/ai_ref_AbFilterPanel.md +67 -67
- package/.ai/ai_ref_AbFormCheck.md +58 -58
- package/.ai/ai_ref_AbImageRadioInput.md +55 -55
- package/.ai/ai_ref_AbInputField.md +66 -66
- package/.ai/ai_ref_AbInputTag.md +56 -56
- package/.ai/ai_ref_AbKbd.md +23 -23
- package/.ai/ai_ref_AbKbdGroup.md +21 -21
- package/.ai/ai_ref_AbMainLayout.md +106 -0
- package/.ai/ai_ref_AbMultiSelect.md +78 -78
- package/.ai/ai_ref_AbNumberField.md +59 -59
- package/.ai/ai_ref_AbPinInput.md +33 -33
- package/.ai/ai_ref_AbPopover.md +54 -54
- package/.ai/ai_ref_AbPricingCard.md +56 -56
- package/.ai/ai_ref_AbPricingContainer.md +41 -41
- package/.ai/ai_ref_AbPricingTable.md +56 -56
- package/.ai/ai_ref_AbProgressbar.md +34 -34
- package/.ai/ai_ref_AbScrollbar.md +38 -38
- package/.ai/ai_ref_AbSettingsForm.md +46 -46
- package/.ai/ai_ref_AbSideMenuItem.md +47 -47
- package/.ai/ai_ref_AbSidebar.md +62 -62
- package/.ai/ai_ref_AbSkeleton.md +23 -23
- package/.ai/ai_ref_AbSlider.md +52 -52
- package/.ai/ai_ref_AbTab.md +30 -30
- package/.ai/ai_ref_AbTable.md +49 -49
- package/.ai/ai_ref_AbTabs.md +37 -37
- package/.ai/ai_ref_AbToggle.md +46 -46
- package/.ai/ai_ref_AbTooltip.md +39 -39
- package/.ai/ai_ref_AbWizard.md +64 -64
- package/.ai/ai_ref_AbWizardStep.md +36 -36
- package/.ai/ai_ref_abEventBus.md +66 -66
- package/.ai/ai_ref_abRequestParam.md +40 -40
- package/.ai/ai_ref_abVeeRules.md +33 -33
- package/.ai/ai_ref_global_config.md +57 -56
- package/.ai/ai_ref_useAlert.md +50 -45
- package/.ai/ai_ref_useFileValidator.md +31 -31
- package/.ai/ai_ref_useResponsive.md +41 -41
- package/.ai/ai_ref_useTheme.md +28 -28
- package/.ai/ai_ref_useToast.md +30 -30
- package/AI_REFERENCE.md +87 -86
- package/design-system.md +403 -403
- package/dist/skins/black.css +1 -1
- package/dist/skins/black.scss +3 -3
- package/dist/skins/cyan.css +1 -1
- package/dist/skins/cyan.scss +3 -3
- package/dist/skins/default.css +1 -1
- package/dist/skins/default.scss +5 -5
- package/dist/skins/gray.css +1 -1
- package/dist/skins/gray.scss +3 -3
- package/dist/skins/green.css +1 -1
- package/dist/skins/green.scss +5 -5
- package/dist/skins/orange.css +1 -1
- package/dist/skins/orange.scss +3 -3
- package/dist/skins/pink.css +1 -1
- package/dist/skins/pink.scss +3 -3
- package/dist/skins/purple.css +1 -1
- package/dist/skins/purple.scss +3 -3
- package/dist/skins/red.css +1 -1
- package/dist/skins/red.scss +3 -3
- package/dist/skins/themes/_black.scss +18 -6
- package/dist/skins/themes/_blue.scss +18 -43
- package/dist/skins/themes/_common_variable.scss +695 -685
- package/dist/skins/themes/_cyan.scss +18 -6
- package/dist/skins/themes/_gray.scss +18 -7
- package/dist/skins/themes/_green.scss +18 -6
- package/dist/skins/themes/_grid.scss +32 -30
- package/dist/skins/themes/_orange.scss +18 -6
- package/dist/skins/themes/_pink.scss +18 -6
- package/dist/skins/themes/_purple.scss +18 -6
- package/dist/skins/themes/_red.scss +18 -6
- package/dist/skins/themes/_violet.scss +18 -6
- package/dist/skins/violet.css +1 -1
- package/dist/skins/violet.scss +3 -3
- package/dist/style.css +1 -1
- package/dist/vue3-appsbd-ui.cjs.js +130 -142
- package/dist/vue3-appsbd-ui.es.js +21758 -20241
- package/package.json +72 -72
- package/readme.md +194 -194
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
# AbInputField — AI Reference
|
|
2
|
-
|
|
3
|
-
Core text input with VeeValidate integration, localized feedback, and prefix/postfix/hint slots. Use for single-line text inputs; use `AbField` for a polymorphic field that can render selects, toggles, etc.
|
|
4
|
-
|
|
5
|
-
## Usage
|
|
6
|
-
|
|
7
|
-
```vue
|
|
8
|
-
<template>
|
|
9
|
-
<ab-input-field
|
|
10
|
-
v-model="form.email"
|
|
11
|
-
name="email"
|
|
12
|
-
label="Email"
|
|
13
|
-
placeholder="you@example.com"
|
|
14
|
-
rules="required|email"
|
|
15
|
-
hints="We'll never share your email."
|
|
16
|
-
>
|
|
17
|
-
<template #prefix><i class="bi bi-envelope"></i></template>
|
|
18
|
-
</ab-input-field>
|
|
19
|
-
</template>
|
|
20
|
-
|
|
21
|
-
<script setup>
|
|
22
|
-
import { reactive } from 'vue';
|
|
23
|
-
const form = reactive({ email: '' });
|
|
24
|
-
</script>
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Props
|
|
28
|
-
|
|
29
|
-
| Name | Type | Default | Description |
|
|
30
|
-
| --- | --- | --- | --- |
|
|
31
|
-
| `modelValue` | `any` | `null` | Two-way-bound value. |
|
|
32
|
-
| `label` | `String` | `""` | Field label. |
|
|
33
|
-
| `placeholder` | `String` | `""` | Input placeholder. |
|
|
34
|
-
| `type` | `String` | `"text"` | Native input type (`text`, `email`, `password`, `number`, `tel`, …). |
|
|
35
|
-
| `name` | `String` | **required** | VeeValidate field name. |
|
|
36
|
-
| `isCodeInput` | `Boolean` | `false` | Applies monospace / code-input styling. |
|
|
37
|
-
| `rules` | `String \| Object` | `""` | VeeValidate rules. |
|
|
38
|
-
| `containerClass` | `String` | `"mb-3"` | Class on the wrapper `<div>`. |
|
|
39
|
-
| `hints` | `String` | `""` | Helper text beneath the input. |
|
|
40
|
-
| `prefix` | `String` | `""` | Prefix text/icon (shortcut for `#prefix` slot). |
|
|
41
|
-
| `postfix` | `String` | `""` | Postfix text/icon. |
|
|
42
|
-
| `maxlength` | `any` | `null` | Native `maxlength`. |
|
|
43
|
-
| `isLeftIconBorder` | `Boolean` | `false` | Renders border between the prefix icon and the input. |
|
|
44
|
-
| `isRightIconBorder` | `Boolean` | `false` | Renders border between the postfix icon and the input. |
|
|
45
|
-
| `isHideLabel` | `Boolean` | `false` | Hide the label visually. |
|
|
46
|
-
| `iconPosition` | `String` | `"right"` | Position of the custom `#icon` slot (`"left"`, `"right"`). |
|
|
47
|
-
|
|
48
|
-
## Events
|
|
49
|
-
|
|
50
|
-
| Event | Payload | Description |
|
|
51
|
-
| --- | --- | --- |
|
|
52
|
-
| `update:modelValue` | `value` | v-model sync. |
|
|
53
|
-
| `input` | `value` | Fired on input. |
|
|
54
|
-
| `keyup` | `KeyboardEvent` | Forwarded native event. |
|
|
55
|
-
| `keydown` | `KeyboardEvent` | Forwarded native event. |
|
|
56
|
-
| `paste` | `ClipboardEvent` | Forwarded native event. |
|
|
57
|
-
|
|
58
|
-
## Slots
|
|
59
|
-
|
|
60
|
-
| Name | Description |
|
|
61
|
-
| --- | --- |
|
|
62
|
-
| `label` | Custom label content. |
|
|
63
|
-
| `prefix` | Prefix icon / text. |
|
|
64
|
-
| `icon` | Custom icon inside the input field. |
|
|
65
|
-
| `postfix` | Postfix icon / text. |
|
|
66
|
-
| `hints` | Helper text (overrides `hints` prop). |
|
|
1
|
+
# AbInputField — AI Reference
|
|
2
|
+
|
|
3
|
+
Core text input with VeeValidate integration, localized feedback, and prefix/postfix/hint slots. Use for single-line text inputs; use `AbField` for a polymorphic field that can render selects, toggles, etc.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```vue
|
|
8
|
+
<template>
|
|
9
|
+
<ab-input-field
|
|
10
|
+
v-model="form.email"
|
|
11
|
+
name="email"
|
|
12
|
+
label="Email"
|
|
13
|
+
placeholder="you@example.com"
|
|
14
|
+
rules="required|email"
|
|
15
|
+
hints="We'll never share your email."
|
|
16
|
+
>
|
|
17
|
+
<template #prefix><i class="bi bi-envelope"></i></template>
|
|
18
|
+
</ab-input-field>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script setup>
|
|
22
|
+
import { reactive } from 'vue';
|
|
23
|
+
const form = reactive({ email: '' });
|
|
24
|
+
</script>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Props
|
|
28
|
+
|
|
29
|
+
| Name | Type | Default | Description |
|
|
30
|
+
| --- | --- | --- | --- |
|
|
31
|
+
| `modelValue` | `any` | `null` | Two-way-bound value. |
|
|
32
|
+
| `label` | `String` | `""` | Field label. |
|
|
33
|
+
| `placeholder` | `String` | `""` | Input placeholder. |
|
|
34
|
+
| `type` | `String` | `"text"` | Native input type (`text`, `email`, `password`, `number`, `tel`, …). |
|
|
35
|
+
| `name` | `String` | **required** | VeeValidate field name. |
|
|
36
|
+
| `isCodeInput` | `Boolean` | `false` | Applies monospace / code-input styling. |
|
|
37
|
+
| `rules` | `String \| Object` | `""` | VeeValidate rules. |
|
|
38
|
+
| `containerClass` | `String` | `"mb-3"` | Class on the wrapper `<div>`. |
|
|
39
|
+
| `hints` | `String` | `""` | Helper text beneath the input. |
|
|
40
|
+
| `prefix` | `String` | `""` | Prefix text/icon (shortcut for `#prefix` slot). |
|
|
41
|
+
| `postfix` | `String` | `""` | Postfix text/icon. |
|
|
42
|
+
| `maxlength` | `any` | `null` | Native `maxlength`. |
|
|
43
|
+
| `isLeftIconBorder` | `Boolean` | `false` | Renders border between the prefix icon and the input. |
|
|
44
|
+
| `isRightIconBorder` | `Boolean` | `false` | Renders border between the postfix icon and the input. |
|
|
45
|
+
| `isHideLabel` | `Boolean` | `false` | Hide the label visually. |
|
|
46
|
+
| `iconPosition` | `String` | `"right"` | Position of the custom `#icon` slot (`"left"`, `"right"`). |
|
|
47
|
+
|
|
48
|
+
## Events
|
|
49
|
+
|
|
50
|
+
| Event | Payload | Description |
|
|
51
|
+
| --- | --- | --- |
|
|
52
|
+
| `update:modelValue` | `value` | v-model sync. |
|
|
53
|
+
| `input` | `value` | Fired on input. |
|
|
54
|
+
| `keyup` | `KeyboardEvent` | Forwarded native event. |
|
|
55
|
+
| `keydown` | `KeyboardEvent` | Forwarded native event. |
|
|
56
|
+
| `paste` | `ClipboardEvent` | Forwarded native event. |
|
|
57
|
+
|
|
58
|
+
## Slots
|
|
59
|
+
|
|
60
|
+
| Name | Description |
|
|
61
|
+
| --- | --- |
|
|
62
|
+
| `label` | Custom label content. |
|
|
63
|
+
| `prefix` | Prefix icon / text. |
|
|
64
|
+
| `icon` | Custom icon inside the input field. |
|
|
65
|
+
| `postfix` | Postfix icon / text. |
|
|
66
|
+
| `hints` | Helper text (overrides `hints` prop). |
|
package/.ai/ai_ref_AbInputTag.md
CHANGED
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
# AbInputTag — AI Reference
|
|
2
|
-
|
|
3
|
-
Multi-tag input — lets users enter and manage a list of tags. Optionally supports an `options` array for autocomplete-style selection.
|
|
4
|
-
|
|
5
|
-
## Usage
|
|
6
|
-
|
|
7
|
-
```vue
|
|
8
|
-
<template>
|
|
9
|
-
<ab-input-tag v-model="tags" name="tags" label="Tags" placeholder="Type and press Enter" :max="10" hints="Up to 10 tags" />
|
|
10
|
-
|
|
11
|
-
<ab-input-tag v-model="skills" name="skills" :options="['Vue', 'React', 'Angular', 'Svelte']" />
|
|
12
|
-
</template>
|
|
13
|
-
|
|
14
|
-
<script setup>
|
|
15
|
-
import { ref } from 'vue';
|
|
16
|
-
const tags = ref([]);
|
|
17
|
-
const skills = ref([]);
|
|
18
|
-
</script>
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## Props
|
|
22
|
-
|
|
23
|
-
| Name | Type | Default | Description |
|
|
24
|
-
| --- | --- | --- | --- |
|
|
25
|
-
| `modelValue` | `Array` | `[]` | v-model array of selected tags. |
|
|
26
|
-
| `options` | `Array` | `[]` | Each entry: `{ val, title }` or a plain string. |
|
|
27
|
-
| `label` | `String` | `""` | Field label. |
|
|
28
|
-
| `size` | `String` | `"md"` | Adjusts component size (`xs`, `sm`, `md`, `lg`, `xl`, `xxl`). |
|
|
29
|
-
| `placeholder` | `String` | `""` | Placeholder text. |
|
|
30
|
-
| `name` | `String` | **required** | VeeValidate field name. |
|
|
31
|
-
| `rules` | `String \| Object` | `""` | VeeValidate rules. |
|
|
32
|
-
| `containerClass` | `String` | `"mb-3"` | Wrapper class. |
|
|
33
|
-
| `hints` | `String` | `""` | Helper text. |
|
|
34
|
-
| `prefix` | `String` | `""` | Prefix icon/text. |
|
|
35
|
-
| `postfix` | `String` | `""` | Postfix icon/text. |
|
|
36
|
-
| `max` | `Number` | `0` | Max number of tags (0 = unlimited). |
|
|
37
|
-
| `isLeftIconBorder` | `Boolean` | `false` | Border on prefix icon. |
|
|
38
|
-
| `isRightIconBorder` | `Boolean` | `false` | Border on postfix icon. |
|
|
39
|
-
| `isHideLabel` | `Boolean` | `false` | Hide the label visually. |
|
|
40
|
-
| `iconPosition` | `String` | `"right"` | Position of the custom `#icon` slot (`"left"`, `"right"`). |
|
|
41
|
-
|
|
42
|
-
## Events
|
|
43
|
-
|
|
44
|
-
| Event | Payload | Description |
|
|
45
|
-
| --- | --- | --- |
|
|
46
|
-
| `update:modelValue` | `Array` | v-model sync. |
|
|
47
|
-
|
|
48
|
-
## Slots
|
|
49
|
-
|
|
50
|
-
| Name | Description |
|
|
51
|
-
| --- | --- |
|
|
52
|
-
| `label` | Custom label. |
|
|
53
|
-
| `prefix` | Prefix icon/text. |
|
|
54
|
-
| `icon` | Custom icon inside the input. |
|
|
55
|
-
| `postfix` | Postfix icon/text. |
|
|
56
|
-
| `hints` | Custom hints. |
|
|
1
|
+
# AbInputTag — AI Reference
|
|
2
|
+
|
|
3
|
+
Multi-tag input — lets users enter and manage a list of tags. Optionally supports an `options` array for autocomplete-style selection.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```vue
|
|
8
|
+
<template>
|
|
9
|
+
<ab-input-tag v-model="tags" name="tags" label="Tags" placeholder="Type and press Enter" :max="10" hints="Up to 10 tags" />
|
|
10
|
+
|
|
11
|
+
<ab-input-tag v-model="skills" name="skills" :options="['Vue', 'React', 'Angular', 'Svelte']" />
|
|
12
|
+
</template>
|
|
13
|
+
|
|
14
|
+
<script setup>
|
|
15
|
+
import { ref } from 'vue';
|
|
16
|
+
const tags = ref([]);
|
|
17
|
+
const skills = ref([]);
|
|
18
|
+
</script>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Props
|
|
22
|
+
|
|
23
|
+
| Name | Type | Default | Description |
|
|
24
|
+
| --- | --- | --- | --- |
|
|
25
|
+
| `modelValue` | `Array` | `[]` | v-model array of selected tags. |
|
|
26
|
+
| `options` | `Array` | `[]` | Each entry: `{ val, title }` or a plain string. |
|
|
27
|
+
| `label` | `String` | `""` | Field label. |
|
|
28
|
+
| `size` | `String` | `"md"` | Adjusts component size (`xs`, `sm`, `md`, `lg`, `xl`, `xxl`). |
|
|
29
|
+
| `placeholder` | `String` | `""` | Placeholder text. |
|
|
30
|
+
| `name` | `String` | **required** | VeeValidate field name. |
|
|
31
|
+
| `rules` | `String \| Object` | `""` | VeeValidate rules. |
|
|
32
|
+
| `containerClass` | `String` | `"mb-3"` | Wrapper class. |
|
|
33
|
+
| `hints` | `String` | `""` | Helper text. |
|
|
34
|
+
| `prefix` | `String` | `""` | Prefix icon/text. |
|
|
35
|
+
| `postfix` | `String` | `""` | Postfix icon/text. |
|
|
36
|
+
| `max` | `Number` | `0` | Max number of tags (0 = unlimited). |
|
|
37
|
+
| `isLeftIconBorder` | `Boolean` | `false` | Border on prefix icon. |
|
|
38
|
+
| `isRightIconBorder` | `Boolean` | `false` | Border on postfix icon. |
|
|
39
|
+
| `isHideLabel` | `Boolean` | `false` | Hide the label visually. |
|
|
40
|
+
| `iconPosition` | `String` | `"right"` | Position of the custom `#icon` slot (`"left"`, `"right"`). |
|
|
41
|
+
|
|
42
|
+
## Events
|
|
43
|
+
|
|
44
|
+
| Event | Payload | Description |
|
|
45
|
+
| --- | --- | --- |
|
|
46
|
+
| `update:modelValue` | `Array` | v-model sync. |
|
|
47
|
+
|
|
48
|
+
## Slots
|
|
49
|
+
|
|
50
|
+
| Name | Description |
|
|
51
|
+
| --- | --- |
|
|
52
|
+
| `label` | Custom label. |
|
|
53
|
+
| `prefix` | Prefix icon/text. |
|
|
54
|
+
| `icon` | Custom icon inside the input. |
|
|
55
|
+
| `postfix` | Postfix icon/text. |
|
|
56
|
+
| `hints` | Custom hints. |
|
package/.ai/ai_ref_AbKbd.md
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
# AbKbd — AI Reference
|
|
2
|
-
|
|
3
|
-
Styled `<kbd>`-like keyboard key chip. Compose multiple into a chord using `AbKbdGroup`.
|
|
4
|
-
|
|
5
|
-
## Usage
|
|
6
|
-
|
|
7
|
-
```vue
|
|
8
|
-
<template>
|
|
9
|
-
Press <ab-kbd>Esc</ab-kbd> to close.
|
|
10
|
-
|
|
11
|
-
<ab-kbd-group>
|
|
12
|
-
<ab-kbd>⌘</ab-kbd>
|
|
13
|
-
<ab-kbd>Shift</ab-kbd>
|
|
14
|
-
<ab-kbd>P</ab-kbd>
|
|
15
|
-
</ab-kbd-group>
|
|
16
|
-
</template>
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Slots
|
|
20
|
-
|
|
21
|
-
| Name | Description |
|
|
22
|
-
| --- | --- |
|
|
23
|
-
| `default` | Key label (typically a single character or short word). |
|
|
1
|
+
# AbKbd — AI Reference
|
|
2
|
+
|
|
3
|
+
Styled `<kbd>`-like keyboard key chip. Compose multiple into a chord using `AbKbdGroup`.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```vue
|
|
8
|
+
<template>
|
|
9
|
+
Press <ab-kbd>Esc</ab-kbd> to close.
|
|
10
|
+
|
|
11
|
+
<ab-kbd-group>
|
|
12
|
+
<ab-kbd>⌘</ab-kbd>
|
|
13
|
+
<ab-kbd>Shift</ab-kbd>
|
|
14
|
+
<ab-kbd>P</ab-kbd>
|
|
15
|
+
</ab-kbd-group>
|
|
16
|
+
</template>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Slots
|
|
20
|
+
|
|
21
|
+
| Name | Description |
|
|
22
|
+
| --- | --- |
|
|
23
|
+
| `default` | Key label (typically a single character or short word). |
|
package/.ai/ai_ref_AbKbdGroup.md
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
# AbKbdGroup — AI Reference
|
|
2
|
-
|
|
3
|
-
Visual grouping container for multiple `AbKbd` chips — renders keyboard chords / shortcuts.
|
|
4
|
-
|
|
5
|
-
## Usage
|
|
6
|
-
|
|
7
|
-
```vue
|
|
8
|
-
<template>
|
|
9
|
-
<ab-kbd-group>
|
|
10
|
-
<ab-kbd>Ctrl</ab-kbd>
|
|
11
|
-
<ab-kbd>Alt</ab-kbd>
|
|
12
|
-
<ab-kbd>Del</ab-kbd>
|
|
13
|
-
</ab-kbd-group>
|
|
14
|
-
</template>
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## Slots
|
|
18
|
-
|
|
19
|
-
| Name | Description |
|
|
20
|
-
| --- | --- |
|
|
21
|
-
| `default` | One or more `AbKbd` children. |
|
|
1
|
+
# AbKbdGroup — AI Reference
|
|
2
|
+
|
|
3
|
+
Visual grouping container for multiple `AbKbd` chips — renders keyboard chords / shortcuts.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```vue
|
|
8
|
+
<template>
|
|
9
|
+
<ab-kbd-group>
|
|
10
|
+
<ab-kbd>Ctrl</ab-kbd>
|
|
11
|
+
<ab-kbd>Alt</ab-kbd>
|
|
12
|
+
<ab-kbd>Del</ab-kbd>
|
|
13
|
+
</ab-kbd-group>
|
|
14
|
+
</template>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Slots
|
|
18
|
+
|
|
19
|
+
| Name | Description |
|
|
20
|
+
| --- | --- |
|
|
21
|
+
| `default` | One or more `AbKbd` children. |
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# AbMainLayout — AI Reference
|
|
2
|
+
|
|
3
|
+
Full-page application shell with left sidebar, right sidebar, header, body, and footer slots. On desktop the left sidebar is always visible; on mobile (< 576px) it becomes an overlay drawer with a backdrop. Use this as the top-level layout wrapper when building admin dashboards or panel-style applications.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @vue3-appsbd-ui
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
`AbMainLayout` is **not** globally registered. Import it explicitly:
|
|
12
|
+
|
|
13
|
+
```js
|
|
14
|
+
import { AbMainLayout } from "vue3-appsbd-ui";
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```vue
|
|
20
|
+
<template>
|
|
21
|
+
<ab-main-layout ref="layoutRef">
|
|
22
|
+
<template #leftSidebar>
|
|
23
|
+
<ab-sidebar app-unique-id="my-app">
|
|
24
|
+
<ab-side-menu-item :to="{ name: 'dashboard' }">Dashboard</ab-side-menu-item>
|
|
25
|
+
</ab-sidebar>
|
|
26
|
+
</template>
|
|
27
|
+
|
|
28
|
+
<template #pageHeader>
|
|
29
|
+
<div class="d-flex align-items-center justify-content-between">
|
|
30
|
+
<h1>My App</h1>
|
|
31
|
+
<ab-dark-mode-toggler size="xs" />
|
|
32
|
+
</div>
|
|
33
|
+
</template>
|
|
34
|
+
|
|
35
|
+
<template #body>
|
|
36
|
+
<router-view />
|
|
37
|
+
</template>
|
|
38
|
+
|
|
39
|
+
<template #pageFooter>
|
|
40
|
+
<span>© 2026 My Company</span>
|
|
41
|
+
</template>
|
|
42
|
+
</ab-main-layout>
|
|
43
|
+
</template>
|
|
44
|
+
|
|
45
|
+
<script setup>
|
|
46
|
+
import { AbMainLayout } from "vue3-appsbd-ui";
|
|
47
|
+
import { ref } from "vue";
|
|
48
|
+
|
|
49
|
+
const layoutRef = ref(null);
|
|
50
|
+
</script>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Mobile sidebar toggle
|
|
54
|
+
|
|
55
|
+
On mobile, call `toggleLeftSidebar()` via the template ref to open/close the drawer:
|
|
56
|
+
|
|
57
|
+
```vue
|
|
58
|
+
<template>
|
|
59
|
+
<ab-main-layout ref="layoutRef">
|
|
60
|
+
<template #pageHeader>
|
|
61
|
+
<button @click="layoutRef?.toggleLeftSidebar()">☰</button>
|
|
62
|
+
<h1>My App</h1>
|
|
63
|
+
</template>
|
|
64
|
+
<!-- ... -->
|
|
65
|
+
</ab-main-layout>
|
|
66
|
+
</template>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Props
|
|
70
|
+
|
|
71
|
+
| Name | Type | Default | Description |
|
|
72
|
+
| --- | --- | --- | --- |
|
|
73
|
+
| `headerClass` | `String` | `"apbd-bordered"` | CSS class applied to the page header wrapper. Use `"apbd-bordered"` for a bordered header or `""` for no border. |
|
|
74
|
+
| `footerClass` | `String` | `""` | CSS class applied to the page footer wrapper. |
|
|
75
|
+
|
|
76
|
+
## Slots
|
|
77
|
+
|
|
78
|
+
| Name | Scoped Payload | Description |
|
|
79
|
+
| --- | --- | --- |
|
|
80
|
+
| `leftSidebar` | — | Left sidebar panel. On desktop it's always visible; on mobile it slides in as a drawer. Typically hosts `AbSidebar`. |
|
|
81
|
+
| `pageHeader` | `{ headerClass }` | Top header bar. Receives the resolved `headerClass` as a scoped slot prop. |
|
|
82
|
+
| `bodyHeader` | — | Content rendered above the scrollable body area. |
|
|
83
|
+
| `body` | — | Main scrollable content area. |
|
|
84
|
+
| `bodyFooter` | — | Content rendered below the scrollable body area. |
|
|
85
|
+
| `pageFooter` | — | Bottom footer bar. |
|
|
86
|
+
| `rightSidebar` | — | Right sidebar panel. Only rendered when `isRightSidebarOpen` is `true`. |
|
|
87
|
+
|
|
88
|
+
## Exposed methods
|
|
89
|
+
|
|
90
|
+
| Name | Signature | Description |
|
|
91
|
+
| --- | --- | --- |
|
|
92
|
+
| `isLeftSidebarOpen` | `Ref<boolean>` | Reactive state of the left sidebar (read-only). |
|
|
93
|
+
| `isRightSidebarOpen` | `Ref<boolean>` | Reactive state of the right sidebar (read-only). |
|
|
94
|
+
| `toggleLeftSidebar` | `(state?: boolean) => void` | Toggle or explicitly set left sidebar visibility. |
|
|
95
|
+
| `toggleRightSidebar` | `(state?: boolean) => void` | Toggle or explicitly set right sidebar visibility. |
|
|
96
|
+
|
|
97
|
+
## Provides
|
|
98
|
+
|
|
99
|
+
The component provides a `layoutState` injection key to all descendants:
|
|
100
|
+
|
|
101
|
+
```js
|
|
102
|
+
inject: ['layoutState']
|
|
103
|
+
// layoutState = { isLeftSidebarOpen, isRightSidebarOpen, toggleLeftSidebar, toggleRightSidebar }
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Child components (like `AbSidebar`) can inject this to react to or control the sidebar state.
|
|
@@ -1,78 +1,78 @@
|
|
|
1
|
-
# AbMultiSelect — AI Reference
|
|
2
|
-
|
|
3
|
-
Searchable single/multi/tag select. Custom built-in replacement for `@vueform/multiselect` — no third-party theme CSS required.
|
|
4
|
-
|
|
5
|
-
## Usage
|
|
6
|
-
|
|
7
|
-
```vue
|
|
8
|
-
<template>
|
|
9
|
-
<ab-multi-select v-model="country" name="country" label="Country" :options="countries" label-key="title" value-key="val" searchable />
|
|
10
|
-
|
|
11
|
-
<ab-multi-select v-model="skills" name="skills" label="Skills" mode="multiple" :options="skillOptions" :max="5" />
|
|
12
|
-
|
|
13
|
-
<ab-multi-select v-model="hashtags" name="hashtags" mode="tags" searchable />
|
|
14
|
-
|
|
15
|
-
<ab-multi-select v-model="user" name="user" is-ajax-search searchable :on-search="searchUsers" :loading="isSearching" />
|
|
16
|
-
</template>
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Props
|
|
20
|
-
|
|
21
|
-
| Name | Type | Default | Description |
|
|
22
|
-
| --- | --- | --- | --- |
|
|
23
|
-
| `modelValue` | `any` | `null` | v-model value. |
|
|
24
|
-
| `label` | `String` | `""` | Field label. |
|
|
25
|
-
| `placeholder` | `String` | `""` | Placeholder text. |
|
|
26
|
-
| `type` | `String` | `"text"` | Input type. |
|
|
27
|
-
| `name` | `String` | **required** | VeeValidate field name. |
|
|
28
|
-
| `rules` | `String \| Object` | `""` | VeeValidate rules. |
|
|
29
|
-
| `containerClass` | `String` | `"mb-3"` | Wrapper class. |
|
|
30
|
-
| `hints` | `String` | `""` | Helper text. |
|
|
31
|
-
| `multiple` | `Boolean` | `false` | Deprecated — use `mode` instead. |
|
|
32
|
-
| `searchable` | `Boolean` | `false` | Enable option search/filter. |
|
|
33
|
-
| `mode` | `String` | `"single"` | `single`, `multiple`, or `tags`. |
|
|
34
|
-
| `size` | `String` | `"md"` | Adjusts component size (`xs`, `sm`, `md`, `lg`, `xl`, `xxl`). |
|
|
35
|
-
| `options` | `Array` | `[]` | Available options. |
|
|
36
|
-
| `labelKey` | `String` | `"title"` | Property to use for label. |
|
|
37
|
-
| `valueKey` | `String` | `"val"` | Property to use for value. |
|
|
38
|
-
| `max` | `Number` | `-1` | Max selections; `-1` = unlimited. |
|
|
39
|
-
| `object` | `Boolean` | `false` | Return full objects instead of values. |
|
|
40
|
-
| `prefix` | `String` | `""` | Prefix text. |
|
|
41
|
-
| `postfix` | `String` | `""` | Postfix text. |
|
|
42
|
-
| `isAjaxSearch` | `Boolean` | `false` | Enable async search via `onSearch`. |
|
|
43
|
-
| `onSearch` | `Function` | `null` | Async handler `(query) => Promise<options>`. |
|
|
44
|
-
| `hideSelected` | `Boolean` | `true` | Hide already-selected items from dropdown. |
|
|
45
|
-
| `loading` | `Boolean` | `false` | Show a loading spinner. |
|
|
46
|
-
| `disabled` | `Boolean` | `false` | Disable the field. |
|
|
47
|
-
| `appendToBody` | `Boolean` | `true` | Teleport the dropdown to `<body>`. |
|
|
48
|
-
| `isLeftIconBorder` | `Boolean` | `false` | Border on prefix icon. |
|
|
49
|
-
| `isRightIconBorder` | `Boolean` | `false` | Border on postfix icon. |
|
|
50
|
-
| `isHideLabel` | `Boolean` | `false` | Hide the label visually. |
|
|
51
|
-
| `iconPosition` | `String` | `"right"` | Position of the custom `#icon` slot (`"left"`, `"right"`). |
|
|
52
|
-
|
|
53
|
-
## Events
|
|
54
|
-
|
|
55
|
-
| Event | Payload | Description |
|
|
56
|
-
| --- | --- | --- |
|
|
57
|
-
| `update:modelValue` | `value` | v-model sync. |
|
|
58
|
-
| `clear` | — | Selection cleared. |
|
|
59
|
-
| `change` | `value` | Value changed. |
|
|
60
|
-
| `select` | `value` | An option was selected. |
|
|
61
|
-
| `open` | — | Dropdown opened. |
|
|
62
|
-
| `close` | — | Dropdown closed. |
|
|
63
|
-
| `search-change` | `query` | Search input changed. |
|
|
64
|
-
|
|
65
|
-
## Slots
|
|
66
|
-
|
|
67
|
-
| Name | Scope | Description |
|
|
68
|
-
| --- | --- | --- |
|
|
69
|
-
| `label` | — | Custom label. |
|
|
70
|
-
| `prefix` | — | Prefix slot. |
|
|
71
|
-
| `icon` | — | Custom icon slot. |
|
|
72
|
-
| `postfix` | — | Postfix slot. |
|
|
73
|
-
| `singlelabel` | `value` | Custom single-mode label rendering. |
|
|
74
|
-
| `taglabel` | `value` | Custom tag-mode label rendering. |
|
|
75
|
-
| `option` | `{ option, isSelected }` | Custom option rendering. |
|
|
76
|
-
| `noresults` | — | Empty state content. |
|
|
77
|
-
| `option-loading` | — | Loading message. |
|
|
78
|
-
| `loader-icon` | — | Custom loader icon. |
|
|
1
|
+
# AbMultiSelect — AI Reference
|
|
2
|
+
|
|
3
|
+
Searchable single/multi/tag select. Custom built-in replacement for `@vueform/multiselect` — no third-party theme CSS required.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```vue
|
|
8
|
+
<template>
|
|
9
|
+
<ab-multi-select v-model="country" name="country" label="Country" :options="countries" label-key="title" value-key="val" searchable />
|
|
10
|
+
|
|
11
|
+
<ab-multi-select v-model="skills" name="skills" label="Skills" mode="multiple" :options="skillOptions" :max="5" />
|
|
12
|
+
|
|
13
|
+
<ab-multi-select v-model="hashtags" name="hashtags" mode="tags" searchable />
|
|
14
|
+
|
|
15
|
+
<ab-multi-select v-model="user" name="user" is-ajax-search searchable :on-search="searchUsers" :loading="isSearching" />
|
|
16
|
+
</template>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Props
|
|
20
|
+
|
|
21
|
+
| Name | Type | Default | Description |
|
|
22
|
+
| --- | --- | --- | --- |
|
|
23
|
+
| `modelValue` | `any` | `null` | v-model value. |
|
|
24
|
+
| `label` | `String` | `""` | Field label. |
|
|
25
|
+
| `placeholder` | `String` | `""` | Placeholder text. |
|
|
26
|
+
| `type` | `String` | `"text"` | Input type. |
|
|
27
|
+
| `name` | `String` | **required** | VeeValidate field name. |
|
|
28
|
+
| `rules` | `String \| Object` | `""` | VeeValidate rules. |
|
|
29
|
+
| `containerClass` | `String` | `"mb-3"` | Wrapper class. |
|
|
30
|
+
| `hints` | `String` | `""` | Helper text. |
|
|
31
|
+
| `multiple` | `Boolean` | `false` | Deprecated — use `mode` instead. |
|
|
32
|
+
| `searchable` | `Boolean` | `false` | Enable option search/filter. |
|
|
33
|
+
| `mode` | `String` | `"single"` | `single`, `multiple`, or `tags`. |
|
|
34
|
+
| `size` | `String` | `"md"` | Adjusts component size (`xs`, `sm`, `md`, `lg`, `xl`, `xxl`). |
|
|
35
|
+
| `options` | `Array` | `[]` | Available options. |
|
|
36
|
+
| `labelKey` | `String` | `"title"` | Property to use for label. |
|
|
37
|
+
| `valueKey` | `String` | `"val"` | Property to use for value. |
|
|
38
|
+
| `max` | `Number` | `-1` | Max selections; `-1` = unlimited. |
|
|
39
|
+
| `object` | `Boolean` | `false` | Return full objects instead of values. |
|
|
40
|
+
| `prefix` | `String` | `""` | Prefix text. |
|
|
41
|
+
| `postfix` | `String` | `""` | Postfix text. |
|
|
42
|
+
| `isAjaxSearch` | `Boolean` | `false` | Enable async search via `onSearch`. |
|
|
43
|
+
| `onSearch` | `Function` | `null` | Async handler `(query) => Promise<options>`. |
|
|
44
|
+
| `hideSelected` | `Boolean` | `true` | Hide already-selected items from dropdown. |
|
|
45
|
+
| `loading` | `Boolean` | `false` | Show a loading spinner. |
|
|
46
|
+
| `disabled` | `Boolean` | `false` | Disable the field. |
|
|
47
|
+
| `appendToBody` | `Boolean` | `true` | Teleport the dropdown to `<body>`. |
|
|
48
|
+
| `isLeftIconBorder` | `Boolean` | `false` | Border on prefix icon. |
|
|
49
|
+
| `isRightIconBorder` | `Boolean` | `false` | Border on postfix icon. |
|
|
50
|
+
| `isHideLabel` | `Boolean` | `false` | Hide the label visually. |
|
|
51
|
+
| `iconPosition` | `String` | `"right"` | Position of the custom `#icon` slot (`"left"`, `"right"`). |
|
|
52
|
+
|
|
53
|
+
## Events
|
|
54
|
+
|
|
55
|
+
| Event | Payload | Description |
|
|
56
|
+
| --- | --- | --- |
|
|
57
|
+
| `update:modelValue` | `value` | v-model sync. |
|
|
58
|
+
| `clear` | — | Selection cleared. |
|
|
59
|
+
| `change` | `value` | Value changed. |
|
|
60
|
+
| `select` | `value` | An option was selected. |
|
|
61
|
+
| `open` | — | Dropdown opened. |
|
|
62
|
+
| `close` | — | Dropdown closed. |
|
|
63
|
+
| `search-change` | `query` | Search input changed. |
|
|
64
|
+
|
|
65
|
+
## Slots
|
|
66
|
+
|
|
67
|
+
| Name | Scope | Description |
|
|
68
|
+
| --- | --- | --- |
|
|
69
|
+
| `label` | — | Custom label. |
|
|
70
|
+
| `prefix` | — | Prefix slot. |
|
|
71
|
+
| `icon` | — | Custom icon slot. |
|
|
72
|
+
| `postfix` | — | Postfix slot. |
|
|
73
|
+
| `singlelabel` | `value` | Custom single-mode label rendering. |
|
|
74
|
+
| `taglabel` | `value` | Custom tag-mode label rendering. |
|
|
75
|
+
| `option` | `{ option, isSelected }` | Custom option rendering. |
|
|
76
|
+
| `noresults` | — | Empty state content. |
|
|
77
|
+
| `option-loading` | — | Loading message. |
|
|
78
|
+
| `loader-icon` | — | Custom loader icon. |
|