@esportsplus/ui 0.57.0 → 0.58.0
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/README.md +123 -39
- package/build/components/accordion/group.d.ts +14 -0
- package/build/components/accordion/group.js +21 -0
- package/build/components/accordion/index.d.ts +9 -0
- package/build/components/accordion/index.js +20 -3
- package/build/components/accordion/scss/index.scss +1 -1
- package/build/components/announcement/scss/index.scss +1 -1
- package/build/components/breadcrumb/scss/index.scss +1 -1
- package/build/components/button/scss/index.scss +1 -1
- package/build/components/button/sidebar.d.ts +3 -0
- package/build/components/button/sidebar.js +40 -10
- package/build/components/capslock/index.js +1 -1
- package/build/components/capslock/scss/index.scss +1 -1
- package/build/components/card/scss/index.scss +1 -1
- package/build/components/cc/scss/index.scss +1 -1
- package/build/components/chat-minimap/scss/index.scss +1 -1
- package/build/components/checkbox/scss/index.scss +1 -1
- package/build/components/color-picker/index.d.ts +1 -0
- package/build/components/color-picker/index.js +166 -136
- package/build/components/color-picker/scss/index.scss +1 -1
- package/build/components/command/index.d.ts +0 -1
- package/build/components/command/index.js +3 -2
- package/build/components/command/scss/index.scss +1 -1
- package/build/components/copy/scss/index.scss +1 -1
- package/build/components/counter/scss/index.scss +1 -1
- package/build/components/datalist/index.js +3 -3
- package/build/components/datalist/scss/index.scss +1 -1
- package/build/components/dock/scss/index.scss +1 -1
- package/build/components/editor/code/index.d.ts +0 -1
- package/build/components/editor/code/index.js +0 -1
- package/build/components/editor/code/minimap.d.ts +2 -1
- package/build/components/editor/code/minimap.js +5 -2
- package/build/components/editor/code/view.d.ts +3 -1
- package/build/components/editor/code/view.js +37 -26
- package/build/components/editor/diffs/index.d.ts +0 -1
- package/build/components/editor/diffs/index.js +0 -1
- package/build/components/editor/diffs/merge.js +7 -3
- package/build/components/editor/diffs/view.js +3 -1
- package/build/components/editor/index.d.ts +4 -1
- package/build/components/editor/index.js +2 -1
- package/build/components/editor/markdown/editing.js +22 -3
- package/build/components/editor/markdown/erase.d.ts +9 -0
- package/build/components/editor/markdown/erase.js +78 -0
- package/build/components/editor/markdown/index.d.ts +0 -1
- package/build/components/editor/markdown/index.js +0 -1
- package/build/components/editor/markdown/layout.d.ts +2 -9
- package/build/components/editor/markdown/layout.js +2 -7
- package/build/components/editor/markdown/render.d.ts +0 -1
- package/build/components/editor/markdown/render.js +287 -235
- package/build/components/editor/markdown/view.js +566 -667
- package/build/components/editor/viewer/index.d.ts +27 -0
- package/build/components/editor/viewer/index.js +250 -0
- package/build/components/editor/viewer/model.d.ts +15 -0
- package/build/components/editor/viewer/model.js +73 -0
- package/build/components/editor/workspace/index.d.ts +6 -2
- package/build/components/editor/workspace/index.js +243 -137
- package/build/components/editor/workspace/keybindings.d.ts +37 -0
- package/build/components/editor/workspace/keybindings.js +288 -0
- package/build/components/editor/workspace/model.d.ts +55 -2
- package/build/components/editor/workspace/model.js +141 -3
- package/build/components/editor/workspace/navigate.d.ts +19 -0
- package/build/components/editor/workspace/navigate.js +118 -0
- package/build/components/editor/workspace/session.d.ts +29 -0
- package/build/components/editor/workspace/session.js +373 -0
- package/build/components/editor/workspace/shortcuts.d.ts +19 -0
- package/build/components/editor/workspace/shortcuts.js +185 -0
- package/build/components/editor/workspace/status.d.ts +34 -0
- package/build/components/editor/workspace/status.js +193 -0
- package/build/components/editor/workspace/statusbar.d.ts +15 -0
- package/build/components/editor/workspace/statusbar.js +190 -0
- package/build/components/editor/workspace/strip.d.ts +27 -0
- package/build/components/editor/workspace/strip.js +239 -0
- package/build/components/editor/workspace/tabs.d.ts +15 -0
- package/build/components/editor/workspace/tabs.js +63 -0
- package/build/components/error/index.js +1 -1
- package/build/components/error/scss/index.scss +1 -1
- package/build/components/filter/index.js +5 -3
- package/build/components/filter/scss/index.scss +1 -1
- package/build/components/frame/scss/index.scss +1 -1
- package/build/components/heatmap/index.js +3 -3
- package/build/components/heatmap/scss/index.scss +1 -1
- package/build/components/highlight/scss/index.scss +1 -1
- package/build/components/icon/scss/index.scss +1 -1
- package/build/components/image/scss/index.scss +1 -1
- package/build/components/index.d.ts +2 -0
- package/build/components/index.js +2 -0
- package/build/components/inline-edit/scss/index.scss +1 -1
- package/build/components/input/scss/index.scss +1 -1
- package/build/components/link/scss/index.scss +1 -1
- package/build/components/loading/scss/index.scss +1 -1
- package/build/components/marquee/scss/index.scss +1 -1
- package/build/components/metric/scss/index.scss +1 -1
- package/build/components/nav/index.d.ts +1 -1
- package/build/components/nav/scss/index.scss +1 -1
- package/build/components/nav/tree.d.ts +3 -1
- package/build/components/nav/tree.js +30 -60
- package/build/components/notification/scss/index.scss +1 -1
- package/build/components/overlay/scss/index.scss +1 -1
- package/build/components/page/scss/index.scss +1 -1
- package/build/components/pagination/arrows.d.ts +15 -0
- package/build/components/pagination/arrows.js +65 -0
- package/build/components/pagination/cards.d.ts +23 -0
- package/build/components/pagination/cards.js +66 -0
- package/build/components/pagination/index.d.ts +5 -0
- package/build/components/pagination/index.js +3 -1
- package/build/components/pagination/scss/index.scss +1 -1
- package/build/components/progress/scss/index.scss +1 -1
- package/build/components/pull-to-refresh/scss/index.scss +1 -1
- package/build/components/range/index.js +1 -1
- package/build/components/range/scss/index.scss +1 -1
- package/build/components/relative-time/scss/index.scss +1 -1
- package/build/components/root/scss/index.scss +1 -1
- package/build/components/section/scss/index.scss +2 -0
- package/build/components/select/index.d.ts +1 -0
- package/build/components/select/index.js +16 -11
- package/build/components/select/scss/index.scss +1 -1
- package/build/components/shortcut-recorder/scss/index.scss +1 -1
- package/build/components/sortable/scss/index.scss +1 -1
- package/build/components/sticky-header/index.js +3 -3
- package/build/components/sticky-header/scss/index.scss +1 -1
- package/build/components/story/scss/index.scss +1 -1
- package/build/components/surface-field/scss/index.scss +1 -1
- package/build/components/tasklist/scss/index.scss +1 -1
- package/build/components/text/scss/index.scss +1 -1
- package/build/components/textarea/scss/index.scss +1 -1
- package/build/{css-utilities → components}/theme/index.d.ts +1 -1
- package/build/{css-utilities → components}/theme/index.js +15 -5
- package/build/components/theme/scss/index.scss +2 -0
- package/build/components/theme-picker/index.d.ts +52 -0
- package/build/components/theme-picker/index.js +167 -0
- package/build/components/theme-picker/scss/index.scss +2 -0
- package/build/components/toast/index.js +3 -5
- package/build/components/toast/scss/index.scss +1 -1
- package/build/components/tooltip/menu.js +3 -1
- package/build/components/tooltip/scss/index.scss +1 -1
- package/build/components/typewriter/scss/index.scss +1 -1
- package/build/components/uptime/scss/index.scss +1 -1
- package/build/components/usage-meter/scss/index.scss +1 -1
- package/build/{css-utilities → modifiers}/glass/index.d.ts +2 -2
- package/build/modifiers/glass/index.js +28 -0
- package/build/modifiers/glass/scss/index.scss +2 -0
- package/build/{css-utilities → modifiers}/index.d.ts +0 -1
- package/build/{css-utilities → modifiers}/index.js +0 -1
- package/build/modifiers/scrollbar/index.d.ts +72 -0
- package/build/{css-utilities → modifiers}/scrollbar/index.js +52 -19
- package/build/modifiers/scrollbar/scss/index.scss +2 -0
- package/build/normalize/scss/index.scss +1 -2
- package/layer.scss +1 -1
- package/package.json +11 -18
- package/scripts/code-editor-markdown.test.mjs +45 -14
- package/scripts/code-viewer.test.mjs +69 -0
- package/scripts/workspace-keybindings.test.mjs +273 -0
- package/scripts/workspace-session.test.mjs +349 -0
- package/scripts/workspace-status.test.mjs +229 -0
- package/scripts/workspace-tabs.test.mjs +142 -0
- package/src/components/accordion/group.ts +39 -0
- package/src/components/accordion/index.ts +32 -6
- package/src/components/accordion/scss/index.scss +12 -21
- package/src/components/accordion/scss/variables.scss +18 -3
- package/src/components/announcement/scss/index.scss +4 -4
- package/src/components/announcement/scss/variables.scss +6 -6
- package/src/components/banner/scss/index.scss +1 -1
- package/src/components/breadcrumb/scss/index.scss +35 -50
- package/src/components/breadcrumb/scss/variables.scss +23 -31
- package/src/components/button/scss/_fan.scss +39 -43
- package/src/components/button/scss/_morph.scss +66 -78
- package/src/components/button/scss/_sidebar.scss +41 -30
- package/src/components/button/scss/_split.scss +9 -9
- package/src/components/button/scss/index.scss +23 -19
- package/src/components/button/scss/variables.scss +94 -90
- package/src/components/button/sidebar.ts +36 -24
- package/src/components/capslock/index.ts +2 -2
- package/src/components/capslock/scss/index.scss +11 -6
- package/src/components/capslock/scss/variables.scss +3 -5
- package/src/components/card/scss/_expand.scss +58 -64
- package/src/components/card/scss/index.scss +40 -21
- package/src/components/card/scss/variables.scss +40 -31
- package/src/components/cc/scss/index.scss +68 -68
- package/src/components/cc/scss/variables.scss +13 -14
- package/src/components/chat-minimap/scss/index.scss +24 -16
- package/src/components/chat-minimap/scss/variables.scss +37 -37
- package/src/components/checkbox/scss/index.scss +54 -52
- package/src/components/checkbox/scss/variables.scss +37 -39
- package/src/components/color-picker/index.ts +157 -120
- package/src/components/color-picker/scss/index.scss +159 -96
- package/src/components/color-picker/scss/variables.scss +33 -15
- package/src/components/command/index.ts +3 -2
- package/src/components/command/scss/index.scss +10 -14
- package/src/components/command/scss/variables.scss +12 -35
- package/src/components/copy/scss/index.scss +6 -6
- package/src/components/copy/scss/variables.scss +12 -15
- package/src/components/counter/scss/index.scss +14 -14
- package/src/components/counter/scss/variables.scss +1 -1
- package/src/components/datalist/index.ts +3 -3
- package/src/components/datalist/scss/index.scss +7 -6
- package/src/components/datalist/scss/variables.scss +7 -3
- package/src/components/dock/scss/index.scss +10 -15
- package/src/components/dock/scss/variables.scss +29 -25
- package/src/components/editor/code/index.ts +0 -1
- package/src/components/editor/code/minimap.ts +13 -5
- package/src/components/editor/code/scss/_editor.scss +83 -81
- package/src/components/editor/code/scss/_features.scss +106 -97
- package/src/components/editor/code/scss/_services.scss +27 -25
- package/src/components/editor/code/scss/index.scss +0 -1
- package/src/components/editor/code/scss/variables.scss +30 -26
- package/src/components/editor/code/view.ts +14 -5
- package/src/components/editor/diffs/index.ts +0 -1
- package/src/components/editor/diffs/merge.ts +2 -1
- package/src/components/editor/diffs/scss/_diffs.scss +67 -57
- package/src/components/editor/diffs/scss/_merge.scss +17 -14
- package/src/components/editor/diffs/scss/index.scss +0 -1
- package/src/components/editor/diffs/scss/variables.scss +25 -18
- package/src/components/editor/diffs/view.ts +2 -1
- package/src/components/editor/index.ts +7 -1
- package/src/components/editor/markdown/editing.ts +38 -3
- package/src/components/editor/markdown/erase.ts +124 -0
- package/src/components/editor/markdown/index.ts +0 -1
- package/src/components/editor/markdown/layout.ts +3 -12
- package/src/components/editor/markdown/render.ts +65 -37
- package/src/components/editor/markdown/scss/index.scss +92 -124
- package/src/components/editor/markdown/scss/variables.scss +39 -19
- package/src/components/editor/markdown/view.ts +737 -786
- package/src/components/editor/tree/scss/index.scss +121 -110
- package/src/components/editor/tree/scss/variables.scss +48 -54
- package/src/components/editor/viewer/index.ts +321 -0
- package/src/components/editor/viewer/model.ts +130 -0
- package/src/components/editor/viewer/scss/_viewer.scss +302 -0
- package/src/components/editor/viewer/scss/index.scss +2 -0
- package/src/components/editor/viewer/scss/variables.scss +69 -0
- package/src/components/editor/workspace/index.ts +159 -31
- package/src/components/editor/workspace/keybindings.ts +447 -0
- package/src/components/editor/workspace/model.ts +233 -3
- package/src/components/editor/workspace/navigate.ts +194 -0
- package/src/components/editor/workspace/scss/index.scss +72 -59
- package/src/components/editor/workspace/scss/keybindings.scss +190 -0
- package/src/components/editor/workspace/scss/status.scss +122 -0
- package/src/components/editor/workspace/scss/tabs.scss +56 -0
- package/src/components/editor/workspace/session.ts +551 -0
- package/src/components/editor/workspace/shortcuts.ts +255 -0
- package/src/components/editor/workspace/status.ts +259 -0
- package/src/components/editor/workspace/statusbar.ts +255 -0
- package/src/components/editor/workspace/strip.ts +273 -0
- package/src/components/editor/workspace/tabs.ts +106 -0
- package/src/components/error/index.ts +1 -1
- package/src/components/error/scss/index.scss +19 -19
- package/src/components/error/scss/variables.scss +2 -2
- package/src/components/filter/index.ts +7 -2
- package/src/components/filter/scss/index.scss +1 -1
- package/src/components/filter/scss/variables.scss +11 -10
- package/src/components/frame/scss/index.scss +12 -12
- package/src/components/frame/scss/variables.scss +8 -8
- package/src/components/heatmap/index.ts +3 -3
- package/src/components/heatmap/scss/index.scss +28 -26
- package/src/components/heatmap/scss/variables.scss +18 -17
- package/src/components/highlight/scss/index.scss +17 -13
- package/src/components/highlight/scss/variables.scss +8 -10
- package/src/components/icon/scss/index.scss +10 -0
- package/src/components/icon/scss/variables.scss +5 -0
- package/src/components/image/scss/index.scss +9 -9
- package/src/components/image/scss/variables.scss +7 -2
- package/src/components/index.ts +2 -0
- package/src/components/inline-edit/scss/index.scss +99 -104
- package/src/components/inline-edit/scss/variables.scss +40 -39
- package/src/components/input/scss/_field.scss +6 -20
- package/src/components/input/scss/_scrub.scss +10 -8
- package/src/components/input/scss/_tag.scss +35 -37
- package/src/components/input/scss/variables.scss +100 -99
- package/src/components/link/scss/index.scss +4 -1
- package/src/components/loading/scss/index.scss +1 -1
- package/src/components/loading/scss/variables.scss +1 -1
- package/src/components/marquee/scss/index.scss +9 -5
- package/src/components/marquee/scss/variables.scss +3 -1
- package/src/components/metric/scss/_flash.scss +3 -1
- package/src/components/metric/scss/index.scss +8 -6
- package/src/components/metric/scss/variables.scss +26 -20
- package/src/components/nav/index.ts +1 -1
- package/src/components/nav/scss/index.scss +12 -40
- package/src/components/nav/scss/variables.scss +30 -11
- package/src/components/nav/tree.ts +19 -62
- package/src/components/notification/scss/index.scss +7 -7
- package/src/components/notification/scss/variables.scss +7 -9
- package/src/components/overlay/scss/index.scss +181 -170
- package/src/components/overlay/scss/variables.scss +26 -57
- package/src/components/page/scss/index.scss +12 -11
- package/src/components/page/scss/variables.scss +5 -0
- package/src/components/pagination/arrows.ts +58 -0
- package/src/components/pagination/cards.ts +57 -0
- package/src/components/pagination/index.ts +4 -1
- package/src/components/pagination/scss/_arrows.scss +69 -0
- package/src/components/pagination/scss/_cards.scss +121 -0
- package/src/components/pagination/scss/_dots.scss +2 -5
- package/src/components/pagination/scss/index.scss +8 -6
- package/src/components/pagination/scss/variables.scss +87 -37
- package/src/components/progress/scss/_text.scss +21 -18
- package/src/components/progress/scss/index.scss +1 -1
- package/src/components/progress/scss/variables.scss +12 -12
- package/src/components/pull-to-refresh/scss/index.scss +2 -1
- package/src/components/pull-to-refresh/scss/variables.scss +11 -6
- package/src/components/range/index.ts +1 -1
- package/src/components/range/scss/_filter.scss +62 -51
- package/src/components/range/scss/_slider.scss +78 -75
- package/src/components/range/scss/_vertical.scss +6 -6
- package/src/components/range/scss/index.scss +3 -2
- package/src/components/range/scss/variables.scss +26 -23
- package/src/components/relative-time/scss/index.scss +27 -27
- package/src/components/relative-time/scss/variables.scss +10 -12
- package/src/components/root/scss/index.scss +71 -43
- package/src/components/root/scss/variables.scss +35 -31
- package/src/components/section/scss/index.scss +31 -0
- package/src/components/section/scss/variables.scss +21 -0
- package/src/components/select/index.ts +11 -6
- package/src/components/select/scss/index.scss +21 -32
- package/src/components/select/scss/variables.scss +25 -18
- package/src/components/shortcut-recorder/scss/index.scss +13 -12
- package/src/components/shortcut-recorder/scss/variables.scss +12 -13
- package/src/components/sortable/scss/index.scss +47 -44
- package/src/components/sortable/scss/variables.scss +4 -5
- package/src/components/sticky-header/index.ts +4 -4
- package/src/components/sticky-header/scss/index.scss +14 -13
- package/src/components/sticky-header/scss/variables.scss +9 -9
- package/src/components/story/scss/index.scss +26 -30
- package/src/components/story/scss/variables.scss +16 -9
- package/src/components/surface-field/scss/index.scss +45 -40
- package/src/components/surface-field/scss/variables.scss +5 -6
- package/src/components/tasklist/scss/index.scss +19 -19
- package/src/components/tasklist/scss/variables.scss +26 -29
- package/src/components/text/scss/index.scss +2 -1
- package/src/components/textarea/scss/variables.scss +1 -1
- package/src/{css-utilities → components}/theme/index.ts +17 -3
- package/src/components/theme/scss/index.scss +1 -0
- package/src/components/theme/scss/variables.scss +78 -0
- package/src/components/theme-picker/index.ts +231 -0
- package/src/components/theme-picker/scss/index.scss +264 -0
- package/src/components/toast/index.ts +28 -30
- package/src/components/toast/scss/index.scss +87 -87
- package/src/components/toast/scss/variables.scss +39 -39
- package/src/components/tooltip/menu.ts +4 -1
- package/src/components/tooltip/scss/_east.scss +10 -10
- package/src/components/tooltip/scss/_menu.scss +284 -269
- package/src/components/tooltip/scss/_north.scss +10 -10
- package/src/components/tooltip/scss/_shared.scss +7 -7
- package/src/components/tooltip/scss/_south.scss +10 -10
- package/src/components/tooltip/scss/_west.scss +10 -10
- package/src/components/tooltip/scss/index.scss +21 -20
- package/src/components/tooltip/scss/variables.scss +104 -96
- package/src/components/typewriter/scss/_retype.scss +12 -11
- package/src/components/typewriter/scss/_rotate.scss +2 -1
- package/src/components/typewriter/scss/variables.scss +41 -39
- package/src/components/uptime/scss/index.scss +15 -15
- package/src/components/uptime/scss/variables.scss +8 -8
- package/src/components/usage-meter/scss/index.scss +3 -1
- package/src/components/usage-meter/scss/variables.scss +5 -5
- package/src/css-utilities/absolute.scss +64 -0
- package/src/css-utilities/background.scss +43 -0
- package/src/css-utilities/border.scss +45 -0
- package/src/css-utilities/box-shadow.scss +29 -0
- package/src/css-utilities/color.scss +41 -0
- package/src/css-utilities/flex.scss +64 -0
- package/src/css-utilities/font/geist/{scss/index.scss → index.scss} +12 -4
- package/src/css-utilities/font/montserrat/Montserrat-Italic-Variable.woff2 +0 -0
- package/src/css-utilities/font/montserrat/Montserrat-Variable.woff2 +0 -0
- package/src/css-utilities/font/montserrat/OFL.txt +93 -0
- package/src/css-utilities/font/montserrat/index.scss +38 -0
- package/src/{shared/scss → css-utilities}/icon.scss +1 -1
- package/src/css-utilities/{inline/scss/index.scss → inline.scss} +1 -1
- package/src/css-utilities/{skeleton/scss/index.scss → skeleton.scss} +11 -11
- package/src/css-utilities/surface.scss +266 -0
- package/src/css-utilities/text.scss +191 -0
- package/src/modifiers/glass/index.ts +44 -0
- package/src/{css-utilities → modifiers}/glass/scss/index.scss +6 -6
- package/src/{css-utilities → modifiers}/glass/scss/variables.scss +1 -1
- package/src/{css-utilities → modifiers}/index.ts +0 -1
- package/src/{css-utilities → modifiers}/scrollbar/index.ts +92 -17
- package/src/{css-utilities → modifiers}/scrollbar/scss/index.scss +178 -177
- package/src/{css-utilities → modifiers}/scrollbar/scss/variables.scss +28 -21
- package/src/normalize/scss/index.scss +4 -2
- package/src/shared/scss/color-weights.scss +19 -0
- package/src/shared/scss/index.scss +1 -12
- package/src/tokens/scss/blur.scss +5 -0
- package/src/tokens/scss/color.scss +74 -50
- package/src/tokens/scss/index.scss +1 -2
- package/src/tokens/scss/size.scss +0 -2
- package/src/tokens/scss/state.scss +3 -2
- package/src/tokens/scss/transition.scss +19 -2
- package/storage/svg/monitor.svg +1 -0
- package/storage/svg/moon.svg +1 -0
- package/storage/svg/pin.svg +1 -0
- package/storage/svg/sun.svg +1 -0
- package/vite.config.ts +33 -8
- package/build/css-utilities/background/scss/index.scss +0 -2
- package/build/css-utilities/border/scss/index.scss +0 -2
- package/build/css-utilities/color/scss/index.scss +0 -2
- package/build/css-utilities/flex/scss/index.scss +0 -2
- package/build/css-utilities/font/geist/index.d.ts +0 -1
- package/build/css-utilities/font/geist/index.js +0 -1
- package/build/css-utilities/font/geist/scss/index.scss +0 -2
- package/build/css-utilities/font/montserrat/index.d.ts +0 -1
- package/build/css-utilities/font/montserrat/index.js +0 -1
- package/build/css-utilities/font/montserrat/scss/Montserrat-Bold.woff +0 -0
- package/build/css-utilities/font/montserrat/scss/Montserrat-Bold.woff2 +0 -0
- package/build/css-utilities/font/montserrat/scss/Montserrat-BoldItalic.woff +0 -0
- package/build/css-utilities/font/montserrat/scss/Montserrat-BoldItalic.woff2 +0 -0
- package/build/css-utilities/font/montserrat/scss/Montserrat-Italic.woff +0 -0
- package/build/css-utilities/font/montserrat/scss/Montserrat-Italic.woff2 +0 -0
- package/build/css-utilities/font/montserrat/scss/Montserrat-Medium.woff +0 -0
- package/build/css-utilities/font/montserrat/scss/Montserrat-Medium.woff2 +0 -0
- package/build/css-utilities/font/montserrat/scss/Montserrat-MediumItalic.woff +0 -0
- package/build/css-utilities/font/montserrat/scss/Montserrat-MediumItalic.woff2 +0 -0
- package/build/css-utilities/font/montserrat/scss/Montserrat-Regular.woff +0 -0
- package/build/css-utilities/font/montserrat/scss/Montserrat-Regular.woff2 +0 -0
- package/build/css-utilities/font/montserrat/scss/Montserrat-SemiBold.woff +0 -0
- package/build/css-utilities/font/montserrat/scss/Montserrat-SemiBold.woff2 +0 -0
- package/build/css-utilities/font/montserrat/scss/Montserrat-SemiBoldItalic.woff +0 -0
- package/build/css-utilities/font/montserrat/scss/Montserrat-SemiBoldItalic.woff2 +0 -0
- package/build/css-utilities/font/montserrat/scss/index.scss +0 -2
- package/build/css-utilities/glass/index.js +0 -26
- package/build/css-utilities/glass/scss/index.scss +0 -2
- package/build/css-utilities/index.scss +0 -2
- package/build/css-utilities/inline/scss/index.scss +0 -2
- package/build/css-utilities/scrollbar/index.d.ts +0 -42
- package/build/css-utilities/scrollbar/scss/index.scss +0 -2
- package/build/css-utilities/skeleton/scss/index.scss +0 -2
- package/build/css-utilities/text/scss/index.scss +0 -2
- package/build/themes/dark/index.d.ts +0 -3
- package/build/themes/dark/index.js +0 -3
- package/build/themes/dark/input.d.ts +0 -3
- package/build/themes/dark/input.js +0 -12
- package/build/themes/dark/select.d.ts +0 -3
- package/build/themes/dark/select.js +0 -23
- package/build/themes/dark/textarea.d.ts +0 -2186
- package/build/themes/dark/textarea.js +0 -11
- package/src/css-utilities/background/scss/index.scss +0 -1
- package/src/css-utilities/background/scss/variables.scss +0 -18
- package/src/css-utilities/border/scss/index.scss +0 -1
- package/src/css-utilities/border/scss/variables.scss +0 -23
- package/src/css-utilities/color/scss/index.scss +0 -1
- package/src/css-utilities/color/scss/variables.scss +0 -17
- package/src/css-utilities/flex/scss/index.scss +0 -57
- package/src/css-utilities/flex/scss/variables.scss +0 -16
- package/src/css-utilities/font/geist/index.ts +0 -1
- package/src/css-utilities/font/montserrat/index.ts +0 -1
- package/src/css-utilities/font/montserrat/scss/Montserrat-Bold.woff +0 -0
- package/src/css-utilities/font/montserrat/scss/Montserrat-Bold.woff2 +0 -0
- package/src/css-utilities/font/montserrat/scss/Montserrat-BoldItalic.woff +0 -0
- package/src/css-utilities/font/montserrat/scss/Montserrat-BoldItalic.woff2 +0 -0
- package/src/css-utilities/font/montserrat/scss/Montserrat-Italic.woff +0 -0
- package/src/css-utilities/font/montserrat/scss/Montserrat-Italic.woff2 +0 -0
- package/src/css-utilities/font/montserrat/scss/Montserrat-Medium.woff +0 -0
- package/src/css-utilities/font/montserrat/scss/Montserrat-Medium.woff2 +0 -0
- package/src/css-utilities/font/montserrat/scss/Montserrat-MediumItalic.woff +0 -0
- package/src/css-utilities/font/montserrat/scss/Montserrat-MediumItalic.woff2 +0 -0
- package/src/css-utilities/font/montserrat/scss/Montserrat-Regular.woff +0 -0
- package/src/css-utilities/font/montserrat/scss/Montserrat-Regular.woff2 +0 -0
- package/src/css-utilities/font/montserrat/scss/Montserrat-SemiBold.woff +0 -0
- package/src/css-utilities/font/montserrat/scss/Montserrat-SemiBold.woff2 +0 -0
- package/src/css-utilities/font/montserrat/scss/Montserrat-SemiBoldItalic.woff +0 -0
- package/src/css-utilities/font/montserrat/scss/Montserrat-SemiBoldItalic.woff2 +0 -0
- package/src/css-utilities/font/montserrat/scss/index.scss +0 -94
- package/src/css-utilities/glass/index.ts +0 -42
- package/src/css-utilities/index.scss +0 -13
- package/src/css-utilities/skeleton/scss/variables.scss +0 -3
- package/src/css-utilities/text/scss/index.scss +0 -152
- package/src/css-utilities/text/scss/variables.scss +0 -22
- package/src/shared/scss/absolute.scss +0 -28
- package/src/shared/scss/background.scss +0 -21
- package/src/shared/scss/border.scss +0 -21
- package/src/shared/scss/color.scss +0 -21
- package/src/shared/scss/position.scss +0 -55
- package/src/shared/scss/text.scss +0 -31
- package/src/themes/dark/index.ts +0 -3
- package/src/themes/dark/input.ts +0 -16
- package/src/themes/dark/select.ts +0 -28
- package/src/themes/dark/textarea.ts +0 -13
- package/src/tokens/scss/box-shadow.scss +0 -23
- package/src/tokens/scss/font-family.scss +0 -5
- package/storage/code.md +0 -180
- package/storage/editor-features.md +0 -227
- package/build/css-utilities/font/geist/{scss/Geist-Italic-Variable.woff2 → Geist-Italic-Variable.woff2} +0 -0
- package/build/css-utilities/font/geist/{scss/Geist-Variable.woff2 → Geist-Variable.woff2} +0 -0
- package/build/css-utilities/font/geist/{scss/GeistMono-Italic-Variable.woff2 → GeistMono-Italic-Variable.woff2} +0 -0
- package/build/css-utilities/font/geist/{scss/GeistMono-Variable.woff2 → GeistMono-Variable.woff2} +0 -0
- package/src/{shared/scss → css-utilities}/anchor.scss +6 -6
- package/src/{shared/scss → css-utilities}/drag.scss +0 -0
- package/src/css-utilities/font/geist/{scss/Geist-Italic-Variable.woff2 → Geist-Italic-Variable.woff2} +0 -0
- package/src/css-utilities/font/geist/{scss/Geist-Variable.woff2 → Geist-Variable.woff2} +0 -0
- package/src/css-utilities/font/geist/{scss/GeistMono-Italic-Variable.woff2 → GeistMono-Italic-Variable.woff2} +0 -0
- package/src/css-utilities/font/geist/{scss/GeistMono-Variable.woff2 → GeistMono-Variable.woff2} +0 -0
- package/src/{shared/scss → css-utilities}/hidden.scss +11 -11
- /package/src/{shared/scss → css-utilities}/layer.scss +0 -0
- /package/src/{shared/scss → css-utilities}/reset.scss +0 -0
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
@use 'list';
|
|
2
|
-
@use 'sass:meta';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
@mixin position($position, $value: null) {
|
|
6
|
-
position: $position;
|
|
7
|
-
|
|
8
|
-
@if $value == bottom {
|
|
9
|
-
inset: auto 0 0 0;
|
|
10
|
-
}
|
|
11
|
-
@else if $value == center {
|
|
12
|
-
bottom: 50%;
|
|
13
|
-
right: 50%;
|
|
14
|
-
translate: 50% 50%;
|
|
15
|
-
}
|
|
16
|
-
@else if $value == full {
|
|
17
|
-
inset: 0 0 0 0;
|
|
18
|
-
}
|
|
19
|
-
@else if $value == horizontal {
|
|
20
|
-
right: 50%;
|
|
21
|
-
translate: 50%;
|
|
22
|
-
}
|
|
23
|
-
@else if $value == left {
|
|
24
|
-
inset: 0 auto 0 0;
|
|
25
|
-
}
|
|
26
|
-
@else if $value == right {
|
|
27
|
-
inset: 0 0 0 auto;
|
|
28
|
-
}
|
|
29
|
-
@else if $value == top {
|
|
30
|
-
inset: 0 0 auto 0;
|
|
31
|
-
}
|
|
32
|
-
@else if $value == vertical {
|
|
33
|
-
bottom: 50%;
|
|
34
|
-
translate: 0 50%;
|
|
35
|
-
}
|
|
36
|
-
@else if $value and meta.type-of($value) == list {
|
|
37
|
-
$length: list.length($value);
|
|
38
|
-
|
|
39
|
-
@if $length > 0 and list.nth($value, 1) != null {
|
|
40
|
-
top: list.nth($value, 1);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
@if $length > 1 and list.nth($value, 2) != null {
|
|
44
|
-
right: list.nth($value, 2);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
@if $length > 2 and list.nth($value, 3) != null {
|
|
48
|
-
bottom: list.nth($value, 3);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
@if $length > 3 and list.nth($value, 4) != null {
|
|
52
|
-
left: list.nth($value, 4);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
%text {
|
|
2
|
-
--border-width: 0px;
|
|
3
|
-
--color: var(--color-default, inherit);
|
|
4
|
-
--color-active: var(--color-default);
|
|
5
|
-
--color-default: var(--color-text-400);
|
|
6
|
-
--color-hover: var(--color-default);
|
|
7
|
-
--color-pressed: var(--color-default);
|
|
8
|
-
--width: auto;
|
|
9
|
-
|
|
10
|
-
color: var(--color);
|
|
11
|
-
display: flex;
|
|
12
|
-
font-size: var(--font-size);
|
|
13
|
-
font-weight: var(--font-weight);
|
|
14
|
-
gap: var(--gap-vertical) var(--gap-horizontal);
|
|
15
|
-
line-height: var(--line-height);
|
|
16
|
-
position: relative;
|
|
17
|
-
transition: color var(--transition-duration) var(--transition-timing-function);
|
|
18
|
-
width: var(--width);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
&.--text-truncate {
|
|
22
|
-
display: block;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
%text-truncate {
|
|
27
|
-
max-width: 100%;
|
|
28
|
-
overflow: hidden;
|
|
29
|
-
text-overflow: ellipsis;
|
|
30
|
-
white-space: nowrap;
|
|
31
|
-
}
|
package/src/themes/dark/index.ts
DELETED
package/src/themes/dark/input.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import input from '~/components/input';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const themed: typeof input = Object.assign(input.bind({
|
|
5
|
-
attributes: {
|
|
6
|
-
class: 'input--primary --border --border-black --color-white',
|
|
7
|
-
style: `
|
|
8
|
-
--border-color-active: var(--color-purple-300);
|
|
9
|
-
--border-color-default: var(--color-black-300);
|
|
10
|
-
color-scheme: dark;
|
|
11
|
-
`
|
|
12
|
-
}
|
|
13
|
-
}), { scrub: input.scrub, tag: input.tag });
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
export default themed;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import select from '~/components/select';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const themed: typeof select = select.bind({
|
|
5
|
-
attributes: {
|
|
6
|
-
class: '--background-black --border-black --color-white',
|
|
7
|
-
[select.option]: {
|
|
8
|
-
class: '--background-black --color-white',
|
|
9
|
-
style: '--color-default: var(--color-grey-500); --padding-horizontal: var(--size-500); white-space: nowrap; width: 100%;'
|
|
10
|
-
},
|
|
11
|
-
style: '--border-color-default: var(--color-black-300); --border-width: var(--border-width-400); border: var(--border-width) solid var(--border-color); color-scheme: dark;',
|
|
12
|
-
|
|
13
|
-
[select.tooltipContent]: {
|
|
14
|
-
direction: 'sw',
|
|
15
|
-
style: `
|
|
16
|
-
--background: var(--color-black-400);
|
|
17
|
-
--border-color: var(--color-black-300);
|
|
18
|
-
--border-radius: var(--border-radius-500);
|
|
19
|
-
--border-width: var(--border-width-400);
|
|
20
|
-
border: var(--border-width) solid var(--border-color);
|
|
21
|
-
color-scheme: dark;
|
|
22
|
-
`
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
export default themed;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import textarea from '~/components/textarea';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export default textarea.bind({
|
|
5
|
-
attributes: {
|
|
6
|
-
class: 'textarea--primary --border --border-black --color-white',
|
|
7
|
-
style: `
|
|
8
|
-
--border-color-active: var(--color-purple-300);
|
|
9
|
-
--border-color-default: var(--color-black-300);
|
|
10
|
-
color-scheme: dark;
|
|
11
|
-
`
|
|
12
|
-
}
|
|
13
|
-
});
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
$box-shadow: (
|
|
2
|
-
100: 0 1px 2px 0 oklch(from var(--color-black-300) l c h / 0.04),
|
|
3
|
-
200: #{
|
|
4
|
-
0 1px 2px 0 oklch(from var(--color-black-300) l c h / 0.04),
|
|
5
|
-
0 2px 6px -2px oklch(from var(--color-black-300) l c h / 0.05)
|
|
6
|
-
},
|
|
7
|
-
300: #{
|
|
8
|
-
0 2px 3px -2px oklch(from var(--color-black-300) l c h / 0.06),
|
|
9
|
-
0 4px 12px -4px oklch(from var(--color-black-300) l c h / 0.06)
|
|
10
|
-
},
|
|
11
|
-
400: #{
|
|
12
|
-
0 4px 8px -4px oklch(from var(--color-black-300) l c h / 0.07),
|
|
13
|
-
0 8px 24px -8px oklch(from var(--color-black-300) l c h / 0.07)
|
|
14
|
-
},
|
|
15
|
-
500: #{
|
|
16
|
-
0 8px 16px -8px oklch(from var(--color-black-300) l c h / 0.08),
|
|
17
|
-
0 12px 32px -12px oklch(from var(--color-black-300) l c h / 0.08)
|
|
18
|
-
},
|
|
19
|
-
600: #{
|
|
20
|
-
0 12px 24px -12px oklch(from var(--color-black-300) l c h / 0.09),
|
|
21
|
-
0 24px 48px -16px oklch(from var(--color-black-300) l c h / 0.09)
|
|
22
|
-
}
|
|
23
|
-
);
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
// Geist Mono ships with the library ('css-utilities/font/geist') but loads only when a host imports it; without it the
|
|
2
|
-
// stack falls back to each platform's own UI monospace.
|
|
3
|
-
$font-family: (
|
|
4
|
-
mono: ('Geist Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace)
|
|
5
|
-
);
|
package/storage/code.md
DELETED
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
# Editor family plan
|
|
2
|
-
|
|
3
|
-
Everything editor-related lives under `src/components/editor/` and is exported as one namespace:
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
import { editor } from '@esportsplus/ui/components';
|
|
7
|
-
|
|
8
|
-
editor.code(...) // code editor (was codeEditor)
|
|
9
|
-
editor.markdown(...) // markdown editor (was codeEditor.markdown)
|
|
10
|
-
editor.tree(...) // file tree (was fileTree)
|
|
11
|
-
editor.workspace(...) // explorer, tabs, toolbar, status bar (was codeEditor.workspace)
|
|
12
|
-
editor.diffs(...) // diff viewer (new)
|
|
13
|
-
editor.diffs.merge(...) // three-way merge editor (new)
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
There are no aliases for the old names. CSS class names are unchanged (`.code-editor`, `.markdown-editor`,
|
|
17
|
-
`.code-workspace`, `.file-tree`). New components use `.diffs` and `.diffs-merge`.
|
|
18
|
-
|
|
19
|
-
## Layout
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
src/components/editor/
|
|
23
|
-
├── index.ts namespace + public re-exports
|
|
24
|
-
├── code/ core editor: document, view, syntax, layout, minimap, keymap, services/ (language server)
|
|
25
|
-
├── markdown/ rendered markdown editor, built on code/
|
|
26
|
-
├── tree/ file tree
|
|
27
|
-
├── workspace/ composes code, markdown, tree, diffs
|
|
28
|
-
└── diffs/ diff viewer and merge editor; engine.ts is the shared Myers line diff
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
`diffs/engine.ts` (`diffLines`, `diffSequences`, `changes`) ships in the base commit. The code editor's git gutter
|
|
32
|
-
and the diff component both use it.
|
|
33
|
-
|
|
34
|
-
## Work split
|
|
35
|
-
|
|
36
|
-
Work is split by folder. Each agent works in its own git worktree and only edits files it owns:
|
|
37
|
-
- its `src/components/editor/<folder>/`;
|
|
38
|
-
- its docs example folder;
|
|
39
|
-
- its own new test file under `scripts/`.
|
|
40
|
-
|
|
41
|
-
Shared files are off limits to every agent; the orchestrator merges them:
|
|
42
|
-
- `src/components/editor/index.ts`
|
|
43
|
-
- `src/components/index.ts`
|
|
44
|
-
- `docs/src/examples/groups.ts`
|
|
45
|
-
- `README.md`
|
|
46
|
-
|
|
47
|
-
Each agent lists the lines to add to those files in its report.
|
|
48
|
-
|
|
49
|
-
The work runs in two phases:
|
|
50
|
-
- **Phase 1:** `code`, `tree` and `diffs` run in parallel, against the contracts below.
|
|
51
|
-
- **Phase 2:** `workspace` runs on top of the merged phase 1, wiring everything together.
|
|
52
|
-
|
|
53
|
-
The gate for every agent:
|
|
54
|
-
- `npx tsc --noEmit -p tsconfig.json` and `npx tsc --noEmit -p docs/tsconfig.json` must be clean (the existing
|
|
55
|
-
`animation.ts` analyzer note is fine);
|
|
56
|
-
- `node --test scripts/*.test.mjs` must pass;
|
|
57
|
-
- the coding standards in CLAUDE.md apply.
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
## Phase 1A: `editor/code`
|
|
62
|
-
|
|
63
|
-
New options (`Options` in `code/view.ts`). Every one is optional and off or neutral by default unless noted:
|
|
64
|
-
|
|
65
|
-
| Option | Behaviour |
|
|
66
|
-
| --- | --- |
|
|
67
|
-
| `sticky?: boolean \| number` | Sticky scroll: the headers of the enclosing folds stay pinned at the top while scrolling. `true` = up to 5 lines; a number sets the cap. Clicking a pinned header scrolls to it. Uses the existing fold structure (`folding.ts`). |
|
|
68
|
-
| `colors?: boolean` | Colour swatches: a small swatch before each CSS colour literal (hex, `rgb()`/`hsl()`/`oklch()`, named colours) in CSS, SCSS, HTML and string literals. Clicking it opens the library `colorPicker` in a tooltip; picking replaces the literal as one undoable edit. |
|
|
69
|
-
| `links?: boolean \| ((url: string) => void)` | Clickable links: URLs (and `file://` / relative paths when a handler is given) are underlined on Mod+hover and open on Mod+click. The default handler opens `noopener` in a new tab. |
|
|
70
|
-
| `unicode?: boolean` (default `true`) | Unicode warnings: invisible characters (zero-width, NBSP, soft hyphen), bidirectional controls, and confusables (non-ASCII letters that look like ASCII in otherwise ASCII identifiers) get a box mark; hovering explains which code point it is. |
|
|
71
|
-
| `rulers?: readonly number[]` | Vertical rulers drawn at those columns. Colour is `--ruler-color`. |
|
|
72
|
-
| `baseline?: string \| null` | Git gutter: diff the document against this text (for example HEAD), via `diffLines`. Gutter bars show added, modified and deleted lines (`--gutter-added-color` etc.). Clicking a bar opens an inline peek of the original lines with Revert and Next/Previous. Recomputed after edits, debounced and incremental where cheap. |
|
|
73
|
-
| `keybindings?: Readonly<Record<string, Command \| null>>` | User keybinding overrides merged over the defaults: a key chord maps to a command, and `null` unbinds a default chord. |
|
|
74
|
-
| `onMerge?: (conflict: Conflict) => void` | Called from the conflict lens's "Compare" action (below). |
|
|
75
|
-
|
|
76
|
-
Conflict markers: blocks between `<<<<<<<`, `=======` and `>>>>>>>` (and `|||||||` for the base) are tinted current,
|
|
77
|
-
base and incoming, with a lens row above each block: **Accept current · Accept incoming · Accept both · Compare**.
|
|
78
|
-
The accepts are single undoable edits; Compare calls `onMerge`.
|
|
79
|
-
|
|
80
|
-
New commands (in `keymap.ts` `Command`, with default bindings):
|
|
81
|
-
|
|
82
|
-
| Command | Default |
|
|
83
|
-
| --- | --- |
|
|
84
|
-
| `nextChange` / `previousChange` | Alt+F5 / Shift+Alt+F5 (needs `baseline`) |
|
|
85
|
-
| `nextProblem` / `previousProblem` | F8 / Shift+F8 (diagnostics from services), each showing the message inline |
|
|
86
|
-
| `nextConflict` / `previousConflict` | Alt+F8 / Shift+Alt+F8 |
|
|
87
|
-
|
|
88
|
-
New exports from `code/index.ts` (the workspace depends on these):
|
|
89
|
-
|
|
90
|
-
```ts
|
|
91
|
-
// Every command with its label and default chords, for keybinding editors.
|
|
92
|
-
export const commands: readonly { id: Command; label: string; keys: readonly string[] }[];
|
|
93
|
-
export type { Command, Conflict };
|
|
94
|
-
// Conflict = { start: number; end: number; current: string; base: string | null; incoming: string; line: number }
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
New `Controller` methods: `nextChange()`, `previousChange()`, `nextProblem()`, `previousProblem()`,
|
|
98
|
-
`conflicts(): Conflict[]`, `resolveConflict(conflict, 'current' | 'incoming' | 'both' | string)`,
|
|
99
|
-
`setBaseline(text: string | null)`.
|
|
100
|
-
|
|
101
|
-
`Snapshot` (`controller.state`) gains `selections: number`, `lineEnding: 'crlf' | 'lf'` (detected), `indent:
|
|
102
|
-
{ size: number; tabs: boolean }` (detected unless options set it), `problems: { errors: number; warnings: number }`
|
|
103
|
-
and `language: Language`. These drive the workspace status bar.
|
|
104
|
-
|
|
105
|
-
Docs: extend `docs/src/examples/code-editor/index.ts` with examples or toggles for each option, plus a conflict
|
|
106
|
-
sample. Tests: `scripts/code-editor-features.test.mjs` covers conflict parsing and resolution, colour literal
|
|
107
|
-
detection, unicode detection, keybinding override merging and the baseline change ranges.
|
|
108
|
-
|
|
109
|
-
## Phase 1B: `editor/tree`
|
|
110
|
-
|
|
111
|
-
| Feature | API |
|
|
112
|
-
| --- | --- |
|
|
113
|
-
| Drop from the OS | New `operations.import?: (target: Element \| null, entries: readonly ImportEntry[]) => void \| Promise<void>`, with `ImportEntry = { path: string; file: File \| null }`. `path` is relative inside dropped folders, and `file` is null for a directory. Folders are walked with `webkitGetAsEntry`. Drop-target highlighting and folders that open on hover work the same as for internal drags. Without `operations.import`, OS drops are ignored. |
|
|
114
|
-
| Drag out to the OS | New `export?: (element: Element) => { name: string; type?: string; url?: string; text?: string } \| null`. Sets `DownloadURL` (Chromium), `text/uri-list` and `text/plain` on the native drag so a file can be dropped on the desktop or into another app. Internal moves keep working. |
|
|
115
|
-
| Next and previous change or problem | `Controller.next(kind)` and `Controller.previous(kind)`, with `kind: 'change' \| 'problem'`. They walk visible order, expanding and loading folders as needed, wrap around, and use decorations (git status for changes; problem counts for problems). Shortcuts: Alt+F5 / Shift+Alt+F5 for changes and F8 / Shift+F8 for problems, while the tree has focus. |
|
|
116
|
-
| Preview and pinned | Already supported (`preview`, `open(element, { mode })`); no tree work. |
|
|
117
|
-
|
|
118
|
-
Docs: add examples to `docs/src/examples/file-tree/index.ts` for drop from the OS (it logs the imported entries into
|
|
119
|
-
the in-memory store), drag out (text files as data URLs), and change and problem navigation. Tests:
|
|
120
|
-
`scripts/file-tree-features.test.mjs` for the navigation order and the import entry flattening.
|
|
121
|
-
|
|
122
|
-
## Phase 1C: `editor/diffs`
|
|
123
|
-
|
|
124
|
-
A new component, adapting the t3code reference (`G:/t3code/packages/diffs/src`: hunks, segments, render/split,
|
|
125
|
-
unified, virtual and whitespace) to this repo's template, reactivity, SCSS and coding standards.
|
|
126
|
-
|
|
127
|
-
`editor.diffs(attributes)`:
|
|
128
|
-
- `original: string`, `modified: string`, `language?: Language` (syntax colours through `../code/syntax`), and
|
|
129
|
-
`filename?` with a header showing the +additions and −deletions.
|
|
130
|
-
- `mode?: 'split' | 'unified'` (default split), `wordDiff?` (character and word highlights inside changed lines,
|
|
131
|
-
default `true`), `ignoreWhitespace?`, and `context?` (default 3) with expandable "N hidden lines" rows.
|
|
132
|
-
- Virtualised rows for large files, line numbers on both sides, and next/previous change (Alt+F5 and Shift+Alt+F5,
|
|
133
|
-
plus buttons).
|
|
134
|
-
- `onaccept?(change)` / `onrevert?(change)` per hunk when given (a change carries ranges on both sides and the
|
|
135
|
-
texts).
|
|
136
|
-
- `controller?` with `next()`, `previous()`, `setMode()`, `setTexts(original, modified)`.
|
|
137
|
-
|
|
138
|
-
`editor.diffs.merge(attributes)` is a three-way merge editor:
|
|
139
|
-
- `base: string | null`, `current: string`, `incoming: string`, `language?`, and `onresolve(result: string)`.
|
|
140
|
-
- Layout: incoming and current read-only on top (`editor.diffs`-style highlighting), and an editable result below
|
|
141
|
-
using `editor.code` (seeded with conflict markers, or by auto-merging non-conflicting hunks against the base).
|
|
142
|
-
- Each conflict has Accept current, Accept incoming and Accept both, plus next/previous conflict, a remaining count,
|
|
143
|
-
and Complete merge (enabled once no markers remain).
|
|
144
|
-
- It may build `diff3` on `engine.ts`.
|
|
145
|
-
|
|
146
|
-
Docs: a new `docs/src/examples/diffs/index.ts` (split, unified, word diff, large file, merge) with `name: 'diffs'`.
|
|
147
|
-
Report any docs registration it needs. Tests: `scripts/diffs.test.mjs` already covers the engine; extend it for
|
|
148
|
-
hunks with context, word segments and the three-way merge.
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
## Phase 2: `editor/workspace`
|
|
153
|
-
|
|
154
|
-
This phase runs after phase 1 is merged and committed, and wires everything in.
|
|
155
|
-
|
|
156
|
-
| Feature | Behaviour |
|
|
157
|
-
| --- | --- |
|
|
158
|
-
| Preview and pinned tabs | Single-click opens reuse one preview tab (italic) until it's edited, double-clicked or pinned. Pinned tabs sort first with a pin icon and are kept by "close others". The tab context menu has Pin/Unpin, Close, Close others, Close to the right, Close saved, Copy path and Reveal in explorer. |
|
|
159
|
-
| Auto save | Preference `autoSave: 'off' \| 'delay' \| 'focus'` and `autoSaveDelay` (ms, default 1000), toggled from the toolbar or menu. While it's on, the save button is replaced by an inline-edit-style status (unsaved → saving spinner → saved check, then "Saved"), reusing `inline-edit/status`. |
|
|
160
|
-
| Keybinding editor | Overlay (command palette entry and Mod+K Mod+S) listing `commands` from `editor/code`, with a search box, recording a new chord (the `shortcut-recorder` component), conflict warnings, and reset per command or all. Stored in preferences as `keybindings` and passed to every editor as `editorOptions.keybindings`. |
|
|
161
|
-
| Status bar items | Ln/Col (exists), selections, problems (errors and warnings; click goes to the next problem), language (click picks one), indentation (click picks tabs or spaces and the size), line ending (click converts LF ↔ CRLF as one undoable edit), and auto save state. Encoding is shown as UTF-8, read-only. |
|
|
162
|
-
| Persisted session | Optional `WorkspaceHost.session?: { get(): Promise<WorkspaceSession \| null>; set(session: WorkspaceSession): Promise<void> }`. It stores open tabs (path, pinned, preview), the active tab, each tab's selection, scroll and folds, the explorer's expansion and scroll, and unsaved drafts (hot exit), restored on load. Writes are debounced. |
|
|
163
|
-
| Git gutter | Optional `WorkspaceHost.baseline?(cwd, path): Promise<string \| null>` feeds `options.baseline` per tab, refreshed on save and on watch events. |
|
|
164
|
-
| OS drag and drop | `WorkspaceHost.import?(cwd, target, entries)` wired to the tree's `operations.import`; `WorkspaceHost.export?` to the tree's `export`. |
|
|
165
|
-
| Next change or problem | Workspace-level commands that move across files, using the tree's `next`/`previous` and then the editor's. |
|
|
166
|
-
| Merge | When an editor reports `onMerge`, or a file with conflict markers is opened through "Merge", open `editor.diffs.merge` in place of the editor tab, and write the result back on completion. |
|
|
167
|
-
| Compare | A tree context action "Compare with selected" opens `editor.diffs` in a tab. |
|
|
168
|
-
|
|
169
|
-
Docs: extend `docs/src/examples/code-editor/workspace-example.ts` and the in-memory host fixture
|
|
170
|
-
(`fixtures/workspace.ts`) with `session` (localStorage), `baseline` (a fixed HEAD map), `import` and `export`.
|
|
171
|
-
Tests: extend `scripts/code-editor-workspace.test.mjs`.
|
|
172
|
-
|
|
173
|
-
## Merge and commit
|
|
174
|
-
|
|
175
|
-
After each phase:
|
|
176
|
-
1. Apply each worktree's diff to main.
|
|
177
|
-
2. Merge the shared-file additions.
|
|
178
|
-
3. Run the gate and spot-check the docs.
|
|
179
|
-
4. Commit by component as semantic commits: `feat(editor/code): …`, `feat(editor/tree): …`, `feat(editor/diffs): …`,
|
|
180
|
-
`feat(editor/workspace): …`.
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
# Editor and file tree features we don't have yet
|
|
2
|
-
|
|
3
|
-
Features from other code editors that `code-editor`, `code-editor/workspace` and `file-tree` don't offer yet.
|
|
4
|
-
|
|
5
|
-
Editors surveyed:
|
|
6
|
-
|
|
7
|
-
- VS Code and Monaco
|
|
8
|
-
- JetBrains IDEs (WebStorm, IntelliJ, Fleet)
|
|
9
|
-
- Zed
|
|
10
|
-
- Sublime Text
|
|
11
|
-
- Nova
|
|
12
|
-
- Helix
|
|
13
|
-
- Neovim file explorers (neo-tree, nvim-tree, oil.nvim)
|
|
14
|
-
- Emacs
|
|
15
|
-
- CodeMirror 6
|
|
16
|
-
|
|
17
|
-
Features we already ship are left out. On the editor side these include:
|
|
18
|
-
|
|
19
|
-
- multiple cursors, Alt+click and box selection, occurrence selection, and selection undo;
|
|
20
|
-
- line move, copy and delete, comments, indent and reindent;
|
|
21
|
-
- folding, bracket jump and pair selection, and auto-close and surround;
|
|
22
|
-
- find and replace with regex, case and whole word;
|
|
23
|
-
- minimap, wrap and visible whitespace;
|
|
24
|
-
- completion, hover and diagnostics over a language server;
|
|
25
|
-
- tabs, quick open, breadcrumbs and save in the workspace.
|
|
26
|
-
|
|
27
|
-
On the file tree side these include:
|
|
28
|
-
|
|
29
|
-
- compact folders, sticky folders, filtering, type-to-find and typeahead;
|
|
30
|
-
- sort modes, git and diagnostic decorations, and colour scopes;
|
|
31
|
-
- multiple roots, lazy loading and preview opening;
|
|
32
|
-
- drag and drop with Alt to copy and folders that open on hover;
|
|
33
|
-
- cut, copy, paste and duplicate, rename and create in place, and trash or permanent delete;
|
|
34
|
-
- undo and redo, shortcuts, and screen-reader labels.
|
|
35
|
-
|
|
36
|
-
## File tree
|
|
37
|
-
|
|
38
|
-
| Feature | What it does | Seen in |
|
|
39
|
-
| --- | --- | --- |
|
|
40
|
-
| File nesting | Groups related files under a parent: `index.ts` → `index.test.ts`, `index.d.ts`; `package.json` → lockfiles. Driven by configurable patterns. | VS Code, JetBrains |
|
|
41
|
-
| Compare selected | Marks two files and opens a diff of them, or compares one with the clipboard or its saved version. | VS Code, Zed |
|
|
42
|
-
| Drop from the OS | Accepts files and folders dragged in from the desktop or file manager and copies them into the target folder. | VS Code, Zed, JetBrains |
|
|
43
|
-
| Drag out to the OS | Dragging a row out of the tree hands the file to the desktop or another app. | VS Code (desktop), Nova |
|
|
44
|
-
| Next and previous change or problem | Moves the cursor to the next or previous entry with a git change or a diagnostic. | Zed |
|
|
45
|
-
| Open editors list | A section listing the open tabs, with close, save and reorder actions and dirty markers. | VS Code |
|
|
46
|
-
| Outline view | A panel listing the active file's symbols, with follow-cursor and sorting by position, name or kind. | VS Code, JetBrains (Structure), Zed |
|
|
47
|
-
| Timeline and local history | Each file's saves, git commits and file operations over time, with restore and compare against any entry. | VS Code, JetBrains |
|
|
48
|
-
| Favorites and bookmarks | Pins files or folders to a persistent section at the top so they're quick to reach. | JetBrains, Nova |
|
|
49
|
-
| Scratch files | Temporary files outside the project tree, kept across sessions, each with its own language. | JetBrains |
|
|
50
|
-
| Find in folder | Starts a project-wide text search scoped to the selected folder. | VS Code, Zed, JetBrains |
|
|
51
|
-
| Edit the tree as text | Opens a folder as an editable list of names: renaming lines renames files, deleting lines deletes them, all applied on save. | oil.nvim, Emacs `wdired` |
|
|
52
|
-
| Bulk rename | Renames many selected files at once with a pattern or a find and replace, with a preview first. | JetBrains, VS Code extensions, Nova |
|
|
53
|
-
| Image and media preview | Shows a thumbnail on hover, or an image carousel for media files, without opening an editor. | VS Code, Nova |
|
|
54
|
-
| Alternative sources | The same tree shows other data: open buffers, a git status view, remote file systems, diagnostics. | neo-tree |
|
|
55
|
-
| Folder-level stats | Totals for a folder, such as file count and total size, in a tooltip or column. | Nova, JetBrains |
|
|
56
|
-
|
|
57
|
-
## Editing
|
|
58
|
-
|
|
59
|
-
| Feature | What it does | Seen in |
|
|
60
|
-
| --- | --- | --- |
|
|
61
|
-
| Expand and shrink selection | Grows the selection to the enclosing syntax node (word → string → argument → call → statement → block) and shrinks it back. | VS Code, JetBrains, Zed, Helix |
|
|
62
|
-
| Text objects | Commands that act on a function, class, argument, comment or test by its structure: select, delete, change, jump. | Helix, Neovim |
|
|
63
|
-
| Join lines | Joins the next line onto the current one with the whitespace normalised, at every caret. | JetBrains, Sublime, VS Code |
|
|
64
|
-
| Sort, reverse and dedupe lines | Sorts, reverses or deduplicates the selected lines, optionally ignoring case. | JetBrains, Sublime, VS Code |
|
|
65
|
-
| Case transforms | Upper, lower, title, camel, snake and kebab case for the selection. | VS Code, JetBrains, Sublime |
|
|
66
|
-
| Overtype mode | Insert toggles typing over existing characters, with its own caret style. | VS Code |
|
|
67
|
-
| Smart paste | Re-indents pasted code to the target's indentation and escapes it when pasted into a string. | JetBrains, VS Code |
|
|
68
|
-
| Clipboard history | Paste any of the last N copied snippets from a picker. | JetBrains, Sublime |
|
|
69
|
-
| Paste as plain text | Paste that skips any reformatting or escaping. | JetBrains |
|
|
70
|
-
| User snippets | Named templates with tab stops, placeholders, choices and variables (`$TM_FILENAME`, `$CLIPBOARD`), triggered by prefix. | VS Code, JetBrains (live templates), Sublime |
|
|
71
|
-
| Postfix completion | Typing `.if`, `.not` or `.log` after an expression wraps it in that construct. | JetBrains |
|
|
72
|
-
| Complete statement | Adds the missing closing brackets and semicolon and moves to the next line. | JetBrains |
|
|
73
|
-
| Unwrap and remove | Removes an enclosing `if`, `try` or block and keeps its body. | JetBrains |
|
|
74
|
-
| Linked editing | Editing an HTML or JSX opening tag renames the closing tag too. | VS Code, JetBrains |
|
|
75
|
-
| Emmet | Expands abbreviations such as `div.card>ul>li*3` into markup. | VS Code, JetBrains, Sublime, Nova |
|
|
76
|
-
| Increment and decrement numbers | Bumps the number under the caret up or down, at every caret. | Helix, Neovim, Sublime |
|
|
77
|
-
| Duplicate selection | Duplicates the selection itself rather than whole lines. | JetBrains, Sublime |
|
|
78
|
-
| Trim trailing whitespace and final newline | Removes trailing whitespace and ensures a single final newline, on save or by command. | VS Code, Sublime, JetBrains |
|
|
79
|
-
| Convert indentation | Converts the file between tabs and spaces, and changes the indent width. | VS Code, Sublime |
|
|
80
|
-
| Toggle a line comment per line | A comment toggle that works on each line on its own when the selected lines are mixed. | Sublime, Zed |
|
|
81
|
-
| Format document and selection | Runs a formatter on the whole file, the selection, on type, on paste or on save. | VS Code, JetBrains, Zed |
|
|
82
|
-
|
|
83
|
-
## Selection and carets
|
|
84
|
-
|
|
85
|
-
| Feature | What it does | Seen in |
|
|
86
|
-
| --- | --- | --- |
|
|
87
|
-
| Skip occurrence | While adding next-occurrence carets, skips the current match and moves on. | VS Code, Sublime, Zed |
|
|
88
|
-
| Split selection into lines | Turns a multi-line selection into one caret at the end of each line. | VS Code, Sublime |
|
|
89
|
-
| Select within a selection | Keeps only the regex matches inside the current selections, each as its own selection. | Helix, Kakoune |
|
|
90
|
-
| Align carets | Inserts padding so every caret lines up in one column. | Sublime (packages), Helix |
|
|
91
|
-
| Sub-word movement | Moves and deletes by camelCase and snake_case parts. | VS Code, JetBrains, Sublime |
|
|
92
|
-
| Caret history | Jumps back and forward through earlier caret positions, across files. | VS Code, JetBrains, Zed |
|
|
93
|
-
|
|
94
|
-
## Find and replace
|
|
95
|
-
|
|
96
|
-
| Feature | What it does | Seen in |
|
|
97
|
-
| --- | --- | --- |
|
|
98
|
-
| Find in selection | Limits find and replace to the selected range. | VS Code, Sublime, JetBrains |
|
|
99
|
-
| Preserve case | Replacing `foo` with `bar` turns `Foo` into `Bar` and `FOO` into `BAR`. | VS Code |
|
|
100
|
-
| Regex case modifiers | `\u`, `\l`, `\U` and `\L` in the replacement change the case of the captured groups. | VS Code |
|
|
101
|
-
| Find history | Earlier queries and replacements one keypress away, kept across sessions. | VS Code, JetBrains |
|
|
102
|
-
| Seed from selection | Opening find fills in the selected text or the word at the caret. | VS Code, Sublime |
|
|
103
|
-
| Search across files | Searches the whole workspace with include and exclude globs, then replaces with a preview. | VS Code, Zed, JetBrains, Sublime |
|
|
104
|
-
| Search editor and multibuffer | Shows project results as one editable document; edits go back to the source files. | VS Code (Search Editor), Zed (multibuffer) |
|
|
105
|
-
| Matches in the scrollbar | Marks every match, the selection and diagnostics along the scrollbar track. | VS Code, JetBrains, Sublime |
|
|
106
|
-
|
|
107
|
-
## Navigation
|
|
108
|
-
|
|
109
|
-
| Feature | What it does | Seen in |
|
|
110
|
-
| --- | --- | --- |
|
|
111
|
-
| Go to symbol | A picker of the file's or the workspace's symbols, filtered fuzzily, with `@` and `#` prefixes. | VS Code, Sublime, Zed, JetBrains |
|
|
112
|
-
| Combined quick open | One input for files, `:line`, `@symbol` and `>commands`. | VS Code, Sublime |
|
|
113
|
-
| Recent files | A list of the most recently used files, with switching tabs in that order (Ctrl+Tab). | VS Code, JetBrains, Zed |
|
|
114
|
-
| Go to definition, type and implementation | Ctrl+click or F12 opens a symbol's definition, its type, or its implementations. | VS Code, Zed, JetBrains |
|
|
115
|
-
| Peek | An inline panel with the definition or references, editable in place. | VS Code |
|
|
116
|
-
| Find references | Lists every use of a symbol, grouped by file. | VS Code, Zed, JetBrains |
|
|
117
|
-
| Breadcrumb symbols | Breadcrumbs go past the file into the symbol path, and each crumb opens a picker of its siblings. | VS Code, Zed |
|
|
118
|
-
| Bookmarks | Toggleable line markers with a list and next and previous jumps. | JetBrains, Sublime, VS Code extensions |
|
|
119
|
-
| Go to last edit | Jumps to where the document was last changed. | VS Code, JetBrains |
|
|
120
|
-
| Go to next problem | Moves to the next diagnostic and shows its message inline. | VS Code, Zed |
|
|
121
|
-
| Structural jumps | Next and previous function, class, parameter or test. | Helix, Neovim |
|
|
122
|
-
|
|
123
|
-
## Language intelligence
|
|
124
|
-
|
|
125
|
-
These need the transport we already have to carry more language-server methods.
|
|
126
|
-
|
|
127
|
-
| Feature | What it does | Seen in |
|
|
128
|
-
| --- | --- | --- |
|
|
129
|
-
| Signature help | Shows the call's parameters and highlights the current one while typing arguments. | VS Code, JetBrains, Zed |
|
|
130
|
-
| Rename symbol | Renames a symbol everywhere, with a preview of the edits. | VS Code, Zed, JetBrains |
|
|
131
|
-
| Code actions and quick fixes | A light bulb with fixes and refactorings for the caret or the diagnostic. | VS Code, Zed, JetBrains |
|
|
132
|
-
| Inlay hints | Inline parameter names and inferred types, revealed with a modifier key. | VS Code, JetBrains, Zed |
|
|
133
|
-
| Code lens | Clickable notes above declarations, such as reference counts or "run test". | VS Code, JetBrains (Code Vision) |
|
|
134
|
-
| Semantic highlighting | Colours from the language server, so parameters, constants and types are told apart. | VS Code, Zed |
|
|
135
|
-
| Document highlight | Highlights other uses of the symbol under the caret, separating reads from writes. | VS Code, JetBrains |
|
|
136
|
-
| Server folding ranges | Folding ranges from the server for languages without a bracket structure. | VS Code |
|
|
137
|
-
| Call and type hierarchy | Trees of a function's callers and callees, or of a type's supertypes and subtypes. | VS Code, JetBrains |
|
|
138
|
-
| Inline completions | Grey ghost text suggesting the rest of a line or block, accepted with Tab. | VS Code, Monaco, Zed, JetBrains |
|
|
139
|
-
| Next edit suggestions | Predicts the next edit somewhere else in the file and offers to apply it. | VS Code, Cursor, Zed |
|
|
140
|
-
|
|
141
|
-
## Display
|
|
142
|
-
|
|
143
|
-
| Feature | What it does | Seen in |
|
|
144
|
-
| --- | --- | --- |
|
|
145
|
-
| Indent guides | Vertical lines at each indent level, with the active scope's guide emphasised. | VS Code, Sublime, JetBrains, Zed |
|
|
146
|
-
| Bracket pair colours | Matching brackets coloured by depth, with guides linking each pair. | VS Code, JetBrains, Zed |
|
|
147
|
-
| Sticky scroll | The enclosing function, class and block headers stay pinned at the top while scrolling. | VS Code, JetBrains, Zed |
|
|
148
|
-
| Vertical rulers | Lines at chosen columns, such as 80 and 120. | VS Code, Sublime, JetBrains |
|
|
149
|
-
| Git gutter | Added, modified and deleted markers beside line numbers, with an inline diff on click and revert per change. | VS Code, Zed, JetBrains, Sublime |
|
|
150
|
-
| Inline blame | The last commit's author and date at the end of the caret's line. | Zed, VS Code (GitLens), JetBrains |
|
|
151
|
-
| Colour swatches | Swatches and a picker beside CSS colour values. | VS Code, JetBrains, Zed |
|
|
152
|
-
| Clickable links | URLs and file paths become links, opened with Ctrl/Cmd+click. | VS Code, JetBrains |
|
|
153
|
-
| Unicode warnings | Flags invisible, confusable and bidirectional characters. | VS Code |
|
|
154
|
-
| Font ligatures and zoom | Opt-in ligatures, plus zooming the editor font in and out. | VS Code, JetBrains, Zed |
|
|
155
|
-
| Smooth caret | Animated caret movement and blink styles. | VS Code |
|
|
156
|
-
|
|
157
|
-
## Folding
|
|
158
|
-
|
|
159
|
-
| Feature | What it does | Seen in |
|
|
160
|
-
| --- | --- | --- |
|
|
161
|
-
| Fold to a level | Folds every region at nesting level N. | VS Code |
|
|
162
|
-
| Fold recursively | Folds or unfolds a region and everything inside it. | VS Code, JetBrains |
|
|
163
|
-
| Fold comments and imports | Folds every block comment, or the import section, in one command. | VS Code, JetBrains |
|
|
164
|
-
| Region markers | `// #region` and `// #endregion` comments define named foldable regions. | VS Code, JetBrains |
|
|
165
|
-
| Fold the selection | Folds any selected range by hand, independent of the syntax. | VS Code, JetBrains |
|
|
166
|
-
|
|
167
|
-
## Files, saving and documents
|
|
168
|
-
|
|
169
|
-
| Feature | What it does | Seen in |
|
|
170
|
-
| --- | --- | --- |
|
|
171
|
-
| Auto save | Saves after a delay, on focus change or on window change. | VS Code, JetBrains, Zed |
|
|
172
|
-
| Hot exit | Unsaved drafts survive closing and reloading, and come back on reopen. | VS Code, Sublime, Zed |
|
|
173
|
-
| Conflict on save | When the file changed on disk, offers compare, overwrite or reload instead of silently overwriting. | VS Code, JetBrains |
|
|
174
|
-
| Line endings | Shows and converts LF and CRLF per file. | VS Code, Sublime, JetBrains |
|
|
175
|
-
| Encoding | Shows, reopens with and saves with a chosen encoding. | VS Code, Sublime, JetBrains |
|
|
176
|
-
| Indent detection | Detects tabs or spaces and the indent width from the file's contents. | VS Code, Sublime |
|
|
177
|
-
| EditorConfig | Applies `.editorconfig` indentation, line-ending and charset rules. | VS Code (extension), JetBrains, Zed, Sublime |
|
|
178
|
-
| Large file mode | Opens very large files with expensive features such as highlighting and folding turned off. | VS Code, JetBrains |
|
|
179
|
-
| Read-only toggle | Locks a file against edits from the tab or status bar. | JetBrains, VS Code |
|
|
180
|
-
|
|
181
|
-
## Diff and merge
|
|
182
|
-
|
|
183
|
-
| Feature | What it does | Seen in |
|
|
184
|
-
| --- | --- | --- |
|
|
185
|
-
| Diff editor | Side-by-side or inline diff with character-level highlights, next and previous change, and accept or revert per change. | VS Code, Monaco, JetBrains, CodeMirror merge |
|
|
186
|
-
| Three-way merge editor | Resolves conflicts with incoming, current and result panes. | VS Code, JetBrains |
|
|
187
|
-
| Conflict markers | Inline "accept current / incoming / both" actions on `<<<<<<<` blocks. | VS Code, Zed |
|
|
188
|
-
|
|
189
|
-
## Workspace and layout
|
|
190
|
-
|
|
191
|
-
| Feature | What it does | Seen in |
|
|
192
|
-
| --- | --- | --- |
|
|
193
|
-
| Split editors and groups | Two or more editors side by side or stacked, with tabs draggable between them. | VS Code, Zed, JetBrains, Sublime |
|
|
194
|
-
| Preview tabs | A single-click open reuses one italic tab until it's edited or pinned. | VS Code, Zed |
|
|
195
|
-
| Pinned tabs | Pinned tabs stay first, shrink to an icon, and survive "close others". | VS Code, JetBrains |
|
|
196
|
-
| Tab context actions | Close others, close to the right, close saved, copy path and reveal in the tree. | VS Code, JetBrains, Zed |
|
|
197
|
-
| Reopen closed tab | Reopens the most recently closed tab (Ctrl/Cmd+Shift+T). | VS Code, JetBrains, Zed |
|
|
198
|
-
| Zen and centered layout | A distraction-free full-width mode, and a centred column of text. | VS Code, Sublime |
|
|
199
|
-
| Command palette for editor commands | Every editor and workspace command, searchable, with its shortcut shown. | VS Code, Sublime, Zed, JetBrains |
|
|
200
|
-
| Keybinding editor | Lets users view and remap shortcuts and see conflicts. | VS Code, JetBrains, Zed |
|
|
201
|
-
| Status bar items | Caret, selection count, language, indentation, line ending and encoding, each clickable to change. | VS Code, Sublime, JetBrains |
|
|
202
|
-
| Persisted session | Restores open tabs, layout, scroll and folds across reloads. | VS Code, Sublime, Zed |
|
|
203
|
-
|
|
204
|
-
## Collaboration and input
|
|
205
|
-
|
|
206
|
-
| Feature | What it does | Seen in |
|
|
207
|
-
| --- | --- | --- |
|
|
208
|
-
| Real-time collaboration | Shared editing with remote carets, selections and following. | Zed, VS Code Live Share, JetBrains Code With Me, CodeMirror collab |
|
|
209
|
-
| Vim and modal keymaps | A Vim or Helix-style keymap, as an option next to the Emacs-style bindings. | Zed, VS Code, JetBrains, Sublime |
|
|
210
|
-
| Inline AI assistant | Prompt-driven edits of the selection, shown as a diff to accept or reject. | Zed, Cursor, VS Code, JetBrains |
|
|
211
|
-
|
|
212
|
-
## Sources
|
|
213
|
-
|
|
214
|
-
- [Zed project panel](https://zed.dev/docs/project-panel)
|
|
215
|
-
- [Zed features](https://zed.dev/features)
|
|
216
|
-
- [VS Code user interface](https://code.visualstudio.com/docs/getstarted/userinterface)
|
|
217
|
-
- [VS Code basic editing](https://code.visualstudio.com/docs/editing/codebasics)
|
|
218
|
-
- [VS Code editor features overview](https://www.mintlify.com/Microsoft/vscode/features/editor)
|
|
219
|
-
- [WebStorm project tool window](https://jetbrains.com/help/webstorm/project-tool-window.html)
|
|
220
|
-
- [WebStorm source code editing](https://www.jetbrains.com/help/webstorm/working-with-source-code.html)
|
|
221
|
-
- [Sublime Text](https://wikipedia.com/wiki/SublimeText)
|
|
222
|
-
- [Helix text objects](https://docs.helix-editor.com/textobjects.html)
|
|
223
|
-
- [Neovim file explorers](https://pawelgrzybek.com/neovim-file-explorers/)
|
|
224
|
-
- [Nova sidebar](https://help.panic.com/nova/sidebar)
|
|
225
|
-
- [Nova file browser](https://library.panic.com/nova/file-browser)
|
|
226
|
-
- [CodeMirror extensions](https://codemirror.net/docs/extensions)
|
|
227
|
-
- [Monaco changelog](https://cdn.jsdelivr.net/npm/monaco-editor@0.56.0/CHANGELOG.md)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/build/css-utilities/font/geist/{scss/GeistMono-Variable.woff2 → GeistMono-Variable.woff2}
RENAMED
|
File without changes
|
|
@@ -21,6 +21,12 @@ $placements: ('e', 'n', 'ne', 'nw', 's', 'se', 'sw', 'w');
|
|
|
21
21
|
--translate-y: 0px;
|
|
22
22
|
|
|
23
23
|
|
|
24
|
+
&--e {
|
|
25
|
+
--stack-translate: calc(var(--stack-shift) * -1) 0;
|
|
26
|
+
--translate-x: calc(100% + var(--margin-horizontal));
|
|
27
|
+
--translate-y: 0px;
|
|
28
|
+
}
|
|
29
|
+
|
|
24
30
|
&--e,
|
|
25
31
|
&--n,
|
|
26
32
|
&--ne,
|
|
@@ -33,12 +39,6 @@ $placements: ('e', 'n', 'ne', 'nw', 's', 'se', 'sw', 'w');
|
|
|
33
39
|
--stack-span: 100%;
|
|
34
40
|
}
|
|
35
41
|
|
|
36
|
-
&--e {
|
|
37
|
-
--stack-translate: calc(var(--stack-shift) * -1) 0;
|
|
38
|
-
--translate-x: calc(100% + var(--margin-horizontal));
|
|
39
|
-
--translate-y: 0px;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
42
|
&--n,
|
|
43
43
|
&--ne,
|
|
44
44
|
&--nw {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/css-utilities/font/geist/{scss/GeistMono-Variable.woff2 → GeistMono-Variable.woff2}
RENAMED
|
File without changes
|