pgo-uiux2 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/.env +1 -0
  2. package/.env.production +1 -0
  3. package/.prettierrc +13 -0
  4. package/.vscode/extensions.json +3 -0
  5. package/BUTTON_GUIDE.md +257 -0
  6. package/README.md +49 -0
  7. package/THEME_REFERENCE.md +310 -0
  8. package/eslint.config.ts +27 -0
  9. package/index.html +13 -0
  10. package/package.json +85 -0
  11. package/public/favicon.ico +0 -0
  12. package/src/App.vue +368 -0
  13. package/src/assets/fonts/Faruma.ttf +0 -0
  14. package/src/components/examples/AppBarExample.vue +101 -0
  15. package/src/components/examples/AvatarExample.vue +47 -0
  16. package/src/components/examples/BannerExample.vue +287 -0
  17. package/src/components/examples/BaseInputExample.vue +25 -0
  18. package/src/components/examples/BreadcrumbExample.vue +53 -0
  19. package/src/components/examples/CardExample.vue +77 -0
  20. package/src/components/examples/ChipExample.vue +225 -0
  21. package/src/components/examples/DatePickerExample.vue +31 -0
  22. package/src/components/examples/DropdownExample.vue +84 -0
  23. package/src/components/examples/EditorExample.vue +200 -0
  24. package/src/components/examples/ExpansionPanelExample.vue +42 -0
  25. package/src/components/examples/FileUploadExample.vue +40 -0
  26. package/src/components/examples/FormExample.vue +121 -0
  27. package/src/components/examples/HugeTest.vue +8 -0
  28. package/src/components/examples/LayoutContainerExample.vue +80 -0
  29. package/src/components/examples/ModalExample.vue +82 -0
  30. package/src/components/examples/NavDrawerExample.vue +170 -0
  31. package/src/components/examples/NumberFieldExample.vue +145 -0
  32. package/src/components/examples/RadioButtonExample.vue +161 -0
  33. package/src/components/examples/SearchExample.vue +322 -0
  34. package/src/components/examples/SelectExample.vue +121 -0
  35. package/src/components/examples/StackedTableViewExample.vue +53 -0
  36. package/src/components/examples/TabExample.vue +336 -0
  37. package/src/components/examples/TableExample.vue +228 -0
  38. package/src/components/examples/TextFieldExample.vue +181 -0
  39. package/src/components/examples/TextareaExample.vue +173 -0
  40. package/src/components/examples/ThemeToggle.vue +50 -0
  41. package/src/components/examples/TimelineExample.vue +66 -0
  42. package/src/components/examples/TipTapEditorExample.vue +20 -0
  43. package/src/components/examples/TooltipExample.vue +53 -0
  44. package/src/components/examples/VueDatePickerShowcase.vue +214 -0
  45. package/src/components/examples/_DatePickerExample.vue +33 -0
  46. package/src/components/examples/__FormExample.vue +77 -0
  47. package/src/components/index.ts +25 -0
  48. package/src/components/pgo/AppBar.vue +347 -0
  49. package/src/components/pgo/Avatar.vue +139 -0
  50. package/src/components/pgo/Banner.vue +300 -0
  51. package/src/components/pgo/Breadcrumb.vue +101 -0
  52. package/src/components/pgo/Button.vue +171 -0
  53. package/src/components/pgo/Card.vue +178 -0
  54. package/src/components/pgo/ConfirmationModel.vue +32 -0
  55. package/src/components/pgo/DataTable.vue +845 -0
  56. package/src/components/pgo/DatePicker/CalendarPanel.vue +43 -0
  57. package/src/components/pgo/DatePicker/__DatePicker.vue +122 -0
  58. package/src/components/pgo/DatePicker/types.ts +11 -0
  59. package/src/components/pgo/DatePicker/useCalendar.ts +39 -0
  60. package/src/components/pgo/DatePicker/useDatePicker.ts +31 -0
  61. package/src/components/pgo/Deprecated/ToastContainer.vue +51 -0
  62. package/src/components/pgo/Deprecated/ToastItem.vue +55 -0
  63. package/src/components/pgo/Dropdown.vue +296 -0
  64. package/src/components/pgo/DropdownItem.vue +40 -0
  65. package/src/components/pgo/Editor.vue +511 -0
  66. package/src/components/pgo/ExpansionPanel.vue +185 -0
  67. package/src/components/pgo/Footer.vue +39 -0
  68. package/src/components/pgo/HeroIcon.vue +124 -0
  69. package/src/components/pgo/InputSearch.vue +194 -0
  70. package/src/components/pgo/LayoutContainer.vue +104 -0
  71. package/src/components/pgo/Main.vue +37 -0
  72. package/src/components/pgo/Modal.vue +273 -0
  73. package/src/components/pgo/NavDrawer.vue +127 -0
  74. package/src/components/pgo/NavDrawerItem.vue +161 -0
  75. package/src/components/pgo/NavigationDrawer.vue +849 -0
  76. package/src/components/pgo/OLDNavDrawer.vue +661 -0
  77. package/src/components/pgo/OldAppBar.vue +223 -0
  78. package/src/components/pgo/PApp.vue +102 -0
  79. package/src/components/pgo/Pagination.vue +242 -0
  80. package/src/components/pgo/Search copy.vue +310 -0
  81. package/src/components/pgo/Search.vue +411 -0
  82. package/src/components/pgo/StackedTableView.vue +167 -0
  83. package/src/components/pgo/Tab.vue +617 -0
  84. package/src/components/pgo/TestInput.vue +395 -0
  85. package/src/components/pgo/Timeline.vue +367 -0
  86. package/src/components/pgo/TimelineItem.vue +80 -0
  87. package/src/components/pgo/TipTapEditor.vue +315 -0
  88. package/src/components/pgo/Tooltip.NOTES.md +12 -0
  89. package/src/components/pgo/Tooltip.PROPS.md +21 -0
  90. package/src/components/pgo/Tooltip.vue +281 -0
  91. package/src/components/pgo/base/Base.vue +444 -0
  92. package/src/components/pgo/buttons/Chip.vue +324 -0
  93. package/src/components/pgo/buttons/ChipGroup.vue +224 -0
  94. package/src/components/pgo/buttons/Radio.vue +424 -0
  95. package/src/components/pgo/filters/FilterSection.vue +188 -0
  96. package/src/components/pgo/filters/Searchbar.vue +216 -0
  97. package/src/components/pgo/forms/DynamicForm.vue +45 -0
  98. package/src/components/pgo/forms/Form.vue +132 -0
  99. package/src/components/pgo/index.ts +15 -0
  100. package/src/components/pgo/inputs/Checkbox.vue +320 -0
  101. package/src/components/pgo/inputs/DatePicker.vue +395 -0
  102. package/src/components/pgo/inputs/FileUpload.vue +326 -0
  103. package/src/components/pgo/inputs/NumberField.vue +243 -0
  104. package/src/components/pgo/inputs/Radio.vue +162 -0
  105. package/src/components/pgo/inputs/RadioGroup.vue +188 -0
  106. package/src/components/pgo/inputs/Select.vue +535 -0
  107. package/src/components/pgo/inputs/TextField.vue +194 -0
  108. package/src/components/pgo/inputs/Textarea.vue +181 -0
  109. package/src/main.js +12 -0
  110. package/src/pgo-components/_index.js +31 -0
  111. package/src/pgo-components/assets/fonts/Faruma.ttf +0 -0
  112. package/src/pgo-components/assets/fonts/logo.png +0 -0
  113. package/src/pgo-components/composables/useTheme.js +10 -0
  114. package/src/pgo-components/directives/tooltip-directive.ts +393 -0
  115. package/src/pgo-components/index.js +96 -0
  116. package/src/pgo-components/lib/componentConfig.js +147 -0
  117. package/src/pgo-components/lib/core/composables/_useCalendar.ts +127 -0
  118. package/src/pgo-components/lib/core/composables/useDefaults.ts +15 -0
  119. package/src/pgo-components/lib/core/composables/useLanguageSelect.js +0 -0
  120. package/src/pgo-components/lib/core/composables/useRtl.ts +12 -0
  121. package/src/pgo-components/lib/core/defaults/createDefaults.ts +5 -0
  122. package/src/pgo-components/lib/core/defaults/defaults.ts +7 -0
  123. package/src/pgo-components/lib/core/rtl/rtl.ts +3 -0
  124. package/src/pgo-components/lib/core/rtl/setRtl.ts +19 -0
  125. package/src/pgo-components/lib/drawerState.ts +3 -0
  126. package/src/pgo-components/lib/i18n/defaultLables.js +71 -0
  127. package/src/pgo-components/lib/i18n/i18nPlugin.js +52 -0
  128. package/src/pgo-components/lib/i18n/useI18n.js +35 -0
  129. package/src/pgo-components/lib/index.ts +38 -0
  130. package/src/pgo-components/pages/Component.vue +7 -0
  131. package/src/pgo-components/pages/ComponentRenderer.vue +85 -0
  132. package/src/pgo-components/pages/Home.vue +130 -0
  133. package/src/pgo-components/pages/ListView.vue +370 -0
  134. package/src/pgo-components/pages/Page1.vue +296 -0
  135. package/src/pgo-components/pages/_Page1.vue +180 -0
  136. package/src/pgo-components/plugins/SnackBar.vue +251 -0
  137. package/src/pgo-components/plugins/SnackBarContainer.vue +53 -0
  138. package/src/pgo-components/plugins/SnackBarPlugin.ts +136 -0
  139. package/src/pgo-components/plugins/theme-plugin.js +114 -0
  140. package/src/pgo-components/plugins/types.ts +46 -0
  141. package/src/pgo-components/plugins/useSnackBar.js +11 -0
  142. package/src/pgo-components/plugins/useSnackBar.ts +21 -0
  143. package/src/pgo-components/plugins/validation-plugin.js +11 -0
  144. package/src/pgo-components/services/Entry.json +813 -0
  145. package/src/pgo-components/services/axios.js +54 -0
  146. package/src/pgo-components/services/data.json +90 -0
  147. package/src/pgo-components/services/person.json +260 -0
  148. package/src/pgo-components/services/toast.ts +44 -0
  149. package/src/pgo-components/styles/global.css +234 -0
  150. package/src/pgo-components/styles/reset.css +96 -0
  151. package/src/pgo-components/styles/tokens.css +18 -0
  152. package/src/pgo-components/styles/utilities/border-radius.css +57 -0
  153. package/src/pgo-components/styles/utilities/borders.css +85 -0
  154. package/src/pgo-components/styles/utilities/colors.css +38 -0
  155. package/src/pgo-components/styles/utilities/cursor.css +19 -0
  156. package/src/pgo-components/styles/utilities/display.css +78 -0
  157. package/src/pgo-components/styles/utilities/elevation.css +33 -0
  158. package/src/pgo-components/styles/utilities/flex.css +403 -0
  159. package/src/pgo-components/styles/utilities/float.css +41 -0
  160. package/src/pgo-components/styles/utilities/hover.css +9 -0
  161. package/src/pgo-components/styles/utilities/index.css +18 -0
  162. package/src/pgo-components/styles/utilities/opacity.css +27 -0
  163. package/src/pgo-components/styles/utilities/overflow.css +26 -0
  164. package/src/pgo-components/styles/utilities/palette.css +515 -0
  165. package/src/pgo-components/styles/utilities/position.css +14 -0
  166. package/src/pgo-components/styles/utilities/sizing.css +70 -0
  167. package/src/pgo-components/styles/utilities/spacing.css +578 -0
  168. package/src/pgo-components/styles/utilities/transitions.css +58 -0
  169. package/src/pgo-components/styles/utilities/typography.css +91 -0
  170. package/src/pgo-components/styles/utilities/z-index.css +11 -0
  171. package/src/pgo-components/tokens/index.js +337 -0
  172. package/src/router/index.js +88 -0
  173. package/src/shims-vue.d.ts +14 -0
  174. package/src/validations/validationRules.js +50 -0
  175. package/tailwind.config.js +73 -0
  176. package/test.php +5 -0
  177. package/tsconfig.json +25 -0
  178. package/ui +31 -0
  179. package/ui.pgo.mv.conf +18 -0
  180. package/vite.config.js +42 -0
