@ticatec/uniface-element 0.2.0 → 0.2.2

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 (209) hide show
  1. package/README.md +320 -1
  2. package/README_CN.md +392 -0
  3. package/dist/accordion/Accordion.svelte +1 -1
  4. package/dist/action-bar/ActionBar.svelte +7 -1
  5. package/dist/attachment-files/FileRender.svelte +1 -1
  6. package/dist/attachment-files/FileUploadBar.svelte +7 -6
  7. package/dist/attachment-files/FileUploadPanel.svelte +2 -2
  8. package/dist/base-calendar/DateContext.js +5 -4
  9. package/dist/base-calendar/YearPickupPanel.svelte +4 -4
  10. package/dist/card/Card.svelte +1 -1
  11. package/dist/card/Card.svelte.d.ts +1 -1
  12. package/dist/cascade-options-select/CascadeOptionSelect.svelte +2 -3
  13. package/dist/cascade-options-select/CascadeOptionSelect.svelte.d.ts +46 -1
  14. package/dist/cascade-options-select/CascadePanel.svelte +1 -1
  15. package/dist/checkbox/CheckBox.svelte +1 -1
  16. package/dist/color-picker/ColorPicker.svelte +9 -9
  17. package/dist/color-picker/ColorPicker.svelte.d.ts +0 -2
  18. package/dist/color-picker/ColorPickerPanel.svelte +11 -15
  19. package/dist/color-picker/ColorPickerPanel.svelte.d.ts +1 -1
  20. package/dist/common/CommonPicker.svelte +2 -2
  21. package/dist/common/CommonPicker.svelte.d.ts +1 -1
  22. package/dist/common/MouseClickHandler.d.ts +1 -1
  23. package/dist/common/Popover.svelte +28 -6
  24. package/dist/common/Popover.svelte.d.ts +9 -3
  25. package/dist/common/uniface-utils.js +6 -4
  26. package/dist/common-editor/CommonEditor.svelte +1 -1
  27. package/dist/common-editor/CommonEditor.svelte.d.ts +1 -1
  28. package/dist/common-editor/NumberInput.svelte +1 -1
  29. package/dist/common-editor/NumberInput.svelte.d.ts +1 -1
  30. package/dist/concise-data-table/ConciseListTable.svelte +7 -2
  31. package/dist/concise-data-table/ConciseListTable.svelte.d.ts +1 -0
  32. package/dist/concise-data-table/DataRow.svelte +1 -1
  33. package/dist/concise-data-table/TableOptions.d.ts +1 -1
  34. package/dist/data-table/DataTable.svelte +1 -1
  35. package/dist/data-table/parts/ActionsPanel.svelte +4 -3
  36. package/dist/data-table/parts/ActionsRow.svelte +3 -3
  37. package/dist/data-table/parts/ContentPanel.svelte +3 -2
  38. package/dist/data-table/parts/FixedColumnsPanel.svelte +0 -1
  39. package/dist/data-table/parts/FixedColumnsPanel.svelte.d.ts +1 -2
  40. package/dist/data-table/parts/FixedHeaderPanel.svelte +2 -2
  41. package/dist/data-table/parts/FixedRow.svelte +2 -1
  42. package/dist/data-table/parts/FixedRow.svelte.d.ts +1 -1
  43. package/dist/data-table/parts/HrefCell.svelte +23 -2
  44. package/dist/data-table/parts/PopupMenu.svelte +25 -2
  45. package/dist/data-table/parts/PopupMenu.svelte.d.ts +8 -1
  46. package/dist/date-picker/DatePicker.svelte +0 -1
  47. package/dist/date-picker/DateTimePicker.svelte +3 -3
  48. package/dist/date-picker/ScrollBar.svelte +4 -7
  49. package/dist/date-range/DateRangeEditor.svelte +1 -1
  50. package/dist/dialog/CommonDialog.svelte +8 -5
  51. package/dist/dialog/CommonDialog.svelte.d.ts +2 -1
  52. package/dist/dialog/Dialog.svelte +37 -12
  53. package/dist/dialog/Dialog.svelte.d.ts +4 -3
  54. package/dist/dialog/DialogBoard.svelte +11 -8
  55. package/dist/dialog/DialogWrapper.svelte +10 -0
  56. package/dist/{common-editor/DateInput.svelte.d.ts → dialog/DialogWrapper.svelte.d.ts} +6 -13
  57. package/dist/dialog/Dialogs.js +1 -1
  58. package/dist/dialog/ModalResult.d.ts +5 -0
  59. package/dist/dialog/ModalResult.js +5 -0
  60. package/dist/drawer/Drawer.svelte +1 -1
  61. package/dist/form-field/FormField.svelte +2 -1
  62. package/dist/form-field/FormField.svelte.d.ts +1 -0
  63. package/dist/form-panel/flex-row-form/FormContainer.svelte +1 -1
  64. package/dist/form-panel/grid-form/EmptyCell.svelte +8 -7
  65. package/dist/form-panel/grid-form/EmptyCell.svelte.d.ts +2 -2
  66. package/dist/form-panel/grid-form/GridField.svelte +1 -1
  67. package/dist/i18nRes/i18nRes.d.ts +2 -0
  68. package/dist/i18nRes/i18nRes.js +44 -0
  69. package/dist/i18nRes/index.d.ts +2 -0
  70. package/dist/i18nRes/index.js +2 -0
  71. package/dist/image-files/ImageFilesField.svelte +1 -1
  72. package/dist/indicator/IndicatorBoard.svelte +1 -1
  73. package/dist/inline-cell-editor/InvalidEditor.svelte +1 -0
  74. package/dist/input-options-select/InputOptionsSelect.svelte +6 -6
  75. package/dist/input-options-select/InputOptionsSelect.svelte.d.ts +1 -1
  76. package/dist/layout/flex/FlexBlock.svelte +1 -1
  77. package/dist/lookup-editor/LookupEditor.svelte +1 -1
  78. package/dist/memo-editor/MemoEditor.svelte +2 -2
  79. package/dist/message-box/IMessageBox.d.ts +2 -4
  80. package/dist/message-box/IMessageBox.js +4 -6
  81. package/dist/message-box/MessageBoxBoard.svelte +1 -3
  82. package/dist/options-multi-select/OptionsMultiSelect.svelte +1 -1
  83. package/dist/prompts-text-editor/PromptsTextEditor.svelte +2 -2
  84. package/dist/prompts-text-editor/PromptsTextEditor.svelte.d.ts +1 -1
  85. package/dist/property-editor/PropertyEditor.svelte +3 -3
  86. package/dist/text-editor/PasswordEditor.svelte +1 -1
  87. package/dist/transfer/Transfer.svelte +17 -12
  88. package/dist/transfer/Transfer.svelte.d.ts +0 -1
  89. package/dist/unit-number-editor/UnitNumberEditor.svelte +2 -2
  90. package/docs/buttons/cn/ActionBar.md +459 -0
  91. package/docs/buttons/cn/Button.md +228 -0
  92. package/docs/buttons/cn/IconButton.md +294 -0
  93. package/docs/buttons/cn/README.md +600 -0
  94. package/docs/buttons/cn/TextButton.md +163 -0
  95. package/docs/buttons/en/ActionBar.md +459 -0
  96. package/docs/buttons/en/Button.md +228 -0
  97. package/docs/buttons/en/IconButton.md +294 -0
  98. package/docs/buttons/en/README.md +600 -0
  99. package/docs/buttons/en/TextButton.md +163 -0
  100. package/docs/containers/cn/accordion.md +622 -0
  101. package/docs/containers/cn/box.md +445 -0
  102. package/docs/containers/cn/card.md +404 -0
  103. package/docs/containers/cn/page.md +576 -0
  104. package/docs/containers/cn/tabs.md +686 -0
  105. package/docs/containers/en/accordion.md +622 -0
  106. package/docs/containers/en/box.md +445 -0
  107. package/docs/containers/en/card.md +404 -0
  108. package/docs/containers/en/page.md +576 -0
  109. package/docs/containers/en/tabs.md +686 -0
  110. package/docs/data-display/cn/concise-data-table.md +731 -0
  111. package/docs/data-display/cn/listbox.md +786 -0
  112. package/docs/data-display/cn/treeview.md +863 -0
  113. package/docs/data-display/en/concise-data-table.md +732 -0
  114. package/docs/data-display/en/listbox.md +786 -0
  115. package/docs/data-display/en/treeview.md +863 -0
  116. package/docs/data-table/cn/README.md +596 -0
  117. package/docs/data-table/en/README.md +596 -0
  118. package/docs/dialog/cn/README.md +767 -0
  119. package/docs/dialog/en/README.md +767 -0
  120. package/docs/form/cn/README.md +847 -0
  121. package/docs/form/en/README.md +847 -0
  122. package/docs/form-components/cn/README.md +495 -0
  123. package/docs/form-components/cn/attachmentfilesfield.md +757 -0
  124. package/docs/form-components/cn/cascade-options-select.md +374 -0
  125. package/docs/form-components/cn/checkbox.md +58 -0
  126. package/docs/form-components/cn/date-picker.md +138 -0
  127. package/docs/form-components/cn/datetime-picker.md +228 -0
  128. package/docs/form-components/cn/group-checkbox.md +405 -0
  129. package/docs/form-components/cn/group-radiobox.md +525 -0
  130. package/docs/form-components/cn/imagefilesfield.md +651 -0
  131. package/docs/form-components/cn/input-options-select.md +250 -0
  132. package/docs/form-components/cn/lookup-editor.md +406 -0
  133. package/docs/form-components/cn/memoeditor.md +409 -0
  134. package/docs/form-components/cn/number-editor.md +261 -0
  135. package/docs/form-components/cn/options-multi-select.md +177 -0
  136. package/docs/form-components/cn/options-select.md +83 -0
  137. package/docs/form-components/cn/passwordeditor.md +538 -0
  138. package/docs/form-components/cn/prompts-text-editor.md +241 -0
  139. package/docs/form-components/cn/radiobutton.md +84 -0
  140. package/docs/form-components/cn/switch.md +178 -0
  141. package/docs/form-components/cn/text-editor.md +142 -0
  142. package/docs/form-components/cn/time-editor.md +159 -0
  143. package/docs/form-components/cn/unit-number-editor.md +164 -0
  144. package/docs/form-components/en/README.md +463 -0
  145. package/docs/form-components/en/attachmentfilesfield.md +757 -0
  146. package/docs/form-components/en/cascade-options-select.md +358 -0
  147. package/docs/form-components/en/checkbox.md +59 -0
  148. package/docs/form-components/en/date-picker.md +138 -0
  149. package/docs/form-components/en/datetime-picker.md +228 -0
  150. package/docs/form-components/en/group-checkbox.md +395 -0
  151. package/docs/form-components/en/group-radiobox.md +498 -0
  152. package/docs/form-components/en/imagefilesfield.md +651 -0
  153. package/docs/form-components/en/input-options-select.md +239 -0
  154. package/docs/form-components/en/lookup-editor.md +389 -0
  155. package/docs/form-components/en/memoeditor.md +409 -0
  156. package/docs/form-components/en/number-editor.md +249 -0
  157. package/docs/form-components/en/options-multi-select.md +177 -0
  158. package/docs/form-components/en/options-select.md +83 -0
  159. package/docs/form-components/en/passwordeditor.md +538 -0
  160. package/docs/form-components/en/prompts-text-editor.md +241 -0
  161. package/docs/form-components/en/radiobutton.md +84 -0
  162. package/docs/form-components/en/switch.md +180 -0
  163. package/docs/form-components/en/text-editor.md +142 -0
  164. package/docs/form-components/en/time-editor.md +159 -0
  165. package/docs/form-components/en/unit-number-editor.md +164 -0
  166. package/docs/form-layout/cn/criteria-field.md +652 -0
  167. package/docs/form-layout/cn/flex-form.md +454 -0
  168. package/docs/form-layout/cn/flex-row-form.md +542 -0
  169. package/docs/form-layout/cn/form-field.md +923 -0
  170. package/docs/form-layout/cn/grid-form.md +676 -0
  171. package/docs/form-layout/en/criteria-field.md +652 -0
  172. package/docs/form-layout/en/flex-form.md +454 -0
  173. package/docs/form-layout/en/flex-row-form.md +542 -0
  174. package/docs/form-layout/en/form-field.md +923 -0
  175. package/docs/form-layout/en/grid-form.md +676 -0
  176. package/docs/global/cn/README.md +534 -0
  177. package/docs/global/en/README.md +534 -0
  178. package/docs/layout/cn/classiclayout.md +460 -0
  179. package/docs/layout/cn/headerlayout.md +524 -0
  180. package/docs/layout/cn/sidebarlayout.md +263 -0
  181. package/docs/layout/en/classiclayout.md +951 -0
  182. package/docs/layout/en/headerlayout.md +524 -0
  183. package/docs/layout/en/sidebarlayout.md +262 -0
  184. package/docs/misc/cn/README.md +1217 -0
  185. package/docs/misc/en/README.md +1217 -0
  186. package/docs/navigation/cn/breadcrumb.md +291 -0
  187. package/docs/navigation/cn/navigator.md +322 -0
  188. package/docs/navigation/cn/navigatormenu.md +512 -0
  189. package/docs/navigation/cn/progressbar.md +199 -0
  190. package/docs/navigation/cn/progressstepbar.md +299 -0
  191. package/docs/navigation/en/breadcrumb.md +291 -0
  192. package/docs/navigation/en/navigator.md +322 -0
  193. package/docs/navigation/en/navigatormenu.md +512 -0
  194. package/docs/navigation/en/progressbar.md +199 -0
  195. package/docs/navigation/en/progressstepbar.md +299 -0
  196. package/docs/search-filters/cn/daterange.md +1156 -0
  197. package/docs/search-filters/cn/numberrange.md +688 -0
  198. package/docs/search-filters/cn/searchbox.md +1582 -0
  199. package/docs/search-filters/en/daterange.md +1156 -0
  200. package/docs/search-filters/en/numberrange.md +688 -0
  201. package/docs/search-filters/en/searchbox.md +1582 -0
  202. package/package.json +53 -13
  203. package/dist/common-editor/DateInput.svelte +0 -27
  204. package/dist/i18n_resources/index.d.ts +0 -3
  205. package/dist/i18n_resources/index.js +0 -3
  206. /package/dist/{i18n_resources → i18nRes}/uniface_cn_resource.d.ts +0 -0
  207. /package/dist/{i18n_resources → i18nRes}/uniface_cn_resource.js +0 -0
  208. /package/dist/{i18n_resources → i18nRes}/uniface_en_resource.d.ts +0 -0
  209. /package/dist/{i18n_resources → i18nRes}/uniface_en_resource.js +0 -0
