@awes-io/ui 2.142.3 → 2.143.0
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/CHANGELOG.md +24 -0
- package/assets/css/components/_index.css +7 -1
- package/assets/css/components/animation.css +38 -32
- package/assets/css/components/content-placeholder.css +103 -0
- package/assets/css/components/empty-container.css +69 -1
- package/assets/css/components/filter-chosen.css +6 -0
- package/assets/css/components/filter-date-range.css +17 -1
- package/assets/css/components/filter-month.css +23 -17
- package/assets/css/components/filter-select.css +11 -0
- package/assets/css/components/layout.css +1 -32
- package/assets/css/components/modal.css +1 -1
- package/assets/css/components/number.css +12 -0
- package/assets/css/components/page-aside.css +54 -0
- package/assets/js/css.js +1 -1
- package/assets/js/icons/mono.js +59 -91
- package/assets/js/icons/multicolor.js +1 -31
- package/components/1_atoms/AwContentPlaceholder.vue +60 -0
- package/components/1_atoms/AwFlow.vue +21 -48
- package/components/1_atoms/AwLabel.vue +1 -1
- package/components/2_molecules/AwButton.vue +1 -1
- package/components/2_molecules/AwEmptyContainer.vue +74 -72
- package/components/2_molecules/AwNumber.vue +180 -0
- package/components/2_molecules/AwSelect.vue +11 -4
- package/components/3_organisms/AwFilterChosen.vue +73 -0
- package/components/3_organisms/AwFilterDateRange.vue +177 -0
- package/components/3_organisms/AwFilterMonth.vue +37 -40
- package/components/3_organisms/AwFilterSelect.vue +368 -0
- package/components/3_organisms/AwMultiBlockBuilder.vue +1 -1
- package/components/3_organisms/AwTable/AwTableBuilder.vue +12 -60
- package/components/4_pages/AwPageAside.vue +108 -0
- package/components/5_layouts/AwLayoutCenter.vue +3 -8
- package/components/5_layouts/_AwUserMenu.vue +1 -1
- package/dist/css/aw-icons.css +26 -0
- package/dist/fonts/aw-icons.svg +18 -0
- package/dist/fonts/aw-icons.ttf +0 -0
- package/dist/fonts/aw-icons.woff +0 -0
- package/dist/fonts/aw-icons.woff2 +0 -0
- package/docs/_template.md +80 -0
- package/docs/components/atoms/aw-accordion-fold.md +91 -0
- package/docs/components/atoms/aw-action-card-body.md +67 -0
- package/docs/components/atoms/aw-action-card.md +94 -0
- package/docs/components/atoms/aw-action-icon.md +88 -0
- package/docs/components/atoms/aw-avatar.md +106 -0
- package/docs/components/atoms/aw-card.md +112 -0
- package/docs/components/atoms/aw-checkbox.md +112 -0
- package/docs/components/atoms/aw-content-placeholder.md +116 -0
- package/docs/components/atoms/aw-description.md +83 -0
- package/docs/components/atoms/aw-dock.md +84 -0
- package/docs/components/atoms/aw-dropdown-button.md +94 -0
- package/docs/components/atoms/aw-dropdown.md +128 -0
- package/docs/components/atoms/aw-file.md +73 -0
- package/docs/components/atoms/aw-flow.md +92 -0
- package/docs/components/atoms/aw-grid.md +91 -0
- package/docs/components/atoms/aw-headline.md +71 -0
- package/docs/components/atoms/aw-icon-system-color.md +121 -0
- package/docs/components/atoms/aw-icon-system-mono.md +205 -0
- package/docs/components/atoms/aw-icon.md +235 -0
- package/docs/components/atoms/aw-info.md +85 -0
- package/docs/components/atoms/aw-input.md +120 -0
- package/docs/components/atoms/aw-label.md +83 -0
- package/docs/components/atoms/aw-link.md +99 -0
- package/docs/components/atoms/aw-list.md +88 -0
- package/docs/components/atoms/aw-progress.md +70 -0
- package/docs/components/atoms/aw-radio.md +109 -0
- package/docs/components/atoms/aw-refresh-wrapper.md +81 -0
- package/docs/components/atoms/aw-select-native.md +106 -0
- package/docs/components/atoms/aw-slider.md +82 -0
- package/docs/components/atoms/aw-sub-headline.md +73 -0
- package/docs/components/atoms/aw-switcher.md +115 -0
- package/docs/components/atoms/aw-tag.md +80 -0
- package/docs/components/atoms/aw-title.md +70 -0
- package/docs/components/atoms/aw-toggler.md +69 -0
- package/docs/components/layouts/aw-layout-center.md +168 -0
- package/docs/components/layouts/aw-layout-error.md +153 -0
- package/docs/components/layouts/aw-layout-provider.md +238 -0
- package/docs/components/layouts/aw-layout.md +88 -0
- package/docs/components/molecules/aw-action-button.md +91 -0
- package/docs/components/molecules/aw-alert.md +96 -0
- package/docs/components/molecules/aw-badge.md +108 -0
- package/docs/components/molecules/aw-banner-text.md +90 -0
- package/docs/components/molecules/aw-button-nav.md +46 -0
- package/docs/components/molecules/aw-button.md +123 -0
- package/docs/components/molecules/aw-description-input.md +67 -0
- package/docs/components/molecules/aw-empty-container.md +86 -0
- package/docs/components/molecules/aw-island.md +234 -0
- package/docs/components/molecules/aw-number.md +138 -0
- package/docs/components/molecules/aw-select-object.md +401 -0
- package/docs/components/molecules/aw-select.md +215 -0
- package/docs/components/molecules/aw-tab-nav.md +108 -0
- package/docs/components/molecules/aw-tel.md +129 -0
- package/docs/components/molecules/aw-textarea.md +83 -0
- package/docs/components/molecules/aw-userpic.md +115 -0
- package/docs/components/organisms/aw-address-block.md +64 -0
- package/docs/components/organisms/aw-address.md +132 -0
- package/docs/components/organisms/aw-birthday-picker.md +73 -0
- package/docs/components/organisms/aw-bottom-bar.md +66 -0
- package/docs/components/organisms/aw-calendar-days.md +115 -0
- package/docs/components/organisms/aw-calendar-nav.md +98 -0
- package/docs/components/organisms/aw-calendar-view.md +98 -0
- package/docs/components/organisms/aw-calendar.md +166 -0
- package/docs/components/organisms/aw-chart.md +154 -0
- package/docs/components/organisms/aw-chip-select.md +164 -0
- package/docs/components/organisms/aw-chip.md +126 -0
- package/docs/components/organisms/aw-code-snippet.md +94 -0
- package/docs/components/organisms/aw-code.md +132 -0
- package/docs/components/organisms/aw-context-menu.md +117 -0
- package/docs/components/organisms/aw-cropper.md +151 -0
- package/docs/components/organisms/aw-date.md +161 -0
- package/docs/components/organisms/aw-display-date.md +33 -0
- package/docs/components/organisms/aw-download-link.md +46 -0
- package/docs/components/organisms/aw-fetch-data.md +161 -0
- package/docs/components/organisms/aw-filter-chosen.md +226 -0
- package/docs/components/organisms/aw-filter-date-range.md +205 -0
- package/docs/components/organisms/aw-filter-month.md +43 -0
- package/docs/components/organisms/aw-filter-select.md +225 -0
- package/docs/components/organisms/aw-form.md +174 -0
- package/docs/components/organisms/aw-gmap-marker.md +86 -0
- package/docs/components/organisms/aw-gmap.md +90 -0
- package/docs/components/organisms/aw-image-upload.md +56 -0
- package/docs/components/organisms/aw-island-avatar.md +87 -0
- package/docs/components/organisms/aw-markdown-editor.md +104 -0
- package/docs/components/organisms/aw-modal-buttons.md +57 -0
- package/docs/components/organisms/aw-modal.md +246 -0
- package/docs/components/organisms/aw-model-edit.md +74 -0
- package/docs/components/organisms/aw-money.md +53 -0
- package/docs/components/organisms/aw-multi-block-builder.md +165 -0
- package/docs/components/organisms/aw-pagination.md +121 -0
- package/docs/components/organisms/aw-password.md +103 -0
- package/docs/components/organisms/aw-preview-card.md +45 -0
- package/docs/components/organisms/aw-search.md +116 -0
- package/docs/components/organisms/aw-subnav.md +122 -0
- package/docs/components/organisms/aw-table-builder.md +165 -0
- package/docs/components/organisms/aw-table-col.md +123 -0
- package/docs/components/organisms/aw-table-head.md +92 -0
- package/docs/components/organisms/aw-table-row.md +91 -0
- package/docs/components/organisms/aw-table.md +172 -0
- package/docs/components/organisms/aw-tags.md +54 -0
- package/docs/components/organisms/aw-toggle-show-aside.md +43 -0
- package/docs/components/organisms/aw-uploader-files.md +125 -0
- package/docs/components/organisms/aw-uploader.md +163 -0
- package/docs/components/organisms/aw-user-menu.md +87 -0
- package/docs/components/pages/aw-page-aside.md +296 -0
- package/docs/components/pages/aw-page-menu-buttons.md +172 -0
- package/docs/components/pages/aw-page-modal.md +198 -0
- package/docs/components/pages/aw-page-single.md +253 -0
- package/docs/components/pages/aw-page.md +194 -0
- package/docs/configuration.md +493 -0
- package/docs/cookbook/advanced-patterns.md +1388 -0
- package/docs/cookbook/common-patterns.md +965 -0
- package/docs/cookbook/index.md +786 -0
- package/docs/getting-started.md +596 -0
- package/docs/guides/best-practices.md +1106 -0
- package/docs/guides/data-fetching.md +852 -0
- package/docs/guides/error-handling.md +1172 -0
- package/docs/guides/forms-guide.md +1329 -0
- package/docs/guides/mobile-subnavigation.md +359 -0
- package/docs/guides/page-patterns/aside-pages.md +1418 -0
- package/docs/guides/page-patterns/dashboard-pages.md +990 -0
- package/docs/guides/page-patterns/detail-pages.md +1493 -0
- package/docs/guides/page-patterns/list-pages.md +1094 -0
- package/docs/index.md +263 -1
- package/docs/integrations.md +870 -0
- package/docs/reference/menu.md +462 -0
- package/docs/reference/plugins.md +970 -0
- package/docs/reference/troubleshooting.md +945 -0
- package/nuxt/awes.config.js +9 -8
- package/nuxt/icons.css +26 -0
- package/nuxt/index.js +2 -2
- package/nuxt/pages/more.vue +1 -1
- package/package.json +5 -3
- package/readme.md +171 -1
- package/docs/aw-accordion-fold.md +0 -46
- package/docs/aw-address.md +0 -44
- package/docs/aw-avatar.md +0 -51
- package/docs/aw-badge.md +0 -32
- package/docs/aw-button-nav.md +0 -44
- package/docs/aw-button.md +0 -50
- package/docs/aw-calendar-days.md +0 -46
- package/docs/aw-calendar-nav.md +0 -25
- package/docs/aw-calendar-view.md +0 -12
- package/docs/aw-calendar.md +0 -59
- package/docs/aw-card.md +0 -48
- package/docs/aw-chart.md +0 -51
- package/docs/aw-checkbox.md +0 -56
- package/docs/aw-chip-select.md +0 -46
- package/docs/aw-chip.md +0 -53
- package/docs/aw-code-snippet.md +0 -18
- package/docs/aw-code.md +0 -56
- package/docs/aw-content-wrapper.md +0 -40
- package/docs/aw-context-menu.md +0 -31
- package/docs/aw-cropper.md +0 -60
- package/docs/aw-dashboard-card.md +0 -37
- package/docs/aw-dashboard-donut.md +0 -30
- package/docs/aw-dashboard-line.md +0 -20
- package/docs/aw-dashboard-progress.md +0 -33
- package/docs/aw-dashboard-section.md +0 -32
- package/docs/aw-dashboard-speed.md +0 -30
- package/docs/aw-date.md +0 -52
- package/docs/aw-dropdown-button.md +0 -31
- package/docs/aw-dropdown.md +0 -69
- package/docs/aw-fetch-data.md +0 -45
- package/docs/aw-form.md +0 -52
- package/docs/aw-grid.md +0 -48
- package/docs/aw-icon.md +0 -50
- package/docs/aw-info.md +0 -53
- package/docs/aw-input.md +0 -55
- package/docs/aw-layout-default.md +0 -30
- package/docs/aw-layout-frame-center.md +0 -29
- package/docs/aw-layout-simple.md +0 -49
- package/docs/aw-link.md +0 -54
- package/docs/aw-markdown-editor.md +0 -51
- package/docs/aw-modal.md +0 -63
- package/docs/aw-multi-block-builder.md +0 -66
- package/docs/aw-page.md +0 -36
- package/docs/aw-pagination.md +0 -54
- package/docs/aw-password.md +0 -48
- package/docs/aw-radio.md +0 -54
- package/docs/aw-search.md +0 -49
- package/docs/aw-select.md +0 -93
- package/docs/aw-slider.md +0 -40
- package/docs/aw-svg-image.md +0 -19
- package/docs/aw-switcher.md +0 -51
- package/docs/aw-tab-nav.md +0 -55
- package/docs/aw-table-builder.md +0 -58
- package/docs/aw-table-col.md +0 -33
- package/docs/aw-table-head.md +0 -28
- package/docs/aw-table-row.md +0 -33
- package/docs/aw-table.md +0 -59
- package/docs/aw-tel.md +0 -47
- package/docs/aw-textarea.md +0 -47
- package/docs/aw-toggler.md +0 -41
- package/docs/aw-uploader-files.md +0 -20
- package/docs/aw-uploader.md +0 -60
- package/docs/aw-user-menu.md +0 -34
- package/docs/aw-userpic.md +0 -34
- /package/components/{3_organisms → 2_molecules}/AwTel.vue +0 -0
|
@@ -0,0 +1,596 @@
|
|
|
1
|
+
---
|
|
2
|
+
metaTitle: Getting Started | AwesCode UI
|
|
3
|
+
meta:
|
|
4
|
+
- name: description
|
|
5
|
+
content: Quick start guide for AwesCode UI component library - installation, setup, and basic usage.
|
|
6
|
+
title: Getting Started
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Getting Started
|
|
10
|
+
|
|
11
|
+
Get up and running with AwesCode UI component library in minutes.
|
|
12
|
+
|
|
13
|
+
## Framework Overview
|
|
14
|
+
|
|
15
|
+
The AwesCode UI framework consists of 4 integrated packages:
|
|
16
|
+
|
|
17
|
+
1. **@awes-io/ui** - UI component library (this package)
|
|
18
|
+
2. **@awes-io/nuxt-laravel** - Laravel backend integration
|
|
19
|
+
3. **@awes-io/nuxt-auth** - Authentication with JWT and 2FA
|
|
20
|
+
4. **vue-mc** - Model and collection layer for API data
|
|
21
|
+
|
|
22
|
+
For complete integration guide, see [Framework Integration](./integrations.md).
|
|
23
|
+
|
|
24
|
+
## Installation
|
|
25
|
+
|
|
26
|
+
Install the packages via npm or yarn:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# UI components (required)
|
|
30
|
+
npm install @awes-io/ui
|
|
31
|
+
|
|
32
|
+
# Laravel integration (recommended)
|
|
33
|
+
npm install @awes-io/nuxt-laravel
|
|
34
|
+
|
|
35
|
+
# Authentication (recommended)
|
|
36
|
+
npm install @awes-io/nuxt-auth
|
|
37
|
+
|
|
38
|
+
# or install all at once
|
|
39
|
+
npm install @awes-io/ui @awes-io/nuxt-laravel @awes-io/nuxt-auth
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Setup
|
|
43
|
+
|
|
44
|
+
### Nuxt.js Setup
|
|
45
|
+
|
|
46
|
+
Add the modules to your `nuxt.config.js`:
|
|
47
|
+
|
|
48
|
+
```javascript
|
|
49
|
+
export default {
|
|
50
|
+
modules: [
|
|
51
|
+
'@awes-io/nuxt-laravel', // 1. Laravel integration
|
|
52
|
+
'@awes-io/nuxt-auth', // 2. Authentication
|
|
53
|
+
'@awes-io/ui' // 3. UI components
|
|
54
|
+
],
|
|
55
|
+
|
|
56
|
+
// Required: Enable components auto-import
|
|
57
|
+
components: true,
|
|
58
|
+
|
|
59
|
+
// Required: Enable Vuex store
|
|
60
|
+
store: true,
|
|
61
|
+
|
|
62
|
+
// Environment variables
|
|
63
|
+
env: {
|
|
64
|
+
LARAVEL_URL: process.env.LARAVEL_URL || 'http://localhost:8000'
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Configuration
|
|
70
|
+
|
|
71
|
+
The framework supports two types of configuration:
|
|
72
|
+
|
|
73
|
+
1. **Static Configuration** (`awes.config.js`) - For logos, colors, fonts, and i18n settings
|
|
74
|
+
2. **Dynamic Component Configuration** (Plugin) - For component defaults that may change at runtime
|
|
75
|
+
|
|
76
|
+
#### Quick Setup
|
|
77
|
+
|
|
78
|
+
Create `awes.config.js` in your project root:
|
|
79
|
+
|
|
80
|
+
```javascript
|
|
81
|
+
export default {
|
|
82
|
+
logo: {
|
|
83
|
+
src: '/logo.svg',
|
|
84
|
+
alt: 'My App'
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export const dark = {
|
|
89
|
+
logo: {
|
|
90
|
+
src: '/logo-dark.svg'
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Optional: Configure i18n if you need to customize language settings
|
|
95
|
+
// Defaults are: locale: 'en', locales: ['en']
|
|
96
|
+
export const lang = {
|
|
97
|
+
locales: ['en', 'es', 'fr'],
|
|
98
|
+
locale: 'en'
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Create `plugins/components.js` for dynamic component configuration:
|
|
103
|
+
|
|
104
|
+
```javascript
|
|
105
|
+
import Vue from 'vue'
|
|
106
|
+
import { CONFIG_VAR } from '@AwUtils/component'
|
|
107
|
+
|
|
108
|
+
export default async ({ app }) => {
|
|
109
|
+
Vue.prototype[CONFIG_VAR] = Vue.prototype[CONFIG_VAR] || {}
|
|
110
|
+
|
|
111
|
+
// Configure component defaults
|
|
112
|
+
Vue.prototype[CONFIG_VAR].AwButton = {
|
|
113
|
+
size: 'md',
|
|
114
|
+
color: 'accent',
|
|
115
|
+
theme: 'solid'
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Register the plugin in `nuxt.config.js`:
|
|
121
|
+
|
|
122
|
+
```javascript
|
|
123
|
+
export default {
|
|
124
|
+
plugins: ['~/plugins/components.js']
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
For complete configuration options, see the [Configuration Guide](./configuration.md).
|
|
129
|
+
|
|
130
|
+
## Component System
|
|
131
|
+
|
|
132
|
+
Components are organized into 5 categories following atomic design:
|
|
133
|
+
|
|
134
|
+
### 1. Atoms (Global)
|
|
135
|
+
|
|
136
|
+
Basic building blocks automatically available everywhere:
|
|
137
|
+
|
|
138
|
+
```markup
|
|
139
|
+
<template>
|
|
140
|
+
<div>
|
|
141
|
+
<AwButton>Click me</AwButton>
|
|
142
|
+
<AwInput v-model="name" label="Name" />
|
|
143
|
+
<AwCheckbox v-model="agreed">I agree</AwCheckbox>
|
|
144
|
+
</div>
|
|
145
|
+
</template>
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 2. Molecules (Global)
|
|
149
|
+
|
|
150
|
+
Combinations of atoms, mostly global:
|
|
151
|
+
|
|
152
|
+
```markup
|
|
153
|
+
<template>
|
|
154
|
+
<div>
|
|
155
|
+
<AwSelect v-model="country" :options="countries" label="Country" />
|
|
156
|
+
<AwTextarea v-model="bio" label="Bio" rows="4" />
|
|
157
|
+
<AwAlert>This is an alert message</AwAlert>
|
|
158
|
+
</div>
|
|
159
|
+
</template>
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### 3. Organisms (Dynamic)
|
|
163
|
+
|
|
164
|
+
Complex components, dynamically imported:
|
|
165
|
+
|
|
166
|
+
```markup
|
|
167
|
+
<template>
|
|
168
|
+
<div>
|
|
169
|
+
<AwForm url="/api/submit" @sended="onSuccess">
|
|
170
|
+
<AwInput name="title" label="Title" />
|
|
171
|
+
<AwButton type="submit">Submit</AwButton>
|
|
172
|
+
</AwForm>
|
|
173
|
+
|
|
174
|
+
<AwModal :show="showModal" @close="showModal = false">
|
|
175
|
+
<template #title>Modal Title</template>
|
|
176
|
+
<p>Modal content</p>
|
|
177
|
+
</AwModal>
|
|
178
|
+
|
|
179
|
+
<AwTable :data="items" :columns="columns" />
|
|
180
|
+
</div>
|
|
181
|
+
</template>
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### 4. Pages (Dynamic)
|
|
185
|
+
|
|
186
|
+
Top-level page components:
|
|
187
|
+
|
|
188
|
+
```markup
|
|
189
|
+
<template>
|
|
190
|
+
<AwPage title="My Page">
|
|
191
|
+
<AwCard>
|
|
192
|
+
<p>Page content</p>
|
|
193
|
+
</AwCard>
|
|
194
|
+
</AwPage>
|
|
195
|
+
</template>
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### 5. Layouts (Dynamic)
|
|
199
|
+
|
|
200
|
+
Root-level layout components:
|
|
201
|
+
|
|
202
|
+
```markup
|
|
203
|
+
<template>
|
|
204
|
+
<AwLayout>
|
|
205
|
+
<AwPage title="Dashboard">
|
|
206
|
+
<!-- content -->
|
|
207
|
+
</AwPage>
|
|
208
|
+
</AwLayout>
|
|
209
|
+
</template>
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## Your First Page
|
|
213
|
+
|
|
214
|
+
### 1. Create a Menu Plugin
|
|
215
|
+
|
|
216
|
+
Create `plugins/menu.js` to configure navigation menus:
|
|
217
|
+
|
|
218
|
+
```javascript
|
|
219
|
+
export default function({ store }) {
|
|
220
|
+
store.commit('awesIo/SET_MENU_ITEMS', {
|
|
221
|
+
main: [
|
|
222
|
+
{ text: 'Dashboard', href: '/', icon: 'dashboard' },
|
|
223
|
+
{ text: 'Users', href: '/users', icon: 'users' },
|
|
224
|
+
{ text: 'Settings', href: '/settings', icon: 'settings' }
|
|
225
|
+
],
|
|
226
|
+
user: [
|
|
227
|
+
{ text: 'Profile', href: '/profile', icon: 'user' },
|
|
228
|
+
{ text: 'Settings', href: '/settings', icon: 'cogs' },
|
|
229
|
+
{ text: 'Logout', href: '/logout', icon: 'logout' }
|
|
230
|
+
]
|
|
231
|
+
})
|
|
232
|
+
}
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
Register the plugin in `nuxt.config.js`:
|
|
236
|
+
|
|
237
|
+
```javascript
|
|
238
|
+
export default {
|
|
239
|
+
plugins: [
|
|
240
|
+
'~/plugins/menu.js'
|
|
241
|
+
]
|
|
242
|
+
}
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### 2. Create a Layout
|
|
246
|
+
|
|
247
|
+
```markup
|
|
248
|
+
<!-- layouts/default.vue -->
|
|
249
|
+
<template>
|
|
250
|
+
<AwLayout>
|
|
251
|
+
<nuxt />
|
|
252
|
+
</AwLayout>
|
|
253
|
+
</template>
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### 3. Create a Page
|
|
257
|
+
|
|
258
|
+
```markup
|
|
259
|
+
<!-- pages/index.vue -->
|
|
260
|
+
<template>
|
|
261
|
+
<AwPage title="Dashboard">
|
|
262
|
+
<template #buttons>
|
|
263
|
+
<AwButton href="/create" icon="plus">
|
|
264
|
+
Create New
|
|
265
|
+
</AwButton>
|
|
266
|
+
</template>
|
|
267
|
+
|
|
268
|
+
<AwGrid :cols="{ default: 1, md: 2, lg: 3 }" :gap="4">
|
|
269
|
+
<AwCard title="Total Users">
|
|
270
|
+
<div class="text-4xl font-bold">1,234</div>
|
|
271
|
+
<AwDescription>Active users</AwDescription>
|
|
272
|
+
</AwCard>
|
|
273
|
+
|
|
274
|
+
<AwCard title="Revenue">
|
|
275
|
+
<div class="text-4xl font-bold">$45,678</div>
|
|
276
|
+
<AwDescription>This month</AwDescription>
|
|
277
|
+
</AwCard>
|
|
278
|
+
|
|
279
|
+
<AwCard title="Growth">
|
|
280
|
+
<div class="text-4xl font-bold">+23%</div>
|
|
281
|
+
<AwDescription>Compared to last month</AwDescription>
|
|
282
|
+
</AwCard>
|
|
283
|
+
</AwGrid>
|
|
284
|
+
</AwPage>
|
|
285
|
+
</template>
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### 4. Create a Form Page
|
|
289
|
+
|
|
290
|
+
```markup
|
|
291
|
+
<!-- pages/users/create.vue -->
|
|
292
|
+
<template>
|
|
293
|
+
<AwPage title="Create User">
|
|
294
|
+
<AwCard>
|
|
295
|
+
<AwForm url="/api/users" method="post" @sended="onUserCreated">
|
|
296
|
+
<AwGrid :cols="2" :gap="4">
|
|
297
|
+
<AwInput name="first_name" label="First Name" required />
|
|
298
|
+
<AwInput name="last_name" label="Last Name" required />
|
|
299
|
+
</AwGrid>
|
|
300
|
+
|
|
301
|
+
<AwInput name="email" label="Email" type="email" required />
|
|
302
|
+
|
|
303
|
+
<AwSelect
|
|
304
|
+
name="role"
|
|
305
|
+
label="Role"
|
|
306
|
+
:options="['Admin', 'Editor', 'User']"
|
|
307
|
+
required
|
|
308
|
+
/>
|
|
309
|
+
|
|
310
|
+
<AwPassword name="password" label="Password" required minlength="8" />
|
|
311
|
+
|
|
312
|
+
<AwFlow justify="end" :gap="2">
|
|
313
|
+
<AwButton href="/users" color="mono">Cancel</AwButton>
|
|
314
|
+
<AwButton type="submit">Create User</AwButton>
|
|
315
|
+
</AwFlow>
|
|
316
|
+
</AwForm>
|
|
317
|
+
</AwCard>
|
|
318
|
+
</AwPage>
|
|
319
|
+
</template>
|
|
320
|
+
|
|
321
|
+
<script>
|
|
322
|
+
export default {
|
|
323
|
+
methods: {
|
|
324
|
+
onUserCreated(response) {
|
|
325
|
+
this.$notify({ title: 'User created successfully!' })
|
|
326
|
+
this.$router.push('/users')
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
</script>
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
## Common Patterns
|
|
334
|
+
|
|
335
|
+
### Using Forms
|
|
336
|
+
|
|
337
|
+
```markup
|
|
338
|
+
<AwForm url="/api/endpoint" method="post" @sended="onSuccess" @error="onError">
|
|
339
|
+
<AwInput name="field" label="Label" required />
|
|
340
|
+
<AwButton type="submit">Submit</AwButton>
|
|
341
|
+
</AwForm>
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### Data Tables
|
|
345
|
+
|
|
346
|
+
```markup
|
|
347
|
+
<AwTableBuilder
|
|
348
|
+
url="/api/users"
|
|
349
|
+
:columns="[
|
|
350
|
+
{ name: 'name', label: 'Name', sortable: true },
|
|
351
|
+
{ name: 'email', label: 'Email', sortable: true },
|
|
352
|
+
{ name: 'role', label: 'Role' }
|
|
353
|
+
]"
|
|
354
|
+
/>
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
### Modals
|
|
358
|
+
|
|
359
|
+
```markup
|
|
360
|
+
<template>
|
|
361
|
+
<div>
|
|
362
|
+
<AwButton @click="showModal = true">Open Modal</AwButton>
|
|
363
|
+
|
|
364
|
+
<AwModal :show="showModal" @close="showModal = false">
|
|
365
|
+
<template #title>Modal Title</template>
|
|
366
|
+
<p>Modal content</p>
|
|
367
|
+
<template #buttons>
|
|
368
|
+
<AwButton @click="showModal = false">Close</AwButton>
|
|
369
|
+
</template>
|
|
370
|
+
</AwModal>
|
|
371
|
+
</div>
|
|
372
|
+
</template>
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### Notifications
|
|
376
|
+
|
|
377
|
+
```markup
|
|
378
|
+
<script>
|
|
379
|
+
export default {
|
|
380
|
+
methods: {
|
|
381
|
+
showNotification() {
|
|
382
|
+
this.$notify({
|
|
383
|
+
message: 'Operation completed successfully!',
|
|
384
|
+
type: 'success'
|
|
385
|
+
})
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
</script>
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
## Navigation Setup
|
|
393
|
+
|
|
394
|
+
Set up your app navigation using a menu plugin (`plugins/menu.js`):
|
|
395
|
+
|
|
396
|
+
```javascript
|
|
397
|
+
export default function({ store }) {
|
|
398
|
+
// Main navigation menu
|
|
399
|
+
store.commit('awesIo/SET_MENU_ITEMS', {
|
|
400
|
+
main: [
|
|
401
|
+
{
|
|
402
|
+
text: 'Dashboard',
|
|
403
|
+
href: '/',
|
|
404
|
+
icon: 'dashboard'
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
text: 'Users',
|
|
408
|
+
icon: 'users',
|
|
409
|
+
key: 'users',
|
|
410
|
+
href: '/users',
|
|
411
|
+
children: [
|
|
412
|
+
{ text: 'All Users', href: '/users' },
|
|
413
|
+
{ text: 'Add User', href: '/users/create' },
|
|
414
|
+
{ text: 'Roles', href: '/roles' }
|
|
415
|
+
]
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
text: 'Products',
|
|
419
|
+
href: '/products',
|
|
420
|
+
icon: 'box',
|
|
421
|
+
badge: 5
|
|
422
|
+
}
|
|
423
|
+
],
|
|
424
|
+
user: [
|
|
425
|
+
{ text: 'Profile', href: '/profile', icon: 'user' },
|
|
426
|
+
{ text: 'Settings', href: '/settings', icon: 'settings' },
|
|
427
|
+
{ text: 'Logout', href: '/logout', icon: 'logout' }
|
|
428
|
+
]
|
|
429
|
+
})
|
|
430
|
+
}
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
Register the plugin in `nuxt.config.js`:
|
|
434
|
+
|
|
435
|
+
```javascript
|
|
436
|
+
export default {
|
|
437
|
+
plugins: [
|
|
438
|
+
'~/plugins/menu.js'
|
|
439
|
+
]
|
|
440
|
+
}
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
**For sections with submenu items:** See [Mobile Subnavigation Pattern](./guides/mobile-subnavigation.md) to create mobile navigation hubs that automatically redirect desktop users to content pages.
|
|
444
|
+
|
|
445
|
+
## Theming & Styling
|
|
446
|
+
|
|
447
|
+
### Dark Theme
|
|
448
|
+
|
|
449
|
+
The library includes automatic dark theme support:
|
|
450
|
+
|
|
451
|
+
```javascript
|
|
452
|
+
// Toggle dark theme
|
|
453
|
+
this.$store.dispatch('awesIo/toggleTheme')
|
|
454
|
+
|
|
455
|
+
// Check current theme
|
|
456
|
+
const isDark = this.$store.getters['awesIo/isDarkTheme']
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
### Custom CSS
|
|
460
|
+
|
|
461
|
+
Override component styles in your CSS:
|
|
462
|
+
|
|
463
|
+
```css
|
|
464
|
+
/* Override button colors */
|
|
465
|
+
.aw-button--accent {
|
|
466
|
+
--btn-bg: #your-color;
|
|
467
|
+
--btn-text: #fff;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
/* Customize input styles */
|
|
471
|
+
.aw-text-field {
|
|
472
|
+
--input-border: #your-border-color;
|
|
473
|
+
--input-focus: #your-focus-color;
|
|
474
|
+
}
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
## Responsive Design
|
|
478
|
+
|
|
479
|
+
All components are mobile-first and responsive:
|
|
480
|
+
|
|
481
|
+
```markup
|
|
482
|
+
<!-- Responsive grid -->
|
|
483
|
+
<AwGrid
|
|
484
|
+
:cols="{ default: 1, sm: 2, md: 3, lg: 4 }"
|
|
485
|
+
:gap="{ default: 2, md: 4 }"
|
|
486
|
+
>
|
|
487
|
+
<!-- content -->
|
|
488
|
+
</AwGrid>
|
|
489
|
+
|
|
490
|
+
<!-- Responsive visibility -->
|
|
491
|
+
<div v-if="$screen.lg">Desktop only</div>
|
|
492
|
+
<div v-if="!$screen.lg">Mobile only</div>
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
## Plugins & Utilities
|
|
496
|
+
|
|
497
|
+
The library provides several utilities:
|
|
498
|
+
|
|
499
|
+
### Screen Breakpoints
|
|
500
|
+
|
|
501
|
+
```javascript
|
|
502
|
+
// Access screen size
|
|
503
|
+
if (this.$screen.lg) {
|
|
504
|
+
// Desktop view
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
// Available breakpoints: xs, sm, md, lg, xl
|
|
508
|
+
```
|
|
509
|
+
|
|
510
|
+
### Router Extensions
|
|
511
|
+
|
|
512
|
+
```javascript
|
|
513
|
+
// Enhanced router methods
|
|
514
|
+
this.$router.pushBack('/fallback-url')
|
|
515
|
+
this.$router.setBack('/previous-page')
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
### Notifications
|
|
519
|
+
|
|
520
|
+
```javascript
|
|
521
|
+
// Show notification
|
|
522
|
+
this.$notify({
|
|
523
|
+
message: 'Success!',
|
|
524
|
+
type: 'success' // success, error, warning, info
|
|
525
|
+
})
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
### Config Access
|
|
529
|
+
|
|
530
|
+
```javascript
|
|
531
|
+
// Access config
|
|
532
|
+
const logoSrc = this.$awes._config.logo.src
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
## Next Steps
|
|
536
|
+
|
|
537
|
+
### Essential Guides
|
|
538
|
+
|
|
539
|
+
- **[Configuration Guide](./configuration.md)** - Complete configuration reference
|
|
540
|
+
- **[Framework Integration](./integrations.md)** - Complete setup with all packages
|
|
541
|
+
- **[List Pages](./guides/page-patterns/list-pages.md)** - Build list pages with tables
|
|
542
|
+
- **[Detail Pages](./guides/page-patterns/detail-pages.md)** - Create/edit forms
|
|
543
|
+
- **[Mobile Subnavigation](./guides/mobile-subnavigation.md)** - Mobile navigation hubs with submenus
|
|
544
|
+
- **[Best Practices](./guides/best-practices.md)** - Framework patterns and conventions
|
|
545
|
+
|
|
546
|
+
### Component Documentation
|
|
547
|
+
|
|
548
|
+
- **[Component Index](./index.md)** - Browse all available components
|
|
549
|
+
- **[Forms Guide](./guides/forms-guide.md)** - Form patterns and validation
|
|
550
|
+
- **[Component Cookbook](./cookbook/)** - Real-world examples
|
|
551
|
+
|
|
552
|
+
### Package Documentation
|
|
553
|
+
|
|
554
|
+
- **[Vue-MC Models & Collections](../../vue-mc/docs/)** - Data layer documentation
|
|
555
|
+
- **[Nuxt-Auth](../../nuxt-auth/docs/)** - Authentication setup
|
|
556
|
+
- **[Nuxt-Laravel](../../nuxt-laravel/docs/)** - Laravel integration
|
|
557
|
+
|
|
558
|
+
### Learning Path
|
|
559
|
+
|
|
560
|
+
**Beginner** (getting started):
|
|
561
|
+
1. Read [Framework Integration](./integrations.md)
|
|
562
|
+
2. Follow [List Pages Guide](./guides/page-patterns/list-pages.md)
|
|
563
|
+
3. Follow [Detail Pages Guide](./guides/page-patterns/detail-pages.md)
|
|
564
|
+
|
|
565
|
+
**Intermediate** (building features):
|
|
566
|
+
1. Study [Best Practices](./guides/best-practices.md)
|
|
567
|
+
2. Learn [Data Fetching Patterns](./guides/data-fetching.md)
|
|
568
|
+
3. Implement [Error Handling](./guides/error-handling.md)
|
|
569
|
+
|
|
570
|
+
**Advanced** (complex features):
|
|
571
|
+
1. Explore [Common Patterns](./cookbook/common-patterns.md)
|
|
572
|
+
2. Study [Advanced Patterns](./cookbook/advanced-patterns.md)
|
|
573
|
+
3. Review [Troubleshooting Guide](./reference/troubleshooting.md)
|
|
574
|
+
|
|
575
|
+
## Common Issues
|
|
576
|
+
|
|
577
|
+
### Components Not Found
|
|
578
|
+
|
|
579
|
+
Make sure you have:
|
|
580
|
+
1. Added `@awes-io/ui` to `modules` in `nuxt.config.js`
|
|
581
|
+
2. Enabled `components: true`
|
|
582
|
+
3. Enabled `store: true` for Vuex
|
|
583
|
+
|
|
584
|
+
### Styles Not Loading
|
|
585
|
+
|
|
586
|
+
Ensure your Nuxt config includes the module before other modules that might interfere with CSS loading.
|
|
587
|
+
|
|
588
|
+
### Icons Not Showing
|
|
589
|
+
|
|
590
|
+
The library uses custom icon sets. Make sure your `awes.config.js` is properly configured and icon assets are available.
|
|
591
|
+
|
|
592
|
+
## Support
|
|
593
|
+
|
|
594
|
+
- **Issues**: [GitHub Issues](https://github.com/awes-io/ui/issues)
|
|
595
|
+
- **Discussions**: [GitHub Discussions](https://github.com/awes-io/ui/discussions)
|
|
596
|
+
- **Documentation**: [Component Docs](index.md)
|