@shwfed/config 3.0.20 → 3.0.21

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 (25) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/runtime/components/actions/buttons/2026-04-21/com.shwfed.actions.button.navigation/config.d.vue.ts +2 -2
  3. package/dist/runtime/components/actions/buttons/2026-04-21/com.shwfed.actions.button.navigation/config.vue.d.ts +2 -2
  4. package/dist/runtime/components/form/FormUnitRenderer.vue +8 -1
  5. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/config.d.vue.ts +2 -2
  6. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/config.vue.d.ts +2 -2
  7. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.navigation/config.d.vue.ts +2 -2
  8. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.navigation/config.vue.d.ts +2 -2
  9. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +2 -2
  10. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +2 -2
  11. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +2 -2
  12. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +2 -2
  13. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +2 -2
  14. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +2 -2
  15. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +2 -2
  16. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +2 -2
  17. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +2 -2
  18. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +2 -2
  19. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +2 -2
  20. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +2 -2
  21. package/dist/runtime/components/ui/icon-picker/IconPicker.d.vue.ts +0 -1
  22. package/dist/runtime/components/ui/icon-picker/IconPicker.vue +312 -28
  23. package/dist/runtime/components/ui/icon-picker/IconPicker.vue.d.ts +0 -1
  24. package/dist/runtime/components/ui/tabs/TabsList.vue +11 -1
  25. package/package.json +1 -1
package/dist/module.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "shwfed",
3
3
  "configKey": "shwfed",
4
- "version": "3.0.20",
4
+ "version": "3.0.21",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "1.0.2",
7
7
  "unbuild": "unknown"
