@appsbd/vue3-appsbd-ui 1.0.3 → 1.0.4
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 +1 -11
- package/.ai/ai_ref_AbBadge.md +2 -11
- package/.ai/ai_ref_AbButton.md +4 -23
- package/.ai/ai_ref_AbCard.md +6 -25
- package/.ai/ai_ref_AbCarousel.md +1 -12
- package/.ai/ai_ref_AbChart.md +16 -57
- package/.ai/ai_ref_AbColorPicker.md +1 -14
- package/.ai/ai_ref_AbConfirmPopover.md +1 -6
- package/.ai/ai_ref_AbCustomField.md +1 -9
- package/.ai/ai_ref_AbDarkModeToggler.md +1 -10
- package/.ai/ai_ref_AbDateTimePicker.md +4 -38
- package/.ai/ai_ref_AbEasyModal.md +2 -8
- package/.ai/ai_ref_AbField.md +1 -9
- package/.ai/ai_ref_AbFileUploader.md +3 -19
- package/.ai/ai_ref_AbFilterPanel.md +0 -4
- package/.ai/ai_ref_AbFormCheck.md +2 -19
- package/.ai/ai_ref_AbImageRadioInput.md +1 -9
- package/.ai/ai_ref_AbInputField.md +1 -9
- package/.ai/ai_ref_AbInputTag.md +2 -22
- package/.ai/ai_ref_AbKbd.md +0 -12
- package/.ai/ai_ref_AbKbdGroup.md +1 -13
- package/.ai/ai_ref_AbModal.md +98 -103
- package/.ai/ai_ref_AbMultiSelect.md +3 -37
- package/.ai/ai_ref_AbNumberField.md +5 -30
- package/.ai/ai_ref_AbPinInput.md +1 -13
- package/.ai/ai_ref_AbPopover.md +2 -12
- package/.ai/ai_ref_AbPricingCard.md +0 -8
- package/.ai/ai_ref_AbPricingContainer.md +0 -8
- package/.ai/ai_ref_AbPricingTable.md +20 -36
- package/.ai/ai_ref_AbProgressbar.md +1 -11
- package/.ai/ai_ref_AbScrollbar.md +2 -12
- package/.ai/ai_ref_AbSettingsForm.md +1 -9
- package/.ai/ai_ref_AbSideMenuItem.md +1 -12
- package/.ai/ai_ref_AbSidebar.md +2 -10
- package/.ai/ai_ref_AbSkeleton.md +0 -18
- package/.ai/ai_ref_AbSlider.md +1 -20
- package/.ai/ai_ref_AbTab.md +0 -8
- package/.ai/ai_ref_AbTable.md +0 -10
- package/.ai/ai_ref_AbTabs.md +1 -11
- package/.ai/ai_ref_AbToggle.md +4 -23
- package/.ai/ai_ref_AbTooltip.md +1 -15
- package/.ai/ai_ref_AbWizard.md +7 -20
- package/.ai/ai_ref_AbWizardStep.md +1 -13
- package/.ai/ai_ref_abEventBus.md +66 -94
- package/.ai/ai_ref_abRequestParam.md +40 -55
- package/.ai/ai_ref_abTranslate.md +30 -15
- package/.ai/ai_ref_abVeeRules.md +33 -42
- package/.ai/ai_ref_global_config.md +7 -17
- package/.ai/ai_ref_useAlert.md +45 -63
- package/.ai/ai_ref_useFileValidator.md +31 -46
- package/.ai/ai_ref_useResponsive.md +41 -55
- package/.ai/ai_ref_useTheme.md +28 -39
- package/.ai/ai_ref_useToast.md +30 -42
- package/AI_REF.md +114 -0
- package/AI_REFERENCE.md +82 -1153
- package/dist/skins/black.css +1 -1
- package/dist/skins/cyan.css +1 -1
- package/dist/skins/default.css +1 -1
- package/dist/skins/gray.css +1 -1
- package/dist/skins/green.css +1 -1
- package/dist/skins/orange.css +1 -1
- package/dist/skins/pink.css +1 -1
- package/dist/skins/purple.css +1 -1
- package/dist/skins/red.css +1 -1
- package/dist/skins/themes/_blue.scss +35 -35
- package/dist/skins/themes/_common_variable.scss +101 -6
- package/dist/skins/themes/_cyan.scss +1 -1
- package/dist/skins/themes/_gray.scss +2 -1
- package/dist/skins/themes/_green.scss +1 -1
- package/dist/skins/themes/_grid.scss +4 -1
- package/dist/skins/themes/_orange.scss +1 -1
- package/dist/skins/themes/_pink.scss +1 -1
- package/dist/skins/themes/_purple.scss +1 -1
- package/dist/skins/themes/_red.scss +1 -1
- package/dist/skins/themes/_violet.scss +1 -1
- package/dist/skins/violet.css +1 -1
- package/dist/style.css +1 -1
- package/dist/vue3-appsbd-ui.cjs.js +93 -61
- package/dist/vue3-appsbd-ui.es.js +26869 -17342
- package/package.json +7 -1
- package/readme.md +59 -1
- package/scripts/postinstall.js +55 -0
- package/scripts/setup.js +16 -0
- package/scripts/skill-groups.js +38 -0
- package/skills/commands/generate-module.md +76 -0
- package/skills/commands/settings-form.md +175 -0
- package/skills/commands/use-appsbd-ui.md +40 -0
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
# AbInputField — AI Reference
|
|
2
2
|
|
|
3
|
-
Core text input with
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
Globally registered by the plugin. Peer dependencies: `vee-validate`, `@vee-validate/rules`.
|
|
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.
|
|
8
4
|
|
|
9
5
|
## Usage
|
|
10
6
|
|
|
@@ -68,7 +64,3 @@ const form = reactive({ email: '' });
|
|
|
68
64
|
| `icon` | Custom icon inside the input field. |
|
|
69
65
|
| `postfix` | Postfix icon / text. |
|
|
70
66
|
| `hints` | Helper text (overrides `hints` prop). |
|
|
71
|
-
|
|
72
|
-
## v-model
|
|
73
|
-
|
|
74
|
-
Yes — `modelValue` + `update:modelValue`.
|
package/.ai/ai_ref_AbInputTag.md
CHANGED
|
@@ -2,29 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Multi-tag input — lets users enter and manage a list of tags. Optionally supports an `options` array for autocomplete-style selection.
|
|
4
4
|
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
Globally registered by the plugin.
|
|
8
|
-
|
|
9
5
|
## Usage
|
|
10
6
|
|
|
11
7
|
```vue
|
|
12
8
|
<template>
|
|
13
|
-
<ab-input-tag
|
|
14
|
-
v-model="tags"
|
|
15
|
-
name="tags"
|
|
16
|
-
label="Tags"
|
|
17
|
-
placeholder="Type and press Enter"
|
|
18
|
-
:max="10"
|
|
19
|
-
hints="Up to 10 tags"
|
|
20
|
-
/>
|
|
9
|
+
<ab-input-tag v-model="tags" name="tags" label="Tags" placeholder="Type and press Enter" :max="10" hints="Up to 10 tags" />
|
|
21
10
|
|
|
22
|
-
|
|
23
|
-
<ab-input-tag
|
|
24
|
-
v-model="skills"
|
|
25
|
-
name="skills"
|
|
26
|
-
:options="['Vue', 'React', 'Angular', 'Svelte']"
|
|
27
|
-
/>
|
|
11
|
+
<ab-input-tag v-model="skills" name="skills" :options="['Vue', 'React', 'Angular', 'Svelte']" />
|
|
28
12
|
</template>
|
|
29
13
|
|
|
30
14
|
<script setup>
|
|
@@ -70,7 +54,3 @@ const skills = ref([]);
|
|
|
70
54
|
| `icon` | Custom icon inside the input. |
|
|
71
55
|
| `postfix` | Postfix icon/text. |
|
|
72
56
|
| `hints` | Custom hints. |
|
|
73
|
-
|
|
74
|
-
## v-model
|
|
75
|
-
|
|
76
|
-
Yes.
|
package/.ai/ai_ref_AbKbd.md
CHANGED
|
@@ -2,10 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Styled `<kbd>`-like keyboard key chip. Compose multiple into a chord using `AbKbdGroup`.
|
|
4
4
|
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
Globally registered by the plugin.
|
|
8
|
-
|
|
9
5
|
## Usage
|
|
10
6
|
|
|
11
7
|
```vue
|
|
@@ -20,14 +16,6 @@ Globally registered by the plugin.
|
|
|
20
16
|
</template>
|
|
21
17
|
```
|
|
22
18
|
|
|
23
|
-
## Props
|
|
24
|
-
|
|
25
|
-
No declared props.
|
|
26
|
-
|
|
27
|
-
## Events
|
|
28
|
-
|
|
29
|
-
None.
|
|
30
|
-
|
|
31
19
|
## Slots
|
|
32
20
|
|
|
33
21
|
| Name | Description |
|
package/.ai/ai_ref_AbKbdGroup.md
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
# AbKbdGroup — AI Reference
|
|
2
2
|
|
|
3
|
-
Visual grouping container for multiple `AbKbd` chips —
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
Globally registered by the plugin.
|
|
3
|
+
Visual grouping container for multiple `AbKbd` chips — renders keyboard chords / shortcuts.
|
|
8
4
|
|
|
9
5
|
## Usage
|
|
10
6
|
|
|
@@ -18,14 +14,6 @@ Globally registered by the plugin.
|
|
|
18
14
|
</template>
|
|
19
15
|
```
|
|
20
16
|
|
|
21
|
-
## Props
|
|
22
|
-
|
|
23
|
-
No declared props.
|
|
24
|
-
|
|
25
|
-
## Events
|
|
26
|
-
|
|
27
|
-
None.
|
|
28
|
-
|
|
29
17
|
## Slots
|
|
30
18
|
|
|
31
19
|
| Name | Description |
|
package/.ai/ai_ref_AbModal.md
CHANGED
|
@@ -1,103 +1,98 @@
|
|
|
1
|
-
# AbModal — AI Reference
|
|
2
|
-
|
|
3
|
-
Full-featured dialog with a built-in VeeValidate `<Form>`, loader overlay, and "message-only" mode.
|
|
4
|
-
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
<template #
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
|
52
|
-
|
|
|
53
|
-
| `
|
|
54
|
-
| `
|
|
55
|
-
| `
|
|
56
|
-
| `
|
|
57
|
-
| `
|
|
58
|
-
| `
|
|
59
|
-
| `
|
|
60
|
-
| `
|
|
61
|
-
| `
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
|
74
|
-
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
|
79
|
-
|
|
|
80
|
-
| `
|
|
81
|
-
| `
|
|
82
|
-
| `
|
|
83
|
-
| `
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
|
88
|
-
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
|
93
|
-
|
|
|
94
|
-
| `
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
| `setMessageOnly(status)` | Toggle message-only mode programmatically. |
|
|
100
|
-
|
|
101
|
-
## Notes
|
|
102
|
-
|
|
103
|
-
- Use `AbEasyModal` when you only need a simple trigger-and-close dialog without a form.
|
|
1
|
+
# AbModal — AI Reference
|
|
2
|
+
|
|
3
|
+
Full-featured dialog with a built-in VeeValidate `<Form>`, loader overlay, and "message-only" mode. Globally registered by the plugin.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```vue
|
|
8
|
+
<template>
|
|
9
|
+
<ab-button class="btn-primary" @click="isOpen = true">Open</ab-button>
|
|
10
|
+
|
|
11
|
+
<ab-modal
|
|
12
|
+
ref="modal"
|
|
13
|
+
v-model:is-modal-visible="isOpen"
|
|
14
|
+
modal-size="modal-lg"
|
|
15
|
+
@on-submit="handleSubmit"
|
|
16
|
+
@close="isOpen = false"
|
|
17
|
+
>
|
|
18
|
+
<template #headerTitle>Edit profile</template>
|
|
19
|
+
|
|
20
|
+
<ab-input-field name="email" label="Email" rules="required|email" v-model="form.email" />
|
|
21
|
+
|
|
22
|
+
<template #footer="{ close }">
|
|
23
|
+
<ab-button class="btn-outline-secondary" @click="close">Cancel</ab-button>
|
|
24
|
+
<ab-button class="btn-primary" type="submit">Save</ab-button>
|
|
25
|
+
</template>
|
|
26
|
+
</ab-modal>
|
|
27
|
+
</template>
|
|
28
|
+
|
|
29
|
+
<script setup>
|
|
30
|
+
import { ref } from "vue";
|
|
31
|
+
const isOpen = ref(false);
|
|
32
|
+
const modal = ref(null);
|
|
33
|
+
const form = ref({ email: "" });
|
|
34
|
+
|
|
35
|
+
async function handleSubmit(values, { resetForm }) {
|
|
36
|
+
modal.value.showLoader(true, "Saving…");
|
|
37
|
+
await api.save(values);
|
|
38
|
+
modal.value.showLoader(false);
|
|
39
|
+
modal.value.close();
|
|
40
|
+
}
|
|
41
|
+
</script>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Props
|
|
45
|
+
|
|
46
|
+
| Name | Type | Default | Description |
|
|
47
|
+
| --- | --- | --- | --- |
|
|
48
|
+
| `isModalVisible` | `Boolean` | — | Visibility state (`v-model:is-modal-visible`). |
|
|
49
|
+
| `modalSize` | `String` | `""` | Bootstrap size class (`modal-sm`, `modal-lg`, `modal-xl`). |
|
|
50
|
+
| `modalMsg` | `String` | `""` | Default message for message-only mode. |
|
|
51
|
+
| `hideHeader` | `Boolean` | `false` | Hide the header section. |
|
|
52
|
+
| `hideBody` | `Boolean` | `false` | Hide the body section. |
|
|
53
|
+
| `hideFooter` | `Boolean` | `false` | Hide the footer section. |
|
|
54
|
+
| `hideCrossBtn` | `Boolean` | `false` | Hide the top-right close button. |
|
|
55
|
+
| `hideForm` | `Boolean` | `false` | Render root as plain `<div>` instead of VeeValidate `<Form>`. |
|
|
56
|
+
| `bodyClass` | `String` | `""` | Extra class on the body section. |
|
|
57
|
+
| `isModalCenter` | `Boolean` | `true` | Vertically center the modal. |
|
|
58
|
+
| `isBorder` | `Boolean` | `false` | Border around modal content. |
|
|
59
|
+
| `iconContainerClass` | `String` | `""` | Extra class on the header icon container. |
|
|
60
|
+
| `headerClass` | `String` | `""` | Extra class on the header. |
|
|
61
|
+
| `headerrClass` | `String` | `""` | Legacy alias for `headerClass`. |
|
|
62
|
+
|
|
63
|
+
## Events
|
|
64
|
+
|
|
65
|
+
| Event | Payload | Description |
|
|
66
|
+
| --- | --- | --- |
|
|
67
|
+
| `onSubmit` | `(event, { resetForm })` | Fired when the internal VeeValidate form is submitted. |
|
|
68
|
+
| `loading-status` | `Boolean` | Emitted when loader state toggles. |
|
|
69
|
+
| `close` | — | Modal was closed (✕, Escape, or `close()`). |
|
|
70
|
+
|
|
71
|
+
## Slots
|
|
72
|
+
|
|
73
|
+
| Name | Scope | Description |
|
|
74
|
+
| --- | --- | --- |
|
|
75
|
+
| `default` | VeeValidate `Form` slot-props | Form body when `hideForm` is `false`. |
|
|
76
|
+
| `header` | — | Overrides the entire header. |
|
|
77
|
+
| `headerIcon` | — | Icon at the start of the header. |
|
|
78
|
+
| `headerTitleContainer` | — | Overrides the title/subtitle wrapper. |
|
|
79
|
+
| `headerTitle` | — | Modal title text. |
|
|
80
|
+
| `headerSubTitle` | — | Modal subtitle text. |
|
|
81
|
+
| `body` | — | Overrides the body section. |
|
|
82
|
+
| `loader` | — | Overrides the default loader element. |
|
|
83
|
+
| `footer` | `{ close }` | Footer content — receives a `close()` function. |
|
|
84
|
+
|
|
85
|
+
## Exposed Methods
|
|
86
|
+
|
|
87
|
+
| Method | Description |
|
|
88
|
+
| --- | --- |
|
|
89
|
+
| `showLoader(status, msg?)` | Show/hide the loader with optional message. |
|
|
90
|
+
| `close()` | Close the modal. |
|
|
91
|
+
| `clearForm()` | Reset the VeeValidate form and close. |
|
|
92
|
+
| `returnClear()` | Reset the form without closing. |
|
|
93
|
+
| `showMsgOnly(msg, isHideFooter?)` | Switch to message-only mode. |
|
|
94
|
+
| `setMessageOnly(status)` | Toggle message-only mode programmatically. |
|
|
95
|
+
|
|
96
|
+
## Notes
|
|
97
|
+
|
|
98
|
+
Use `AbEasyModal` when you only need a simple trigger-and-close dialog without a form.
|
|
@@ -2,47 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
Searchable single/multi/tag select. Custom built-in replacement for `@vueform/multiselect` — no third-party theme CSS required.
|
|
4
4
|
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
Globally registered by the plugin.
|
|
8
|
-
|
|
9
5
|
## Usage
|
|
10
6
|
|
|
11
7
|
```vue
|
|
12
8
|
<template>
|
|
13
|
-
|
|
14
|
-
<ab-multi-select
|
|
15
|
-
v-model="country"
|
|
16
|
-
name="country"
|
|
17
|
-
label="Country"
|
|
18
|
-
:options="countries"
|
|
19
|
-
label-key="title"
|
|
20
|
-
value-key="val"
|
|
21
|
-
searchable
|
|
22
|
-
/>
|
|
9
|
+
<ab-multi-select v-model="country" name="country" label="Country" :options="countries" label-key="title" value-key="val" searchable />
|
|
23
10
|
|
|
24
|
-
|
|
25
|
-
<ab-multi-select
|
|
26
|
-
v-model="skills"
|
|
27
|
-
name="skills"
|
|
28
|
-
label="Skills"
|
|
29
|
-
mode="multiple"
|
|
30
|
-
:options="skillOptions"
|
|
31
|
-
:max="5"
|
|
32
|
-
/>
|
|
11
|
+
<ab-multi-select v-model="skills" name="skills" label="Skills" mode="multiple" :options="skillOptions" :max="5" />
|
|
33
12
|
|
|
34
|
-
<!-- Tags mode -->
|
|
35
13
|
<ab-multi-select v-model="hashtags" name="hashtags" mode="tags" searchable />
|
|
36
14
|
|
|
37
|
-
|
|
38
|
-
<ab-multi-select
|
|
39
|
-
v-model="user"
|
|
40
|
-
name="user"
|
|
41
|
-
is-ajax-search
|
|
42
|
-
searchable
|
|
43
|
-
:on-search="searchUsers"
|
|
44
|
-
:loading="isSearching"
|
|
45
|
-
/>
|
|
15
|
+
<ab-multi-select v-model="user" name="user" is-ajax-search searchable :on-search="searchUsers" :loading="isSearching" />
|
|
46
16
|
</template>
|
|
47
17
|
```
|
|
48
18
|
|
|
@@ -106,7 +76,3 @@ Globally registered by the plugin.
|
|
|
106
76
|
| `noresults` | — | Empty state content. |
|
|
107
77
|
| `option-loading` | — | Loading message. |
|
|
108
78
|
| `loader-icon` | — | Custom loader icon. |
|
|
109
|
-
|
|
110
|
-
## v-model
|
|
111
|
-
|
|
112
|
-
Yes.
|
|
@@ -1,24 +1,14 @@
|
|
|
1
1
|
# AbNumberField — AI Reference
|
|
2
2
|
|
|
3
|
-
Numeric input with
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
Globally registered by the plugin. Peer dependencies: `vee-validate`, `@vee-validate/rules`, `lucide-vue-next` (for the plus/minus icons).
|
|
3
|
+
Numeric input with minus/plus buttons, min/max clamping, custom step, and VeeValidate integration. Renders as a seamless pill by default; pass `is-border` to show internal dividers between buttons and input.
|
|
8
4
|
|
|
9
5
|
## Usage
|
|
10
6
|
|
|
11
7
|
```vue
|
|
12
8
|
<template>
|
|
13
|
-
<ab-number-field
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
label="Quantity"
|
|
17
|
-
:min="1"
|
|
18
|
-
:max="10"
|
|
19
|
-
:step="1"
|
|
20
|
-
hints="Clamped between 1 and 10"
|
|
21
|
-
/>
|
|
9
|
+
<ab-number-field v-model="qty" name="quantity" label="Quantity" :min="1" :max="10" :step="1" hints="Clamped between 1 and 10" />
|
|
10
|
+
|
|
11
|
+
<ab-number-field v-model="qty" name="quantity" label="Quantity" is-border />
|
|
22
12
|
</template>
|
|
23
13
|
|
|
24
14
|
<script setup>
|
|
@@ -27,17 +17,6 @@ const qty = ref(1);
|
|
|
27
17
|
</script>
|
|
28
18
|
```
|
|
29
19
|
|
|
30
|
-
Bordered variant (inner borders around buttons):
|
|
31
|
-
|
|
32
|
-
```vue
|
|
33
|
-
<ab-number-field
|
|
34
|
-
v-model="qty"
|
|
35
|
-
name="quantity"
|
|
36
|
-
label="Quantity"
|
|
37
|
-
is-border
|
|
38
|
-
/>
|
|
39
|
-
```
|
|
40
|
-
|
|
41
20
|
## Props
|
|
42
21
|
|
|
43
22
|
| Name | Type | Default | Description |
|
|
@@ -64,7 +43,7 @@ Bordered variant (inner borders around buttons):
|
|
|
64
43
|
|
|
65
44
|
| Event | Payload | Description |
|
|
66
45
|
| --- | --- | --- |
|
|
67
|
-
| `update:modelValue` | `number \| null` | v-model sync. |
|
|
46
|
+
| `update:modelValue` | `number \| null` | v-model sync. Value is `number` after clamping, or `null` when cleared. |
|
|
68
47
|
| `input` | `number` | Fired on input after clamping. |
|
|
69
48
|
| `keyup` | `KeyboardEvent` | Forwarded native event. |
|
|
70
49
|
| `keydown` | `KeyboardEvent` | Forwarded native event. |
|
|
@@ -78,7 +57,3 @@ Bordered variant (inner borders around buttons):
|
|
|
78
57
|
| `prefix` | Prefix icon / text (rendered before the minus button). |
|
|
79
58
|
| `postfix` | Postfix icon / text (rendered after the plus button). |
|
|
80
59
|
| `hints` | Helper text (overrides `hints` prop). |
|
|
81
|
-
|
|
82
|
-
## v-model
|
|
83
|
-
|
|
84
|
-
Yes — `modelValue` + `update:modelValue`. Value is `number` after clamping, or `null` when the user clears the input.
|
package/.ai/ai_ref_AbPinInput.md
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
# AbPinInput — AI Reference
|
|
2
2
|
|
|
3
|
-
Segmented PIN
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
Globally registered by the plugin.
|
|
3
|
+
Segmented PIN/OTP entry input. Renders `length` single-character boxes, optionally split into groups with a separator.
|
|
8
4
|
|
|
9
5
|
## Usage
|
|
10
6
|
|
|
@@ -35,11 +31,3 @@ const pin = ref('');
|
|
|
35
31
|
| Event | Payload | Description |
|
|
36
32
|
| --- | --- | --- |
|
|
37
33
|
| `update:modelValue` | `pin` | v-model sync on every input change. |
|
|
38
|
-
|
|
39
|
-
## Slots
|
|
40
|
-
|
|
41
|
-
None.
|
|
42
|
-
|
|
43
|
-
## v-model
|
|
44
|
-
|
|
45
|
-
Yes.
|
package/.ai/ai_ref_AbPopover.md
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
# AbPopover — AI Reference
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
Globally registered by the plugin.
|
|
3
|
+
Interactive popover with click, hover, focus, touch, or manual triggers. Content slot receives imperative `close`, `hide`, `show`, and `toggle` helpers.
|
|
8
4
|
|
|
9
5
|
## Usage
|
|
10
6
|
|
|
@@ -15,13 +11,11 @@ Globally registered by the plugin.
|
|
|
15
11
|
<template #content="{ close }">
|
|
16
12
|
<div class="popover-menu">
|
|
17
13
|
<button @click="edit(); close()">Edit</button>
|
|
18
|
-
<button @click="
|
|
19
|
-
<button class="text-danger" @click="remove(); close()">Delete</button>
|
|
14
|
+
<button @click="remove(); close()">Delete</button>
|
|
20
15
|
</div>
|
|
21
16
|
</template>
|
|
22
17
|
</ab-popover>
|
|
23
18
|
|
|
24
|
-
<!-- Hover + focus triggers -->
|
|
25
19
|
<ab-popover :trigger="['hover', 'focus']" placement="top">
|
|
26
20
|
<span>Hover me</span>
|
|
27
21
|
<template #content>Rich popover content</template>
|
|
@@ -58,7 +52,3 @@ Globally registered by the plugin.
|
|
|
58
52
|
| --- | --- | --- |
|
|
59
53
|
| `default` | — | Trigger element. |
|
|
60
54
|
| `content` | `{ close, hide, show, toggle }` | Popover content — receives imperative controls. |
|
|
61
|
-
|
|
62
|
-
## v-model
|
|
63
|
-
|
|
64
|
-
Yes — binds visibility.
|
|
@@ -2,10 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Single pricing tier card. Use multiple inside `AbPricingContainer` to build a pricing table.
|
|
4
4
|
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
Globally registered by the plugin.
|
|
8
|
-
|
|
9
5
|
## Usage
|
|
10
6
|
|
|
11
7
|
```vue
|
|
@@ -47,10 +43,6 @@ Globally registered by the plugin.
|
|
|
47
43
|
| `variant` | `String` | `"default"` | `default`, `minimal`, `highlighted`, `badge-price`. |
|
|
48
44
|
| `features` | `Array` | `[]` | Each `{ text, disabled? }` or a string. |
|
|
49
45
|
|
|
50
|
-
## Events
|
|
51
|
-
|
|
52
|
-
None.
|
|
53
|
-
|
|
54
46
|
## Slots
|
|
55
47
|
|
|
56
48
|
| Name | Scope | Description |
|
|
@@ -2,10 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Layout wrapper for pricing tables. Arranges `AbPricingCard` children in a flex row or responsive grid with optional breakpoint column counts.
|
|
4
4
|
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
Globally registered by the plugin.
|
|
8
|
-
|
|
9
5
|
## Usage
|
|
10
6
|
|
|
11
7
|
```vue
|
|
@@ -37,10 +33,6 @@ Globally registered by the plugin.
|
|
|
37
33
|
| `lgCols` | `Number \| String` | `""` | Columns at lg breakpoint. |
|
|
38
34
|
| `itemWidth` | `String` | `""` | Per-card width override (exposed as CSS custom property). |
|
|
39
35
|
|
|
40
|
-
## Events
|
|
41
|
-
|
|
42
|
-
None.
|
|
43
|
-
|
|
44
36
|
## Slots
|
|
45
37
|
|
|
46
38
|
| Name | Description |
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
# AbPricingTable — AI Reference
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
No extra dependencies are required. The component is globally registered by the library plugin.
|
|
3
|
+
Responsive pricing comparison table. Displays a feature list on the left and multiple package tiers on the right, consuming structured JSON data.
|
|
8
4
|
|
|
9
5
|
## Usage
|
|
10
6
|
|
|
@@ -17,29 +13,21 @@ const features = [
|
|
|
17
13
|
{ key: "analytics", title: "Own analytics platform" }
|
|
18
14
|
]
|
|
19
15
|
|
|
20
|
-
const packages = computed(() => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
isActive: false
|
|
32
|
-
}
|
|
33
|
-
]
|
|
34
|
-
})
|
|
16
|
+
const packages = computed(() => [{
|
|
17
|
+
id: "p1",
|
|
18
|
+
name: "Intro",
|
|
19
|
+
price: 19,
|
|
20
|
+
regularPrice: 24,
|
|
21
|
+
badge: "Save 20%",
|
|
22
|
+
features: { links: "Y", analytics: "Y" },
|
|
23
|
+
showButton: true,
|
|
24
|
+
buttonText: "Choose Plan",
|
|
25
|
+
isActive: false
|
|
26
|
+
}])
|
|
35
27
|
</script>
|
|
36
28
|
|
|
37
29
|
<template>
|
|
38
|
-
<ab-pricing-table
|
|
39
|
-
:features="features"
|
|
40
|
-
:packages="packages"
|
|
41
|
-
@select-package="(pkg) => console.log('Selected:', pkg)"
|
|
42
|
-
/>
|
|
30
|
+
<ab-pricing-table :features="features" :packages="packages" @select-package="(pkg) => console.log('Selected:', pkg)" />
|
|
43
31
|
</template>
|
|
44
32
|
```
|
|
45
33
|
|
|
@@ -47,26 +35,22 @@ const packages = computed(() => {
|
|
|
47
35
|
|
|
48
36
|
| Name | Type | Default | Description |
|
|
49
37
|
| ---- | ---- | ------- | ----------- |
|
|
50
|
-
| `features` | Array |
|
|
51
|
-
| `packages` | Array |
|
|
38
|
+
| `features` | Array | **required** | Array of `{ key, title }` feature definitions. |
|
|
39
|
+
| `packages` | Array | **required** | Array of package configs with price, regularPrice, badge, features (Y/N map), and button options. |
|
|
52
40
|
|
|
53
41
|
## Events
|
|
54
42
|
|
|
55
43
|
| Event | Payload | Description |
|
|
56
44
|
| ----- | ------- | ----------- |
|
|
57
|
-
| `select-package` | `
|
|
45
|
+
| `select-package` | `packageObject` | Emitted when a package's action button is clicked. |
|
|
58
46
|
|
|
59
47
|
## Slots
|
|
60
48
|
|
|
61
49
|
| Slot Name | Props | Description |
|
|
62
50
|
| --------- | ----- | ----------- |
|
|
63
51
|
| `features-header` | None | Replaces the header in the left-hand features column. |
|
|
64
|
-
| `feature-label` | `{ feature }` | Customizes how the feature name is displayed
|
|
52
|
+
| `feature-label` | `{ feature }` | Customizes how the feature name is displayed. |
|
|
65
53
|
| `package-badge` | `{ pkg }` | Customizes the badge at the top of the package card. |
|
|
66
|
-
| `package-header` | `{ pkg }` | Customizes the top section of the package card
|
|
67
|
-
| `package-feature` | `{ pkg, feature }` | Replaces the default check/cross icon rendering for a feature row
|
|
68
|
-
| `package-footer` | `{ pkg }` | Customizes the footer area (
|
|
69
|
-
|
|
70
|
-
## v-model
|
|
71
|
-
|
|
72
|
-
No — use the `@select-package` event to handle user selection.
|
|
54
|
+
| `package-header` | `{ pkg }` | Customizes the top section of the package card. |
|
|
55
|
+
| `package-feature` | `{ pkg, feature }` | Replaces the default check/cross icon rendering for a feature row. |
|
|
56
|
+
| `package-footer` | `{ pkg }` | Customizes the footer area (action button). |
|
|
@@ -2,17 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Animated Bootstrap-style progress bar with multiple color and size variants. Accepts a custom label via the default slot.
|
|
4
4
|
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
Globally registered by the plugin.
|
|
8
|
-
|
|
9
5
|
## Usage
|
|
10
6
|
|
|
11
7
|
```vue
|
|
12
8
|
<template>
|
|
13
|
-
<ab-progressbar :progress-value="75" color="success" size="lg">
|
|
14
|
-
75%
|
|
15
|
-
</ab-progressbar>
|
|
9
|
+
<ab-progressbar :progress-value="75" color="success" size="lg">75%</ab-progressbar>
|
|
16
10
|
</template>
|
|
17
11
|
```
|
|
18
12
|
|
|
@@ -26,10 +20,6 @@ Globally registered by the plugin.
|
|
|
26
20
|
| `color` | `String` | `"primary"` | One of: `primary`, `secondary`, `success`, `danger`, `info`, `warning`. |
|
|
27
21
|
| `size` | `String` | `"md"` | One of: `xs`, `sm`, `md`, `lg`, `xl`, `xxl`. |
|
|
28
22
|
|
|
29
|
-
## Events
|
|
30
|
-
|
|
31
|
-
None.
|
|
32
|
-
|
|
33
23
|
## Slots
|
|
34
24
|
|
|
35
25
|
| `default` | Custom label rendered alongside the bar. The CSS custom property `--progress-value` is exposed for advanced positioning. |
|