pgo-ui 1.0.76 → 1.0.78

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.
@@ -1,18 +1,37 @@
1
1
  <template>
2
2
  <component
3
- :is="IconAsyncComponent"
3
+ v-if="resolvedIcon"
4
+ :is="resolvedIcon"
4
5
  v-bind="attrs"
5
6
  :class="computedClass"
6
7
  :style="computedStyle"
8
+ :width="sizePx"
9
+ :height="sizePx"
7
10
  />
11
+ <svg
12
+ v-else-if="iconError"
13
+ :class="computedClass"
14
+ :style="computedStyle"
15
+ :width="sizePx"
16
+ :height="sizePx"
17
+ viewBox="0 0 24 24"
18
+ fill="none"
19
+ stroke="currentColor"
20
+ stroke-width="1.5"
21
+ aria-hidden="true"
22
+ >
23
+ <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.007H12v-.007Z" />
24
+ </svg>
8
25
  </template>
9
26
 
10
27
  <script setup lang="ts">
11
28
  import type { Component } from "vue";
12
- import { computed, useAttrs } from "vue";
13
- import { defineAsyncComponent } from "vue";
29
+ import { computed, useAttrs, shallowRef, ref, watchEffect } from "vue";
14
30
  import { rotationMap } from '../../pgo-components/lib/componentConfig'
15
31
 
32
+ // Module-level cache: avoids re-importing the same icon pack on every render
33
+ const moduleCache = new Map<string, Record<string, Component>>();
34
+
16
35
  // Props
