@usssa/component-library 1.0.0-alpha.2 → 1.0.0-alpha.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +1 -1
  2. package/package.json +5 -8
  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/components/ComponentLink.vue +26 -0
  7. package/src/components/core/UAvatar.vue +146 -0
  8. package/src/components/core/UAvatarGroup.vue +119 -0
  9. package/src/components/core/UBadgeStd.vue +91 -0
  10. package/src/components/core/UBannerStd.vue +115 -0
  11. package/src/components/core/UBtnIcon.vue +155 -0
  12. package/src/components/core/UBtnStd.vue +126 -0
  13. package/src/components/core/UBtnToggle.vue +68 -0
  14. package/src/components/core/UCheckboxStd.vue +95 -0
  15. package/src/components/core/UChip.vue +226 -0
  16. package/src/components/core/UDialogStd.vue +226 -0
  17. package/src/components/core/UInputPhoneStd.vue +297 -0
  18. package/src/components/core/UInputTextStd.vue +287 -0
  19. package/src/components/core/UMultiSelectStd.vue +259 -0
  20. package/src/components/core/UPagination.vue +97 -0
  21. package/src/components/core/URadioBtn.vue +116 -0
  22. package/src/components/core/URadioStd.vue +62 -0
  23. package/src/components/core/USelectStd.vue +233 -0
  24. package/src/components/core/UTabBtnStd.vue +167 -0
  25. package/src/components/core/UTable/UTable.vue +93 -0
  26. package/src/components/core/UTable/UTd.vue +63 -0
  27. package/src/components/core/UTable/UTh.vue +48 -0
  28. package/src/components/core/UTable/UTr.vue +20 -0
  29. package/src/components/core/UTableStd.vue +625 -0
  30. package/src/components/core/UTabsStd.vue +111 -0
  31. package/src/components/core/UToggleStd.vue +159 -0
  32. package/src/components/core/UTooltip.vue +57 -0
  33. package/src/components/index.js +49 -0
  34. package/src/composables/useNotify.js +79 -0
  35. package/src/css/app.sass +156 -0
  36. package/src/css/colors.sass +101 -0
  37. package/src/css/media.sass +1 -0
  38. package/src/css/quasar.variables.sass +119 -0
  39. package/src/css/typography.sass +0 -0
  40. package/src/css/vars/colors.variables.sass +125 -0
  41. package/src/layouts/MainLayout.vue +137 -0
  42. package/src/pages/Avatar.vue +77 -0
  43. package/src/pages/AvatarGroup.vue +139 -0
  44. package/src/pages/BadgeStd.vue +83 -0
  45. package/src/pages/BannerPage.vue +76 -0
  46. package/src/pages/BtnIcon.vue +120 -0
  47. package/src/pages/BtnStd.vue +126 -0
  48. package/src/pages/BtnToggle.vue +131 -0
  49. package/src/pages/CheckBox.vue +62 -0
  50. package/src/pages/Chip.vue +92 -0
  51. package/src/pages/ComponentBase.vue +54 -0
  52. package/src/pages/Dialog.vue +206 -0
  53. package/src/pages/ErrorNotFound.vue +11 -0
  54. package/src/pages/IndexPage.vue +11 -0
  55. package/src/pages/InputPhone.vue +152 -0
  56. package/src/pages/InputText.vue +139 -0
  57. package/src/pages/MultiSelectStd.vue +174 -0
  58. package/src/pages/NotifyPage.vue +109 -0
  59. package/src/pages/Pagination.vue +71 -0
  60. package/src/pages/Radio.vue +80 -0
  61. package/src/pages/RadioBtn.vue +104 -0
  62. package/src/pages/SelectStd.vue +160 -0
  63. package/src/pages/TabButtonPage.vue +126 -0
  64. package/src/pages/TablePage.vue +371 -0
  65. package/src/pages/TabsPage.vue +261 -0
  66. package/src/pages/TogglePage.vue +58 -0
  67. package/src/pages/TooltipPage.vue +125 -0
  68. package/src/router/index.js +34 -0
  69. package/src/router/routes.js +113 -0
  70. package/dist/spa/assets/Avatar.45667392.js +0 -9
  71. package/dist/spa/assets/AvatarGroup.99557443.js +0 -9
  72. package/dist/spa/assets/AvatarGroup.bb4cd03a.css +0 -1
  73. package/dist/spa/assets/BadgeStd.ee4129c5.js +0 -6
  74. package/dist/spa/assets/BannerPage.6c6a98c4.js +0 -10
  75. package/dist/spa/assets/BannerPage.d195fcac.css +0 -1
  76. package/dist/spa/assets/BtnIcon.89e50d2e.css +0 -1
  77. package/dist/spa/assets/BtnIcon.934f8c5b.js +0 -10
  78. package/dist/spa/assets/BtnStd.95fc4510.js +0 -11
  79. package/dist/spa/assets/CheckBox.3c204a4b.css +0 -1
  80. package/dist/spa/assets/CheckBox.fbc0bd1a.js +0 -7
  81. package/dist/spa/assets/Chip.49ffc857.js +0 -11
  82. package/dist/spa/assets/Chip.74acaa33.css +0 -1
  83. package/dist/spa/assets/ComponentBase.1ae19b7e.js +0 -1
  84. package/dist/spa/assets/ErrorNotFound.6cccfaee.js +0 -1
  85. package/dist/spa/assets/IndexPage.17d09b76.js +0 -1
  86. package/dist/spa/assets/InputText.19c0d7d1.css +0 -1
  87. package/dist/spa/assets/InputText.3fcd97a4.js +0 -20
  88. package/dist/spa/assets/KFOkCnqEu92Fr1MmgVxIIzQ.34e9582c.woff +0 -0
  89. package/dist/spa/assets/KFOlCnqEu92Fr1MmEU9fBBc-.9ce7f3ac.woff +0 -0
  90. package/dist/spa/assets/KFOlCnqEu92Fr1MmSU5fBBc-.bf14c7d7.woff +0 -0
  91. package/dist/spa/assets/KFOlCnqEu92Fr1MmWUlfBBc-.e0fd57c0.woff +0 -0
  92. package/dist/spa/assets/KFOlCnqEu92Fr1MmYUtfBBc-.f6537e32.woff +0 -0
  93. package/dist/spa/assets/KFOmCnqEu92Fr1Mu4mxM.f2abf7fb.woff +0 -0
  94. package/dist/spa/assets/MainLayout.912bb0f8.js +0 -1
  95. package/dist/spa/assets/MultiSelectStd.644b108c.js +0 -17
  96. package/dist/spa/assets/MultiSelectStd.c7af49eb.css +0 -1
  97. package/dist/spa/assets/QAvatar.5940a79e.js +0 -1
  98. package/dist/spa/assets/QCheckbox.48b43f7d.js +0 -1
  99. package/dist/spa/assets/QPage.ca395ec4.js +0 -1
  100. package/dist/spa/assets/QRadio.0a7f5e2c.js +0 -1
  101. package/dist/spa/assets/QResizeObserver.30c3566c.js +0 -1
  102. package/dist/spa/assets/QSelect.a40eb786.js +0 -1
  103. package/dist/spa/assets/QTabs.72f2507e.js +0 -1
  104. package/dist/spa/assets/QToggle.376c48be.js +0 -1
  105. package/dist/spa/assets/QTooltip.5aa8e325.js +0 -1
  106. package/dist/spa/assets/Radio.0ac35288.js +0 -7
  107. package/dist/spa/assets/Radio.aca54a89.css +0 -1
  108. package/dist/spa/assets/SelectStd.5c6891db.css +0 -1
  109. package/dist/spa/assets/SelectStd.daf1def9.js +0 -16
  110. package/dist/spa/assets/TabButtonPage.20e871dd.js +0 -7
  111. package/dist/spa/assets/TabButtonPage.36ce9f9c.css +0 -1
  112. package/dist/spa/assets/TabsPage.9b94ff39.css +0 -1
  113. package/dist/spa/assets/TabsPage.b92cccee.js +0 -9
  114. package/dist/spa/assets/TogglePage.8129b631.css +0 -1
  115. package/dist/spa/assets/TogglePage.ba6e325c.js +0 -9
  116. package/dist/spa/assets/UAvatar.dda7e478.js +0 -1
  117. package/dist/spa/assets/UAvatar.ea8daa38.css +0 -1
  118. package/dist/spa/assets/UBadgeStd.3965db9a.css +0 -1
  119. package/dist/spa/assets/UBadgeStd.e165ee05.js +0 -1
  120. package/dist/spa/assets/UBtnStd.979ec4e8.js +0 -1
  121. package/dist/spa/assets/UBtnStd.bdd4f5e5.css +0 -1
  122. package/dist/spa/assets/UTooltip.d2e04d0c.js +0 -1
  123. package/dist/spa/assets/UTooltip.efa029a7.css +0 -1
  124. package/dist/spa/assets/dom.e9d4ad51.js +0 -1
  125. package/dist/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.fd84f88b.woff +0 -0
  126. package/dist/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.4a4dbc62.woff2 +0 -0
  127. package/dist/spa/assets/format.41663636.js +0 -1
  128. package/dist/spa/assets/index.43c62a18.js +0 -21
  129. package/dist/spa/assets/index.4fbd73cf.css +0 -5
  130. package/dist/spa/assets/option-sizes.10cc02d3.js +0 -1
  131. package/dist/spa/assets/render.e67ff27a.js +0 -1
  132. package/dist/spa/assets/tooltip.7c0d0774.js +0 -8
  133. package/dist/spa/assets/touch.9135741d.js +0 -1
  134. package/dist/spa/assets/use-checkbox.44a623c0.js +0 -1
  135. package/dist/spa/favicon.ico +0 -0
  136. package/dist/spa/icons/caret-down.svg +0 -5
  137. package/dist/spa/icons/circle-xmark.svg +0 -6
  138. package/dist/spa/icons/favicon-128x128.png +0 -0
  139. package/dist/spa/icons/favicon-16x16.png +0 -0
  140. package/dist/spa/icons/favicon-32x32.png +0 -0
  141. package/dist/spa/icons/favicon-96x96.png +0 -0
  142. package/dist/spa/index.html +0 -3
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Component Library
1
+ # Component Library v1.0.0-alpha.20
2
2
 