@@ -0,0 +1,91 @@
1
+ @layer utilities {
2
+ /* =========================
3
+ Headings
4
+ ========================= */
5
+ .vts-text-h1 { font-size: 6rem; font-weight: 300; line-height: 1; letter-spacing: -0.015625em; }
6
+ .vts-text-h2 { font-size: 3.75rem; font-weight: 300; line-height: 1; letter-spacing: -0.0083333333em; }
7
+ .vts-text-h3 { font-size: 3rem; font-weight: 400; line-height: 1.05; letter-spacing: normal; }
8
+ .vts-text-h4 { font-size: 2.125rem; font-weight: 400; line-height: 1.175; letter-spacing: 0.0073529412em; }
9
+ .vts-text-h5 { font-size: 1.5rem; font-weight: 400; line-height: 1.333; }
10
+ .vts-text-h6 { font-size: 1.25rem; font-weight: 500; line-height: 1.6; letter-spacing: 0.0125em; }
11
+
12
+ /* =========================
13
+ Subtitles
14
+ ========================= */
15
+ .vts-text-subtitle-1 { font-size: 1rem; font-weight: normal; line-height: 1.75; letter-spacing: 0.009375em; }
16
+ .vts-text-subtitle-2 { font-size: 0.875rem; font-weight: 500; line-height: 1.6; letter-spacing: 0.0071428571em; }
17
+
18
+ /* =========================
19
+ Body text
20
+ ========================= */
21
+ .vts-text-body-1 { font-size: 1rem; font-weight: 400; line-height: 1.5; letter-spacing: 0.03125em; }
22
+ .vts-text-body-2 { font-size: 0.875rem; font-weight: 400; line-height: 1.425; letter-spacing: 0.0178571429em; }
23
+
24
+ /* =========================
25
+ Button
26
+ ========================= */
27
+ .vts-text-button { font-size: 0.875rem; font-weight: 500; line-height: 2.6; letter-spacing: 0.0892857143em; text-transform: uppercase; }
28
+
29
+ /* =========================
30
+ Caption / Overline
31
+ ========================= */
32
+ .vts-text-caption { font-size: 0.75rem; font-weight: 400; line-height: 1.667; letter-spacing: 0.0333333333em; }
33
+ .vts-text-overline { font-size: 0.75rem; font-weight: 500; line-height: 2.667; letter-spacing: 0.1666666667em; text-transform: uppercase; }
34
+
35
+ /* =========================
36
+ Emphasis
37
+ ========================= */
38
+ .vts-text-high-emphasis { color: rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity)); }
39
+ .vts-text-medium-emphasis { color: rgba(var(--v-theme-on-background), var(--v-medium-emphasis-opacity)); }
40
+ .vts-text-disabled { color: rgba(var(--v-theme-on-background), var(--v-disabled-opacity)); }
41
+
42
+ /* =========================
43
+ Text transform
44
+ ========================= */
45
+ .vts-text-uppercase { text-transform: uppercase; }
46
+ .vts-text-lowercase { text-transform: lowercase; }
47
+ .vts-text-capitalize { text-transform: capitalize; }
48
+ .vts-text-none { text-transform: none; }
49
+
50
+ /* =========================
51
+ Text alignment
52
+ ========================= */
53
+ .vts-text-start { text-align: start; }
54
+ .vts-text-center { text-align: center; }
55
+ .vts-text-end { text-align: end; }
56
+ .vts-text-justify { text-align: justify; }
57
+ .vts-text-left { text-align: left; }
58
+ .vts-text-right { text-align: right; }
59
+
60
+ /* =========================
61
+ Text overflow / wrapping
62
+ ========================= */
63
+ .vts-text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
64
+ .vts-text-no-wrap { white-space: nowrap; }
65
+ .vts-text-pre-wrap { white-space: pre-wrap; }
66
+ .vts-text-break { overflow-wrap: break-word; }
67
+
68
+ /* =========================
69
+ Text decoration
70
+ ========================= */
71
+ .vts-text-decoration-none { text-decoration: none; }
72
+ .vts-text-decoration-overline { text-decoration: overline; }
73
+ .vts-text-decoration-underline { text-decoration: underline; }
74
+ .vts-text-decoration-line-through { text-decoration: line-through; }
75
+
76
+ /* =========================
77
+ Font weight
78
+ ========================= */
79
+ .vts-font-weight-black { font-weight: 900; }
80
+ .vts-font-weight-bold { font-weight: 700; }
81
+ .vts-font-weight-semibold { font-weight: 600; }
82
+ .vts-font-weight-medium { font-weight: 500; }
83
+ .vts-font-weight-regular { font-weight: 400; }
84
+ .vts-font-weight-light { font-weight: 300; }
85
+ .vts-font-weight-thin { font-weight: 100; }
86
+
87
+ /* =========================
88
+ Font style
89
+ ========================= */
90
+ .vts-font-italic { font-style: italic; }
91
+ }
@@ -0,0 +1,11 @@
1
+ /* prettier-ignore */
2
+ @layer utilities {
3
+ /* Z-Index Utilities */
4
+ .vts-z-auto { z-index: auto; }
5
+ .vts-z-0 { z-index: 0; }
6
+ .vts-z-10 { z-index: 10; }
7
+ .vts-z-20 { z-index: 20; }
8
+ .vts-z-30 { z-index: 30; }
9
+ .vts-z-40 { z-index: 40; }
10
+ .vts-z-50 { z-index: 50; }
11
+ }
@@ -0,0 +1,337 @@
1
+ export const themes = {
2
+ default: {
3
+ light: {
4
+ color: {
5
+ text: '#0b0b0b',
6
+ textSecondary: '#6b7280',
7
+ background: '#ffffff',
8
+ surface: '#f7f7f8',
9
+ surfaceElevated: '#f9fafb',
10
+ primary: '#950050',
11
+ primaryText: '#ffffff',
12
+ secondary: '#64748b',
13
+ secondaryText: '#ffffff',
14
+ muted: '#6b7280',
15
+ border: 'rgba(0,0,0,0.06)',
16
+ borderLight: 'rgba(0,0,0,0.04)',
17
+ borderHeavy: 'rgba(0,0,0,0.12)',
18
+ divider: 'rgba(0,0,0,0.08)',
19
+ overlay: 'rgba(0,0,0,0.5)',
20
+ success: '#10b981',
21
+ warning: '#f59e0b',
22
+ error: '#ef4444',
23
+ info: '#3b82f6',
24
+ focus: '#950050',
25
+ shadow: '#000000',
26
+ disable: '#9ca3af'
27
+ // inputBackground: '#ed0786'
28
+ },
29
+ radius: {
30
+ sm: '4px',
31
+ md: '8px',
32
+ lg: '12px',
33
+ xl: '16px',
34
+ full: '9999px'
35
+ },
36
+ shadow: {
37
+ sm: '0 1px 3px rgba(2,6,23,0.06)',
38
+ md: '0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24)',
39
+ lg: '0 4px 6px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.06)',
40
+ xl: '0 10px 15px rgba(0, 0, 0, 0.1), 0 4px 6px rgba(0, 0, 0, 0.05)'
41
+ },
42
+ elevation: {
43
+ 0: 'none',
44
+ 1: '0 1px 3px rgba(2,6,23,0.06)',
45
+ 2: '0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24)',
46
+ 3: '0 4px 6px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.06)',
47
+ 4: '0 10px 15px rgba(0, 0, 0, 0.1), 0 4px 6px rgba(0, 0, 0, 0.05)'
48
+ }
49
+ },
50
+ dark: {
51
+ color: {
52
+ text: '#e6eef8',
53
+ textSecondary: '#9aa4b2',
54
+ background: '#0b1220',
55
+ surface: '#0f1724',
56
+ surfaceElevated: '#1a2332',
57
+ primary: '#3b82f6',
58
+ primaryText: '#061225',
59
+ secondary: '#64748b',
60
+ secondaryText: '#f1f5f9',
61
+ muted: '#9aa4b2',
62
+ border: 'rgba(255,255,255,0.08)',
63
+ borderLight: 'rgba(255,255,255,0.05)',
64
+ borderHeavy: 'rgba(255,255,255,0.12)',
65
+ divider: 'rgba(255,255,255,0.1)',
66
+ overlay: 'rgba(0,0,0,0.7)',
67
+ success: '#10b981',
68
+ warning: '#f59e0b',
69
+ error: '#ef4444',
70
+ info: '#3b82f6',
71
+ focus: '#3b82f6',
72
+ shadow: '#000000',
73
+ disable: '#4b5563'
74
+ // inputBackground: '#ed0786'
75
+ },
76
+ radius: {
77
+ sm: '4px',
78
+ md: '8px',
79
+ lg: '12px',
80
+ xl: '16px',
81
+ full: '9999px'
82
+ },
83
+ shadow: {
84
+ sm: '0 1px 4px rgba(2,6,23,0.6)',
85
+ md: '0 4px 6px rgba(0, 0, 0, 0.2), 0 1px 3px rgba(0, 0, 0, 0.1)',
86
+ lg: '0 10px 15px rgba(0, 0, 0, 0.3), 0 4px 6px rgba(0, 0, 0, 0.2)',
87
+ xl: '0 20px 25px rgba(0, 0, 0, 0.4), 0 10px 10px rgba(0, 0, 0, 0.3)'
88
+ },
89
+ elevation: {
90
+ 0: 'none',
91
+ 1: '0 1px 4px rgba(2,6,23,0.6)',
92
+ 2: '0 4px 6px rgba(0, 0, 0, 0.2), 0 1px 3px rgba(0, 0, 0, 0.1)',
93
+ 3: '0 10px 15px rgba(0, 0, 0, 0.3), 0 4px 6px rgba(0, 0, 0, 0.2)',
94
+ 4: '0 20px 25px rgba(0, 0, 0, 0.4), 0 10px 10px rgba(0, 0, 0, 0.3)'
95
+ }
96
+ }
97
+ },
98
+
99
+ classic: {
100
+ light: {
101
+ color: {
102
+ text: '#1b1b18',
103
+ textSecondary: '#7a6e6e',
104
+ background: '#fffdf6',
105
+ surface: '#fff7e6',
106
+ surfaceElevated: '#fffdf6',
107
+ primary: '#9b4dca',
108
+ primaryText: '#ffffff',
109
+ secondary: '#8b7355',
110
+ secondaryText: '#ffffff',
111
+ muted: '#7a6e6e',
112
+ border: 'rgba(27,27,24,0.08)',
113
+ borderLight: 'rgba(27,27,24,0.05)',
114
+ borderHeavy: 'rgba(27,27,24,0.12)',
115
+ divider: 'rgba(27,27,24,0.1)',
116
+ overlay: 'rgba(27,27,24,0.4)',
117
+ success: '#10b981',
118
+ warning: '#f59e0b',
119
+ error: '#ef4444',
120
+ info: '#3b82f6',
121
+ focus: '#950050'
122
+ },
123
+ radius: {
124
+ sm: '3px',
125
+ md: '6px',
126
+ lg: '10px',
127
+ xl: '14px',
128
+ full: '9999px'
129
+ },
130
+ shadow: {
131
+ sm: '0 1px 2px rgba(0,0,0,0.04)',
132
+ md: '0 2px 4px rgba(0,0,0,0.06)',
133
+ lg: '0 4px 6px rgba(0,0,0,0.08)',
134
+ xl: '0 10px 15px rgba(0,0,0,0.1)'
135
+ },
136
+ elevation: {
137
+ 0: 'none',
138
+ 1: '0 1px 2px rgba(0,0,0,0.04)',
139
+ 2: '0 2px 4px rgba(0,0,0,0.06)',
140
+ 3: '0 4px 6px rgba(0,0,0,0.08)',
141
+ 4: '0 10px 15px rgba(0,0,0,0.1)'
142
+ }
143
+ },
144
+ dark: {
145
+ color: {
146
+ text: '#f6f3ee',
147
+ textSecondary: '#a8a09a',
148
+ background: '#11100f',
149
+ surface: '#191817',
150
+ surfaceElevated: '#242220',
151
+ primary: '#b083e8',
152
+ primaryText: '#0f0b10',
153
+ secondary: '#9b8b7d',
154
+ secondaryText: '#f6f3ee',
155
+ muted: '#a8a09a',
156
+ border: 'rgba(246,243,238,0.08)',
157
+ borderLight: 'rgba(246,243,238,0.05)',
158
+ borderHeavy: 'rgba(246,243,238,0.12)',
159
+ divider: 'rgba(246,243,238,0.1)',
160
+ overlay: 'rgba(17,16,15,0.7)',
161
+ success: '#10b981',
162
+ warning: '#f59e0b',
163
+ error: '#ef4444',
164
+ info: '#3b82f6',
165
+ focus: '#9b4dca'
166
+ },
167
+ radius: {
168
+ sm: '3px',
169
+ md: '6px',
170
+ lg: '10px',
171
+ xl: '14px',
172
+ full: '9999px'
173
+ },
174
+ shadow: {
175
+ sm: '0 1px 3px rgba(0,0,0,0.6)',
176
+ md: '0 2px 6px rgba(0,0,0,0.7)',
177
+ lg: '0 4px 10px rgba(0,0,0,0.8)',
178
+ xl: '0 10px 20px rgba(0,0,0,0.9)'
179
+ },
180
+ elevation: {
181
+ 0: 'none',
182
+ 1: '0 1px 3px rgba(0,0,0,0.6)',
183
+ 2: '0 2px 6px rgba(0,0,0,0.7)',
184
+ 3: '0 4px 10px rgba(0,0,0,0.8)',
185
+ 4: '0 10px 20px rgba(0,0,0,0.9)'
186
+ }
187
+ }
188
+ },
189
+
190
+ sap: {
191
+ light: {
192
+ color: {
193
+ text: '#1d1d1f', // Dark grey for text
194
+ background: '#f4f7f6', // Very light grey background to reduce glare
195
+ surface: '#ffffff', // White surface for cards, inputs, etc.
196
+ primary: '#006c8e', // SAP Blue for primary elements (buttons, links)
197
+ primaryText: '#ffffff', // White text for primary buttons and highlights
198
+ secondary: '#7d8a91', // Muted grey for secondary elements
199
+ muted: '#7d8a91', // Lighter grey for less important text and elements
200
+ success: '#4CAF50', // Success messages (green)
201
+ error: '#F44336', // Error messages (red)
202
+ warning: '#FF9800', // Warning messages (orange)
203
+ info: '#2196F3' // Informational messages (blue)
204
+ },
205
+ radius: {
206
+ sm: '4px', // Small border radius for smaller elements (buttons, inputs)
207
+ md: '8px', // Medium border radius for larger elements (cards, modals)
208
+ lg: '12px' // Larger border radius for bigger elements
209
+ },
210
+ shadow: {
211
+ sm: '0 1px 4px rgba(0, 0, 0, 0.1)', // Light shadow for subtle depth
212
+ md: '0 4px 6px rgba(0, 0, 0, 0.1)', // Medium shadow for more pronounced depth
213
+ lg: '0 10px 20px rgba(0, 0, 0, 0.15)' // Larger shadow for cards or modals
214
+ },
215
+ // typography: {
216
+ // fontFamily: '"Segoe UI", "Roboto", "Arial", system-ui, sans-serif', // SAP-like system fonts
217
+ // fontSize: {
218
+ // sm: '0.875rem', // Small text
219
+ // md: '1rem', // Regular body text
220
+ // lg: '1.25rem', // Large text for headings
221
+ // xl: '1.5rem' // Extra large text
222
+ // },
223
+ // fontWeight: {
224
+ // regular: '400', // Regular weight for text
225
+ // bold: '600' // Bold weight for headings and important text
226
+ // },
227
+ // lineHeight: {
228
+ // sm: '1.25', // Small line height for compact text
229
+ // md: '1.5', // Standard line height for readability
230
+ // lg: '1.75' // Larger line height for headings
231
+ // }
232
+ // },
233
+ // spacing: {
234
+ // xs: '4px', // Extra small spacing (margins/paddings)
235
+ // sm: '8px', // Small spacing (margins/paddings)
236
+ // md: '16px', // Medium spacing (margins/paddings)
237
+ // lg: '32px', // Large spacing (margins/paddings)
238
+ // xl: '64px' // Extra large spacing (margins/paddings)
239
+ // },
240
+ // buttons: {
241
+ // primary: {
242
+ // backgroundColor: '#006c8e', // SAP Blue for primary buttons
243
+ // color: '#ffffff', // White text on primary buttons
244
+ // borderRadius: '8px', // Medium rounded corners
245
+ // padding: '8px 16px', // Padding for primary buttons
246
+ // boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)', // Soft shadow for depth
247
+ // hover: {
248
+ // backgroundColor: '#005b72', // Darker SAP blue on hover
249
+ // boxShadow: '0 6px 10px rgba(0, 0, 0, 0.2)' // Slightly stronger shadow on hover
250
+ // }
251
+ // },
252
+ // secondary: {
253
+ // backgroundColor: '#f4f7f6', // Light background for secondary buttons
254
+ // color: '#006c8e', // SAP blue text for secondary buttons
255
+ // borderRadius: '8px', // Medium rounded corners
256
+ // padding: '8px 16px', // Padding for secondary buttons
257
+ // border: '1px solid #006c8e', // Border with SAP blue
258
+ // hover: {
259
+ // backgroundColor: '#e3eaf1', // Lighter background on hover
260
+ // color: '#005b72', // Darker SAP blue on hover
261
+ // borderColor: '#005b72' // Darker border on hover
262
+ // }
263
+ // }
264
+ // },
265
+ // inputs: {
266
+ // backgroundColor: '#ffffff', // White background for inputs
267
+ // borderColor: '#cccccc', // Light grey border for inputs
268
+ // borderRadius: '4px', // Small rounded corners
269
+ // padding: '8px 12px', // Padding inside inputs
270
+ // focus: {
271
+ // borderColor: '#006c8e', // SAP Blue on focus
272
+ // boxShadow: '0 0 5px rgba(0, 108, 142, 0.4)' // Soft blue glow on focus
273
+ // }
274
+ // },
275
+ // cards: {
276
+ // backgroundColor: '#ffffff', // White background for cards
277
+ // borderColor: '#f1f1f1', // Very light grey border for cards
278
+ // borderRadius: '8px', // Medium rounded corners for cards
279
+ // boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)', // Light shadow for cards
280
+ // padding: '16px' // Padding inside cards
281
+ // },
282
+ // links: {
283
+ // color: '#006c8e', // SAP Blue for links
284
+ // hover: {
285
+ // color: '#005b72', // Darker SAP Blue on hover
286
+ // textDecoration: 'underline' // Underline on hover
287
+ // }
288
+ // },
289
+ // header: {
290
+ // backgroundColor: '#ffffff', // White background for header
291
+ // color: '#1d1d1f', // Dark text color for the header
292
+ // boxShadow: '0 2px 4px rgba(0, 0, 0, 0.1)', // Light shadow for header
293
+ // padding: '16px' // Padding for the header
294
+ // },
295
+ // footer: {
296
+ // backgroundColor: '#f4f7f6', // Light grey background for footer
297
+ // color: '#7d8a91', // Muted text color for footer
298
+ // padding: '16px' // Padding for footer
299
+ // },
300
+ // modal: {
301
+ // backgroundColor: '#ffffff', // White background for modal
302
+ // borderRadius: '8px', // Medium rounded corners for modal
303
+ // boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)', // Light shadow for modal
304
+ // padding: '24px', // Padding inside modal
305
+ // overlay: {
306
+ // backgroundColor: 'rgba(0, 0, 0, 0.4)' // Semi-transparent black overlay
307
+ // }
308
+ // },
309
+ // alert: {
310
+ // success: {
311
+ // backgroundColor: '#4CAF50', // Green background for success alerts
312
+ // color: '#ffffff', // White text for success alerts
313
+ // borderRadius: '8px', // Medium rounded corners
314
+ // padding: '8px 16px' // Padding for success alerts
315
+ // },
316
+ // error: {
317
+ // backgroundColor: '#F44336', // Red background for error alerts
318
+ // color: '#ffffff', // White text for error alerts
319
+ // borderRadius: '8px', // Medium rounded corners
320
+ // padding: '8px 16px' // Padding for error alerts
321
+ // },
322
+ // warning: {
323
+ // backgroundColor: '#FF9800', // Orange background for warning alerts
324
+ // color: '#ffffff', // White text for warning alerts
325
+ // borderRadius: '8px', // Medium rounded corners
326
+ // padding: '8px 16px' // Padding for warning alerts
327
+ // },
328
+ // info: {
329
+ // backgroundColor: '#2196F3', // Blue background for info alerts
330
+ // color: '#ffffff', // White text for info alerts
331
+ // borderRadius: '8px', // Medium rounded corners
332
+ // padding: '8px 16px' // Padding for info alerts
333
+ // }
334
+ // }
335
+ }
336
+ }
337
+ }
@@ -0,0 +1,88 @@
1
+ import { createRouter, createWebHistory } from 'vue-router'
2
+
3
+ import Home from '../pgo-components/pages/Home.vue'
4
+ import Page1 from '../pgo-components/pages/Page1.vue'
5
+ import ComponentDemo from '../pgo-components/pages/Component.vue'
6
+ import ComponentRenderer from '../pgo-components/pages/ComponentRenderer.vue'
7
+
8
+ const routes = [
9
+ {
10
+ path: '/',
11
+ name: 'Home',
12
+ component: Home,
13
+ meta: {
14
+ title: 'Home - PGO UI Components',
15
+ breadcrumb: [
16
+ { label: 'Home', to: '/' },
17
+ { label: 'Examples', to: '/asdf' },
18
+ { label: 'Page 1' }
19
+ ]
20
+ }
21
+ },
22
+ {
23
+ path: '/page/:modelName/:componentName',
24
+ name: 'Custom Home',
25
+ model: 'modelName',
26
+ componentName: 'componentName',
27
+ component: ComponentRenderer,
28
+ meta: {
29
+ title: 'Home - PGO UI Components',
30
+ breadcrumb: [
31
+ { label: 'Home', to: '/' },
32
+ { label: 'Examples', to: '/asdf' },
33
+ { label: 'Page 1' }
34
+ ]
35
+ }
36
+ },
37
+ {
38
+ path: '/Components',
39
+ name: 'Components',
40
+ component: Page1,
41
+ meta: {
42
+ title: 'Components - PGO UI Components',
43
+ breadcrumb: [
44
+ { label: 'Home', to: '/' },
45
+ { label: 'Components', to: '/Components' },
46
+ ]
47
+ }
48
+ },
49
+ {
50
+ path: '/Components/:id',
51
+ name: 'ComponentDetail',
52
+ component: ComponentDemo,
53
+ meta: {
54
+ title: 'Components - PGO UI Components',
55
+ breadcrumb: (route) => [
56
+ { label: 'Home', to: '/' },
57
+ { label: 'Components', to: '/Components' },
58
+ { label: route.params.id, to: `/Components/${route.params.id}` }
59
+ ]
60
+ }
61
+ }
62
+ // {
63
+ // path: '/:pathMatch(.*)*',
64
+ // name: 'NotFound',
65
+ // component: () => import('@/pages/NotFound.vue')
66
+ // }
67
+ ]
68
+
69
+ const router = createRouter({
70
+ history: createWebHistory(),
71
+ routes,
72
+ scrollBehavior(to, from, savedPosition) {
73
+ if (savedPosition) {
74
+ return savedPosition
75
+ } else {
76
+ return { top: 0 }
77
+ }
78
+ }
79
+ })
80
+
81
+ // Update document title
82
+ router.beforeEach((to, from, next) => {
83
+ const title = (to && to.meta && to.meta.title) ? String(to.meta.title) : 'PGO UI Components'
84
+ document.title = title
85
+ next()
86
+ })
87
+
88
+ export default router
@@ -0,0 +1,14 @@
1
+ declare module '*.vue' {
2
+ import { DefineComponent } from 'vue'
3
+ const component: DefineComponent<{}, {}, any>
4
+ export default component
5
+ }
6
+
7
+ // Add this to help JSX types be recognized
8
+ declare namespace JSX {
9
+ interface IntrinsicElements {
10
+ svg: any;
11
+ path: any;
12
+ // Add more elements if necessary, like rect, circle, etc.
13
+ }
14
+ }
@@ -0,0 +1,50 @@
1
+ const rules = {
2
+ required: (value) => {
3
+ const msg = {
4
+ en: 'This field is required.',
5
+ dv: 'ފުރަންޖެހޭ'
6
+ }
7
+ return !!value || msg
8
+ },
9
+ email: (value) => {
10
+ const pattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
11
+ return pattern.test(value) || 'Invalid email address.'
12
+ },
13
+ min: (min) => {
14
+ return (value) => {
15
+ return (value && value.length >= min) || `Minimum length is ${min} characters.`
16
+ }
17
+ },
18
+ max: (max) => {
19
+ return (value) => {
20
+ return (value && value.length <= max) || `Maximum length is ${max} characters.`
21
+ }
22
+ },
23
+ numeric: (value) => {
24
+ return !isNaN(parseFloat(value)) && isFinite(value) || 'This field must be a number.'
25
+ },
26
+ nid:(country) =>{
27
+ return (value) => {
28
+ if(country === 'mv'){
29
+ const pattern = /^A\d{6}$/
30
+ return pattern.test(value) || 'NID must start with A followed by 6 digits for Maldives'
31
+ }
32
+ // Add more country-specific NID patterns as needed
33
+ return true;
34
+ }
35
+ },
36
+ // Custom pattern validator that takes a condition function and a regex pattern
37
+ customPattern: (conditionFn, pattern, errorMsg = 'Invalid format.') => {
38
+ return (value) => {
39
+ // If condition is met, validate with pattern
40
+ if (conditionFn()) {
41
+ const regex = new RegExp(pattern)
42
+ return regex.test(value) || errorMsg
43
+ }
44
+ // If condition not met, skip validation
45
+ return true
46
+ }
47
+ }
48
+ }
49
+
50
+ export default rules;
@@ -0,0 +1,73 @@
1
+ export default {
2
+ content: [
3
+ './index.html',
4
+ './src/**/*.{vue,js,ts,jsx,tsx}',
5
+ ],
6
+ darkMode: 'selector',
7
+ safelist: [
8
+ // color backgrounds and hover variants (add any color names you use)
9
+ {
10
+ pattern: /bg-(blue|red|green|yellow|gray|purple|indigo|pink)-(50|100|200|300|400|500|600|700|800|900)/,
11
+ variants: ['hover', 'focus']
12
+ },
13
+ // text colors
14
+ {
15
+ pattern: /text-(blue|red|green|yellow|gray|purple|indigo|pink)-(50|100|200|300|400|500|600|700|800|900)/
16
+ },
17
+ // borders
18
+ {
19
+ pattern: /border-(blue|red|green|yellow|gray|purple|indigo|pink)-(50|100|200|300|400|500|600|700|800|900)/,
20
+ variants: ['hover']
21
+ }
22
+ ],
23
+ theme: {
24
+ extend: {
25
+ // Add RTL and app font families for easier usage in utilities or components
26
+ fontFamily: {
27
+ app: ['var(--app-font)'],
28
+ rtl: [
29
+ 'Faruma',
30
+ 'system-ui',
31
+ 'sans-serif',
32
+ ],
33
+ },
34
+ },
35
+ colors: {
36
+ // background: '#05644D',
37
+ primary: '#05644D',
38
+ // secondary: '#FFA500',
39
+ // third: '#1E40AF',
40
+ // appcolor: '#05644D',
41
+
42
+ // required defaults (otherwise classes like bg-white fail)
43
+ white: '#ffffff',
44
+ black: '#000000',
45
+ transparent: 'transparent',
46
+ current: 'currentColor',
47
+ },
48
+
49
+ fontFamily: {
50
+ // Make Tailwind's default font-sans use the app font CSS variable
51
+ sans: ['var(--app-font)'],
52
+ dv: ['Faruma', 'sans-serif'],
53
+ en: ['Roboto', 'sans-serif'],
54
+ // keep `app` and `rtl` in extend above for convenience
55
+ },
56
+ },
57
+
58
+ // Optional (Vuetify compatibility)
59
+ corePlugins: {
60
+ preflight: false,
61
+ },
62
+
63
+ plugins: [
64
+ // Add small utilities to toggle app font and rtl font via classes
65
+ function ({ addUtilities, theme }) {
66
+ const newUtilities = {
67
+ '.font-app': { 'font-family': theme('fontFamily.app', 'var(--app-font)') },
68
+ '.rtl-font': { 'font-family': theme('fontFamily.rtl').join(', ') },
69
+ }
70
+ addUtilities(newUtilities, { variants: ['responsive'] })
71
+ },
72
+ ],
73
+ }
package/test.php ADDED
@@ -0,0 +1,5 @@
1
+ var test = [];
2
+
3
+ test.table = tableName;
4
+ test.fields = []
5
+ test.relations = []