@vc-shell/framework 1.1.3 → 1.1.5

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 (136) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/core/directives/loading/styles.css +1 -1
  3. package/core/plugins/modularity/README.md +347 -17
  4. package/core/plugins/modularity/loader.ts +217 -3
  5. package/dist/core/plugins/modularity/loader.d.ts +4 -0
  6. package/dist/core/plugins/modularity/loader.d.ts.map +1 -1
  7. package/dist/framework.js +1 -1
  8. package/dist/{index-DRL7VovM.js → index-BBHl6nap.js} +1 -1
  9. package/dist/{index-BKR3ecN5.js → index-BG6N4UCY.js} +1 -1
  10. package/dist/{index-Cv6c_1IG.js → index-Bv5as3SI.js} +1 -1
  11. package/dist/{index-BUHouW8T.js → index-C4VyqVxv.js} +1 -1
  12. package/dist/{index-Ek7_XgGk.js → index-CKLiFGZ-.js} +1 -1
  13. package/dist/{index-B83didIY.js → index-CTmAMa_1.js} +1 -1
  14. package/dist/{index-C6tcHNVl.js → index-CtGZgIiV.js} +1 -1
  15. package/dist/{index-DyGIijU2.js → index-D13Jcezf.js} +1 -1
  16. package/dist/{index-CnQ56kqq.js → index-DbpKygJh.js} +1 -1
  17. package/dist/{index-Dfcy8w9c.js → index-DgCtSr4P.js} +1 -1
  18. package/dist/{index-TSGli7LX.js → index-Dh1XjfgY.js} +1 -1
  19. package/dist/{index-BW3krAiY.js → index-DpDbQQg6.js} +1 -1
  20. package/dist/{index-CxMfHOup.js → index-DwuQbDJG.js} +1 -1
  21. package/dist/{index-xFQltarK.js → index-Fhuqbkq2.js} +1 -1
  22. package/dist/{index-BN-_cebP.js → index-JTAZpxKF.js} +1 -1
  23. package/dist/{index-UnPPbmRc.js → index-MKD2CP5c.js} +49617 -48276
  24. package/dist/{index-CGyGGihY.js → index-Q3k1PYzc.js} +1 -1
  25. package/dist/index.css +3 -3
  26. package/dist/shared/components/generic-dropdown/generic-dropdown.vue.d.ts.map +1 -1
  27. package/dist/shared/components/settings-menu-item/settings-menu-item.vue.d.ts.map +1 -1
  28. package/dist/tsconfig.tsbuildinfo +1 -1
  29. package/dist/ui/components/atoms/vc-icon/composables/index.d.ts +3 -0
  30. package/dist/ui/components/atoms/vc-icon/composables/index.d.ts.map +1 -0
  31. package/dist/ui/components/atoms/vc-icon/composables/use-icon-type.d.ts +22 -0
  32. package/dist/ui/components/atoms/vc-icon/composables/use-icon-type.d.ts.map +1 -0
  33. package/dist/ui/components/atoms/vc-icon/composables/use-icon.d.ts +30 -0
  34. package/dist/ui/components/atoms/vc-icon/composables/use-icon.d.ts.map +1 -0
  35. package/dist/ui/components/atoms/vc-icon/index.d.ts +1 -0
  36. package/dist/ui/components/atoms/vc-icon/index.d.ts.map +1 -1
  37. package/dist/ui/components/atoms/vc-icon/types.d.ts +31 -0
  38. package/dist/ui/components/atoms/vc-icon/types.d.ts.map +1 -0
  39. package/dist/ui/components/atoms/vc-icon/vc-bootstrap-icon.vue.d.ts +18 -4
  40. package/dist/ui/components/atoms/vc-icon/vc-bootstrap-icon.vue.d.ts.map +1 -1
  41. package/dist/ui/components/atoms/vc-icon/vc-fontawesome-icon.vue.d.ts +15 -2
  42. package/dist/ui/components/atoms/vc-icon/vc-fontawesome-icon.vue.d.ts.map +1 -1
  43. package/dist/ui/components/atoms/vc-icon/vc-icon-examples.vue.d.ts.map +1 -1
  44. package/dist/ui/components/atoms/vc-icon/vc-icon-test.vue.d.ts.map +1 -1
  45. package/dist/ui/components/atoms/vc-icon/vc-icon.vue.d.ts +11 -6
  46. package/dist/ui/components/atoms/vc-icon/vc-icon.vue.d.ts.map +1 -1
  47. package/dist/ui/components/atoms/vc-icon/vc-lucide-icon.vue.d.ts +21 -4
  48. package/dist/ui/components/atoms/vc-icon/vc-lucide-icon.vue.d.ts.map +1 -1
  49. package/dist/ui/components/atoms/vc-icon/vc-material-icon.vue.d.ts +30 -4
  50. package/dist/ui/components/atoms/vc-icon/vc-material-icon.vue.d.ts.map +1 -1
  51. package/dist/ui/components/atoms/vc-icon/vc-svg-icon.vue.d.ts +33 -0
  52. package/dist/ui/components/atoms/vc-icon/vc-svg-icon.vue.d.ts.map +1 -0
  53. package/dist/ui/components/atoms/vc-widget/vc-widget.vue.d.ts.map +1 -1
  54. package/dist/ui/components/molecules/vc-pagination/vc-pagination.vue.d.ts.map +1 -1
  55. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts.map +1 -1
  56. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/_internal/vc-blade-toolbar-button/props.d.ts +14 -0
  57. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/_internal/vc-blade-toolbar-button/props.d.ts.map +1 -0
  58. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/_internal/vc-blade-toolbar-button/vc-blade-toolbar-base-button.vue.d.ts +2 -13
  59. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/_internal/vc-blade-toolbar-button/vc-blade-toolbar-base-button.vue.d.ts.map +1 -1
  60. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/_internal/vc-blade-toolbar-button/vc-blade-toolbar-circle-button.vue.d.ts +1 -1
  61. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/_internal/vc-blade-toolbar-button/vc-blade-toolbar-circle-button.vue.d.ts.map +1 -1
  62. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue.d.ts.map +1 -1
  63. package/dist/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue.d.ts +1 -1
  64. package/dist/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue.d.ts.map +1 -1
  65. package/dist/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue.d.ts +1 -1
  66. package/dist/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue.d.ts.map +1 -1
  67. package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-body/vc-table-body.vue.d.ts +1 -1
  68. package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-body/vc-table-body.vue.d.ts.map +1 -1
  69. package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-columns-header/vc-table-columns-header.vue.d.ts +1 -1
  70. package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-columns-header/vc-table-columns-header.vue.d.ts.map +1 -1
  71. package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-row/vc-table-row.vue.d.ts +1 -1
  72. package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-row/vc-table-row.vue.d.ts.map +1 -1
  73. package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/vc-table-desktop-view.vue.d.ts +1 -1
  74. package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/vc-table-desktop-view.vue.d.ts.map +1 -1
  75. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-view/vc-table-mobile-view.vue.d.ts +1 -1
  76. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-view/vc-table-mobile-view.vue.d.ts.map +1 -1
  77. package/dist/ui/components/organisms/vc-table/composables/useTableActions.d.ts +1 -1
  78. package/dist/ui/components/organisms/vc-table/composables/useTableActions.d.ts.map +1 -1
  79. package/dist/ui/components/organisms/vc-table/composables/useTableColumnReorder.d.ts +1 -1
  80. package/dist/ui/components/organisms/vc-table/composables/useTableColumnReorder.d.ts.map +1 -1
  81. package/dist/ui/components/organisms/vc-table/composables/useTableColumnResize.d.ts +1 -1
  82. package/dist/ui/components/organisms/vc-table/composables/useTableColumnResize.d.ts.map +1 -1
  83. package/dist/ui/components/organisms/vc-table/composables/useTableRowReorder.d.ts +1 -1
  84. package/dist/ui/components/organisms/vc-table/composables/useTableRowReorder.d.ts.map +1 -1
  85. package/dist/ui/components/organisms/vc-table/composables/useTableSelection.d.ts +1 -1
  86. package/dist/ui/components/organisms/vc-table/composables/useTableSelection.d.ts.map +1 -1
  87. package/dist/ui/components/organisms/vc-table/composables/useTableState.d.ts +1 -1
  88. package/dist/ui/components/organisms/vc-table/composables/useTableState.d.ts.map +1 -1
  89. package/dist/ui/components/organisms/vc-table/types.d.ts +36 -0
  90. package/dist/ui/components/organisms/vc-table/types.d.ts.map +1 -0
  91. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts +2 -34
  92. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
  93. package/package.json +4 -4
  94. package/shared/components/generic-dropdown/generic-dropdown.vue +1 -1
  95. package/shared/components/settings-menu-item/settings-menu-item.vue +1 -6
  96. package/shared/components/user-dropdown-button/_internal/user-info.vue +3 -3
  97. package/ui/components/atoms/vc-icon/README.md +198 -220
  98. package/ui/components/atoms/vc-icon/composables/index.ts +2 -0
  99. package/ui/components/atoms/vc-icon/composables/use-icon-type.ts +83 -0
  100. package/ui/components/atoms/vc-icon/composables/use-icon.ts +129 -0
  101. package/ui/components/atoms/vc-icon/index.ts +1 -0
  102. package/ui/components/atoms/vc-icon/types.ts +36 -0
  103. package/ui/components/atoms/vc-icon/vc-bootstrap-icon.vue +111 -10
  104. package/ui/components/atoms/vc-icon/vc-fontawesome-icon.vue +119 -17
  105. package/ui/components/atoms/vc-icon/vc-icon-examples.vue +485 -124
  106. package/ui/components/atoms/vc-icon/vc-icon-test.vue +399 -209
  107. package/ui/components/atoms/vc-icon/vc-icon.stories.ts +502 -56
  108. package/ui/components/atoms/vc-icon/vc-icon.vue +240 -155
  109. package/ui/components/atoms/vc-icon/vc-lucide-icon.vue +163 -33
  110. package/ui/components/atoms/vc-icon/vc-material-icon.vue +136 -30
  111. package/ui/components/atoms/vc-icon/vc-svg-icon.vue +168 -0
  112. package/ui/components/atoms/vc-widget/vc-widget.stories.ts +13 -0
  113. package/ui/components/atoms/vc-widget/vc-widget.vue +2 -0
  114. package/ui/components/molecules/vc-multivalue/vc-multivalue.vue +1 -1
  115. package/ui/components/molecules/vc-pagination/vc-pagination.vue +23 -14
  116. package/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarHeader.vue +2 -2
  117. package/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue +2 -3
  118. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/_internal/vc-blade-toolbar-button/props.ts +14 -0
  119. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/_internal/vc-blade-toolbar-button/vc-blade-toolbar-base-button.vue +1 -12
  120. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/_internal/vc-blade-toolbar-button/vc-blade-toolbar-circle-button.vue +1 -1
  121. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue +65 -32
  122. package/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue +1 -1
  123. package/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue +1 -1
  124. package/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-body/vc-table-body.vue +1 -1
  125. package/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-columns-header/vc-table-columns-header.vue +1 -1
  126. package/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-row/vc-table-row.vue +1 -1
  127. package/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/vc-table-desktop-view.vue +1 -1
  128. package/ui/components/organisms/vc-table/_internal/vc-table-mobile-view/vc-table-mobile-view.vue +1 -1
  129. package/ui/components/organisms/vc-table/composables/useTableActions.ts +1 -1
  130. package/ui/components/organisms/vc-table/composables/useTableColumnReorder.ts +1 -1
  131. package/ui/components/organisms/vc-table/composables/useTableColumnResize.ts +1 -1
  132. package/ui/components/organisms/vc-table/composables/useTableRowReorder.ts +1 -1
  133. package/ui/components/organisms/vc-table/composables/useTableSelection.ts +1 -1
  134. package/ui/components/organisms/vc-table/composables/useTableState.ts +1 -1
  135. package/ui/components/organisms/vc-table/types.ts +32 -0
  136. package/ui/components/organisms/vc-table/vc-table.vue +2 -30
