termcast 1.3.32 → 1.3.34
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.
- package/dist/action-utils.d.ts.map +1 -1
- package/dist/action-utils.js +8 -0
- package/dist/action-utils.js.map +1 -1
- package/dist/apis/cache.d.ts +1 -2
- package/dist/apis/cache.d.ts.map +1 -1
- package/dist/apis/cache.js +138 -54
- package/dist/apis/cache.js.map +1 -1
- package/dist/apis/clipboard.d.ts.map +1 -1
- package/dist/apis/clipboard.js +4 -0
- package/dist/apis/clipboard.js.map +1 -1
- package/dist/apis/oauth.d.ts.map +1 -1
- package/dist/apis/oauth.js +31 -4
- package/dist/apis/oauth.js.map +1 -1
- package/dist/build.d.ts +0 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +30 -51
- package/dist/build.js.map +1 -1
- package/dist/cli.js +31 -14
- package/dist/cli.js.map +1 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +5 -1
- package/dist/compile.js.map +1 -1
- package/dist/components/actions.d.ts +14 -0
- package/dist/components/actions.d.ts.map +1 -1
- package/dist/components/actions.js +151 -59
- package/dist/components/actions.js.map +1 -1
- package/dist/components/alert.d.ts.map +1 -1
- package/dist/components/alert.js +6 -5
- package/dist/components/alert.js.map +1 -1
- package/dist/components/animation-tick.d.ts +1 -1
- package/dist/components/animation-tick.js +1 -1
- package/dist/components/animation-tick.js.map +1 -1
- package/dist/components/detail.d.ts +5 -31
- package/dist/components/detail.d.ts.map +1 -1
- package/dist/components/detail.js +36 -52
- package/dist/components/detail.js.map +1 -1
- package/dist/components/dropdown.d.ts +1 -1
- package/dist/components/dropdown.d.ts.map +1 -1
- package/dist/components/dropdown.js +50 -22
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/footer.d.ts.map +1 -1
- package/dist/components/footer.js +19 -18
- package/dist/components/footer.js.map +1 -1
- package/dist/components/form/checkbox.d.ts.map +1 -1
- package/dist/components/form/checkbox.js +12 -11
- package/dist/components/form/checkbox.js.map +1 -1
- package/dist/components/form/date-picker.d.ts.map +1 -1
- package/dist/components/form/date-picker.js +7 -22
- package/dist/components/form/date-picker.js.map +1 -1
- package/dist/components/form/description.d.ts +1 -1
- package/dist/components/form/description.d.ts.map +1 -1
- package/dist/components/form/description.js +6 -5
- package/dist/components/form/description.js.map +1 -1
- package/dist/components/form/dropdown.d.ts.map +1 -1
- package/dist/components/form/dropdown.js +53 -50
- package/dist/components/form/dropdown.js.map +1 -1
- package/dist/components/form/file-autocomplete.d.ts.map +1 -1
- package/dist/components/form/file-autocomplete.js +5 -4
- package/dist/components/form/file-autocomplete.js.map +1 -1
- package/dist/components/form/file-picker.d.ts.map +1 -1
- package/dist/components/form/file-picker.js +23 -22
- package/dist/components/form/file-picker.js.map +1 -1
- package/dist/components/form/form-end.d.ts.map +1 -1
- package/dist/components/form/form-end.js +6 -4
- package/dist/components/form/form-end.js.map +1 -1
- package/dist/components/form/form-field-wrapper.d.ts +15 -0
- package/dist/components/form/form-field-wrapper.d.ts.map +1 -0
- package/dist/components/form/form-field-wrapper.js +29 -0
- package/dist/components/form/form-field-wrapper.js.map +1 -0
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +31 -30
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/form/password-field.d.ts.map +1 -1
- package/dist/components/form/password-field.js +7 -6
- package/dist/components/form/password-field.js.map +1 -1
- package/dist/components/form/separator.d.ts.map +1 -1
- package/dist/components/form/separator.js +3 -2
- package/dist/components/form/separator.js.map +1 -1
- package/dist/components/form/tagpicker.d.ts.map +1 -1
- package/dist/components/form/tagpicker.js +2 -1
- package/dist/components/form/tagpicker.js.map +1 -1
- package/dist/components/form/text-area.d.ts.map +1 -1
- package/dist/components/form/text-area.js +7 -6
- package/dist/components/form/text-area.js.map +1 -1
- package/dist/components/form/text-field.d.ts.map +1 -1
- package/dist/components/form/text-field.js +7 -6
- package/dist/components/form/text-field.js.map +1 -1
- package/dist/components/form/use-form-navigation.d.ts.map +1 -1
- package/dist/components/form/use-form-navigation.js +4 -4
- package/dist/components/form/use-form-navigation.js.map +1 -1
- package/dist/components/form/with-left-border.d.ts +15 -0
- package/dist/components/form/with-left-border.d.ts.map +1 -1
- package/dist/components/form/with-left-border.js +21 -9
- package/dist/components/form/with-left-border.js.map +1 -1
- package/dist/components/icon.d.ts +14 -0
- package/dist/components/icon.d.ts.map +1 -1
- package/dist/components/icon.js +60 -0
- package/dist/components/icon.js.map +1 -1
- package/dist/components/image.d.ts +47 -2
- package/dist/components/image.d.ts.map +1 -1
- package/dist/components/image.js +46 -7
- package/dist/components/image.js.map +1 -1
- package/dist/components/list.d.ts +5 -0
- package/dist/components/list.d.ts.map +1 -1
- package/dist/components/list.js +188 -132
- package/dist/components/list.js.map +1 -1
- package/dist/components/loading-bar.d.ts.map +1 -1
- package/dist/components/loading-bar.js +4 -3
- package/dist/components/loading-bar.js.map +1 -1
- package/dist/components/metadata.d.ts +70 -0
- package/dist/components/metadata.d.ts.map +1 -0
- package/dist/components/metadata.js +82 -0
- package/dist/components/metadata.js.map +1 -0
- package/dist/components/theme-picker.d.ts.map +1 -1
- package/dist/components/theme-picker.js +3 -2
- package/dist/components/theme-picker.js.map +1 -1
- package/dist/descendants-v2.d.ts +60 -0
- package/dist/descendants-v2.d.ts.map +1 -0
- package/dist/descendants-v2.js +144 -0
- package/dist/descendants-v2.js.map +1 -0
- package/dist/examples/actions-context.d.ts +2 -0
- package/dist/examples/actions-context.d.ts.map +1 -0
- package/dist/examples/actions-context.js +33 -0
- package/dist/examples/actions-context.js.map +1 -0
- package/dist/examples/form-basic.d.ts.map +1 -1
- package/dist/examples/form-basic.js +1 -1
- package/dist/examples/form-basic.js.map +1 -1
- package/dist/examples/form-dropdown.js +1 -1
- package/dist/examples/form-dropdown.js.map +1 -1
- package/dist/examples/internal/custom-action-renderables.d.ts +70 -0
- package/dist/examples/internal/custom-action-renderables.d.ts.map +1 -0
- package/dist/examples/internal/custom-action-renderables.js +163 -0
- package/dist/examples/internal/custom-action-renderables.js.map +1 -0
- package/dist/examples/internal/custom-dropdown.d.ts +99 -0
- package/dist/examples/internal/custom-dropdown.d.ts.map +1 -0
- package/dist/examples/internal/custom-dropdown.js +270 -0
- package/dist/examples/internal/custom-dropdown.js.map +1 -0
- package/dist/examples/internal/custom-renderable-form.d.ts +43 -0
- package/dist/examples/internal/custom-renderable-form.d.ts.map +1 -0
- package/dist/examples/internal/custom-renderable-form.js +284 -0
- package/dist/examples/internal/custom-renderable-form.js.map +1 -0
- package/dist/examples/internal/custom-renderable-list-default-search.d.ts +2 -0
- package/dist/examples/internal/custom-renderable-list-default-search.d.ts.map +1 -0
- package/dist/examples/internal/custom-renderable-list-default-search.js +16 -0
- package/dist/examples/internal/custom-renderable-list-default-search.js.map +1 -0
- package/dist/examples/internal/custom-renderable-list-v2-default-search.d.ts +2 -0
- package/dist/examples/internal/custom-renderable-list-v2-default-search.d.ts.map +1 -0
- package/dist/examples/internal/custom-renderable-list-v2-default-search.js +24 -0
- package/dist/examples/internal/custom-renderable-list-v2-default-search.js.map +1 -0
- package/dist/examples/internal/custom-renderable-list-v2.d.ts +189 -0
- package/dist/examples/internal/custom-renderable-list-v2.d.ts.map +1 -0
- package/dist/examples/internal/custom-renderable-list-v2.js +708 -0
- package/dist/examples/internal/custom-renderable-list-v2.js.map +1 -0
- package/dist/examples/internal/custom-renderable-list.d.ts +72 -0
- package/dist/examples/internal/custom-renderable-list.d.ts.map +1 -0
- package/dist/examples/internal/custom-renderable-list.js +544 -0
- package/dist/examples/internal/custom-renderable-list.js.map +1 -0
- package/dist/examples/internal/rhf-custom-ref.js +5 -4
- package/dist/examples/internal/rhf-custom-ref.js.map +1 -1
- package/dist/examples/internal/scrollbox-with-descendants.js +4 -2
- package/dist/examples/internal/scrollbox-with-descendants.js.map +1 -1
- package/dist/examples/list-controlled-search.d.ts +2 -0
- package/dist/examples/list-controlled-search.d.ts.map +1 -0
- package/dist/examples/list-controlled-search.js +12 -0
- package/dist/examples/list-controlled-search.js.map +1 -0
- package/dist/examples/list-detail-metadata.js +1 -1
- package/dist/examples/list-detail-metadata.js.map +1 -1
- package/dist/examples/simple-image-mask.d.ts +8 -0
- package/dist/examples/simple-image-mask.d.ts.map +1 -0
- package/dist/examples/simple-image-mask.js +12 -0
- package/dist/examples/simple-image-mask.js.map +1 -0
- package/dist/examples/toast-variations.js +1 -1
- package/dist/examples/toast-variations.js.map +1 -1
- package/dist/extensions/dev.d.ts.map +1 -1
- package/dist/extensions/dev.js +3 -2
- package/dist/extensions/dev.js.map +1 -1
- package/dist/extensions/react-refresh-init.d.ts.map +1 -1
- package/dist/extensions/react-refresh-init.js +4 -3
- package/dist/extensions/react-refresh-init.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/date-picker-widget.d.ts.map +1 -1
- package/dist/internal/date-picker-widget.js +2 -1
- package/dist/internal/date-picker-widget.js.map +1 -1
- package/dist/internal/dialog.d.ts +6 -0
- package/dist/internal/dialog.d.ts.map +1 -1
- package/dist/internal/dialog.js +59 -18
- package/dist/internal/dialog.js.map +1 -1
- package/dist/internal/navigation.d.ts.map +1 -1
- package/dist/internal/navigation.js +8 -1
- package/dist/internal/navigation.js.map +1 -1
- package/dist/internal/offscreen.d.ts +3 -0
- package/dist/internal/offscreen.d.ts.map +1 -1
- package/dist/internal/offscreen.js +5 -0
- package/dist/internal/offscreen.js.map +1 -1
- package/dist/internal/providers.d.ts.map +1 -1
- package/dist/internal/providers.js +20 -3
- package/dist/internal/providers.js.map +1 -1
- package/dist/internal/scrollbox.d.ts.map +1 -1
- package/dist/internal/scrollbox.js +3 -2
- package/dist/internal/scrollbox.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +4 -0
- package/dist/logger.js.map +1 -1
- package/dist/preload.js +5 -17
- package/dist/preload.js.map +1 -1
- package/dist/state.d.ts +4 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +4 -0
- package/dist/state.js.map +1 -1
- package/dist/test-border-overlay.d.ts +2 -0
- package/dist/test-border-overlay.d.ts.map +1 -0
- package/dist/test-border-overlay.js +7 -0
- package/dist/test-border-overlay.js.map +1 -0
- package/dist/test-layout-2.d.ts +2 -0
- package/dist/test-layout-2.d.ts.map +1 -0
- package/dist/test-layout-2.js +5 -0
- package/dist/test-layout-2.js.map +1 -0
- package/dist/test-layout.d.ts +2 -0
- package/dist/test-layout.d.ts.map +1 -0
- package/dist/test-layout.js +7 -0
- package/dist/test-layout.js.map +1 -0
- package/dist/theme.d.ts +1 -2
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +5 -9
- package/dist/theme.js.map +1 -1
- package/dist/utils/run-command.d.ts +1 -1
- package/dist/utils/run-command.d.ts.map +1 -1
- package/dist/utils/run-command.js +27 -7
- package/dist/utils/run-command.js.map +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +44 -23
- package/dist/utils.js.map +1 -1
- package/dist/watcher.d.ts.map +1 -1
- package/dist/watcher.js +24 -4
- package/dist/watcher.js.map +1 -1
- package/package.json +14 -12
- package/src/action-utils.tsx +10 -0
- package/src/apis/cache.test.ts +35 -3
- package/src/apis/cache.tsx +184 -59
- package/src/apis/clipboard.tsx +5 -0
- package/src/apis/oauth.tsx +33 -4
- package/src/build.tsx +35 -58
- package/src/cli.tsx +156 -134
- package/src/compile.tsx +6 -3
- package/src/compile.vitest.tsx +33 -15
- package/src/components/actions.tsx +230 -99
- package/src/components/alert.tsx +11 -10
- package/src/components/animation-tick.tsx +1 -1
- package/src/components/detail.tsx +56 -151
- package/src/components/dropdown.tsx +70 -36
- package/src/components/footer.tsx +58 -33
- package/src/components/form/checkbox.tsx +30 -32
- package/src/components/form/date-picker.tsx +27 -47
- package/src/components/form/description.tsx +19 -18
- package/src/components/form/dropdown.tsx +95 -103
- package/src/components/form/file-autocomplete.tsx +9 -8
- package/src/components/form/file-picker.tsx +46 -46
- package/src/components/form/form-end.tsx +6 -4
- package/src/components/form/index.tsx +38 -48
- package/src/components/form/password-field.tsx +25 -27
- package/src/components/form/separator.tsx +3 -2
- package/src/components/form/tagpicker.tsx +2 -1
- package/src/components/form/text-area.tsx +25 -30
- package/src/components/form/text-field.tsx +25 -27
- package/src/components/form/use-form-navigation.tsx +4 -5
- package/src/components/form/with-left-border.tsx +48 -10
- package/src/components/icon.tsx +69 -0
- package/src/components/image.tsx +60 -7
- package/src/components/list.tsx +270 -202
- package/src/components/loading-bar.tsx +4 -3
- package/src/components/metadata.tsx +217 -0
- package/src/components/theme-picker.tsx +3 -2
- package/src/examples/actions-context.tsx +63 -0
- package/src/examples/actions-context.vitest.tsx +110 -0
- package/src/examples/actions-dialog-layout.vitest.tsx +2 -1
- package/src/examples/file-autocomplete.vitest.tsx +15 -15
- package/src/examples/form-basic.tsx +12 -0
- package/src/examples/form-basic.vitest.tsx +74 -74
- package/src/examples/form-dropdown.tsx +8 -0
- package/src/examples/form-dropdown.vitest.tsx +364 -421
- package/src/examples/form-tagpicker.vitest.tsx +56 -54
- package/src/examples/github.vitest.tsx +252 -0
- package/src/examples/internal/rhf-custom-ref.tsx +16 -15
- package/src/examples/internal/scrollbox-with-descendants.tsx +4 -2
- package/src/examples/internal/simple-dialog.tsx +1 -1
- package/src/examples/internal/simple-scrollbox.vitest.tsx +14 -9
- package/src/examples/list-controlled-search.tsx +28 -0
- package/src/examples/list-controlled-search.vitest.tsx +49 -0
- package/src/examples/list-detail-metadata.tsx +8 -5
- package/src/examples/list-detail-metadata.vitest.tsx +22 -22
- package/src/examples/list-dropdown-default.vitest.tsx +12 -12
- package/src/examples/list-scrollbox.vitest.tsx +52 -38
- package/src/examples/list-with-detail.vitest.tsx +45 -41
- package/src/examples/list-with-dropdown.vitest.tsx +5 -5
- package/src/examples/list-with-sections.vitest.tsx +65 -12
- package/src/examples/list-with-toast.vitest.tsx +4 -4
- package/src/examples/simple-file-picker.vitest.tsx +12 -12
- package/src/examples/simple-grid.vitest.tsx +53 -53
- package/src/examples/simple-image-mask.tsx +58 -0
- package/src/examples/simple-navigation.vitest.tsx +19 -19
- package/src/examples/store.vitest.tsx +1 -1
- package/src/examples/swift-extension.vitest.tsx +4 -2
- package/src/examples/synonyms.vitest.tsx +31 -9
- package/src/examples/toast-action.vitest.tsx +8 -8
- package/src/examples/toast-variations.tsx +1 -1
- package/src/examples/toast-variations.vitest.tsx +69 -134
- package/src/extensions/dev.tsx +3 -2
- package/src/extensions/dev.vitest.tsx +65 -28
- package/src/extensions/react-refresh-init.tsx +4 -3
- package/src/index.tsx +3 -1
- package/src/internal/date-picker-widget.tsx +2 -1
- package/src/internal/dialog.tsx +100 -28
- package/src/internal/navigation.tsx +8 -1
- package/src/internal/offscreen.tsx +10 -0
- package/src/internal/providers.tsx +34 -8
- package/src/internal/scrollbox.tsx +4 -2
- package/src/logger.tsx +4 -0
- package/src/preload.tsx +5 -17
- package/src/state.tsx +12 -0
- package/src/theme.tsx +6 -9
- package/src/utils/run-command.tsx +32 -8
- package/src/utils.tsx +58 -23
- package/src/watcher.tsx +26 -6
|
@@ -39,8 +39,8 @@ test('grid navigation and display', async () => {
|
|
|
39
39
|
> Search items...
|
|
40
40
|
|
|
41
41
|
Fruits ▲
|
|
42
|
-
›🍎 Apple
|
|
43
|
-
🍌 Banana
|
|
42
|
+
›🍎 Apple █
|
|
43
|
+
🍌 Banana █
|
|
44
44
|
🍒 Cherry
|
|
45
45
|
|
|
46
46
|
Animals
|
|
@@ -72,8 +72,8 @@ test('grid navigation and display', async () => {
|
|
|
72
72
|
> Search items...
|
|
73
73
|
|
|
74
74
|
Fruits ▲
|
|
75
|
-
🍎 Apple
|
|
76
|
-
›🍌 Banana
|
|
75
|
+
🍎 Apple █
|
|
76
|
+
›🍌 Banana █
|
|
77
77
|
🍒 Cherry
|
|
78
78
|
|
|
79
79
|
Animals
|
|
@@ -106,8 +106,8 @@ test('grid navigation and display', async () => {
|
|
|
106
106
|
> Search items...
|
|
107
107
|
|
|
108
108
|
Fruits ▲
|
|
109
|
-
🍎 Apple
|
|
110
|
-
🍌 Banana
|
|
109
|
+
🍎 Apple █
|
|
110
|
+
🍌 Banana █
|
|
111
111
|
🍒 Cherry
|
|
112
112
|
|
|
113
113
|
Animals
|
|
@@ -134,9 +134,9 @@ test('grid navigation and display', async () => {
|
|
|
134
134
|
"
|
|
135
135
|
|
|
136
136
|
|
|
137
|
-
Simple Grid Example ────────────────────────────────────────────
|
|
138
137
|
|
|
139
|
-
|
|
138
|
+
|
|
139
|
+
|
|
140
140
|
|
|
141
141
|
╭────────────────────────────────────────────────────────────────╮
|
|
142
142
|
│ │
|
|
@@ -149,7 +149,7 @@ test('grid navigation and display', async () => {
|
|
|
149
149
|
│ │
|
|
150
150
|
│ Settings │
|
|
151
151
|
│ Change Theme... │
|
|
152
|
-
│
|
|
152
|
+
│ See Console Logs │
|
|
153
153
|
│ │
|
|
154
154
|
│ │
|
|
155
155
|
│ ↵ select ↑↓ navigate │
|
|
@@ -171,23 +171,23 @@ test('grid navigation and display', async () => {
|
|
|
171
171
|
|
|
172
172
|
> Search items...
|
|
173
173
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
174
|
+
Fruits ▲
|
|
175
|
+
🍎 Apple █
|
|
176
|
+
🍌 Banana █
|
|
177
|
+
🍒 Cherry
|
|
178
|
+
|
|
179
|
+
Animals
|
|
180
|
+
›🐕 Dog
|
|
181
|
+
🐱 Cat
|
|
182
|
+
🐰 Rabbit
|
|
183
|
+
|
|
184
|
+
Others
|
|
185
|
+
🏠 House
|
|
186
|
+
🚗 Car
|
|
187
|
+
🚀 Rocket ▼
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
↵ show details ↑↓ navigate ^k actions
|
|
191
191
|
|
|
192
192
|
"
|
|
193
193
|
`)
|
|
@@ -217,8 +217,8 @@ test('grid search functionality', async () => {
|
|
|
217
217
|
|
|
218
218
|
> cat
|
|
219
219
|
|
|
220
|
-
›🍎 Apple
|
|
221
|
-
🍌 Banana
|
|
220
|
+
›🍎 Apple
|
|
221
|
+
🍌 Banana
|
|
222
222
|
🍒 Cherry
|
|
223
223
|
🐕 Dog
|
|
224
224
|
🐱 Cat
|
|
@@ -230,11 +230,11 @@ test('grid search functionality', async () => {
|
|
|
230
230
|
🌙 Moon
|
|
231
231
|
☀ Sun
|
|
232
232
|
|
|
233
|
-
▼
|
|
234
|
-
|
|
235
233
|
|
|
236
234
|
↵ show details ↑↓ navigate ^k actions
|
|
237
235
|
|
|
236
|
+
|
|
237
|
+
|
|
238
238
|
"
|
|
239
239
|
`)
|
|
240
240
|
|
|
@@ -257,8 +257,8 @@ test('grid search functionality', async () => {
|
|
|
257
257
|
|
|
258
258
|
> space
|
|
259
259
|
|
|
260
|
-
›🍎 Apple
|
|
261
|
-
🍌 Banana
|
|
260
|
+
›🍎 Apple
|
|
261
|
+
🍌 Banana
|
|
262
262
|
🍒 Cherry
|
|
263
263
|
🐕 Dog
|
|
264
264
|
🐱 Cat
|
|
@@ -270,11 +270,11 @@ test('grid search functionality', async () => {
|
|
|
270
270
|
🌙 Moon
|
|
271
271
|
☀ Sun
|
|
272
272
|
|
|
273
|
-
▼
|
|
274
|
-
|
|
275
273
|
|
|
276
274
|
↵ show details ↑↓ navigate ^k actions
|
|
277
275
|
|
|
276
|
+
|
|
277
|
+
|
|
278
278
|
"
|
|
279
279
|
`)
|
|
280
280
|
|
|
@@ -295,8 +295,8 @@ test('grid search functionality', async () => {
|
|
|
295
295
|
> Search items...
|
|
296
296
|
|
|
297
297
|
Fruits ▲
|
|
298
|
-
›🍎 Apple
|
|
299
|
-
🍌 Banana
|
|
298
|
+
›🍎 Apple █
|
|
299
|
+
🍌 Banana █
|
|
300
300
|
🍒 Cherry
|
|
301
301
|
|
|
302
302
|
Animals
|
|
@@ -331,8 +331,8 @@ test('grid search functionality', async () => {
|
|
|
331
331
|
|
|
332
332
|
> xyz123
|
|
333
333
|
|
|
334
|
-
›🍎 Apple
|
|
335
|
-
🍌 Banana
|
|
334
|
+
›🍎 Apple
|
|
335
|
+
🍌 Banana
|
|
336
336
|
🍒 Cherry
|
|
337
337
|
🐕 Dog
|
|
338
338
|
🐱 Cat
|
|
@@ -344,11 +344,11 @@ test('grid search functionality', async () => {
|
|
|
344
344
|
🌙 Moon
|
|
345
345
|
☀ Sun
|
|
346
346
|
|
|
347
|
-
▼
|
|
348
|
-
|
|
349
347
|
|
|
350
348
|
↵ show details ↑↓ navigate ^k actions
|
|
351
349
|
|
|
350
|
+
|
|
351
|
+
|
|
352
352
|
"
|
|
353
353
|
`)
|
|
354
354
|
}, 10000)
|
|
@@ -374,8 +374,8 @@ test('grid item selection and actions', async () => {
|
|
|
374
374
|
> Search items...
|
|
375
375
|
|
|
376
376
|
Fruits ▲
|
|
377
|
-
›🍎 Apple
|
|
378
|
-
🍌 Banana
|
|
377
|
+
›🍎 Apple █
|
|
378
|
+
🍌 Banana █
|
|
379
379
|
🍒 Cherry
|
|
380
380
|
|
|
381
381
|
Animals
|
|
@@ -407,8 +407,8 @@ test('grid item selection and actions', async () => {
|
|
|
407
407
|
> Search items...
|
|
408
408
|
|
|
409
409
|
Fruits ▲
|
|
410
|
-
🍎 Apple
|
|
411
|
-
›🍌 Banana
|
|
410
|
+
🍎 Apple █
|
|
411
|
+
›🍌 Banana █
|
|
412
412
|
🍒 Cherry
|
|
413
413
|
|
|
414
414
|
Animals
|
|
@@ -440,8 +440,8 @@ test('grid item selection and actions', async () => {
|
|
|
440
440
|
> Search items...
|
|
441
441
|
|
|
442
442
|
Fruits ▲
|
|
443
|
-
🍎 Apple
|
|
444
|
-
›🍌 Banana
|
|
443
|
+
🍎 Apple █
|
|
444
|
+
›🍌 Banana █
|
|
445
445
|
🍒 Cherry
|
|
446
446
|
|
|
447
447
|
Animals
|
|
@@ -482,8 +482,8 @@ test('grid mouse interaction', async () => {
|
|
|
482
482
|
> Search items...
|
|
483
483
|
|
|
484
484
|
Fruits ▲
|
|
485
|
-
🍎 Apple
|
|
486
|
-
🍌 Banana
|
|
485
|
+
🍎 Apple █
|
|
486
|
+
🍌 Banana █
|
|
487
487
|
🍒 Cherry
|
|
488
488
|
|
|
489
489
|
Animals
|
|
@@ -519,9 +519,9 @@ test('grid mouse interaction', async () => {
|
|
|
519
519
|
"
|
|
520
520
|
|
|
521
521
|
|
|
522
|
-
Simple Grid Example ────────────────────────────────────────────
|
|
523
522
|
|
|
524
|
-
|
|
523
|
+
|
|
524
|
+
|
|
525
525
|
|
|
526
526
|
╭────────────────────────────────────────────────────────────────╮
|
|
527
527
|
│ │
|
|
@@ -534,7 +534,7 @@ test('grid mouse interaction', async () => {
|
|
|
534
534
|
│ │
|
|
535
535
|
│ Settings │
|
|
536
536
|
│ Change Theme... │
|
|
537
|
-
│
|
|
537
|
+
│ See Console Logs │
|
|
538
538
|
│ │
|
|
539
539
|
│ │
|
|
540
540
|
│ ↵ select ↑↓ navigate │
|
|
@@ -568,8 +568,8 @@ test('grid mouse interaction', async () => {
|
|
|
568
568
|
> Search items...
|
|
569
569
|
|
|
570
570
|
Fruits ▲
|
|
571
|
-
›🍎 Apple
|
|
572
|
-
🍌 Banana
|
|
571
|
+
›🍎 Apple █
|
|
572
|
+
🍌 Banana █
|
|
573
573
|
🍒 Cherry
|
|
574
574
|
|
|
575
575
|
Animals
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example demonstrating Image.Mask usage for shaping icons/avatars
|
|
3
|
+
*
|
|
4
|
+
* Image.Mask.Circle - Makes images circular (common for avatars)
|
|
5
|
+
* Image.Mask.RoundedRectangle - Applies rounded corners to images
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { List, Image } from 'termcast'
|
|
9
|
+
|
|
10
|
+
export function SimpleImageMask() {
|
|
11
|
+
return (
|
|
12
|
+
<List>
|
|
13
|
+
<List.Section title="Circle Masks (Avatars)">
|
|
14
|
+
<List.Item
|
|
15
|
+
title="Alice Johnson"
|
|
16
|
+
subtitle="Engineering"
|
|
17
|
+
icon={{ source: '👩', mask: Image.Mask.Circle }}
|
|
18
|
+
/>
|
|
19
|
+
<List.Item
|
|
20
|
+
title="Bob Smith"
|
|
21
|
+
subtitle="Design"
|
|
22
|
+
icon={{ source: '👨', mask: Image.Mask.Circle }}
|
|
23
|
+
/>
|
|
24
|
+
<List.Item
|
|
25
|
+
title="Carol Williams"
|
|
26
|
+
subtitle="Product"
|
|
27
|
+
icon={{ source: '👩💼', mask: Image.Mask.Circle }}
|
|
28
|
+
/>
|
|
29
|
+
</List.Section>
|
|
30
|
+
|
|
31
|
+
<List.Section title="Rounded Rectangle Masks (Apps)">
|
|
32
|
+
<List.Item
|
|
33
|
+
title="Notes App"
|
|
34
|
+
subtitle="Productivity"
|
|
35
|
+
icon={{ source: '📝', mask: Image.Mask.RoundedRectangle }}
|
|
36
|
+
/>
|
|
37
|
+
<List.Item
|
|
38
|
+
title="Calendar"
|
|
39
|
+
subtitle="Utilities"
|
|
40
|
+
icon={{ source: '📅', mask: Image.Mask.RoundedRectangle }}
|
|
41
|
+
/>
|
|
42
|
+
<List.Item
|
|
43
|
+
title="Settings"
|
|
44
|
+
subtitle="System"
|
|
45
|
+
icon={{ source: '⚙️', mask: Image.Mask.RoundedRectangle }}
|
|
46
|
+
/>
|
|
47
|
+
</List.Section>
|
|
48
|
+
|
|
49
|
+
<List.Section title="No Mask (Default)">
|
|
50
|
+
<List.Item
|
|
51
|
+
title="Document"
|
|
52
|
+
subtitle="No mask applied"
|
|
53
|
+
icon={{ source: '📄' }}
|
|
54
|
+
/>
|
|
55
|
+
</List.Section>
|
|
56
|
+
</List>
|
|
57
|
+
)
|
|
58
|
+
}
|
|
@@ -45,8 +45,8 @@ test('navigation between main and detail views', async () => {
|
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
|
|
48
|
-
↵ open details ↑↓ navigate ^k actions
|
|
49
48
|
|
|
49
|
+
↵ open details ↑↓ navigate ^k actions
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
|
|
@@ -79,8 +79,8 @@ test('navigation between main and detail views', async () => {
|
|
|
79
79
|
|
|
80
80
|
|
|
81
81
|
|
|
82
|
-
↵ open details ↑↓ navigate ^k actions
|
|
83
82
|
|
|
83
|
+
↵ open details ↑↓ navigate ^k actions
|
|
84
84
|
|
|
85
85
|
|
|
86
86
|
|
|
@@ -115,10 +115,10 @@ test('navigation between main and detail views', async () => {
|
|
|
115
115
|
|
|
116
116
|
|
|
117
117
|
|
|
118
|
-
↵ go back ↑↓ navigate ^k actions
|
|
119
118
|
|
|
120
119
|
|
|
121
120
|
|
|
121
|
+
↵ go back ↑↓ navigate ^k actions
|
|
122
122
|
|
|
123
123
|
|
|
124
124
|
|
|
@@ -159,8 +159,8 @@ test('navigation between main and detail views', async () => {
|
|
|
159
159
|
|
|
160
160
|
|
|
161
161
|
|
|
162
|
-
↵ open details ↑↓ navigate ^k actions
|
|
163
162
|
|
|
163
|
+
↵ open details ↑↓ navigate ^k actions
|
|
164
164
|
|
|
165
165
|
|
|
166
166
|
|
|
@@ -193,8 +193,8 @@ test('navigation between main and detail views', async () => {
|
|
|
193
193
|
|
|
194
194
|
|
|
195
195
|
|
|
196
|
-
↵ open details ↑↓ navigate ^k actions
|
|
197
196
|
|
|
197
|
+
↵ open details ↑↓ navigate ^k actions
|
|
198
198
|
|
|
199
199
|
|
|
200
200
|
|
|
@@ -224,10 +224,10 @@ test('navigation between main and detail views', async () => {
|
|
|
224
224
|
|
|
225
225
|
|
|
226
226
|
|
|
227
|
-
↵ go back ↑↓ navigate ^k actions
|
|
228
227
|
|
|
229
228
|
|
|
230
229
|
|
|
230
|
+
↵ go back ↑↓ navigate ^k actions
|
|
231
231
|
|
|
232
232
|
|
|
233
233
|
|
|
@@ -265,8 +265,8 @@ test('navigation between main and detail views', async () => {
|
|
|
265
265
|
|
|
266
266
|
|
|
267
267
|
|
|
268
|
-
↵ open details ↑↓ navigate ^k actions
|
|
269
268
|
|
|
269
|
+
↵ open details ↑↓ navigate ^k actions
|
|
270
270
|
|
|
271
271
|
|
|
272
272
|
|
|
@@ -307,7 +307,7 @@ test('navigation with actions panel', async () => {
|
|
|
307
307
|
│ │
|
|
308
308
|
│ Settings │
|
|
309
309
|
│ Change Theme... │
|
|
310
|
-
│
|
|
310
|
+
│ See Console Logs │
|
|
311
311
|
│ │
|
|
312
312
|
│ │
|
|
313
313
|
│ ↵ select ↑↓ navigate │
|
|
@@ -340,7 +340,7 @@ test('navigation with actions panel', async () => {
|
|
|
340
340
|
│ │
|
|
341
341
|
│ Settings │
|
|
342
342
|
│ Change Theme... │
|
|
343
|
-
│
|
|
343
|
+
│ See Console Logs │
|
|
344
344
|
│ │
|
|
345
345
|
│ │
|
|
346
346
|
│ ↵ select ↑↓ navigate │
|
|
@@ -373,8 +373,8 @@ test('navigation with actions panel', async () => {
|
|
|
373
373
|
|
|
374
374
|
|
|
375
375
|
|
|
376
|
-
✓ Copied to Clipboard First Item
|
|
377
376
|
|
|
377
|
+
✓ Copied to Clipboard First Item
|
|
378
378
|
|
|
379
379
|
|
|
380
380
|
|
|
@@ -416,10 +416,10 @@ test('navigation with actions panel', async () => {
|
|
|
416
416
|
|
|
417
417
|
|
|
418
418
|
|
|
419
|
-
↵ go back ↑↓ navigate ^k actions
|
|
420
419
|
|
|
421
420
|
|
|
422
421
|
|
|
422
|
+
↵ go back ↑↓ navigate ^k actions
|
|
423
423
|
|
|
424
424
|
|
|
425
425
|
|
|
@@ -439,6 +439,7 @@ test('navigation with actions panel', async () => {
|
|
|
439
439
|
expect(detailActionsSnapshot).toMatchInlineSnapshot(`
|
|
440
440
|
"
|
|
441
441
|
|
|
442
|
+
|
|
442
443
|
╭────────────────────────────────────────────────────────────────╮
|
|
443
444
|
│ │
|
|
444
445
|
│ Actions esc │
|
|
@@ -450,7 +451,7 @@ test('navigation with actions panel', async () => {
|
|
|
450
451
|
│ │
|
|
451
452
|
│ Settings │
|
|
452
453
|
│ Change Theme... │
|
|
453
|
-
│
|
|
454
|
+
│ See Console Logs │
|
|
454
455
|
│ │
|
|
455
456
|
│ │
|
|
456
457
|
│ ↵ select ↑↓ navigate │
|
|
@@ -461,7 +462,6 @@ test('navigation with actions panel', async () => {
|
|
|
461
462
|
|
|
462
463
|
|
|
463
464
|
|
|
464
|
-
|
|
465
465
|
"
|
|
466
466
|
`)
|
|
467
467
|
|
|
@@ -488,8 +488,8 @@ test('navigation with actions panel', async () => {
|
|
|
488
488
|
|
|
489
489
|
|
|
490
490
|
|
|
491
|
-
↵ open details ↑↓ navigate ^k actions
|
|
492
491
|
|
|
492
|
+
↵ open details ↑↓ navigate ^k actions
|
|
493
493
|
|
|
494
494
|
|
|
495
495
|
|
|
@@ -530,12 +530,12 @@ test('search functionality in main and detail views', async () => {
|
|
|
530
530
|
›Second Item Navigate to second detail
|
|
531
531
|
|
|
532
532
|
|
|
533
|
-
↵ open details ↑↓ navigate ^k actions
|
|
534
533
|
|
|
535
534
|
|
|
536
535
|
|
|
537
536
|
|
|
538
537
|
|
|
538
|
+
↵ open details ↑↓ navigate ^k actions
|
|
539
539
|
|
|
540
540
|
|
|
541
541
|
|
|
@@ -572,8 +572,8 @@ test('search functionality in main and detail views', async () => {
|
|
|
572
572
|
|
|
573
573
|
|
|
574
574
|
|
|
575
|
-
↵ open details ↑↓ navigate ^k actions
|
|
576
575
|
|
|
576
|
+
↵ open details ↑↓ navigate ^k actions
|
|
577
577
|
|
|
578
578
|
|
|
579
579
|
|
|
@@ -610,10 +610,10 @@ test('search functionality in main and detail views', async () => {
|
|
|
610
610
|
|
|
611
611
|
|
|
612
612
|
|
|
613
|
-
↵ go back ↑↓ navigate ^k actions
|
|
614
613
|
|
|
615
614
|
|
|
616
615
|
|
|
616
|
+
↵ go back ↑↓ navigate ^k actions
|
|
617
617
|
|
|
618
618
|
|
|
619
619
|
|
|
@@ -649,8 +649,8 @@ test('search functionality in main and detail views', async () => {
|
|
|
649
649
|
|
|
650
650
|
|
|
651
651
|
|
|
652
|
-
↵ go back ↑↓ navigate ^k actions
|
|
653
652
|
|
|
653
|
+
↵ go back ↑↓ navigate ^k actions
|
|
654
654
|
|
|
655
655
|
|
|
656
656
|
|
|
@@ -686,8 +686,8 @@ test('search functionality in main and detail views', async () => {
|
|
|
686
686
|
|
|
687
687
|
|
|
688
688
|
|
|
689
|
-
↵ open details ↑↓ navigate ^k actions
|
|
690
689
|
|
|
690
|
+
↵ open details ↑↓ navigate ^k actions
|
|
691
691
|
|
|
692
692
|
|
|
693
693
|
|
|
@@ -53,12 +53,12 @@ test('Store extension - searching for spiceblow shows Database', async () => {
|
|
|
53
53
|
›Spiceblow - Sql Database Management Search, update, insert and delete row
|
|
54
54
|
|
|
55
55
|
|
|
56
|
-
↑↓ navigate ^k actions powered by termcast
|
|
57
56
|
|
|
58
57
|
|
|
59
58
|
|
|
60
59
|
|
|
61
60
|
|
|
61
|
+
↵ view details ↑↓ navigate ^k actions powered by termcast
|
|
62
62
|
|
|
63
63
|
|
|
64
64
|
|
|
@@ -120,7 +120,9 @@ test.skipIf(isLinux)('swift extension runs Swift List command and shows items',
|
|
|
120
120
|
// Navigate down to Swift List (it's the second item)
|
|
121
121
|
await session.press('down')
|
|
122
122
|
|
|
123
|
-
//
|
|
123
|
+
// Run selected command via actions panel for deterministic behavior
|
|
124
|
+
await session.press(['ctrl', 'k'])
|
|
125
|
+
await session.waitIdle()
|
|
124
126
|
await session.press('return')
|
|
125
127
|
|
|
126
128
|
// Wait for Swift items to load and display
|
|
@@ -144,8 +146,8 @@ test.skipIf(isLinux)('swift extension runs Swift List command and shows items',
|
|
|
144
146
|
|
|
145
147
|
|
|
146
148
|
|
|
147
|
-
↑↓ navigate ^k actions
|
|
148
149
|
|
|
150
|
+
↑↓ navigate ^k actions
|
|
149
151
|
|
|
150
152
|
|
|
151
153
|
|
|
@@ -1,25 +1,45 @@
|
|
|
1
|
-
import { test, expect, beforeEach, afterEach, beforeAll } from 'vitest'
|
|
1
|
+
import { test, expect, beforeEach, afterEach, beforeAll, describe } from 'vitest'
|
|
2
2
|
import { launchTerminal, Session } from 'tuistory/src'
|
|
3
3
|
import { spawnSync } from 'node:child_process'
|
|
4
4
|
import path from 'node:path'
|
|
5
|
+
import fs from 'node:fs'
|
|
5
6
|
|
|
6
7
|
const extensionDir = path.resolve(__dirname, '../../extensions/synonyms')
|
|
7
8
|
|
|
8
|
-
//
|
|
9
|
+
// The extensions folder is gitignored, so this test only runs locally
|
|
10
|
+
const extensionExists = fs.existsSync(extensionDir)
|
|
11
|
+
|
|
12
|
+
// Install dependencies before running tests (only if extension exists locally)
|
|
9
13
|
beforeAll(() => {
|
|
10
|
-
|
|
14
|
+
if (!extensionExists) {
|
|
15
|
+
return // Extension folder doesn't exist (gitignored, not in CI)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Skip if already installed
|
|
19
|
+
if (fs.existsSync(path.join(extensionDir, 'node_modules', '.bin'))) {
|
|
20
|
+
return
|
|
21
|
+
}
|
|
22
|
+
|
|
11
23
|
const result = spawnSync('bun', ['install'], {
|
|
12
24
|
cwd: extensionDir,
|
|
13
25
|
stdio: 'inherit',
|
|
26
|
+
timeout: 120000,
|
|
14
27
|
})
|
|
15
|
-
|
|
16
|
-
|
|
28
|
+
|
|
29
|
+
if (result.status !== 0 || result.signal) {
|
|
30
|
+
throw new Error(
|
|
31
|
+
`bun install failed: status=${result.status}, signal=${result.signal}`,
|
|
32
|
+
)
|
|
17
33
|
}
|
|
18
|
-
},
|
|
34
|
+
}, 180000)
|
|
19
35
|
|
|
20
36
|
let session: Session
|
|
21
37
|
|
|
22
|
-
beforeEach(async () => {
|
|
38
|
+
beforeEach(async (ctx) => {
|
|
39
|
+
if (!extensionExists) {
|
|
40
|
+
ctx.skip()
|
|
41
|
+
return
|
|
42
|
+
}
|
|
23
43
|
session = await launchTerminal({
|
|
24
44
|
command: 'bun',
|
|
25
45
|
args: ['src/cli.tsx', 'dev', extensionDir],
|
|
@@ -33,7 +53,9 @@ afterEach(() => {
|
|
|
33
53
|
session?.close()
|
|
34
54
|
})
|
|
35
55
|
|
|
36
|
-
|
|
56
|
+
// TODO: Extension behavior changed - no longer shows preferences form on first launch
|
|
57
|
+
// These tests are skipped until the extension is updated or tests are rewritten
|
|
58
|
+
test.skip('synonyms extension shows preferences form on first launch', async () => {
|
|
37
59
|
// Wait for preferences form to appear (extension requires LLM provider setup)
|
|
38
60
|
await session.text({
|
|
39
61
|
waitFor: (text) => /LLM Provider/i.test(text),
|
|
@@ -80,7 +102,7 @@ test('synonyms extension shows preferences form on first launch', async () => {
|
|
|
80
102
|
`)
|
|
81
103
|
}, 60000)
|
|
82
104
|
|
|
83
|
-
test('synonyms extension preferences form can be navigated', async () => {
|
|
105
|
+
test.skip('synonyms extension preferences form can be navigated', async () => {
|
|
84
106
|
// Wait for preferences form to appear
|
|
85
107
|
await session.text({
|
|
86
108
|
waitFor: (text) => /LLM Provider/i.test(text),
|