@fewangsit/wangsvue-gsts 2.0.0-alpha.27 → 2.0.0-alpha.29

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 (65) hide show
  1. package/badge/Badge.fm.md +32 -0
  2. package/basetree/index.d.ts +31 -0
  3. package/breadcrumb/Breadcrumb.fm.md +23 -0
  4. package/button/Button.fm.md +53 -0
  5. package/buttonbulkaction/ButtonBulkAction-MenuItem.fm.md +18 -0
  6. package/buttonbulkaction/ButtonBulkAction.fm.md +25 -0
  7. package/buttondownload/ButtonDownload.fm.md +22 -0
  8. package/buttonfilter/ButtonFilter.fm.md +19 -0
  9. package/buttonscan/index.d.ts +6 -0
  10. package/buttonsearch/ButtonSearch.fm.md +19 -0
  11. package/buttonsearchbyscan/ButtonSearchByScan.fm.md +25 -0
  12. package/buttonselecttree/ButtonSelectTree.fm.md +40 -0
  13. package/buttonselecttree/index.d.ts +18 -0
  14. package/calendar/Calendar.fm.md +34 -0
  15. package/calendar/index.d.ts +41 -0
  16. package/changelogpage/index.d.ts +1 -1
  17. package/components.fm.md +56 -0
  18. package/customcolumn/index.d.ts +5 -5
  19. package/datatable/DataTable-MenuItem.fm.md +22 -0
  20. package/datatable/DataTable-TableColumn.fm.md +52 -0
  21. package/datatable/DataTable.fm.md +40 -0
  22. package/datatable/index.d.ts +8 -0
  23. package/dialog/index.d.ts +5 -0
  24. package/dialogconfirm/DialogConfirm.fm.md +29 -0
  25. package/dialogform/DialogForm.fm.md +57 -0
  26. package/dialogselecttree/DialogSelectTree.fm.md +42 -0
  27. package/dialogselecttree/index.d.ts +25 -1
  28. package/dropdown/Dropdown.fm.md +34 -0
  29. package/fieldwrapper/index.d.ts +5 -0
  30. package/fileupload/FileUpload.fm.md +31 -0
  31. package/fileupload/index.d.ts +7 -1
  32. package/icon/index.d.ts +75 -66
  33. package/imagecompressor/ImageCompressor.fm.md +44 -0
  34. package/imagecompressor/index.d.ts +1 -1
  35. package/inputbadge/InputBadge.fm.md +34 -0
  36. package/inputbadge/index.d.ts +4 -0
  37. package/inputcurrency/index.d.ts +14 -0
  38. package/inputnumber/InputNumber.fm.md +39 -0
  39. package/inputpassword/InputPassword.fm.md +28 -0
  40. package/inputpassword/index.d.ts +4 -0
  41. package/inputphonenumber/InputPhoneNumber.fm.md +34 -0
  42. package/inputrangenumber/InputRangeNumber.fm.md +31 -0
  43. package/inputtext/InputText.fm.md +34 -0
  44. package/mcp/components.json +2 -2
  45. package/mcp/components.summary.txt +1 -1
  46. package/mcp/main.js +1216 -1092
  47. package/mcp/package.json +6 -6
  48. package/mcp/skills/figma-to-code/SKILL.md +1 -0
  49. package/mcp/skills/wangsvue-code-review/SKILL.md +2 -0
  50. package/mcp/skills/wangsvue-workflow/SKILL.md +1 -0
  51. package/menu/index.d.ts +4 -0
  52. package/multiselect/MultiSelect.fm.md +34 -0
  53. package/overlaypanel/index.d.ts +4 -0
  54. package/package.json +1 -1
  55. package/plugins/WangsVue.d.ts +2 -1
  56. package/stats.html +1 -1
  57. package/style.css +2 -2
  58. package/tabmenu/TabMenu.fm.md +28 -0
  59. package/tagtype/index.d.ts +1 -1
  60. package/textarea/TextArea.fm.md +34 -0
  61. package/tree/index.d.ts +34 -0
  62. package/wangsvue-gsts.es.js +17242 -16702
  63. package/wangsvue-gsts.es.js.map +1 -1
  64. package/wangsvue-gsts.system.js +58 -58
  65. package/wangsvue-gsts.system.js.map +1 -1