@@ -1,226 +1,416 @@
1
1
  <template>
2
- <div class="icon-test">
3
- <h2>Icon Size Consistency Test</h2>
4
- <p>All icons should appear visually the same size when using the same size value</p>
2
+ <div class="tw-p-6 tw-max-w-4xl tw-mx-auto">
3
+ <h1 class="tw-text-2xl tw-font-bold tw-mb-6">Icon Component Test Suite</h1>
5
4
 
6
-
7
-
8
- <div
9
- v-for="size in sizes"
10
- :key="size"
11
- class="size-row"
12
- >
13
- <div class="size-label">Size: {{ size }}</div>
14
- <div class="icon-row">
15
- <div class="icon-box">
16
- <VcIcon
17
- icon="fas fa-home"
18
- :size="size"
19
- :use-container="useContainer"
20
- />
21
- <span>Font Awesome</span>
22
- </div>
23
- <div class="icon-box">
24
- <VcIcon
25
- icon="material-home"
26
- :size="size"
27
- :use-container="useContainer"
28
- />
29
- <span>Material</span>
30
- </div>
31
- <div class="icon-box">
32
- <VcIcon
33
- icon="bi-house"
34
- :size="size"
35
- :use-container="useContainer"
36
- />
37
- <span>Bootstrap</span>
38
- </div>
39
- <div class="icon-box">
40
- <VcIcon
41
- icon="lucide-home"
42
- :size="size"
43
- :use-container="useContainer"
44
- />
45
- <span>Lucide</span>
5
+ <div class="tw-space-y-8">
6
+ <!-- Test 1: Basic Icon Types -->
7
+ <section class="tw-border tw-border-gray-200 tw-rounded-lg tw-p-5 tw-shadow-sm">
8
+ <h2 class="tw-text-xl tw-font-bold tw-mb-3 tw-border-b tw-pb-2">Test 1: Basic Icon Types</h2>
9
+ <div class="tw-grid tw-grid-cols-4 tw-gap-6 tw-mt-4">
10
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
11
+ <VcIcon
12
+ icon="material-home"
13
+ size="l"
14
+ />
15
+ <span class="tw-text-sm tw-font-medium">Material</span>
16
+ </div>
17
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
18
+ <VcIcon
19
+ icon="bi-house"
20
+ size="l"
21
+ />
22
+ <span class="tw-text-sm tw-font-medium">Bootstrap</span>
23
+ </div>
24
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
25
+ <VcIcon
26
+ icon="lucide-home"
27
+ size="l"
28
+ />
29
+ <span class="tw-text-sm tw-font-medium">Lucide</span>
30
+ </div>
31
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
32
+ <VcIcon
33
+ icon="fas fa-home"
34
+ size="l"
35
+ />
36
+ <span class="tw-text-sm tw-font-medium">FontAwesome</span>
37
+ </div>
46
38
  </div>