17
36
  interface Props {
18
37
  name: string;
@@ -43,49 +62,59 @@ const normalizeName = (str: string) => {
43
62
 
44
63
  const iconName = computed(() => normalizeName(props.name));
45
64
 
46
- // Async loader
47
- const IconAsyncComponent = computed(() =>
48
- defineAsyncComponent({
49
- loader: async () => {
50
- let pack;
51
-
52
- if (props.type === "solid") {
53
- pack = await import("@heroicons/vue/24/solid");
54
- } else if (props.type === "outline") {
55
- pack = await import("@heroicons/vue/24/outline");
56
- } else if (props.type === "mini") {
57
- pack = await import("@heroicons/vue/20/solid");
58
- } else if (props.type === "micro") {
59
- pack = await import("@heroicons/vue/16/solid");
60
- } else {
61
- pack = await import("@heroicons/vue/24/outline");
62
- }
63
-
64
- const icon = (pack as any)[iconName.value];
65
-
66
- if (!icon) {
67
- throw new Error(
68
- `Icon "${iconName.value}" not found in ${props.type} icons`
69
- );
70
- }
71
-
72
- return icon as Component;
73
- },
74
-
75
- // Loading icon
76
- loadingComponent: defineAsyncComponent(
77
- async () => (await import("@heroicons/vue/24/outline")).ArrowPathIcon
78
- ),
79
-
80
- // Error fallback icon
81
- errorComponent: defineAsyncComponent(
82
- async () =>
83
- (await import("@heroicons/vue/24/outline")).ExclamationTriangleIcon
84
- ),
85
-
86
- delay: 200,
87
- timeout: 5000,
88
- })
65
+ // Stable async icon loading with module cache
66
+ const resolvedIcon = shallowRef<Component | null>(null);
67
+ const iconError = ref(false);
68
+
69
+ async function loadIconModule(type: string): Promise<Record<string, Component>> {
70
+ if (moduleCache.has(type)) {
71
+ return moduleCache.get(type)!;
72
+ }
73
+
74
+ let pack: Record<string, Component>;
75
+ if (type === "solid") {
76
+ pack = await import("@heroicons/vue/24/solid");
77
+ } else if (type === "outline") {
78
+ pack = await import("@heroicons/vue/24/outline");
79
+ } else if (type === "mini") {
80
+ pack = await import("@heroicons/vue/20/solid");
81
+ } else if (type === "micro") {
82
+ pack = await import("@heroicons/vue/16/solid");
83
+ } else {
84
+ pack = await import("@heroicons/vue/24/outline");
85
+ }
86
+
87
+ moduleCache.set(type, pack);
88
+ return pack;
89
+ }
90
+
91
+ watchEffect(async () => {
92
+ const name = iconName.value;
93
+ const type = props.type;
94
+
95
+ resolvedIcon.value = null;
96
+ iconError.value = false;
97
+
98
+ try {
99
+ const pack = await loadIconModule(type);
100
+ const icon = pack[name];
101
+
102
+ if (!icon) {
103
+ console.warn(`[HeroIcon] "${name}" not found in ${type} icons`);
104
+ iconError.value = true;
105
+ return;
106
+ }
107
+
108
+ resolvedIcon.value = icon;
109
+ } catch (e) {
110
+ console.warn(`[HeroIcon] Failed to load icon "${name}":`, e);
111
+ iconError.value = true;
112
+ }
113
+ });
114
+
115
+ // Numeric size for HTML attributes
116
+ const sizePx = computed(() =>
117
+ typeof props.size === "number" ? props.size : parseInt(String(props.size), 10) || 24
89
118
  );
90
119
 
91
120
  // Tailwind color detection
@@ -119,14 +148,17 @@ const computedStyle = computed(() => {
119
148
  const styleObj: Record<string, any> =
120
149
  typeof attrs.style === "object" ? { ...attrs.style } : {};
121
150
 
122
- const sizeCss =
123
- typeof props.size === "number" ? `${props.size}px` : props.size;
151
+ // Ensure size always has a CSS unit — size="22" (string) must become "22px"
152
+ const raw = String(props.size);
153
+ const sizeCss = /^\d+(\.\d+)?$/.test(raw) ? `${raw}px` : raw;
124
154
 
125
155
  styleObj.width = sizeCss;
126
156
  styleObj.height = sizeCss;
127
157
 
128
- // Inline CSS color if not a Tailwind class
129
- if (!isTailwindColorClass(props.color)) {
158
+ // Inline CSS color if not a Tailwind class.
159
+ // Skip 'currentColor' — it's a no-op (means "inherit") and triggers a Firefox
160
+ // SVG rendering bug inside fixed-position / transform contexts.
161
+ if (!isTailwindColorClass(props.color) && props.color !== 'currentColor') {
130
162
  styleObj.color = props.color;
131
163
  }
132
164
 
@@ -962,6 +962,7 @@ const initializeFormData = () => {
962
962
  const fetchedData = response
963
963
  FormDataList.value = response || response.data || {}
964
964
  formData.id = showId
965
+ relationId.value = response?.data?.id || response?.id
965
966
 
966
967
  props.form.fields.forEach(field => {
967
968
  if (!field || !field.key) return
@@ -34,7 +34,7 @@
34
34
  <template #control="{ attrs, events }">
35
35
  <div
36
36
  :class="[
37
- 'flex items-center h-full gap-1 min-w-0 w-full overflow-hidden',
37
+ 'flex-none items-center h-full gap-1 min-w-0 w-full overflow-hidden',
38
38
  shouldAutoHeight ? 'flex-wrap py-1 -my-1' : '',
39
39
  ]"
40
40
  >
@@ -45,10 +45,9 @@
45
45
  v-for="value in selectedValues"
46
46
  :key="extractValue(value)"
47
47
  :class="[
48
- 'inline-flex items-center gap-1 px-2 py-0.5 text-xs border rounded-md bg-gray-100 shrink-0',
48
+ 'inline-flex items-center gap-1 px-2 py-0.5 text-xs border rounded-md bg-gray-100 max-w-full min-w-0',
49
49
  textColor,
50
50
  ]"
51
- style="max-width: min(150px, 100%);"
52
51
  >
53
52
  <span class="truncate">{{ getDisplayTextForValue(value) }}</span>
54
53
  <svg
package/src/index.js CHANGED
@@ -17,6 +17,9 @@ import { drawerOpen } from './pgo-components/lib/drawerState.ts'
17
17
  import {globalRtl} from './pgo-components/lib/core/rtl/rtl.ts'
18
18
  import { setRtl } from './pgo-components/lib/core/rtl/setRtl.ts'
19
19
 
20
+ import { globalFontScale } from './pgo-components/lib/core/fontSize/fontSize.ts'
21
+ import { setFontScale, increaseFontScale, decreaseFontScale, resetFontScale } from './pgo-components/lib/core/fontSize/setFontScale.ts'
22
+
20
23
  //components
21
24
  import {Button, Card, HeroIcon} from './components/pgo/index.ts' // for Global registration
22
25
  export * from './components/pgo/index.ts' // export all components
@@ -27,6 +30,8 @@ export { i18nPlugin }
27
30
  export { globalRtl }
28
31
  export { setRtl }
29
32
  export { drawerOpen }
33
+ export { globalFontScale }
34
+ export { setFontScale, increaseFontScale, decreaseFontScale, resetFontScale }
30
35
  // export { useSnackBar }
31
36
  export { _useTheme as useTheme }
32
37
  export { createThemePlugin } from './pgo-components/plugins/theme-plugin.js'
@@ -47,6 +52,12 @@ if (typeof window !== 'undefined') {
47
52
  window.__VTS_THEMES__ = Object.keys(themes)
48
53
  }
49
54
 
55
+ // set font scale default
56
+ const savedFontScale = localStorage.getItem('fontScaleSetting')
57
+ if (savedFontScale !== null) {
58
+ setFontScale(parseInt(savedFontScale))
59
+ }
60
+
50
61
  // set rtl default
51
62
  const savedRtl = localStorage.getItem('rtlSetting')
52
63
  if (savedRtl !== null) {
@@ -70,6 +81,10 @@ export default {
70
81
  app.provide('globalRtl', globalRtl)
71
82
  app.provide('setRtl', setRtl)
72
83
  app.provide('drawerOpen', drawerOpen)
84
+ app.provide('globalFontScale', globalFontScale)
85
+ app.provide('increaseFontScale', increaseFontScale)
86
+ app.provide('decreaseFontScale', decreaseFontScale)
87
+ app.provide('resetFontScale', resetFontScale)
73
88
  app.use(i18nPlugin)
74
89
  // app.provide('snackbar', useSnackBar())
75
90
  // Do NOT use app.use(globalRtl) or app.use(setRtl)
@@ -0,0 +1,3 @@
1
+ import { ref } from "vue"
2
+
3
+ export const globalFontScale = ref(100)
@@ -0,0 +1,30 @@
1
+ import { globalFontScale } from './fontSize.ts'
2
+
3
+ export const FONT_SCALE_STEPS = [85, 100, 115, 130, 145]
4
+ const STORAGE_KEY = 'fontScaleSetting'
5
+
6
+ export function setFontScale(percentage: number) {
7
+ globalFontScale.value = percentage
8
+ localStorage.setItem(STORAGE_KEY, String(percentage))
9
+ if (typeof document !== 'undefined') {
10
+ document.documentElement.style.fontSize = `${percentage}%`
11
+ }
12
+ }
13
+
14
+ export function increaseFontScale() {
15
+ const idx = FONT_SCALE_STEPS.indexOf(globalFontScale.value)
16
+ if (idx < FONT_SCALE_STEPS.length - 1) {
17
+ setFontScale(FONT_SCALE_STEPS[idx + 1])
18
+ }
19
+ }
20
+
21
+ export function decreaseFontScale() {
22
+ const idx = FONT_SCALE_STEPS.indexOf(globalFontScale.value)
23
+ if (idx > 0) {
24
+ setFontScale(FONT_SCALE_STEPS[idx - 1])
25
+ }
26
+ }
27
+
28
+ export function resetFontScale() {
29
+ setFontScale(100)
30
+ }
@@ -5,14 +5,21 @@
5
5
  :loading="loading"
6
6
  @update:query-params="handleQueryParamsUpdate"
7
7
  /> -->
8
- <component
8
+ <!-- <component
9
9
  v-if="componentMap[DisplayComponent]"
10
10
  :is="componentMap[DisplayComponent]"
11
11
  :items="items"
12
12
  :loading="loading"
13
13
  :lang="items?.lang ?? language"
14
14
  @update:query-params="handleQueryParamsUpdate"
15
+ /> -->
16
+ <ListView v-if="items"
17
+ :items="items"
18
+ :loading="loading"
19
+ :lang="items?.lang ?? language"
20
+ @update:query-params="handleQueryParamsUpdate"
15
21
  />
22
+
16
23
  <div v-else>
17
24
  <p>{{ errormsg }}</p>
18
25
  </div>
@@ -22,7 +29,7 @@
22
29
  <script setup>
23
30
  import { ref, onMounted, watch, inject, computed, defineAsyncComponent } from 'vue'
24
31
  import { useRoute } from 'vue-router'
25
- // import {ListView} from '../../'
32
+ import ListView from '../../pgo-components/pages/ListView.vue'
26
33
 
27
34
  const { language } = inject('i18n')
28
35
  const api = inject('api')
@@ -39,7 +46,7 @@ const componentName = computed(() => route.params.componentName || '')
39
46
 
40
47
  const items = ref({})
41
48
  const loading = ref(false)
42
- const DisplayComponent = ref(null)
49
+ // const DisplayComponent = ref(null)
43
50
 
44
51
  const fetchData = async (queryParams = {}) => {
45
52
 
@@ -74,7 +81,7 @@ const fetchData = async (queryParams = {}) => {
74
81
  snackbar.show({ message: errormsg.value, variant: 'error' })
75
82
  }
76
83
  items.value = response
77
- DisplayComponent.value = response.component
84
+ // DisplayComponent.value = response.component
78
85
  // DisplayComponent.value = componentName.value
79
86
  // console.log('lang:', language.value, 'items lang:', items.value.lang)
80
87
 
@@ -90,18 +97,18 @@ const fetchData = async (queryParams = {}) => {
90
97
  }
91
98
  }
92
99
 
93
- const componentMap = computed(() => {
94
- const map = {}
95
- const usedTypes = DisplayComponent.value
100
+ // const componentMap = computed(() => {
101
+ // const map = {}
102
+ // const usedTypes = DisplayComponent.value
96
103
 
97
- if (usedTypes == "listView" || usedTypes == 'ListView' || usedTypes == 'listView2') {
98
- map['listView'] = defineAsyncComponent(() => import('../../pgo-components/pages/ListView.vue'))
99
- map['listView2'] = defineAsyncComponent(() => import('../../pgo-components/pages/ListView.vue'))
100
- map['ListView'] = defineAsyncComponent(() => import('../../pgo-components/pages/ListView.vue'))
101
- }
104
+ // if (usedTypes == "listView" || usedTypes == 'ListView' || usedTypes == 'listView2') {
105
+ // map['listView'] = defineAsyncComponent(() => import('../../pgo-components/pages/ListView.vue'))
106
+ // map['listView2'] = defineAsyncComponent(() => import('../../pgo-components/pages/ListView.vue'))
107
+ // map['ListView'] = defineAsyncComponent(() => import('../../pgo-components/pages/ListView.vue'))
108
+ // }
102
109
 
103
- return map
104
- })
110
+ // return map
111
+ // })
105
112
 
106
113
  // Handle query params update from child component
107
114
  const handleQueryParamsUpdate = (queryParams) => {
@@ -1,117 +1 @@
1
- {
2
- "component": "form",
3
- "fields": [
4
- {
5
- "key": "qazziyya_number",
6
- "inputType": "text",
7
- "label": " \u07a4\u07a6\u079f\u07a8\u0787\u07b0\u0794\u07a7 \u0782\u07a6\u0782\u07b0\u0784\u07a6\u0783\u07aa",
8
- "group": "SubmissionNumber",
9
- "disabled": false,
10
- "NotDbField": false
11
- },
12
- {
13
- "key": "submissionDetails.form_ref_number",
14
- "inputType": "label",
15
- "label": " \u078b\u07a6\u07a2\u07aa\u0788\u07a7 \u078a\u07af\u0789\u07aa \u0782\u07a6\u0782\u07b0\u0784\u07a6\u0783\u07aa",
16
- "group": "PersonInfo",
17
- "disabled": false,
18
- "NotDbField": true
19
- },
20
- {
21
- "key": "submission_id",
22
- "inputType": "text",
23
- "hidden": true
24
- },
25
- {
26
- "key": "submissionDetails.person_details",
27
- "inputType": "label",
28
- "label": "\u078b\u07a6\u07a2\u07aa\u0788\u07a7 \u078d\u07a8\u0784\u07ad \u0789\u07a9\u0780\u07a7\u078e\u07ac \u0789\u07a6\u07a2\u07aa\u078d\u07ab\u0789\u07a7\u078c\u07aa",
29
- "group": "PersonInfo",
30
- "disabled": true,
31
- "NotDbField": true
32
- },
33
- {
34
- "key": "summary",
35
- "label": "\u078c\u07a6\u078a\u07b0\u079e\u07a9\u078d\u07b0",
36
- "type": "string",
37
- "inputType": "text",
38
- "group": "SubmissionDetails",
39
- "disabled": false,
40
- "rules": "rules.required"
41
- },
42
- {
43
- "key": "file",
44
- "inputType": "file",
45
- "label": "\u078a\u07a6\u0787\u07a8\u078d\u07b0 \u0787\u07a6\u0795\u07b0\u078d\u07af\u0791\u07b0\u0786\u07aa\u0783\u07ad",
46
- "dataKey": "url",
47
- "group": "SubmissionDetails",
48
- "disabled": false,
49
- "condition": "props.mode === 'edit' ? false : true",
50
- "accept": "image\/*,application\/pdf,.doc,.docx",
51
- "multiple": true,
52
- "maxSize": "200MB",
53
- "uploadUrl": "http:\/\/v2.govapi.pgo.mv\/api\/upload\/gov\/cform"
54
- }
55
- ],
56
- "rules": "on",
57
- "crudLink": "gapi\/CForm",
58
- "createLink": "gapi\/CForm",
59
- "updateLink": "gapi\/CForm",
60
- "showLink": "gapi\/CForm",
61
- "numberOfColumns": 3,
62
- "button": [
63
- "create",
64
- "edit"
65
- ],
66
- "createTitle": "\u0787\u07a6\u0787\u07aa",
67
- "editTitle": "\u0784\u07a6\u078b\u07a6\u078d\u07aa",
68
- "groups": [
69
- {
70
- "name": "Search",
71
- "condition": "mode === 'edit' ? false : true",
72
- "title": "\u0780\u07af\u078b\u07a7",
73
- "numberOfColumns": 2
74
- },
75
- {
76
- "name": "PersonInfo",
77
- "condition": "SearchResults",
78
- "title": "\u078b\u07a6\u07a2\u07aa\u0788\u07a7 \u078d\u07a8\u0784\u07ad \u0789\u07a9\u0780\u07a7\u078e\u07ac \u0789\u07a6\u07a2\u07aa\u078d\u07ab\u0789\u07a7\u078c\u07aa",
79
- "numberOfColumns": 2
80
- },
81
- {
82
- "name": "SubmissionNumber",
83
- "title": " \u0780\u07aa\u0781\u07a6\u0780\u07a6\u0785\u07a7 \u078a\u07a6\u0783\u07a7\u078c\u07aa\u078e\u07ac \u0783\u07ac\u078a\u07a6\u0783\u07ac\u0782\u07b0\u0790\u07b0 \u0782\u07a6\u0782\u07b0\u0784\u07a6\u0783\u07aa \u0782\u07aa\u0788\u07a6\u078c\u07a6 \u07a4\u07a6\u079f\u07a8\u0787\u07b0\u0794\u07a7",
84
- "numberOfColumns": 2
85
- },
86
- {
87
- "name": "SubmissionDetails",
88
- "title": "\u078a\u07af\u0789\u07a7\u0787\u07a8 \u078e\u07aa\u0785\u07ad \u0787\u07a8\u078c\u07aa\u0783\u07aa \u078c\u07a6\u078a\u07b0\u079e\u07a9\u078d\u07aa",
89
- "numberOfColumns": 1
90
- }
91
- ],
92
- "variables": {
93
- "draftingEnabled": true,
94
- "SearchResults": true
95
- },
96
- "functions": {
97
- "handleSearchResults": "if (response && response.data ) { formData.form_ref_number = response.data.form_ref_number; formData.submission_id = response.data.id; formData.person_details = ''; if (response.data.submission_details_view) { response.data.submission_details_view.forEach(data => { formData.person_details = data.person_view.label; }); } formVariables.SearchResults = true; console.log(\"SearchResults set to true:\", formVariables.SearchResults); }",
98
- "customeColumnData": "const componentData = { type: 'CopyTextBox', CopyTextBox: [ { size: 'xs', label: item.ref_num, color: 'success' }, { size: 'xs', label: item.uuid, showIcon: true, rounded: 'full', color: 'error' } ] }; return componentData;"
99
- },
100
- "_validation_warnings": [
101
- {
102
- "path": "table.columnCustomizations.url",
103
- "rule": "customization_key_exists",
104
- "message": "Column customization \"url\" does not match any known column in the schema or columns list. If this is intentional, set displayType to \"custom\"."
105
- },
106
- {
107
- "path": "toolbar.columnCustomizations.status",
108
- "rule": "displaytype_requires_config",
109
- "message": "\"displayType\" is \"chip\" but neither a \"chip\" sub-key nor \"displayProps\" is defined. Display may fall back to plain text."
110
- },
111
- {
112
- "path": "filterSection.columnCustomizations.status",
113
- "rule": "displaytype_requires_config",
114
- "message": "\"displayType\" is \"chip\" but neither a \"chip\" sub-key nor \"displayProps\" is defined. Display may fall back to plain text."
115
- }
116
- ]
117
- }
1
+ {"component":"table","headers":[{"title":"\u0783\u07ac\u078a\u07ac\u0783\u07ac\u0782\u07b0\u0790\u07b0 \u0782\u07a6\u0782\u07b0\u0784\u07a6\u0783","value":"new_ref","lang":"en","width":"100px","columnData":"formReferenceNumbers()","displayType":"custom"},{"title":"\u078c\u07a6\u078a\u07b0\u079e\u07a9\u078d\u07b0","value":"summary","sortable":false,"hidden":false,"type":"string","displayType":"text"},{"title":" \u0783\u07a8\u0789\u07a7\u0783\u07b0\u0786\u07b0\u0790\u07b0","value":"remarks","sortable":false,"hidden":false,"type":"string","displayType":"text","lang":"en"},{"title":"\u078c\u07a6\u0787\u07b0\u0794\u07a7\u0783\u07aa\u0786\u07aa\u0783\u07a8 \u078a\u07a6\u0783\u07a7\u078c\u07b0","value":"submitter.name_div","sortable":false,"hidden":false,"type":"string","displayType":"text"},{"title":" \u0780\u07a7\u078d\u07a6\u078c\u07aa","value":"status","sortable":true,"hidden":false,"type":"string","displayType":"chip","lang":"en","chip":{"draft":{"size":"sm","label":"\u0791\u07b0\u0783\u07a7\u078a\u07b0\u0793\u07b0","color":"secondary","prependIcon":"document"},"submitted":{"size":"sm","label":"\u0790\u07a6\u0784\u07b0\u0789\u07a8\u0793\u07b0\u0786\u07aa\u0783\u07ac\u0788\u07a8\u078a\u07a6","color":"primary","prependIcon":"paper-airplane"},"rejected":{"size":"sm","label":"\u0783\u07a8\u0796\u07ac\u0786\u07b0\u0793\u07aa\u0786\u07aa\u0783\u07ac\u0788\u07a8\u078a\u07a6","color":"error","prependIcon":"x-circle"},"accepted":{"size":"sm","label":"\u0784\u07a6\u078d\u07a6\u0787\u07a8\u078e\u07a6\u0782\u07ac\u0788\u07a8\u078a\u07a6","color":"success","prependIcon":"check-circle"}},"inlineEditable":true,"width":"180px"},{"title":" \u078a\u07a6\u0787\u07a8\u078d\u07b0","value":"url","lang":"en","displayType":"docButton","docButton":{"displayLabel":false,"columnView":true}}],"pagination":{"current_page":1,"per_page":25},"datalink":"gapi\/CForm?columns=uuid,ref_num,summary,client_ref_number,remarks,submitter.name_div,file_id,status,upload_data&with=submitter:name_div&per_page=25","button":["create","edit","delete"],"showActions":true,"actions":{"showView":true,"showEdit":true,"deleteCondition":"item.status === 'draft'","showDelete":true},"functions":{"formReferenceNumbers":"const componentData = { type: 'CopyTextBox', CopyTextBox: [ { size: 'xs', label: item.ref_num, color: 'primary' }, { size: 'xs', label: item.client_ref_number ? item.client_ref_number : '--', color: 'info' }, { size: 'xs', label: item.qazziyya_number ? item.qazziyya_number : '--', color: 'success' } ] }; return componentData;"},"delete":{"title":" \u0791\u07a8\u078d\u07a9\u0793\u07b0 \u0786\u07ae\u0781\u07b0\u078d\u07a6\u0782\u07b0\u0788\u07a9\u078c\u07af","subtitle":{"en":"Are you sure you want to delete this record?","dv":"\u0789\u07a8\u0787\u07ac\u0786\u07b0\u079d\u07a6\u0782\u07b0 \u0787\u07a6\u0782\u0784\u07aa\u0783\u07a7 \u0782\u07aa\u078e\u07ac\u0782\u07b0\u078b\u07ac\u0788\u07ad\u0782\u07ac. \u0791\u07a8\u078d\u07a9\u0793\u07b0\u0786\u07ae\u0781\u07b0\u078d\u07a6\u0782\u07b0\u0788\u07a9\u078c\u07af \u061f "},"message":{"ref_num":{"en":"ref","dv":"\u0783\u07ac\u078a\u07ac\u0783\u07ac\u0782\u07b0\u0790\u07b0 \u0782\u07a6\u0782\u07b0\u0784\u07a6\u0783"}},"crudLink":"gapi\/cform"},"_validation_warnings":[{"path":"table.columnCustomizations.url","rule":"customization_key_exists","message":"Column customization \"url\" does not match any known column in the schema or columns list. If this is intentional, set displayType to \"custom\"."},{"path":"toolbar.columnCustomizations.status","rule":"displaytype_requires_config","message":"\"displayType\" is \"chip\" but neither a \"chip\" sub-key nor \"displayProps\" is defined. Display may fall back to plain text."},{"path":"filterSection.columnCustomizations.status","rule":"displaytype_requires_config","message":"\"displayType\" is \"chip\" but neither a \"chip\" sub-key nor \"displayProps\" is defined. Display may fall back to plain text."}]}
@@ -113,7 +113,8 @@ body[lang="dv"] {
113
113
  @font-face {
114
114
  font-family: 'Faruma';
115
115
  /* Your chosen name for the font */
116
- src: url('/src/pgo-components/assets/fonts/Faruma.ttf') format('truetype');
116
+ /* src: url('/src/pgo-components/assets/fonts/Faruma.ttf') format('truetype'); */
117
+ src: url('/src/pgo-components/assets/fonts/MVFaseyha.woff2') format('woff2');
117
118
  font-weight: normal;
118
119
  font-style: normal;
119
120
  font-display: swap;
@@ -37,7 +37,8 @@ body[lang="dv"]
37
37
 
38
38
  @font-face {
39
39
  font-family: 'Faruma'; /* Your chosen name for the font */
40
- src: url('/src/assets/fonts/Faruma.ttf') format('truetype');
40
+ /* src: url('/src/assets/fonts/Faruma.ttf') format('truetype'); */
41
+ src: url('/src/assets/fonts/MVFaseyha.woff2') format('woff2');
41
42
  font-weight: normal;
42
43
  font-style: normal;
43
44
  font-display: swap;
@@ -53,7 +54,7 @@ body[lang="dv"]
53
54
 
54
55
 
55
56
  /* @theme {
56
- --color-primary: oklch(54.6% 0.245 262.881);
57
+ --color-primary: oklch(54.6% 0.245 262.881);
57
58
  --color-primaryText: var(--vts-color-primaryText);
58
59
  --color-primary-50: oklch(97% 0.014 254.604);
59
60
  --color-primary-100: oklch(93.2% 0.032 255.585);
@@ -1,4 +0,0 @@
1
- import { _ as f } from "./index-BgeiUi3s.js";
2
- export {
3
- f as default
4
- };