termcast 1.3.21 → 1.3.25
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/ai.d.ts +104 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +135 -0
- package/dist/ai.js.map +1 -0
- package/dist/apis/browser-extension.d.ts +18 -0
- package/dist/apis/browser-extension.d.ts.map +1 -0
- package/dist/apis/browser-extension.js +14 -0
- package/dist/apis/browser-extension.js.map +1 -0
- package/dist/apis/localstorage.d.ts.map +1 -1
- package/dist/apis/localstorage.js +4 -7
- package/dist/apis/localstorage.js.map +1 -1
- package/dist/apis/oauth.d.ts.map +1 -1
- package/dist/apis/oauth.js +5 -1
- package/dist/apis/oauth.js.map +1 -1
- package/dist/apis/preferences.d.ts.map +1 -1
- package/dist/apis/preferences.js +38 -19
- package/dist/apis/preferences.js.map +1 -1
- package/dist/apis/toast.d.ts +5 -0
- package/dist/apis/toast.d.ts.map +1 -1
- package/dist/apis/toast.js +7 -43
- package/dist/apis/toast.js.map +1 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +3 -1
- package/dist/build.js.map +1 -1
- package/dist/cache.d.ts +32 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +205 -0
- package/dist/cache.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +87 -41
- package/dist/cli.js.map +1 -1
- package/dist/clipboard.d.ts +36 -0
- package/dist/clipboard.d.ts.map +1 -0
- package/dist/clipboard.js +154 -0
- package/dist/clipboard.js.map +1 -0
- package/dist/compile.d.ts +2 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +31 -12
- package/dist/compile.js.map +1 -1
- package/dist/components/actions.d.ts.map +1 -1
- package/dist/components/actions.js +56 -30
- package/dist/components/actions.js.map +1 -1
- package/dist/components/detail.d.ts.map +1 -1
- package/dist/components/detail.js +4 -0
- package/dist/components/detail.js.map +1 -1
- package/dist/components/dropdown.d.ts.map +1 -1
- package/dist/components/dropdown.js +38 -15
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/extension-preferences.d.ts.map +1 -1
- package/dist/components/extension-preferences.js +40 -13
- package/dist/components/extension-preferences.js.map +1 -1
- package/dist/components/form/checkbox.d.ts.map +1 -1
- package/dist/components/form/checkbox.js +5 -3
- 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 +5 -3
- package/dist/components/form/date-picker.js.map +1 -1
- package/dist/components/form/description.d.ts.map +1 -1
- package/dist/components/form/description.js +2 -2
- 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 +84 -80
- package/dist/components/form/dropdown.js.map +1 -1
- package/dist/components/form/file-autocomplete.d.ts +3 -6
- package/dist/components/form/file-autocomplete.d.ts.map +1 -1
- package/dist/components/form/file-autocomplete.js +61 -66
- 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 +33 -30
- 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 +21 -1
- package/dist/components/form/form-end.js.map +1 -1
- package/dist/components/form/form-type-only.d.ts +174 -0
- package/dist/components/form/form-type-only.d.ts.map +1 -0
- package/dist/components/form/form-type-only.js +2 -0
- package/dist/components/form/form-type-only.js.map +1 -0
- package/dist/components/form/index.d.ts +3 -1
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +104 -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 +5 -3
- package/dist/components/form/password-field.js.map +1 -1
- package/dist/components/form/text-area.d.ts.map +1 -1
- package/dist/components/form/text-area.js +5 -3
- 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 +6 -4
- package/dist/components/form/text-field.js.map +1 -1
- package/dist/components/form/types.d.ts +5 -0
- package/dist/components/form/types.d.ts.map +1 -1
- package/dist/components/form/use-form-handling.d.ts +4 -0
- package/dist/components/form/use-form-handling.d.ts.map +1 -0
- package/dist/components/form/use-form-handling.js +37 -0
- package/dist/components/form/use-form-handling.js.map +1 -0
- package/dist/components/form/with-left-border.d.ts +2 -1
- package/dist/components/form/with-left-border.d.ts.map +1 -1
- package/dist/components/form/with-left-border.js +27 -3
- package/dist/components/form/with-left-border.js.map +1 -1
- package/dist/components/icon.d.ts +1 -0
- package/dist/components/icon.d.ts.map +1 -1
- package/dist/components/icon.js +24 -8
- package/dist/components/icon.js.map +1 -1
- package/dist/components/list.d.ts +2 -2
- package/dist/components/list.d.ts.map +1 -1
- package/dist/components/list.js +155 -70
- package/dist/components/list.js.map +1 -1
- package/dist/components/loading-bar.d.ts.map +1 -1
- package/dist/components/loading-bar.js +2 -2
- package/dist/components/loading-bar.js.map +1 -1
- package/dist/components/loading-text.d.ts +8 -0
- package/dist/components/loading-text.d.ts.map +1 -0
- package/dist/components/loading-text.js +58 -0
- package/dist/components/loading-text.js.map +1 -0
- package/dist/descendants.js +1 -1
- package/dist/descendants.js.map +1 -1
- package/dist/dev-ui.d.ts +7 -0
- package/dist/dev-ui.d.ts.map +1 -0
- package/dist/dev-ui.js +118 -0
- package/dist/dev-ui.js.map +1 -0
- package/dist/environment.d.ts +63 -0
- package/dist/environment.d.ts.map +1 -0
- package/dist/environment.js +189 -0
- package/dist/environment.js.map +1 -0
- package/dist/examples/datepicker.d.ts +2 -0
- package/dist/examples/datepicker.d.ts.map +1 -0
- package/dist/examples/datepicker.js +344 -0
- package/dist/examples/datepicker.js.map +1 -0
- package/dist/examples/file-autocomplete.vitest.d.ts +2 -0
- package/dist/examples/file-autocomplete.vitest.d.ts.map +1 -0
- package/dist/examples/file-autocomplete.vitest.js +223 -0
- package/dist/examples/file-autocomplete.vitest.js.map +1 -0
- package/dist/examples/form-basic-arrow-keys.vitest.d.ts +2 -0
- package/dist/examples/form-basic-arrow-keys.vitest.d.ts.map +1 -0
- package/dist/examples/form-basic-arrow-keys.vitest.js +46 -0
- package/dist/examples/form-basic-arrow-keys.vitest.js.map +1 -0
- package/dist/examples/form-basic.vitest.d.ts +2 -0
- package/dist/examples/form-basic.vitest.d.ts.map +1 -0
- package/dist/examples/form-basic.vitest.js +630 -0
- package/dist/examples/form-basic.vitest.js.map +1 -0
- package/dist/examples/form-dropdown-with-sections.d.ts +2 -0
- package/dist/examples/form-dropdown-with-sections.d.ts.map +1 -0
- package/dist/examples/form-dropdown-with-sections.js +13 -0
- package/dist/examples/form-dropdown-with-sections.js.map +1 -0
- package/dist/examples/form-dropdown-with-sections.vitest.d.ts +2 -0
- package/dist/examples/form-dropdown-with-sections.vitest.d.ts.map +1 -0
- package/dist/examples/form-dropdown-with-sections.vitest.js +75 -0
- package/dist/examples/form-dropdown-with-sections.vitest.js.map +1 -0
- package/dist/examples/form-dropdown.vitest.d.ts +2 -0
- package/dist/examples/form-dropdown.vitest.d.ts.map +1 -0
- package/dist/examples/form-dropdown.vitest.js +854 -0
- package/dist/examples/form-dropdown.vitest.js.map +1 -0
- package/dist/examples/form-multiselect-dropdown.d.ts +2 -0
- package/dist/examples/form-multiselect-dropdown.d.ts.map +1 -0
- package/dist/examples/form-multiselect-dropdown.js +13 -0
- package/dist/examples/form-multiselect-dropdown.js.map +1 -0
- package/dist/examples/form-scroll.d.ts.map +1 -1
- package/dist/examples/form-scroll.js +7 -1
- package/dist/examples/form-scroll.js.map +1 -1
- package/dist/examples/form-scroll.vitest.d.ts +2 -0
- package/dist/examples/form-scroll.vitest.d.ts.map +1 -0
- package/dist/examples/form-scroll.vitest.js +211 -0
- package/dist/examples/form-scroll.vitest.js.map +1 -0
- package/dist/examples/form-tagpicker.vitest.d.ts +2 -0
- package/dist/examples/form-tagpicker.vitest.d.ts.map +1 -0
- package/dist/examples/form-tagpicker.vitest.js +736 -0
- package/dist/examples/form-tagpicker.vitest.js.map +1 -0
- package/dist/examples/internal/descendants-filtering.js +1 -1
- package/dist/examples/internal/descendants-filtering.js.map +1 -1
- package/dist/examples/internal/descendants.js +1 -1
- package/dist/examples/internal/descendants.js.map +1 -1
- package/dist/examples/internal/nested-boxes.d.ts +2 -0
- package/dist/examples/internal/nested-boxes.d.ts.map +1 -0
- package/dist/examples/internal/nested-boxes.js +7 -0
- package/dist/examples/internal/nested-boxes.js.map +1 -0
- package/dist/examples/internal/rhf-custom-ref.js +2 -2
- package/dist/examples/internal/rhf-custom-ref.js.map +1 -1
- package/dist/examples/internal/scrollbox-demo.js +3 -22
- package/dist/examples/internal/scrollbox-demo.js.map +1 -1
- package/dist/examples/internal/scrollbox-descendants.d.ts +2 -0
- package/dist/examples/internal/scrollbox-descendants.d.ts.map +1 -0
- package/dist/examples/internal/scrollbox-descendants.js +83 -0
- package/dist/examples/internal/scrollbox-descendants.js.map +1 -0
- package/dist/examples/internal/scrollbox-with-descendants.js +4 -8
- package/dist/examples/internal/scrollbox-with-descendants.js.map +1 -1
- package/dist/examples/internal/simple-scrollbox.vitest.d.ts +2 -0
- package/dist/examples/internal/simple-scrollbox.vitest.d.ts.map +1 -0
- package/dist/examples/internal/simple-scrollbox.vitest.js +96 -0
- package/dist/examples/internal/simple-scrollbox.vitest.js.map +1 -0
- package/dist/examples/internal/unicode-square-repro.d.ts +2 -0
- package/dist/examples/internal/unicode-square-repro.d.ts.map +1 -0
- package/dist/examples/internal/unicode-square-repro.js +7 -0
- package/dist/examples/internal/unicode-square-repro.js.map +1 -0
- package/dist/examples/list-detail-metadata.d.ts +2 -0
- package/dist/examples/list-detail-metadata.d.ts.map +1 -0
- package/dist/examples/list-detail-metadata.js +8 -0
- package/dist/examples/list-detail-metadata.js.map +1 -0
- package/dist/examples/list-dropdown-default.vitest.d.ts +2 -0
- package/dist/examples/list-dropdown-default.vitest.d.ts.map +1 -0
- package/dist/examples/list-dropdown-default.vitest.js +234 -0
- package/dist/examples/list-dropdown-default.vitest.js.map +1 -0
- package/dist/examples/list-fetch-data.vitest.d.ts +2 -0
- package/dist/examples/list-fetch-data.vitest.d.ts.map +1 -0
- package/dist/examples/list-fetch-data.vitest.js +111 -0
- package/dist/examples/list-fetch-data.vitest.js.map +1 -0
- package/dist/examples/list-filter-navigation.d.ts +2 -0
- package/dist/examples/list-filter-navigation.d.ts.map +1 -0
- package/dist/examples/list-filter-navigation.js +8 -0
- package/dist/examples/list-filter-navigation.js.map +1 -0
- package/dist/examples/list-scrollbox.vitest.d.ts +2 -0
- package/dist/examples/list-scrollbox.vitest.d.ts.map +1 -0
- package/dist/examples/list-scrollbox.vitest.js +93 -0
- package/dist/examples/list-scrollbox.vitest.js.map +1 -0
- package/dist/examples/list-with-detail-long.d.ts +2 -0
- package/dist/examples/list-with-detail-long.d.ts.map +1 -0
- package/dist/examples/list-with-detail-long.js +53 -0
- package/dist/examples/list-with-detail-long.js.map +1 -0
- package/dist/examples/list-with-detail.vitest.d.ts +2 -0
- package/dist/examples/list-with-detail.vitest.d.ts.map +1 -0
- package/dist/examples/list-with-detail.vitest.js +434 -0
- package/dist/examples/list-with-detail.vitest.js.map +1 -0
- package/dist/examples/list-with-dropdown.vitest.d.ts +2 -0
- package/dist/examples/list-with-dropdown.vitest.d.ts.map +1 -0
- package/dist/examples/list-with-dropdown.vitest.js +337 -0
- package/dist/examples/list-with-dropdown.vitest.js.map +1 -0
- package/dist/examples/list-with-sections.js +5 -1
- package/dist/examples/list-with-sections.js.map +1 -1
- package/dist/examples/list-with-sections.vitest.d.ts +2 -0
- package/dist/examples/list-with-sections.vitest.d.ts.map +1 -0
- package/dist/examples/list-with-sections.vitest.js +601 -0
- package/dist/examples/list-with-sections.vitest.js.map +1 -0
- package/dist/examples/scrollbox-vertical-centering.d.ts +6 -0
- package/dist/examples/scrollbox-vertical-centering.d.ts.map +1 -0
- package/dist/examples/scrollbox-vertical-centering.js +17 -0
- package/dist/examples/scrollbox-vertical-centering.js.map +1 -0
- package/dist/examples/simple-file-picker.vitest.d.ts +2 -0
- package/dist/examples/simple-file-picker.vitest.d.ts.map +1 -0
- package/dist/examples/simple-file-picker.vitest.js +678 -0
- package/dist/examples/simple-file-picker.vitest.js.map +1 -0
- package/dist/examples/simple-grid.vitest.d.ts +2 -0
- package/dist/examples/simple-grid.vitest.d.ts.map +1 -0
- package/dist/examples/simple-grid.vitest.js +521 -0
- package/dist/examples/simple-grid.vitest.js.map +1 -0
- package/dist/examples/simple-navigation.js +10 -4
- package/dist/examples/simple-navigation.js.map +1 -1
- package/dist/examples/simple-navigation.vitest.d.ts +2 -0
- package/dist/examples/simple-navigation.vitest.d.ts.map +1 -0
- package/dist/examples/simple-navigation.vitest.js +718 -0
- package/dist/examples/simple-navigation.vitest.js.map +1 -0
- package/dist/examples/store.vitest.d.ts +2 -0
- package/dist/examples/store.vitest.d.ts.map +1 -0
- package/dist/examples/store.vitest.js +69 -0
- package/dist/examples/store.vitest.js.map +1 -0
- package/dist/examples/toast-variations.d.ts +2 -0
- package/dist/examples/toast-variations.d.ts.map +1 -0
- package/dist/examples/toast-variations.js +122 -0
- package/dist/examples/toast-variations.js.map +1 -0
- package/dist/extensions/dev.d.ts +4 -2
- package/dist/extensions/dev.d.ts.map +1 -1
- package/dist/extensions/dev.js +61 -10
- package/dist/extensions/dev.js.map +1 -1
- package/dist/extensions/dev.vitest.d.ts +2 -0
- package/dist/extensions/dev.vitest.d.ts.map +1 -0
- package/dist/extensions/dev.vitest.js +197 -0
- package/dist/extensions/dev.vitest.js.map +1 -0
- package/dist/extensions/home.d.ts.map +1 -1
- package/dist/extensions/home.js +3 -0
- package/dist/extensions/home.js.map +1 -1
- package/dist/home-command.d.ts +8 -0
- package/dist/home-command.d.ts.map +1 -0
- package/dist/home-command.js +181 -0
- package/dist/home-command.js.map +1 -0
- package/dist/hover-repro.d.ts +2 -0
- package/dist/hover-repro.d.ts.map +1 -0
- package/dist/hover-repro.js +20 -0
- package/dist/hover-repro.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/dialog.d.ts +1 -0
- package/dist/internal/dialog.d.ts.map +1 -1
- package/dist/internal/dialog.js +27 -18
- package/dist/internal/dialog.js.map +1 -1
- package/dist/internal/navigation.d.ts +9 -1
- package/dist/internal/navigation.d.ts.map +1 -1
- package/dist/internal/navigation.js +5 -5
- package/dist/internal/navigation.js.map +1 -1
- package/dist/internal/offscreen.d.ts +6 -0
- package/dist/internal/offscreen.d.ts.map +1 -0
- package/dist/internal/offscreen.js +10 -0
- package/dist/internal/offscreen.js.map +1 -0
- package/dist/internal/providers.d.ts.map +1 -1
- package/dist/internal/providers.js +2 -2
- package/dist/internal/providers.js.map +1 -1
- package/dist/internal/scrollbox.d.ts +1 -10
- package/dist/internal/scrollbox.d.ts.map +1 -1
- package/dist/internal/scrollbox.js +2 -1
- package/dist/internal/scrollbox.js.map +1 -1
- package/dist/localstorage.d.ts +13 -0
- package/dist/localstorage.d.ts.map +1 -0
- package/dist/localstorage.js +190 -0
- package/dist/localstorage.js.map +1 -0
- package/dist/oauth.d.ts +142 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +551 -0
- package/dist/oauth.js.map +1 -0
- package/dist/preferences.d.ts +23 -0
- package/dist/preferences.d.ts.map +1 -0
- package/dist/preferences.js +105 -0
- package/dist/preferences.js.map +1 -0
- package/dist/release.d.ts +1 -1
- package/dist/release.d.ts.map +1 -1
- package/dist/release.js +29 -33
- package/dist/release.js.map +1 -1
- package/dist/state.d.ts +2 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +3 -0
- package/dist/state.js.map +1 -1
- package/dist/store.d.ts +21 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +84 -0
- package/dist/store.js.map +1 -0
- package/dist/swift-loader.d.ts +3 -0
- package/dist/swift-loader.d.ts.map +1 -0
- package/dist/swift-loader.js +193 -0
- package/dist/swift-loader.js.map +1 -0
- package/dist/swift-runtime.d.ts +2 -0
- package/dist/swift-runtime.d.ts.map +1 -0
- package/dist/swift-runtime.js +27 -0
- package/dist/swift-runtime.js.map +1 -0
- package/dist/toast.d.ts +44 -0
- package/dist/toast.d.ts.map +1 -0
- package/dist/toast.js +221 -0
- package/dist/toast.js.map +1 -0
- package/dist/utils/file-system.d.ts +9 -0
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +49 -0
- package/dist/utils/file-system.js.map +1 -1
- package/dist/utils/run-command.d.ts +26 -1
- package/dist/utils/run-command.d.ts.map +1 -1
- package/dist/utils/run-command.js +53 -4
- package/dist/utils/run-command.js.map +1 -1
- package/dist/window.d.ts +12 -0
- package/dist/window.d.ts.map +1 -0
- package/dist/window.js +48 -0
- package/dist/window.js.map +1 -0
- package/package.json +12 -12
- package/src/apis/browser-extension.tsx +29 -0
- package/src/apis/localstorage.test.ts +14 -6
- package/src/apis/localstorage.tsx +8 -5
- package/src/apis/oauth.tsx +5 -1
- package/src/apis/preferences.tsx +48 -22
- package/src/apis/toast.tsx +37 -62
- package/src/build.test.tsx +52 -0
- package/src/build.tsx +3 -1
- package/src/cli.tsx +99 -48
- package/src/compile.tsx +32 -11
- package/src/components/actions.tsx +94 -32
- package/src/components/detail.tsx +4 -0
- package/src/components/dropdown.tsx +47 -14
- package/src/components/extension-preferences.tsx +44 -16
- package/src/components/form/checkbox.tsx +12 -6
- package/src/components/form/date-picker.tsx +12 -6
- package/src/components/form/description.tsx +7 -2
- package/src/components/form/dropdown.tsx +131 -119
- package/src/components/form/file-autocomplete.tsx +90 -108
- package/src/components/form/file-picker.tsx +54 -43
- package/src/components/form/form-end.tsx +23 -2
- package/src/components/form/index.tsx +168 -41
- package/src/components/form/password-field.tsx +12 -6
- package/src/components/form/text-area.tsx +13 -6
- package/src/components/form/text-field.tsx +13 -6
- package/src/components/form/types.tsx +6 -0
- package/src/components/form/with-left-border.tsx +41 -8
- package/src/components/icon.tsx +27 -8
- package/src/components/list.tsx +243 -101
- package/src/components/loading-bar.tsx +3 -2
- package/src/components/loading-text.tsx +79 -0
- package/src/descendants.tsx +1 -0
- package/src/examples/file-autocomplete.vitest.tsx +130 -125
- package/src/examples/form-basic.vitest.tsx +376 -176
- package/src/examples/form-dropdown.vitest.tsx +126 -126
- package/src/examples/form-scroll.tsx +2 -0
- package/src/examples/form-scroll.vitest.tsx +58 -58
- package/src/examples/form-tagpicker.vitest.tsx +99 -99
- package/src/examples/internal/descendants-filtering.tsx +1 -0
- package/src/examples/internal/descendants.tsx +1 -0
- package/src/examples/internal/rhf-custom-ref.tsx +2 -0
- package/src/examples/internal/scrollbox-demo.tsx +3 -27
- package/src/examples/internal/scrollbox-with-descendants.tsx +4 -7
- package/src/examples/internal/simple-scrollbox.vitest.tsx +7 -5
- package/src/examples/list-detail-metadata.tsx +49 -0
- package/src/examples/list-detail-metadata.vitest.tsx +88 -0
- package/src/examples/list-dropdown-default.vitest.tsx +51 -51
- package/src/examples/list-fetch-data.vitest.tsx +4 -4
- package/src/examples/list-scrollbox.vitest.tsx +73 -14
- package/src/examples/list-with-detail-long.tsx +70 -0
- package/src/examples/list-with-detail.vitest.tsx +191 -85
- package/src/examples/list-with-dropdown.vitest.tsx +53 -53
- package/src/examples/list-with-sections.tsx +1 -0
- package/src/examples/list-with-sections.vitest.tsx +221 -97
- package/src/examples/list-with-toast.vitest.tsx +16 -16
- package/src/examples/simple-file-picker.vitest.tsx +63 -469
- package/src/examples/simple-grid.vitest.tsx +238 -233
- package/src/examples/simple-navigation.tsx +15 -7
- package/src/examples/simple-navigation.vitest.tsx +130 -219
- package/src/examples/store.vitest.tsx +1 -1
- package/src/examples/swift-extension.vitest.tsx +148 -0
- package/src/examples/synonyms.vitest.tsx +159 -0
- package/src/examples/toast-variations.tsx +150 -0
- package/src/examples/toast-variations.vitest.tsx +370 -0
- package/src/extensions/dev.tsx +74 -7
- package/src/extensions/dev.vitest.tsx +102 -34
- package/src/extensions/home.tsx +6 -0
- package/src/index.tsx +3 -0
- package/src/internal/dialog.tsx +43 -30
- package/src/internal/navigation.tsx +3 -1
- package/src/internal/offscreen.tsx +15 -0
- package/src/internal/providers.tsx +4 -2
- package/src/internal/scrollbox.tsx +4 -8
- package/src/keyboard.test.tsx +69 -0
- package/src/release.tsx +32 -38
- package/src/state.tsx +7 -0
- package/src/swift-loader.tsx +239 -0
- package/src/swift-runtime.tsx +36 -0
- package/src/utils/file-system.ts +61 -0
- package/src/utils/run-command.tsx +82 -6
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { List } from 'termcast'
|
|
3
|
+
import { renderWithProviders } from '../utils'
|
|
4
|
+
|
|
5
|
+
const ListDetailMetadataExample = () => {
|
|
6
|
+
return (
|
|
7
|
+
<List
|
|
8
|
+
navigationTitle="Metadata Test"
|
|
9
|
+
searchBarPlaceholder="Search..."
|
|
10
|
+
isShowingDetail={true}
|
|
11
|
+
>
|
|
12
|
+
<List.Item
|
|
13
|
+
id="item1"
|
|
14
|
+
title="Item with Metadata"
|
|
15
|
+
detail={
|
|
16
|
+
<List.Item.Detail
|
|
17
|
+
markdown="# Details"
|
|
18
|
+
metadata={
|
|
19
|
+
<List.Item.Detail.Metadata>
|
|
20
|
+
<List.Item.Detail.Metadata.Label title="Name" text="John Doe" />
|
|
21
|
+
<List.Item.Detail.Metadata.Label title="Email" text="john@example.com" />
|
|
22
|
+
<List.Item.Detail.Metadata.Separator />
|
|
23
|
+
<List.Item.Detail.Metadata.Label title="Status" text="Active" />
|
|
24
|
+
<List.Item.Detail.Metadata.Link title="Website" target="https://example.com" text="example.com" />
|
|
25
|
+
</List.Item.Detail.Metadata>
|
|
26
|
+
}
|
|
27
|
+
/>
|
|
28
|
+
}
|
|
29
|
+
/>
|
|
30
|
+
<List.Item
|
|
31
|
+
id="item2"
|
|
32
|
+
title="Another Item"
|
|
33
|
+
detail={
|
|
34
|
+
<List.Item.Detail
|
|
35
|
+
markdown="# Info"
|
|
36
|
+
metadata={
|
|
37
|
+
<List.Item.Detail.Metadata>
|
|
38
|
+
<List.Item.Detail.Metadata.Label title="Count" text="42" />
|
|
39
|
+
<List.Item.Detail.Metadata.Label title="Price" text="$99.99" />
|
|
40
|
+
</List.Item.Detail.Metadata>
|
|
41
|
+
}
|
|
42
|
+
/>
|
|
43
|
+
}
|
|
44
|
+
/>
|
|
45
|
+
</List>
|
|
46
|
+
)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
await renderWithProviders(<ListDetailMetadataExample />)
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { test, expect, afterEach, beforeEach } from 'vitest'
|
|
2
|
+
import { launchTerminal, Session } from 'tuistory/src'
|
|
3
|
+
|
|
4
|
+
let session: Session
|
|
5
|
+
|
|
6
|
+
beforeEach(async () => {
|
|
7
|
+
session = await launchTerminal({
|
|
8
|
+
command: 'bun',
|
|
9
|
+
args: ['src/examples/list-detail-metadata.tsx'],
|
|
10
|
+
cols: 80,
|
|
11
|
+
rows: 20,
|
|
12
|
+
})
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
session?.close()
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
test('list detail metadata label renders title and text in column layout', async () => {
|
|
20
|
+
const snapshot = await session.text({
|
|
21
|
+
waitFor: (text) => {
|
|
22
|
+
return (
|
|
23
|
+
text.includes('Metadata Test') &&
|
|
24
|
+
text.includes('Name') &&
|
|
25
|
+
text.includes('John Doe') &&
|
|
26
|
+
text.includes('Email')
|
|
27
|
+
)
|
|
28
|
+
},
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
expect(snapshot).toMatchInlineSnapshot(`
|
|
32
|
+
"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
Metadata Test ────────────────────────────────────────────────────────────
|
|
36
|
+
|
|
37
|
+
Search...
|
|
38
|
+
|
|
39
|
+
›Item with Metadata
|
|
40
|
+
Another Item │ ▲
|
|
41
|
+
│ ───────────────────────────────── █
|
|
42
|
+
│ ▀
|
|
43
|
+
│ Name:
|
|
44
|
+
│ John Doe
|
|
45
|
+
│
|
|
46
|
+
│ Email:
|
|
47
|
+
│ john@example.com
|
|
48
|
+
│ ─────────────────
|
|
49
|
+
│
|
|
50
|
+
↑↓ navigate ^k actions │ Status: ▼"
|
|
51
|
+
`)
|
|
52
|
+
}, 10000)
|
|
53
|
+
|
|
54
|
+
test('list detail metadata navigation shows different metadata', async () => {
|
|
55
|
+
await session.text({
|
|
56
|
+
waitFor: (text) => text.includes('Metadata Test'),
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
await session.press('down')
|
|
60
|
+
|
|
61
|
+
const snapshot = await session.text({
|
|
62
|
+
waitFor: (text) => {
|
|
63
|
+
return text.includes('Count') && text.includes('42')
|
|
64
|
+
},
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
expect(snapshot).toMatchInlineSnapshot(`
|
|
68
|
+
"
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
Metadata Test ────────────────────────────────────────────────────────────
|
|
72
|
+
|
|
73
|
+
Search...
|
|
74
|
+
|
|
75
|
+
Item with Metadata
|
|
76
|
+
›Another Item │ Info
|
|
77
|
+
│ ──────────────────────────────────
|
|
78
|
+
│
|
|
79
|
+
│ Count:
|
|
80
|
+
│ 42
|
|
81
|
+
│
|
|
82
|
+
│ Price:
|
|
83
|
+
│ $99.99
|
|
84
|
+
│
|
|
85
|
+
│
|
|
86
|
+
↑↓ navigate ^k actions │"
|
|
87
|
+
`)
|
|
88
|
+
}, 10000)
|
|
@@ -56,7 +56,7 @@ test('dropdown defaults to first item when no value is provided', async () => {
|
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
|
|
59
|
-
↵
|
|
59
|
+
↵ show selected fruit ↑↓ navigate ^k actions"
|
|
60
60
|
`)
|
|
61
61
|
}, 10000)
|
|
62
62
|
|
|
@@ -75,20 +75,22 @@ test('dropdown opens and shows items', async () => {
|
|
|
75
75
|
|
|
76
76
|
|
|
77
77
|
Dropdown Default Value Example ───────────────────────────────────────────
|
|
78
|
-
┃ ┃
|
|
79
|
-
┃ Filter by category esc ┃
|
|
80
|
-
┃ ┃
|
|
81
|
-
┃ Select category... ┃
|
|
82
|
-
┃ ┃
|
|
83
|
-
┃ ›Apple ┃
|
|
84
|
-
┃ Banana ┃
|
|
85
|
-
┃ Orange ┃
|
|
86
|
-
┃ Grape ┃
|
|
87
|
-
┃ ┃
|
|
88
|
-
┃ ┃
|
|
89
|
-
┃ ↵ select ↑↓ navigate ┃
|
|
90
|
-
┃ ┃
|
|
91
78
|
|
|
79
|
+
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
80
|
+
S┃ ┃
|
|
81
|
+
┃ Filter by category esc ┃
|
|
82
|
+
›F┃ ┃
|
|
83
|
+
S┃ Select category... ┃
|
|
84
|
+
V┃ ┃
|
|
85
|
+
C┃ ›Apple ┃
|
|
86
|
+
┃ Banana ┃
|
|
87
|
+
┃ Orange ┃
|
|
88
|
+
┃ Grape ┃
|
|
89
|
+
┃ ┃
|
|
90
|
+
┃ ┃
|
|
91
|
+
┃ ↵ select ↑↓ navigate ┃
|
|
92
|
+
┃ ┃
|
|
93
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
92
94
|
|
|
93
95
|
|
|
94
96
|
|
|
@@ -97,9 +99,7 @@ test('dropdown opens and shows items', async () => {
|
|
|
97
99
|
|
|
98
100
|
|
|
99
101
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
↵ select ↑↓ navigate ^k actions"
|
|
102
|
+
↵ show selected fruit ↑↓ navigate ^k actions"
|
|
103
103
|
`)
|
|
104
104
|
|
|
105
105
|
await session.press('down')
|
|
@@ -110,21 +110,22 @@ test('dropdown opens and shows items', async () => {
|
|
|
110
110
|
|
|
111
111
|
|
|
112
112
|
Dropdown Default Value Example ───────────────────────────────────────────
|
|
113
|
-
┃ ┃
|
|
114
|
-
┃ Filter by category esc ┃
|
|
115
|
-
┃ ┃
|
|
116
|
-
┃ Select category... ┃
|
|
117
|
-
┃ ┃
|
|
118
|
-
┃ Apple ┃
|
|
119
|
-
┃ ›Banana ┃
|
|
120
|
-
┃ Orange ┃
|
|
121
|
-
┃ Grape ┃
|
|
122
|
-
┃ ┃
|
|
123
|
-
┃ ┃
|
|
124
|
-
┃ ↵ select ↑↓ navigate ┃
|
|
125
|
-
┃ ┃
|
|
126
|
-
|
|
127
113
|
|
|
114
|
+
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
115
|
+
S┃ ┃
|
|
116
|
+
┃ Filter by category esc ┃
|
|
117
|
+
›F┃ ┃
|
|
118
|
+
S┃ Select category... ┃
|
|
119
|
+
V┃ ┃
|
|
120
|
+
C┃ Apple ┃
|
|
121
|
+
┃ ›Banana ┃
|
|
122
|
+
┃ Orange ┃
|
|
123
|
+
┃ Grape ┃
|
|
124
|
+
┃ ┃
|
|
125
|
+
┃ ┃
|
|
126
|
+
┃ ↵ select ↑↓ navigate ┃
|
|
127
|
+
┃ ┃
|
|
128
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
128
129
|
|
|
129
130
|
|
|
130
131
|
|
|
@@ -133,8 +134,7 @@ test('dropdown opens and shows items', async () => {
|
|
|
133
134
|
|
|
134
135
|
|
|
135
136
|
|
|
136
|
-
|
|
137
|
-
↵ select ↑↓ navigate ^k actions"
|
|
137
|
+
↵ show selected fruit ↑↓ navigate ^k actions"
|
|
138
138
|
`)
|
|
139
139
|
|
|
140
140
|
await session.press('enter')
|
|
@@ -169,7 +169,7 @@ test('dropdown opens and shows items', async () => {
|
|
|
169
169
|
|
|
170
170
|
|
|
171
171
|
|
|
172
|
-
↵
|
|
172
|
+
↵ show selected fruit ↑↓ navigate ^k actions"
|
|
173
173
|
`)
|
|
174
174
|
}, 10000)
|
|
175
175
|
|
|
@@ -188,22 +188,22 @@ test('clicking dropdown opens it', async () => {
|
|
|
188
188
|
|
|
189
189
|
|
|
190
190
|
Dropdown Default Value Example ───────────────────────────────────────────
|
|
191
|
-
┃ ┃
|
|
192
|
-
┃ Filter by category esc ┃
|
|
193
|
-
┃ ┃
|
|
194
|
-
┃ Select category... ┃
|
|
195
|
-
┃ ┃
|
|
196
|
-
┃ ›Apple ┃
|
|
197
|
-
┃ Banana ┃
|
|
198
|
-
┃ Orange ┃
|
|
199
|
-
┃ Grape ┃
|
|
200
|
-
┃ ┃
|
|
201
|
-
┃ ┃
|
|
202
|
-
┃ ↵ select ↑↓ navigate ┃
|
|
203
|
-
┃ ┃
|
|
204
|
-
|
|
205
|
-
|
|
206
191
|
|
|
192
|
+
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
193
|
+
S┃ ┃
|
|
194
|
+
┃ Filter by category esc ┃
|
|
195
|
+
›F┃ ┃
|
|
196
|
+
S┃ Select category... ┃
|
|
197
|
+
V┃ ┃
|
|
198
|
+
C┃ ›Apple ┃
|
|
199
|
+
┃ Banana ┃
|
|
200
|
+
┃ Orange ┃
|
|
201
|
+
┃ Grape ┃
|
|
202
|
+
┃ ┃
|
|
203
|
+
┃ ┃
|
|
204
|
+
┃ ↵ select ↑↓ navigate ┃
|
|
205
|
+
┃ ┃
|
|
206
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
207
207
|
|
|
208
208
|
|
|
209
209
|
|
|
@@ -212,7 +212,7 @@ test('clicking dropdown opens it', async () => {
|
|
|
212
212
|
|
|
213
213
|
|
|
214
214
|
|
|
215
|
-
↵
|
|
215
|
+
↵ show selected fruit ↑↓ navigate ^k actions"
|
|
216
216
|
`)
|
|
217
217
|
|
|
218
218
|
await session.click('Orange', { first: true })
|
|
@@ -247,6 +247,6 @@ test('clicking dropdown opens it', async () => {
|
|
|
247
247
|
|
|
248
248
|
|
|
249
249
|
|
|
250
|
-
↵
|
|
250
|
+
↵ show selected fruit ↑↓ navigate ^k actions"
|
|
251
251
|
`)
|
|
252
252
|
}, 10000)
|
|
@@ -44,7 +44,7 @@ test('list shows initial items after fetch', async () => {
|
|
|
44
44
|
|
|
45
45
|
Illustrations
|
|
46
46
|
Welcome Banner Category: Illustrations
|
|
47
|
-
Hero
|
|
47
|
+
Hero Image Category: Illustrations
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
|
|
@@ -53,7 +53,7 @@ test('list shows initial items after fetch', async () => {
|
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
↑↓ navigate ^k actions"
|
|
57
57
|
`)
|
|
58
58
|
|
|
59
59
|
|
|
@@ -84,7 +84,7 @@ test('list shows initial items after fetch', async () => {
|
|
|
84
84
|
|
|
85
85
|
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
↑↓ navigate ^k actions"
|
|
88
88
|
`)
|
|
89
89
|
|
|
90
90
|
await session.press('down')
|
|
@@ -114,6 +114,6 @@ test('list shows initial items after fetch', async () => {
|
|
|
114
114
|
|
|
115
115
|
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
↑↓ navigate ^k actions"
|
|
118
118
|
`)
|
|
119
119
|
}, 10000)
|
|
@@ -29,13 +29,13 @@ test('list scrollbox auto-scrolls when navigating down', async () => {
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
Scrollbox Test ─────────────────────────────
|
|
32
|
-
Search items...
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
■ Item 2 Description for item 2 ▼
|
|
33
|
+
Search items...
|
|
36
34
|
|
|
35
|
+
›▲ Item 1 Description for item 1 ▲
|
|
36
|
+
▼
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
↑↓ navigate ^k actions"
|
|
39
39
|
`)
|
|
40
40
|
|
|
41
41
|
await session.press('down')
|
|
@@ -50,13 +50,13 @@ test('list scrollbox auto-scrolls when navigating down', async () => {
|
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
Scrollbox Test ─────────────────────────────
|
|
53
|
-
Search items...
|
|
54
53
|
|
|
55
|
-
|
|
56
|
-
›♦ Item 6 Description for item 6 ▼
|
|
54
|
+
Search items...
|
|
57
55
|
|
|
56
|
+
›● Item 6 Description for item 6 ▲
|
|
57
|
+
▼
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
↑↓ navigate ^k actions"
|
|
60
60
|
`)
|
|
61
61
|
|
|
62
62
|
await session.press('down')
|
|
@@ -69,13 +69,13 @@ test('list scrollbox auto-scrolls when navigating down', async () => {
|
|
|
69
69
|
|
|
70
70
|
|
|
71
71
|
Scrollbox Test ─────────────────────────────
|
|
72
|
-
Search items...
|
|
73
72
|
|
|
74
|
-
|
|
75
|
-
›■ Item 9 Description for item 9 ▼
|
|
73
|
+
Search items...
|
|
76
74
|
|
|
75
|
+
›■ Item 9 Description for item 9 ▲
|
|
76
|
+
▼
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
↑↓ navigate ^k actions"
|
|
79
79
|
`)
|
|
80
80
|
|
|
81
81
|
await session.press('up')
|
|
@@ -92,12 +92,71 @@ test('list scrollbox auto-scrolls when navigating down', async () => {
|
|
|
92
92
|
|
|
93
93
|
|
|
94
94
|
Scrollbox Test ─────────────────────────────
|
|
95
|
+
|
|
95
96
|
Search items...
|
|
96
97
|
|
|
97
98
|
›■ Item 2 Description for item 2 ▲
|
|
98
|
-
|
|
99
|
+
▼
|
|
100
|
+
|
|
101
|
+
↑↓ navigate ^k actions"
|
|
102
|
+
`)
|
|
103
|
+
}, 15000)
|
|
104
|
+
|
|
105
|
+
test('list scrollbox scrolls with mouse wheel', async () => {
|
|
106
|
+
await session.text({
|
|
107
|
+
waitFor: (text) => {
|
|
108
|
+
return /Item 1/i.test(text)
|
|
109
|
+
},
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
const initialSnapshot = await session.text()
|
|
113
|
+
expect(initialSnapshot).toMatchInlineSnapshot(`
|
|
114
|
+
"
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
Scrollbox Test ─────────────────────────────
|
|
118
|
+
|
|
119
|
+
Search items...
|
|
120
|
+
|
|
121
|
+
›▲ Item 1 Description for item 1 ▲
|
|
122
|
+
▼
|
|
123
|
+
|
|
124
|
+
↑↓ navigate ^k actions"
|
|
125
|
+
`)
|
|
126
|
+
|
|
127
|
+
await session.scrollDown(3)
|
|
128
|
+
|
|
129
|
+
const afterScrollDownSnapshot = await session.text()
|
|
130
|
+
expect(afterScrollDownSnapshot).not.toEqual(initialSnapshot)
|
|
131
|
+
expect(afterScrollDownSnapshot).toMatchInlineSnapshot(`
|
|
132
|
+
"
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
Scrollbox Test ─────────────────────────────
|
|
136
|
+
|
|
137
|
+
Search items...
|
|
138
|
+
|
|
139
|
+
■ Item 2 Description for item 2 ▲
|
|
140
|
+
▼
|
|
141
|
+
|
|
142
|
+
↑↓ navigate ^k actions"
|
|
143
|
+
`)
|
|
144
|
+
|
|
145
|
+
await session.scrollUp(2)
|
|
146
|
+
|
|
147
|
+
const afterScrollUpSnapshot = await session.text()
|
|
148
|
+
expect(afterScrollUpSnapshot).not.toEqual(afterScrollDownSnapshot)
|
|
149
|
+
expect(afterScrollUpSnapshot).toMatchInlineSnapshot(`
|
|
150
|
+
"
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
Scrollbox Test ─────────────────────────────
|
|
154
|
+
|
|
155
|
+
Search items...
|
|
99
156
|
|
|
157
|
+
›▲ Item 1 Description for item 1 ▲
|
|
158
|
+
▼
|
|
100
159
|
|
|
101
|
-
|
|
160
|
+
↑↓ navigate ^k actions"
|
|
102
161
|
`)
|
|
103
162
|
}, 15000)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { List } from 'termcast'
|
|
3
|
+
import { renderWithProviders } from '../utils'
|
|
4
|
+
|
|
5
|
+
const items = [
|
|
6
|
+
{
|
|
7
|
+
id: 'short',
|
|
8
|
+
title: 'Short Detail',
|
|
9
|
+
markdown: `# Brief content
|
|
10
|
+
|
|
11
|
+
This is short.`,
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
id: 'long',
|
|
15
|
+
title: 'Long Detail',
|
|
16
|
+
markdown: `# This item has extensive detail content
|
|
17
|
+
|
|
18
|
+
## Section 1
|
|
19
|
+
This is a very long description that contains multiple paragraphs and sections to test how the layout behaves when the detail panel content overflows.
|
|
20
|
+
|
|
21
|
+
## Section 2
|
|
22
|
+
More content here to ensure we have enough text to cause vertical overflow in the detail panel scrollbox.
|
|
23
|
+
|
|
24
|
+
## Section 3
|
|
25
|
+
Even more content. We want to make sure the detail panel definitely needs to scroll.
|
|
26
|
+
|
|
27
|
+
## Section 4
|
|
28
|
+
Additional paragraphs to push the content height beyond what fits in the viewport.
|
|
29
|
+
|
|
30
|
+
## Section 5
|
|
31
|
+
The goal is to have the scrollbar appear in the detail panel.
|
|
32
|
+
|
|
33
|
+
## Section 6
|
|
34
|
+
This should be enough content now to cause overflow.
|
|
35
|
+
|
|
36
|
+
## Section 7
|
|
37
|
+
Just a bit more to be safe.
|
|
38
|
+
|
|
39
|
+
## Section 8
|
|
40
|
+
And some final content here.`,
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: 'another',
|
|
44
|
+
title: 'Another Item',
|
|
45
|
+
markdown: `# Another
|
|
46
|
+
|
|
47
|
+
Some content.`,
|
|
48
|
+
},
|
|
49
|
+
]
|
|
50
|
+
|
|
51
|
+
const ListWithDetailLongExample = () => {
|
|
52
|
+
return (
|
|
53
|
+
<List
|
|
54
|
+
navigationTitle="Detail Length Test"
|
|
55
|
+
searchBarPlaceholder="Search..."
|
|
56
|
+
isShowingDetail={true}
|
|
57
|
+
>
|
|
58
|
+
{items.map((item) => (
|
|
59
|
+
<List.Item
|
|
60
|
+
key={item.id}
|
|
61
|
+
id={item.id}
|
|
62
|
+
title={item.title}
|
|
63
|
+
detail={<List.Item.Detail markdown={item.markdown} />}
|
|
64
|
+
/>
|
|
65
|
+
))}
|
|
66
|
+
</List>
|
|
67
|
+
)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
await renderWithProviders(<ListWithDetailLongExample />)
|