47
- </div>
48
-
49
- <div class="size-label">For comparison: square with size {{ sizeValues[size] }}</div>
50
- <div
51
- class="reference-container"
52
- :class="`reference-${size}`"
53
- ></div>
54
- </div>
55
-
56
- <div class="recommendation">
57
- <h3>Recommendations</h3>
58
- <p>
59
- To ensure uniform icon sizes, the following approaches are used:
60
- <ol>
61
- <li>Unified size system for all icon types</li>
62
- <li>Optical adjustments to compensate for each library's design characteristics</li>
63
- <li>Containers slightly larger than the icon size for better visual appearance</li>
64
- </ol>
65
- </p>
66
- <p>
67
- Current optical adjustment settings:
68
- <pre>
69
- :deep(.vc-icon) {
70
- /* Optical adjustments for different icon libraries */
71
- --material-icons-scale: {{ opticalCorrections.material }}; /* Material icons need to be larger */
72
- --fontawesome-icons-scale: {{ opticalCorrections.fontawesome }}; /* FontAwesome icons need to be smaller */
73
- --bootstrap-icons-scale: {{ opticalCorrections.bootstrap }}; /* Bootstrap icons are our baseline */
74
- --lucide-icons-scale: {{ opticalCorrections.lucide }}; /* Lucide icons match bootstrap */
75
- }
76
- </pre>
77
- </p>
78
- </div>
79
- </div>
80
- </template>
81
-
82
- <script lang="ts" setup>
83
- import { ref, onMounted } from "vue";
84
- import VcIcon from "./vc-icon.vue";
85
- import type { IconSize } from "./vc-icon.vue";
86
-
87
- const sizes: IconSize[] = ["xs", "s", "m", "l", "xl", "xxl", "xxxl"];
88
- const useContainer = ref(true);
39
+ </section>
89
40
 