@@ -5,14 +5,14 @@ type __VLS_ModelProps = {
5
5
  declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
6
  "update:modelValue": (value: {
7
7
  readonly type: "com.shwfed.actions.button.navigation";
8
- readonly mode: "_blank" | "_self";
8
+ readonly mode: "_self" | "_blank";
9
9
  readonly url: string;
10
10
  readonly compatibilityDate: "2026-04-21";
11
11
  }) => any;
12
12
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
13
13
  "onUpdate:modelValue"?: ((value: {
14
14
  readonly type: "com.shwfed.actions.button.navigation";
15
- readonly mode: "_blank" | "_self";
15
+ readonly mode: "_self" | "_blank";
16
16
  readonly url: string;
17
17
  readonly compatibilityDate: "2026-04-21";
18
18
  }) => any) | undefined;
@@ -5,14 +5,14 @@ type __VLS_ModelProps = {
5
5
  declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
6
  "update:modelValue": (value: {
7
7
  readonly type: "com.shwfed.actions.button.navigation";
8
- readonly mode: "_blank" | "_self";
8
+ readonly mode: "_self" | "_blank";
9
9
  readonly url: string;
10
10
  readonly compatibilityDate: "2026-04-21";
11
11
  }) => any;
12
12
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
13
13
  "onUpdate:modelValue"?: ((value: {
14
14
  readonly type: "com.shwfed.actions.button.navigation";
15
- readonly mode: "_blank" | "_self";
15
+ readonly mode: "_self" | "_blank";
16
16
  readonly url: string;
17
17
  readonly compatibilityDate: "2026-04-21";
18
18
  }) => any) | undefined;
@@ -137,7 +137,14 @@ const gridStyle = computed(() => {
137
137
  const rendered = computed(() => {
138
138
  const comp = compaction.value;
139
139
  if (!comp) return [];
140
- return placedFields.value.map((p) => ({
140
+ const ordered = placedFields.value.slice().sort((a, b) => {
141
+ const [[ax1, ay1]] = a.placement.area;
142
+ const [[bx1, by1]] = b.placement.area;
143
+ if (ay1 !== by1) return ay1 - by1;
144
+ if (ax1 !== bx1) return ax1 - bx1;
145
+ return 0;
146
+ });
147
+ return ordered.map((p) => ({
141
148
  key: p.field.id,
142
149
  style: cellStyle(p.placement, comp),
143
150
  component: p.entry.runtime,
@@ -39,7 +39,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
39
39
  readonly mode: "formula" | "prefill";
40
40
  readonly expression: string;
41
41
  } | undefined;
42
- readonly maxLength?: number | undefined;
43
42
  readonly validations?: readonly {
44
43
  readonly message: readonly [{
45
44
  readonly locale: "zh";
@@ -51,6 +50,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
51
50
  readonly warning?: boolean | undefined;
52
51
  readonly when: string;
53
52
  }[] | undefined;
53
+ readonly maxLength?: number | undefined;
54
54
  }) => any;
55
55
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
56
56
  "onUpdate:modelValue"?: ((value: {
@@ -89,7 +89,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
89
89
  readonly mode: "formula" | "prefill";
90
90
  readonly expression: string;
91
91
  } | undefined;
92
- readonly maxLength?: number | undefined;
93
92
  readonly validations?: readonly {
94
93
  readonly message: readonly [{
95
94
  readonly locale: "zh";
@@ -101,6 +100,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
101
100
  readonly warning?: boolean | undefined;
102
101
  readonly when: string;
103
102
  }[] | undefined;
103
+ readonly maxLength?: number | undefined;
104
104
  }) => any) | undefined;
105
105
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
106
106
  declare const _default: typeof __VLS_export;
@@ -39,7 +39,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
39
39
  readonly mode: "formula" | "prefill";
40
40
  readonly expression: string;
41
41
  } | undefined;
42
- readonly maxLength?: number | undefined;
43
42
  readonly validations?: readonly {
44
43
  readonly message: readonly [{
45
44
  readonly locale: "zh";
@@ -51,6 +50,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
51
50
  readonly warning?: boolean | undefined;
52
51
  readonly when: string;
53
52
  }[] | undefined;
53
+ readonly maxLength?: number | undefined;
54
54
  }) => any;
55
55
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
56
56
  "onUpdate:modelValue"?: ((value: {
@@ -89,7 +89,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
89
89
  readonly mode: "formula" | "prefill";
90
90
  readonly expression: string;
91
91
  } | undefined;
92
- readonly maxLength?: number | undefined;
93
92
  readonly validations?: readonly {
94
93
  readonly message: readonly [{
95
94
  readonly locale: "zh";
@@ -101,6 +100,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
101
100
  readonly warning?: boolean | undefined;
102
101
  readonly when: string;
103
102
  }[] | undefined;
103
+ readonly maxLength?: number | undefined;
104
104
  }) => any) | undefined;
105
105
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
106
106
  declare const _default: typeof __VLS_export;
@@ -4,12 +4,12 @@ type __VLS_ModelProps = {
4
4
  };
5
5
  declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
6
  "update:modelValue": (value: {
7
- readonly mode: "_blank" | "_self";
7
+ readonly mode: "_self" | "_blank";
8
8
  readonly url: string;
9
9
  }) => any;
10
10
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
11
11
  "onUpdate:modelValue"?: ((value: {
12
- readonly mode: "_blank" | "_self";
12
+ readonly mode: "_self" | "_blank";
13
13
  readonly url: string;
14
14
  }) => any) | undefined;
15
15
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -4,12 +4,12 @@ type __VLS_ModelProps = {
4
4
  };
5
5
  declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
6
  "update:modelValue": (value: {
7
- readonly mode: "_blank" | "_self";
7
+ readonly mode: "_self" | "_blank";
8
8
  readonly url: string;
9
9
  }) => any;
10
10
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
11
11
  "onUpdate:modelValue"?: ((value: {
12
- readonly mode: "_blank" | "_self";
12
+ readonly mode: "_self" | "_blank";
13
13
  readonly url: string;
14
14
  }) => any) | undefined;
15
15
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -44,7 +44,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
44
44
  readonly mode: "formula" | "prefill";
45
45
  readonly expression: string;
46
46
  } | undefined;
47
- readonly enableSorting?: boolean | undefined;
48
47
  readonly nodeKey: string;
49
48
  readonly nodeChildren: string;
50
49
  readonly nodeLabel: readonly [{
@@ -54,6 +53,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
54
53
  readonly locale: "en" | "ja" | "ko";
55
54
  readonly message: string;
56
55
  }[]];
56
+ readonly enableSorting?: boolean | undefined;
57
57
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
58
58
  readonly nodeTooltip?: readonly [{
59
59
  readonly locale: "zh";
@@ -108,7 +108,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
108
108
  readonly mode: "formula" | "prefill";
109
109
  readonly expression: string;
110
110
  } | undefined;
111
- readonly enableSorting?: boolean | undefined;
112
111
  readonly nodeKey: string;
113
112
  readonly nodeChildren: string;
114
113
  readonly nodeLabel: readonly [{
@@ -118,6 +117,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
118
117
  readonly locale: "en" | "ja" | "ko";
119
118
  readonly message: string;
120
119
  }[]];
120
+ readonly enableSorting?: boolean | undefined;
121
121
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
122
122
  readonly nodeTooltip?: readonly [{
123
123
  readonly locale: "zh";
@@ -44,7 +44,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
44
44
  readonly mode: "formula" | "prefill";
45
45
  readonly expression: string;
46
46
  } | undefined;
47
- readonly enableSorting?: boolean | undefined;
48
47
  readonly nodeKey: string;
49
48
  readonly nodeChildren: string;
50
49
  readonly nodeLabel: readonly [{
@@ -54,6 +53,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
54
53
  readonly locale: "en" | "ja" | "ko";
55
54
  readonly message: string;
56
55
  }[]];
56
+ readonly enableSorting?: boolean | undefined;
57
57
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
58
58
  readonly nodeTooltip?: readonly [{
59
59
  readonly locale: "zh";
@@ -108,7 +108,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
108
108
  readonly mode: "formula" | "prefill";
109
109
  readonly expression: string;
110
110
  } | undefined;
111
- readonly enableSorting?: boolean | undefined;
112
111
  readonly nodeKey: string;
113
112
  readonly nodeChildren: string;
114
113
  readonly nodeLabel: readonly [{
@@ -118,6 +117,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
118
117
  readonly locale: "en" | "ja" | "ko";
119
118
  readonly message: string;
120
119
  }[]];
120
+ readonly enableSorting?: boolean | undefined;
121
121
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
122
122
  readonly nodeTooltip?: readonly [{
123
123
  readonly locale: "zh";
@@ -44,7 +44,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
44
44
  readonly mode: "formula" | "prefill";
45
45
  readonly expression: string;
46
46
  } | undefined;
47
- readonly enableSorting?: boolean | undefined;
48
47
  readonly nodeKey: string;
49
48
  readonly nodeChildren: string;
50
49
  readonly nodeLabel: readonly [{
@@ -54,6 +53,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
54
53
  readonly locale: "en" | "ja" | "ko";
55
54
  readonly message: string;
56
55
  }[]];
56
+ readonly enableSorting?: boolean | undefined;
57
57
  readonly nodeTooltip?: readonly [{
58
58
  readonly locale: "zh";
59
59
  readonly message: string;
@@ -107,7 +107,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
107
107
  readonly mode: "formula" | "prefill";
108
108
  readonly expression: string;
109
109
  } | undefined;
110
- readonly enableSorting?: boolean | undefined;
111
110
  readonly nodeKey: string;
112
111
  readonly nodeChildren: string;
113
112
  readonly nodeLabel: readonly [{
@@ -117,6 +116,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
117
116
  readonly locale: "en" | "ja" | "ko";
118
117
  readonly message: string;
119
118
  }[]];
119
+ readonly enableSorting?: boolean | undefined;
120
120
  readonly nodeTooltip?: readonly [{
121
121
  readonly locale: "zh";
122
122
  readonly message: string;
@@ -44,7 +44,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
44
44
  readonly mode: "formula" | "prefill";
45
45
  readonly expression: string;
46
46
  } | undefined;
47
- readonly enableSorting?: boolean | undefined;
48
47
  readonly nodeKey: string;
49
48
  readonly nodeChildren: string;
50
49
  readonly nodeLabel: readonly [{
@@ -54,6 +53,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
54
53
  readonly locale: "en" | "ja" | "ko";
55
54
  readonly message: string;
56
55
  }[]];
56
+ readonly enableSorting?: boolean | undefined;
57
57
  readonly nodeTooltip?: readonly [{
58
58
  readonly locale: "zh";
59
59
  readonly message: string;
@@ -107,7 +107,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
107
107
  readonly mode: "formula" | "prefill";
108
108
  readonly expression: string;
109
109
  } | undefined;
110
- readonly enableSorting?: boolean | undefined;
111
110
  readonly nodeKey: string;
112
111
  readonly nodeChildren: string;
113
112
  readonly nodeLabel: readonly [{
@@ -117,6 +116,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
117
116
  readonly locale: "en" | "ja" | "ko";
118
117
  readonly message: string;
119
118
  }[]];
119
+ readonly enableSorting?: boolean | undefined;
120
120
  readonly nodeTooltip?: readonly [{
121
121
  readonly locale: "zh";
122
122
  readonly message: string;
@@ -45,7 +45,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
45
45
  readonly mode: "formula" | "prefill";
46
46
  readonly expression: string;
47
47
  } | undefined;
48
- readonly enableSorting?: boolean | undefined;
49
48
  readonly nodeKey: string;
50
49
  readonly nodeChildren: string;
51
50
  readonly nodeLabel: readonly [{
@@ -55,6 +54,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
55
54
  readonly locale: "en" | "ja" | "ko";
56
55
  readonly message: string;
57
56
  }[]];
57
+ readonly enableSorting?: boolean | undefined;
58
58
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
59
59
  readonly nodeTooltip?: readonly [{
60
60
  readonly locale: "zh";
@@ -110,7 +110,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
110
110
  readonly mode: "formula" | "prefill";
111
111
  readonly expression: string;
112
112
  } | undefined;
113
- readonly enableSorting?: boolean | undefined;
114
113
  readonly nodeKey: string;
115
114
  readonly nodeChildren: string;
116
115
  readonly nodeLabel: readonly [{
@@ -120,6 +119,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
120
119
  readonly locale: "en" | "ja" | "ko";
121
120
  readonly message: string;
122
121
  }[]];
122
+ readonly enableSorting?: boolean | undefined;
123
123
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
124
124
  readonly nodeTooltip?: readonly [{
125
125
  readonly locale: "zh";
@@ -45,7 +45,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
45
45
  readonly mode: "formula" | "prefill";
46
46
  readonly expression: string;
47
47
  } | undefined;
48
- readonly enableSorting?: boolean | undefined;
49
48
  readonly nodeKey: string;
50
49
  readonly nodeChildren: string;
51
50
  readonly nodeLabel: readonly [{
@@ -55,6 +54,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
55
54
  readonly locale: "en" | "ja" | "ko";
56
55
  readonly message: string;
57
56
  }[]];
57
+ readonly enableSorting?: boolean | undefined;
58
58
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
59
59
  readonly nodeTooltip?: readonly [{
60
60
  readonly locale: "zh";
@@ -110,7 +110,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
110
110
  readonly mode: "formula" | "prefill";
111
111
  readonly expression: string;
112
112
  } | undefined;
113
- readonly enableSorting?: boolean | undefined;
114
113
  readonly nodeKey: string;
115
114
  readonly nodeChildren: string;
116
115
  readonly nodeLabel: readonly [{
@@ -120,6 +119,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
120
119
  readonly locale: "en" | "ja" | "ko";
121
120
  readonly message: string;
122
121
  }[]];
122
+ readonly enableSorting?: boolean | undefined;
123
123
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
124
124
  readonly nodeTooltip?: readonly [{
125
125
  readonly locale: "zh";
@@ -45,7 +45,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
45
45
  readonly mode: "formula" | "prefill";
46
46
  readonly expression: string;
47
47
  } | undefined;
48
- readonly enableSorting?: boolean | undefined;
49
48
  readonly nodeKey: string;
50
49
  readonly nodeChildren: string;
51
50
  readonly nodeLabel: readonly [{
@@ -55,6 +54,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
55
54
  readonly locale: "en" | "ja" | "ko";
56
55
  readonly message: string;
57
56
  }[]];
57
+ readonly enableSorting?: boolean | undefined;
58
58
  readonly nodeTooltip?: readonly [{
59
59
  readonly locale: "zh";
60
60
  readonly message: string;
@@ -109,7 +109,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
109
109
  readonly mode: "formula" | "prefill";
110
110
  readonly expression: string;
111
111
  } | undefined;
112
- readonly enableSorting?: boolean | undefined;
113
112
  readonly nodeKey: string;
114
113
  readonly nodeChildren: string;
115
114
  readonly nodeLabel: readonly [{
@@ -119,6 +118,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
119
118
  readonly locale: "en" | "ja" | "ko";
120
119
  readonly message: string;
121
120
  }[]];
121
+ readonly enableSorting?: boolean | undefined;
122
122
  readonly nodeTooltip?: readonly [{
123
123
  readonly locale: "zh";
124
124
  readonly message: string;
@@ -45,7 +45,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
45
45
  readonly mode: "formula" | "prefill";
46
46
  readonly expression: string;
47
47
  } | undefined;
48
- readonly enableSorting?: boolean | undefined;
49
48
  readonly nodeKey: string;
50
49
  readonly nodeChildren: string;
51
50
  readonly nodeLabel: readonly [{
@@ -55,6 +54,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
55
54
  readonly locale: "en" | "ja" | "ko";
56
55
  readonly message: string;
57
56
  }[]];
57
+ readonly enableSorting?: boolean | undefined;
58
58
  readonly nodeTooltip?: readonly [{
59
59
  readonly locale: "zh";
60
60
  readonly message: string;
@@ -109,7 +109,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
109
109
  readonly mode: "formula" | "prefill";
110
110
  readonly expression: string;
111
111
  } | undefined;
112
- readonly enableSorting?: boolean | undefined;
113
112
  readonly nodeKey: string;
114
113
  readonly nodeChildren: string;
115
114
  readonly nodeLabel: readonly [{
@@ -119,6 +118,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
119
118
  readonly locale: "en" | "ja" | "ko";
120
119
  readonly message: string;
121
120
  }[]];
121
+ readonly enableSorting?: boolean | undefined;
122
122
  readonly nodeTooltip?: readonly [{
123
123
  readonly locale: "zh";
124
124
  readonly message: string;
@@ -46,10 +46,10 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
46
46
  readonly mode: "formula" | "prefill";
47
47
  readonly expression: string;
48
48
  } | undefined;
49
- readonly enableSorting?: boolean | undefined;
50
49
  readonly nodeKey: string;
51
50
  readonly nodeChildren: string;
52
51
  readonly nodeLabel: string;
52
+ readonly enableSorting?: boolean | undefined;
53
53
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
54
54
  readonly nodeTooltip?: readonly [{
55
55
  readonly locale: "zh";
@@ -106,10 +106,10 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
106
106
  readonly mode: "formula" | "prefill";
107
107
  readonly expression: string;
108
108
  } | undefined;
109
- readonly enableSorting?: boolean | undefined;
110
109
  readonly nodeKey: string;
111
110
  readonly nodeChildren: string;
112
111
  readonly nodeLabel: string;
112
+ readonly enableSorting?: boolean | undefined;
113
113
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
114
114
  readonly nodeTooltip?: readonly [{
115
115
  readonly locale: "zh";
@@ -46,10 +46,10 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
46
46
  readonly mode: "formula" | "prefill";
47
47
  readonly expression: string;
48
48
  } | undefined;
49
- readonly enableSorting?: boolean | undefined;
50
49
  readonly nodeKey: string;
51
50
  readonly nodeChildren: string;
52
51
  readonly nodeLabel: string;
52
+ readonly enableSorting?: boolean | undefined;
53
53
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
54
54
  readonly nodeTooltip?: readonly [{
55
55
  readonly locale: "zh";
@@ -106,10 +106,10 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
106
106
  readonly mode: "formula" | "prefill";
107
107
  readonly expression: string;
108
108
  } | undefined;
109
- readonly enableSorting?: boolean | undefined;
110
109
  readonly nodeKey: string;
111
110
  readonly nodeChildren: string;
112
111
  readonly nodeLabel: string;
112
+ readonly enableSorting?: boolean | undefined;
113
113
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
114
114
  readonly nodeTooltip?: readonly [{
115
115
  readonly locale: "zh";
@@ -46,10 +46,10 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
46
46
  readonly mode: "formula" | "prefill";
47
47
  readonly expression: string;
48
48
  } | undefined;
49
- readonly enableSorting?: boolean | undefined;
50
49
  readonly nodeKey: string;
51
50
  readonly nodeChildren: string;
52
51
  readonly nodeLabel: string;
52
+ readonly enableSorting?: boolean | undefined;
53
53
  readonly nodeTooltip?: readonly [{
54
54
  readonly locale: "zh";
55
55
  readonly message: string;
@@ -105,10 +105,10 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
105
105
  readonly mode: "formula" | "prefill";
106
106
  readonly expression: string;
107
107
  } | undefined;
108
- readonly enableSorting?: boolean | undefined;
109
108
  readonly nodeKey: string;
110
109
  readonly nodeChildren: string;
111
110
  readonly nodeLabel: string;
111
+ readonly enableSorting?: boolean | undefined;
112
112
  readonly nodeTooltip?: readonly [{
113
113
  readonly locale: "zh";
114
114
  readonly message: string;
@@ -46,10 +46,10 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
46
46
  readonly mode: "formula" | "prefill";
47
47
  readonly expression: string;
48
48
  } | undefined;
49
- readonly enableSorting?: boolean | undefined;
50
49
  readonly nodeKey: string;
51
50
  readonly nodeChildren: string;
52
51
  readonly nodeLabel: string;
52
+ readonly enableSorting?: boolean | undefined;
53
53
  readonly nodeTooltip?: readonly [{
54
54
  readonly locale: "zh";
55
55
  readonly message: string;
@@ -105,10 +105,10 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
105
105
  readonly mode: "formula" | "prefill";
106
106
  readonly expression: string;
107
107
  } | undefined;
108
- readonly enableSorting?: boolean | undefined;
109
108
  readonly nodeKey: string;
110
109
  readonly nodeChildren: string;
111
110
  readonly nodeLabel: string;
111
+ readonly enableSorting?: boolean | undefined;
112
112
  readonly nodeTooltip?: readonly [{
113
113
  readonly locale: "zh";
114
114
  readonly message: string;
@@ -1,7 +1,6 @@
1
1
  type __VLS_Props = {
2
2
  modelValue?: string;
3
3
  placeholder?: string;
4
- browseUrl?: string;
5
4
  };
6
5
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
7
6
  "update:modelValue": (value: string) => any;
@@ -1,48 +1,332 @@
1
1
  <script setup>
2
2
  import { Icon } from "@iconify/vue";
3
+ import { useVirtualizer } from "@tanstack/vue-virtual";
4
+ import { useElementSize } from "@vueuse/core";
5
+ import { ScrollArea } from "reka-ui/namespaced";
6
+ import { computed, ref, shallowRef, useTemplateRef, watch } from "vue";
7
+ import { useI18n } from "vue-i18n";
8
+ import { Button } from "../button";
3
9
  import {
4
10
  InputGroup,
5
11
  InputGroupAddon,
6
12
  InputGroupButton,
7
13
  InputGroupInput
8
14
  } from "../input-group";
15
+ import { Popover, PopoverAnchor, PopoverContent } from "../popover";
16
+ import { ScrollBar } from "../scroll-area";
17
+ import { Tabs, TabsList, TabsTrigger } from "../tabs";
9
18
  const props = defineProps({
10
19
  modelValue: { type: String, required: false },
11
- placeholder: { type: String, required: false },
12
- browseUrl: { type: String, required: false }
20
+ placeholder: { type: String, required: false }
13
21
  });
14
22
  const emit = defineEmits(["update:modelValue"]);
15
- const DEFAULT_BROWSE_URL = "https://icones.js.org/collection/fluent?variant=Regular+20";
23
+ const { t } = useI18n({
24
+ inheritLocale: true,
25
+ messages: {
26
+ zh: {
27
+ "icon-picker-placeholder": "Iconify \u56FE\u6807\u6807\u8BC6\u7B26\uFF0C\u5982 fluent:add-20-regular",
28
+ "icon-picker-browse": "\u6D4F\u89C8\u56FE\u6807",
29
+ "icon-picker-clear": "\u6E05\u7A7A",
30
+ "icon-picker-regular": "\u5E38\u89C4",
31
+ "icon-picker-filled": "\u586B\u5145",
32
+ "icon-picker-loading": "\u6B63\u5728\u52A0\u8F7D\u56FE\u6807\u2026",
33
+ "icon-picker-error": "\u56FE\u6807\u52A0\u8F7D\u5931\u8D25",
34
+ "icon-picker-retry": "\u91CD\u8BD5",
35
+ "icon-picker-empty": "\u65E0\u5339\u914D\u56FE\u6807"
36
+ },
37
+ ja: {
38
+ "icon-picker-placeholder": "Iconify \u30A2\u30A4\u30B3\u30F3 ID\uFF08\u4F8B\uFF1Afluent:add-20-regular\uFF09",
39
+ "icon-picker-browse": "\u30A2\u30A4\u30B3\u30F3\u3092\u53C2\u7167",
40
+ "icon-picker-clear": "\u30AF\u30EA\u30A2",
41
+ "icon-picker-regular": "\u30EC\u30AE\u30E5\u30E9\u30FC",
42
+ "icon-picker-filled": "\u30D5\u30A3\u30EB\u30C9",
43
+ "icon-picker-loading": "\u30A2\u30A4\u30B3\u30F3\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D\u2026",
44
+ "icon-picker-error": "\u30A2\u30A4\u30B3\u30F3\u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
45
+ "icon-picker-retry": "\u518D\u8A66\u884C",
46
+ "icon-picker-empty": "\u4E00\u81F4\u3059\u308B\u30A2\u30A4\u30B3\u30F3\u304C\u3042\u308A\u307E\u305B\u3093"
47
+ },
48
+ en: {
49
+ "icon-picker-placeholder": "Iconify icon id, e.g. fluent:add-20-regular",
50
+ "icon-picker-browse": "Browse icons",
51
+ "icon-picker-clear": "Clear",
52
+ "icon-picker-regular": "Regular",
53
+ "icon-picker-filled": "Filled",
54
+ "icon-picker-loading": "Loading icons\u2026",
55
+ "icon-picker-error": "Failed to load icons",
56
+ "icon-picker-retry": "Retry",
57
+ "icon-picker-empty": "No matching icon"
58
+ }
59
+ }
60
+ });
61
+ const ICONIFY_API = "https://api.iconify.design";
62
+ const SUFFIX = {
63
+ regular: "-20-regular",
64
+ filled: "-20-filled"
65
+ };
66
+ let stemsCache = null;
67
+ function loadStems() {
68
+ if (!stemsCache) {
69
+ stemsCache = fetch(`${ICONIFY_API}/collection?prefix=fluent`).then(async (response) => {
70
+ if (!response.ok) throw new Error(`iconify collection: HTTP ${response.status}`);
71
+ const body = await response.json();
72
+ const hidden = new Set(body.hidden ?? []);
73
+ const names = [
74
+ ...body.uncategorized ?? [],
75
+ ...Object.values(body.categories ?? {}).flat()
76
+ ].filter((name) => !hidden.has(name));
77
+ const collect = (variant2) => names.filter((name) => name.endsWith(SUFFIX[variant2])).map((name) => name.slice(0, -SUFFIX[variant2].length));
78
+ return { regular: collect("regular"), filled: collect("filled") };
79
+ }).catch((error) => {
80
+ stemsCache = null;
81
+ throw error;
82
+ });
83
+ }
84
+ return stemsCache;
85
+ }
86
+ const stems = shallowRef(null);
87
+ const status = ref("idle");
88
+ async function ensureStems() {
89
+ if (stems.value) return;
90
+ status.value = "loading";
91
+ try {
92
+ stems.value = await loadStems();
93
+ status.value = "ready";
94
+ } catch {
95
+ status.value = "error";
96
+ }
97
+ }
98
+ const tokens = computed(() => {
99
+ const raw = (props.modelValue ?? "").toLowerCase();
100
+ const body = raw.slice(raw.indexOf(":") + 1);
101
+ return body.replace(/-\d+(?:-(?:regular|filled|light))?$/, "").split(/[^a-z0-9]+/).filter(Boolean);
102
+ });
103
+ function match(variant2) {
104
+ const all = stems.value?.[variant2] ?? [];
105
+ if (!tokens.value.length) return all;
106
+ return all.filter((stem) => tokens.value.every((token) => stem.includes(token)));
107
+ }
108
+ const matches = computed(() => ({
109
+ regular: match("regular"),
110
+ filled: match("filled")
111
+ }));
112
+ const variant = ref("regular");
113
+ const results = computed(() => matches.value[variant.value]);
114
+ const tabs = computed(() => [
115
+ { value: "regular", label: t("icon-picker-regular") },
116
+ { value: "filled", label: t("icon-picker-filled") }
117
+ ]);
118
+ const open = ref(false);
119
+ const anchor = useTemplateRef("anchor");
120
+ const viewport = useTemplateRef("viewport");
121
+ const scroller = computed(() => viewport.value?.viewportElement ?? null);
122
+ function openPanel() {
123
+ if (open.value) return;
124
+ variant.value = (props.modelValue ?? "").endsWith(SUFFIX.filled) ? "filled" : "regular";
125
+ open.value = true;
126
+ void ensureStems();
127
+ }
16
128
  function onInput(value) {
17
129
  emit("update:modelValue", value == null ? "" : String(value));
130
+ openPanel();
131
+ }
132
+ function select(stem) {
133
+ emit("update:modelValue", `fluent:${stem}${SUFFIX[variant.value]}`);
134
+ open.value = false;
135
+ }
136
+ function clear() {
137
+ emit("update:modelValue", "");
138
+ openPanel();
139
+ }
140
+ function onInteractOutside(event) {
141
+ const target = event.detail?.originalEvent?.target;
142
+ if (target instanceof Node && anchor.value?.contains(target)) event.preventDefault();
18
143
  }
144
+ const CELL = 36;
145
+ const { width: scrollerWidth } = useElementSize(scroller);
146
+ const columns = computed(() => Math.max(1, Math.floor(scrollerWidth.value / CELL)));
147
+ const rowVirtualizer = useVirtualizer(
148
+ computed(() => {
149
+ const element = scroller.value;
150
+ return {
151
+ count: Math.ceil(results.value.length / columns.value),
152
+ estimateSize: () => CELL,
153
+ getScrollElement: () => element,
154
+ overscan: 4
155
+ };
156
+ })
157
+ );
158
+ const rowTotalSize = computed(() => rowVirtualizer.value.getTotalSize());
159
+ const rowWindow = computed(() => rowVirtualizer.value.getVirtualItems());
160
+ function rowStems(index) {
161
+ return results.value.slice(index * columns.value, (index + 1) * columns.value);
162
+ }
163
+ function isSelected(stem) {
164
+ return props.modelValue === `fluent:${stem}${SUFFIX[variant.value]}`;
165
+ }
166
+ watch([results, variant], () => {
167
+ if (scroller.value) scroller.value.scrollTop = 0;
168
+ });
19
169
  </script>
20
170
 
21
171
  <template>
22
- <InputGroup>
23
- <InputGroupAddon align="inline-start">
24
- <Icon
25
- :icon="props.modelValue || 'fluent:image-20-regular'"
26
- :class="props.modelValue ? 'text-zinc-600' : 'text-zinc-300'"
27
- />
28
- </InputGroupAddon>
29
- <InputGroupInput
30
- :model-value="props.modelValue ?? ''"
31
- :placeholder="props.placeholder ?? 'Iconify \u56FE\u6807\u6807\u8BC6\u7B26\uFF0C\u5982 fluent:add-20-regular'"
32
- class="font-mono text-xs"
33
- @update:model-value="onInput"
34
- />
35
- <InputGroupAddon align="inline-end">
36
- <InputGroupButton
37
- as="a"
38
- :href="props.browseUrl ?? DEFAULT_BROWSE_URL"
39
- target="_blank"
40
- rel="noopener noreferrer"
41
- size="icon-xs"
42
- aria-label="浏览图标"
172
+ <Popover v-model:open="open">
173
+ <div ref="anchor">
174
+ <PopoverAnchor as-child>
175
+ <InputGroup>
176
+ <InputGroupAddon align="inline-start">
177
+ <Icon
178
+ :icon="props.modelValue || 'fluent:image-20-regular'"
179
+ :class="props.modelValue ? 'text-zinc-600' : 'text-zinc-300'"
180
+ />
181
+ </InputGroupAddon>
182
+ <InputGroupInput
183
+ :model-value="props.modelValue ?? ''"
184
+ :placeholder="props.placeholder ?? t('icon-picker-placeholder')"
185
+ class="font-mono text-xs"
186
+ @focus="openPanel"
187
+ @click="openPanel"
188
+ @update:model-value="onInput"
189
+ />
190
+ <InputGroupAddon align="inline-end">
191
+ <InputGroupButton
192
+ v-if="props.modelValue"
193
+ size="icon-xs"
194
+ data-slot="icon-picker-clear"
195
+ :aria-label="t('icon-picker-clear')"
196
+ tabindex="-1"
197
+ class="text-zinc-500 transition-opacity hover:text-zinc-700 [@media(hover:hover)]:opacity-0 group-focus-within/input-group:opacity-100 group-hover/input-group:opacity-100"
198
+ @mousedown.prevent
199
+ @click.stop="clear"
200
+ >
201
+ <Icon icon="fluent:dismiss-20-regular" />
202
+ </InputGroupButton>
203
+ <InputGroupButton
204
+ size="icon-xs"
205
+ data-slot="icon-picker-toggle"
206
+ :aria-label="t('icon-picker-browse')"
207
+ :aria-expanded="open"
208
+ @click="open ? open = false : openPanel()"
209
+ >
210
+ <Icon
211
+ icon="fluent:chevron-down-20-regular"
212
+ class="transition-transform duration-150"
213
+ :class="open && 'rotate-180'"
214
+ />
215
+ </InputGroupButton>
216
+ </InputGroupAddon>
217
+ </InputGroup>
218
+ </PopoverAnchor>
219
+ </div>
220
+
221
+ <PopoverContent
222
+ align="start"
223
+ class="w-(--reka-popover-trigger-width) min-w-72 p-0"
224
+ @open-auto-focus="(event) => event.preventDefault()"
225
+ @interact-outside="onInteractOutside"
226
+ >
227
+ <Tabs
228
+ v-model="variant"
229
+ class="gap-0"
43
230
  >
44
- <Icon icon="fluent:search-20-regular" />
45
- </InputGroupButton>
46
- </InputGroupAddon>
47
- </InputGroup>
231
+ <TabsList class="px-3">
232
+ <TabsTrigger
233
+ v-for="tab in tabs"
234
+ :key="tab.value"
235
+ :value="tab.value"
236
+ class="h-9 px-4 text-xs"
237
+ >
238
+ {{ tab.label }}
239
+ <span class="text-[0.625rem] text-zinc-400 tabular-nums">
240
+ {{ matches[tab.value].length }}
241
+ </span>
242
+ </TabsTrigger>
243
+ </TabsList>
244
+
245
+ <!-- Only the grid scrolls: the placeholder states have nothing to
246
+ scroll, and `h-full` wouldn't resolve for them inside the viewport's
247
+ `display: table` content wrapper anyway. -->
248
+ <section
249
+ v-if="status === 'loading' || status === 'idle'"
250
+ class="h-64 flex items-center justify-center gap-2 text-sm text-zinc-500 select-none"
251
+ >
252
+ <Icon
253
+ icon="fluent:spinner-ios-20-regular"
254
+ class="animate-spin"
255
+ />
256
+ {{ t("icon-picker-loading") }}
257
+ </section>
258
+
259
+ <section
260
+ v-else-if="status === 'error'"
261
+ class="h-64 flex flex-col items-center justify-center gap-2 text-sm text-zinc-500 select-none"
262
+ >
263
+ <Icon
264
+ icon="fluent:plug-disconnected-20-regular"
265
+ class="text-2xl! text-zinc-400"
266
+ />
267
+ {{ t("icon-picker-error") }}
268
+ <Button
269
+ size="sm"
270
+ @click="ensureStems"
271
+ >
272
+ {{ t("icon-picker-retry") }}
273
+ </Button>
274
+ </section>
275
+
276
+ <section
277
+ v-else-if="!results.length"
278
+ class="h-64 flex flex-col items-center justify-center gap-2 text-sm text-zinc-500 select-none"
279
+ >
280
+ <Icon
281
+ icon="fluent:search-20-regular"
282
+ class="text-2xl! text-zinc-400"
283
+ />
284
+ {{ t("icon-picker-empty") }}
285
+ </section>
286
+
287
+ <ScrollArea.Root
288
+ v-else
289
+ class="relative h-64"
290
+ >
291
+ <ScrollArea.Viewport
292
+ ref="viewport"
293
+ class="size-full overscroll-contain p-2 outline-none"
294
+ >
295
+ <div
296
+ class="relative w-full"
297
+ :style="{ height: `${rowTotalSize}px` }"
298
+ >
299
+ <div
300
+ v-for="row in rowWindow"
301
+ :key="String(row.key)"
302
+ class="absolute top-0 left-0 grid w-full"
303
+ :style="{
304
+ height: `${row.size}px`,
305
+ transform: `translateY(${row.start}px)`,
306
+ gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`
307
+ }"
308
+ >
309
+ <button
310
+ v-for="stem in rowStems(row.index)"
311
+ :key="stem"
312
+ type="button"
313
+ :title="`fluent:${stem}${SUFFIX[variant]}`"
314
+ class="flex items-center justify-center rounded text-zinc-600 transition-colors duration-150 hover:bg-zinc-100 hover:text-zinc-900"
315
+ :class="isSelected(stem) && 'bg-zinc-100 text-(--primary)'"
316
+ @click="select(stem)"
317
+ >
318
+ <Icon
319
+ :icon="`fluent:${stem}${SUFFIX[variant]}`"
320
+ class="text-xl!"
321
+ />
322
+ </button>
323
+ </div>
324
+ </div>
325
+ </ScrollArea.Viewport>
326
+ <ScrollBar orientation="vertical" />
327
+ <ScrollArea.Corner />
328
+ </ScrollArea.Root>
329
+ </Tabs>
330
+ </PopoverContent>
331
+ </Popover>
48
332
  </template>
@@ -1,7 +1,6 @@
1
1
  type __VLS_Props = {
2
2
  modelValue?: string;
3
3
  placeholder?: string;
4
- browseUrl?: string;
5
4
  };
6
5
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
7
6
  "update:modelValue": (value: string) => any;
@@ -13,6 +13,7 @@ const delegatedProps = reactiveOmit(props, "class");
13
13
  const barEl = ref(null);
14
14
  const barStyle = shallowRef({});
15
15
  const ready = ref(false);
16
+ const animated = ref(false);
16
17
  let mo = null;
17
18
  let ro = null;
18
19
  function measure() {
@@ -29,7 +30,15 @@ function measure() {
29
30
  width: `${rect.width}px`,
30
31
  transform: `translateX(${rect.left - rootRect.left}px)`
31
32
  };
33
+ if (ready.value) return;
32
34
  ready.value = true;
35
+ if (typeof requestAnimationFrame === "undefined") {
36
+ animated.value = true;
37
+ return;
38
+ }
39
+ requestAnimationFrame(() => requestAnimationFrame(() => {
40
+ animated.value = true;
41
+ }));
33
42
  }
34
43
  function schedule() {
35
44
  nextTick(measure);
@@ -79,7 +88,8 @@ onBeforeUnmount(() => {
79
88
  ref="barEl"
80
89
  data-slot="tabs-active-bar"
81
90
  aria-hidden="true"
82
- class="pointer-events-none absolute -bottom-px left-0 z-1 h-0.5 bg-(--primary) transition-[width,transform] duration-300 ease-[cubic-bezier(0.645,0.045,0.355,1)]"
91
+ class="pointer-events-none absolute -bottom-px left-0 z-1 h-0.5 bg-(--primary)"
92
+ :class="animated && 'transition-[width,transform] duration-300 ease-[cubic-bezier(0.645,0.045,0.355,1)]'"
83
93
  :style="{ ...barStyle, visibility: ready ? 'visible' : 'hidden' }"
84
94
  />
85
95
  </TabsList>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shwfed/config",
3
- "version": "3.0.20",
3
+ "version": "3.0.21",
4
4
  "description": "Configurable UI for SHWFED",
5
5
  "type": "module",
6
6
  "publishConfig": {