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

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 +242 -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 +173 -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 +221 -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
package/README.md CHANGED
@@ -6,8 +6,11 @@ This library provides custom UI components for USSSA applications.
6
6
 
7
7
  1. Install the packge using command 'yarn'
8
8
  2. Go to specific page where you want to use a component from that library.
9
- a. Import the library in your Quasar project: `import { UBtnStd } from 'component-library'`
9
+ a. Import the component in your project: `import { UBtnStd } from '@usssa/component-library'`
10
10
  b. Use the BtnStd component in your Nuxt app: `<UBtnStd label="Test" size="lg" />`
11
+ 3. We need to import below file to support component library styling in our project
12
+ a. @import '@usssa/component-library/src/css/app.sass'
13
+ b. @import '@usssa/component-library/src/css/quasar.variables.sass'
11
14
 
12
15
  ## Development
13
16
 
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@usssa/component-library",
3
- "version": "1.0.0-alpha.4",
3
+ "version": "1.0.0-alpha.41",
4
4
  "description": "A Quasar component library project",
5
5
  "productName": "Quasar component library App",
6
6
  "author": "Troy Moreland <troy.moreland@usssa.com>",
7
- "main": "index.js",
7
+ "main": "src/components/index.js",
8
8
  "files": [
9
- "dist/spa",
9
+ "src",
10
10
  "README.md"
11
11
  ],
12
12
  "publishConfig": {
@@ -27,7 +27,9 @@
27
27
  "url": "git+https://github.com/usssa-org/component-library.git"
28
28
  },
29
29
  "dependencies": {
30
+ "@fawmi/vue-google-maps": "^0.9.79",
30
31
  "@quasar/extras": "^1.16.4",
32
+ "flag-icons": "^7.2.3",
31
33
  "quasar": "^2.16.0",
32
34
  "vue": "^3.4.18",
33
35
  "vue-router": "^4.0.12"
@@ -41,7 +43,7 @@
41
43
  "npm-run-all": "^4.1.5",
42
44
  "postcss": "^8.4.14",
43
45
  "prettier": "^2.5.1",
44
- "semantic-release": "^24.0.0",
46
+ "semantic-release": "^24.1.0",
45
47
  "vite-plugin-checker": "^0.6.4"
46
48
  },
