@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.
Files changed (87) hide show
  1. package/.ai/ai_ref_AbAvatar.md +1 -11
  2. package/.ai/ai_ref_AbBadge.md +2 -11
  3. package/.ai/ai_ref_AbButton.md +4 -23
  4. package/.ai/ai_ref_AbCard.md +6 -25
  5. package/.ai/ai_ref_AbCarousel.md +1 -12
  6. package/.ai/ai_ref_AbChart.md +16 -57
  7. package/.ai/ai_ref_AbColorPicker.md +1 -14
  8. package/.ai/ai_ref_AbConfirmPopover.md +1 -6
  9. package/.ai/ai_ref_AbCustomField.md +1 -9
  10. package/.ai/ai_ref_AbDarkModeToggler.md +1 -10
  11. package/.ai/ai_ref_AbDateTimePicker.md +4 -38
  12. package/.ai/ai_ref_AbEasyModal.md +2 -8
  13. package/.ai/ai_ref_AbField.md +1 -9
  14. package/.ai/ai_ref_AbFileUploader.md +3 -19
  15. package/.ai/ai_ref_AbFilterPanel.md +0 -4
  16. package/.ai/ai_ref_AbFormCheck.md +2 -19
  17. package/.ai/ai_ref_AbImageRadioInput.md +1 -9
  18. package/.ai/ai_ref_AbInputField.md +1 -9
  19. package/.ai/ai_ref_AbInputTag.md +2 -22
  20. package/.ai/ai_ref_AbKbd.md +0 -12
  21. package/.ai/ai_ref_AbKbdGroup.md +1 -13
  22. package/.ai/ai_ref_AbModal.md +98 -103
  23. package/.ai/ai_ref_AbMultiSelect.md +3 -37
  24. package/.ai/ai_ref_AbNumberField.md +5 -30
  25. package/.ai/ai_ref_AbPinInput.md +1 -13
  26. package/.ai/ai_ref_AbPopover.md +2 -12
  27. package/.ai/ai_ref_AbPricingCard.md +0 -8
  28. package/.ai/ai_ref_AbPricingContainer.md +0 -8
  29. package/.ai/ai_ref_AbPricingTable.md +20 -36
  30. package/.ai/ai_ref_AbProgressbar.md +1 -11
  31. package/.ai/ai_ref_AbScrollbar.md +2 -12
  32. package/.ai/ai_ref_AbSettingsForm.md +1 -9
  33. package/.ai/ai_ref_AbSideMenuItem.md +1 -12
  34. package/.ai/ai_ref_AbSidebar.md +2 -10
  35. package/.ai/ai_ref_AbSkeleton.md +0 -18
  36. package/.ai/ai_ref_AbSlider.md +1 -20
  37. package/.ai/ai_ref_AbTab.md +0 -8
  38. package/.ai/ai_ref_AbTable.md +0 -10
  39. package/.ai/ai_ref_AbTabs.md +1 -11
  40. package/.ai/ai_ref_AbToggle.md +4 -23
  41. package/.ai/ai_ref_AbTooltip.md +1 -15
  42. package/.ai/ai_ref_AbWizard.md +7 -20
  43. package/.ai/ai_ref_AbWizardStep.md +1 -13
  44. package/.ai/ai_ref_abEventBus.md +66 -94
  45. package/.ai/ai_ref_abRequestParam.md +40 -55
  46. package/.ai/ai_ref_abTranslate.md +30 -15
  47. package/.ai/ai_ref_abVeeRules.md +33 -42
  48. package/.ai/ai_ref_global_config.md +7 -17
  49. package/.ai/ai_ref_useAlert.md +45 -63
  50. package/.ai/ai_ref_useFileValidator.md +31 -46
  51. package/.ai/ai_ref_useResponsive.md +41 -55
  52. package/.ai/ai_ref_useTheme.md +28 -39
  53. package/.ai/ai_ref_useToast.md +30 -42
  54. package/AI_REF.md +114 -0
  55. package/AI_REFERENCE.md +82 -1153
  56. package/dist/skins/black.css +1 -1
  57. package/dist/skins/cyan.css +1 -1
  58. package/dist/skins/default.css +1 -1
  59. package/dist/skins/gray.css +1 -1
  60. package/dist/skins/green.css +1 -1
  61. package/dist/skins/orange.css +1 -1
  62. package/dist/skins/pink.css +1 -1
  63. package/dist/skins/purple.css +1 -1
  64. package/dist/skins/red.css +1 -1
  65. package/dist/skins/themes/_blue.scss +35 -35
  66. package/dist/skins/themes/_common_variable.scss +101 -6
  67. package/dist/skins/themes/_cyan.scss +1 -1
  68. package/dist/skins/themes/_gray.scss +2 -1
  69. package/dist/skins/themes/_green.scss +1 -1
  70. package/dist/skins/themes/_grid.scss +4 -1
  71. package/dist/skins/themes/_orange.scss +1 -1
  72. package/dist/skins/themes/_pink.scss +1 -1
  73. package/dist/skins/themes/_purple.scss +1 -1
  74. package/dist/skins/themes/_red.scss +1 -1
  75. package/dist/skins/themes/_violet.scss +1 -1
  76. package/dist/skins/violet.css +1 -1
  77. package/dist/style.css +1 -1
  78. package/dist/vue3-appsbd-ui.cjs.js +93 -61
  79. package/dist/vue3-appsbd-ui.es.js +26869 -17342
  80. package/package.json +7 -1
  81. package/readme.md +59 -1
  82. package/scripts/postinstall.js +55 -0
  83. package/scripts/setup.js +16 -0
  84. package/scripts/skill-groups.js +38 -0
  85. package/skills/commands/generate-module.md +76 -0
  86. package/skills/commands/settings-form.md +175 -0
  87. 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 built-in VeeValidate integration, localized feedback, and prefix/postfix/hint slots. Use this for single-line text inputs; use `AbField` if you want a polymorphic field that can render selects, toggles, etc.
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`.
@@ -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
- <!-- With preset options -->
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.
@@ -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 |
@@ -1,10 +1,6 @@
1
1
  # AbKbdGroup — AI Reference
2
2
 
3
- Visual grouping container for multiple `AbKbd` chips — typically used to render keyboard chords / shortcuts.
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 |
@@ -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. Exposes imperative methods for showing loaders, clearing forms, and closing.
4
-
5
- ## Installation
6
-
7
- Globally registered by the plugin.
8
-
9
- ## Usage
10
-
11
- ```vue
12
- <template>
13
- <ab-button class="btn-primary" @click="modalRef.open = true">Open</ab-button>
14
-
15
- <ab-modal
16
- ref="modal"
17
- v-model:is-modal-visible="isOpen"
18
- modal-size="modal-lg"
19
- @on-submit="handleSubmit"
20
- @close="isOpen = false"
21
- >
22
- <template #headerTitle>Edit profile</template>
23
-
24
- <!-- default slot receives VeeValidate Form context -->
25
- <ab-input-field name="email" label="Email" rules="required|email" v-model="form.email" />
26
-
27
- <template #footer="{ close }">
28
- <ab-button class="btn-outline-secondary" @click="close">Cancel</ab-button>
29
- <ab-button class="btn-primary" type="submit">Save</ab-button>
30
- </template>
31
- </ab-modal>
32
- </template>
33
-
34
- <script setup>
35
- import { ref } from 'vue';
36
- const isOpen = ref(false);
37
- const modal = ref(null);
38
- const form = ref({ email: '' });
39
-
40
- async function handleSubmit(values, { resetForm }) {
41
- modal.value.showLoader(true, 'Saving…');
42
- await api.save(values);
43
- modal.value.showLoader(false);
44
- modal.value.close();
45
- }
46
- </script>
47
- ```
48
-
49
- ## Props
50
-
51
- | Name | Type | Default | Description |
52
- | --- | --- | --- | --- |
53
- | `isModalVisible` | `Boolean` | | Visibility state (supports `v-model:is-modal-visible`). |
54
- | `modalSize` | `String` | `""` | Bootstrap size class (`modal-sm`, `modal-lg`, `modal-xl`). |
55
- | `modalMsg` | `String` | `""` | Default message for message-only mode. |
56
- | `hideHeader` | `Boolean` | `false` | Hide the header section entirely. |
57
- | `hideBody` | `Boolean` | `false` | Hide the body section entirely. |
58
- | `hideFooter` | `Boolean` | `false` | Hide the footer section entirely. |
59
- | `hideCrossBtn` | `Boolean` | `false` | Hide the top-right close button. |
60
- | `hideForm` | `Boolean` | `false` | Render the root as a plain `<div>` instead of a VeeValidate `<Form>`. |
61
- | `bodyClass` | `String` | `""` | Extra class on the body section. |
62
- | `isModalCenter` | `Boolean` | `true` | Vertically center the modal. |
63
- | `isBorder` | `Boolean` | `false` | Show a border around the modal content. |
64
- | `iconContainerClass` | `String` | `""` | Extra class on the header icon container. |
65
- | `headerClass` | `String` | `""` | Preferred extra class on the header. |
66
- | `headerrClass` | `String` | `""` | Legacy alias for `headerClass`. `headerClass` takes precedence when both are provided. |
67
-
68
- ## Events
69
-
70
- | Event | Payload | Description |
71
- | --- | --- | --- |
72
- | `onSubmit` | `(event, { resetForm })` | Fired when the internal VeeValidate form is submitted. |
73
- | `loading-status` | `Boolean` | Emitted whenever the loader state toggles. |
74
- | `close` | | Modal was closed (via ✕, Escape, or `close()`). |
75
-
76
- ## Slots
77
-
78
- | Name | Scope | Description |
79
- | --- | --- | --- |
80
- | `default` | VeeValidate `Form` slot-props | Form / body content when `hideForm` is `false`. |
81
- | `header` | — | Overrides the entire header. |
82
- | `headerIcon` | — | Icon shown at the start of the header. |
83
- | `headerTitleContainer` | | Overrides the title/subtitle wrapper. |
84
- | `headerTitle` | — | Modal title text. |
85
- | `headerSubTitle` | — | Modal subtitle text. |
86
- | `body` | — | Overrides the body section. |
87
- | `loader` | | Overrides the default loader element. |
88
- | `footer` | `{ close }` | Footer content — receives a `close()` function. |
89
-
90
- ## Exposed Methods (via template ref)
91
-
92
- | Method | Description |
93
- | --- | --- |
94
- | `showLoader(status, msg?)` | Show/hide the loader with an optional message. |
95
- | `close()` | Close the modal. |
96
- | `clearForm()` | Reset the VeeValidate form and close. |
97
- | `returnClear()` | Reset the form without closing. |
98
- | `showMsgOnly(msg, isHideFooter?)` | Switch to message-only mode. |
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
- <!-- Single select -->
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
- <!-- Multiple -->
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
- <!-- AJAX search -->
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 built-in minus/plus buttons, min/max clamping, custom step, and VeeValidate integration. Renders as a seamless pill by default; pass `is-border` to show the internal dividers between the buttons and the input.
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
- v-model="qty"
15
- name="quantity"
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.
@@ -1,10 +1,6 @@
1
1
  # AbPinInput — AI Reference
2
2
 
3
- Segmented PIN / OTP entry input. Renders `length` single-character boxes, optionally split into groups with a separator.
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.
@@ -1,10 +1,6 @@
1
1
  # AbPopover — AI Reference
2
2
 
3
- Dependency-free interactive popover with click, hover, focus, touch, or manual triggers. Content slot receives imperative `close`, `hide`, `show`, and `toggle` helpers.
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="duplicate(); close()">Duplicate</button>
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
- The `AbPricingTable` component renders a stylized, responsive pricing table. It displays a list of features on the left side and multiple package tiers on the right side. It is designed to consume structured JSON data for features and packages and handles the layout and responsive reflowing automatically.
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
- return [
22
- {
23
- id: "p1",
24
- name: "Intro",
25
- price: 19,
26
- regularPrice: 24,
27
- badge: "Save 20%",
28
- features: { links: "Y", analytics: "Y" },
29
- showButton: true,
30
- buttonText: "Choose Plan",
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 | `**required**` | Array of feature definitions. Example: `{ key: "chat", title: "Chat support" }`. |
51
- | `packages` | Array | `**required**` | Array of package configurations. Supports price, regularPrice, badge, features (Y/N map), and button options. |
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` | `(packageObject)` | Emitted when a package's action button is clicked. |
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 in the features list. |
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 (name and pricing info). |
67
- | `package-feature` | `{ pkg, feature }` | Replaces the default check/cross icon rendering for a feature row in a package. |
68
- | `package-footer` | `{ pkg }` | Customizes the footer area (usually contains the action button). |
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. |