@appsbd/vue3-appsbd-ui 1.0.10 → 1.0.12

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.
@@ -2,6 +2,8 @@
2
2
 
3
3
  Radio-style color swatch picker. Takes a list of named colors and lets users pick one.
4
4
 
5
+ > Also available inside `AbCustomField` via the `CP` field type — see [.ai/ai_ref_AbCustomField.md](./ai_ref_AbCustomField.md).
6
+
5
7
  ## Usage
6
8
 
7
9
  ```vue
@@ -34,6 +36,8 @@ const themeColor = ref('blue');
34
36
  | `align` | `String` | `"left"` | Flex alignment (`left`, `center`, `right`, …). |
35
37
  | `borderRadius` | `String` | `"50%"` | Swatch border-radius. |
36
38
  | `size` | `String` | `"md"` | Item size (`xs`, `sm`, `md`, `lg`, `xl`, `xxl`). |
39
+ | `label` | `String` | `""` | Optional text label rendered above picker. |
40
+ | `containerClass` | `String` | `undefined` | Additional class for wrapper div. Falls back to globalConfig.inputContainerClass. |
37
41
 
38
42
  ## Events
39
43
 
@@ -26,6 +26,57 @@ const fields = [
26
26
  </script>
27
27
  ```
28
28
 
29
+ ### Radio / checkbox with card, segmented or pill variant
30
+
31
+ `R` (radio) and `C` (checkbox) fields render through `AbFormCheck` internally, so its `variant`, `card_width`, `icon_size` and `icon_gap` options pass straight through:
32
+
33
+ ```vue
34
+ <template>
35
+ <ab-custom-field :field-inputs="fields" :custom-props="form" />
36
+ </template>
37
+
38
+ <script setup>
39
+ import { reactive } from 'vue';
40
+
41
+ const form = reactive({ plan: 'pro', notify: [] });
42
+
43
+ const fields = [
44
+ { id: 'plan', type: 'R', label: 'Plan', variant: 'card', card_width: '160px', options: [
45
+ { val: 'free', title: 'Free' },
46
+ { val: 'pro', title: 'Pro', description: 'For growing teams' },
47
+ ] },
48
+ { id: 'notify', type: 'C', label: 'Notify via', variant: 'segmented', options: [
49
+ { val: 'email', title: 'Email' },
50
+ { val: 'sms', title: 'SMS' },
51
+ ] },
52
+ ];
53
+ </script>
54
+ ```
55
+
56
+ ### Color picker & file uploader fields
57
+
58
+ `CP` renders `AbColorPicker` and `FU` renders `AbFileUploader`. Neither integrates with Vee-Validate (`rules` is ignored for these two types):
59
+
60
+ ```vue
61
+ <template>
62
+ <ab-custom-field :field-inputs="fields" :custom-props="form" />
63
+ </template>
64
+
65
+ <script setup>
66
+ import { reactive } from 'vue';
67
+
68
+ const form = reactive({ theme: '', avatar: null });
69
+
70
+ const fields = [
71
+ { id: 'theme', type: 'CP', label: 'Theme Color', options: [
72
+ { name: 'blue', color: '#0d6efd', title: 'Blue' },
73
+ { name: 'green', color: '#198754', title: 'Green' },
74
+ ] },
75
+ { id: 'avatar', type: 'FU', label: 'Avatar', max_size: 2 },
76
+ ];
77
+ </script>
78
+ ```
79
+
29
80
  ## Props
30
81
 
31
82
  | Name | Type | Default | Description |