@@ -0,0 +1,322 @@
1
+ # Navigator Component
2
+
3
+ The Navigator component provides a flexible navigation interface for displaying interactive item lists with status indicators, highlights, and click handling.
4
+
5
+ ## Features
6
+
7
+ - **Interactive Navigation**: Clickable items with custom handlers
8
+ - **Status Indicators**: Visual status representation for each item
9
+ - **Highlighting**: Support for highlighting specific items
10
+ - **Active State Management**: Track and display active/selected items
11
+ - **Flexible Item Structure**: Support for any item data structure
12
+ - **Customizable Styling**: Custom styles and CSS integration
13
+
14
+ ## Import
15
+
16
+ ```typescript
17
+ import { Navigator, NavItemStatus } from '@ticatec/uniface-element/Navigator';
18
+ ```
19
+
20
+ ## Basic Usage
21
+
22
+ ### Simple Navigation List
23
+
24
+ ```svelte
25
+ <script>
26
+ import { Navigator, NavItemStatus } from '@ticatec/uniface-element/Navigator';
27
+
28
+ const navItems = [
29
+ { id: 1, text: "Dashboard", completed: true },
30
+ { id: 2, text: "Projects", completed: true },
31
+ { id: 3, text: "Settings", completed: false },
32
+ { id: 4, text: "Profile", completed: false }
33
+ ];
34
+
35
+ let activeItem = navItems[0];
36
+
37
+ const handleItemClick = (item) => {
38
+ console.log('Clicked:', item.text);
39
+ activeItem = item;
40
+ };
41
+
42
+ const getItemStatus = (item) => {
43
+ return item.completed ? NavItemStatus.Completed : NavItemStatus.NotStart;
44
+ };
45
+ </script>
46
+
47
+ <Navigator
48
+ items={navItems}
49
+ {activeItem}
50
+ itemClickHandler={handleItemClick}
51
+ retrieveStatus={getItemStatus}
52
+ />
53
+ ```
54
+
55
+ ### Navigation with Highlights
56
+
57
+ ```svelte
58
+ <script>
59
+ import { Navigator, NavItemStatus } from '@ticatec/uniface-element/Navigator';
60
+
61
+ const menuItems = [
62
+ { id: 1, text: "Home", status: "completed" },
63
+ { id: 2, text: "About", status: "warning" },
64
+ { id: 3, text: "Services", status: "not-start" },
65
+ { id: 4, text: "Contact", status: "completed" }
66
+ ];
67
+
68
+ let activeItem = menuItems[0];
69
+ let highlightedItems = [menuItems[1], menuItems[3]]; // Highlight About and Contact
70
+
71
+ const handleClick = (item) => {
72
+ activeItem = item;
73
+ // Handle navigation logic here
74
+ };
75
+
76
+ const getStatus = (item) => {
77
+ switch (item.status) {
78
+ case 'completed': return NavItemStatus.Completed;
79
+ case 'warning': return NavItemStatus.Warning;
80
+ default: return NavItemStatus.NotStart;
81
+ }
82
+ };
83
+ </script>
84
+
85
+ <Navigator
86
+ items={menuItems}
87
+ {activeItem}
88
+ highlights={highlightedItems}
89
+ itemClickHandler={handleClick}
90
+ retrieveStatus={getStatus}
91
+ style="width: 250px; border: 1px solid #e0e0e0;"
92
+ />
93
+ ```
94
+
95
+ ## API Reference
96
+
97
+ ### Props
98
+
99
+ | Property | Type | Default | Description |
100
+ |----------|------|---------|-------------|
101
+ | `items` | `Array<any>` | required | Array of navigation items |
102
+ | `activeItem` | `any` | `null` | Currently active/selected item |
103
+ | `style` | `string` | `""` | Additional CSS styles |
104
+ | `highlights` | `Array<any>` | `[]` | Items to highlight |
105
+ | `itemClickHandler` | `ItemClickHandler` | required | Click event handler |
106
+ | `retrieveStatus` | `RetrieveItemStatus` | required | Function to get item status |
107
+
108
+ ### Types
109
+
110
+ ```typescript
111
+ type ItemClickHandler = (item: any) => void;
112
+ type RetrieveItemStatus = (item: any) => NavItemStatus;
113
+ ```
114
+
115
+ ### NavItemStatus Enum
116
+
117
+ ```typescript
118
+ enum NavItemStatus {
119
+ Completed = "nav-completed",
120
+ Warning = "nav-warning",
121
+ NotStart = "nav-not-start"
122
+ }
123
+ ```
124
+
125
+ ## Advanced Examples
126
+
127
+ ### Task Management Navigator
128
+
129
+ ```svelte
130
+ <script>
131
+ import { Navigator, NavItemStatus } from '@ticatec/uniface-element/Navigator';
132
+
133
+ let tasks = [
134
+ {
135
+ id: 1,
136
+ text: "Setup Project",
137
+ completed: true,
138
+ hasIssues: false
139
+ },
140
+ {
141
+ id: 2,
142
+ text: "Design Database",
143
+ completed: true,
144
+ hasIssues: true
145
+ },
146
+ {
147
+ id: 3,
148
+ text: "Implement API",
149
+ completed: false,
150
+ hasIssues: false
151
+ },
152
+ {
153
+ id: 4,
154
+ text: "Frontend Development",
155
+ completed: false,
156
+ hasIssues: false
157
+ }
158
+ ];
159
+
160
+ let activeTask = tasks[2]; // Currently working on API
161
+ let importantTasks = tasks.filter(task => task.hasIssues);
162
+
163
+ const handleTaskClick = (task) => {
164
+ activeTask = task;
165
+ console.log(`Switched to task: ${task.text}`);
166
+ };
167
+
168
+ const getTaskStatus = (task) => {
169
+ if (task.hasIssues) return NavItemStatus.Warning;
170
+ if (task.completed) return NavItemStatus.Completed;
171
+ return NavItemStatus.NotStart;
172
+ };
173
+ </script>
174
+
175
+ <div class="task-navigator">
176
+ <h3>Project Tasks</h3>
177
+ <Navigator
178
+ items={tasks}
179
+ activeItem={activeTask}
180
+ highlights={importantTasks}
181
+ itemClickHandler={handleTaskClick}
182
+ retrieveStatus={getTaskStatus}
183
+ style="border: 1px solid #ddd; border-radius: 4px; padding: 8px;"
184
+ />
185
+ </div>
186
+ ```
187
+
188
+ ### Multi-Step Form Navigator
189
+
190
+ ```svelte
191
+ <script>
192
+ import { Navigator, NavItemStatus } from '@ticatec/uniface-element/Navigator';
193
+
194
+ let formSteps = [
195
+ { id: 'personal', text: "Personal Info", completed: true },
196
+ { id: 'address', text: "Address", completed: true },
197
+ { id: 'payment', text: "Payment", completed: false, current: true },
198
+ { id: 'review', text: "Review", completed: false }
199
+ ];
200
+
201
+ let currentStep = formSteps.find(step => step.current);
202
+
203
+ const handleStepClick = (step) => {
204
+ // Only allow clicking on completed steps or current step
205
+ if (step.completed || step.current) {
206
+ currentStep = step;
207
+
208
+ // Update current step flags
209
+ formSteps = formSteps.map(s => ({
210
+ ...s,
211
+ current: s.id === step.id
212
+ }));
213
+ }
214
+ };
215
+
216
+ const getStepStatus = (step) => {
217
+ if (step.completed) return NavItemStatus.Completed;
218
+ if (step.current) return NavItemStatus.Warning; // Current step
219
+ return NavItemStatus.NotStart;
220
+ };
221
+
222
+ const completeCurrentStep = () => {
223
+ const stepIndex = formSteps.findIndex(s => s.current);
224
+ if (stepIndex >= 0) {
225
+ formSteps[stepIndex].completed = true;
226
+ formSteps[stepIndex].current = false;
227
+
228
+ if (stepIndex < formSteps.length - 1) {
229
+ formSteps[stepIndex + 1].current = true;
230
+ currentStep = formSteps[stepIndex + 1];
231
+ }
232
+
233
+ formSteps = [...formSteps]; // Trigger reactivity
234
+ }
235
+ };
236
+ </script>
237
+
238
+ <div class="form-navigation">
239
+ <Navigator
240
+ items={formSteps}
241
+ activeItem={currentStep}
242
+ itemClickHandler={handleStepClick}
243
+ retrieveStatus={getStepStatus}
244
+ style="margin-bottom: 20px;"
245
+ />
246
+
247
+ <div class="form-content">
248
+ <h4>Step: {currentStep?.text}</h4>
249
+ <button on:click={completeCurrentStep}>
250
+ Complete Step
251
+ </button>
252
+ </div>
253
+ </div>
254
+ ```
255
+
256
+ ### File Browser Navigator
257
+
258
+ ```svelte
259
+ <script>
260
+ import { Navigator, NavItemStatus } from '@ticatec/uniface-element/Navigator';
261
+
262
+ let files = [
263
+ { name: "documents", type: "folder", accessible: true },
264
+ { name: "images", type: "folder", accessible: true },
265
+ { name: "config.json", type: "file", accessible: true },
266
+ { name: "backup.zip", type: "file", accessible: false },
267
+ { name: "temp", type: "folder", accessible: false }
268
+ ];
269
+
270
+ let selectedFile = files[0];
271
+ let recentFiles = [files[2]]; // Recently accessed files
272
+
273
+ const handleFileClick = (file) => {
274
+ if (file.accessible) {
275
+ selectedFile = file;
276
+ console.log(`Opened: ${file.name}`);
277
+ } else {
278
+ console.log(`Cannot access: ${file.name}`);
279
+ }
280
+ };
281
+
282
+ const getFileStatus = (file) => {
283
+ if (!file.accessible) return NavItemStatus.Warning;
284
+ return file.type === 'folder' ? NavItemStatus.Completed : NavItemStatus.NotStart;
285
+ };
286
+ </script>
287
+
288
+ <div class="file-browser">
289
+ <Navigator
290
+ items={files}
291
+ activeItem={selectedFile}
292
+ highlights={recentFiles}
293
+ itemClickHandler={handleFileClick}
294
+ retrieveStatus={getFileStatus}
295
+ style="font-family: monospace; background: #f5f5f5;"
296
+ />
297
+ </div>
298
+ ```
299
+
300
+ ## Best Practices
301
+
302
+ 1. **Clear Item Text**: Use descriptive, concise text for navigation items
303
+ 2. **Consistent Status Logic**: Ensure status determination is predictable
304
+ 3. **Appropriate Highlighting**: Use highlights sparingly for important items
305
+ 4. **Accessibility**: Ensure sufficient color contrast for status indicators
306
+ 5. **Click Handling**: Provide meaningful feedback for user interactions
307
+ 6. **State Management**: Keep active item synchronized with application state
308
+ 7. **Performance**: Consider virtualization for very large item lists
309
+
310
+ ## Styling Notes
311
+
312
+ - Status classes (`nav-completed`, `nav-warning`, `nav-not-start`) provide visual differentiation
313
+ - Active items receive special styling to show selection
314
+ - Highlighted items have additional visual emphasis
315
+ - Custom CSS can be applied via the `style` prop
316
+
317
+ ## Integration Tips
318
+
319
+ - Use with routing libraries for single-page application navigation
320
+ - Combine with state management for complex application flows
321
+ - Consider keyboard navigation support for accessibility
322
+ - Test with various item data structures to ensure flexibility