90
- // Size values for display
91
- const sizeValues = {
92
- xs: "12px",
93
- s: "14px",
94
- m: "18px",
95
- l: "20px",
96
- xl: "22px",
97
- xxl: "30px",
98
- xxxl: "64px"
99
- };
41
+ <!-- Test 2: Icon Sizes -->
42
+ <section class="tw-border tw-border-gray-200 tw-rounded-lg tw-p-5 tw-shadow-sm">
43
+ <h2 class="tw-text-xl tw-font-bold tw-mb-3 tw-border-b tw-pb-2">Test 2: Icon Sizes</h2>
44
+ <p class="tw-text-sm tw-mb-4 tw-text-gray-600">
45
+ All icons should be visually the same size when using the same size value
46
+ </p>
100
47
 
101
- // Optical adjustments for different icon types
102
- const opticalCorrections = ref({
103
- material: 1.2,
104
- bootstrap: 1.0,
105
- lucide: 1.0,
106
- fontawesome: 0.9
107
- });
108
-
109
- // Get current values from CSS on load
110
- onMounted(() => {
111
- const style = getComputedStyle(document.documentElement);
112
-
113
- const materialCorrection = style.getPropertyValue('--material-icons-scale').trim();
114
- const bootstrapCorrection = style.getPropertyValue('--bootstrap-icons-scale').trim();
115
- const lucideCorrection = style.getPropertyValue('--lucide-icons-scale').trim();
116
- const fontawesomeCorrection = style.getPropertyValue('--fontawesome-icons-scale').trim();
117
-
118
- if (materialCorrection) opticalCorrections.value.material = parseFloat(materialCorrection);
119
- if (bootstrapCorrection) opticalCorrections.value.bootstrap = parseFloat(bootstrapCorrection);
120
- if (lucideCorrection) opticalCorrections.value.lucide = parseFloat(lucideCorrection);
121
- if (fontawesomeCorrection) opticalCorrections.value.fontawesome = parseFloat(fontawesomeCorrection);
122
- });
123
- </script>
48
+ <div class="tw-space-y-6">
49
+ <div class="tw-bg-gray-50 tw-p-4 tw-rounded-lg">
50
+ <h3 class="tw-font-semibold tw-mb-3">Size: XS</h3>
51
+ <div class="tw-flex tw-flex-row tw-gap-8 tw-items-center tw-justify-center">
52
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
53
+ <VcIcon
54
+ icon="material-home"
55
+ size="xs"
56
+ />
57
+ <span class="tw-text-xs">Material</span>
58
+ </div>
59
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
60
+ <VcIcon
61
+ icon="bi-house"
62
+ size="xs"
63
+ />
64
+ <span class="tw-text-xs">Bootstrap</span>
65
+ </div>
66
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
67
+ <VcIcon
68
+ icon="lucide-home"
69
+ size="xs"
70
+ />
71
+ <span class="tw-text-xs">Lucide</span>
72
+ </div>
73
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
74
+ <VcIcon
75
+ icon="fas fa-home"
76
+ size="xs"
77
+ />
78
+ <span class="tw-text-xs">FontAwesome</span>
79
+ </div>
80
+ </div>
81
+ </div>
124
82
 