47
49
  "engines": {
package/src/App.vue ADDED
@@ -0,0 +1,9 @@
1
+ <template>
2
+ <router-view />
3
+ </template>
4
+
5
+ <script setup>
6
+ defineOptions({
7
+ name: "App",
8
+ });
9
+ </script>
@@ -0,0 +1,15 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 356 360">
2
+ <path
3
+ d="M43.4 303.4c0 3.8-2.3 6.3-7.1 6.3h-15v-22h14.4c4.3 0 6.2 2.2 6.2 5.2 0 2.6-1.5 4.4-3.4 5 2.8.4 4.9 2.5 4.9 5.5zm-8-13H24.1v6.9H35c2.1 0 4-1.3 4-3.8 0-2.2-1.3-3.1-3.7-3.1zm5.1 12.6c0-2.3-1.8-3.7-4-3.7H24.2v7.7h11.7c3.4 0 4.6-1.8 4.6-4zm36.3 4v2.7H56v-22h20.6v2.7H58.9v6.8h14.6v2.3H58.9v7.5h17.9zm23-5.8v8.5H97v-8.5l-11-13.4h3.4l8.9 11 8.8-11h3.4l-10.8 13.4zm19.1-1.8V298c0-7.9 5.2-10.7 12.7-10.7 7.5 0 13 2.8 13 10.7v1.4c0 7.9-5.5 10.8-13 10.8s-12.7-3-12.7-10.8zm22.7 0V298c0-5.7-3.9-8-10-8-6 0-9.8 2.3-9.8 8v1.4c0 5.8 3.8 8.1 9.8 8.1 6 0 10-2.3 10-8.1zm37.2-11.6v21.9h-2.9l-15.8-17.9v17.9h-2.8v-22h3l15.6 18v-18h2.9zm37.9 10.2v1.3c0 7.8-5.2 10.4-12.4 10.4H193v-22h11.2c7.2 0 12.4 2.8 12.4 10.3zm-3 0c0-5.3-3.3-7.6-9.4-7.6h-8.4V307h8.4c6 0 9.5-2 9.5-7.7V298zm50.8-7.6h-9.7v19.3h-3v-19.3h-9.7v-2.6h22.4v2.6zm34.4-2.6v21.9h-3v-10.1h-16.8v10h-2.8v-21.8h2.8v9.2H296v-9.2h2.9zm34.9 19.2v2.7h-20.7v-22h20.6v2.7H316v6.8h14.5v2.3H316v7.5h17.8zM24 340.2v7.3h13.9v2.4h-14v9.6H21v-22h20v2.7H24zm41.5 11.4h-9.8v7.9H53v-22h13.3c5.1 0 8 1.9 8 6.8 0 3.7-2 6.3-5.6 7l6 8.2h-3.3l-5.8-8zm-9.8-2.6H66c3.1 0 5.3-1.5 5.3-4.7 0-3.3-2.2-4.1-5.3-4.1H55.7v8.8zm47.9 6.2H89l-2 4.3h-3.2l10.7-22.2H98l10.7 22.2h-3.2l-2-4.3zm-1-2.3l-6.3-13-6 13h12.2zm46.3-15.3v21.9H146v-17.2L135.7 358h-2.1l-10.2-15.6v17h-2.8v-21.8h3l11 16.9 11.3-17h3zm35 19.3v2.6h-20.7v-22h20.6v2.7H166v6.8h14.5v2.3H166v7.6h17.8zm47-19.3l-8.3 22h-3l-7.1-18.6-7 18.6h-3l-8.2-22h3.3L204 356l6.8-18.5h3.4L221 356l6.6-18.5h3.3zm10 11.6v-1.4c0-7.8 5.2-10.7 12.7-10.7 7.6 0 13 2.9 13 10.7v1.4c0 7.9-5.4 10.8-13 10.8-7.5 0-12.7-3-12.7-10.8zm22.8 0v-1.4c0-5.7-4-8-10-8s-9.9 2.3-9.9 8v1.4c0 5.8 3.8 8.2 9.8 8.2 6.1 0 10-2.4 10-8.2zm28.3 2.4h-9.8v7.9h-2.8v-22h13.2c5.2 0 8 1.9 8 6.8 0 3.7-2 6.3-5.6 7l6 8.2h-3.3l-5.8-8zm-9.8-2.6h10.2c3 0 5.2-1.5 5.2-4.7 0-3.3-2.1-4.1-5.2-4.1h-10.2v8.8zm40.3-1.5l-6.8 5.6v6.4h-2.9v-22h2.9v12.3l15.2-12.2h3.7l-9.9 8.1 10.3 13.8h-3.6l-8.9-12z" />
4
+ <path fill="#050A14"
5
+ d="M188.4 71.7a10.4 10.4 0 01-20.8 0 10.4 10.4 0 1120.8 0zM224.2 45c-2.2-3.9-5-7.5-8.2-10.7l-12 7c-3.7-3.2-8-5.7-12.6-7.3a49.4 49.4 0 00-9.7 13.9 59 59 0 0140.1 14l7.6-4.4a57 57 0 00-5.2-12.5zM178 125.1c4.5 0 9-.6 13.4-1.7v-14a40 40 0 0012.5-7.2 47.7 47.7 0 00-7.1-15.3 59 59 0 01-32.2 27.7v8.7c4.4 1.2 8.9 1.8 13.4 1.8zM131.8 45c-2.3 4-4 8.1-5.2 12.5l12 7a40 40 0 000 14.4c5.7 1.5 11.3 2 16.9 1.5a59 59 0 01-8-41.7l-7.5-4.3c-3.2 3.2-6 6.7-8.2 10.6z" />
6
+ <path fill="#00B4FF"
7
+ d="M224.2 98.4c2.3-3.9 4-8 5.2-12.4l-12-7a40 40 0 000-14.5c-5.7-1.5-11.3-2-16.9-1.5a59 59 0 018 41.7l7.5 4.4c3.2-3.2 6-6.8 8.2-10.7zm-92.4 0c2.2 4 5 7.5 8.2 10.7l12-7a40 40 0 0012.6 7.3c4-4.1 7.3-8.8 9.7-13.8a59 59 0 01-40-14l-7.7 4.4c1.2 4.3 3 8.5 5.2 12.4zm46.2-80c-4.5 0-9 .5-13.4 1.7V34a40 40 0 00-12.5 7.2c1.5 5.7 4 10.8 7.1 15.4a59 59 0 0132.2-27.7V20a53.3 53.3 0 00-13.4-1.8z" />
8
+ <path fill="#00B4FF"
9
+ d="M178 9.2a62.6 62.6 0 11-.1 125.2A62.6 62.6 0 01178 9.2m0-9.2a71.7 71.7 0 100 143.5A71.7 71.7 0 00178 0z" />
10
+ <path fill="#050A14"
11
+ d="M96.6 212v4.3c-9.2-.8-15.4-5.8-15.4-17.8V180h4.6v18.4c0 8.6 4 12.6 10.8 13.5zm16-31.9v18.4c0 8.9-4.3 12.8-10.9 13.5v4.4c9.2-.7 15.5-5.6 15.5-18v-18.3h-4.7zM62.2 199v-2.2c0-12.7-8.8-17.4-21-17.4-12.1 0-20.7 4.7-20.7 17.4v2.2c0 12.8 8.6 17.6 20.7 17.6 1.5 0 3-.1 4.4-.3l11.8 6.2 2-3.3-8.2-4-6.4-3.1a32 32 0 01-3.6.2c-9.8 0-16-3.9-16-13.3v-2.2c0-9.3 6.2-13.1 16-13.1 9.9 0 16.3 3.8 16.3 13.1v2.2c0 5.3-2.1 8.7-5.6 10.8l4.8 2.4c3.4-2.8 5.5-7 5.5-13.2zM168 215.6h5.1L156 179.7h-4.8l17 36zM143 205l7.4-15.7-2.4-5-15.1 31.4h5.1l3.3-7h18.3l-1.8-3.7H143zm133.7 10.7h5.2l-17.3-35.9h-4.8l17 36zm-25-10.7l7.4-15.7-2.4-5-15.1 31.4h5.1l3.3-7h18.3l-1.7-3.7h-14.8zm73.8-2.5c6-1.2 9-5.4 9-11.4 0-8-4.5-10.9-12.9-10.9h-21.4v35.5h4.6v-31.3h16.5c5 0 8.5 1.4 8.5 6.7 0 5.2-3.5 7.7-8.5 7.7h-11.4v4.1h10.7l9.3 12.8h5.5l-9.9-13.2zm-117.4 9.9c-9.7 0-14.7-2.5-18.6-6.3l-2.2 3.8c5.1 5 11 6.7 21 6.7 1.6 0 3.1-.1 4.6-.3l-1.9-4h-3zm18.4-7c0-6.4-4.7-8.6-13.8-9.4l-10.1-1c-6.7-.7-9.3-2.2-9.3-5.6 0-2.5 1.4-4 4.6-5l-1.8-3.8c-4.7 1.4-7.5 4.2-7.5 8.9 0 5.2 3.4 8.7 13 9.6l11.3 1.2c6.4.6 8.9 2 8.9 5.4 0 2.7-2.1 4.7-6 5.8l1.8 3.9c5.3-1.6 8.9-4.7 8.9-10zm-20.3-21.9c7.9 0 13.3 1.8 18.1 5.7l1.8-3.9a30 30 0 00-19.6-5.9c-2 0-4 .1-5.7.3l1.9 4 3.5-.2z" />
12
+ <path fill="#00B4FF"
13
+ d="M.5 251.9c29.6-.5 59.2-.8 88.8-1l88.7-.3 88.7.3 44.4.4 44.4.6-44.4.6-44.4.4-88.7.3-88.7-.3a7981 7981 0 01-88.8-1z" />
14
+ <path fill="none" d="M-565.2 324H-252v15.8h-313.2z" />
15
+ </svg>
File without changes
@@ -0,0 +1,11 @@
1
+ import { boot } from 'quasar/wrappers'
2
+ import VueGoogleMaps from '@fawmi/vue-google-maps'
3
+
4
+ export default boot(({ app }) => {
5
+ app.use(VueGoogleMaps, {
6
+ load: {
7
+ key: 'AIzaSyCUda4H5O67XNdBnIwRi3jiYrj41zTRbUk',
8
+ libraries: 'places',
9
+ },
10
+ })
11
+ })
@@ -0,0 +1,26 @@
1
+ <template>
2
+ <q-item clickable :to="path">
3
+ <q-item-section class="bg-neutral-4">
4
+ <q-item-label class="q-pa-sm">{{ title }}</q-item-label>
5
+ </q-item-section>
6
+ </q-item>
7
+ </template>
8
+
9
+ <script>
10
+ import { defineComponent } from 'vue'
11
+
12
+ export default defineComponent({
13
+ name: 'ComponentLink',
14
+ props: {
15
+ title: {
16
+ type: String,
17
+ required: true,
18
+ },
19
+
20
+ path: {
21
+ type: String,
22
+ default: '/',
23
+ },
24
+ },
25
+ })
26
+ </script>
@@ -0,0 +1,161 @@
1
+ <script setup>
2
+ import { computed } from 'vue'
3
+ import UBadgeStd from './UBadgeStd.vue'
4
+
5
+ const props = defineProps({
6
+ color: {
7
+ type: String,
8
+ default: 'primary',
9
+ },
10
+ icon: {
11
+ type: String,
12
+ },
13
+ size: {
14
+ type: String,
15
+ default: 'xl',
16
+ },
17
+ image: {
18
+ type: String,
19
+ },
20
+ indicatorColor: {
21
+ type: String,
22
+ default: 'neutral-4',
23
+ },
24
+ name: {
25
+ type: String,
26
+ required: true,
27
+ },
28
+ showIndicator: {
29
+ type: Boolean,
30
+ default: false,
31
+ },
32
+ icon: {
33
+ type: String,
34
+ },
35
+ round: {
36
+ type: Boolean,
37
+ default: true,
38
+ },
39
+ })
40
+
41
+ const emit = defineEmits(['onClick'])
42
+
43
+ const handleClick = () => {
44
+ return emit('onClick')
45
+ }
46
+
47
+ const labelSize = computed(() => {
48
+ if (props.size === 'sm') {
49
+ return 'xs'
50
+ }
51
+ if (props.size === 'md') {
52
+ return 'sm'
53
+ }
54
+ if (props.size === 'lg') {
55
+ return 'md'
56
+ }
57
+ if (props.size === 'xl') {
58
+ return 'lg'
59
+ }
60
+
61
+ return props.size
62
+ })
63
+
64
+ const initials = computed(() => {
65
+ if (props.name) {
66
+ const name = props.name.replace(/\s+/g, ' ')
67
+ const parts = name.split(' ')
68
+
69
+ if (parts.length === 1) return parts[0].substring(0, 2).toUpperCase()
70
+
71
+ return `${parts[0].substring(0, 1).toUpperCase()}${parts[parts.length - 1]
72
+ .substring(0, 1)
73
+ .toUpperCase()}`
74
+ }
75
+ return props?.name
76
+ })
77
+ </script>
78
+
79
+ <template>
80
+ <q-avatar
81
+ class="u-avatar"
82
+ :class="`size-${size}`"
83
+ @click="handleClick"
84
+ :round="round"
85
+ :rounded="!round"
86
+ :icon="icon"
87
+ v-bind="$attrs"
88
+ >
89
+ <img v-if="image" :src="image" :alt="`avatar ${name}`" :aria-label="name" />
90
+ <span
91
+ v-if="!image"
92
+ class="name"
93
+ :class="`text-${color} text-caption-${labelSize}`"
94
+ >
95
+ {{ initials }}
96
+ </span>
97
+ <UBadgeStd
98
+ v-if="showIndicator"
99
+ :color="indicatorColor"
100
+ :class="`indicator`"
101
+ size="xs"
102
+ type="indicator"
103
+ />
104
+ <slot name="item" />
105
+ </q-avatar>
106
+ </template>
107
+ <style lang="sass">
108
+ .u-avatar
109
+ position: relative
110
+ background: $blue-1
111
+
112
+ &.rounded-borders
113
+ border-radius: $xxs
114
+
115
+ &.size-lg.rounded-borders,&.size-xl.rounded-borders
116
+ border-radius: $xs
117
+
118
+ &.size-sm
119
+ width: $ba
120
+ height: $ba
121
+
122
+ .indicator
123
+ width: $xs
124
+ height: $xs
125
+
126
+ .q-avatar__content .name
127
+ line-height: $xs !important
128
+
129
+ &.size-md
130
+ width: $ms
131
+ height: $ms
132
+
133
+ .indicator
134
+ width: $xs
135
+ height: $xs
136
+
137
+ &.size-lg
138
+ width: $md
139
+ height: $md
140
+
141
+ .indicator
142
+ width: $sm
143
+ height: $sm
144
+
145
+ &.size-xl
146
+ width: $lg
147
+ height: $lg
148
+
149
+ .indicator
150
+ width: $ba
151
+ height: $ba
152
+
153
+ .indicator
154
+ position: absolute
155
+ bottom: 0
156
+ right: 0
157
+ width: $sm
158
+ height: $sm
159
+ border: 1.5px solid $neutral-1
160
+ background: $neutral-4
161
+ </style>
@@ -0,0 +1,119 @@
1
+ <script setup>
2
+ import { computed } from 'vue'
3
+ import UTooltip from './UTooltip.vue'
4
+ import UAvatar from './UAvatar.vue'
5
+ const props = defineProps({
6
+ color: {
7
+ type: String,
8
+ default: 'primary',
9
+ },
10
+ icon: {
11
+ type: String,
12
+ },
13
+ size: {
14
+ type: String,
15
+ },
16
+ image: {
17
+ type: String,
18
+ },
19
+ images: {
20
+ type: Array,
21
+ },
22
+ indicatorColor: {
23
+ type: String,
24
+ default: 'neutral-4',
25
+ },
26
+ name: {
27
+ type: String,
28
+ required: true,
29
+ },
30
+ showIndicator: {
31
+ type: Boolean,
32
+ default: false,
33
+ },
34
+ round: {
35
+ type: Boolean,
36
+ default: true,
37
+ },
38
+ avatarLimit: {
39
+ type: Number,
40
+ default: 4,
41
+ },
42
+ })
43
+
44
+ const emit = defineEmits(['onClick'])
45
+
46
+ const handleClick = () => {
47
+ return emit('onClick')
48
+ }
49
+
50
+ const displayedAvatars = computed(() => {
51
+ return props.images.slice(0, props.avatarLimit)
52
+ })
53
+ const remainingAvatars = computed(() => {
54
+ return props.images.slice(props.avatarLimit)
55
+ })
56
+ </script>
57
+
58
+ <template>
59
+ <UAvatar
60
+ v-for="(avatar, index) in displayedAvatars"
61
+ class="avatarGroup"
62
+ :name="avatar.name"
63
+ :size="size"
64
+ :showIndicator="showIndicator"
65
+ :indicatorColor="indicatorColor"
66
+ :round="round"
67
+ :image="avatar.image"
68
+ :key="index"
69
+ @click="handleClick"
70
+ />
71
+
72
+ <q-icon
73
+ :class="`avatarGroup additonalUsersAvatar size-${size} fa-duotone fa-solid fa-circle-plus`"
74
+ color="primary"
75
+ aria-label="See more Avatar"
76
+ v-if="remainingAvatars.length"
77
+ >
78
+ <UTooltip
79
+ anchor="bottom middle"
80
+ description=""
81
+ self="top middle"
82
+ :offset="[4, 4]"
83
+ >
84
+ <template v-slot:item>
85
+ <div class="text-body-xs tooltip-text">
86
+ <span v-for="(avatar, index) in remainingAvatars" :key="index">
87
+ {{ avatar.name }}<br />
88
+ </span>
89
+ </div>
90
+ </template>
91
+ </UTooltip>
92
+ </q-icon>
93
+ </template>
94
+ <style lang="sass">
95
+ .additonalUsersAvatar:after
96
+ background-color: $blue-1
97
+ border-radius:50%
98
+
99
+ .additonalUsersAvatar
100
+ cursor: pointer
101
+
102
+ &.size-sm
103
+ font-size: $ba !important
104
+
105
+ &.size-md
106
+ font-size: $ms !important
107
+
108
+ &.size-lg
109
+ font-size: $md !important
110
+
111
+ &.size-xl
112
+ font-size: $lg !important
113
+
114
+ .avatarGroup
115
+ margin: -0.125rem
116
+ .avatarGroup:not(:nth-child(1)) .q-avatar__content
117
+ border: 1.5px solid $neutral-1
118
+ background : lightgray 0px -0.033px / 100% 150.273% no-repeat
119
+ </style>
@@ -0,0 +1,91 @@
1
+ <script setup>
2
+ import { computed } from 'vue'
3
+
4
+ const props = defineProps({
5
+ color: {
6
+ type: String,
7
+ default: 'primary',
8
+ },
9
+ label: {
10
+ type: String,
11
+ default: '',
12
+ },
13
+ size: {
14
+ type: String,
15
+ default: 'md',
16
+ validator: (val) => ['xxs', 'xs', 'sm', 'md', 'lg'].includes(val),
17
+ },
18
+ type: {
19
+ type: String,
20
+ default: 'basic',
21
+ validator: (val) => ['basic', 'indicator'].includes(val),
22
+ },
23
+ })
24
+
25
+ const currentColor = computed(() => {
26
+ if (props.color === 'neutral') {
27
+ return 'neutral-6'
28
+ }
29
+ return props.color
30
+ })
31
+ </script>
32
+
33
+ <template>
34
+ <q-badge
35
+ class="u-badge"
36
+ :class="[
37
+ type === 'basic' ? 'type-basic' : 'type-indicator justify-center',
38
+ `size-${size}`,
39
+ type === 'basic'
40
+ ? size === 'md'
41
+ ? `text-overline-xs`
42
+ : `text-overline-sm`
43
+ : '',
44
+ ]"
45
+ :color="currentColor"
46
+ rounded
47
+ tabindex="0"
48
+ :aria-label="label"
49
+ >
50
+ <div v-if="type === 'basic'">
51
+ {{ label }}
52
+ </div>
53
+ <slot name="default" />
54
+ </q-badge>
55
+ </template>
56
+
57
+ <style lang="sass">
58
+ .u-badge
59
+ min-height:0px
60
+
61
+ &.size-xxs
62
+ width: $xs
63
+ height: $xs
64
+ padding: 0px
65
+
66
+ &.size-xs
67
+ width: $sm
68
+ height: $sm
69
+ padding: 0px
70
+
71
+ &.size-sm
72
+ width: $ba
73
+ height: $ba
74
+ padding: 0px
75
+
76
+ &.size-md
77
+ letter-spacing: 0.24px
78
+ line-height: 1.013rem
79
+
80
+ &.size-lg
81
+ width: $md
82
+ height: $ms
83
+ justify-content: center
84
+ line-height: 0
85
+
86
+ &.type-basic
87
+ border: 1.5px solid $neutral-1
88
+
89
+ &.type-indicator
90
+ border: 1px solid $neutral-1
91
+ </style>
@@ -0,0 +1,115 @@
1
+ <script setup>
2
+ import UBtnStd from './UBtnStd.vue'
3
+
4
+ const props = defineProps({
5
+ type: {
6
+ type: String,
7
+ default: 'info',
8
+ },
9
+ icon: {
10
+ type: String,
11
+ default: 'fa-kit-duotone fa-circle-info',
12
+ },
13
+ message: {
14
+ type: String,
15
+ default: '',
16
+ required: true,
17
+ },
18
+ show: {
19
+ type: Boolean,
20
+ default: false,
21
+ required: true,
22
+ },
23
+ primaryActionLabel: {
24
+ type: String,
25
+ },
26
+ secondaryActionLabel: {
27
+ type: String,
28
+ },
29
+ })
30
+
31
+ const emit = defineEmits(['primaryAction', 'secondaryAction'])
32
+
33
+ const handlePrimaryActionClick = () => {
34
+ emit('primaryAction')
35
+ }
36
+
37
+ const handleSecondaryActionClick = () => {
38
+ emit('secondaryAction')
39
+ }
40
+ </script>
41
+
42
+ <template>
43
+ <q-banner
44
+ v-if="show && message"
45
+ inline-actions
46
+ :class="`u-banner u-banner-${type} ${!icon ? 'no-padding-label' : ''}`"
47
+ tabindex="0"
48
+ >
49
+ <template v-slot:avatar>
50
+ <q-icon
51
+ v-if="icon"
52
+ aria-label="Banner Icon"
53
+ :class="icon"
54
+ size="1.5rem"
55
+ :color="type"
56
+ alt="Banner Info Icon"
57
+ />
58
+ </template>
59
+ <span class="text-caption-lg">{{ message }}</span>
60
+ <template v-slot:action>
61
+ <u-btn-std
62
+ v-if="primaryActionLabel"
63
+ :flat="false"
64
+ :label="primaryActionLabel"
65
+ @onClick="handlePrimaryActionClick"
66
+ :color="type"
67
+ size="md"
68
+ />
69
+ <u-btn-std
70
+ class="q-ml-sm"
71
+ :outline="true"
72
+ v-if="secondaryActionLabel"
73
+ :label="secondaryActionLabel"
74
+ @onClick="handleSecondaryActionClick"
75
+ :color="type"
76
+ size="md"
77
+ />
78
+ </template>
79
+ </q-banner>
80
+ </template>
81
+
82
+ <style lang="sass">
83
+ .u-banner
84
+ min-width: 24.563rem
85
+ padding: $sm
86
+ .q-banner__avatar
87
+ align-self: center
88
+
89
+ .q-banner__content
90
+ padding-left: $xs !important
91
+
92
+ .u-banner-positive
93
+ background: $green-1 !important
94
+ color: $green-7 !important
95
+
96
+ .u-banner-info
97
+ background: $purple-1 !important
98
+ color: $info !important
99
+
100
+ .u-banner-warning
101
+ background: $orange-1 !important
102
+ color: $orange-7 !important
103
+
104
+ .u-banner-accent
105
+ background: $red-1 !important
106
+ color: $red-7 !important
107
+
108
+ .u-banner-primary
109
+ background: $blue-1 !important
110
+ color: $primary !important
111
+
112
+ .no-padding-label
113
+ .q-banner__content
114
+ padding-left: 0px !important
115
+ </style>
@@ -0,0 +1,67 @@
1
+ <script setup>
2
+ const props = defineProps({
3
+ align: {
4
+ type: String,
5
+ default: 'left',
6
+ },
7
+ links: {
8
+ type: Array,
9
+ default: () => [],
10
+ },
11
+ clickable: {
12
+ type: Boolean,
13
+ default: true,
14
+ },
15
+ showActiveRoute: {
16
+ type: Boolean,
17
+ default: true,
18
+ },
19
+ activeColor: {
20
+ type: String,
21
+ default: 'primary',
22
+ },
23
+ })
24
+ </script>
25
+ <template>
26
+ <q-breadcrumbs
27
+ gutter="none"
28
+ v-bind="$attrs"
29
+ class="u-breadcrumb"
30
+ :align="align"
31
+ :active-color="activeColor"
32
+ >
33
+ <q-breadcrumbs-el
34
+ v-for="(link, index) of links"
35
+ :key="index"
36
+ :label="link.label"
37
+ :to="link.to"
38
+ :class="`breadcrumb-label text-caption-lg ${
39
+ index === 0
40
+ ? 'q-mr-xs'
41
+ : index === links.length - 1
42
+ ? 'q-ml-xs'
43
+ : 'q-mx-xs'
44
+ } ${!showActiveRoute ? 'hide-active-route' : null} ${
45
+ !clickable ? 'non-clickable-route' : null
46
+ }`"
47
+ />
48
+ </q-breadcrumbs>
49
+ </template>
50
+ <style lang="sass">
51
+ .u-breadcrumb
52
+ .q-breadcrumbs__separator
53
+ font-size: 1rem
54
+ font-weight: 500
55
+ line-height: 1.25rem
56
+ letter-spacing: 0.03333rem
57
+
58
+ .q-router-link--active
59
+ cursor: default
60
+
61
+ .hide-active-route
62
+ color: $dark !important
63
+
64
+ .non-clickable-route
65
+ cursor: default !important
66
+ pointer-events: none
67
+ </style>