@usssa/component-library 1.0.0-alpha.4 → 1.0.0-alpha.40

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 (161) hide show
  1. package/README.md +4 -1
  2. package/package.json +6 -4
  3. package/src/App.vue +9 -0
  4. package/src/assets/quasar-logo-vertical.svg +15 -0
  5. package/src/boot/.gitkeep +0 -0
  6. package/src/boot/google-maps.js +11 -0
  7. package/src/components/ComponentLink.vue +26 -0
  8. package/src/components/core/UAvatar.vue +161 -0
  9. package/src/components/core/UAvatarGroup.vue +119 -0
  10. package/src/components/core/UBadgeStd.vue +91 -0
  11. package/src/components/core/UBannerStd.vue +115 -0
  12. package/src/components/core/UBreadCrumbs.vue +67 -0
  13. package/src/components/core/UBtnIcon.vue +159 -0
  14. package/src/components/core/UBtnStd.vue +129 -0
  15. package/src/components/core/UBtnToggle.vue +68 -0
  16. package/src/components/core/UCheckboxStd.vue +95 -0
  17. package/src/components/core/UChip.vue +251 -0
  18. package/src/components/core/UDialogStd.vue +228 -0
  19. package/src/components/core/UDrawer.vue +211 -0
  20. package/src/components/core/UInnerLoader.vue +58 -0
  21. package/src/components/core/UInputAddressLookup.vue +466 -0
  22. package/src/components/core/UInputPhoneStd.vue +295 -0
  23. package/src/components/core/UInputTextStd.vue +293 -0
  24. package/src/components/core/UMenuButtonStd.vue +274 -0
  25. package/src/components/core/UMenuDropdown.vue +77 -0
  26. package/src/components/core/UMenuDropdownAdvancedSearch.vue +262 -0
  27. package/src/components/core/UMenuItem.vue +132 -0
  28. package/src/components/core/UMultiSelectStd.vue +259 -0
  29. package/src/components/core/UPagination.vue +104 -0
  30. package/src/components/core/URadioBtn.vue +116 -0
  31. package/src/components/core/URadioStd.vue +62 -0
  32. package/src/components/core/USelectStd.vue +233 -0
  33. package/src/components/core/UTabBtnStd.vue +167 -0
  34. package/src/components/core/UTable/UTable.vue +93 -0
  35. package/src/components/core/UTable/UTd.vue +63 -0
  36. package/src/components/core/UTable/UTh.vue +48 -0
  37. package/src/components/core/UTable/UTr.vue +20 -0
  38. package/src/components/core/UTableStd.vue +636 -0
  39. package/src/components/core/UTabsStd.vue +111 -0
  40. package/src/components/core/UToggleStd.vue +159 -0
  41. package/src/components/core/UTooltip.vue +71 -0
  42. package/src/components/index.js +66 -0
  43. package/src/composables/useNotify.js +79 -0
  44. package/src/composables/useOverlayLoader.js +23 -0
  45. package/src/css/app.sass +159 -0
  46. package/src/css/colors.sass +101 -0
  47. package/src/css/media.sass +1 -0
  48. package/src/css/quasar.variables.sass +119 -0
  49. package/src/css/typography.sass +0 -0
  50. package/src/css/vars/colors.variables.sass +126 -0
  51. package/src/layouts/MainLayout.vue +177 -0
  52. package/src/pages/AdvancedSearch.vue +512 -0
  53. package/src/pages/Avatar.vue +77 -0
  54. package/src/pages/AvatarGroup.vue +139 -0
  55. package/src/pages/BadgeStd.vue +83 -0
  56. package/src/pages/BannerPage.vue +76 -0
  57. package/src/pages/BreadCrumbs.vue +100 -0
  58. package/src/pages/BtnIcon.vue +120 -0
  59. package/src/pages/BtnStd.vue +138 -0
  60. package/src/pages/BtnToggle.vue +131 -0
  61. package/src/pages/CheckBox.vue +62 -0
  62. package/src/pages/Chip.vue +108 -0
  63. package/src/pages/ComponentBase.vue +54 -0
  64. package/src/pages/Dialog.vue +206 -0
  65. package/src/pages/Drawer.vue +128 -0
  66. package/src/pages/ErrorNotFound.vue +11 -0
  67. package/src/pages/IndexPage.vue +11 -0
  68. package/src/pages/InnerLoader.vue +81 -0
  69. package/src/pages/InputAddressLookup.vue +258 -0
  70. package/src/pages/InputPhone.vue +152 -0
  71. package/src/pages/InputText.vue +140 -0
  72. package/src/pages/MenuButton.vue +194 -0
  73. package/src/pages/MenuDropdown.vue +79 -0
  74. package/src/pages/MenuItem.vue +68 -0
  75. package/src/pages/MultiSelectStd.vue +174 -0
  76. package/src/pages/NotifyPage.vue +109 -0
  77. package/src/pages/OverlayLoader.vue +128 -0
  78. package/src/pages/Pagination.vue +71 -0
  79. package/src/pages/Radio.vue +80 -0
  80. package/src/pages/RadioBtn.vue +104 -0
  81. package/src/pages/SelectStd.vue +160 -0
  82. package/src/pages/TabButtonPage.vue +126 -0
  83. package/src/pages/TablePage.vue +375 -0
  84. package/src/pages/TabsPage.vue +261 -0
  85. package/src/pages/TogglePage.vue +58 -0
  86. package/src/pages/TooltipPage.vue +125 -0
  87. package/src/router/index.js +34 -0
  88. package/src/router/routes.js +149 -0
  89. package/dist/spa/assets/Avatar.45667392.js +0 -9
  90. package/dist/spa/assets/AvatarGroup.99557443.js +0 -9
  91. package/dist/spa/assets/AvatarGroup.bb4cd03a.css +0 -1
  92. package/dist/spa/assets/BadgeStd.ee4129c5.js +0 -6
  93. package/dist/spa/assets/BannerPage.6c6a98c4.js +0 -10
  94. package/dist/spa/assets/BannerPage.d195fcac.css +0 -1
  95. package/dist/spa/assets/BtnIcon.89e50d2e.css +0 -1
  96. package/dist/spa/assets/BtnIcon.934f8c5b.js +0 -10
  97. package/dist/spa/assets/BtnStd.95fc4510.js +0 -11
  98. package/dist/spa/assets/CheckBox.3c204a4b.css +0 -1
  99. package/dist/spa/assets/CheckBox.fbc0bd1a.js +0 -7
  100. package/dist/spa/assets/Chip.49ffc857.js +0 -11
  101. package/dist/spa/assets/Chip.74acaa33.css +0 -1
  102. package/dist/spa/assets/ComponentBase.1ae19b7e.js +0 -1
  103. package/dist/spa/assets/ErrorNotFound.6cccfaee.js +0 -1
  104. package/dist/spa/assets/IndexPage.17d09b76.js +0 -1
  105. package/dist/spa/assets/InputText.19c0d7d1.css +0 -1
  106. package/dist/spa/assets/InputText.3fcd97a4.js +0 -20
  107. package/dist/spa/assets/KFOkCnqEu92Fr1MmgVxIIzQ.34e9582c.woff +0 -0
  108. package/dist/spa/assets/KFOlCnqEu92Fr1MmEU9fBBc-.9ce7f3ac.woff +0 -0
  109. package/dist/spa/assets/KFOlCnqEu92Fr1MmSU5fBBc-.bf14c7d7.woff +0 -0
  110. package/dist/spa/assets/KFOlCnqEu92Fr1MmWUlfBBc-.e0fd57c0.woff +0 -0
  111. package/dist/spa/assets/KFOlCnqEu92Fr1MmYUtfBBc-.f6537e32.woff +0 -0
  112. package/dist/spa/assets/KFOmCnqEu92Fr1Mu4mxM.f2abf7fb.woff +0 -0
  113. package/dist/spa/assets/MainLayout.912bb0f8.js +0 -1
  114. package/dist/spa/assets/MultiSelectStd.644b108c.js +0 -17
  115. package/dist/spa/assets/MultiSelectStd.c7af49eb.css +0 -1
  116. package/dist/spa/assets/QAvatar.5940a79e.js +0 -1
  117. package/dist/spa/assets/QCheckbox.48b43f7d.js +0 -1
  118. package/dist/spa/assets/QPage.ca395ec4.js +0 -1
  119. package/dist/spa/assets/QRadio.0a7f5e2c.js +0 -1
  120. package/dist/spa/assets/QResizeObserver.30c3566c.js +0 -1
  121. package/dist/spa/assets/QSelect.a40eb786.js +0 -1
  122. package/dist/spa/assets/QTabs.72f2507e.js +0 -1
  123. package/dist/spa/assets/QToggle.376c48be.js +0 -1
  124. package/dist/spa/assets/QTooltip.5aa8e325.js +0 -1
  125. package/dist/spa/assets/Radio.0ac35288.js +0 -7
  126. package/dist/spa/assets/Radio.aca54a89.css +0 -1
  127. package/dist/spa/assets/SelectStd.5c6891db.css +0 -1
  128. package/dist/spa/assets/SelectStd.daf1def9.js +0 -16
  129. package/dist/spa/assets/TabButtonPage.20e871dd.js +0 -7
  130. package/dist/spa/assets/TabButtonPage.36ce9f9c.css +0 -1
  131. package/dist/spa/assets/TabsPage.9b94ff39.css +0 -1
  132. package/dist/spa/assets/TabsPage.b92cccee.js +0 -9
  133. package/dist/spa/assets/TogglePage.8129b631.css +0 -1
  134. package/dist/spa/assets/TogglePage.ba6e325c.js +0 -9
  135. package/dist/spa/assets/UAvatar.dda7e478.js +0 -1
  136. package/dist/spa/assets/UAvatar.ea8daa38.css +0 -1
  137. package/dist/spa/assets/UBadgeStd.3965db9a.css +0 -1
  138. package/dist/spa/assets/UBadgeStd.e165ee05.js +0 -1
  139. package/dist/spa/assets/UBtnStd.979ec4e8.js +0 -1
  140. package/dist/spa/assets/UBtnStd.bdd4f5e5.css +0 -1
  141. package/dist/spa/assets/UTooltip.d2e04d0c.js +0 -1
  142. package/dist/spa/assets/UTooltip.efa029a7.css +0 -1
  143. package/dist/spa/assets/dom.e9d4ad51.js +0 -1
  144. package/dist/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.fd84f88b.woff +0 -0
  145. package/dist/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.4a4dbc62.woff2 +0 -0
  146. package/dist/spa/assets/format.41663636.js +0 -1
  147. package/dist/spa/assets/index.43c62a18.js +0 -21
  148. package/dist/spa/assets/index.4fbd73cf.css +0 -5
  149. package/dist/spa/assets/option-sizes.10cc02d3.js +0 -1
  150. package/dist/spa/assets/render.e67ff27a.js +0 -1
  151. package/dist/spa/assets/tooltip.7c0d0774.js +0 -8
  152. package/dist/spa/assets/touch.9135741d.js +0 -1
  153. package/dist/spa/assets/use-checkbox.44a623c0.js +0 -1
  154. package/dist/spa/favicon.ico +0 -0
  155. package/dist/spa/icons/caret-down.svg +0 -5
  156. package/dist/spa/icons/circle-xmark.svg +0 -6
  157. package/dist/spa/icons/favicon-128x128.png +0 -0
  158. package/dist/spa/icons/favicon-16x16.png +0 -0
  159. package/dist/spa/icons/favicon-32x32.png +0 -0
  160. package/dist/spa/icons/favicon-96x96.png +0 -0
  161. package/dist/spa/index.html +0 -3