125
- <style lang="scss" scoped>
126
- .icon-test {
127
- padding: 20px;
128
- font-family: sans-serif;
83
+ <div class="tw-bg-gray-50 tw-p-4 tw-rounded-lg">
84
+ <h3 class="tw-font-semibold tw-mb-3">Size: M (default)</h3>
85
+ <div class="tw-flex tw-flex-row tw-gap-8 tw-items-center tw-justify-center">
86
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
87
+ <VcIcon icon="material-home" />
88
+ <span class="tw-text-xs">Material</span>
89
+ </div>
90
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
91
+ <VcIcon icon="bi-house" />
92
+ <span class="tw-text-xs">Bootstrap</span>
93
+ </div>
94
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
95
+ <VcIcon icon="lucide-home" />
96
+ <span class="tw-text-xs">Lucide</span>
97
+ </div>
98
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
99
+ <VcIcon icon="fas fa-home" />
100
+ <span class="tw-text-xs">FontAwesome</span>
101
+ </div>
102
+ </div>
103
+ </div>
129
104
 
130
- h2, h3 {
131
- margin-bottom: 16px;
132
- }
133
-
134
-
135
-
136
- .size-row {
137
- margin-bottom: 40px;
138
- border: 1px solid #eee;
139
- padding: 20px;
140
- border-radius: 8px;
141
- }
142
-
143
- .size-label {
144
- font-size: 16px;
145
- font-weight: bold;
146
- margin-bottom: 16px;
147
- margin-top: 20px;
148
- }
149
-
150
- .icon-row {
151
- display: flex;
152
- align-items: center;
153
- justify-content: space-around;
154
- margin-bottom: 30px;
155
-
156
- .icon-box {
157
- display: flex;
158
- flex-direction: column;
159
- align-items: center;
160
-
161
- span {
162
- margin-top: 10px;
163
- font-size: 12px;
164
- }
165
- }
166
- }
105
+ <div class="tw-bg-gray-50 tw-p-4 tw-rounded-lg">
106
+ <h3 class="tw-font-semibold tw-mb-3">Size: XL</h3>
107
+ <div class="tw-flex tw-flex-row tw-gap-8 tw-items-center tw-justify-center">
108
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
109
+ <VcIcon
110
+ icon="material-home"
111
+ size="xl"
112
+ />
113
+ <span class="tw-text-xs">Material</span>
114
+ </div>
115
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
116
+ <VcIcon
117
+ icon="bi-house"
118
+ size="xl"
119
+ />
120
+ <span class="tw-text-xs">Bootstrap</span>
121
+ </div>
122
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
123
+ <VcIcon
124
+ icon="lucide-home"
125
+ size="xl"
126
+ />
127
+ <span class="tw-text-xs">Lucide</span>
128
+ </div>
129
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
130
+ <VcIcon
131
+ icon="fas fa-home"
132
+ size="xl"
133
+ />
134
+ <span class="tw-text-xs">FontAwesome</span>
135
+ </div>
136
+ </div>
137
+ </div>
138
+ </div>
139
+ </section>
167
140
 
168
- .reference-container {
169
- border: 1px dashed #ccc;
170
- background-color: rgba(200, 200, 200, 0.2);
141
+ <!-- Test 3: Color Variants -->
142
+ <section class="tw-border tw-border-gray-200 tw-rounded-lg tw-p-5 tw-shadow-sm">
143
+ <h2 class="tw-text-xl tw-font-bold tw-mb-3 tw-border-b tw-pb-2">Test 3: Color Variants</h2>
144
+ <div class="tw-space-y-4 tw-mt-4">
145
+ <div class="tw-flex tw-flex-row tw-gap-4 tw-items-center">
146
+ <div class="tw-w-24 tw-font-medium tw-text-right">Default:</div>
147
+ <div class="tw-flex tw-gap-6">
148
+ <VcIcon
149
+ icon="material-info"
150
+ size="l"
151
+ />
152
+ <VcIcon
153
+ icon="bi-info-circle"
154
+ size="l"
155
+ />
156
+ <VcIcon
157
+ icon="lucide-info"
158
+ size="l"
159
+ />
160
+ <VcIcon
161
+ icon="fas fa-info-circle"
162
+ size="l"
163
+ />
164
+ </div>
165
+ </div>
171
166
 
172
- &.reference-xs { width: 12px; height: 12px; }
173
- &.reference-s { width: 14px; height: 14px; }
174
- &.reference-m { width: 18px; height: 18px; }
175
- &.reference-l { width: 20px; height: 20px; }
176
- &.reference-xl { width: 22px; height: 22px; }
177
- &.reference-xxl { width: 30px; height: 30px; }
178
- &.reference-xxxl { width: 64px; height: 64px; }
179
- }
167
+ <div class="tw-flex tw-flex-row tw-gap-4 tw-items-center">
168
+ <div class="tw-w-24 tw-font-medium tw-text-right">Warning:</div>
169
+ <div class="tw-flex tw-gap-6">
170
+ <VcIcon
171
+ icon="material-warning"
172
+ variant="warning"
173
+ size="l"
174
+ />
175
+ <VcIcon
176
+ icon="bi-exclamation-triangle"
177
+ variant="warning"
178
+ size="l"
179
+ />
180
+ <VcIcon
181
+ icon="lucide-alert-triangle"
182
+ variant="warning"
183
+ size="l"
184
+ />
185
+ <VcIcon
186
+ icon="fas fa-exclamation-triangle"
187
+ variant="warning"
188
+ size="l"
189
+ />
190
+ </div>
191
+ </div>
180
192
 
181
- .recommendation {
182
- margin-top: 30px;
183
- padding: 20px;
184
- background-color: #f8f9fa;
185
- border-radius: 8px;
193
+ <div class="tw-flex tw-flex-row tw-gap-4 tw-items-center">
194
+ <div class="tw-w-24 tw-font-medium tw-text-right">Danger:</div>
195
+ <div class="tw-flex tw-gap-6">
196
+ <VcIcon
197
+ icon="material-error"
198
+ variant="danger"
199
+ size="l"
200
+ />
201
+ <VcIcon
202
+ icon="bi-exclamation-circle"
203
+ variant="danger"
204
+ size="l"
205
+ />
206
+ <VcIcon
207
+ icon="lucide-alert-circle"
208
+ variant="danger"
209
+ size="l"
210
+ />
211
+ <VcIcon
212
+ icon="fas fa-exclamation-circle"
213
+ variant="danger"
214
+ size="l"
215
+ />
216
+ </div>
217
+ </div>
186
218
 
187
- h3 {
188
- margin-top: 0;
189
- margin-bottom: 16px;
190
- }
219
+ <div class="tw-flex tw-flex-row tw-gap-4 tw-items-center">
220
+ <div class="tw-w-24 tw-font-medium tw-text-right">Success:</div>
221
+ <div class="tw-flex tw-gap-6">
222
+ <VcIcon
223
+ icon="material-check_circle"
224
+ variant="success"
225
+ size="l"
226
+ />
227
+ <VcIcon
228
+ icon="bi-check-circle"
229
+ variant="success"
230
+ size="l"
231
+ />
232
+ <VcIcon
233
+ icon="lucide-check-circle"
234
+ variant="success"
235
+ size="l"
236
+ />
237
+ <VcIcon
238
+ icon="fas fa-check-circle"
239
+ variant="success"
240
+ size="l"
241
+ />
242
+ </div>
243
+ </div>
244
+ </div>
245
+ </section>
191
246
 
192
- p {
193
- margin-bottom: 16px;
247
+ <!-- Test 4: Custom Size -->
248
+ <section class="tw-border tw-border-gray-200 tw-rounded-lg tw-p-5 tw-shadow-sm">
249
+ <h2 class="tw-text-xl tw-font-bold tw-mb-3 tw-border-b tw-pb-2">Test 5: Custom Size</h2>
250
+ <div class="tw-flex tw-flex-row tw-gap-8 tw-items-end tw-justify-center tw-mt-4">
251
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
252
+ <VcIcon
253
+ icon="material-star"
254
+ :custom-size="32"
255
+ />
256
+ <span class="tw-text-xs">Material (32px)</span>
257
+ </div>
258
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
259
+ <VcIcon
260
+ icon="bi-star"
261
+ :custom-size="32"
262
+ />
263
+ <span class="tw-text-xs">Bootstrap (32px)</span>
264
+ </div>
265
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
266
+ <VcIcon
267
+ icon="lucide-star"
268
+ :custom-size="32"
269
+ />
270
+ <span class="tw-text-xs">Lucide (32px)</span>
271
+ </div>
272
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
273
+ <VcIcon
274
+ icon="fas fa-star"
275
+ :custom-size="32"
276
+ />
277
+ <span class="tw-text-xs">FontAwesome (32px)</span>
278
+ </div>
279
+ </div>
280
+ </section>
194
281
 
195
- &:last-child {
196
- margin-bottom: 0;
197
- }
198
- }
282
+ <!-- Test 5: With/Without Container -->
283
+ <section class="tw-border tw-border-gray-200 tw-rounded-lg tw-p-5 tw-shadow-sm">
284
+ <h2 class="tw-text-xl tw-font-bold tw-mb-3 tw-border-b tw-pb-2">Test 5: With/Without Container</h2>
285
+ <div class="tw-space-y-6 tw-mt-4">
286
+ <div class="tw-bg-gray-50 tw-p-4 tw-rounded-lg">
287
+ <h3 class="tw-font-semibold tw-mb-3">With Container (default)</h3>
288
+ <div class="tw-flex tw-flex-row tw-gap-8 tw-items-center tw-justify-center tw-bg-blue-50 tw-p-4 tw-rounded">
289
+ <VcIcon
290
+ icon="material-home"
291
+ size="l"
292
+ />
293
+ <VcIcon
294
+ icon="bi-house"
295
+ size="l"
296
+ />
297
+ <VcIcon
298
+ icon="lucide-home"
299
+ size="l"
300
+ />
301
+ <VcIcon
302
+ icon="fas fa-home"
303
+ size="l"
304
+ />
305
+ </div>
306
+ </div>
199
307
 
200
- ol {
201
- padding-left: 20px;
202
- margin: 10px 0;
308
+ <div class="tw-bg-gray-50 tw-p-4 tw-rounded-lg">
309
+ <h3 class="tw-font-semibold tw-mb-3">Without Container</h3>
310
+ <div class="tw-flex tw-flex-row tw-gap-8 tw-items-center tw-justify-center tw-bg-blue-50 tw-p-4 tw-rounded">
311
+ <VcIcon
312
+ icon="material-home"
313
+ :use-container="false"
314
+ size="l"
315
+ />
316
+ <VcIcon
317
+ icon="bi-house"
318
+ :use-container="false"
319
+ size="l"
320
+ />
321
+ <VcIcon
322
+ icon="lucide-home"
323
+ :use-container="false"
324
+ size="l"
325
+ />
326
+ <VcIcon
327
+ icon="fas fa-home"
328
+ :use-container="false"
329
+ size="l"
330
+ />
331
+ </div>
332
+ </div>
333
+ </div>
334
+ </section>
203
335
 
204
- li {
205
- margin-bottom: 10px;
206
- }
207
- }
336
+ <!-- Test 6: Icon Size Comparison -->
337
+ <section class="tw-border tw-border-gray-200 tw-rounded-lg tw-p-5 tw-shadow-sm">
338
+ <h2 class="tw-text-xl tw-font-bold tw-mb-3 tw-border-b tw-pb-2">Test 6: Icon Size Comparison</h2>
339
+ <div class="tw-space-y-6 tw-mt-4">
340
+ <div class="tw-bg-gray-50 tw-p-4 tw-rounded-lg">
341
+ <h3 class="tw-font-semibold tw-mb-3">Size "M" Comparison</h3>
342
+ <div class="tw-flex tw-flex-row tw-gap-8 tw-items-center tw-justify-center">
343
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
344
+ <VcIcon
345
+ icon="material-home"
346
+ size="m"
347
+ />
348
+ <span class="tw-text-xs">Material</span>
349
+ </div>
350
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
351
+ <VcIcon
352
+ icon="bi-house"
353
+ size="m"
354
+ />
355
+ <span class="tw-text-xs">Bootstrap</span>
356
+ </div>
357
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
358
+ <VcIcon
359
+ icon="lucide-home"
360
+ size="m"
361
+ />
362
+ <span class="tw-text-xs">Lucide</span>
363
+ </div>
364
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
365
+ <VcIcon
366
+ icon="fas fa-home"
367
+ size="m"
368
+ />
369
+ <span class="tw-text-xs">FontAwesome</span>
370
+ </div>
371
+ </div>
372
+ </div>
208
373
 
209
- code {
210
- background-color: #eee;
211
- padding: 2px 4px;
212
- border-radius: 4px;
213
- font-family: monospace;
214
- }
374
+ <div class="tw-bg-gray-50 tw-p-4 tw-rounded-lg">
375
+ <h3 class="tw-font-semibold tw-mb-3">Heart Icons Comparison</h3>
376
+ <div class="tw-flex tw-flex-row tw-gap-8 tw-items-center tw-justify-center">
377
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
378
+ <VcIcon
379
+ icon="material-favorite"
380
+ size="xl"
381
+ />
382
+ <span class="tw-text-xs">Material</span>
383
+ </div>
384
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
385
+ <VcIcon
386
+ icon="bi-heart"
387
+ size="xl"
388
+ />
389
+ <span class="tw-text-xs">Bootstrap</span>
390
+ </div>
391
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
392
+ <VcIcon
393
+ icon="lucide-heart"
394
+ size="xl"
395
+ />
396
+ <span class="tw-text-xs">Lucide</span>
397
+ </div>
398
+ <div class="tw-flex tw-flex-col tw-items-center tw-gap-2">
399
+ <VcIcon
400
+ icon="fas fa-heart"
401
+ size="xl"
402
+ />
403
+ <span class="tw-text-xs">FontAwesome</span>
404
+ </div>
405
+ </div>
406
+ </div>
407
+ </div>
408
+ </section>
409
+ </div>
410
+ </div>
411
+ </template>
215
412
 
216
- pre {
217
- background-color: #f1f1f1;
218
- padding: 10px;
219
- border-radius: 4px;
220
- overflow: auto;
221
- font-family: monospace;
222
- font-size: 13px;
223
- }
224
- }
225
- }
226
- </style>
413
+ <script setup lang="ts">
414
+ import { VcIcon } from "./index";
415
+ import type { IconSize } from "./vc-icon.vue";
416
+ </script>