Commit Graph
100 Commits
Author SHA1 Message Date
Marshall Bowers 6d62e6c562 Respect label_color for Buttons (#3469)
This PR makes `Button`s respect the `label_color` that is specified,
provided they are not disabled or selected.

Release Notes:

- N/A
2023-11-30 20:36:59 -05:00
Marshall Bowers e5a5b1e84c Rework ListHeader to be more open (#3467)
This PR reworks the `ListHeader` component to be more open.

The `meta` method can now be used to append meta items of any element to
the `ListHeader`, and they will be rendered with the appropriate spacing
between them.

Release Notes:

- N/A
2023-11-30 15:55:31 -05:00
Marshall Bowers 3ffcb97da2 Implement Selectable for list components (#3465)
This PR implements the `Selectable` trait for the `ListItem` and
`ListHeader` components.

These components already had their own selectable behavior, but weren't
formally adhering to the interface defined by the trait.

Release Notes:

- N/A
2023-11-30 13:37:29 -05:00
Marshall Bowers e78538e162 Implement Selectable for ListItem and ListHeader 2023-11-30 13:26:12 -05:00
Marshall Bowers 865baaa1a1 Remove unused GraphicSlot enum 2023-11-30 13:25:26 -05:00
Marshall Bowers 0a8a84f656 Rename button-related enums (#3463)
This PR renames the `ButtonStyle2` and `ButtonSize2` enums to
`ButtonStyle` and `ButtonSize`, respectively.

Release Notes:

- N/A
2023-11-30 12:04:23 -05:00
Marshall Bowers bda1dc7721 Use ButtonLike for breadcrumb (#3452)
This PR updates the (placeholder) breadcrumb to use the new `ButtonLike`
component.

Eventually this will need custom styling (e.g., syntax highlighting for
the symbol children), which is why we're using a `ButtonLike` as opposed
to a regular `Button`.

Release Notes:

- N/A
2023-11-29 19:21:34 -05:00
Marshall Bowers 9d53287341 Implement Selectable for buttons (#3451)
This PR implements the `Selectable` trait for `ButtonLike`, `Button`,
and `IconButton`.

Release Notes:

- N/A
2023-11-29 18:46:41 -05:00
Marshall Bowers 04bbd107c1 Fix the selected state for the panel icons in the status bar (#3450)
This PR fixes a bug where the selected state for the panel icons in the
status bar was not correctly reflecting whether the panel was open.

It was erroneously using the `is_open` state for the context menu.

Release Notes:

- N/A
2023-11-29 18:20:08 -05:00
Marshall Bowers b357ae4dc3 Add new Button and IconButton components (#3448)
This PR adds new `Button` and `IconButton` components built on top of
our new button abstractions.

Both of these buttons are built from the common `ButtonLike` base, and
implement the `ButtonCommon` (name TBD) trait in order to provide a
common interface.

There are still some visual tweaks that we'll need to make to the new
buttons, but those should be straightforward to make after we land this.

Release Notes:

- N/A
2023-11-29 17:41:44 -05:00
Marshall Bowers df5de47a78 Make toggle method accept impl Into<Option<bool>> (#3446)
This PR makes the `toggle` method on the various list components accept
an `impl Into<Option<bool>>` instead of just an `Option<bool>`.

This allows a caller with just a `bool` avoid having to wrap the
`Option` themselves.

Release Notes:

- N/A
2023-11-29 16:13:41 -05:00
Marshall Bowers d8ed7c0721 Move GraphicSlot out of components module (#3444)
This PR moves the `GraphicSlot` definition out of the `components`
module, as it doesn't contain a component.

Release Notes:

- N/A
2023-11-29 15:29:33 -05:00
Marshall Bowers 509504d4d2 Rework Disclosure component (#3442)
This PR reworks the `Disclosure` component.

The primary goal here was to remove the illegal state where a
`Disclosure` is rendered with a `Toggle::NotToggleable` state, as the
`Disclosure` shouldn't exist at all in this case.

Release Notes:

- N/A
2023-11-29 14:46:39 -05:00
Marshall Bowers e77846d2dc Rework Toggle into Toggleable and ToggleState 2023-11-29 14:33:52 -05:00
Marshall Bowers 6f5cc0af94 Rework Disclosure component 2023-11-29 14:07:48 -05:00
Marshall Bowers e99fa77bda Reorganize list components (#3440)
This PR reorganizes the list components so that each of the sub
components lives in its own file.

### Motivation

I've seen a number of folks have trouble finding the `ListItem`
definition while pairing, so having it in its own file seems more
self-explanatory.

Release Notes:

- N/A
2023-11-29 13:45:59 -05:00
Marshall Bowers c7b79c9aef Remove unnecessary constructor and Clone derives 2023-11-29 13:38:05 -05:00
Marshall Bowers 390b0d8d56 Reorganize list components 2023-11-29 13:34:50 -05:00
Marshall Bowers 3e2c517dd1 Add Disableable trait (#3439)
This PR adds a new `Disableable` trait to use for elements that are
capable of being disabled.

Release Notes:

- N/A
2023-11-29 13:01:26 -05:00
Marshall Bowers 043cef89eb Remove unneeded wrapping divs in ListItem left content (#3438)
This PR removes some unneeded wrapping `div`s around the left content in
`ListItem`s.

Release Notes:

- N/A
2023-11-29 12:40:35 -05:00
Marshall Bowers 912c30c05b Remove unneeded .clones 2023-11-29 12:35:39 -05:00
Marshall Bowers 97e6fd295a Remove unneeded wrapping divs in ListItem left content 2023-11-29 12:29:48 -05:00
Marshall Bowers e36c7dd301 Remove ID hack in ListItem (#3431)
This PR removes the ID hack in `ListItem`, since the underlying issue
was fixed in #3430.

Release Notes:

- N/A
2023-11-28 23:11:29 -05:00
Marshall Bowers 5666066db4 Merge branch 'main' into collab-panel2 2023-11-28 17:07:40 -05:00
Marshall Bowers ee027bc112 Fix tooltips not showing on IconButtons (#3427)
This PR fixes tooltips not showing on `IconButton`s.

The "fix" here is the same hack that we used to fix `on_click` handlers
for `ListItem`s, where we introduce another layer of wrapping with an
element with an ID set.

This PR also adds a story for the `IconButton` so this issue can be
tested/observed in isolation.

Release Notes:

- N/A
2023-11-28 17:01:53 -05:00
Marshall Bowers 8ee84249ec storybook2: Unsuppress and fix warnings (#3425)
This PR unsupresses the warnings in `storybook2` and summarily fixes
them.

Release Notes:

- N/A
2023-11-28 15:43:43 -05:00
Marshall Bowers 64376ad37a ui2: Reference theme2 and settings2 crates without the 2 (#3424)
This PR updates the `ui2` crate to reference the `theme2` and
`settings2` crates without the `2` the way we do in our other crates.

Release Notes:

- N/A
2023-11-28 15:30:29 -05:00
Marshall Bowers 070674a4fd ui2: Unsuppress and fix warnings (#3423)
This PR unsupresses the warnings in `ui2` and summarily fixes them.

Release Notes:

- N/A
2023-11-28 14:44:19 -05:00
Marshall Bowers 874fde09ab Add inset variant to ListItem (#3422)
This PR adds an inset variant to the `ListItem` component.

We're now using this inset variant for the `ListItem`s we render in
pickers.

Release Notes:

- N/A
2023-11-28 14:27:19 -05:00
Marshall Bowers 9411898720 Use ListItems in the project panel (#3421)
This PR reworks the project panel to render its items using the
`ListItem` component.

There are a few hacks in here in order to get click handlers working for
the `ListItem`, but we'll want to get these fixed in GPUI.

Release Notes:

- N/A
2023-11-28 13:11:43 -05:00
Marshall Bowers 179ad03ebc Render Picker matches using ListItems (#3418)
This PR updates the `PickerDelegate` implementations to render their
matches using the `ListItem` component so that they can have a
consistent style.

At some point it might make sense to move the `ListItem` rendering up
into the `Picker` implementation itself, and just have the delegate
responsible for giving us the inner content of the `ListItem`.

Release Notes:

- N/A
2023-11-28 10:56:27 -05:00
Marshall Bowers ecb3bd7f59 Use ListItems in Picker story 2023-11-28 10:52:17 -05:00
Marshall Bowers 1ee109cec7 Use ListItem when rendering picker matches 2023-11-28 10:44:57 -05:00
Marshall Bowers 63bd4ac999 Allow render_match to return an Option to represent no matches 2023-11-28 10:33:13 -05:00
Marshall Bowers 24f3034106 Add ListItem story (#3411)
This PR adds a story for the `ListItem` component, so we can work on it
in isolation.

Release Notes:

- N/A
2023-11-27 15:24:41 -05:00
Marshall Bowers 19ecccb107 Add ListItem story 2023-11-27 14:20:33 -05:00
Marshall Bowers feb7753a73 Fix typo in uniform_list's doc comment 2023-11-27 14:20:27 -05:00
Marshall Bowers cac6e22e8e Rework ListItem to use children (#3387)
This PR reworks the `ListItem` component to accept `children` rather
than just a `Label`.

This is a step towards making the `ListItem` component more open.

As part of this the `ContextMenu` was simplified to only construct the
various list components in `render` rather than holding them as part of
its state.

Release Notes:

- N/A
2023-11-22 12:55:20 -05:00
Marshall Bowers fd5793ddec Use children for ListItems 2023-11-22 12:44:51 -05:00
Marshall Bowers 031fca4105 Simplify ContextMenu by not storing list components 2023-11-22 12:41:29 -05:00
Marshall Bowers 2c8d243d22 Comment out todo!() to fix panic when opening context menus 2023-11-22 12:41:06 -05:00
Marshall Bowers a94cf54aab Fix storybook (#3379)
This PR fixes storybook and gets it back into a compiling and running
state.

Release Notes:

- N/A
2023-11-21 14:28:00 -05:00
Marshall BowersandNate Butler 1b05aad30c Extract Story into separate story crate (#3378)
This PR extracts the `Story` component into a separate `story` crate so
that it can be shared among various crates that define stories.

Release Notes:

- N/A

---------

Co-authored-by: Nate Butler <iamnbutler@gmail.com>
2023-11-21 13:42:00 -05:00
Marshall Bowers f4b4bdfd83 ui2: Get component stories compiling again (#3376)
This PR gets the component stories defined in `ui2` compiling again.

Release Notes:

- N/A
2023-11-21 12:06:25 -05:00
Marshall Bowers 6cd0bcc578 Fix panic when opening settings in zed2 (#3375)
This PR fixes a panic that occurs when opening the settings in zed2.

We store the `ThemeRegistry` as a global without wrapping it in an
`Arc`, so we need to retrieve it the same way.

Release Notes:

- N/A
2023-11-21 10:58:52 -05:00
Marshall Bowers 652e3b0bb6 Rename ListEntry to ListItem (#3371)
This PR renames the `ListEntry` component to `ListItem` to better
reflect its intent.

Release Notes:

- N/A
2023-11-20 16:13:06 -05:00
Marshall Bowers eb307b22f0 Rework List to use children (#3369)
This PR reworks the `List` component to use `children` instead of
accepting a `Vec<ListItem>` in its constructor.

This is a step towards making the `List` component more open.

Release Notes:

- N/A
2023-11-20 14:58:31 -05:00
Marshall Bowers b559bfd80f Parameterize theme2::init to allow loading just the base theme (#3345)
This PR adds a parameter to the `theme2::init` method to indicate what
the theme-loading behavior should be.

This allows us to indicate when we want to load all of the additional
built-in user themes (like in the Zed binary and in the storybook), and
when we don't want to load the user themes (like in tests).

We're using an enum over just a `bool` here for clarity at the call
site.

Release Notes:

- N/A
2023-11-16 13:03:30 -05:00
Marshall Bowers fea0ff3745 Use IconElement in project panel (#3326)
This PR updates the project panel to use the `IconElement` to render
icons instead of duplicating the styles.

Release Notes:

- N/A
2023-11-14 15:52:57 -05:00
Marshall Bowers 22f024bd5f Use IconElement in project panel 2023-11-14 15:44:26 -05:00
Marshall Bowers 5c8db996ee Extend Label & Tooltip (#3322)
This PR extends the `Label` component with additional functionality,
partially for use in the `TextTooltip` component.

- [x] `Label` should take a `size` (`Default` & `Small` for now)
  - These should use `text_ui` and `text_ui_sm`
- [x] Fold `LabelColor` and `IconColor` into one enum
  - `TextColor`
- [x] `TextTooltip`'s keybinding field should take whatever we use for
keybindings instead of a string, and render the keybinding component
- [x] `TextTooltip` should use small `Label`s

Release Notes:

- N/A
2023-11-14 13:56:05 -05:00
Marshall Bowers 76c15229c1 Combine LabelColor and IconColor into TextColor 2023-11-14 13:48:01 -05:00
Marshall Bowers dc56a7b12b Add LabelSize 2023-11-14 13:43:37 -05:00
Marshall Bowers 9d31523cf3 Rename keybinding method on PaletteItem to key_binding 2023-11-14 13:37:21 -05:00
Marshall Bowers 90d7033fd0 Pass KeyBindings to TextTooltips 2023-11-14 13:36:03 -05:00
Marshall Bowers aa1471948f Merge branch 'main' into extend-label-and-tooltip 2023-11-14 13:14:10 -05:00
Marshall Bowers a7c42be9a9 Add One Dark (#3314)
- Adds `one-dark`, and sets it as default for now.

Release Notes:

- N/A
2023-11-13 18:50:02 -05:00
Marshall Bowers 0430e8fbf2 Use "One Dark" as default theme 2023-11-13 18:44:17 -05:00
Marshall Bowers 92f2e8eb34 Combine related conditions 2023-11-13 18:22:04 -05:00
Marshall Bowers 53117eb5e5 Merge branch 'main' into one-themes 2023-11-13 18:16:45 -05:00
Marshall Bowers 04ad19d01b Choose appropriate player colors based on theme appearance 2023-11-13 15:07:13 -05:00
Marshall Bowers 71790b338b Add Sized bound to StyledExt trait (#3309)
This PR moves the `Sized` bound to the `StyledExt` trait so we don't
have to repeat it on each of the methods.

Release Notes:

- N/A
2023-11-13 11:22:49 -05:00
Marshall Bowers 3654dd8da0 Remove unnecessary map 2023-11-13 11:10:08 -05:00
Marshall Bowers 5b254b03df Move Sized bound to StyledExt trait 2023-11-13 11:10:00 -05:00
Marshall Bowers cb8c534dac theme_importer: Support importing themes containing comments (#3298)
This PR updates the `theme_importer` with support for parsing theme
files containing comments.

Up until now we've been manually removing comments from the VS Code
theme files.

Release Notes:

- N/A
2023-11-09 19:22:15 -05:00
Marshall Bowers 6bc1cf0fae Re-import the Synthwave 84 theme (#3297)
This PR re-imports the Synthwave 84 theme now that we support 3-value
hex colors.

Release Notes:

- N/A
2023-11-09 18:56:42 -05:00
Marshall Bowers 8bd02fdadc Extend RGBA hex color parsing to support 3-value and 4-value variants (#3295)
This PR extends our support for parsing hex color codes to `Rgba` to
additionally support 3-value (`#rgb`) and 4-value (`#rgba`) formats.

See [here](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color)
for more details on these hex color variants.

Release Notes:

- N/A
2023-11-09 18:27:47 -05:00
Marshall Bowers 82861e3123 Improve digit duplication 2023-11-09 18:19:58 -05:00
Marshall Bowers 8f5adeb9c3 Improve error conditions when parsing hex colors 2023-11-09 18:00:17 -05:00
Marshall Bowers 417279e01b Add support for parsing 3-value and 4-value hex codes 2023-11-09 17:45:05 -05:00
Marshall Bowers 31a6409a4c Refine theme styles (#3291)
This PR refines a number of styles in the default theme, as well as
updates the theme importer to support importing syntax styles from VS
Code themes.

Release Notes:

- N/A
2023-11-09 15:32:10 -05:00
Marshall Bowers 7b489f5e2e Allow user-theme related methods to be unused 2023-11-09 15:16:59 -05:00
Marshall Bowers 978cff8095 Use IndexMap for a deterministic order when importing syntax colors 2023-11-09 13:12:36 -05:00
Marshall Bowers 1f0fccc353 Reorganize theme_importer 2023-11-09 13:07:32 -05:00
Marshall Bowers 34e31fd489 Properly emit UserHighlightStyles 2023-11-09 12:59:20 -05:00
Marshall Bowers ff19a0ca18 Add importing-themes feature flag to theme2 crate
When this feature is set the `themes` module won't be compiled.
This allows us to run the `theme_importer` even when the `themes` module
has compile errors in it.
2023-11-09 12:49:16 -05:00
Marshall Bowers 60eae3e50a Emit unique highlights for each syntax token 2023-11-09 12:46:37 -05:00
Marshall Bowers 15f6fbf53b Merge branch 'bounds-for-range' of github.com:zed-industries/zed into bounds-for-range 2023-11-08 19:25:18 -05:00
Marshall Bowers 9a41c58779 Hard-code the gutter margin temporarily 2023-11-08 19:25:12 -05:00
Marshall Bowers acf37804eb Use a fork of ctor to silence warnings generated by macro (#3275)
This PR switches us over to a fork of `ctor` that contains the fixes
from https://github.com/mmastrac/rust-ctor/pull/295, backported to our
current version of `ctor` (v0.1.20).

Once 1) the `ctor` maintainer publishes a new version with that change
and 2) we're ready to upgrade to the latest version of `ctor` we can
switch back to the mainline version.

Release Notes:

- N/A
2023-11-08 15:05:19 -05:00
Marshall Bowers ca2cc42800 Remove unused SceneBuilder constructor 2023-11-08 13:30:20 -05:00
Marshall Bowers 761d4fcd49 Port the picker and uniform list (#3248)
This adds a `UniformList` element and partially implements `Picker` as a
component, using `UniformList`. Because editor2 isn't fully implemented
yet, the picker doesn't have filtering logic yet. We want to merge this
for now though, to make the UniformList element available for other
crates.

Release Notes:

- N/A
2023-11-08 17:45:23 +01:00
Marshall Bowers b6766ba39a Replace GitStatusColors with StatusColors (#3268)
This PR removes `GitStatusColors` in favor of just using `StatusColors`
instead.

Release Notes:

- N/A
2023-11-08 11:32:32 -05:00
Marshall Bowers e9650c025f Fix overflow in UniformList 2023-11-08 11:26:26 -05:00
Marshall Bowers fe28d8faea Merge branch 'main' into picker 2023-11-08 11:18:54 -05:00
Marshall Bowers 25876161f8 theme_importer: Format generated themes (#3255)
This PR makes the `theme_importer` format the themes that it generates
automatically.

Release Notes:

- N/A
2023-11-07 12:45:09 -05:00
Marshall Bowers 0d95410634 Rework third-party themes (#3254)
This PR reworks the way we define our third-party themes to make them
work as overlays on top of a base theme.

We introduce the concept of a `UserThemeFamily` that contains
`UserTheme`s. Rather than being an entire theme definition on their own,
a `UserTheme` just contains optional overrides for the values in a
`Theme`.

When resolving a `UserTheme`, we apply it on top of the base theme. Any
values not overridden in the `UserTheme` will fall back to the `Theme`
defaults.

Right now we are just using `UserTheme` to model third-party themes that
we distribute with the Zed binary. However, this same structure can also
be used to import arbitrary user themes (such as from a theme registry,
or even a theme blob from the settings file).

Release Notes:

- N/A
2023-11-07 11:40:07 -05:00
Marshall Bowers 74853ea55f Rename ThemeVariant to Theme (#3252)
This PR renames the `ThemeVariant` type to `Theme`.

This better reflects its purpose, as well as matches the same name as we
had before, which should make porting crates slightly easier.

Release Notes:

- N/A
2023-11-07 10:41:36 -05:00
Marshall Bowers 7078c5fbb9 Regenerate all themes 2023-11-07 08:59:50 -05:00
Marshall Bowers 01eac50fc8 Add new ThemeColors values to the theme printer 2023-11-07 08:59:37 -05:00
Marshall Bowers d224f511fa Add interactivity to Checkbox component (#3240)
This PR adds interactivity to the `Checkbox` component.

They can now be checked and unchecked by clicking them.

Release Notes:

- N/A
2023-11-06 13:22:25 -05:00
Marshall Bowers f8504c349c Merge branch 'main' into import-theme 2023-11-06 12:08:46 -05:00
bf80c1da5b Rename fields in ThemeColors (#3242)
This PR applies a number of field renames in the `ThemeColors` struct
from the `import-theme` branch.

This will help prevent this branch from diverging too far from `main`.

Release Notes:

- N/A

---------

Co-authored-by: Nate Butler <iamnbutler@gmail.com>
Co-authored-by: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-06 11:53:27 -05:00
Marshall Bowers 5d36331942 storybook2: Remove unreferenced components module (#3229)
This PR removes the `components` module from `storybook2` as it was
dead, unreferenced code.

Release Notes:

- N/A
2023-11-03 18:12:21 -04:00
Marshall Bowers 6abdab7735 Remove theme.txt 2023-11-03 17:52:19 -04:00
Marshall Bowers 76db100d11 ui2: Reorganize components (#3228)
This PR reorganizes the components in the `ui2` crate.

The distinction between "elements" and "components" is now gone, with
all of the reusable components living under `components/`.

The components that we built while prototyping but will eventually live
in other crates currently reside in the `to_extract/` module.

Release Notes:

- N/A
2023-11-03 17:34:11 -04:00
Marshall Bowers 287ea0a6e4 Allow deriving Serialize and Deserialize on generated refinement (#3227)
This PR adds support for deriving `Serialize` and `Deserialize` on the
refinement type generated by `#[derive(Refineable)]`.

Release Notes:

- N/A
2023-11-03 17:21:00 -04:00
Marshall Bowers b5224bdafd Remove unneeded type qualification 2023-11-03 16:40:46 -04:00
Marshall Bowers 1361b61708 Use an IconButton for the tab close button 2023-11-03 16:36:02 -04:00
Marshall Bowers 12500364b4 Merge branch 'main' into import-theme 2023-11-03 15:41:12 -04:00