3
3
  This library provides custom UI components for USSSA applications.
4
4
 
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@usssa/component-library",
3
- "version": "1.0.0-alpha.2",
3
+ "version": "1.0.0-alpha.20",
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": {
@@ -22,12 +22,9 @@
22
22
  "build": "quasar build",
23
23
  "start": "node --experimental-detect-module index.js"
24
24
  },
25
- "repository": {
26
- "type": "git",
27
- "url": "git+https://github.com/usssa-org/component-library.git"
28
- },
29
25
  "dependencies": {
30
26
  "@quasar/extras": "^1.16.4",
27
+ "flag-icons": "^7.2.3",
31
28
  "quasar": "^2.16.0",
32
29
  "vue": "^3.4.18",
33
30
  "vue-router": "^4.0.12"
@@ -41,7 +38,7 @@
41
38
  "npm-run-all": "^4.1.5",
42
39
  "postcss": "^8.4.14",
43
40
  "prettier": "^2.5.1",
44
- "semantic-release": "^24.0.0",
41
+ "semantic-release": "^24.1.0",
45
42
  "vite-plugin-checker": "^0.6.4"
46
43
  },
47
44
  "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,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,146 @@
1
+ <script setup>
2
+ import { computed } from 'vue'
3
+ import UBadgeStd from './UBadgeStd.vue'
4
+ const props = defineProps({
5
+ color: {
6
+ type: String,
7
+ default: 'primary',
8
+ },
9
+ icon: {
10
+ type: String,
11
+ },
12
+ size: {
13
+ type: String,
14
+ default: 'xl',
15
+ },
16
+ image: {
17
+ type: String,
18
+ },
19
+ indicatorColor: {
20
+ type: String,
21
+ default: 'neutral-4',
22
+ },
23
+ name: {
24
+ type: String,
25
+ required: true,
26
+ },
27
+ showIndicator: {
28
+ type: Boolean,
29
+ default: false,
30
+ },
31
+ icon: {
32
+ type: String,
33
+ },
34
+ round: {
35
+ type: Boolean,
36
+ default: true,
37
+ },
38
+ })
39
+
40
+ const emit = defineEmits(['onClick'])
41
+
42
+ const handleClick = () => {
43
+ return emit('onClick')
44
+ }
45
+
46
+ const labelSize = computed(() => {
47
+ if (props.size === 'sm') {
48
+ return 'xs'
49
+ }
50
+ if (props.size === 'md') {
51
+ return 'sm'
52
+ }
53
+ if (props.size === 'lg') {
54
+ return 'md'
55
+ }
56
+ if (props.size === 'xl') {
57
+ return 'lg'
58
+ }
59
+
60
+ return props.size
61
+ })
62
+ </script>
63
+
64
+ <template>
65
+ <q-avatar
66
+ class="u-avatar"
67
+ :class="`size-${size}`"
68
+ @click="handleClick"
69
+ :round="round"
70
+ :rounded="!round"
71
+ :icon="icon"
72
+ v-bind="$attrs"
73
+ >
74
+ <img v-if="image" :src="image" :alt="`avatar ${name}`" :aria-label="name" />
75
+ <span
76
+ v-if="!image"
77
+ class="name"
78
+ :class="`text-${color} text-caption-${labelSize}`"
79
+ >
80
+ {{ name }}
81
+ </span>
82
+ <UBadgeStd
83
+ v-if="showIndicator"
84
+ :color="indicatorColor"
85
+ :class="`indicator`"
86
+ size="xs"
87
+ type="indicator"
88
+ />
89
+ <slot name="item" />
90
+ </q-avatar>
91
+ </template>
92
+ <style lang="sass">
93
+ .u-avatar
94
+ position: relative
95
+ background: $blue-1
96
+
97
+ &.rounded-borders
98
+ border-radius: $xxs
99
+
100
+ &.size-lg.rounded-borders,&.size-xl.rounded-borders
101
+ border-radius: $xs
102
+
103
+ &.size-sm
104
+ width: $ba
105
+ height: $ba
106
+
107
+ .indicator
108
+ width: $xs
109
+ height: $xs
110
+
111
+ .q-avatar__content .name
112
+ line-height: $xs !important
113
+
114
+ &.size-md
115
+ width: $ms
116
+ height: $ms
117
+
118
+ .indicator
119
+ width: $xs
120
+ height: $xs
121
+
122
+ &.size-lg
123
+ width: $md
124
+ height: $md
125
+
126
+ .indicator
127
+ width: $sm
128
+ height: $sm
129
+
130
+ &.size-xl
131
+ width: $lg
132
+ height: $lg
133
+
134
+ .indicator
135
+ width: $ba
136
+ height: $ba
137
+
138
+ .indicator
139
+ position: absolute
140
+ bottom: 0
141
+ right: 0
142
+ width: $sm
143
+ height: $sm
144
+ border: 1.5px solid $neutral-1
145
+ background: $neutral-4
146
+ </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>