@@ -50,6 +101,8 @@ const fields = [
50
101
  | `W` | Dropdown / select |
51
102
  | `S` | Switch / toggle |
52
103
  | `C` | Checkbox |
104
+ | `CP` | Color picker (`AbColorPicker`) |
105
+ | `FU` | File uploader (`AbFileUploader`) |
53
106
 
54
107
  ### Field Properties
55
108
 
@@ -61,6 +114,14 @@ Each object in `fieldInputs` supports several properties. The `rules` property d
61
114
  | `type` | `String` | Component type code (e.g. `T`, `N`). |
62
115
  | `label` | `String` | Field label. |
63
116
  | `rules` | `String` \| `Array` | Standard Vee-Validate rules (e.g., `"required|url"`). Replaces legacy `is_required`. |
117
+ | `options` | `Array` | Choices for `R` (radio), `C` (checkbox) and `W` (dropdown) fields — item shape `{ val, title, description?, disable?, img_src?, icon?, iconComponent? }`. For `CP` (color picker) it's forwarded as `AbColorPicker`'s `colors` prop — item shape `{ name, color, title? }` instead. |
118
+ | `variant` | `String` | **`R`/`C` only.** Forwarded to `AbFormCheck`'s `variant` prop: `"default"` (plain, initial value), `"card"`, `"segmented"`, or `"pill"`. |
119
+ | `card_width` | `String` | **`R`/`C` only, with `variant`.** Forwarded to `AbFormCheck`'s `card-width` prop, e.g. `"160px"`, `"50%"`. Default `"auto"`. |
120
+ | `icon_size` | `String` | **`R`/`C` only, with `variant`.** Forwarded to `AbFormCheck`'s `icon-size` prop. Default `"24px"`. |
121
+ | `icon_gap` | `String` | **`R`/`C` only, with `variant`.** Forwarded to `AbFormCheck`'s `icon-gap` prop. Default `"10px"`. |
122
+ | `align` | `String` | **`CP` only.** Forwarded to `AbColorPicker`'s `align` prop (`"left"`, `"center"`, `"right"`...). Default `"left"`. |
123
+ | `border_radius` | `String` | **`CP` only.** Forwarded to `AbColorPicker`'s `border-radius` prop, e.g. `"50%"`, `"6px"`. Default `"50%"`. |
124
+ | `max_size` | `Number` | **`FU` only.** Forwarded to `AbFileUploader`'s `max-size` prop — max file size in MB. Default `2.0`. |
64
125
 
65
126
  ## Slots (scoped by field id)
66
127
 
@@ -2,6 +2,8 @@
2
2
 
3
3
  File upload input with drag-and-drop, size validation, and preview. Can render a default uploader UI or accept a custom one via slots.
4
4
 
5
+ > Also available inside `AbCustomField` via the `FU` field type — see [.ai/ai_ref_AbCustomField.md](./ai_ref_AbCustomField.md).
6
+
5
7
  ## Usage
6
8
 
7
9
  ```vue
@@ -29,7 +31,7 @@ function handleFiles(files) { console.log('Selected files:', files); }
29
31
  | `modelValue` | `File \| Array \| String` | `null` | Selected file (or URL string / array). |
30
32
  | `maxSize` | `Number` | `2.0` | Max file size in MB. |
31
33
  | `label` | `String` | `""` | Field label. |
32
- | `containerClass` | `String` | `""` | Wrapper class. |
34
+ | `containerClass` | `String` | `undefined` | Wrapper class (falls back to globalConfig.inputContainerClass). |
33
35
 
34
36
  ## Events
35
37
 
@@ -49,6 +49,7 @@ function handleSearch(data) {
49
49
  | `size` | `String` | `"xs"` | Control size. |
50
50
  | `advanceContainerClass` | `String` | `"col-6"` | Grid column class for inputs in advance mode. |
51
51
  | `isQuickAdvanceAutoSearch` | `Boolean` | `false` | Fire search automatically on field change (quick advance). |
52
+ | `defaultFilterId` | `String` \| `Number` | `""` | Pre-selects a default filter property in standard search mode (when `!isSingle && !isAdvance && !isQuickAdvance`). |
52
53
 
53
54
  ## Events
54
55
 
@@ -38,6 +38,7 @@ Checkbox or radio group with card, segmented, and pill visual variants. `AbRadio
38
38
  | `iconSize` | `String` | `"24px"` | Icon size (when option has an icon). |
39
39
  | `iconGap` | `String` | `"10px"` | Gap between icon and label. |
40
40
  | `variant` | `String` | `"default"` | `default`, `card`, `segmented`, `pill`. |
41
+ | `cardWidth` | `String` | `"auto"` | Width of card options (e.g. `"160px"`, `"50%"`, `"12rem"`). |
41
42
 
42
43
  ## Events
43
44
 
@@ -28,4 +28,4 @@ function handleFileUpload(event) {
28
28
  | Method | Signature | Description |
29
29
  |---|---|---|
30
30
  | `getFileInfo(file, sizeLimitMb)` | `Function` | Validates a `File` object against allowed MIME types and max size (`sizeLimitMb`, default `1.0`). If invalid, spawns a toast error and returns `null`. If valid, returns the `file` augmented with `isImage` and `fileIcon` properties. |
31
- | `getFileIconByExt(ext, type)` | `Function` | Returns `{ isImage: boolean, fileIcon: Component\|String }` based on file extension and MIME type. Uses `lucide-vue-next` icons for known formats (pdf, zip, doc, xls, ppt, mp4). |
31
+ | `getFileIconByExt(ext, type)` | `Function` | Returns `{ isImage: boolean, fileIcon: Component\|String }` based on file extension and MIME type. Uses `@lucide/vue` icons for known formats (pdf, zip, doc, xls, ppt, mp4). |
package/AI_REFERENCE.md CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
  > Always read `.ai/ai_ref_[Name].md` for full props/events/slots before generating code for a component. Prefer `Ab*` components over external libraries.
4
4
 
5
- **Peer deps**: `vue`, `bootstrap`, `bootstrap-icons`, `vee-validate`, `@vee-validate/rules`, `vue-router`, `vue-toastification`, `vue3-gettext`, `lucide-vue-next`, `darkmode-js`, `tiny-emitter`, `@appsbd/vue3-elite-grid`
5
+ **Peer deps**: `vue`, `bootstrap`, `bootstrap-icons`, `vee-validate`, `@vee-validate/rules`, `vue-router`, `vue-toastification`, `vue3-gettext`, `@lucide/vue`, `darkmode-js`, `tiny-emitter`, `@appsbd/vue3-elite-grid`
6
+
7
+ **Version history**: see [CHANGELOG.md](./CHANGELOG.md) for release-by-release notes.
6
8
 
7
9
  ## Components & APIs
8
10
 
package/CHANGELOG.md ADDED
@@ -0,0 +1,73 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@appsbd/vue3-appsbd-ui` are documented here. Format loosely follows [Keep a Changelog](https://keepachangelog.com/).
4
+
5
+ ## [Unreleased] (1.0.11)
6
+
7
+ - **Changed**: Migrated the icon peer dependency from `lucide-vue-next` to `@lucide/vue` (`>=1.28.0`).
8
+ - **Added**: `/migrate-lucide-icons` command, shipped to consuming projects, to automate the `lucide-vue-next` → `@lucide/vue` import rename.
9
+ - **Added**: `AbFilterPanel` multi-variant support and documentation.
10
+
11
+ ## [1.0.10] - 2026-07-20
12
+
13
+ - **Added**: `AbInputField` component with interactive playground documentation.
14
+
15
+ ## [1.0.9] - 2026-07-19
16
+
17
+ - **Added**: `AbSideMenuItem` component.
18
+ - **Added**: `AbButton` and `AbPopover` components with playground test cases.
19
+ - **Added**: `AbSidebar` component with multiple CSS color skin themes.
20
+ - **Added**: Universal `AbField` component supporting multiple input types, sidebars, and custom themes.
21
+ - **Added**: RTL support for `AbMainLayout` and `AbSidebar`.
22
+ - **Docs**: AI reference documentation for form components.
23
+
24
+ ## [1.0.8] - 2026-06-28
25
+
26
+ - **Added**: `AbFilterPanel`, `AbInputField`, and `AbCustomField` components with documentation and styling.
27
+
28
+ ## [1.0.7] - 2026-05-18
29
+
30
+ - **Fixed**: Gradient colors for all theme skins, default loader for the global loader option, response message updates, main layout padding-bottom issue.
31
+ - **Chore**: Tracked `package-lock.json` for Vercel CI compatibility.
32
+
33
+ ## [1.0.6] - 2026-05-17
34
+
35
+ - **Added**: `AbBaseAlert`, `AbConfirmPopover`, and `AbFileUploader` components.
36
+ - **Added**: `AbModal` component with playground documentation.
37
+ - **Added**: `AbMainLayout` component with sidebar support.
38
+ - **Added**: `AbSettingsForm` form-wrapper component.
39
+ - **Added**: `abVeeRules` localized VeeValidate rule library.
40
+ - **Added**: Themeable CSS skins.
41
+ - **CI**: GitHub Actions workflow for automated npm publishing.
42
+
43
+ ## [1.0.5] - 2026-05-17
44
+
45
+ - **Added**: `AbToggle`, `AbResponseMsg`, `AbCard`, and `AbButton` components with full documentation.
46
+ - **Added**: Theme-based CSS skin system.
47
+ - **CI**: CI/CD configuration for the playground.
48
+
49
+ ## [1.0.4] - 2026-05-12
50
+
51
+ - **Added**: Comprehensive AI documentation reference files for all UI components and internal utilities.
52
+ - **Added**: `AbCard` and `AbChart` components.
53
+ - **Added**: Global configuration documentation and test page.
54
+ - **Docs**: Migration guide for legacy Admin Panel components.
55
+
56
+ ## [1.0.3] - 2026-05-03
57
+
58
+ - **Added**: Library modules exported via `index.js`.
59
+ - **Docs**: Comprehensive AI documentation for components and composables.
60
+
61
+ ## [1.0.1] - 2026-04-30
62
+
63
+ - **Added**: Core component set — `AbDarkModeToggler`, `AbMultiSelect`, `AbInputTag`, `AbField`, `AbFilterPanel`, `AbSidebar`, `AbPricingCard`, `AbModal`, `AbNumberField`, `AbInputField`, `AbTabs`, `AbWizard`, `AbConfirmPopover`, `AbScrollbar`, `AbToast`, `AbDateTimePicker`, `AbColorPicker`, `AbProgressbar`.
64
+ - **Added**: Modular multi-theme skin system (10 color themes) with runtime switching and dark mode support.
65
+ - **Added**: RTL layout support.
66
+ - **Docs**: `AI_REFERENCE.md` and per-component `.ai/ai_ref_*.md` reference files.
67
+ - **Docs**: Playground documentation site with live examples for every component.
68
+
69
+ > `1.0.2` was never published.
70
+
71
+ ## [1.0.0] - 2026-02-16
72
+
73
+ - Initial project setup and foundational component library scaffolding.
package/design-system.md CHANGED
@@ -265,7 +265,7 @@ Flat by default. Shadows are reserved for cards, dropdowns, popovers, and elevat
265
265
 
266
266
  ## 7. Iconography
267
267
 
268
- **Library: [Lucide Icons](https://lucide.dev/)** — installed as the `lucide-vue-next` peer dependency. Bootstrap Icons is also a peer dep and may be used for a few legacy components.
268
+ **Library: [Lucide Icons](https://lucide.dev/)** — installed as the `@lucide/vue` peer dependency. Bootstrap Icons is also a peer dep and may be used for a few legacy components.
269
269
 
270
270
  ### Sizing
271
271