@@ -165,6 +165,7 @@ export interface DataTableFilterMeta {
165
165
  }
166
166
 
167
167
  export type FetchListResponse<T extends Data = Data> = {
168
+ status: number;
168
169
  message: string;
169
170
  data: {
170
171
  data: T[];
@@ -779,6 +780,13 @@ export interface DataTableBaseProps<T extends Data = Data> {
779
780
  * Total disabled rows in table (used for synchronizing with bulk action button)
780
781
  */
781
782
  totalDisabledRows?: number;
783
+ /**
784
+ * Disable all checkboxes in the table (header + body).
785
+ * When true, no rows can be selected.
786
+ *
787
+ * @defaultValue false
788
+ */
789
+ disableAllCheckboxes?: boolean;
782
790
  }
783
791
 
784
792
  export interface DataTableProps<T extends Data> extends DataTableBaseProps<T> {
package/dialog/index.d.ts CHANGED
@@ -170,6 +170,11 @@ export interface DialogProps {
170
170
  * Title content of the dialog.
171
171
  */
172
172
  header?: string | undefined;
173
+ /**
174
+ * Unique id for the dialog header element, used for aria-labelledby association.
175
+ * If not provided, a unique id will be auto-generated.
176
+ */
177
+ headerId?: string;
173
178
  /**
174
179
  * Footer content of the dialog.
175
180
  */
@@ -0,0 +1,29 @@
1
+ # DialogConfirm
2
+ type reference: ./index.d.ts
3
+
4
+ Append a `DialogConfirm` component when the figma context contains:
5
+
6
+ - A figma component or instance named "Dialog Confirm" or similar.
7
+
8
+ ## Metadata Shape (Component)
9
+
10
+ Append this component to the `components` array of the returned JSON.
11
+
12
+ ## Metadata Shape (Properties)
13
+
14
+ Append these properties to the `props` object of this component.
15
+
16
+ ### Properties definitions
17
+
18
+ - `header` (string)
19
+ The header of the dialog.
20
+
21
+ - `severity` (string)
22
+ - success if the color style / theme of the dialog is green, it tend to be a positive.
23
+ - danger if the color style / theme of the dialog is red, it tend to be a negative.
24
+
25
+ - `actionable` (boolean)
26
+ Whether the dialog is actionable, if there are buttons like "Save" or "Cancel", then its true. Otherwise false.
27
+
28
+ - `confirmLabel` (string)
29
+ The text of the "Confirmation" button, most commonly the rightmost one.
@@ -0,0 +1,57 @@
1
+ # DialogForm
2
+ type reference: ./index.d.ts
3
+
4
+ Append a `DialogForm` component when the figma context contains:
5
+
6
+ - A figma component or instance named "Dialog Form" or similar, consisting of a header (title + close button), a content slot area, and a footer with buttons.
7
+
8
+ ## Metadata Shape (Component)
9
+
10
+ Append this component to the `components` array of the returned JSON.
11
+
12
+ ## Metadata Shape (Properties)
13
+
14
+ Append these properties to the `props` object of this component.
15
+
16
+ ### Properties definitions
17
+
18
+ - `header` (string)
19
+ The text inside the dialog title.
20
+
21
+ - `closable` (boolean)
22
+ Whether a close (X) icon button is present in the header. Omit if absent.
23
+
24
+ - `showStayCheckbox` (boolean)
25
+ Whether a "Stay on this form after submitting" checkbox exists in the footer.
26
+
27
+ - `stayCheckboxLabel` (string | undefined)
28
+ The text label of the stay checkbox. Omit if `showStayCheckbox` is false.
29
+
30
+ - `buttonsTemplate` ('clear' | 'submit' | 'cancel')[]
31
+ - Include `'clear'` if a "Clear Field" or similar text button is present.
32
+ - Include `'submit'` if a primary action button (e.g. "Submit", "Save") is present.
33
+ - Include `'cancel'` if a cancel/secondary dismiss button is present.
34
+ This is REQUIRED.
35
+
36
+ - `submitBtnLabel` (string | undefined)
37
+ The text of the submit button. Omit if `buttonsTemplate` does not contain `'submit'`.
38
+
39
+ - `clearBtnLabel` (string | undefined)
40
+ The text of the clear field button. Omit if `buttonsTemplate` does not contain `'clear'`.
41
+
42
+ - `severity` ('success' | 'danger' | 'primary' | undefined)
43
+ - `'success'` if the submit button or dialog theme is green.
44
+ - `'danger'` if the submit button or dialog theme is red.
45
+ - `'primary'` if the submit button or dialog theme is blue.
46
+ - Omit if ambiguous or no submit button is present.
47
+
48
+ - `width` ('small' | 'medium' | 'large' | 'semi-xlarge' | 'xlarge')
49
+ Infer from the dialog frame width:
50
+ - `400px` → `'small'`
51
+ - `500px` → `'medium'`
52
+ - `572px` → `'large'`
53
+ - `600px` → `'semi-xlarge'`
54
+ - `800px` → `'xlarge'`
55
+
56
+ ## RULES - CRITICAL
57
+ 1. **ALWAYS set `buttonsTemplate`** The Dialog Form most crucial property is `buttonsTemplate` it is what defines the DialogForm and distinguish it from a normal, regular, Dialog.
@@ -0,0 +1,42 @@
1
+ # DialogSelectTree
2
+ type reference: ./index.d.ts
3
+
4
+ Append a `DialogSelectTree` component when the figma context contains:
5
+
6
+ - A figma component or instance named "Dialog Select Tree" or similar, consisting of a dialog frame (~400px width) with a header (title + close icon), a search input, a tree content area with hierarchical nodes, and a footer with "Cancel" and "Select" buttons.
7
+ - The component has 4 variants: `Type=Group Checkbox`, `Type=Group Single`, `Type=Category Checkbox`, `Type=Category Single`.
8
+
9
+ ## Metadata Shape (Component)
10
+
11
+ Append this component to the `components` array of the returned JSON.
12
+
13
+ ## Metadata Shape (Properties)
14
+
15
+ Append these properties to the `props` object of this component.
16
+
17
+ ### Properties definitions
18
+
19
+ - `header` (string)
20
+ The header title text of the dialog. Look for the bold heading text at the top of the dialog frame. If no explicit header is provided, omit and the default will be "Select Group" or "Select Category" based on `type`.
21
+
22
+ - `subHeader` (string | undefined)
23
+ The subtitle text below the header. Look for a smaller heading element between the title and the search input. Omit if absent.
24
+
25
+ - `type` ('group' | 'category')
26
+ Infer from the Figma variant name:
27
+ - `'group'` if the variant node name contains "Group" (e.g. "Type=Group Checkbox", "Type=Group Single").
28
+ - `'category'` if the variant node name contains "Category" (e.g. "Type=Category Checkbox", "Type=Category Single").
29
+
30
+ - `selectionMode` ('single' | 'checkbox')
31
+ Infer from the Figma variant name:
32
+ - `'checkbox'` if the variant node name contains "Checkbox" — tree nodes will show a checklist/checkbox element.
33
+ - `'single'` if the variant node name contains "Single" — tree nodes will NOT show checkboxes; the active selection is indicated by a highlighted background (`--general/sidebar-menu-single-active`).
34
+
35
+ - `visible` (boolean)
36
+ Whether the dialog is visible. The dialog frame should be present and not hidden in the design context. Defaults to `true` when the frame exists.
37
+
38
+ - `lists` ((string | object)[] | undefined)
39
+ The lists displayed inside the dialog header, typically rendered as a bulleted list (`<ul>`) below the title. Look for a frame or element containing multiple list items. If present, include each item as a string in the array. Omit if absent.
40
+
41
+ - `listLabel` (string | undefined)
42
+ The property name to extract from list items when they are objects. Omit if `lists` is absent or if list items are plain strings.
@@ -3,7 +3,7 @@ import { Slot } from 'vue';
3
3
 
4
4
  import { TreeNode } from '../basetree';
5
5
  import { QueryParams, ShortFetchListResponse } from '../datatable';
6
- import TreeInstance, { TreeProps } from '../tree';
6
+ import TreeInstance, { TransactionType, TreeProps } from '../tree';
7
7
  import { ClassComponent, GlobalComponentConstructor } from '../ts-helpers.d';
8
8
 
9
9
  export interface DialogSelectTreeProps
@@ -95,6 +95,24 @@ export interface DialogSelectTreeProps
95
95
  * @default true
96
96
  */
97
97
  propagateSelection?: boolean;
98
+
99
+ /**
100
+ * When provided, enables quota validation on select.
101
+ * Also enables `showAvailableQuota` on the Tree component automatically.
102
+ */
103
+ validateQuota?: { assetQuantity: number };
104
+
105
+ /**
106
+ * When set, nodes whose manager[transactionType] is false will be rendered disabled.
107
+ */
108
+ requiredManagerPermission?: TransactionType;
109
+
110
+ /**
111
+ * When true, only top-level nodes (level <= 1) are selectable.
112
+ *
113
+ * @default false
114
+ */
115
+ disableSubChildren?: boolean;
98
116
  }
99
117
 
100
118
  export type TreeSelectPayload = {
@@ -119,6 +137,12 @@ export interface DialogSelectTreeSlots {
119
137
  updateFilter: (newFilter?: string) => void; // Hooks to update internal state filter
120
138
  }>;
121
139
 
140
+ /**
141
+ * Slot rendered between the subHeader and the search input.
142
+ * Use to inject description text or additional content above the tree.
143
+ */
144
+ description: Slot<Record<string, never>>;
145
+
122
146
  /**
123
147
  * Slot to customize tree node item
124
148
  */
@@ -0,0 +1,34 @@
1
+ # Dropdown
2
+ type reference: ./index.d.ts
3
+
4
+ Append a `Dropdown` component when the figma context contains:
5
+
6
+ - A figma component or instance named "Dropdown" or similar, consisting of a select input field optionally paired with a label, required asterisk, info icon, and a dropdown arrow icon.
7
+
8
+ ## Metadata Shape (Component)
9
+
10
+ Append this component to the `components` array of the returned JSON.
11
+
12
+ ## Metadata Shape (Properties)
13
+
14
+ Append these properties to the `props` object of this component.
15
+
16
+ ### Properties definitions
17
+
18
+ - `label` (string)
19
+ The text of the label displayed above the dropdown.
20
+
21
+ - `placeholder` (string | undefined)
22
+ The placeholder text inside the dropdown (e.g. "Select"). When a value is selected, the placeholder is replaced with the selected option text. Omit if no placeholder text is visible.
23
+
24
+ - `mandatory` (boolean | undefined)
25
+ Whether a red asterisk `*` is present next to the label, indicating the field is required. Omit if absent.
26
+
27
+ - `fieldInfo` (string | undefined)
28
+ Whether an info icon (`information-line`) is present next to the label. Omit if absent.
29
+
30
+ - `invalid` (boolean | undefined)
31
+ Whether the dropdown shows an error state (red border, red caption text). Omit if the field is not in error state.
32
+
33
+ - `disabled` (boolean | undefined)
34
+ Whether the dropdown shows a disabled state (gray background, gray text). Omit if the field is not disabled.
@@ -64,6 +64,11 @@ export interface FieldWrapperProps {
64
64
  * @default undefined
65
65
  */
66
66
  tooltipPos?: 'top' | 'right' | 'bottom' | 'left';
67
+
68
+ /**
69
+ * The id of the input element to associate the label with via `for` attribute.
70
+ */
71
+ inputId?: string;
67
72
  }
68
73
 
69
74
  export interface FieldWrapperSlots {
@@ -0,0 +1,31 @@
1
+ # FileUpload
2
+ type reference: ./index.d.ts
3
+
4
+ Append a `FileUpload` component when the figma context contains:
5
+
6
+ - A figma component or instance named "File Upload" or similar, consisting of a file selector input with a "Browse" button addon on the left, a selected file name or placeholder text, and an optional file requirement note below, optionally paired with a label, required asterisk, and info icon.
7
+
8
+ ## Metadata Shape (Component)
9
+
10
+ Append this component to the `components` array of the returned JSON.
11
+
12
+ ## Metadata Shape (Properties)
13
+
14
+ Append these properties to the `props` object of this component.
15
+
16
+ ### Properties definitions
17
+
18
+ - `label` (string)
19
+ The text of the label displayed above the file upload input.
20
+
21
+ - `placeholder` (string | undefined)
22
+ The placeholder text in the file name field (e.g. "Select File"). When a file is selected, the placeholder is replaced with the file name (e.g. "document.pdf"). Omit if no placeholder text is visible.
23
+
24
+ - `fileRequirements` (string | undefined)
25
+ The requirement note displayed below the input (e.g. "Max. file 1 MB"). Omit if no requirement text is visible.
26
+
27
+ - `mandatory` (boolean | undefined)
28
+ Whether a red asterisk `*` is present next to the label, indicating the field is required. Omit if absent.
29
+
30
+ - `invalid` (boolean | undefined)
31
+ Whether the file upload shows an error state (red border, red caption text). Omit if the field is not in error state.
@@ -31,7 +31,7 @@ export interface FileUploadProps {
31
31
  * Be careful while using this props since the validation can't work while using this.
32
32
  * You must do manual validation when choosing the file to be set on the component.
33
33
  */
34
- modelValue?: File | File[];
34
+ modelValue?: File | File[] | string;
35
35
 
36
36
  /**
37
37
  * Props to determine whether file upload support multiple files or not
@@ -62,6 +62,12 @@ export interface FileUploadProps {
62
62
  * @defaultValue 'Upload File'
63
63
  */
64
64
  label?: string | undefined;
65
+ /**
66
+ * CSS class applied to the label element.
67
+ * Use `'hidden'` to hide the label when the component is used inside a
68
+ * composite that manages its own label (e.g. CustomFieldInput).
69
+ */
70
+ labelClass?: string | undefined;
65
71
  /**
66
72
  * Whether to use an upload button.
67
73
  * @defaultValue true
package/icon/index.d.ts CHANGED
@@ -14,11 +14,11 @@ export type WangsIconseverities =
14
14
  export type WangsIcons =
15
15
  | 'admin-line'
16
16
  | 'arrow-down-fill'
17
- | 'arrow-go-back'
18
- | 'arrow-left-right'
19
- | 'arrow-right'
17
+ | 'arrow-go-back-line'
18
+ | 'arrow-left-right-line'
19
+ | 'arrow-right-line'
20
20
  | 'arrow-right-circle-line'
21
- | 'arrow-right-double'
21
+ | 'arrow-right-double-line'
22
22
  | 'arrow-right-fill'
23
23
  | 'apps-2-line'
24
24
  | 'asset-view'
@@ -27,100 +27,100 @@ export type WangsIcons =
27
27
  | 'attachment-2'
28
28
  | 'audit'
29
29
  | 'bank-card-line'
30
- | 'barcode'
30
+ | 'barcode-line'
31
31
  | 'barricade-line'
32
32
  | 'bell'
33
33
  | 'bell-alert'
34
34
  | 'borrow'
35
- | 'building'
36
- | 'building-2'
37
- | 'building-4'
38
- | 'calculator'
39
- | 'calendar-event'
40
- | 'calendar-todo'
41
- | 'chat-check'
35
+ | 'building-line'
36
+ | 'building-2-line'
37
+ | 'building-4-line'
38
+ | 'calculator-line'
39
+ | 'calendar-event-line'
40
+ | 'calendar-todo-line'
41
+ | 'chat-check-line'
42
42
  | 'change-tag'
43
43
  | 'checkout'
44
44
  | 'check-double-fill'
45
45
  | 'checkbox-circle-fill'
46
- | 'checkbox-blank-circle'
46
+ | 'checkbox-blank-circle-line'
47
47
  | 'checkbox-blank-circle-fill'
48
- | 'checkbox-multiple'
48
+ | 'checkbox-multiple-line'
49
49
  | 'close-circle-fill'
50
50
  | 'cloud-line'
51
- | 'coins'
51
+ | 'coins-line'
52
52
  | 'completion'
53
- | 'dashboard'
54
- | 'database'
55
- | 'delete-bin-7'
56
- | 'device'
53
+ | 'dashboard-line'
54
+ | 'database-line'
55
+ | 'delete-bin-7-line'
56
+ | 'device-line'
57
57
  | 'disposal'
58
- | 'dropbox'
58
+ | 'dropbox-line'
59
59
  | 'dragable-menu'
60
60
  | 'ellipsis-h'
61
61
  | 'emotion-happy-fill'
62
62
  | 'emotion-unhappy-fill'
63
63
  | 'expired'
64
64
  | 'extension-borrow'
65
- | 'eye'
66
- | 'flag'
67
- | 'file-add'
65
+ | 'eye-line'
66
+ | 'fullscreen-line'
67
+ | 'fullscreen-exit-line'
68
+ | 'flag-line'
69
+ | 'file-add-line'
68
70
  | 'file-copy-2-line'
69
- | 'file-history'
71
+ | 'file-history-line'
70
72
  | 'file-history-fill'
71
73
  | 'files'
72
74
  | 'file-lines'
73
- | 'file-list-3'
74
- | 'file-list'
75
+ | 'file-list-3-line'
76
+ | 'file-list-line'
75
77
  | 'file-shield-line'
76
- | 'file-shield-2'
77
- | 'file-up'
78
- | 'file-user'
78
+ | 'file-shield-2-line'
79
+ | 'file-upload-line'
80
+ | 'file-user-line'
79
81
  | 'filter-fill'
80
- | 'filter'
82
+ | 'filter-line'
81
83
  | 'fingerprint-line'
82
- | 'folder'
83
84
  | 'folder-add-line'
84
85
  | 'gate'
85
86
  | 'handheld'
86
87
  | 'indeterminate-circle-fill'
87
88
  | 'information-line'
88
- | 'infrared-thermometer'
89
+ | 'infrared-thermometer-line'
89
90
  | 'link'
90
- | 'luggage-cart'
91
+ | 'luggage-cart-line'
91
92
  | 'csv'
92
93
  | 'xls'
93
94
  | 'doc'
94
95
  | 'data'
95
- | 'line-chart'
96
+ | 'line-chart-line'
96
97
  | 'link-unlink-m'
97
- | 'list-settings'
98
98
  | 'lock-line'
99
- | 'logout-box-r'
100
- | 'mail-open'
99
+ | 'logout-box-r-line'
100
+ | 'mail-open-line'
101
101
  | 'magic-line'
102
- | 'map-2'
103
- | 'map-pin'
104
- | 'menu'
105
- | 'menu-unfold'
102
+ | 'map-2-line'
103
+ | 'map-pin-line'
104
+ | 'menu-line'
105
+ | 'menu-unfold-fill'
106
106
  | 'mind-map'
107
107
  | 'minus'
108
- | 'money-cny-box'
109
- | 'money-dollar-circle'
108
+ | 'money-cny-box-line'
109
+ | 'money-dollar-circle-line'
110
110
  | 'move-to'
111
111
  | 'nfc'
112
112
  | 'node-tree'
113
113
  | 'note'
114
- | 'notification'
114
+ | 'notification-line'
115
115
  | 'organization-chart'
116
116
  | 'pdf'
117
117
  | 'pair-tag'
118
- | 'phone'
119
- | 'printer-cloud'
120
- | 'price-tag-3'
118
+ | 'phone-line'
119
+ | 'printer-cloud-line'
120
+ | 'price-tag-3-line'
121
121
  | 'profile'
122
122
  | 'qr'
123
- | 'qr-scan'
123
+ | 'qr-scan-line'
124
124
  | 'reception'
125
125
  | 'recycle-bin'
126
126
  | 'replace-tag'
@@ -133,33 +133,32 @@ export type WangsIcons =
133
133
  | 'round-keyboard-double-arrow-right'
134
134
  | 'search-line'
135
135
  | 'send-plane-line'
136
- | 'shopping-cart-2'
137
- | 'smartphone'
136
+ | 'shopping-cart-2-line'
137
+ | 'smartphone-line'
138
138
  | 'sort-asc'
139
139
  | 'sort-desc'
140
140
  | 'supplier-return'
141
141
  | 'internal-return'
142
142
  | 'spinner'
143
- | 'stack'
144
- | 'store'
145
- | 'table'
146
- | 'time'
147
- | 'ticket'
148
- | 'tools'
149
- | 'tracking'
143
+ | 'stack-line'
144
+ | 'store-line'
145
+ | 'table-line'
146
+ | 'time-line'
147
+ | 'ticket-line'
148
+ | 'tools-line'
149
+ | 'file-search-line'
150
150
  | 'truck-line'
151
151
  | 'unassign'
152
- | 'upload-2'
153
- | 'upload-cloud-2'
154
- | 'user'
155
- | 'user-add'
156
- | 'user-follow'
152
+ | 'upload-2-line'
153
+ | 'upload-cloud-2-line'
154
+ | 'user-line'
155
+ | 'user-add-line'
156
+ | 'user-follow-line'
157
157
  | 'user-received-2-line'
158
158
  | 'user-shared-2-line'
159
- | 'user-star'
160
- | 'user-unfollow'
159
+ | 'user-star-line'
161
160
  | 'verification'
162
- | 'timer'
161
+ | 'timer-line'
163
162
  | 'format-clear'
164
163
  | 'code-line'
165
164
  | 'link-m'
@@ -195,7 +194,7 @@ export type WangsIcons =
195
194
  | 'arrow-up-down-line' // Preferred
196
195
  | 'arrow-up-s-line' // Preferred
197
196
  | 'calendar-line' // Preferred
198
- | 'chat-1' // Preferred
197
+ | 'chat-1-line' // Preferred
199
198
  | 'chat-3-line' // Preferred
200
199
  | 'check-line' // Preferred
201
200
  | 'checkbox-circle-line' // Preferred
@@ -253,6 +252,16 @@ export interface IconProps {
253
252
  tooltipPos?: 'top' | 'right' | 'bottom' | 'left';
254
253
 
255
254
  class?: any;
255
+
256
+ /**
257
+ * When true, sets aria-hidden="true" on the icon element for decorative icons.
258
+ */
259
+ ariaHidden?: boolean;
260
+
261
+ /**
262
+ * Defines the aria-label attribute for the icon when interactive.
263
+ */
264
+ ariaLabel?: string;
256
265
  }
257
266
 
258
267
  /**
@@ -0,0 +1,44 @@
1
+ # ImageCompressor
2
+ type reference: ./index.d.ts
3
+
4
+ Append a `ImageCompressor` component when the figma context contains:
5
+
6
+ - A figma component or instance named "Image Compressor" or similar, consisting of an image upload area with a square preview box (showing either an `image-add-line` icon placeholder or an actual image), Edit/Delete action buttons, requirement info text, and optionally paired with a label, required asterisk, and info icon.
7
+
8
+ ## Metadata Shape (Component)
9
+
10
+ Append this component to the `components` array of the returned JSON.
11
+
12
+ ## Metadata Shape (Properties)
13
+
14
+ Append these properties to the `props` object of this component.
15
+
16
+ ### Properties definitions
17
+
18
+ - `label` (string)
19
+ The text of the label displayed above the image input.
20
+
21
+ - `fieldInfo` (string | undefined)
22
+ Whether an info icon (`information-line`) is present next to the label. Omit if absent.
23
+
24
+ - `imagePreviewSize` ('small' | 'medium' | 'big' | undefined)
25
+ Infer from the image preview frame dimensions:
26
+ - `125px` → `'big'`
27
+ - `80px` → `'medium'`
28
+ - `30px` → `'small'`
29
+ - Omit if ambiguous.
30
+
31
+ - `rounded` (boolean | undefined)
32
+ Whether the image preview is displayed as a full circle. Omit if the preview is squared.
33
+
34
+ - `multiple` (boolean | undefined)
35
+ Whether "Add Photo" and "Remove" action buttons alongside a "Set as default" radio button are present below the image, indicating multiple image support. Omit if absent.
36
+
37
+ - `mandatory` (boolean | undefined)
38
+ Whether a red asterisk `*` is present next to the label, indicating the field is required. Omit if absent.
39
+
40
+ - `invalid` (boolean | undefined)
41
+ Whether the image input shows an error state (red border, caption text like "Photo must not be empty"). Omit if not in error state.
42
+
43
+ - `disabled` (boolean | undefined)
44
+ Whether the image input shows a disabled state (grayed out placeholder). Omit if not disabled.
@@ -182,7 +182,7 @@ export type ImageCompressorEmits = {
182
182
  /**
183
183
  * On apply the image cropper.
184
184
  */
185
- 'apply': [value: ImageCompressorPayload];
185
+ 'apply': [value: ImageCompressorPayload, index?: number];
186
186
  /**
187
187
  * On apply image from props.
188
188
  */
@@ -0,0 +1,34 @@
1
+ # InputBadge
2
+ type reference: ./index.d.ts
3
+
4
+ Append a `InputBadge` component when the figma context contains:
5
+
6
+ - A figma component or instance named "Input Badge" or similar, consisting of a text input area containing multiple badge chips (with close buttons), optionally paired with a label, required asterisk, and info icon.
7
+
8
+ ## Metadata Shape (Component)
9
+
10
+ Append this component to the `components` array of the returned JSON.
11
+
12
+ ## Metadata Shape (Properties)
13
+
14
+ Append these properties to the `props` object of this component.
15
+
16
+ ### Properties definitions
17
+
18
+ - `label` (string)
19
+ The text of the label displayed above the input badge area.
20
+
21
+ - `placeholder` (string | undefined)
22
+ The placeholder text inside the input (e.g. "Enter"). When badges are present, the placeholder is replaced by badge chips. Omit if no placeholder text is visible.
23
+
24
+ - `mandatory` (boolean | undefined)
25
+ Whether a red asterisk `*` is present next to the label, indicating the field is required. Omit if absent.
26
+
27
+ - `fieldInfo` (string | undefined)
28
+ Whether an info icon (`information-line`) is present next to the label. Omit if absent.
29
+
30
+ - `invalid` (boolean | undefined)
31
+ Whether the input shows an error state (red border, red caption text). Omit if the field is not in error state.
32
+
33
+ - `disabled` (boolean | undefined)
34
+ Whether the input shows a disabled state (gray background, gray text). Omit if the field is not disabled.
@@ -118,6 +118,10 @@ export interface InputBadgeProps {
118
118
  * Otherwise, the badge will be fully removed, shifting subsequent items.
119
119
  */
120
120
  preserveDeletedIndex?: boolean;
121
+ /**
122
+ * Maximum length for the input text and badge editing.
123
+ */
124
+ maxlength?: number;
121
125
  }
122
126
 
123
127
  /**