@appsbd/vue3-appsbd-ui 1.0.18 → 1.0.20
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_AbAccordion.md +69 -0
- package/.ai/ai_ref_AbAccordionItem.md +48 -0
- package/.ai/ai_ref_AbActionButton.md +151 -0
- package/.ai/ai_ref_AbBadge.md +8 -2
- package/.ai/ai_ref_AbButton.md +11 -3
- package/.ai/ai_ref_AbCard.md +28 -12
- package/.ai/ai_ref_AbColorPicker.md +1 -1
- package/.ai/ai_ref_AbConfirmPopover.md +16 -1
- package/.ai/ai_ref_AbDateTimePicker.md +3 -3
- package/.ai/ai_ref_AbField.md +27 -2
- package/.ai/ai_ref_AbFileUploader.md +43 -2
- package/.ai/ai_ref_AbFilterPanel.md +6 -5
- package/.ai/ai_ref_AbFormCheck.md +1 -1
- package/.ai/ai_ref_AbInputField.md +84 -5
- package/.ai/ai_ref_AbModal.md +6 -3
- package/.ai/ai_ref_AbMultiSelect.md +3 -3
- package/.ai/ai_ref_AbNumberField.md +22 -12
- package/.ai/ai_ref_AbTabs.md +12 -2
- package/.ai/ai_ref_AbToggle.md +5 -0
- package/.ai/ai_ref_EliteGrid.md +212 -0
- package/.ai/ai_ref_migration_guide.md +15 -1
- package/.ai/ai_ref_usage_guide.md +411 -0
- package/.ai/ai_ref_useAlert.md +2 -0
- package/.ai/ai_ref_useToast.md +2 -0
- package/AI_REFERENCE.md +14 -8
- package/CHANGELOG.md +52 -0
- package/dist/style.css +1 -1
- package/dist/vue3-appsbd-ui.cjs.js +95 -80
- package/dist/vue3-appsbd-ui.es.js +12212 -11250
- package/package.json +1 -1
- package/readme.md +1 -1
- package/skills/commands/generate-module.md +1 -1
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
# Component Usage Guide — AI Reference
|
|
2
|
+
|
|
3
|
+
A **decision map**, not an API reference. It answers two questions:
|
|
4
|
+
|
|
5
|
+
1. **Which component does this job?** → the "Pick by Task" tables.
|
|
6
|
+
2. **Which variant/mode of it fits this use case?** → the "Variant Reference" tables.
|
|
7
|
+
|
|
8
|
+
Read this **before** choosing a component or a `variant`/`mode`/`type` prop value, then read that component's
|
|
9
|
+
own `.ai/ai_ref_[Name].md` for exact props/events/slots. This file deliberately does **not** repeat props.
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
1. ai_ref_usage_guide.md -> WHICH component does this job (Pick by Task)
|
|
13
|
+
2. ai_ref_usage_guide.md -> WHICH variant/mode of it fits (Variant Reference)
|
|
14
|
+
3. .ai/ai_ref_[Name].md -> exact props / events / slots
|
|
15
|
+
4. AI_REFERENCE.md -> full component index + global registration status
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Components marked global in `AI_REFERENCE.md` are usable as `<ab-input-field>` after `app.use(AppsbdUI)`.
|
|
19
|
+
All others must be imported from `vue3-appsbd-ui`. Where two options are equally valid, the surrounding UI
|
|
20
|
+
decides — denser option for admin tables and toolbars, card/tile option for marketing, onboarding and settings.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Pick by Task — Text & Value Input
|
|
25
|
+
|
|
26
|
+
| I need to… | Use | Notes |
|
|
27
|
+
| --- | --- | --- |
|
|
28
|
+
| Take a short text value (name, title, code) | `AbInputField type="text"` | Default type; `type` can be omitted. |
|
|
29
|
+
| Take a multi-line / paragraph value | `AbField type="textarea"` | Equivalent to `AbInputField as="textarea"`. |
|
|
30
|
+
| Take an email address | `AbInputField type="email"` | Pair with `rules="required\|email"`. |
|
|
31
|
+
| Take a password | `AbInputField type="password"` | Show/hide eye toggle is automatic; move it with `passIconPosition`. |
|
|
32
|
+
| Take a freely typed number (price, ID, amount) | `AbNumberField` (no `variant`) | `AbInputField type="number"` is the same thing — prefer `AbNumberField` for intent. |
|
|
33
|
+
| Take a small bounded count (qty, guests, rating) | `AbNumberField variant="stepper"` | Adds +/- buttons and `min`/`max`/`step` clamping. |
|
|
34
|
+
| Take a phone number / URL | `AbInputField type="tel"` / `type="url"` | Any native input type passes through. |
|
|
35
|
+
| Take an OTP / PIN / verification code | `AbPinInput` | `length`, `groupSize`, `showSeparator`. |
|
|
36
|
+
| Show a value the user should copy (API key, ref no.) | `AbInputField copyable readonly` | Emits `copy-success` / `copy-error` — show your own toast. |
|
|
37
|
+
| Add a unit/currency/icon beside the input | `AbInputField` `prefix` / `postfix` / `icon` slots | Don't hand-build an input-group. |
|
|
38
|
+
| Enter a list of free-form tags/keywords | `AbInputTag` | Use `AbMultiSelect mode="tags"` when suggestions matter. |
|
|
39
|
+
| Let the user pick a number on a track | `AbSlider` | `range` for a two-thumb min/max range. |
|
|
40
|
+
|
|
41
|
+
## Pick by Task — Choice & Selection
|
|
42
|
+
|
|
43
|
+
| I need to… | Use | Notes |
|
|
44
|
+
| --- | --- | --- |
|
|
45
|
+
| Turn one setting on/off | `AbToggle` | The default for enable/disable. `variant="column"` when it needs a description. |
|
|
46
|
+
| Turn something on/off as a prominent card choice | `AbFormCheck variant="card"` | A UI-design call — use when the option deserves a titled card, not a switch row. |
|
|
47
|
+
| Accept terms / a single yes-no checkbox | `AbFormCheck type="checkbox"` with one option | Use `AbToggle` only for instantly-applied settings, not form consent. |
|
|
48
|
+
| Pick exactly one of 2–5 short options | `AbFormCheck type="radio" variant="segmented"` | `pill` for a chip look; `default` for a plain radio list. |
|
|
49
|
+
| Pick exactly one of 2–6 options that need explaining | `AbFormCheck type="radio" variant="card"` | Each option gets `title` + `description`. |
|
|
50
|
+
| Pick one option best shown by an icon | `AbFormCheck variant="icon-card"` | Pass `iconComponent` or `icon` per option. |
|
|
51
|
+
| Pick one option that *is* a picture (theme, template) | `AbFormCheck variant="image-radio"` | `AbImageRadioInput` is the standalone image-tile alternative. |
|
|
52
|
+
| Pick one from a long searchable list (7+) | `AbMultiSelect mode="single"` | Below ~7 options a radio group reads better than a dropdown. |
|
|
53
|
+
| Pick several from a known list | `AbMultiSelect mode="multiple"` | Renders removable chips. |
|
|
54
|
+
| Pick several, and allow new values | `AbMultiSelect mode="tags"` | Or `AbInputTag` when there is no option list at all. |
|
|
55
|
+
| Select from a server-backed list | `AbMultiSelect isAjaxSearch` + `onSearch` | Keep local `options` for small fixed lists. |
|
|
56
|
+
| Check several boxes at once (filters, permissions) | `AbFormCheck type="checkbox"` | `limit` caps how many can be checked. |
|
|
57
|
+
| Pick a color | `AbColorPicker` | Swatch radio group, not a native color input. |
|
|
58
|
+
|
|
59
|
+
## Pick by Task — Date, File & Media Input
|
|
60
|
+
|
|
61
|
+
| I need to… | Use | Notes |
|
|
62
|
+
| --- | --- | --- |
|
|
63
|
+
| Pick a single date | `AbDateTimePicker mode="date"` | Default mode. |
|
|
64
|
+
| Pick a time only | `AbDateTimePicker mode="time"` | Opening hours, reminder time. |
|
|
65
|
+
| Pick date + time together | `AbDateTimePicker mode="datetime"` | Appointments, scheduled jobs. |
|
|
66
|
+
| Pick a from–to date range | `AbDateTimePicker isRange` | Reporting periods, check-in/check-out. |
|
|
67
|
+
| Format a date for display (no picker) | `abDate` | Dependency-free formatter; defaults from global config. |
|
|
68
|
+
| Upload a photo / logo with a preview | `AbFileUploader type="image"` | Default mode, thumbnail preview built in. |
|
|
69
|
+
| Upload a document / attachment | `AbFileUploader type="file"` + `allowedTypes` | Renders an extension icon instead of a thumbnail. |
|
|
70
|
+
| Let a user set their profile picture | `AbAvatar variant="add"` | Use `variant="image"` once a photo exists. |
|
|
71
|
+
| Validate a file outside a component | `useFileValidator` | Size / MIME / extension checks + icon resolvers. |
|
|
72
|
+
| Rotate through images or content panels | `AbCarousel` | `orientation`, `autoplay`, `edgeFade`. |
|
|
73
|
+
|
|
74
|
+
## Pick by Task — Form Assembly & Validation
|
|
75
|
+
|
|
76
|
+
| I need to… | Use | Notes |
|
|
77
|
+
| --- | --- | --- |
|
|
78
|
+
| Render one field whose type is decided at runtime | `AbField type="…"` | text, email, password, number, url, textarea, select, multiselect, tag, checkbox, radio, toggle, switch. |
|
|
79
|
+
| Render a whole form from a JSON/array config | `AbCustomField` + `fieldInputs` | For admin-configurable or API-driven forms. |
|
|
80
|
+
| Build a fixed, hand-written form | Individual `Ab*` fields | Don't reach for `AbCustomField` just to avoid typing markup. |
|
|
81
|
+
| Validate fields | `rules` prop + `abVeeRules` | VeeValidate-backed; errors render automatically under each field. |
|
|
82
|
+
| Split a long form into steps | `AbWizard` + `AbWizardStep` | Per-step blocking validation via `AbSettingsForm`. |
|
|
83
|
+
| Validate a wizard step before advancing | `AbSettingsForm :on-submit` inside the step | Returning `false` stops the wizard. |
|
|
84
|
+
| Put a form inside a dialog | `AbModal` | Built-in VeeValidate form + loader overlay. |
|
|
85
|
+
| Filter a list/table page | `AbFilterPanel` | The mode choice matters more than the props — see below. |
|
|
86
|
+
| Build structured API request params | `abRequestParam` | Pagination / sorting / filtering DTOs. |
|
|
87
|
+
| Set app-wide defaults (size, locale, formats) | `AppsbdUIConfigure` | Most components fall back to `globalConfig` when a prop is unset. |
|
|
88
|
+
|
|
89
|
+
## Pick by Task — Actions, Dialogs & Confirmation
|
|
90
|
+
|
|
91
|
+
| I need to… | Use | Notes |
|
|
92
|
+
| --- | --- | --- |
|
|
93
|
+
| Trigger the main action on a screen | `AbButton variant="solid"` | One solid primary button per view. |
|
|
94
|
+
| Offer a secondary action next to it | `AbButton variant="outline"` | Cancel, Back, Reset. |
|
|
95
|
+
| Navigate inside the SPA, styled as a button | `AbButton mode="router-link"` | `mode="link"` for external URLs. |
|
|
96
|
+
| Show a loading state on the action itself | `AbButton` loader props | Don't overlay a separate spinner on a button. |
|
|
97
|
+
| Confirm a destructive action inline (row delete) | `AbConfirmPopover` | Async `onConfirm` with a built-in loader — no modal needed. |
|
|
98
|
+
| Confirm something the user must not miss | `useAlert` `type="confirm"` | `variation="top-color-bar"` for irreversible actions. |
|
|
99
|
+
| Confirm with an async request before closing | `useAlert` `type="confirm-ajax"` | Dialog stays open while the promise resolves. |
|
|
100
|
+
| Show a dialog with a real form in it | `AbModal` | Use `AbEasyModal` when you only need open/close. |
|
|
101
|
+
| Open a quick dialog from a trigger element | `AbEasyModal` | Exposes `openModal()` / `closeModal()`. |
|
|
102
|
+
| Show a dropdown menu or rich popup | `AbPopover` | `trigger`: click / hover / focus / touch / manual. |
|
|
103
|
+
| Explain an icon button on hover | `v-tooltip` directive | Plain string hints — cheapest option. |
|
|
104
|
+
| Show rich or interactive hover content | `AbTooltip` | Slot-driven; use the directive for simple text. |
|
|
105
|
+
|
|
106
|
+
## Pick by Task — Navigation & Page Structure
|
|
107
|
+
|
|
108
|
+
| I need to… | Use | Notes |
|
|
109
|
+
| --- | --- | --- |
|
|
110
|
+
| Build an admin/dashboard page shell | `AbMainLayout` | Header, body, footer, left/right sidebar drawers; mobile-responsive. |
|
|
111
|
+
| Build the left navigation | `AbSidebar` + `AbSideMenuItem` | Collapse state persists to `localStorage`. |
|
|
112
|
+
| Switch between sibling content panels | `AbTabs` + `AbTab` | Only one panel visible at a time. |
|
|
113
|
+
| Use tabs as real routes | `AbTabs isRouteMode` | Each tab navigates instead of swapping content. |
|
|
114
|
+
| Reveal stacked sections on demand (FAQ, settings groups) | `AbAccordion` + `AbAccordionItem` | Pick over tabs when sections read in sequence; `multiple` allows several open. |
|
|
115
|
+
| Walk the user through an ordered flow | `AbWizard` + `AbWizardStep` | Order matters — that's what separates it from tabs. |
|
|
116
|
+
| Show keyboard shortcuts in the UI | `AbKbd` / `AbKbdGroup` | Group for chords like Ctrl + K. |
|
|
117
|
+
| Style a scrollable region's scrollbar | `AbScrollbar` | Also emits scroll-position events (infinite scroll). |
|
|
118
|
+
| Offer light/dark switching | `AbDarkModeToggler` + `useTheme` | Syncs with system preference and `localStorage`. |
|
|
119
|
+
| Branch layout on viewport width | `useResponsive` | Bootstrap-5-aligned breakpoints. |
|
|
120
|
+
|
|
121
|
+
## Pick by Task — Data Display
|
|
122
|
+
|
|
123
|
+
| I need to… | Use | Notes |
|
|
124
|
+
| --- | --- | --- |
|
|
125
|
+
| Show rows of records | `AbTable` | Column defs + per-cell/header slots + empty slot. |
|
|
126
|
+
| Show rows with grouping, subrows, column chooser, card view | `EliteGrid` | **External** peer dep. Only when `AbTable` genuinely can't do it. |
|
|
127
|
+
| Plot data | `AbChart` | Apache ECharts — full option object or simplified props. |
|
|
128
|
+
| Show a single KPI number | `AbCard variant="tile"` | One number + label. |
|
|
129
|
+
| Show a repeated list row (notification, activity) | `AbCard variant="item"` | Row layout, not a page section. |
|
|
130
|
+
| Show a recommendation / AI callout | `AbCard variant="insight"` | Actionable suggestion panel. |
|
|
131
|
+
| Wrap any page section in a box | `AbCard` (default) | Header / body / footer slots. |
|
|
132
|
+
| Label a status or count | `AbBadge` | `solid` to stand out, `outline` for dense lists. |
|
|
133
|
+
| Show a person's picture | `AbAvatar` | Sizes `xs`–`xxl`. |
|
|
134
|
+
| Present pricing tiers side by side | `AbPricingContainer` + `AbPricingCard` | One card per tier. |
|
|
135
|
+
| Compare tiers feature-by-feature | `AbPricingTable` | Feature rows × package columns. |
|
|
136
|
+
|
|
137
|
+
## Pick by Task — Feedback & Loading States
|
|
138
|
+
|
|
139
|
+
| I need to… | Use | Notes |
|
|
140
|
+
| --- | --- | --- |
|
|
141
|
+
| Confirm an action succeeded, non-blocking | `useToast` | `toast.success()` / `.error()` / `.warning()` / `.info()`. |
|
|
142
|
+
| Report something the user must acknowledge | `useAlert` `type="alert"` | Blocking dialog — not for routine success messages. |
|
|
143
|
+
| Show content is loading, shape known | `AbSkeleton` | Better than a spinner for lists and cards. |
|
|
144
|
+
| Show determinate progress (upload %, steps done) | `AbProgressbar` | Colors + sizes `xs`–`xxl`. |
|
|
145
|
+
| Show an action in flight on a button | `AbButton` loader props | Keeps trigger and feedback in one place. |
|
|
146
|
+
| Show a form-wide busy state | `AbModal` loader overlay | Built into the modal, no separate element. |
|
|
147
|
+
|
|
148
|
+
## Pick by Task — Chat & Voice
|
|
149
|
+
|
|
150
|
+
| I need to… | Use | Notes |
|
|
151
|
+
| --- | --- | --- |
|
|
152
|
+
| Build a full chat screen (list + composer) | `AbChatBox` | Header, message list, empty/typing states — all slot-overridable. |
|
|
153
|
+
| Add only the message composer | `AbChatInput` | Auto-growing textarea, attachments, add/more dropdown, built-in mic. |
|
|
154
|
+
| Add rows to that composer's dropdown | `AbChatInputMenuItem` | Presentational icon / name / description / action row. |
|
|
155
|
+
| Add voice-to-text to an existing input | `AbVoiceButton` | Same engine as `AbChatInput`'s mic, standalone via `v-model`. |
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Commonly Confused Pairs
|
|
160
|
+
|
|
161
|
+
Where more than one component legitimately solves the same problem, this is the tie-breaker.
|
|
162
|
+
|
|
163
|
+
| Goal | Option A | Option B | Pick |
|
|
164
|
+
| --- | --- | --- | --- |
|
|
165
|
+
| Numeric input | `AbInputField type="number"` | `AbNumberField` | Identical output — `AbNumberField` is a thin wrapper. Prefer it for intent; use `AbInputField` when the same field can switch types. |
|
|
166
|
+
| Enable / disable something | `AbToggle` | `AbFormCheck variant="card"` | Switch row in settings lists; card when the option needs a title, description or visual weight. UI-design call. |
|
|
167
|
+
| Free-form tag entry | `AbInputTag` | `AbMultiSelect mode="tags"` | `AbInputTag` when there is no option list; `AbMultiSelect` when suggestions or async search matter. |
|
|
168
|
+
| Pick one of a few options | `AbFormCheck type="radio"` | `AbMultiSelect mode="single"` | Radio below ~7 options (all visible); dropdown above that, or when space is tight. |
|
|
169
|
+
| Image-based option picker | `AbFormCheck variant="image-radio"` | `AbImageRadioInput` | `AbFormCheck` inside a form with other checks; `AbImageRadioInput` as a standalone tile picker. |
|
|
170
|
+
| Confirm a delete | `AbConfirmPopover` | `useAlert type="confirm"` | Popover for per-row/inline actions; alert dialog when the consequence is severe or global. |
|
|
171
|
+
| Show a dialog | `AbModal` | `AbEasyModal` | `AbModal` when it contains a validated form; `AbEasyModal` for plain content with imperative open/close. |
|
|
172
|
+
| Group content into sections | `AbTabs` | `AbAccordion` | Tabs for mutually exclusive panels; accordion when sections stack vertically and several may be read. |
|
|
173
|
+
| Hover explanation | `v-tooltip` directive | `AbTooltip` / `AbPopover` | Directive for a string; `AbTooltip` for rich content; `AbPopover` when the content is interactive. |
|
|
174
|
+
| Data grid | `AbTable` | `EliteGrid` | Always `AbTable` first. `EliteGrid` only for grouping, subrows, card view or column chooser. |
|
|
175
|
+
| Success / error feedback | `useToast` | `useAlert` | Toast for routine outcomes; alert only when the user must acknowledge before continuing. |
|
|
176
|
+
| Build a form | Individual `Ab*` fields | `AbCustomField` | Hand-written fields for fixed forms; `AbCustomField` only when the field list is data-driven. |
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Variant Reference — AbFormCheck / AbRadioInput
|
|
181
|
+
|
|
182
|
+
Full prop reference: [ai_ref_AbFormCheck.md](./ai_ref_AbFormCheck.md).
|
|
183
|
+
`type` decides checkbox vs radio; `variant` decides how it looks.
|
|
184
|
+
|
|
185
|
+
| Variant | Use it when | Avoid it / use instead |
|
|
186
|
+
| --- | --- | --- |
|
|
187
|
+
| `default` | Plain checkbox/radio list — settings, row selection, long option lists (7+). | Options deserve visual weight → a card variant. |
|
|
188
|
+
| `card` | 2–6 choices, each with a title **and** description — plan, shipping method, account type. | 7+ options, or no description needed → `segmented`/`pill`. |
|
|
189
|
+
| `icon-card` | Same as `card`, but one icon explains the option better than prose. | The option needs a real photo → `image-radio`. |
|
|
190
|
+
| `card-flat-check` | Card look with a flat, shadow-free checked state and a centered indicator. | The default card glow already fits. |
|
|
191
|
+
| `image-radio` | The options *are* images — theme, template, banner picker. `isInline` switches big tile ↔ compact chip. | No natural image per option → `card`/`icon-card`. |
|
|
192
|
+
| `segmented` | 2–5 short labels acting like a switch — List/Grid, Monthly/Yearly. | An option needs a description or icon → `card`. |
|
|
193
|
+
| `pill` | Same as `segmented`, rounded chip look — tag-style filters in a toolbar. | Must read as a form field group → `default`/`segmented`. |
|
|
194
|
+
|
|
195
|
+
Modifier props:
|
|
196
|
+
|
|
197
|
+
| Prop | Use it when |
|
|
198
|
+
| --- | --- |
|
|
199
|
+
| `isInline` | Options sit in a row instead of stacking. For `image-radio` it selects the compact chip look. |
|
|
200
|
+
| `checkRight` | The indicator sits on the right of the card instead of the left. |
|
|
201
|
+
| `isBoxShadow` | Card-family only: checked state glows instead of changing border color. |
|
|
202
|
+
| `limit` | Checkbox mode: cap how many options can be selected. |
|
|
203
|
+
| `selectorPosition` | `image-radio` only: which corner the check badge sits in. |
|
|
204
|
+
|
|
205
|
+
## Variant Reference — AbCard
|
|
206
|
+
|
|
207
|
+
Full prop reference: [ai_ref_AbCard.md](./ai_ref_AbCard.md).
|
|
208
|
+
|
|
209
|
+
| Variant | Use it when | Avoid it / use instead |
|
|
210
|
+
| --- | --- | --- |
|
|
211
|
+
| `default` | Generic bordered container — form sections, dashboard widgets. | A more specific layout below fits. |
|
|
212
|
+
| `tile` | One big number + label — KPI tiles. | Content is more than a number + label → `default`/`item`. |
|
|
213
|
+
| `item` | A repeatable list row — notification, activity feed, search result. | It's a whole page section → `default`. |
|
|
214
|
+
| `insight` | A suggestion/recommendation panel — "You could save 15%…". | Plain content with no action → `default`. |
|
|
215
|
+
|
|
216
|
+
`variation` is an unvalidated escape hatch — any string is appended as a raw class. Use it only for one-off
|
|
217
|
+
custom classes, never instead of `variant`.
|
|
218
|
+
|
|
219
|
+
## Variant Reference — AbButton
|
|
220
|
+
|
|
221
|
+
Full prop reference: [ai_ref_AbButton.md](./ai_ref_AbButton.md).
|
|
222
|
+
|
|
223
|
+
| Prop value | Use it when | Avoid it / use instead |
|
|
224
|
+
| --- | --- | --- |
|
|
225
|
+
| `variant="solid"` (default) | The primary or only action — Save, Submit, Create. | It sits next to another solid button → `outline`. |
|
|
226
|
+
| `variant="outline"` | Secondary/tertiary action — Cancel, Back, filter toggles. | It's the primary action → `solid`. |
|
|
227
|
+
| `variant="animated-round"` | A pill-shaped loading button (spinner only, text hidden while animating) — no `isRounded`/`isHideTextOnAnimate` props needed; bind `isAnimated` to a loading ref. | A plain (non-rounded) loading button → `isAnimated`. |
|
|
228
|
+
| `mode="button"` (default) | In-page action or form submit. | The click should navigate. |
|
|
229
|
+
| `mode="link"` | External URL styled as a button. | Internal route → `router-link`. |
|
|
230
|
+
| `mode="router-link"` | Internal SPA navigation styled as a button. | External URL → `link`. |
|
|
231
|
+
| `color="danger"` | Destructive actions — pair with `AbConfirmPopover` or a confirm alert. | Non-destructive actions. |
|
|
232
|
+
|
|
233
|
+
## Variant Reference — AbBadge
|
|
234
|
+
|
|
235
|
+
Full prop reference: [ai_ref_AbBadge.md](./ai_ref_AbBadge.md).
|
|
236
|
+
|
|
237
|
+
| Variant | Use it when | Avoid it / use instead |
|
|
238
|
+
| --- | --- | --- |
|
|
239
|
+
| `solid` (default) | Status that must stand out — "New", unread counts, error states. | Dense table/list where fills feel heavy → `outline`. |
|
|
240
|
+
| `outline` | Low-emphasis labels, or many badges together (tag list). | It needs to grab attention → `solid`. |
|
|
241
|
+
|
|
242
|
+
## Variant Reference — AbToggle
|
|
243
|
+
|
|
244
|
+
Full prop reference: [ai_ref_AbToggle.md](./ai_ref_AbToggle.md).
|
|
245
|
+
|
|
246
|
+
| Variant | Use it when | Avoid it / use instead |
|
|
247
|
+
| --- | --- | --- |
|
|
248
|
+
| `inline` (default) | Label + switch side by side — compact settings rows. | The setting needs a paragraph → `column`. |
|
|
249
|
+
| `inline-left` | The switch should lead before the label. | No reason to lead with the switch → `inline`. |
|
|
250
|
+
| `column` | Label + description stacked above the switch — settings pages. | The label alone is self-explanatory → `inline`. |
|
|
251
|
+
|
|
252
|
+
`trueValue`/`falseValue` default to `"Y"`/`"N"` from global config — set them explicitly when the API expects
|
|
253
|
+
booleans.
|
|
254
|
+
|
|
255
|
+
## Variant Reference — AbInputField / AbNumberField / AbField (`type="number"`)
|
|
256
|
+
|
|
257
|
+
Full prop reference: [ai_ref_AbInputField.md](./ai_ref_AbInputField.md),
|
|
258
|
+
[ai_ref_AbNumberField.md](./ai_ref_AbNumberField.md), [ai_ref_AbField.md](./ai_ref_AbField.md).
|
|
259
|
+
All three route to the same stepper implementation.
|
|
260
|
+
|
|
261
|
+
| Setting | Use it when | Avoid it / use instead |
|
|
262
|
+
| --- | --- | --- |
|
|
263
|
+
| plain (no `variant`) | Freely typed value — price, arbitrary quantity, ID. | Small bounded range where clicking beats typing → `stepper`. |
|
|
264
|
+
| `variant="stepper"` | Small bounded count — cart quantity, guests, page size, rating. | Large/unbounded range, or clamping is meaningless → plain. |
|
|
265
|
+
| `variant="inset"` | Compact, modern form where the label should sit inside the bordered box above the value (AbInputField only). | Dense multi-column filter rows or very small `xs` fields → default label-above. |
|
|
266
|
+
| `type="password"` | Any secret value — show/hide toggle is added automatically. | An OTP code → `AbPinInput`. |
|
|
267
|
+
| `copyable` | A generated value the user copies — API key, invite link, reference no. | An editable field the user types into. |
|
|
268
|
+
| `prefix` / `postfix` | A unit, currency symbol or domain fragment belongs beside the value. | The affix is actually a separate action → use the `icon` slot. |
|
|
269
|
+
| `isCodeInput` | The field holds a code/identifier needing the mega-input treatment. | Ordinary text. |
|
|
270
|
+
|
|
271
|
+
## Variant Reference — AbMultiSelect
|
|
272
|
+
|
|
273
|
+
Full prop reference: [ai_ref_AbMultiSelect.md](./ai_ref_AbMultiSelect.md).
|
|
274
|
+
|
|
275
|
+
| Mode / prop | Use it when | Avoid it / use instead |
|
|
276
|
+
| --- | --- | --- |
|
|
277
|
+
| `mode="single"` (default) | Exactly one value — country, category, assignee. | More than one value allowed → `multiple`. |
|
|
278
|
+
| `mode="multiple"` | Several values from a known list, shown as removable chips. | The user may type new values → `tags`. |
|
|
279
|
+
| `mode="tags"` | Free-form entry with optional suggestions. | The value set is fixed → `multiple` (prevents typos). |
|
|
280
|
+
| `isAjaxSearch` + `onSearch` | Large or server-backed option lists — customers, products. | Small local list → pass `options` directly. |
|
|
281
|
+
|
|
282
|
+
## Variant Reference — AbDateTimePicker
|
|
283
|
+
|
|
284
|
+
Full prop reference: [ai_ref_AbDateTimePicker.md](./ai_ref_AbDateTimePicker.md).
|
|
285
|
+
|
|
286
|
+
| Mode / prop | Use it when | Avoid it / use instead |
|
|
287
|
+
| --- | --- | --- |
|
|
288
|
+
| `mode="date"` (default) | A single calendar date — birthdate, due date. | Time matters too → `datetime`. |
|
|
289
|
+
| `mode="time"` | Time only — reminder time, opening hours. | A date is also needed → `datetime`. |
|
|
290
|
+
| `mode="datetime"` | Both matter — meetings, appointments, event start. | Only one of the two matters → `date`/`time`. |
|
|
291
|
+
| `isRange` | A from–to range — reporting period, check-in/check-out. | A single point in time. |
|
|
292
|
+
|
|
293
|
+
## Variant Reference — AbFilterPanel
|
|
294
|
+
|
|
295
|
+
Full prop reference: [ai_ref_AbFilterPanel.md](./ai_ref_AbFilterPanel.md).
|
|
296
|
+
The mode is driven by how many fields exist and how many a user applies at once — not by looks.
|
|
297
|
+
|
|
298
|
+
| Mode | Use it when | Avoid it / use instead |
|
|
299
|
+
| --- | --- | --- |
|
|
300
|
+
| standard (no flag) | "Pick a field, then a value" search bar — a handful of fields, one at a time. | Several fields filtered at once → `isAdvance`/`isQuickAdvance`. |
|
|
301
|
+
| `isSingle` | The simplest search box — one always-visible field. Add `isAutoSearch` for live typing. | Multiple distinct fields → standard/`isAdvance`. |
|
|
302
|
+
| `isAdvance` | Data-heavy admin lists where users routinely filter by many fields at once — every field expanded. | Tight space, or only 1–3 fields used → `isQuickAdvance`/`isBuilderFilter`. |
|
|
303
|
+
| `isQuickAdvance` | Compact multi-select quick filters without the full `isAdvance` footprint. | A full field-by-field layout is wanted → `isAdvance`. |
|
|
304
|
+
| `isBuilderFilter` | Many possible fields (10+), only 1–3 applied at a time — Shopify-style "+ Add filter". | Few fields, or users always fill them all → standard/`isAdvance`. |
|
|
305
|
+
| `canScan` | Inventory/POS lookup where scanning a barcode beats typing. | No physical codes to scan. |
|
|
306
|
+
|
|
307
|
+
## Variant Reference — AbTabs
|
|
308
|
+
|
|
309
|
+
Full prop reference: [ai_ref_AbTabs.md](./ai_ref_AbTabs.md).
|
|
310
|
+
|
|
311
|
+
| Variation / prop | Use it when | Avoid it / use instead |
|
|
312
|
+
| --- | --- | --- |
|
|
313
|
+
| `outline` (default) | General-purpose content tab switcher. | A style below fits the surrounding UI better. |
|
|
314
|
+
| `pills` | Filter-like groups — All / Active / Archived. | Page-level content tabs → `outline`/`underline`. |
|
|
315
|
+
| `underline` | Minimal page-level nav under a header — Profile / Settings / Billing. | Tabs need more separation → `pills`/`bg-secondary`. |
|
|
316
|
+
| `bg-secondary` | Tabs embedded inside a card or toolbar. | Tabs sit directly on the page background. |
|
|
317
|
+
| `isRouteMode` | Each tab is a real route, not in-page content. | Tabs just swap visible content — leave it off. |
|
|
318
|
+
|
|
319
|
+
## Variant Reference — AbAccordion
|
|
320
|
+
|
|
321
|
+
Full prop reference: [ai_ref_AbAccordion.md](./ai_ref_AbAccordion.md).
|
|
322
|
+
|
|
323
|
+
| Prop | Use it when |
|
|
324
|
+
| --- | --- |
|
|
325
|
+
| default (no flag) | Only one section open at a time — FAQ, guided settings. |
|
|
326
|
+
| `multiple` | Several sections may be open together — long reference/settings pages. |
|
|
327
|
+
| `iconPosition="left"` | The chevron should lead the title (default is `"right"`). |
|
|
328
|
+
| `variant="responsive"` | Sections should all be visible on large screens (no toggle icon) but collapse into a normal accordion on small screens. `breakpoint` sets the switch point. |
|
|
329
|
+
|
|
330
|
+
## Variant Reference — AbWizard
|
|
331
|
+
|
|
332
|
+
Full prop reference: [ai_ref_AbWizard.md](./ai_ref_AbWizard.md).
|
|
333
|
+
|
|
334
|
+
| Variant / prop | Use it when | Avoid it / use instead |
|
|
335
|
+
| --- | --- | --- |
|
|
336
|
+
| `variant="default"` | Inline multi-step form embedded in a page. | Triggered from a button without leaving the page → a modal variant. |
|
|
337
|
+
| `variant="circular"` | Same, with circular numbered step markers — onboarding. | A flatter indicator fits → `default`. |
|
|
338
|
+
| `variant="modal"` | Flow triggered from a button that must not navigate away. | The wizard is the whole page → `default`/`circular`. |
|
|
339
|
+
| `variant="circular-modal"` | Modal wizard with circular step markers. | — |
|
|
340
|
+
| `orientation="horizontal"` (default) | 2–4 steps, normal page width. | Many steps or a side step list → `vertical`. |
|
|
341
|
+
| `orientation="vertical"` | Many steps, or a settings-style step list beside the content. | Short top-to-bottom flow → `horizontal`. |
|
|
342
|
+
|
|
343
|
+
## Variant Reference — AbPricingCard
|
|
344
|
+
|
|
345
|
+
Full prop reference: [ai_ref_AbPricingCard.md](./ai_ref_AbPricingCard.md).
|
|
346
|
+
|
|
347
|
+
| Variant | Use it when | Avoid it / use instead |
|
|
348
|
+
| --- | --- | --- |
|
|
349
|
+
| `default` | A standard tier, no special emphasis. | One tier should stand out or be de-emphasized. |
|
|
350
|
+
| `minimal` | Low-emphasis tier — "Free" or "Contact us". | It's the tier you want picked → `highlighted`. |
|
|
351
|
+
| `highlighted` | The recommended tier — pair with `recommended` + a `badge`. | A plain tier → `default`. |
|
|
352
|
+
| `badge-price` | The price itself needs a discount/"% off" treatment. | Standard price display → `default`/`highlighted`. |
|
|
353
|
+
|
|
354
|
+
## Variant Reference — AbAvatar
|
|
355
|
+
|
|
356
|
+
Full prop reference: [ai_ref_AbAvatar.md](./ai_ref_AbAvatar.md).
|
|
357
|
+
|
|
358
|
+
| Variant | Use it when | Avoid it / use instead |
|
|
359
|
+
| --- | --- | --- |
|
|
360
|
+
| `image` (default) | A profile photo exists (`src` is set). | No photo yet → `add`. |
|
|
361
|
+
| `add` | Upload placeholder in a profile create/edit form. Pairs with `change` / `triggerFileSelect()`. | A photo already exists → `image`. |
|
|
362
|
+
|
|
363
|
+
## Variant Reference — AbFileUploader
|
|
364
|
+
|
|
365
|
+
Full prop reference: [ai_ref_AbFileUploader.md](./ai_ref_AbFileUploader.md).
|
|
366
|
+
|
|
367
|
+
| Type | Use it when | Avoid it / use instead |
|
|
368
|
+
| --- | --- | --- |
|
|
369
|
+
| `type="image"` (default) | Avatar/photo/logo upload where a thumbnail helps. | Non-image files → `type="file"`. |
|
|
370
|
+
| `type="file"` | Documents and attachments; needs `allowedTypes`, shows an extension icon. | Always an image → `type="image"`. |
|
|
371
|
+
| `isCrop` (with `type="image"`) | The user may want to crop the picked image (avatar, banner); Cancel discards the pick. `cropAspectRatio` locks the shape. | The image is always used as-is → leave `isCrop` off. |
|
|
372
|
+
| `variant="dropzone"` | A prominent upload card with title, helper text (size limits) and an `AbButton`; also accepts drag & drop. `:is-border="false"` swaps the dashed border for a box-shadow. | A compact thumbnail box inside a dense form → default variant. |
|
|
373
|
+
|
|
374
|
+
## Variant Reference — useAlert
|
|
375
|
+
|
|
376
|
+
Full prop reference: [ai_ref_useAlert.md](./ai_ref_useAlert.md).
|
|
377
|
+
|
|
378
|
+
`type` — what the dialog does:
|
|
379
|
+
|
|
380
|
+
| Type | Use it when |
|
|
381
|
+
| --- | --- |
|
|
382
|
+
| `alert` (default) | Inform only — one dismiss button. |
|
|
383
|
+
| `confirm` | Ask before proceeding — synchronous yes/no. |
|
|
384
|
+
| `confirm-ajax` | Ask, then run an async request while the dialog stays open. |
|
|
385
|
+
|
|
386
|
+
`variation` — how it looks:
|
|
387
|
+
|
|
388
|
+
| Variation | Use it when | Avoid it / use instead |
|
|
389
|
+
| --- | --- | --- |
|
|
390
|
+
| `default` | General-purpose — the safe choice. | A style below fits the product surface better. |
|
|
391
|
+
| `modern` | A visually elevated dialog for customer-facing product surfaces. | Dense admin tooling → `minimal`. |
|
|
392
|
+
| `minimal` | Quick, low-chrome confirmations in dense admin tools. | Destructive action → `top-color-bar`. |
|
|
393
|
+
| `top-color-bar` | Destructive / irreversible actions needing an at-a-glance severity cue. | Routine confirmation → `default`/`minimal`. |
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
397
|
+
## Composables & Utilities
|
|
398
|
+
|
|
399
|
+
| API | Reach for it when |
|
|
400
|
+
| --- | --- |
|
|
401
|
+
| `useAlert` | A blocking dialog is needed — alerts, confirms, async confirms. |
|
|
402
|
+
| `useToast` | Non-blocking success/error/warning/info feedback. |
|
|
403
|
+
| `useTheme` | Reading or toggling light/dark mode in your own UI. |
|
|
404
|
+
| `useResponsive` | Layout must branch on viewport width in script, not CSS. |
|
|
405
|
+
| `useFileValidator` | Validating files outside `AbFileUploader`, or resolving file icons. |
|
|
406
|
+
| `abDate` | Formatting dates for display without pulling in a date library. |
|
|
407
|
+
| `abVeeRules` | Pre-built, localized VeeValidate rules for `rules` props. |
|
|
408
|
+
| `abTranslate` | Localizing your own strings the same way components do. |
|
|
409
|
+
| `abRequestParam` | Building pagination/sort/filter payloads for list APIs. |
|
|
410
|
+
| `abEventBus` / `emitterObj` | Cross-component events where props/provide would be awkward. |
|
|
411
|
+
| `AppsbdUIConfigure` | Setting library-wide defaults once — size, locale, date formats, true/false values. |
|
package/.ai/ai_ref_useAlert.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Provides a procedural API to trigger modal alerts, notifications, and confirmations using the global `$alert` instance.
|
|
4
4
|
|
|
5
|
+
> This is backed internally by `AbBaseAlert`, a mount-only root the plugin's `install()` mounts once into `document.body` — it is **not** a named export of the package. `import { AbBaseAlert } from "vue3-appsbd-ui"` resolves to `undefined`. Always reach it through `useAlert()` (or the `$alert` global property) as shown below.
|
|
6
|
+
|
|
5
7
|
## Usage
|
|
6
8
|
|
|
7
9
|
```html
|
package/.ai/ai_ref_useToast.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Provides a procedural API to spawn toast notifications using the globally registered `$toast` instance.
|
|
4
4
|
|
|
5
|
+
> This is backed internally by `AbToast`, a mount-only root the plugin's `install()` mounts once into `document.body` — it is **not** a named export of the package. `import { AbToast } from "vue3-appsbd-ui"` resolves to `undefined`. Always reach it through `useToast()` (or the `$toast` global property) as shown below.
|
|
6
|
+
|
|
5
7
|
## Usage
|
|
6
8
|
|
|
7
9
|
```html
|
package/AI_REFERENCE.md
CHANGED
|
@@ -8,19 +8,22 @@
|
|
|
8
8
|
|
|
9
9
|
**Upgrading a consuming project?** Read [.ai/ai_ref_migration_guide.md](./.ai/ai_ref_migration_guide.md) — per-version breaking-change find/replace steps meant for an AI agent to apply mechanically when bumping this library's version in another project.
|
|
10
10
|
|
|
11
|
+
**Building a UI with this library? Read [.ai/ai_ref_usage_guide.md](./.ai/ai_ref_usage_guide.md) first.** It is the decision map: "Pick by Task" tables mapping a plain-language need to the right component and prop (*take a password* → `AbInputField type="password"`; *enable/disable something* → `AbToggle`, or `AbFormCheck variant="card"` when the option deserves a card), "Variant Reference" tables for every component with more than one variant/mode, and a "Commonly Confused Pairs" tie-breaker table (`AbInputField type="number"` vs `AbNumberField`, `AbTable` vs `EliteGrid`, `useToast` vs `useAlert`, …). Use the table below to confirm a component exists and how it's registered, that guide to choose between components, then `.ai/ai_ref_[Name].md` for exact props.
|
|
12
|
+
|
|
11
13
|
## Components & APIs
|
|
12
14
|
|
|
13
15
|
✅ = globally registered via `app.use(AppsbdUI)` — all others require `import { X } from "vue3-appsbd-ui"`.
|
|
14
16
|
|
|
15
17
|
| Component / API | G | Purpose | Reference |
|
|
16
18
|
| :----------------------------- | :-: | :--------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |
|
|
17
|
-
| `AbButton` | ✅ | Customizable push button with loader animation.
|
|
18
|
-
| `
|
|
19
|
+
| `AbButton` | ✅ | Customizable push button with loader animation. Default `variant` is `"solid"`. | [.ai/ai_ref_AbButton.md](./.ai/ai_ref_AbButton.md) |
|
|
20
|
+
| `AbActionButton` | — | `AbButton` wrapper for CRUD-style actions (add/edit/save/delete/cancel/…) — single `action` string, or an `actions` array to render a whole group from one component — emits a single `action` event, built-in confirm for `delete`. | [.ai/ai_ref_AbActionButton.md](./.ai/ai_ref_AbActionButton.md) |
|
|
21
|
+
| `AbCard` | ✅ | Flexible card container. Default `variant` is `"default"`; also `"tile"`, `"item"`, `"insight"` layout variants. | [.ai/ai_ref_AbCard.md](./.ai/ai_ref_AbCard.md) |
|
|
19
22
|
| `AbModal` | ✅ | Full-featured dialog with built-in VeeValidate form, loader, and message-only mode. | [.ai/ai_ref_AbModal.md](./.ai/ai_ref_AbModal.md) |
|
|
20
23
|
| `AbProgressbar` | ✅ | Animated Bootstrap progress bar with color and size variants. | [.ai/ai_ref_AbProgressbar.md](./.ai/ai_ref_AbProgressbar.md) |
|
|
21
|
-
| `AbInputField` | ✅ | Core text input with VeeValidate, prefix/postfix/icon slots.
|
|
22
|
-
| `AbNumberField` | ✅ | Numeric input
|
|
23
|
-
| `AbField` | ✅ | Polymorphic field wrapper - renders any input type via a `type` prop.
|
|
24
|
+
| `AbInputField` | ✅ | Core text input with VeeValidate, prefix/postfix/icon slots. `variant="stepper"` turns it into a numeric stepper (min/max/step, +/- buttons); `variant="inset"` puts the label inside the bordered box; `variant="outlined"` is a floating label that moves onto the top border on focus/filled. | [.ai/ai_ref_AbInputField.md](./.ai/ai_ref_AbInputField.md) |
|
|
25
|
+
| `AbNumberField` | ✅ | Numeric input. Defaults to a plain `type="number"` input; `variant="stepper"` renders `AbInputField`'s numeric stepper (min/max/step, +/- buttons) — thin wrapper around `AbInputField`. | [.ai/ai_ref_AbNumberField.md](./.ai/ai_ref_AbNumberField.md) |
|
|
26
|
+
| `AbField` | ✅ | Polymorphic field wrapper - renders any input type via a `type` prop. `type="number"` + `variant="stepper"` renders `AbInputField`'s numeric stepper. | [.ai/ai_ref_AbField.md](./.ai/ai_ref_AbField.md) |
|
|
24
27
|
| `AbCustomField` | ✅ | Dynamic form scaffold driven by a `fieldInputs` array. | [.ai/ai_ref_AbCustomField.md](./.ai/ai_ref_AbCustomField.md) |
|
|
25
28
|
| `AbDateTimePicker` | ✅ | Date / time / range picker. Also import `v-calendar/style.css` in consuming app. | [.ai/ai_ref_AbDateTimePicker.md](./.ai/ai_ref_AbDateTimePicker.md) |
|
|
26
29
|
| `AbFormCheck` / `AbRadioInput` | ✅ | Checkbox / radio group (default, card, icon-card, card-flat-check, image-radio, segmented, pill variants). `AbRadioInput` is an alias of `AbFormCheck`. | [.ai/ai_ref_AbFormCheck.md](./.ai/ai_ref_AbFormCheck.md) |
|
|
@@ -32,16 +35,18 @@
|
|
|
32
35
|
| `AbEasyModal` | — | Lightweight modal wrapper that exposes `openModal` / `closeModal`. | [.ai/ai_ref_AbEasyModal.md](./.ai/ai_ref_AbEasyModal.md) |
|
|
33
36
|
| `AbPinInput` | — | Segmented PIN / OTP entry field. | [.ai/ai_ref_AbPinInput.md](./.ai/ai_ref_AbPinInput.md) |
|
|
34
37
|
| `AbAvatar` | — | Profile image (or file-upload avatar variant). | [.ai/ai_ref_AbAvatar.md](./.ai/ai_ref_AbAvatar.md) |
|
|
35
|
-
| `AbTabs` | — | Tabbed interface container; supports router-link mode.
|
|
38
|
+
| `AbTabs` | — | Tabbed interface container; supports router-link mode. Default `variation` is `"outline"`. | [.ai/ai_ref_AbTabs.md](./.ai/ai_ref_AbTabs.md) |
|
|
36
39
|
| `AbTab` | — | Individual tab pane / link. | [.ai/ai_ref_AbTab.md](./.ai/ai_ref_AbTab.md) |
|
|
40
|
+
| `AbAccordion` | — | Shadcn-style collapsible group container. Default `iconPosition` is `"right"`; opening one item closes others unless `multiple`. | [.ai/ai_ref_AbAccordion.md](./.ai/ai_ref_AbAccordion.md) |
|
|
41
|
+
| `AbAccordionItem` | — | Single collapsible row inside `AbAccordion`. Body slot accepts any content. | [.ai/ai_ref_AbAccordionItem.md](./.ai/ai_ref_AbAccordionItem.md) |
|
|
37
42
|
| `AbImageRadioInput` | — | Image-based radio group for visual option pickers. | [.ai/ai_ref_AbImageRadioInput.md](./.ai/ai_ref_AbImageRadioInput.md) |
|
|
38
|
-
| `AbBadge` | — | Status / count label (Bootstrap badge utility).
|
|
43
|
+
| `AbBadge` | — | Status / count label (Bootstrap badge utility). Default `variant` is `"solid"`. | [.ai/ai_ref_AbBadge.md](./.ai/ai_ref_AbBadge.md) |
|
|
39
44
|
| `AbSidebar` | — | Collapsible sidebar navigation with optional search. | [.ai/ai_ref_AbSidebar.md](./.ai/ai_ref_AbSidebar.md) |
|
|
40
45
|
| `AbSideMenuItem` | — | Sidebar nav item (router-link, anchor, submenu parent, or section title). | [.ai/ai_ref_AbSideMenuItem.md](./.ai/ai_ref_AbSideMenuItem.md) |
|
|
41
46
|
| `AbMainLayout` | — | Full-page application shell with left/right sidebar drawers, header, body, and footer slots. Mobile-responsive. | [.ai/ai_ref_AbMainLayout.md](./.ai/ai_ref_AbMainLayout.md) |
|
|
42
47
|
| `AbSlider` | — | Single or range numeric slider. | [.ai/ai_ref_AbSlider.md](./.ai/ai_ref_AbSlider.md) |
|
|
43
48
|
| `AbColorPicker` | — | Radio-style color swatch picker. | [.ai/ai_ref_AbColorPicker.md](./.ai/ai_ref_AbColorPicker.md) |
|
|
44
|
-
| `AbFileUploader` | — | File upload field with size validation; image mode (default, preview) or file mode (`allowedTypes` + extension icons). | [.ai/ai_ref_AbFileUploader.md](./.ai/ai_ref_AbFileUploader.md) |
|
|
49
|
+
| `AbFileUploader` | — | File upload field with size validation; image mode (default, preview) or file mode (`allowedTypes` + extension icons); `variant="dropzone"` for a large icon/title/description/button card with drag & drop. | [.ai/ai_ref_AbFileUploader.md](./.ai/ai_ref_AbFileUploader.md) |
|
|
45
50
|
| `AbFilterPanel` | — | Advanced filter panel with search and scan modes. | [.ai/ai_ref_AbFilterPanel.md](./.ai/ai_ref_AbFilterPanel.md) |
|
|
46
51
|
| `AbSettingsForm` | — | Settings-style form that auto-registers as a wizard step validator. | [.ai/ai_ref_AbSettingsForm.md](./.ai/ai_ref_AbSettingsForm.md) |
|
|
47
52
|
| `AbScrollbar` | — | Styled custom scrollbar wrapper with scroll events. | [.ai/ai_ref_AbScrollbar.md](./.ai/ai_ref_AbScrollbar.md) |
|
|
@@ -63,6 +68,7 @@
|
|
|
63
68
|
| `AbChatBox` | — | Full chat conversation container (header, message list, empty/typing states) built on `AbChatInput`; every part is slot-overridable. | [.ai/ai_ref_AbChatBox.md](./.ai/ai_ref_AbChatBox.md) |
|
|
64
69
|
| `AbVoiceButton` | — | Standalone Web Speech API voice-to-text mic button (v-model), no composer attached — same engine as `AbChatInput`'s built-in mic. | [.ai/ai_ref_AbVoiceButton.md](./.ai/ai_ref_AbVoiceButton.md) |
|
|
65
70
|
| `AbDarkModeToggler` | — | Light / dark theme toggle (pairs with `useTheme`). | [.ai/ai_ref_AbDarkModeToggler.md](./.ai/ai_ref_AbDarkModeToggler.md) |
|
|
71
|
+
| `EliteGrid` | — | **External** (`@appsbd/vue3-elite-grid` peer dep, not developed in this library) — advanced data grid: sorting, grouping, subrows, card view, column chooser. Prefer `AbTable` unless you need these. | [.ai/ai_ref_EliteGrid.md](./.ai/ai_ref_EliteGrid.md) |
|
|
66
72
|
| `useAlert` | — | Procedural API to trigger SweetAlert-based modal alerts, notifications, and confirmations. | [.ai/ai_ref_useAlert.md](./.ai/ai_ref_useAlert.md) |
|
|
67
73
|
| `abEventBus` / `emitterObj` | — | Lightweight global event bus using `tiny-emitter`. | [.ai/ai_ref_abEventBus.md](./.ai/ai_ref_abEventBus.md) |
|
|
68
74
|
| `useTheme` | — | Composable for light/dark theme toggling with localStorage and system preference sync. | [.ai/ai_ref_useTheme.md](./.ai/ai_ref_useTheme.md) |
|