@@ -0,0 +1,139 @@
1
+ <script setup>
2
+ import { UAvatarGroup } from 'src/components'
3
+ import ComponentBase from './ComponentBase.vue'
4
+ import { ref } from 'vue'
5
+
6
+ const round = ref(true)
7
+ const label = ref('A')
8
+ const indicatorColor = ref('')
9
+
10
+ const size = ref('xl')
11
+ const indicatorColorOptions = ['primary', 'accent', 'positive', 'neutral']
12
+ const sizeOptions = ['sm', 'md', 'lg', 'xl']
13
+ const showIndicator = ref(true)
14
+ const avatarLimit = ref(4)
15
+
16
+ const htmlContent = `<UAvatarGroup
17
+ ref="avatar"
18
+ :label="label"
19
+ :size="size"
20
+ :showIndicator="showIndicator"
21
+ :indicatorColor="indicatorColor"
22
+ :round="round"
23
+ :images="users"
24
+ />`
25
+
26
+ defineOptions({
27
+ name: 'UAvatarGroup',
28
+ })
29
+ </script>
30
+
31
+ <template>
32
+ <q-page class="flex flex-center">
33
+ <ComponentBase
34
+ figmaUrl="https://www.figma.com/design/2FoTrjVL4ZrTdsvB4DcSao/Components?node-id=2246-39909"
35
+ >
36
+ <template v-slot:component>
37
+ <UAvatarGroup
38
+ ref="avatar"
39
+ :label="label"
40
+ :size="size"
41
+ :showIndicator="showIndicator"
42
+ :indicatorColor="indicatorColor"
43
+ :round="round"
44
+ :images="users"
45
+ :avatarLimit="avatarLimit"
46
+ />
47
+ </template>
48
+
49
+ <template v-slot:properties>
50
+ <div class="column q-gutter-y-lg">
51
+ <div v-for="(item, index) in users" :key="index">
52
+ <span class="text-grey-8 text-caption-sm"
53
+ >User {{ index + 1 }}</span
54
+ >
55
+
56
+ <q-input
57
+ v-model="users[index].name"
58
+ :val="users[index].name"
59
+ label="Name"
60
+ ></q-input>
61
+ <q-input
62
+ v-model="users[index].image"
63
+ :val="item.image"
64
+ label="Image"
65
+ ></q-input>
66
+ <div
67
+ class="full-width row justify-end q-mt-xs"
68
+ style="cursor: pointer"
69
+ >
70
+ <q-icon
71
+ @click="removeField(index)"
72
+ class="fa-duotone fa-solid fa-circle-minus"
73
+ size="sm"
74
+ color="primary"
75
+ />
76
+ </div>
77
+ </div>
78
+ <div class="full-width row justify-end q-mt-sm">
79
+ <q-icon
80
+ @click="addField"
81
+ style="cursor: pointer"
82
+ class="fa-duotone fa-solid fa-circle-plus"
83
+ size="xl"
84
+ color="primary"
85
+ />
86
+ </div>
87
+ </div>
88
+ <div class="column q-gutter-y-lg">
89
+ <q-input v-model="avatarLimit" label="Avatar Limit" />
90
+ </div>
91
+ <div class="column q-gutter-y-lg">
92
+ <q-select v-model="size" :options="sizeOptions" label="Size" />
93
+ </div>
94
+ <div class="column">
95
+ <span class="text-grey-8 text-caption-sm">Show Indicator</span>
96
+ <q-checkbox
97
+ size="xs"
98
+ v-model="showIndicator"
99
+ :val="true"
100
+ label="Show Indicator"
101
+ />
102
+ </div>
103
+ <q-select
104
+ v-model="indicatorColor"
105
+ :options="indicatorColorOptions"
106
+ label="Indicator Color"
107
+ />
108
+ </template>
109
+
110
+ <template v-slot:code>
111
+ <pre>{{ htmlContent }}</pre>
112
+ </template>
113
+ </ComponentBase>
114
+ </q-page>
115
+ </template>
116
+ <script>
117
+ export default {
118
+ data() {
119
+ return {
120
+ users: [
121
+ { name: 'Alice', image: 'https://cdn.quasar.dev/img/avatar1.jpg' },
122
+ { name: 'Bob', image: 'https://cdn.quasar.dev/img/avatar2.jpg' },
123
+ { name: 'Charlie', image: 'https://cdn.quasar.dev/img/avatar3.jpg' },
124
+ { name: 'Diana', image: 'https://cdn.quasar.dev/img/avatar4.jpg' },
125
+ { name: 'Edward', image: 'https://cdn.quasar.dev/img/avatar5.jpg' },
126
+ { name: 'Alex', image: 'https://cdn.quasar.dev/img/avatar6.jpg' },
127
+ ],
128
+ }
129
+ },
130
+ methods: {
131
+ addField() {
132
+ this.users.push({ name: '', image: '' })
133
+ },
134
+ removeField(index) {
135
+ this.users.splice(index, 1)
136
+ },
137
+ },
138
+ }
139
+ </script>
@@ -0,0 +1,83 @@
1
+ <script setup>
2
+ import { computed, ref, watch } from 'vue'
3
+ import ComponentBase from './ComponentBase.vue'
4
+ import { UBadgeStd } from 'src/components'
5
+
6
+ const color = ref('primary')
7
+ const colorOptions = ['primary', 'accent', 'warning', 'positive', 'neutral']
8
+
9
+ const size = ref('md')
10
+ const type = ref('basic')
11
+ const sizeOptions = ['xxs', 'xs', 'sm', 'md', 'lg']
12
+ watch(type, () => {
13
+ size.value = type.value === 'indicator' ? 'xxs' : 'md'
14
+ })
15
+ const filteredSizeOptions = computed(() => {
16
+ if (type.value === 'indicator') {
17
+ return sizeOptions.filter((size) => size !== 'md' && size !== 'lg')
18
+ }
19
+ return ['md', 'lg']
20
+ })
21
+ const label = ref('01')
22
+ const htmlContent = `<UBadgeStd
23
+ :label="label"
24
+ :color="color"
25
+ :size="size"
26
+ :type="type"
27
+ />`
28
+ defineOptions({
29
+ name: 'BtnStd',
30
+ })
31
+ </script>
32
+
33
+ <template>
34
+ <q-page class="flex flex-center">
35
+ <ComponentBase
36
+ figmaUrl="https://www.figma.com/design/2FoTrjVL4ZrTdsvB4DcSao/Components?node-id=508-19370&t=DR7gF8DTYY1JvngY-0"
37
+ >
38
+ <template v-slot:component>
39
+ <UBadgeStd :label="label" :color="color" :size="size" :type="type" />
40
+ </template>
41
+
42
+ <template v-slot:properties
43
+ ><div class="column q-gutter-y-lg">
44
+ <div class="container column">
45
+ <div class="q-gutter-sm">
46
+ <div class="q-mt-md">
47
+ <q-label>Label</q-label>
48
+ <q-input v-model="label"></q-input>
49
+ </div>
50
+ <q-select v-model="color" :options="colorOptions" label="Color" />
51
+ <q-select
52
+ v-model="size"
53
+ :options="filteredSizeOptions"
54
+ label="Size"
55
+ />
56
+ <div>
57
+ <q-label class="q-mr-sm">Type</q-label>
58
+
59
+ <q-radio
60
+ dense
61
+ v-model="type"
62
+ val="basic"
63
+ label="Basic"
64
+ class="q-pr-sm"
65
+ />
66
+ <q-radio
67
+ dense
68
+ v-model="type"
69
+ val="indicator"
70
+ label="Indicator"
71
+ />
72
+ </div>
73
+ </div>
74
+ </div>
75
+ </div>
76
+ </template>
77
+
78
+ <template v-slot:code>
79
+ <pre>{{ htmlContent }}</pre>
80
+ </template>
81
+ </ComponentBase>
82
+ </q-page>
83
+ </template>
@@ -0,0 +1,76 @@
1
+ <script setup>
2
+ import { ref } from 'vue'
3
+ import ComponentBase from './ComponentBase.vue'
4
+ import { UBannerStd } from 'src/components'
5
+
6
+ defineOptions({
7
+ name: 'BannerPage',
8
+ })
9
+
10
+ const htmlContent = `<UBannerStd
11
+ :type="type"
12
+ :show="show"
13
+ :primaryActionLabel="primaryActionLabel"
14
+ :secondaryActionLabel="secondaryActionLabel"
15
+ :message="message"
16
+ @primaryAction="handlePrimaryActionClick"
17
+ @secondaryAction="handleSecondaryActionClick"
18
+ :icon="icon"
19
+ />`
20
+
21
+ const typeOptions = ['info', 'positive', 'accent', 'warning', 'primary']
22
+
23
+ const type = ref('primary')
24
+ const message = ref('This is banner message.')
25
+ const icon = ref('fa-kit-duotone fa-circle-info')
26
+ const primaryActionLabel = ref('Submit')
27
+ const secondaryActionLabel = ref('Close')
28
+ const show = ref(true)
29
+
30
+ const handlePrimaryActionClick = () => {
31
+ alert('First Clicked')
32
+ }
33
+
34
+ const handleSecondaryActionClick = () => {
35
+ alert('Second Clicked')
36
+ }
37
+ </script>
38
+
39
+ <template>
40
+ <q-page class="flex flex-center">
41
+ <ComponentBase
42
+ figmaUrl="https://www.figma.com/design/2FoTrjVL4ZrTdsvB4DcSao/Components?node-id=2145-13266&m=dev"
43
+ cardWidth="70%"
44
+ >
45
+ <template v-slot:component>
46
+ <UBannerStd
47
+ :type="type"
48
+ :show="show"
49
+ :primaryActionLabel="primaryActionLabel"
50
+ :secondaryActionLabel="secondaryActionLabel"
51
+ :message="message"
52
+ @primaryAction="handlePrimaryActionClick"
53
+ @secondaryAction="handleSecondaryActionClick"
54
+ :icon="icon"
55
+ />
56
+ </template>
57
+ <template v-slot:properties>
58
+ <div class="column q-gutter-y-md">
59
+ <q-toggle v-model="show" label="Show" />
60
+ <q-input label="Message" v-model="message" />
61
+ <q-input label="Icon" v-model="icon" />
62
+ <q-select v-model="type" :options="typeOptions" label="Type" />
63
+ <q-input label="Primary Action label" v-model="primaryActionLabel" />
64
+ <q-input
65
+ label="Secondary Action label"
66
+ v-model="secondaryActionLabel"
67
+ />
68
+ </div>
69
+ </template>
70
+ <template v-slot:code>
71
+ <pre><code>{{ htmlContent }}</code></pre>
72
+ </template>
73
+ </ComponentBase>
74
+ </q-page>
75
+ </template>
76
+ <style lang="sass"></style>
@@ -0,0 +1,100 @@
1
+ <script setup>
2
+ import { UBreadCrumbs } from 'src/components'
3
+ import ComponentBase from './ComponentBase.vue'
4
+ import { ref } from 'vue'
5
+
6
+ const htmlContent = `<UBreadCrumbs
7
+ :align="align"
8
+ :links="links"
9
+ :clickable="clickable"
10
+ :showActiveRoute="showActiveRoute"
11
+ :activeColor="activeColor"
12
+ />
13
+ `
14
+
15
+ const contentInfo = `The links options should look like [
16
+ {
17
+ label: 'Banner', // label of bread crumb
18
+ to: 'banner', // redirect link
19
+ },`
20
+
21
+ const align = ref('left')
22
+ const activeColor = ref('primary')
23
+ const clickable = ref(true)
24
+ const showActiveRoute = ref(true)
25
+ const alignmentOptions = ['left', 'right', 'center', 'between', 'around']
26
+ const links = [
27
+ { label: 'Avatar', to: 'avatar' },
28
+ {
29
+ label: 'Badge',
30
+ to: 'badge',
31
+ },
32
+ {
33
+ label: 'Banner',
34
+ to: 'banner',
35
+ },
36
+ {
37
+ label: 'Button Toggle',
38
+ to: 'button-toggle',
39
+ },
40
+ {
41
+ label: 'Button',
42
+ to: 'button-standard',
43
+ },
44
+ {
45
+ label: 'Bread Crumbs',
46
+ to: 'bread-crumbs',
47
+ },
48
+ ]
49
+ </script>
50
+ <template>
51
+ <q-page class="flex flex-center">
52
+ <ComponentBase
53
+ figmaUrl="https://www.figma.com/design/2FoTrjVL4ZrTdsvB4DcSao/Components?node-id=4-17&node-type=canvas&m=dev"
54
+ cardWidth="70%"
55
+ >
56
+ <template v-slot:component>
57
+ <UBreadCrumbs
58
+ :align="align"
59
+ :links="links"
60
+ :clickable="clickable"
61
+ :showActiveRoute="showActiveRoute"
62
+ :activeColor="activeColor"
63
+ />
64
+ </template>
65
+ <template v-slot:properties>
66
+ <div class="column q-gutter-y-lg" style="position: relative">
67
+ <q-select
68
+ v-model="align"
69
+ :options="alignmentOptions"
70
+ label="Alignment"
71
+ />
72
+ <q-checkbox
73
+ class="q-mr-sm"
74
+ size="xs"
75
+ v-model="clickable"
76
+ label="Clickable"
77
+ />
78
+ <q-checkbox
79
+ class="q-mr-sm"
80
+ size="xs"
81
+ v-model="showActiveRoute"
82
+ label="Show current active route"
83
+ />
84
+ <q-input
85
+ class="col-12 col-md-3"
86
+ placeholder="Label"
87
+ v-model="activeColor"
88
+ ></q-input>
89
+ </div>
90
+ </template>
91
+ <template v-slot:code>
92
+ <pre>{{ htmlContent }}</pre>
93
+ <pre class="text-neutral-6" style="font-size: 12px; font-weight: 600">{{
94
+ contentInfo
95
+ }}</pre>
96
+ </template>
97
+ </ComponentBase>
98
+ </q-page>
99
+ </template>
100
+ <style lang="sass"></style>
@@ -0,0 +1,120 @@
1
+ <script setup>
2
+ import { UBtnIcon } from 'src/components'
3
+ import ComponentBase from './ComponentBase.vue'
4
+ import { ref } from 'vue'
5
+
6
+ const color = ref('primary')
7
+ const colorOptions = ['primary', 'neutral', 'accent', 'transparent']
8
+
9
+ const tooltip = ref('Tooltip')
10
+ const anchorOptions = [
11
+ 'top left',
12
+ 'top middle',
13
+ 'top right',
14
+ 'top start',
15
+ 'top end',
16
+ 'center left',
17
+ 'center middle',
18
+ 'center right',
19
+ 'center start',
20
+ 'center end',
21
+ 'bottom left',
22
+ 'bottom middle',
23
+ 'bottom right',
24
+ 'bottom start',
25
+ 'bottom end',
26
+ ]
27
+
28
+ const selfOptions = [
29
+ 'top left',
30
+ 'top middle',
31
+ 'top right',
32
+ 'top start',
33
+ 'top end',
34
+ 'center left',
35
+ 'center middle',
36
+ 'center right',
37
+ 'center start',
38
+ 'center end',
39
+ 'bottom left',
40
+ 'bottom middle',
41
+ 'bottom right',
42
+ 'bottom start',
43
+ 'bottom end',
44
+ ]
45
+ const ariaLabel = ref('Btn Icon')
46
+ const size = ref('sm')
47
+ const sizeOptions = ['sm', 'md', 'lg']
48
+ const anchor = ref('center left')
49
+ const self = ref('center end')
50
+
51
+ const iconClass = ref('fa-kit-duotone fa-circle-bolt')
52
+
53
+ const htmlContent = `<UBtnIcon
54
+ ref="btn-icon"
55
+ :size="size"
56
+ :ariaLabel="ariaLabel"
57
+ :color="color"
58
+ :iconClass="iconClass"
59
+ :tooltip="tooltip"
60
+ :anchor="anchor"
61
+ :self="self"
62
+ />`
63
+
64
+ defineOptions({
65
+ name: 'BtnIcon',
66
+ })
67
+ </script>
68
+
69
+ <template>
70
+ <q-page class="flex flex-center">
71
+ <ComponentBase
72
+ figmaUrl="https://www.figma.com/design/2FoTrjVL4ZrTdsvB4DcSao/Components?node-id=2710-35247"
73
+ >
74
+ <template v-slot:component>
75
+ <UBtnIcon
76
+ ref="btn-icon"
77
+ :size="size"
78
+ :ariaLabel="ariaLabel"
79
+ :color="color"
80
+ :iconClass="iconClass"
81
+ :tooltip="tooltip"
82
+ :anchor="anchor"
83
+ :self="self"
84
+ />
85
+ </template>
86
+
87
+ <template v-slot:properties>
88
+ <div class="column q-gutter-y-lg">
89
+ <q-input label="Aria Label" v-model="ariaLabel"></q-input>
90
+ <q-select v-model="color" :options="colorOptions" label="Color" />
91
+ <q-input label="Icon Class" v-model="iconClass"></q-input>
92
+ <q-select v-model="size" :options="sizeOptions" label="Icon Size" />
93
+
94
+ <div class="q-my-md">
95
+ <q-input v-model="tooltip" label="Tooltip"></q-input>
96
+ </div>
97
+ <div class="column">
98
+ <span class="text-grey-8 text-caption-sm">Tooltip Position</span>
99
+ <div>
100
+ <q-select
101
+ v-model="anchor"
102
+ :options="anchorOptions"
103
+ label="Anchor Origin"
104
+ />
105
+ <q-select
106
+ v-model="self"
107
+ :options="selfOptions"
108
+ label="Self Origin"
109
+ />
110
+ </div>
111
+ </div>
112
+ </div>
113
+ </template>
114
+
115
+ <template v-slot:code>
116
+ <pre>{{ htmlContent }}</pre>
117
+ </template>
118
+ </ComponentBase>
119
+ </q-page>
120
+ </template>
@@ -0,0 +1,138 @@
1
+ <script setup>
2
+ import { UTooltip } from 'src/components'
3
+ import { computed, ref } from 'vue'
4
+ import UBtnStd from '../components/core/UBtnStd.vue'
5
+ import ComponentBase from './ComponentBase.vue'
6
+
7
+ const color = ref('primary')
8
+ const colorOptions = [
9
+ 'positive',
10
+ 'info',
11
+ 'warning',
12
+ 'neutral',
13
+ 'primary',
14
+ 'accent',
15
+ ]
16
+
17
+ const size = ref('sm')
18
+ const sizeOptions = ['sm', 'md', 'lg']
19
+ const disabled = ref(false)
20
+ const type = ref('standard')
21
+ const label = ref('Button')
22
+ const tooltip = ref(null)
23
+
24
+ const flat = computed(() => {
25
+ return type.value === 'flat'
26
+ })
27
+ const outline = computed(() => {
28
+ return type.value === 'outline'
29
+ })
30
+
31
+ const leftIcon = computed(() => {
32
+ return iconLeft.value ? 'fa-kit-duotone fa-triangle-exclamation' : ''
33
+ })
34
+ const rightIcon = computed(() => {
35
+ return iconRight.value ? 'fa-kit-duotone fa-triangle-exclamation' : ''
36
+ })
37
+
38
+ const iconLeft = ref(false)
39
+ const iconRight = ref(false)
40
+ const fullWidth = ref(false)
41
+ const htmlContent =
42
+ '<UBtnStd\n :size="size"\n :label="label"\n :color="color"\n :outline="outline"\n :disable="disabled"\n :flat="flat"\n :left-icon="leftIcon"\n :right-icon="rightIcon"\n :full-width="fullWidth"\n/> '
43
+
44
+ defineOptions({
45
+ name: 'BtnStd',
46
+ })
47
+ </script>
48
+
49
+ <template>
50
+ <q-page class="flex flex-center">
51
+ <ComponentBase
52
+ figmaUrl="https://www.figma.com/design/2FoTrjVL4ZrTdsvB4DcSao/Components?node-id=4-18&t=W9U6NqDHbuiUvAxN-0"
53
+ >
54
+ <template v-slot:component>
55
+ <u-btn-std
56
+ ref="btn"
57
+ :size="size"
58
+ :label="label"
59
+ :color="color"
60
+ :outline="outline"
61
+ :disable="disabled"
62
+ :flat="flat"
63
+ :left-icon="leftIcon"
64
+ :right-icon="rightIcon"
65
+ :full-width="fullWidth"
66
+ >
67
+ <template v-slot:tooltip>
68
+ <UTooltip
69
+ v-if="tooltip"
70
+ :description="tooltip"
71
+ anchor="bottom middle"
72
+ self="bottom middle"
73
+ :offset="[14, 40]"
74
+ />
75
+ </template>
76
+ </u-btn-std>
77
+ </template>
78
+
79
+ <template v-slot:properties>
80
+ <div class="column q-gutter-y-lg">
81
+ <q-input label="Label" v-model="label" />
82
+ <q-input label="Button tooltip" v-model="tooltip" />
83
+ <q-select v-model="color" :options="colorOptions" label="Color" />
84
+ <q-select v-model="size" :options="sizeOptions" label="Size" />
85
+
86
+ <div class="column">
87
+ <span class="text-grey-8 text-caption-sm">Type</span>
88
+ <div>
89
+ <q-radio
90
+ dense
91
+ v-model="type"
92
+ val="standard"
93
+ label="Default/Standard"
94
+ />
95
+ <q-radio
96
+ dense
97
+ v-model="type"
98
+ val="flat"
99
+ label="Flat"
100
+ class="q-pa-sm"
101
+ />
102
+ <q-radio dense v-model="type" val="outline" label="Outline" />
103
+ </div>
104
+ </div>
105
+
106
+ <div class="column">
107
+ <span class="text-grey-8 text-caption-sm">Icons</span>
108
+ <div>
109
+ <q-checkbox
110
+ size="xs"
111
+ v-model="iconLeft"
112
+ val="fa-kit-duotone fa-triangle-exclamation"
113
+ label="Left Icon"
114
+ />
115
+ <q-checkbox
116
+ size="xs"
117
+ v-model="iconRight"
118
+ val="fa-kit-duotone fa-triangle-exclamation"
119
+ label="Right Icon"
120
+ />
121
+ </div>
122
+ </div>
123
+
124
+ <div>
125
+ <q-checkbox size="xs" v-model="fullWidth" label="Full Width" />
126
+ </div>
127
+ <div>
128
+ <q-checkbox size="xs" v-model="disabled" label="Disable" />
129
+ </div>
130
+ </div>
131
+ </template>
132
+
133
+ <template v-slot:code>
134
+ <pre><code>{{ htmlContent }}</code></pre>
135
+ </template>
136
+ </ComponentBase>
137
+ </q-page>
138
+ </template>