1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-07-17 13:46:47 +02:00
Commit Graph

4402 Commits

Author SHA1 Message Date
Jaanus Sellin
45a0ddd2a5
fix: fix hover on release template card (#9721)
For some reason, using template literals do not work after its in
enterprise repo. I will try something that matches more over codebase
style.
2025-04-08 15:55:07 +03:00
Mateusz Kwasniewski
1e027dcf4f
feat: adjust filter UI (#9720) 2025-04-08 14:32:30 +02:00
Mateusz Kwasniewski
f8e75e5250
feat: remove archived from filters (#9719) 2025-04-08 13:22:53 +02:00
Jaanus Sellin
84dbae20e8
feat: remove + from the segment dropdown (#9714) 2025-04-08 14:18:01 +03:00
Jaanus Sellin
6c74c994aa
feat: release plan review dialogue (#9712) 2025-04-08 12:24:09 +03:00
Tymoteusz Czech
1930c0f408
fix: update link text for archived feature navigation (#9698)
If you try to visit an archived flag, you're told you can find it on the
project archive page, but that page isn't visible by default anymore.
This is an update to take you to the project overview with a filter for
archived flags instead.
2025-04-08 11:03:01 +02:00
Mateusz Kwasniewski
e76d04a7ad
feat: export button in flags overview (#9715) 2025-04-08 10:23:02 +02:00
Mateusz Kwasniewski
b120c97717
feat: lifecycle filters UI (#9713) 2025-04-08 10:04:07 +02:00
Tymoteusz Czech
1a85b46acc
feat: rename search page and change icon (#9706)
Behind flagsReleaseManagementUI flag
2025-04-07 15:49:44 +02:00
Thomas Heartman
5e35a0fa22
chore: Set up the basis of the new constraint editing component. (#9701)
This PR creates/steals the logic and basic components that we need for
the new constraint editing design and shows it instead of the old one if
the flag is on.

The interface needs a lot of work, but this essentially wires everything
up so that it works with the API on direct editing:

<img width="781" alt="image"
src="https://github.com/user-attachments/assets/97489a08-5f12-47ee-98b3-aefc0b840a2b"
/>

Additionally the code here will need a lot of refactoring. This is a
first draft where I've yanked all the constraint editing logic out of a
nested hierarchy of components that handle validation and lots more. I
expect to clean this up significantly before finishing it up, so please
excuse the mess it's currently in. It turns out to have been lots and
lots more logic than I had anticipated.

This is just a PR to get started, so that the next one will be easier to
work on.
2025-04-07 14:50:42 +02:00
Thomas Heartman
6ea823f011
fix: restore focus style to the env switch (#9707)
Removes the "disableRipple" prop from the FeatureToggleSwitch component,
thereby restoring its focus styles, so that keyboard users can see where
their focus is at.

I don't know the reason this was added originally (the PR doesn't say
anything about it), but the prop changes nothing when hovering with the
mouse, but it does remove focus styles for keyboard navigation.

By removing it, we can bring the focus style back. As far as I can tell,
there's no other difference between the two states.

Both of these screenies have focus on the toggle, but in the first
screenie there's no way to tell.

With the prop:
<img width="397" alt="image"
src="https://github.com/user-attachments/assets/b9a5d764-ec5a-4d3b-b79d-0b52d7bd6891"
/>


Without the prop:
<img width="445" alt="image"
src="https://github.com/user-attachments/assets/3c95c7a6-91de-4ed2-9942-e9fc794e9d40"
/>

Because the component is used in multiple places, this also fixes this
issue in the project flag list (and maybe elsewhere too):
<img width="336" alt="image"
src="https://github.com/user-attachments/assets/6582c58b-fabe-40ce-a141-06b22189a462"
/>
2025-04-07 15:50:07 +03:00
Jaanus Sellin
58d123e998
feat: release plan hover buttons (#9703) 2025-04-07 11:32:31 +03:00
Christopher Kolstad
bd11ece873
fix: consumption warning is either/or not and 2025-04-04 11:09:48 +02:00
Christopher Kolstad
32ae7bc7d1
we don't have historical data available for purchased traffic (#9700)
So this PR removes the purchased dt point, as well as the total
available. Using the same check our overageCalculation does (it also
only works on current month)
2025-04-04 11:08:20 +02:00
Thomas Heartman
6b5c29a6e6
chore: Add flag for add/edit strategies (#9699)
Adds a flag for the edd/edit strategies updates.
2025-04-04 10:18:05 +02:00
Gastón Fournier
2748ced8e2
feat: only admin can fetch license (#9697)
Non admins can not fetch the license they're still allowed to check it
but not to get it
2025-04-03 16:26:36 +02:00
Tymoteusz Czech
821851a2f3
fix: depenency name truncator (#9696)
![image](https://github.com/user-attachments/assets/ce8d1dc4-d03a-4b42-aa30-c5cae3b6f53c)
2025-04-03 13:45:25 +00:00
Christopher Kolstad
f20ea86c61
feat: added network traffic bundle (#9691) 2025-04-03 14:37:07 +02:00
Thomas Heartman
07d11c7a87
Refactor: cleaner project status modal link handling (#9694)
Removes random booleans, uses more explicit functions.
2025-04-03 12:29:03 +00:00
Jaanus Sellin
9a4eb059e6
feat: strategy selector screen updates (#9692) 2025-04-03 14:51:00 +03:00
Thomas Heartman
a02fe7a245
fix: project status modal links don't work (#9693)
Fixes a bug where project status modal links wouldn't work.

The reason they didn't work is because we modified the query params on
modal close, and because we manually close the modal when you click a
link (because otherwise it'd stay open when you navigated to other
project pages), we inadverdently reset the URL.

I'm not entirely sure why setting the search params would modify the URL
itself, but I'm guessing that's related to the implementation.

One way to solve this is to indicate whether we're closing the modal
because a link was clicked or not, and only modify the query params if
that is not the case.
2025-04-03 13:13:18 +02:00
Thomas Heartman
3447b03e1c
Fix(1-3564)/hide project owner if system (#9686)
Hides owner avatars in cases where the owner type is "system". Touches
dashboard and project card owners.

Back when all projects required owners, we introduced the new project
cards that have the owner listed in the footer. Because, theoretically,
you weren’t allowed to create projects without owners, the only project
that should ever be without an owner was the default project. So we
thought it made sense to say that it was owned by the system.

But now that owners are optional, that doesn't necessarily make sense
anymore. As such, we'll just hide their avatars to begin with.

<img width="726" alt="image"
src="https://github.com/user-attachments/assets/950cd909-c891-48f1-9ef7-fd74922a5990"
/>

<img width="1497" alt="image"
src="https://github.com/user-attachments/assets/f4d213f5-febb-46f8-89f0-899e77652e07"
/>

Because the components expected the avatars to be there, we now need to
set an explicit min-height on them, so that they don't collapse.
Luckily, we can use the default avatar height (and also force that so
that they change in tandem) and use that in both places.
2025-04-03 10:43:58 +02:00
David Leek
4344c94a90
chore: remove z-index from sticky admin menu as its probably not needed (#9690) 2025-04-03 10:24:26 +02:00
David Leek
b9a7c0cda6
feat: command bar admin menu improvements (#9689) 2025-04-03 10:23:45 +02:00
Thomas Heartman
72e71b714d
fix: link to "view more insights" from dashboard goes to status modal (#9684)
Updates the link from the project dashboard page to take you to the
project status modal instead of the old insights page.

We didn't have a way to auto-open the modal before, so I added a query
param to control it.
2025-04-02 13:57:37 +00:00
Thomas Heartman
130b3869cc
Fix: lifetime API command doesn't update. (#9685)
Seems the previous value was hardcoded. Now we check the values you set
instead.
2025-04-02 15:35:29 +02:00
Tymoteusz Czech
e436ef29f1
fix: add Project and Playground icons for command bar (#9677)
Updating `IconRenderer` component in the `NavigationSidebar`. It will fix icons not showing up for command bar search results.
2025-04-02 15:31:55 +02:00
Jaanus Sellin
89724209cd
feat: new styling for strategy selector (#9683) 2025-04-02 14:55:36 +03:00
Thomas Heartman
645b005f29
Fix(1-3553): fix focus styles and tab navigation for segments + constraints (#9655)
Fixes a few small focus styling and tab navigation issues for the new
segments + constraints.

Before:
The segment acc header was tabbable even though you can't do anything
with it (by mouse or by keyboard)

![image](https://github.com/user-attachments/assets/de5c07ee-e55c-45f4-bd6e-3d978a0a51ca)

The focus color would stay even when you're focusing stuff inside the
accordion

![image](https://github.com/user-attachments/assets/1a75038b-256f-43b5-95ed-0a3d455d17f8)

Constraint items have focus styles that exceed the accordion borders,
causing a weird squaring effect:

![image](https://github.com/user-attachments/assets/638c9f5d-daf0-4570-8323-49141183dad8)

After:
The segment acc header isn't reachable by tab anymore.

The segment acc header doesn't change its background color on elements
inside getting focus:

![image](https://github.com/user-attachments/assets/4756e8b0-b461-49df-bf3e-ec8d26142877)

The constraint item has rounded corners for focus styles too:

![image](https://github.com/user-attachments/assets/fccf94e4-8b7a-4823-bcf5-24a0fe046cf7)

![image](https://github.com/user-attachments/assets/90020d85-990c-41de-9acb-ab2cc81a8f66)
2025-04-02 13:37:16 +02:00
Jaanus Sellin
b44ac069ae
feat: new feature strategy menu (#9678) 2025-04-02 09:00:34 +00:00
David Leek
18346d1107
feat: admin menu: unleash logo in header - links to dashboard (#9676) 2025-04-02 08:34:43 +02:00
Thomas Heartman
f6e786a6c0
Remove caseInsensitiveInOperators flag (#9670)
The flag has never made it out of dev, and has not been turned on
consistently since 2023. There was a project for it, but we have since
abandoned it.
2025-04-01 14:57:32 +02:00
Tymoteusz Czech
6e947a8ba6
fix: linter rule for hooks (#9660) 2025-04-01 14:33:17 +02:00
David Leek
a9490e6fe4
chore: admin menu main layout tweaks (#9671) 2025-04-01 14:16:26 +02:00
Fredrik Strand Oseberg
7545f5af60
refactor: change colors (#9672)
This PR fixes incorrect colors chosen from the theme. It now matches the
figma files.
2025-04-01 13:24:40 +02:00
Fredrik Strand Oseberg
c75779e677
refactor: colorpicker (#9668)
This PR refactors the color picker so we stick to one set of colors
instead of changing available colors when theme changes. Colors picked
also work in dark theme and is aligned with UX.
2025-04-01 12:32:13 +02:00
David Leek
c21ed3ed5e
chore: add flags to control network route links from menu (#9667) 2025-04-01 11:18:32 +02:00
David Leek
f7dbfe1162
chore: admin menu enterprise badge (#9656) 2025-04-01 09:13:40 +02:00
Thomas Heartman
89f63285a0
Fix: Move hooks to before we bail if the flag is off. (#9659)
This fixes the a react crash when we render more/fewer hooks than on the
previous render if the flag state changes.
2025-03-31 13:59:09 +00:00
Gastón Fournier
eae7535bfc
feat: remove access overview flag making it GA ready (#9654)
This is exposing information we already have about permissions in a UI
that should help users have an overview of the permissions of a user
with regards to projects and environments
2025-03-31 14:33:38 +02:00
Tymoteusz Czech
ce230ba96b
Fix: separate segment and constraint accordions (#9652)
Segment accordion should not share state with constraint accordions inside
2025-03-31 12:11:34 +00:00
Mateusz Kwasniewski
1f1b00c38f
chore: fixing typo pre-defined (#9651) 2025-03-31 13:58:22 +02:00
Fredrik Strand Oseberg
aa6c422165
Feat/tag type frontend display (#9630)
Add frontend for displaying tag colors
2025-03-31 11:55:49 +02:00
David Leek
5a55181561
feat: show only link to /admin in mobile menu (#9647) 2025-03-31 08:37:15 +02:00
Jaanus Sellin
b55732d719
fix: tooltips not working after base element is also clicked (#9629) 2025-03-31 08:59:08 +03:00
Thomas Heartman
398246c3ec
Chore/remove badges from tab order (#9643)
Makes badges not tabbable by default instead of tabbable by default.
Turns out, badges aren't tabbable by default and they never were until I
made them as much (for some reason that I don't quite understand now).

Anyway, I've gone through the list of uses for the Badge element and
made any element that should be reachable by tab either have an explicit
tab index (if it's within a tooltip, for instance), or be wrapped in a
Link (instead of having an on-click handler). The two places I've
wrapped it in a link, I've also gone and changed the item group to be a
list (for HTML semantics). I've also updated some spacing for the
profile tab.

Application list (one is before, one is after. don't remember which is
which; it's now a list):

![image](https://github.com/user-attachments/assets/66fdabf7-7a80-46cb-b302-6242c16ad43e)

![image](https://github.com/user-attachments/assets/660506ce-0ec4-417f-bb3a-3fbf23d5591c)


Profile page (now a list + improved spacing)

Before:

![image](https://github.com/user-attachments/assets/17a841e6-d500-410e-8f11-4c78ca0e9e12)

![image](https://github.com/user-attachments/assets/38a60e67-682e-45b5-9312-f4c2013192bb)

After:

![image](https://github.com/user-attachments/assets/602f3d06-0b7e-4a10-9958-fb565fb6d06b)


![image](https://github.com/user-attachments/assets/67c7d39c-cdf9-4586-98d9-63ceff4fd867)
2025-03-28 15:05:32 +00:00
Thomas Heartman
fc0383620b
fix: focus styles for env headers (#9635)
Adds focus styles to the env accordion header only when the focus is on
the header itself (not on the env toggle inside the header). The focus
style is consistent with what we do for other accordions (dashboard,
milestones).

Middle one is focused:

![image](https://github.com/user-attachments/assets/df87bd99-8fe2-4093-afd8-4cbce9f2c943)


Focus is on the toggle inside the top one (yeh, we should have better
focus styles for toggles; but that's not for now):

![image](https://github.com/user-attachments/assets/2a046d4c-8585-4021-a58e-32ef81b1f701)

Open and focused: 

![image](https://github.com/user-attachments/assets/fdbb5bda-4be5-4354-b213-5e2c7a59eb59)

Getting the consistent background for the header when it's open is a
little tricky because the accordion container and summary are split into
different files. ~~This first iteration used a class name for the
specific header (because envs can have multiple accordion headers inside
them, e.g. release plans) and setting a CSS variable in the summary, so
that the background matches.~~ I found out that I only need to set it in
the parent anyway 😄

Without it, you get this (notice that there is a little white outside
the lower corners):

![image](https://github.com/user-attachments/assets/4d71d73c-7f45-46b5-811d-c6e36f9be5ce)
2025-03-28 15:59:25 +01:00
Christopher Kolstad
14c8b97441
task: added a hook for cleanly deciding new or old admin menu (#9645) 2025-03-28 14:45:09 +01:00
David Leek
5da9f75014
chore: fix weird alignment issue with main content and admin menu (#9636) 2025-03-28 13:22:13 +01:00
Tymoteusz Czech
db1ec7ffa6
fix: feedback button (#9644)
Fix alignment of "add strategy" & "add template" buttons

---------

Co-authored-by: Simon Hornby <sighphyre@users.noreply.github.com>
2025-03-28 11:48:24 +00:00
Simon Hornby
8793d9e632
chore: swap release template instruction svgs for pngs (#9642) 2025-03-28 10:47:36 +02:00
David Leek
78dfbde007
fix: Back to Unleash onClick+useNavigate instead of href (#9641) 2025-03-28 09:34:48 +01:00
David Leek
39755c7f19
fix: useLocation instead of browser location for resolving pathname (#9640) 2025-03-28 08:54:21 +01:00
Simon Hornby
7f98709730
fix: fixes an issue where the new feedback button on the config strategy pane (#9638) 2025-03-27 16:43:14 +01:00
Mateusz Kwasniewski
f97924eb36
feat: enforce change request settings in create project dialog (#9637) 2025-03-27 16:15:09 +01:00
Simon Hornby
e53e2ca0c7
chore: ux feedback on release templates (#9634)
Makes two small changes to the release template UI based on walkthrough
feedback with UX

1) The how-to descriptions for creating release plans won't get hidden
when the user has created release plans. We think too much is better
than too little. At a later point we'll push users to documentation more
aggressively
2) The warning for when the user taps the "Use template" button now has
a line break to give it some breathing room and will render anchored to
the bottom left of the originating button rather than covering it
2025-03-27 16:31:47 +02:00
Simon Hornby
b5e52a6160
chore: feedback link on feature strategy (#9633)
Adds a new link on the feature strategy that points to the feedback link
(pops out new window, only renders if release plans are enabled)

![image](https://github.com/user-attachments/assets/bd965b88-4d95-4e75-a931-af365fe777dc)

---------

Co-authored-by: Gastón Fournier <gaston@getunleash.io>
2025-03-27 15:19:14 +02:00
Mateusz Kwasniewski
53a4f61260
feat: enabled change requests reacting to available environments (#9631) 2025-03-27 13:46:29 +01:00
Tymoteusz Czech
cf053470e5
feat: improve constraints item on small screens (#9609)
Fixing constraint operator item, items alignment and padding for better presentation on mobile devices.
2025-03-27 13:33:25 +01:00
David Leek
f7c04cc2cb
feat: admin menu for mobile (#9626) 2025-03-27 13:28:44 +01:00
Mateusz Kwasniewski
6b793677b9
feat: preselect change request settings in create project (#9625) 2025-03-27 12:17:21 +01:00
Mateusz Kwasniewski
cc0348beba
feat: show environments with change requests (#9628) 2025-03-27 12:16:04 +01:00
Simon Hornby
47c6f43865
chore: add some getting started info and images when you have no release plans (#9627) 2025-03-27 12:58:56 +02:00
Thomas Heartman
138e93c41a
chore: drag-n-drop tooltip for strategies (#9623)
Implements the drag-n-drop tooltip the first time the user sees a
strategy drag handle on the feature env overview. It uses React Joyride,
which is the same system we use for the demo.

The design is a little different from the sketches because I couldn't
find a quick way to move the content (and the arrow) to be shifted
correctly.

If the demo is also active the first time a user visits a strategy page,
it'll render both the demo steps and this, but this tooltip doesn't
prevent the user from finishing the tour. It might be possible to avoid
that through checking state in localstorage, but I'd like to get this
approved first.

The tooltip uses the auth splash system to decide whether to show the
tooltip, meaning it's stored per user in the DB. To avoid it
re-rendering before you refetch from the back end, we also use a
temporary variable to check whether the user has closed it.

Rendered:

![image](https://github.com/user-attachments/assets/5912d055-10d5-4a1d-93f4-f12ff4ef7419)

If the tour is also active:

![image](https://github.com/user-attachments/assets/b0028a0f-3a0f-48aa-9ab9-8d7cf399055a)
2025-03-27 11:16:37 +01:00
Simon Hornby
6aae9be19c
chore: add a message stating no templates when there aren't any (#9624) 2025-03-27 11:34:45 +02:00
Simon Hornby
01f3af4bda
chore: whats new dialog (#9622)
Adds a new dialog option for whats in new in Unleash items. This can be
tiggerred by setting `popout` to true when configuring the items.

To do this without setting fire to the code, I've also needed to
refactor the NewInUnleash components:

- NewInUnleashItem becomes a dumb item that decides if a dialog or
tooltip should be rendered and controls that render state
- The child item in NewInUnleashItem has been moved out into
NewInUnleashSideBarItem, which feels a bit better since that is a
distinct UI element from the popup
- NewInUnleashDialog now exists, which is a dialog version of the popup.
Meaningfully different to ask for a new component

## Screenshots

![image](https://github.com/user-attachments/assets/33d3e7f5-9178-4d2d-9355-866814e58164)
2025-03-27 11:30:24 +02:00
Mateusz Kwasniewski
1bd328f4e1
feat: create and edit environment required approvals (#9621) 2025-03-26 15:54:46 +01:00
David Leek
07a4106f48
feat: admin menu (#9617) 2025-03-26 15:08:56 +01:00
Thomas Heartman
328c5368ed
Hide env metrics when an env has no strategies. (#9620)
Changes the logic in when we display metrics for an env to not showing
 them unless we have strategies.


![image](https://github.com/user-attachments/assets/83dc2465-b3fb-49d1-a9fe-886fd16fea25)
2025-03-26 13:43:12 +00:00
Jaanus Sellin
18d1a6c1bc
feat: show seats used only for full enterprise customers (#9618) 2025-03-26 14:53:51 +02:00
Gastón Fournier
380d2c2c5d
feat: release template feedback module (#9614)
## About the changes

Adds a release template feedback module to release templates: 

![image](https://github.com/user-attachments/assets/848d386b-0e20-43d0-b113-51e1e26c5a13)

It uses the Card component by defining a new variant of it.

---------

Co-authored-by: Nuno Góis <github@nunogois.com>
2025-03-25 17:01:04 +01:00
Nuno Góis
b885a927e6
chore: stylable card (#9604)
https://linear.app/unleash/issue/2-3442/make-card-component-stylable

Makes the Card component introduced in
https://github.com/Unleash/unleash/pull/9096 stylable.

E.g.

```tsx
const StyledCard = styled(Card)(({ theme }) => ({
    backgroundColor: 'pink',
}));
```
2025-03-25 16:39:32 +01:00
Simon Hornby
9106fbf721
feat: add use template button to strategies selector on flag config pane (#9605) 2025-03-25 14:18:20 +02:00
Simon Hornby
dbc953b222
chore: consolidate release plan flags (#9606)
Removes the `releasePlanChangeRequests` flag and swaps existing references to it to the `releasePlans` flag instead
2025-03-25 13:36:23 +02:00
Thomas Heartman
3d1a97f745
Fix(1-3462)/janky drag n drop (#9599)
Fixes janky drag and drop behavior and updates the styling of the drag
handle focus.

The solution uses the same method to prevent oscillation as we do for
strategies. To get access to the same context, I've added some extra
parameters to the OnMoveItem function and passed along the extra data
from the `useDragItem` hook. No new information, just making more of it
available, and turning it into an object so that you can declare the
properties you need (and get rid of potential wrong ordering of
drag/drop indices).

For the drag and drop behavior: If the dragged element is the same size
or smaller than the element you're dragging over, they will swap places
as soon as you enter that space. If the target element is larger,
however, they won't swap until you reach the drag/drop handle, even if
they could theoretically switch somewhere in the middle. This appears to
be a limitation of how the drag/drop event system works. New drag events
are only fired when you "dragenter" a new element, so it never fires
anywhere in the middle. Technically, we could insert more empty spans
inside the drag handle to trigger more events, but I wanna hold off on
that because it doesn't sound great.

When dragging, only the handle is visible; the rest of the card stays in
place. For strategies, we show a "ghost" version of the config you're
dragging. However, if you apply the drag handle to the card itself, all
of it becomes draggable, but you can no longer select the text inside
it, which is unfortunate. Strategies do solev this, though, but I
haven't been able to figure out why. If you know, please share!

Before:

![image](https://github.com/user-attachments/assets/d3bf9fd2-7d74-4ad7-adde-b729403f82b3)


After:

![image](https://github.com/user-attachments/assets/27d3ca4e-112a-4420-b10d-7df59a7c09a0)
2025-03-25 11:43:40 +01:00
Tymoteusz Czech
d8c7e31b18
Constraint values preview and filtering (#9603)
Restore constraint accordion to flag page.
2025-03-25 11:24:22 +01:00
Mateusz Kwasniewski
59dd769e5d
feat: frontend traffic explanation box (#9602) 2025-03-24 15:25:43 +01:00
David Leek
7580d3bc74
chore: rename release-management to release-templates, remove "plan" from descriptions (#9595) 2025-03-24 14:57:18 +01:00
David Leek
5d47d524bb
feat: Admin home landing page (#9594) 2025-03-24 14:57:08 +01:00
Tymoteusz Czech
dd62b3dbcd
Constraint values list (#9592) 2025-03-24 14:26:58 +01:00
Mateusz Kwasniewski
e018ee2f34
feat: connection explanation box (#9598) 2025-03-24 13:21:29 +01:00
Thomas Heartman
01870c6165
fix: wrap env header grid on narrow containers (#9596)
When the container is <500px, make it so that the strategy count wraps
onto its own line to prevent it from obscuring the environment name.

I decided to go for 500px because that allows our default names to not
get cut off before wrapping. It seems like a sensible default.

Before:

![image](https://github.com/user-attachments/assets/7fdec179-6053-4803-9bc0-8e48cedf3636)


After:


![image](https://github.com/user-attachments/assets/64728d51-5f9a-415e-84d1-a7708c039809)

It's still not perfect when you have envs without strategies, but it's
better. We'll get back to that edge case later.
2025-03-24 10:52:38 +01:00
Thomas Heartman
b84699f563
refactor(1-3439): extract shared components and styling from Env Accordion Body to common (#9590)
Extracts the shared strategy list and list item into the `common` folder
instead of living in the environment accordion body file.

Also takes the disabled strategy handling that we use for
`StrategySeparator` and moves it into the file itself. It might be
something we want to decorate manually in the future, but we don't for
now, so this was the most straight-forward way to make it work.
2025-03-24 07:39:35 +00:00
Thomas Heartman
19d2a553f0
chore(1-3431): rework constraint equality and case sensitivity (#9591) 2025-03-21 15:26:05 +01:00
Thomas Heartman
03699c8e80
chore(1-3516): add release plan / strategy count to env header (#9589)
Adds an optional `environmentMetadata` property to the env header
component, which is used to populate the release plan / strategy
counter. If no env metadata is passed (such as for default strategy
configuration) nothing is rendered.


![image](https://github.com/user-attachments/assets/9be29a7a-aa11-46a4-87b4-4596c12552f6)

With long env names, the project name will be cut off before the chip:


![image](https://github.com/user-attachments/assets/0711972b-66d6-4874-9c47-0c4c768807ff)

There's some issues with narrow screens, but I'll handle that in a
follow-up:

![image](https://github.com/user-attachments/assets/0de8aeae-1025-4c7e-9fcb-86dd22952f97)
2025-03-21 14:54:13 +01:00
Nuno Góis
3fa54f4465
chore: instance status prices (#9588)
https://linear.app/unleash/issue/2-3429/use-the-correct-prices-for-each-instance-in-unleashs-ui

Uses the instance prices exposed through instance status to display the
correct price amounts in Unleash's UI.
2025-03-21 09:15:49 +00:00
Tymoteusz Czech
70444c2003
refactor: variant colors (#9586)
Toned-down colors for dark theme
2025-03-20 14:44:33 +01:00
Thomas Heartman
aeb3081624
chore: Don't use fallback functions for dragging (#9585)
Makes it so that strategies project env strategies that aren't draggable
don't get the drag icon. The reason it didn't work as expected was that
we used fallback functions instead of keeping them undefined.

I discovered that we applied two dragging boxes, so I removed the outer
layer one (specific to project envs) in favor of relying on the inner
one. Most of the lines changed are just indentation as a result of this
nesting going away.

Here's the diff. The top set of strategies aren't draggable; the lower
ones are.


![image](https://github.com/user-attachments/assets/0a7b6371-9f34-4596-a85f-9881da821448)
2025-03-20 13:54:19 +01:00
Thomas Heartman
90eed05296
Chore(1-3520)/playground disabled badges (#9583)
Gives a small update in how we deal with unevaluated and disabled
strategies in the new playground design:

- "Unevaluated" badges go from yellow warning to blue info and their
text changed to "Not evaluated"
- Don't show "Not evaluated" badges on strategies that are disabled.

To avoid this change affecting the current playground setup, I
duplicated the old resultschip into a legacy file and changed the
existing impl. To avoid updating all other files that use that chip
(it's all over the playground) and checking flags or creating duplicates
there, I decided to do a quick check at the top of the legacy file and
use the new file if the flag is on.

In doing so, I've also simplified the actual chip file and have more or
less cut the total line count in it in two 😄


![image](https://github.com/user-attachments/assets/44e38a8e-4faa-440b-82ed-9ee377160922)
2025-03-20 13:19:16 +01:00
Tymoteusz Czech
2d47fb3827
feat: new constraint view for flag edit page (#9567)
Refactor components in Targeting (Edit strategy)
2025-03-20 13:04:24 +01:00
Nuno Góis
a10dca44f6
fix: access overview fallback to email (#9582)
https://linear.app/unleash/issue/2-3430/fix-undefined-in-access-overview-when-user-name-is-unavailable

Adds a fallback to email in case the name is not available.

Also switches the priority of the fallbacks to be consistent with other
places in our codebase (email > username) and uses `||` instead of `??`
because falsy values don't provide much informational value anyways.


![image](https://github.com/user-attachments/assets/2726247c-b7ba-4ed8-8589-f56fff63d031)
2025-03-20 11:02:19 +00:00
Thomas Heartman
afd24aa58a
refactor: flatten release plan + strategy list (#9581)
Flattens the list of strategies when you have both release plans and
strategies. If you had both, you'd have this setup before:
```
- ol
  - li // release plan
    - ol // release plan strategies
  - li // regular strategies
    - ol // strategy list
```

Now we drop the extra nesting:
```
- ol
  -  li // release plan
    - ol // release plan strategies
  - li // the rest of the strategies
```

Semantically, I think this is just as valid and it simplifies a lot of
styling that no longer needs to look for other lists etc.

As part of doing this, I have also moved the "many strategies" warnings
and pagination labels to outside the list instead of inside the smaller
list.

Otherwise, the list looks just the same as before and drag-n-drop works
just fine.

(side note: these strategies shouldn't have drag handles 🤔 )

![image](https://github.com/user-attachments/assets/f27f451c-1b73-4f18-903f-153e379b54c1)


As a bonus, this PR also:
- Uses the disabled style separator for disabled strats in playground
and deletes some unused components I found.

Playground disabled strats (we probably don't want double orange badges;
I'll talk to UX):

![image](https://github.com/user-attachments/assets/a722b18f-f3d5-4d53-b093-b44912284748)
2025-03-20 11:16:44 +01:00
Thomas Heartman
038c10f612
chore: finish up disabled strategies (#9579)
Aligns the design of disabled strategies with the sketches. Most notable
changes:
- makes the disabled badge warning yellow
- greys out the preceding "or" separator
- makes the segment "preview" button *not* grey (because it's still
interactable)

As a bonus: uses a list for the constraint value lists instead of a div
and updates the design to match the sketches (no chips).


![image](https://github.com/user-attachments/assets/1b3ddfa0-b0e8-4856-ae01-26e507590a4f)

With strat variants:

![image](https://github.com/user-attachments/assets/dc143fbf-256b-4e96-872b-a6aa84df2111)


Bonus fix: 
Lets the constraint value list wrap so that we avoid this kind of
blowout:

![image](https://github.com/user-attachments/assets/4c0977ac-f8a4-41cc-8fb7-194e8b09c0a3)

Instead: 

![image](https://github.com/user-attachments/assets/a68ed4cf-c68c-43a1-9d6c-b90e85a0841f)
2025-03-19 15:40:23 +01:00
Thomas Heartman
f5b26340e7
chore: Updates change request sidebar to remove env/cloud icon (#9577)
Removes the cloud icon in the change request env header to better align
with the new env headers in the flag environment overview.

Also hides strategy variants in favor of using the new strategy
execution component.

As a bonus: also uses a link component instead of a button for
navigating to the change request page.

With flag enabled: 

![image](https://github.com/user-attachments/assets/0391c845-d68c-44fa-a747-1c21f5a9c2f4)


![image](https://github.com/user-attachments/assets/ac84be9b-15fb-4d0b-9737-69643332fa23)
2025-03-19 11:13:11 +01:00
Fredrik Strand Oseberg
aad5a6a1a9
Feat/tag type colors frontend (#9566)
Add frontend support for tag type colors
2025-03-19 10:03:33 +01:00
Thomas Heartman
0542fef5d8
chore(1 3493): handle cases with no strategies (#9563)
Handle cases where flags have no strategies in the playground.

As part of this, also changes how we deal with the padding/margins in
the playground: instead of making all but one items in the playground
have to explicitly add padding, now we instead say that the only item
that needs to do something is the list, which uses negative inline
margins.

This also has the added benefit of adding all the top-level elements
(that is: that's not part of the strategy lists) inside the same
container, so we can control gaps between them with flex's gaps.

When you have no strategies (before):

![image](https://github.com/user-attachments/assets/52c85ba4-0738-4aa7-b2ac-84e5f0f65b45)


When you have no strategies (after):

![image](https://github.com/user-attachments/assets/80f5ce75-29e5-4b6d-b707-213cb79d53cc)
2025-03-18 15:12:23 +01:00
David Leek
890bbcaaa0
chore: rename release management to release templates (#9564) 2025-03-18 14:52:47 +01:00
Thomas Heartman
c5fa7c82fd
chore: add spacing to playground header + style segment's no constraints text (#9561)
This adds two small visual changes:
1. Add some spacing to the playground header (so that the custom
strategies info box (or other alerts) get some breathing room. (It
slightly increases the text between the header and the flag result text,
but I'll leave that as is unless we get told otherwise. It's partially
because of extra padding on the close button etc, and will be more work
than I wanna put in right now).

2. Style the "this segment has no constraints" text for empty segments
to use a smaller, less prominent font.


Playground header before:

![image](https://github.com/user-attachments/assets/821b2711-8ab4-4390-8f6b-718c7bd97731)


Playground header after:

![image](https://github.com/user-attachments/assets/08a446a7-7d8f-4c69-b539-b662a6c7be54)


Segments text before:

![image](https://github.com/user-attachments/assets/b5ad60f8-3423-406c-8b48-e28c5190f956)

Segments text after:

![image](https://github.com/user-attachments/assets/f23a640e-dcfd-441d-8fc0-c7a31c6054af)
2025-03-18 14:07:23 +01:00
Thomas Heartman
43685f516e
chore: segment execution in playground (#9558)
Adds segment execution results to the playground and moves the existing
segment execution into a legacy file.

New:

![image](https://github.com/user-attachments/assets/870d87dd-46a3-4867-bf89-256165f669f0)

Old:

![image](https://github.com/user-attachments/assets/7624a169-9622-4785-9405-405466a89e6f)
2025-03-18 13:54:00 +01:00
Tymoteusz Czech
99fcdb1f23
fix: segment spacing in strategy constraints (#9559) 2025-03-18 13:03:52 +01:00
Thomas Heartman
c89cf196e7
Use new strategy execution in playground (#9553)
Implements playground results for strategies.

Old design:

![image](https://github.com/user-attachments/assets/6c1f1bad-4568-4959-82ee-3ebc6a0aab2d)

New design:

![image](https://github.com/user-attachments/assets/8991fc67-7055-4f6c-b2cb-b2d445057962)


Still left: segments.

I also discovered during this that some of the new hooks (and also some
of the new components) accept deprecated types
(`IFeatureStrategyPayload` in this case). If that should indeed be
deprecated, then we also shouldn't use it in the new hooks / components
if we can avoid it. I'll make a task for it.

---------

Co-authored-by: Tymoteusz Czech <2625371+Tymek@users.noreply.github.com>
2025-03-18 11:23:02 +01:00
David Leek
33733b64a7
chore: fix missing primary routes for commandbar (#9557) 2025-03-18 10:13:23 +00:00
David Leek
35ed2dabf3
feat: rework navigation sidebar admin section (#9556) 2025-03-18 10:35:06 +01:00
Thomas Heartman
7efe5c5311
chore: implement design for disabled environments in playground (#9544)
Adds the new design for strategy lists in disabled environments.


![image](https://github.com/user-attachments/assets/3d7c4e05-1a49-4a87-a6fa-b7491d86fab2)
2025-03-17 15:30:08 +01:00
Thomas Heartman
cf1ba8fcc5
Chore(1-3390)/playground strategy execution: constraints (#9532)
Implements the new design for playground constraints. They're not in use
in segments yet, and strategy parameters have not been touched. This PR
establishes a pattern that we can follow for strategies and parameters
later.


![image](https://github.com/user-attachments/assets/c23d538d-f27f-43f2-8e29-fa8044c11d48)

The PR also includes a change in how the constraint item organizes its
children: it now takes care adding padding and spacing itself, instead
of the children doing that. It looks right most places, but segments
aren't quite right anymore. However, as this is behind a flag, I'd
rather fix that in a separate PR.

---------

Co-authored-by: Tymoteusz Czech <2625371+Tymek@users.noreply.github.com>
2025-03-17 14:30:11 +01:00
Jaanus Sellin
6d6a4290fe
feat: requests consumption UI for frontend (#9550)
Switching frontend traffic tab to use the requests consumption API:
2025-03-17 12:55:01 +02:00
Jaanus Sellin
f093a3f4b3
chore: update orval types (#9549) 2025-03-17 11:52:25 +02:00
Thomas Heartman
2b634438a1
fix: only drag handle is draggable, allow you to select text in the header (#9536)
Previously, the entire card was draggable, which meant that you couldn't
select text inside the card or inside the milestone title when editing.
This makes it so that only the drag handle is draggable.
2025-03-17 10:52:09 +01:00
Nuno Góis
3a59886206
chore: access overview search (#9547)
https://linear.app/unleash/issue/2-3407/add-search-to-the-access-overview

Adds search to Access Overview.


![image](https://github.com/user-attachments/assets/20ba5266-ad67-43ff-8c31-79517951f893)
2025-03-17 08:46:09 +00:00
Nuno Góis
76b3e06fe5
chore: categorize access overview (#9546)
https://linear.app/unleash/issue/2-3346/only-show-description-and-not-permission-first-column-and-group

Categorizes the permissions in our Access Overview.


![image](https://github.com/user-attachments/assets/9b9fc8b3-78fb-48eb-a9f5-0f7f7683d2b7)
2025-03-17 08:24:48 +00:00
David Leek
e38a58d635
fix: use the correct permission for the create template button (#9545) 2025-03-14 14:42:28 +01:00
Tymoteusz Czech
14512c73d6
fix: command bar z-index (#9543) 2025-03-14 11:46:44 +01:00
Thomas Heartman
85ea5ce5e2
chore: Delete unused files (#9542)
These files are never used anywhere, so we might as well remove them.
2025-03-14 11:22:10 +01:00
Thomas Heartman
af705ad0e0
fix(1-3489): strategy dragging is broken in env overview (#9538)
Fixes strategy dragging in project envs. Not sure why this works, but
apparently, making it a variable instead of react component takes care
of it?
2025-03-14 11:22:02 +01:00
Nuno Góis
8e67594f1b
chore: change access overview to lists in accordions (#9535)
https://linear.app/unleash/issue/2-3343/accordions-not-a-must-have

https://linear.app/unleash/issue/2-3345/indicator-of-how-many-permissions

Changes our Access Overview from tables to lists in accordions. Also
includes the total permissions in the accordion summary.

Looking at the designs it seems like lists would make the most sense,
both visually and in terms of semantics. This will also allow us to
group the permissions both visually and semantically in a future task.


![image](https://github.com/user-attachments/assets/0692b4f3-0fc5-482c-b963-c731bf5113f5)

### Update

Also improved our project permissions label.


![image](https://github.com/user-attachments/assets/cbb2c298-1f85-4a78-b3ff-3140c567f756)


![image](https://github.com/user-attachments/assets/f3d5c623-4013-4a47-a4b1-5af2e63cb01e)

---------

Co-authored-by: Gastón Fournier <gaston@getunleash.io>
2025-03-14 10:21:14 +00:00
Tymoteusz Czech
872162eb7c
fix: new header z-index style (#9541) 2025-03-14 11:18:20 +01:00
Tymoteusz Czech
3912b443d0
fix: command bar search padding 2025-03-14 11:13:11 +01:00
David Leek
bdc21cc4e2
chore: mark release mgmt new in unleash as beta (#9540) 2025-03-14 10:51:33 +01:00
David Leek
f9c152995c
chore: new flag adminNavUI for admin UI 2.0 (#9537) 2025-03-14 09:30:30 +01:00
David Leek
8ab1a49294
chore: clean up frontend routes (#9533) 2025-03-14 08:18:01 +01:00
Nuno Góis
0d0530b61c
chore: rename access matrix to access overview (#9531)
https://linear.app/unleash/issue/2-3344/new-name-access-overview-instead-of-access-matrix

Renames Access Matrix to Access Overview, both internally (code) and
externally (UI).
2025-03-13 15:23:58 +00:00
Thomas Heartman
dadda7b648
fix: Data usage graphs don't work in UTC-n time zones (#9530)
Fixes a number of issues that would surface in UTC-n (where n > 1)
timezones. I've not found a way to check this with tests (and it looks
like [we weren't able to last time
either](https://github.com/Unleash/unleash/pull/9110/files#r1919746328)),
so all the testing's been done manually by adjusting my system time and
zone. (From what I understand, you can't generate a Date with a specific
TZ offset in JS: it's only utc or local time)

Resolved:
- [x] Selecting "Jan" in the dropdown results in the selection being
"December" (off by one in the selector)

- [x] Selecting a month view only gives you one data point (and it's
probably empty). Wrong date parsing on the way out resulted in sending
`{ from: "2025-02-28", to: "2025-02-28"}` instead of `{ from:
"2025-03-01", to: "2025-03-31"}`

- [x] The dates we create when making "daysRec" need to be adjusted.
They showed the wrong month, so the dates were off.

- [x] Make sure the labels are correct when hovering over. Again: we
used the wrong month for generating these.

- [x] The available months are wrong. Incorrect month parsing again.

- [x] The request summary month is wrong. You guessed it: incorrect
month parsing
2025-03-13 15:44:10 +01:00
Thomas Heartman
732b7f342a
chore: Playground Strategy Lists (#9510)
Continue the implementation of Playground strategy lists. This PR also
adjusts some existing strategy container and list items to accomodate
more use cases (such as this).

The playground strategy execution component is still the old design.

After (playground results):

![image](https://github.com/user-attachments/assets/f32505ba-f040-4491-a298-6e8bf606536d)

After (env strategy list):

![image](https://github.com/user-attachments/assets/b39174c7-3ee2-4fb4-aa7c-b51134c740b8)

Before (env strategy list):

![image](https://github.com/user-attachments/assets/a0a045e5-3623-44ef-96fa-8ba2f5be6b98)
2025-03-13 12:01:44 +01:00
Tymoteusz Czech
863788d7b3
Feat(UI): new strategy variant chips (#9507)
- new way of showing strategy variants
- fixed wrapping issue in strategy editing, for a lot of variants
defined (`SplitPreviewSlider.tsx` change)
- aligned difference between API and manually added types
2025-03-13 11:27:45 +01:00
Nuno Góis
5ad3178590
refactor: remove unused access overview component (#9527)
https://linear.app/unleash/issue/2-3396/remove-unused-access-overview-component

Removes an unused access overview component.

A nice bonus is that we're adding something called [Access
Overview](https://github.com/Unleash/unleash/pull/9525) so we avoid some
confusion.
2025-03-13 09:21:57 +00:00
Nuno Góis
8ab24fd3bf
chore: users actions menu (#9525)
https://linear.app/unleash/issue/2-3342/new-entrance-point-create-dot-dot-dot-menu-instead-of-icons

Adds a new users actions menu.

Should this change be behind a flag? I'm leaning towards no, but if you
think otherwise let me know.

### Previous

![image](https://github.com/user-attachments/assets/6becffc5-c5e2-4e21-88bf-8644d1337c68)

### After

![image](https://github.com/user-attachments/assets/968859f0-f562-4252-bc93-fe362c5bc378)

### If user is SCIM-managed

![image](https://github.com/user-attachments/assets/275581b5-4cd2-4a8b-9f35-42e9f493102f)
2025-03-13 09:02:06 +00:00
Mateusz Kwasniewski
1b7f91cd4b
feat: read backend connections UI (#9526) 2025-03-13 10:56:29 +02:00
David Leek
22f51df76c
feat: archived indicators and disabled button when editing archived template (#9503) 2025-03-13 09:16:55 +01:00
Mateusz Kwasniewski
29181118ce
chore: orval generation (#9524) 2025-03-12 16:47:55 +01:00
Nuno Góis
6b888abe10
chore: remove project at least one owner constraint (#9517)
https://linear.app/unleash/issue/2-3393/remove-project-at-least-one-owner-constraint

Removes our constraint that the project must have at least one owner.
2025-03-12 10:37:20 +00:00
Nuno Góis
242b0de592
chore: show events IP (#9512)
https://linear.app/unleash/issue/2-3392/visualize-event-log-ip-address-on-unleash-enterprise-ui

Shows events IP for Unleash Enterprise.


![image](https://github.com/user-attachments/assets/3ffbc69b-6dce-4c16-9d3d-77a404623d96)
2025-03-12 10:06:29 +00:00
Melinda Fekete
7534b66c18
Fix broken anchors in docs (#9406) 2025-03-11 11:45:40 +01:00
Thomas Heartman
a064672635
chore(1-3422): playground strategies list (#9504)
Initial rough work on adapting the playground strategies to the new
designs. This PR primarily splits components into Legacy files and adds
new replacements. There are *some* updates (including spacing and text
color), but nothing juicy yet. However, I wanted to get this in now,
before this PR grows even bigger.
2025-03-11 11:36:14 +01:00
Thomas Heartman
be57f9f8fd
chore: remove apitoken.username (#9448)
Removes usage of the deprecated API token property `username` and uses
`tokenName` instead.

Affected components:

Token table:

![image](https://github.com/user-attachments/assets/7275e9ae-a79c-4815-9f8d-157008480b97)


Token deletion dialog:

![image](https://github.com/user-attachments/assets/1c47cd3d-c7ff-4547-9779-eaba16274d1e)


Environment post-clone screen (which is automatically hidden now, so it
... doesn't matter)
2025-03-11 08:32:50 +01:00
Tymoteusz Czech
312adc0c1a
chore: remove granularAdminPermissions flag (#9467)
- removed a flag
- deprecated `POST /admin/ui-config` endpoint in favor of `POST
/admin/ui-config/cors`
2025-03-10 16:36:59 +01:00
Thomas Heartman
7dd89034aa
chore: use new designs for project default strategies (#9447)
Implements the new strategy list design for default strategies. Moves
the old impl into a legacy file. Also: removes the description from the
strategy item. From my digging, we only showed this for default strategy
items and it didn't really provide any useful information. The only
other place you can add a description is for custom strategies (at least
that I could find), but these are deprecated and we never show the
description when you apply the strategy anyway.

Rendered:

![image](https://github.com/user-attachments/assets/fb244f10-0a19-42f5-a517-090d6703c76a)

Without the flag (nothing changes):

![image](https://github.com/user-attachments/assets/62159338-8b26-4cb2-825d-e20965c6558d)
2025-03-10 16:09:32 +01:00
Thomas Heartman
23852afcdd
chore: Constrains custom strategy titles to a single line (#9469)
Constrains long custom strategy titles to a single line.

Before:

![image](https://github.com/user-attachments/assets/e00545db-bf95-4539-ac6e-557a8784ddd0)


After:

![image](https://github.com/user-attachments/assets/266bad74-77ba-4e59-8317-2d6b9d2333a7)
2025-03-10 14:09:05 +00:00
Thomas Heartman
51c9617da8
Fix: weird strategy spacing on envs without release plans (#9466)
Fixes a visual bug where envs without release plans would get too much
spacing on the top of their first strategy.

It does this flattening the list of strategies if there are no release
plans. In doing so, I have extracted the strategy list rendering into a
separate component (to make things more legible and re-usable) and have
also removed the FeatureStrategyEmpty component and marked it as
deprecated. In the new designs, you can't expand envs without
strategies, so the component is no longer needed.

Before (what looks like a shadow is actually the extra list being
rendered with a bit of padding):

![image](https://github.com/user-attachments/assets/5ba06ac9-046c-4fbd-8b46-b077b8a0570b)

After:

![image](https://github.com/user-attachments/assets/64270582-1221-4bdf-a85b-c24ce23bd4a3)
2025-03-10 14:49:26 +01:00
Mateusz Kwasniewski
3059d23446
feat: always show features table (#9446) 2025-03-10 10:19:36 +01:00
Mateusz Kwasniewski
6d02e33680
feat: rename api token column (#9445) 2025-03-10 10:16:36 +01:00
Thomas Heartman
220550071f
chore(1-3450): Place strategy names and titles on the same line (and fix list nesting issues) (#9443)
Moves strategy titles and names onto the same line, as per the new
designs.

In doing so, I've also updated the component to use a more semantic
hgroup with the header being the strategy title if it exists or the
strategy name if not.

The downside of being more semantically correct here is that we need to
know what header level we want the strategy to use. In most cases,
that's 3 (e.g. flag name > environment > strategy, release plan >
milestone > strategy), but for plans on flag envs, it's 4 (flag name >
env > milestone name > strategy).

I've also taken the opportunity to fix a little mistake I made earlier.
`ol`s can only have `li` children, and I'd forgotten to wrap a nested
`ol` inside an `li`. The changes in `EnvironmentAccordionBody` all
relate to that change. Because we now have several layers of lists
nested within each other, dealing with styling and padding gets a little
tricky, but CSS has the power do help us out here.

Rendered:

![image](https://github.com/user-attachments/assets/634615fe-b06d-4baa-8aa3-22447d1fb8b4)
2025-03-07 13:09:36 +01:00
Thomas Heartman
f6987909e7
Chore(1-3449): release plans in strategy env (#9441)
Use new design for release plans in flag environments.

- Move old ReleasePlanMilestone into Legacy file and update imports
- In the new version, use the same strategy list and item as in the
general strategy list and milestone template creation (components to be
extracted in the future)
- Fix an issue with the border being obscured by overflow by hiding
overflow


![image](https://github.com/user-attachments/assets/2258263d-aa96-4939-8af1-88236050cbd6)
2025-03-07 11:18:09 +01:00
Thomas Heartman
7db692e976
fix: Only show accrued traffic charges and estimated overages for the current month (#9440)
For past months, customers can refer to their invoices instead. Hiding
it when the selection is not the current month avoids weird things such
as estimation errors due to to a month not having finished (vs what it
actually *was* when it finished), potential changes in traffic package
pricing, etc.
2025-03-07 07:32:15 +00:00
Thomas Heartman
e5be1bf43e
Fix: drag and drop reverts to previous position on drop (#9439)
Fixes an issue where, when dragging large expanded milestone cards, the
position would revert from the current visual state to the previous one
when you drop the item.
2025-03-06 14:11:48 +00:00
Thomas Heartman
2e2bb9cf25
refactor: don't use absolute positioning for drag handle (#9434)
Avoids absolutely positioning the drag handle by instead creating a two
column grid where column 1 is the drag handle, column two is the
milestone card. The grid has a negative margin based on the padding of
the form container. I wanted to avoid modifying the form container
component (because we use it in so many places), so I used css variables
to store the information and hook into that further down the line.

Rendered:

Wide:


![image](https://github.com/user-attachments/assets/bb43b1b9-595b-475e-a59f-24ebf82df489)

Narrow:

![image](https://github.com/user-attachments/assets/344b9c6f-08e7-43ca-8a02-1b224ccdd2c8)

## Known bugs and limitations
The current drag implementation has some issues if you try to drag
something over a large, expanded card. They'll trade places visually,
but when you let go, the revert back to where they were. We can avoid
that by modifying the onDrop function in the drag handler, but I don't
want to do that before checking all the other places where we do drag
and drop ([linear
ticket](https://linear.app/unleash/issue/1-3458/drag-and-drop-is-a-little-finicky)).

I also want to get UX to sign off on this before making those changes.
2025-03-06 14:21:19 +01:00
Thomas Heartman
8629cda4d7
chore: remove dataUsageMultiMonthView flag (#9429)
Remove data usage multi month view flag and deprecated components and
functions.
2025-03-05 12:08:33 +01:00
Thomas Heartman
2e086161eb
refactor: strategy draggable item is now proj/env agnostic (#9411)
Updates `StrategyDraggableItem` (and `StrategyItem`) to be project/env
agnostic. They now instead expect you to pass in the required header
items (CR badges, strategy actions) at the call site. Updates their
usage in the feature env accordion, and the release plan card.

All components that have been updated are part of the new overview
rework. The legacy components (which are used when the flag is off)
remain untouched.

Also makes a few small tweaks explained in inline comments.

## Rendered 

Milestone card (with flag on):

![image](https://github.com/user-attachments/assets/828d5fe4-4b07-4ebe-86cd-1ab24608ba31)

Milestone card (with flag off):

![image](https://github.com/user-attachments/assets/10e37cc4-e5e4-4a07-a4f9-5e5f5c388915)


Feature env accordion (flag on (no change)):

![image](https://github.com/user-attachments/assets/2e5db9e7-24b1-4b3e-9434-4705e5737157)


Feature env accordion (flag off):

![image](https://github.com/user-attachments/assets/469970b6-ab57-4332-a99f-8f8e2e645230)
2025-03-05 10:34:55 +01:00
Thomas Heartman
a50fb7db35
chore: remove frontendHeaderRedesign flag (#9428)
Removes all references to the flag and deletes unused components.
2025-03-05 09:40:53 +01:00
David Leek
f6bb94addf
feat: UI for archiving release templates (#9415) 2025-03-05 08:08:57 +01:00
Gastón Fournier
4ae09fdb05
fix: copy strategy is allowed to copy to self (duplicate) (#9407)
When checking for permissions we were checking if the user was allowed
to copy to other environments but it can also copy to the same
environment.

Before the change: 

![image](https://github.com/user-attachments/assets/3bb1b738-8a4b-4c1b-b45f-c48895454c0a)


After the change: 

![image](https://github.com/user-attachments/assets/869e0fed-b7da-436c-93b4-fc50b6830e45)
2025-03-03 17:11:50 +01:00
Simon Hornby
f3ede7681f
chore: flip UI and backend validation for project env disabling (#9395) 2025-03-03 17:13:41 +02:00
Thomas Heartman
596577a1b7
feat: use new strategy list in release plans (#9405)
Here's an initial first pass of replacing the strategy lists in release
plan milestones.

The existing MilestoneCard has been moved to a Legacy file to avoid
conflicts.

This PR places the strategies in a list and changes the background color
of the list items (the strategies themselves still have a white
background, however).

It also re-orders the buttons in the footer and places the
milestone-level drag handle outside the milestone card.


![image](https://github.com/user-attachments/assets/5807bf09-ecbc-4539-a507-03482face154)

## For later

Changing out the strategy list item itself hasn't been done yet. I want
to see if we can re-use the existing strategy draggable item instead of
making a copy. There's some dependencies on project path params etc that
need to be worked out first, though, so I'd prefer to do get these
initial changes through first.
2025-03-03 13:17:55 +01:00
David Leek
90fe02ed0d
fix: solve 31 day month issue by using trafficUnitSize and not constant 1_000_000 (#9404) 2025-03-03 11:16:48 +01:00
Melinda Fekete
eee212f3f0
Update docs for data and privacy (#9397) 2025-02-28 16:28:32 +01:00
Tymoteusz Czech
1b67b288ee
Segment view for strategy evaluation (#9399)
Refactored "segments" part of strategy evaluation. This shows a lot of places, that use "Legacy" component.
2025-02-28 15:15:25 +01:00
Nuno Góis
8d0820fc8b
chore: release plan replacement UI (#9400) 2025-02-28 14:14:34 +01:00
Nuno Góis
da91ae6afe
chore: new add release plan dialog (#9389)
https://linear.app/unleash/issue/2-3249/adding-a-release-plan-to-a-non-cr-environment-feels-too-immediate

This adds a new confirmation / preview dialog when adding a release
plan.

What's cool about it is that it will describe what will happen before
you confirm. It also acts as the "add to CR" dialog, so we now only have
1 dialog instead of 2 separate ones.

This also refactors quite a bit of our code here, hopefully simplifying
it.

### Simple (env disabled)

![image](https://github.com/user-attachments/assets/579697a8-5b21-4400-a48b-96d2df3931f6)

### CR protected (env enabled)

![image](https://github.com/user-attachments/assets/35398bc9-faed-4ce1-8c78-52e89fe21f4a)
2025-02-28 10:57:20 +00:00
Nuno Góis
2064cae20f
chore: release template card min height (#9390)
https://linear.app/unleash/issue/2-3328/release-template-cards-should-have-a-consistent-minimum-height

Sets a consistent min height in our release template cards.


![image](https://github.com/user-attachments/assets/4e1f1994-6044-4df0-9019-abe76ffc9a37)
2025-02-28 10:23:21 +00:00
Tymoteusz Czech
a6cfcea029
refactor: new constraints style (#9363)
Refactored styles for strategy evaluation parameters. New look for constraints etc
2025-02-28 10:49:23 +01:00
Thomas Heartman
97fd1c0fec
chore(1-3423): adapt existing tests to new components (#9396)
Adds tests for the new version of components that were moved to legacy
files in https://github.com/Unleash/unleash/pull/9361 and where there
were tests already.
2025-02-28 09:45:29 +00:00
Thomas Heartman
0a0d6e9e2a
refactor(1-3429): makes the drag args optional, defaulting to noops (#9394)
Removes the `() => {} as any` args from the StrategyDraggableItem
invocation when you have paginated strats. Instead makes all the drag
params optional. It defaults to a no op if not provided.

Also, the reason it had to be typed as `any` before is probably because
it was missing a function. The correct empty param is `() => () => {}` 💁
2025-02-28 08:45:01 +00:00
Mateusz Kwasniewski
bf78d74dc5
feat: frontend traffic tab (#9385) 2025-02-27 16:02:09 +01:00
Thomas Heartman
d5d172647c
chore: deprecate envAccordion colors; update non-legacy components (#9378)
Deprecates the `envAccordion` colors (`expanded` and `disabled`) and
updates the components that I do not expect to be deprecated as part of
the strategy facelift project to use `elevation1` instead.

The difference is very slight. envAccordion.expanded:

![image](https://github.com/user-attachments/assets/affaa000-11a7-45af-ac1e-1454281615d8)

Elevation 1:

![image](https://github.com/user-attachments/assets/6baa7219-7a6b-4e5d-bd55-1da9e284e7ed)
2025-02-27 15:29:37 +01:00
Thomas Heartman
63d4b8b0e4
chore: adjust env dropdown (#9382)
Adjusts styling of the env dropdown now that we have both release plans
and strategies.

Key points:
- simplifies strategy separator, removes inherent height. Also: extracts
it from the draggable component (it has no business knowing whether to
add that or not)
- Puts release plans and strategies in the same list so that it becomes:
```markdown
- Release plan
  - strategy 1
  - strategy 2
- (OR) Strategy A
- (OR) Strategy B
```
- Adjusts some padding around to make it line up properly
- Swaps a couple conditional renders for ternaries


Rendered:

![image](https://github.com/user-attachments/assets/d6d5cd56-572f-419e-90ed-6449a63fdc96)

## Still todo:

Handle cases where you have >50 strats and we show the warning etc. It's
a little trickier because of how it interacts with release plans, so I
wanna leave that for later.

I'm also unsure about how we handle spacing today. All the little items
have their own different spacing and I'm not sure it won't get out of
sync, but I'm also not sure how else to handle it. We should look at it
later.
2025-02-27 15:28:41 +01:00
Mateusz Kwasniewski
426f53cd8d
test: connection count chart functions (#9383) 2025-02-27 14:38:49 +01:00
Mateusz Kwasniewski
f46ec293df
feat: backend connections tab (#9381) 2025-02-27 13:38:42 +01:00
Thomas Heartman
359b7cc4c0
chore: handle release plans in new strategy list (#9380)
Splits the release plan component into a Legacy component and a new one
with the initial changes for the new strategy list view.

Here's what it looks like:

![image](https://github.com/user-attachments/assets/ecca20d5-1c29-42a9-93f4-61d158ba5a76)

Notice that the background color stops a little early (before the OR
token). I'll handle that in a follow-up because the changes also impact
how the rest of the env accordion body is rendered.
2025-02-27 11:16:24 +01:00
Mateusz Kwasniewski
e29eb51f3c
chore: consumption model flag (#9379) 2025-02-27 09:45:07 +01:00
Thomas Heartman
0c6ef912d4
chore(1-3420): wrap strategy list in an ordered list (#9377)
Improves the semantic correctness of the strategy list by wrapping it
in an `ol` tag.

Strategy order matters (due to variant resolution etc), so the order
is important (hence the `ol` instead of a `ul`).

Dragging still works and it's visually the same.
2025-02-27 08:15:08 +00:00
Jaanus Sellin
be3fa73244
chore: fix text on last seen instances (#9376) 2025-02-27 09:21:40 +02:00
Jaanus Sellin
9ae9221960
feat: now instances are only shown for last 24 hours (#9372) 2025-02-27 09:19:48 +02:00
Thomas Heartman
e25fb9f7c0
chore(1-3389): new env strategy containers (#9361)
Updates the strategy list based on the new designs and moves the current
versions of the touched components into `Legacy...` files (the vast
majority of changes are that and updating imports). The relevant changes
to the components are listed in their original files.

Flag on:

![image](https://github.com/user-attachments/assets/cd49c283-6044-46d4-bcef-182cb6a1de4e)

Flag off:

![image](https://github.com/user-attachments/assets/7ef92b6d-31e5-4218-90b2-dedd5e6cc6de)

## Next steps

There's two items to review for improving these current comments (also
noted inline):
- Whether to aria-hide the "or" separator or not (I need to read up a
bit and think whether it makes sense to show that or not)
- Changing the list of strategies into an actual ordered list (`ol`).
That'd reflect the semantics better.

Next would be checking the other places we use strategy lists and then
updating those too. In doing so, I might find that some things need to
be updated, but I'll handle those when I get there.

There's also handling release plans.
2025-02-26 16:24:50 +01:00
Nuno Góis
192bd83fa6
chore: improve release plan template form validation (#9371)
https://linear.app/unleash/issue/2-3321/improve-release-template-name-uniqueness-error-response-messages
https://linear.app/unleash/issue/2-3285/milestone-name-uniqueness

Slightly improves UX in our release plan template form validation.


![image](https://github.com/user-attachments/assets/2b3bf475-64cc-40ab-a78a-4fe2ca3cdbd1)
2025-02-26 13:01:34 +00:00
Tymoteusz Czech
4e7ce65567
chore: remove uiGlobalFontSize flag (#9331)
1-3383
2025-02-26 12:39:53 +01:00
Thomas Heartman
27bd4e2491
feat: allow command bar navigation to wrap around (#9370)
Lets you navigate to the top of the list when you're at the bottom,
and vice versa.

Arrow down at the end of the list takes you to the search field and
arrow up from the search field takes you to the end of the list.
2025-02-26 10:35:44 +01:00
Nuno Góis
a91876790e
chore: deprecate and undeprecate protected environments (#9360)
https://linear.app/unleash/issue/2-3320/allow-users-to-deprecate-and-undeprecate-protected-environments

Allows users to deprecate and undeprecate protected environments.


![image](https://github.com/user-attachments/assets/621684d3-21e3-4f58-b6b5-2d2731c9fd9e)
2025-02-25 13:41:41 +00:00
Nuno Góis
add4191381
chore: months old version banner (#9352)
https://linear.app/unleash/issue/2-3309/warn-users-of-lagging-versions-3-months-old

Adds a banner warning users in case they are running an outdated Unleash
version (>=3 months old) in case the build date data is present.

When clicking "Changelog" the users are redirected to
https://github.com/Unleash/unleash/releases.


![image](https://github.com/user-attachments/assets/f6b9b361-e780-4558-8b6c-5987b12efe68)
2025-02-25 12:48:55 +00:00
Thomas Heartman
000ee66692
fix: long flag names push table to overflow and flag descriptions are not truncated (#9350)
Addresses two issues related to flag names and descriptions overflowing:

1: In the project flag overview, long flag names push the environments
off screen. This is handled by setting overflow-wrap: anywhere on the
offending text. The text will now use ellipses instead.

Before full-width: 

![image](https://github.com/user-attachments/assets/1c63481a-6733-4f6e-a3a7-46c9035c38f7)

Before narrower:

![image](https://github.com/user-attachments/assets/86cf3531-8259-42f0-9905-4a22dd7f98a7)


After full-width:

![image](https://github.com/user-attachments/assets/e13fa6ff-4cbe-4f6e-8530-b089a8343c65)

After narrower:

![image](https://github.com/user-attachments/assets/c4df0e5d-e32f-4909-9351-afc864383c7b)

2: On the flag page, long descriptions are rendered in their entirety,
even if that's not sensible. They are now truncated after five lines.
There is a tooltip that shows the full text, or you can go the flag
settings to see the full description.

Before:

![image](https://github.com/user-attachments/assets/121ffeac-b92b-4b9b-bb79-17bf5d4ef734)


After:

![image](https://github.com/user-attachments/assets/cd4ff0c2-e110-42c1-8ce6-e0e897823420)


After (with tooltip):

![image](https://github.com/user-attachments/assets/90c147e4-a397-4e60-8318-9a08c4e069aa)


---

Note, I don't think this is necessarily the perfect solution (it'd be
nice to get tooltips for overflowing flag names a "show full
description" disclosure button instead of the stupidly long tooltip),
but I think it's a step in the right direction.
2025-02-25 13:39:30 +01:00
Tymoteusz Czech
7ec6c141f3
refactor: fix deprecation for string truncator (#9359) 2025-02-25 12:24:03 +00:00
Tymoteusz Czech
42a05ef418
feat: new environment box (#9342)
Co-authored-by: Thomas Heartman <thomas@getunleash.io>
2025-02-25 10:34:36 +00:00
David Leek
f19ffd0e7e
chore: fix small UI issues in release templates/plans (#9341) 2025-02-24 15:25:44 +01:00
Nuno Góis
7245112e14
chore: Edge observability width fix (#9345)
Makes the Edge instance node width consistent.
2025-02-21 12:11:50 +00:00
Thomas Heartman
1db97882c2
feat: make env selector filterable (#9340)
Makes the env selector on the flag page act the same way as the env
selector on the new project page or any of the filterable buttons in the
new project/flag dialogs.

Also slightly changes the styles of the existing dropdown lists to bring
them in line with the new env selector (more padding, full-width
highlights).

Selector:


![image](https://github.com/user-attachments/assets/83875aa3-f9d1-4763-b8eb-75f7dc493b13)


Project/flag creation:
Before:

![image](https://github.com/user-attachments/assets/97926ec8-64a0-4d08-900b-0acd5709ef92)


After:


![image](https://github.com/user-attachments/assets/2616615f-3382-4183-a048-5ea4defc8fb2)

## Technical notes

I was a little unsure how best to share the padding/spacing styles
between the search field and popover at first (as was requested by UX).
The easiest way (and most compliant with how we do it today) was to
define the spacing in a variable and move the relevant components into
the same file.

However, I actually think that using a CSS variable (e.g.
`--popover-spacing`) would be "better" here, but we don't really use
them much, so I've left that out for now. That said, if you agree, I'd
be more than happy to use that instead 🙋🏼
2025-02-21 11:20:43 +00:00
Nuno Góis
86c15d5253
chore: improve UX in the Edge observability latency table (#9343)
https://linear.app/unleash/issue/2-3298/make-latency-table-clearer

Improves UX of the Edge observability latency table.


![image](https://github.com/user-attachments/assets/c8b36bdf-7bb5-4646-8176-41b8de70fa30)
2025-02-21 10:00:23 +00:00
Thomas Heartman
9b282a436d
chore: reduce tab sizes on flag page + fix wrapping/overlapping issue with action buttons (#9339)
Reduces the size of the tab buttons on the flag page:
- Sets the min width to 100px instead of 160px on md screens. No change
for smaller screens
- Removes the min-height restriction imposed by theme.ts for the tab
bar, instead relying on the tab buttons to determine the height
(effectively changes the height from 70px to 62px).

Additionally: fixes an issue where the action buttons would overlap with
the tab buttons before wrapping and makes the tab bar scrollable. I can
no longer reproduce the issue where the action buttons force the tab bar
to be too small, but even if they should do that now, the tab bar is
scrollable so the remaining tabs are still accessible.

Because we only override the tabs' min-width on wider screens and mui
sets a default min-width, I changed the `onNarrowHeader` function to
`onWideHeader` and adjusted the other components accordingly. As a
bonus, the tab width and header wrapping now happens at the same time 🥳

After the change:

![image](https://github.com/user-attachments/assets/b164cc7d-ca96-4877-b507-cec9e00a2302)


## Accessibility

This PR also addresses some of the a11y issues with this tab bar, namely
that it adds an `aria-label`, as mentioned in the [MUI
docs](https://v5.mui.com/material-ui/react-tabs/#accessibility).

It does **not**, however, connect the tabs to their corresponding tab
panels. The main reason for this is that we're not using tab panels and
that they're spread over 4 different components. We're probably using
the tabs component for something it isn't really designed to do in this
way. (Arguably they should be links and not buttons, for instance.) I'm
not going to touch this now, because that would probably be a lot of
work and it's not something I expect the business would prioritize.

## Changing theme.ts

While it's tempting to go in and change the `min-height` in `theme.ts`,
that would potentially affect all the other tab bars we have (although
maybe not, because we set a different min height for the tabs
themselves), I want to leave that for now. There is apparently some work
being done/prepared for the tabs, so it's probably better to leave that
for then.
2025-02-20 15:02:04 +01:00
Nuno Góis
ac8d742e5f
chore: make Edge instance node width consistent (#9335)
https://linear.app/unleash/issue/2-3295/make-edge-instance-nodes-width-consistent-in-the-connected-edges-view

When manually testing this feature I noticed that sometimes Edge
instance nodes had different widths depending on their content.

This makes it so they stretch to the available space, making all
instance nodes in a group (app-name) the same width.
2025-02-20 09:53:43 +00:00
Thomas Heartman
6e1f683902
chore(1-3380): handle narrow windows for the flag header. (#9321)
Makes it so that the actions/tabs wrap on narrow width screens.

Constraints:
- When wrapping, the actions should go **before** the tabs, when not
wrapping, they should be placed **after**
- Need to maintain a logical tab order for wrapping, so just using
`flex-flow: row wrap-reverse` doesn't work because the tab order will be
wrong
- When the elements switch, you shouldn't lose your tab place in the
document

This solution uses container queries to determine the container size and
uses that to set the wrapping. Falls back to media queries if container
queries aren't supported (it's supported on >93% of browsers according
to caniuse).

The wrapping points don't use predefined media queries because:
- containers don't care about the size of the screen. It's the intrinsic
size of the container that matters.
- wrapping at 900px seemed too far out if container queries are
unsupported. But it's a fallback, so we can switch to that if we want.

If your keyboard focus is on one of the actions on a wide screen, and
the screen goes narrow, your focus will still be after the tabs (staying
consistent), so tabbing to the next element will take you into the flag
details, while backtab takes you back to the tabs.


Before wrapping:

![image](https://github.com/user-attachments/assets/21557d9d-e083-4c0c-a7e5-400751fe5822)

After wrapping:

![image](https://github.com/user-attachments/assets/efc482b9-39b0-446c-8d8e-cfa551ce5edd)

## A note on accessibility:

The spec for flexbox (taken from [MDN's
doc](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_flexible_box_layout/Ordering_flex_items))
states:

> "Authors must not use order or the *-reverse values of
[flex-flow](https://developer.mozilla.org/en-US/docs/Web/CSS/flex-flow)/flex-direction
as a substitute for correct source ordering, as that can ruin the
accessibility of the document."

So even if wrap-reverse works visually, it's not a good solution for
this.
2025-02-20 09:31:08 +00:00
Nuno Góis
7340c74b1b
refactor: rename networkViewEnabled to prometheusAPIAvailable (#9330)
https://linear.app/unleash/issue/2-3290/rename-networkviewenabled-to-prometheusapiavailable

Follow-up to: https://github.com/Unleash/unleash/pull/9325

See: https://github.com/Unleash/unleash/pull/9325#discussion_r1960085303

Renames `networkViewEnabled` to `prometheusAPIAvailable`. This new name
better reflects what it stands for.
2025-02-19 14:38:59 +00:00
Tymoteusz Czech
e095411de4
feat: show add strategy button when release plan (#9329)
Should show "add strategy" for redesigned page
2025-02-19 14:22:50 +01:00
Nuno Góis
b4bfadd95e
chore: visualize connected edges (#9325)
https://linear.app/unleash/issue/2-3233/visualize-connected-edge-instances

Adds a new tab in the Network page to visualize connected Edges.

This is behind a `edgeObservability` flag.

Also opens up the Network page even if you don't have a Prometheus API
configured. When accessing the tabs that require it to set, and it
isn't, we show some extra information about this and redirect you to the
respective section in our docs.


![image](https://github.com/user-attachments/assets/1689f785-7544-450b-8c33-159609fc0f7d)


![image](https://github.com/user-attachments/assets/a7a14805-0488-41d2-885f-5e11a8495127)


![image](https://github.com/user-attachments/assets/918cba87-5538-4600-a71f-1143b2e33e2a)
2025-02-19 12:23:52 +00:00
David Leek
c938b0fa6c
chore: await so change requests banner shows up after adding release plans changes (#9328) 2025-02-19 11:18:10 +01:00
Tymoteusz Czech
2a6487e7e9
feat: show and hide environments (#9323)
- Button to show and hide environments
- Refactored hook storing state of hidden environments
- Changed the way flag is triggered for feature overview
- Visual updates for new page look

---------

Co-authored-by: Thomas Heartman <thomas@getunleash.io>
2025-02-19 09:48:07 +00:00
Gastón Fournier
1bb2756161
chore: remove references to admin token kill switch (#9324)
This feature has been removed
2025-02-19 09:08:21 +01:00
Thomas Heartman
14b6b38238
feat(1-3379): add stale badge to the new header (#9320)
Without this, there's no way to tell if a flag is stale or not on the
flag page, so we're adding it back in. However, we'll only show the
badge if it's stale, not if it's an active flag.

Stale flag with badge:

![image](https://github.com/user-attachments/assets/eded97ab-0bba-41e5-8e1c-37cc90684c63)

When it wraps:

![image](https://github.com/user-attachments/assets/223eb672-20d2-4f3c-a5d9-34c3b739ce5e)

To make the badge line up properly when it wraps, I removed the
hard-coded margin in the badge. To counteract that, I've also removed
the hard-coded margin in the "copy name" button and switched to using
flex gaps to sort that.

It still looks right.

Before:

![image](https://github.com/user-attachments/assets/d945b067-c182-4448-967f-5505cf2e47ca)

After:

![image](https://github.com/user-attachments/assets/3b78b9fc-82b9-4d21-a53a-a3849819e916)
2025-02-18 12:34:46 +00:00
Thomas Heartman
4701dc1552
refactor: move feature overview header into separate file (#9319)
This PR moves the flag page header into a separate file, so that the
overview file is more clearly focused on the overview.

Additionally, it moves the modals that are triggered from the header
into the new file. This should give a nice little performance boost, as
opening and closing these modals should no longer trigger a re-rendering
of the full flag overview page, only the header.
2025-02-18 11:35:40 +01:00
Tymoteusz Czech
2ede2a6578
feat: new flag info box (#9308)
- updated spacing of elements
- modified header and "flag type" 
- added "collaborators"
- refactored tags

Co-authored-by: Thomas Heartman <thomas@getunleash.io>
2025-02-18 10:30:52 +01:00
Thomas Heartman
b15502ec5e
fix(1-3377): handle singular counts in project status lifecycle boxes (#9317)
If the average number of days in a stage is 1, use `1 day` instead of
`1 days`.

Likewise, if your total number of archived flags is 1, use `1 flag
archived` instead of `1 flags archived`.

I grepped through the file, but couldn't find any other hardcoded
instances of "flags" or "days", so I think this is everything.
2025-02-17 12:41:04 +00:00
Thomas Heartman
134c32589a
fix(1-3375): Fix unintended scroll on dashboard (#9316)
Fixes a bug where the dashboard would scroll you down from the top of
the page on load if your window was too short too see both the
selected flag and the selected project.

This solves it by immediately scrolling to the top of the page after
scrolling your selected element into view. Because this hook only runs
on page load, it shouldn't be safe. (At least I couldn't make this
misbehave with manual testing).

It also changes the list scroll behavior to scroll your selected item
to the top of the list instead of to the bottom (effectively). During
testing, that seems like a better solution to me.

## Background (or why do we auto-scroll here?)

The dashboard's flag and projects panels stores your last selection,
so that when you return to the page you'll be shown what you were
looking at last. This is especially useful if you have a lot of flags
but you're focusing on one in particular.

However, if you **do** have a lot of flags, then it's also quite
likely that your selection will be "below the fold" of the panel, and
you won't see your selected flag/project immediately in the
list (without scrolling).

It seemed like a nice UI affordance to automatically bring your
selected item into view (especially because without it, there's no way
to see what flag/project) you're looking at, so I added the

[`scrollIntoView`](https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView)
hook.

What I didn't realize, however, is that it scrolls all scrollable
ancestor containers, which means that if your screen is too short,
it'll scroll you down the page.

From my reading of the docs and some local testing, I don't think
there is a way to limit the scrolling to only the nearest ancestor, so
the easiest way to ensure that we're always at the top seemed to be to
just scroll to the immediately after.
2025-02-17 12:07:35 +01:00
Mateusz Kwasniewski
b207606800
fix: delete project segment with change request (#9315) 2025-02-17 10:41:56 +01:00
Thomas Heartman
aafacc68cf
feat: new flag header (#9302)
Initial spike to add the new design for the flag page header
2025-02-14 14:33:35 +01:00
Tymoteusz Czech
b5bd5ee3f2
refactor: MuiTab font sizes (#9296)
I didn't find where this style is taken into account, but I don't like
leaving `1rem` when everything else is scaled down to 15px
2025-02-12 15:13:22 +01:00
Thomas Heartman
243088fdca
fix: Add strategy and more strategies button are different heights (#9300)
Fixes the height discrepancy between add strategy and more strategies
buttons, both with and without the flag enabled.

The essence of the fix is to make the "more strategies" button's height
dynamic and grow to match the height of the other button.



Before (flag enabled):

![image](https://github.com/user-attachments/assets/4dda44b3-3add-40cd-93ed-48150e73ac35)

After (flag enabled):

![image](https://github.com/user-attachments/assets/2788f141-fe64-4733-9202-f9f115396001)


Before (flag disabled):

![image](https://github.com/user-attachments/assets/c3a9d396-cb30-4a61-9400-45458189d3f2)

After (flag disabled):

![image](https://github.com/user-attachments/assets/0570ff85-401a-4e6f-93e7-d1619a4cd848)

As a bonus: also enables the ui font redesign flag for server-dev.

If you're very sharp-eyed, you might notice a few things:

1. There's more padding on the new button. This was done in concert with
UX when we noticed there was more padding on other buttons. So as a
result, we set the button type to the default instead of "small".

1. The kebab button isn't perfectly square with the flag on. There's a
few issues here, but essentially: to use `aspect-ratio: 1`, you need
either a height or a width set. Because we want everything here to be
auto-generated (use the button's intrinsic height), I couldn't make it
work. In the end, I think this is close enough. If you have other ideas,
you're very welcome to try and fix it.
2025-02-12 13:54:06 +01:00
Thomas Heartman
5c23a52119
fix: add some missing button labels on the project page (#9299)
Adds aria-labels to the env visibility toggle button and the "copy
env" button.
2025-02-12 09:39:03 +01:00
Thomas Heartman
f4e87389f1
fix: make the chip in the playground project selector small (#9298)
This makes it the same size as the env selector, fixing a slight
visual misalignment.

Doing a reference check, I can't find any other uses of this selector,
so I'm making the changes directly.

Before:

![image](https://github.com/user-attachments/assets/a9847dc7-8237-46bd-8d5b-7149a5682a59)

After:

![image](https://github.com/user-attachments/assets/a78d71ed-3391-4f72-9c8f-64f926a821cf)
2025-02-12 09:38:49 +01:00
Tymoteusz Czech
b035299a18
fix: command bar spacing (#9288) 2025-02-11 16:17:24 +01:00
Mateusz Kwasniewski
54766fd4a0
feat: connection count usage (#9294) 2025-02-11 16:15:45 +01:00
Thomas Heartman
abb0450a6a
fix: Use the right theme even if the payload is a variant. (#9292)
Also, use extra css selectors to increase specificity so that this
takes precedence over the MUI themes.

I don't like that we need to do this weird selector thing, but hey, it
is what it is.
2025-02-11 13:28:36 +00:00
Tymoteusz Czech
cac38b0cee
fix: font size flag change to boolean (#9290)
## About the changes
Fix for `uiGlobalFontSize` flag being returned as an object, which is truthy.
2025-02-11 13:24:18 +01:00
Thomas Heartman
63dbd40a2e
chore: add button styles to dark mode too (#9285)
This adds the same button stylings to the dark theme as we did to the
light theme in #9275.
2025-02-11 11:17:05 +01:00
Thomas Heartman
43a5d59225
fix: add legacy button styles (#9283)
Adds the button styles that were removed from `app.css` into the
legacy theme file. These change very slightly when the flag is on, and
because the hardcoded `app.css` styles have been removed, we'll use
the legacy file as fallback.
2025-02-11 09:32:26 +00:00
Thomas Heartman
65bec89d3c
chore(1-3356): make mui buttons respect font size changes (#9275)
Makes the MUI buttons use `body1.fontSize` for their own font size.

Turns out we had a hardcoded `16px` in the `app.css` file, which made it
hard to override. This change removes mui button styling in `app.css`
and puts it into the `theme.ts` file instead.

Also updates the border radius to match the one we use in the theme
(from 3px to 4px). It's a subtle change:

before:

![image](https://github.com/user-attachments/assets/a6f94250-9b4b-43e0-aa65-280f3fa007bb)


after:

![image](https://github.com/user-attachments/assets/3ef205c8-8119-4bf1-9541-39371b26dda9)
2025-02-11 08:33:27 +00:00
Thomas Heartman
fd1ad5ac5b
fix: some accessibility issues (#9282)
Fixes a small number of accessibility issues that Firefox was
complaining about (and some that I noticed myself):

1. In `CommandBar.tsx`, use a `Label` element instead of aria-label. We
can hide it with the `ScreenReaderOnly` component.
2. Add an `aria-label` to the icon button in the sidebar. (side note:
should we do any fancy detection on whether it's cmd + b or ctrl+b
there? I think we do that in the command bar)
3. Update the playground guidance popper;
  i. Add an aria-label to the icon button
ii. Make the popper a `Popover` instead. This fixes a few issues: It
wasn't possible to focus or close just using the keyboard before.
Because it didn't steal focus, it also meant that it'd cover other parts
of the page. Now it traps focus so you can navigate to the close button,
and escape will also close it for you.
iii. Remove aria-describedby. Using aria-describedby on the button would
mean that the **button** is described by its content, which seems wrong.
aria-describedby should also only be used for plain strings. Complex
markups isn't supported. For that aria-details is the right way to go.
But because the popover is only rendered when it's open, the details or
describedby link will point to nothing most of the time.
iv. In doing this, there is a slight change in the popover shadow (I
couldn't find onef of our shadows that did the same thing as before),
but it matches other popovers we have, such as on the data usage tab.

Before:

![image](https://github.com/user-attachments/assets/8c2a3471-949f-4c01-b467-cde06c8980b5)

After:

![image](https://github.com/user-attachments/assets/980114c6-6552-4e75-8a6c-281b97a8af03)
2025-02-11 09:16:20 +01:00
Tymoteusz Czech
23e8040cd9
refactor: theme - font size (#9273) 2025-02-11 09:07:27 +01:00
Thomas Heartman
c3cef5be18
fix: don't check license in OSS (#9277)
The license check API call was giving me 404s in the console of the
OSS version of Unleash.

This changes the `useLicense` hook to use `useEnterpriseSWR` instead
of `useSWR` to avoid making the API call in the OSS version. This is
consistent with the `useLicenseCheck` hook in the same file.
2025-02-10 15:16:34 +01:00
Thomas Heartman
c4fa86b1aa
chore: make playground code editor height dynamic (#9271)
The playground code editor had a fixed height of `150px`. This works
well with the current font size, but if we're changing it, we'll end
up with too much height compared to the font size.

So instead, let's calculate the font size based on the current font
size.

Before this change (if you shrink font size):

![image](https://github.com/user-attachments/assets/cd6a5cc7-c5dc-421e-a34b-456cb1c318c7)

After this change:
 

![image](https://github.com/user-attachments/assets/b38cbc3d-7687-485f-8c36-244636b56f46)


It still looks the same with the old font size:

![image](https://github.com/user-attachments/assets/54cb69b3-4039-4422-9034-594aebc5a523)


Furthermore, this change uses `minHeight` instead of `height`, so that
if you have more JSON data, then you won't be stuck scrolling through 6
and 6 lines.

Before with lots of json:

![image](https://github.com/user-attachments/assets/8234fcd6-342c-44e7-a900-9893905c6191)


After with lots of json:

![image](https://github.com/user-attachments/assets/d77ee654-dfa5-4932-b0ed-0e6a39ca0b96)


And yes, the button doesn't respect the font size, but that's a
different task.
2025-02-10 12:36:16 +00:00
Nuno Góis
3bc72c84e0
chore: make truncator a span (#9272)
https://linear.app/unleash/issue/2-3255/make-truncator-a-span-instead-of-a-box

Makes the Truncator a `span` instead of a `Box`.

This should make it more flexible and help us avoid DOM nesting errors.
2025-02-10 12:29:58 +00:00
Simon Hornby
bf9fdd4f8d
feat: allow SCIM user deletion (#9190)
Co-authored-by: Gastón Fournier <gaston@getunleash.io>
2025-02-10 14:17:46 +02:00
Thomas Heartman
cdeb515488
chore: removes extra border on collapse for the event timeline (#9270)
Fixes a small visual glitch where the event timeline panel (which
usually doesn't have a bottom border on the summary) would get a
bottom border during the collapsing animation.

This happens because to make the border act as we want, we switch
between using the summary's bottom border and the content's top
border, and I'd only updated one of the borders to respect the new
design.
2025-02-10 10:52:32 +01:00
Thomas Heartman
2b668bc5c8
fix: open/close animation on personal dashboard is choppy (#9253)
Extracts each panel into its own component for the personal dashboard.
This lets us use separate states for each panel, which in turn lets each
panel change its open / close state without causing the other panels to
re-render.

When you have a lot of flags and/or projects, the list to render becomes
very long, which causes performance problems, especially when you need
to rerender both flags and projects and the timeline whenever one of
them changes.

The problems were especially noticeable in Firefox for me. Even with
this, the event timeline is a little choppy. I suspect that's because of
it might take a long time to paint? But we can look into that later.

Also updates the dashboard state hook to let you only pass in the
flags/projects you want. We could extract this into three different
hooks that all use the same localhost key, but I'm not sure whether
that's better or worse 🤷🏼
2025-02-10 10:40:26 +01:00
Nuno Góis
c07fb589a7
chore: add release management to new in unleash (#9257)
https://linear.app/unleash/issue/2-3244/add-release-management-to-new-in-unleash

Adds release management to "New in Unleash".


![image](https://github.com/user-attachments/assets/5bbfc502-f730-4cd4-bf5e-747f1fe9e773)
2025-02-07 14:33:25 +00:00
Nuno Góis
13ac0567c5
chore: make the milestone status a button (#9255)
https://linear.app/unleash/issue/2-3251/make-the-milestone-status-action-link-and-icon-a-proper-button-that

Makes the milestone status a button while trying to keep most of the
original design intact.


![image](https://github.com/user-attachments/assets/677cb9df-8ae2-4244-8d07-6cd2bd1da5fe)
2025-02-07 14:03:59 +00:00
Thomas Heartman
c02c5a4d47
fix(1-3296): don't navigate through the list on tab (#9259)
Prevents tab from navigating you through the list of results. Instead
makes it so that the tab key always takes you to the next item in the
same hierarchy.

As a bonus: also automatically closes the menu when you navigate
away (the previous implementation has a bug where it wouldn't if you
shift-tab).

The behavior of not letting you navigate the list with tab is
consistent with native HTML select elements as well as MUI select
elements. You typically navigate them with the arrow keys.
2025-02-07 14:58:05 +01:00
Thomas Heartman
4f30ce7155
chore(1-3349): no border for event timeline / dropdowns to the right (#9252)
Removes the border between the accordion summary and its contents for
the event timeline, and moves dropdown selectors to the right to avoid
overcrowding on the left.


![image](https://github.com/user-attachments/assets/b0df4c11-8e61-46f8-b844-349a709bd4e9)
2025-02-07 11:11:54 +01:00
Thomas Heartman
f9bd9d2d03
Adds a more visible focus indicator to the filter chips (#9251)
When the filter chip is focused, adds a 1px solid outline in the theme's
primary color. This makes it easier to tell when the chip has focused.

Additionally, adds a slight refactor in how we call the event log result
component. I'm pretty sure I've seen react docs say that you should
always use the component calling instead of a regular function call, so
this does that.

Before (the first chip has focus; can you tell?):

![image](https://github.com/user-attachments/assets/8fb4382c-9a38-4d77-acc2-35ae9fed1180)

After:

![image](https://github.com/user-attachments/assets/7f6969c3-059f-4c0f-bbfc-9a295adf4070)


Optionally, we could do something similar to on hover (first one has
focus again), but it's kinda subtle and .. I don't think it's a theme
color we have defined:

![image](https://github.com/user-attachments/assets/3fc10d34-858f-4007-9a80-06c4df2fc756)
2025-02-07 10:22:08 +01:00
Tymoteusz Czech
4e36d2285e
chore: remove sortProjectRoles flag (#9226) 2025-02-06 19:40:10 +01:00
Nuno Góis
21fb9a3118
chore: release management plausible events (#9230)
https://linear.app/unleash/issue/2-2834/plausible

Adds the following Plausible events to the Release management feature:
 - Add plan
 - Start milestone
 - Remove plan
 - Create template
 - Edit template
 - Delete template
2025-02-06 16:09:15 +00:00
David Leek
e689e2e3d2
feat: implement dialogs for changerequest milestone handling and removing release plans (#9240) 2025-02-06 16:45:24 +01:00
Thomas Heartman
61f8236711
chore: changes the panel title to "Event timeline" (#9245)
Keeps it consistent with the previous title for this component and
with what it's known as in the docs.
2025-02-06 15:30:27 +01:00
Thomas Heartman
56c9584bb6
feat: move timeline to panel (#9243)
Moves the event timeline to the personal dashboard from the header when
the `frontendHeaderRedesign` flag is active.

When the flag is active, it also:
- hides the event timeline and corresponding button in the header
- renders the environment selector next to the time selector instead of
at the other end of the header


![image](https://github.com/user-attachments/assets/cccd8f07-d42a-4180-807f-20937019442d)

---------

Co-authored-by: Nuno Góis <github@nunogois.com>
2025-02-06 13:55:59 +00:00
Tymoteusz Czech
54e4fd2190
chore: remove lifecycle v2 flag (#9224) 2025-02-06 14:54:45 +01:00
Nuno Góis
4871cd57d1
chore: mark release management as an enterprise feature (#9229)
https://linear.app/unleash/issue/2-3093/sales-pitch-ui-for-release-management-to-show-non-enterprise-users

Marks Release Management as a premium Enterprise feature.

Once the `releasePlans` flag is enabled for everyone / removed, this is
what non-Enterprise users will see:


![image](https://github.com/user-attachments/assets/7191fb09-976e-4e14-8e2f-6db114b5e2ca)
2025-02-06 09:59:38 +00:00
Thomas Heartman
2ff385a4b6
fix(1-3295): fix broken skip link (#9239)
Fixes the issue where the skip link wouldn't take you to the main
content of the page anymore.

Also includes a few related minor semantic and a11y improvements:

1. The `main` element now only surrounds the actual main content of the
page. The sidebar is nav content and shouldn't be within it. The easiest
way to do this was to change the element that was previously a `main` to
a `div` and make the main content wrapper a `main` instead.
2. Makes the skip link target visible when focused. But invisible
otherwise. This has two benefits:
1. It's immediately obvious that using the skip link has worked. It
tells you that it's at the start of the main content.
2. Because the link now has text, it can be targeted by link search
(e.g. in Firefox, press `'` to search for links (I use this **a lot**)),
making it super easy to move your focus to the main content directly.
(Yes, landmark navigation should also work here, though, especially with
the `main` change).

The implementation of UI considerations of the skip link are based on
the CSS-tricks article [a deep dive on skipping to
content](https://css-tricks.com/a-deep-dive-on-skipping-to-content/)
from 2021.

Here's what it looks like when you skip to content:

![image](https://github.com/user-attachments/assets/c22819e6-f801-47d8-a9d9-908c250fd6ba)


When it doesn't have focus, it's invisible.
2025-02-06 10:21:56 +01:00
Nuno Góis
9fa7f5aa7b
chore: release plan changes in change request view (#9225)
https://linear.app/unleash/issue/2-3169/add-release-plan-ui-representation-in-change-request-ui

Adds visual representations for release plan change requests.

### Add release plan


![image](https://github.com/user-attachments/assets/8511c6a3-c83e-4eee-aa18-9affe4a9ac1d)

### Remove release plan


![image](https://github.com/user-attachments/assets/ed13f9ac-140c-40c9-a1a2-3c066c89c09a)

### Start milestone


![image](https://github.com/user-attachments/assets/ac8e5408-e877-470c-a98b-295b41444bfa)


![image](https://github.com/user-attachments/assets/abf19a55-89df-4dd8-8738-9dfcd63949b7)
2025-02-05 15:27:36 +00:00
Thomas Heartman
90e5adb695
chore: use union type for traffic search data (#9221)
Makes the data returned from the traffic search a union type to avoid
nasty object-is-undefined errors at runtime.

It requires more explicit handling, sure, but it means we don't need
to accept undefined.
2025-02-05 10:50:39 +00:00
Thomas Heartman
17a4099dbf
refactor: add functions to estimate monthly usage from data directly (#9219)
Adds new monthly estimation functions that operate on raw usage data
instead of chart data. This brings those methods in line with the rest
of the traffic calculation functions that we have in that file and means
we can remove other external dependencies.

 This is somewhat inspired by #9218, but not directly linked.
2025-02-05 11:12:17 +01:00
Thomas Heartman
543be6dede
chore(1-3342): extract into hook, use new endpoint if flag on (#9218)
Updates the existing BillingDetails pages (pro and payg) to use the new
traffic search endpoint (and calculations) if the flag to do so is on.
Otherwise, it falls back to using the existing method.

I've extracted the overage calculation into a separate shared hook.
2025-02-05 10:45:41 +01:00
Thomas Heartman
bd6a90ffd4
chore: add tests for new traffic usage functions (#9208)
This PR adds tests to all the TODOs created in
https://github.com/Unleash/unleash/pull/9191.

Additionally it finally manages to refactor the `toChartData` function.
2025-02-05 09:47:36 +01:00
Gastón Fournier
a4a5687687
feat: render markdown in toats (#9207)
## About the changes
Toasts sometimes render messages that are in markdown format. This
changes how we display them from

![image](https://github.com/user-attachments/assets/61930d1d-b54c-49a0-b982-af1484cd2981)
to this:
![Screenshot from 2025-02-04
15-23-36](https://github.com/user-attachments/assets/a569345c-abf5-4d9d-9cf6-4c94701689c7)
2025-02-04 16:35:25 +01:00
Gastón Fournier
ae65919f92
fix: license banner using message type (#9209)
## About the changes
Actually uses messageType and maps from warn to warning.
2025-02-04 15:14:47 +00:00
Thomas Heartman
c85c687816
chore(1-3335): filters data coming from the API to remove data points we're not interested in (#9205)
Implements a function that cleans and filters incoming data from the
new traffic API.

Specifically, it:
- Removes `/edge` data points
- Removes any data from before may 2024, which is the first full month
we have on record

Because all uses of the existing hook do this filtering themselves, I
have added the filtering at the hook level. This is to avoid
forgetting this filtering later. If we find out we need this data, we
can move the filtering.
2025-02-04 13:26:08 +01:00
Thomas Heartman
96dac84880
refactor: period selector component (#9202)
Refactors the period selector component now that the design / system is
pretty much finished.

Main points are: change from using CSS selectors to using styled
components; use props instead of classes. This is in keeping with the
general Unleash approach.

There's two very slight visual changes here:
1. There is 4px of added space below the "range" "header" text.
2. The months in the grid are a little closer together and not as wide.
This is because we remove the explicit column gap due to the grid having
a set width. Previously the width was automatic, but because we want
this to line up with the button, we need to set the width explicitly on
both items. As such, with the padding, the grid was a little too wide,
so there was too little padding on the right. This rectifies that.
2025-02-04 11:37:58 +01:00
Thomas Heartman
2980c0de4e
refactor(1-3336): useTrafficData / NetworkTrafficUsage.tsx cleanup (#9191)
This PR refactors the `NetworkTrafficUsage.tsx` and `useTrafficData`
files a bit.

The primary objective was to make the network traffic usage component
easier to work with, so I suggest to the reviewer that they start there.

Part of that refactoring, was taking things out of the useTraffic hook
that didn't need to be there. In the end, I'd removed so much that I
didn't even need the hook itself in the new component, so I switched
that to a regular useState.

It made more sense to me to put some of the functions inside the hook
into a separate file and import them directly (because they don't rely
on any hook state), so I have done that and removed those functions from
the trafficData hook. In this case, I also moved the tests.

I have not added any new tests in this PR, but will do so in a
follow-up. The functions I intend to test have been marked as such.
2025-02-04 10:32:59 +01:00
Tymoteusz Czech
c1e41b2b05
fix: users groups table columns on small screens (#9194)
On page "edit users for group", prevent user names and avatars form
disappearing on devices with small screen.
2025-02-04 10:19:40 +01:00
Mateusz Kwasniewski
c68a542a63
refactor: project users virtual autocomplete (#9196) 2025-02-04 10:04:36 +01:00
Melinda Fekete
ef8191c68d
Update API tokens and client keys pages (#9143) 2025-02-04 09:32:32 +01:00
Mateusz Kwasniewski
c86ea091b7
feat: virtual autocomplete (#9181) 2025-02-03 16:07:24 +01:00
Gastón Fournier
b9aa554b0d
feat: ability to communicate other license messages (#9192)
## About the changes
This gives us the ability to communicate other license messages which
are not errors. By default they'll be warning but I'm opening the
possibility of using a backend-provided value to make them informative
instead of warning.

The intention is to communicate things like:
- Your license is about to expire in x days.
- You are getting close to the maximum number of seats in your license
- etc
2025-02-03 15:17:06 +01:00
Thomas Heartman
fd1ad31bb5
fix: make traffic usage test more robust by using this month's actual numbers (#9193)
The test was breaking because it assumed a month would have at least
30 days.

Because the test relies on the current month, this isn't necessarily
true.

Further, there's parts of the code that relies on "impure" state via
the "current date" (which will change based on when you run it), so
setting a specific month in the test won't work.

As such, this test makes the calculation explicit and uses the number
of days in the current month.
2025-02-03 13:29:07 +00:00
Thomas Heartman
bd12cfce7c
fix(1-3334): re-align the dropdown menu with the dropdown (#9188)
Makes it so that the dropdown menu sits below the dropdown button,
rather than being offset to the end of the containing flexbox.

The issue was caused by the surrounding container being a flexbox.
This caused the popover anchor to grow to the full height of the box,
making the menu look offset.

By using `align-items: start`, we get around this.

Before

![image](https://github.com/user-attachments/assets/0f044627-05a3-4225-9a25-b20393c40158)


After:

![image](https://github.com/user-attachments/assets/9a6d1d7f-7f18-48d3-abdf-f4bb7c02ba68)
2025-02-03 11:00:15 +01:00
Thomas Heartman
e72a7c1197
chore(1-3316): update request info boxes to new design (#9180)
Updates the existing number of requests and overage info boxes to the
new design.

The existing versions of the boxes had some issues on narrower screens,
so it was easier to just leave them as is and start from scratch.

The previous boxes on narrow screens:

![image](https://github.com/user-attachments/assets/f3efa00d-ac0d-41ed-82d8-11766e043cb5)


The current ones (from wide to narrower):
Wide

![image](https://github.com/user-attachments/assets/0a48c013-afcd-4652-9229-0fca19a83733)

Mid (the text should probably ideally wrap at the same time here, but
I'm not sure how at the moment)

![image](https://github.com/user-attachments/assets/2ea3a672-80a6-4445-ae90-736c91c6e88e)

Narrow

![image](https://github.com/user-attachments/assets/03e3de0e-23c1-436a-8f6c-4c78cd4fdae7)

Extra narrow:

![image](https://github.com/user-attachments/assets/652c0c3b-71b1-4b2e-9e86-217f0c827aa6)



There's still some work we **could** do, but we should have UX have a
look first. In particular, it's about how the text wraps in certain
places etc, but I think it's good enough for now.

I'll come back with tests for the calculations and some refactoring and
cleanup in a followup.
2025-01-31 14:05:36 +01:00
Nuno Góis
25e8f80f21
chore: drag to reorder release plan template milestones (#9176)
https://linear.app/unleash/issue/2-2821/drag-to-reorder-template-milestones

This PR introduces reordering release plan template milestones by
dragging and dropping them.

Was a bit undecided on the approach, but it seems like using an old
`useDragItem` hook we have is pretty elegant and behaves as expected.

I suggest reviewers try it out themselves.

Includes a slight refactor to `useDragItem`, which so far is only used
here and in environments. I manually tested, but I suggest trying that
one out as well just in case.


![image](https://github.com/user-attachments/assets/3e433f70-53f8-4860-a704-60361f3b0ed7)
2025-01-31 09:12:27 +00:00
Mateusz Kwasniewski
ec014c0fdf
feat: limit user filter options (#9179) 2025-01-31 10:09:29 +01:00
David Leek
b04079c82d
feat: send the add release plan change request from dialog when submitted (#9174) 2025-01-30 10:56:31 +01:00
Nuno Góis
91d318a495
chore: add hint to release plan template gradual rollout strategy groupId (#9171)
https://linear.app/unleash/issue/2-3101/ui-hint-for-gradual-rollout-groupid-magic-string-featurename

Explains the current release plan milestone gradual rollout strategy
groupId behavior with an HelpIcon and a tooltip next to the field, when
creating or editing a release plan template.


![image](https://github.com/user-attachments/assets/46f3d943-d9cf-4670-b05b-322c14401a19)
2025-01-29 15:39:02 +00:00
Thomas Heartman
08c016b755
chore: minor button style adjustments (#9170)
Make it look more like a dropdown
2025-01-29 15:43:10 +01:00
Thomas Heartman
f4556839c8
feat(1-3281): wraps the new datepicker in a dropdown (#9169)
Wraps the datepicker in a popover, making it function largely the same
as a dropdown list.

The dropdown displays one of:
- "current month" if you've selected the current month
- "<month> <year>" (e.g. "December 2024") if you've selected a month
that isn't the current month
- "Last n months" (e.g. "Last 3 months") if you have selected a range

Additionally, the range selections have been updated to span the whole
row, aligning with the look of generic dropdown lists.


![image](https://github.com/user-attachments/assets/d356aec5-d51b-42fa-9591-60e2b5038a8e)

Like with the rest of this file (`PeriodSelector`), the code is rough
and not according to Unleash standards. However, I'm prioritizing fast
changes so UX can have a look before I clean up the code to switch to
using styled components etc later. It's still behind a flag, so I'm not
very worried about it.
2025-01-29 15:29:30 +01:00
Thomas Heartman
7ca8cc2276
fix: dynamic highlight width (#9166)
This makes the width of the highlight bars in the network dynamic and
based on the number of labels included in the chart.

Since the number of labels should always correspond to the number of
data points, this seems like a sensible approach.

With this, the label width will now be calculated on the fly, so even if
you resize the window or change the number of labels, the highlighting
will still work as expected.

Daily view:

![image](https://github.com/user-attachments/assets/e1d158db-0587-46b3-afb1-76dfc523505d)

Monthly aggregate:

![image](https://github.com/user-attachments/assets/8c74d2a3-afc8-4623-8ac7-0c263c7e6037)

The labels are now a little narrower on the daily graphs, but it avoids
them being super wide on the monthly graphs
2025-01-29 12:03:31 +01:00
Thomas Heartman
87a84426ec
feat(1-3267): use new API for chart creation (#9149)
Adds support for the new /traffic-search API behind a flag. When active, you'll be able to select month ranges as well as specific single months.

Largely copies the existing network traffic component, and adds some minor tweaks to make it work with the new data.

This is quite rough, but it gives us a base to build on for later. There's still things that we need to solve for in following PRs.
2025-01-29 10:43:41 +01:00
Thomas Heartman
d0fa929847
chore(1-3267): add orval schemas for the new API endpoint (#9164)
Adds Orval schemas for the new API enpdoint to display monthly/daily
traffic data usage.
2025-01-29 09:11:29 +01:00
Fredrik Strand Oseberg
18857c8992
fix: commandbar colors (#9162)
Searchbar should be white when the new header is active.
2025-01-28 14:48:15 +01:00
Fredrik Strand Oseberg
1fba4e10d1
fix: tabs not growing to fill all available space (#9161)
Fix an issue where tabs would fill out all available space, now it's
left aligned.
2025-01-28 14:17:02 +01:00
Fredrik Strand Oseberg
378bbe5133
feat: configurable global font size (#9155)
This PR sets up the application to accept a value from a variant we
control to set the font size of the application on a global level. If it
fails, the value falls back to the previously set CSS value.
2025-01-27 14:43:32 +01:00
David Leek
7aefc573dc
feat: show a dialog when adding a release plan to a change request enabled feature environment (#9139) 2025-01-23 13:48:44 +01:00
David Leek
09872ae760
chore: create the releasePlanChangeRequests feature flag (#9126) 2025-01-21 14:26:22 +01:00
Thomas Heartman
e4eab4587c
fix: add a hover color for buttons in the period selectors. (#9125)
Adds the same hover color as for the sidebar. Also adds a transition
animation.
2025-01-21 13:23:07 +01:00
Thomas Heartman
5846952d7c
fix: specify colors for buttons (#9124)
Fixes an issue where the buttons would be illegible in dark mode
because we don't set the color explicitly. It just happened to work in
light mode.
2025-01-21 12:51:20 +01:00
Thomas Heartman
857c91b803
feat(1-3262): initial impl of new month/range picker (#9122)
This PR implements a first version of the new month/range picker for the
data usage graphs. It's minimally hooked up to the existing
functionality to not take anything away.

This primary purpose of this PR is to get the design and interaction out
on sandbox so that UX can have a look and we can make adjustments.

As such, there are a few things in the code that we'll want to clean up
before removing the flag later:
- for faster iteration, I've used a lot of CSS nesting and element
selectors. this isn't usually how we do it here, so we'll probably want
to extract into styled components later
- there is a temporary override of the value in the period selector so
that you can select ranges. It won't affect the chart state, but it
affects the selector state. Again, this lets you see how it acts and
works.
- I've added a `NewHeader` component because the existing setup smushed
the selector (it's a MUI grid setup, which isn't very flexible). I don't
know what we want to do with this in the end, but the existing chart
*does* have some problems when you resize your window, at least
(although this is likely due to the chart, and can be solved in the same
way that we did for the personal dashboards).


![image](https://github.com/user-attachments/assets/f3ce3ff9-bab3-4d00-afbe-56f5624fbe16)
2025-01-21 12:15:43 +01:00
Tymoteusz Czech
08a28c99d6
fix: align project roles checkboxes (#9123)
Fix checkbox alignment and grouping
2025-01-21 10:34:20 +00:00
Tymoteusz Czech
874aeacca1
fix: resolve lifecycle image from asset path (#9121) 2025-01-20 13:23:55 +00:00
Tymoteusz Czech
666b5b7000
feat: New in Unleash - Lifecycle 2.0 (#9112) 2025-01-20 11:50:44 +00:00
Thomas Heartman
f6479b1adb
chore(1-3267): use the user's locale settings for formatting the tooltip date (#9113)
This PR updates the tooltip date display in the traffic usage chart to
use the user's chosen locale settings, falling back to en-US if the
settings are unavailable or otherwise unset.

So, for instance, if I have set my locale to "ja-JP", I'd get this
instead of the en US format:

![image](https://github.com/user-attachments/assets/4c1dbeab-3275-405d-ab8b-90f24531caff)
2025-01-17 11:56:40 +01:00
David Leek
2d340f6a21
chore: fix traffic data timezone visualization issue with getUTCDate (#9110) 2025-01-17 09:59:15 +01:00
Fredrik Strand Oseberg
25c09c3627
feat: transparent header (#9108)
This PR adds header redesign behind a feature flag
2025-01-17 09:45:45 +01:00
Tymoteusz Czech
4b3b98f263
feat: update lifecycle tooltip style (#9107)
New tooltips for lifecycle indicators.
- removed "timeline" lifecycle explanation
- new descriptions
- changed tooltip footer colors
- refactored "environments" section
2025-01-16 15:53:03 +00:00
Tymoteusz Czech
50ab2c9d61
feat: rename lifecycle stages (#9102)
Name names for "lifecycle" stages, and aligning frontend types.
2025-01-16 08:41:11 +00:00
David Leek
846dae66bd
chore: fix release template strategy padding and spacing (#9104) 2025-01-16 09:13:22 +01:00
David Leek
d20af9e5de
chore: make remove release plan warning conditional on env. enabled (#9103) 2025-01-15 15:29:49 +01:00
David Leek
c98d0e71a3
feat: conditionally show groupId in StrategyExecution under rollout (#9101) 2025-01-15 12:56:19 +01:00
Tymoteusz Czech
a2b78df0ad
feat: new lifecycle icons (#9098)
- Feature flag added
- New assets
2025-01-15 08:53:07 +01:00
David Leek
87917da4df
chore: feature release plans other strategies indicator (#9097) 2025-01-14 15:07:03 +01:00
Nuno Góis
3eeab7e80b
chore: new release plan template card (#9096)
https://linear.app/unleash/issue/2-3125/improve-release-plan-template-cards

Improves the release plan template cards.

This PR introduces a new reusable `Card` component to help us render
cards with the new design. The GroupCard is also adapted to use this new
`Card` component in this PR, since that was the latest one to be
upgraded, however other items like projects and integrations are not. We
can migrate them to this new component at a later stage in separate PRs.

### Before


![image](https://github.com/user-attachments/assets/623454c7-77e9-4672-ad5b-cb6bd7cbf7f2)

### After


![image](https://github.com/user-attachments/assets/20bff73e-80d2-41b5-8f8b-de1c76e69caf)
2025-01-14 13:49:50 +00:00
Tymoteusz Czech
b5f0d3e86a
refactor: project permissions list (#9082)
Re-organized project permissions.
2025-01-14 14:24:25 +01:00
David Leek
900df537e3
chore: move strategy UI into milestonecard and open milestone when adding strategy to it (#9095) 2025-01-14 13:02:53 +01:00
David Leek
3759b5a75d
chore: fix smaller broken UI things in release templates (#9084) 2025-01-13 13:02:06 +01:00
David Leek
cc55d8dfa8
chore: improve create template fields for name+description (#9075) 2025-01-10 14:39:17 +01:00
Tymoteusz Czech
91cebc5afc
fix: text overflow on project users access page (#8853)
Remove scrollbar in project settings - user roles
2025-01-10 09:51:42 +01:00
Nuno Góis
537ef42f7d
chore: mark SSO as an Enterprise only feature (#9071)
https://linear.app/unleash/issue/2-3124/mark-sso-as-an-enterprise-only-feature

For all intents and purposes, SSO seems to have always been an
Enterprise only feature. It just wasn't very clear previously.

See: https://github.com/Unleash/unleash/pull/9045/files#r1899635618


![image](https://github.com/user-attachments/assets/7ffed499-83d6-4dc2-ae11-6b0d930a82d1)
2025-01-09 13:07:28 +00:00
Jaanus Sellin
73515d78ce
chore: remove simplifyProjectOverview flag (#9068)
Remove the flag and delete unused components.
2025-01-08 14:10:40 +02:00
Nuno Góis
e7269473f3
chore: new hosted auth handler (#9045)
https://linear.app/unleash/issue/2-3074/add-sign-in-with-google-to-our-hosted-instances-when-only-password-is

https://linear.app/unleash/issue/2-3078/allow-viewer-access-from-auth-app-for-payg

Adds support for a new unified hosted auth handler.

This new auth handler provides a Google sign in option in case you don't
have an SSO provider configured. It also provides a way for auth-app to
sign in with Unleash's read-only user for Pro and Enterprise PAYG
instances.

Check the PR comments for more details.
2025-01-08 10:02:35 +00:00
David Leek
55f7de0d59
chore: improve the release plan template accordion looks (#9065) 2025-01-08 10:25:07 +01:00
Tymoteusz Czech
dc4a760172
feat: read logs and update cors maintenance root-role permissions (#8996)
Additional granular permissions related to instance-level access.

- CORS settings
- Reading logs (both instance logs and login history)

---------

Co-authored-by: Gastón Fournier <gaston@getunleash.io>
2025-01-08 10:03:40 +01:00
Nuno Góis
cb77b106bd
chore: make grid group cards have a consistent height (#9064)
https://linear.app/unleash/issue/2-3114/group-cards-should-have-a-consistent-height-in-their-grid

Makes the group cards height consistent in the grid.

<img width="1034" alt="image"
src="https://github.com/user-attachments/assets/27c2dbd4-4a72-419b-bbad-39a4309e5c30"
/>
2025-01-06 14:54:36 +00:00
gitar-bot[bot]
1c0431365e
[Gitar] Cleaning up stale flag: licensedUsers with value true (#9061)
[![Gitar](https://raw.githubusercontent.com/gitarcode/.github/main/assets/gitar-banner.svg)](https://gitar.ai)
This automated PR permanently enables the `licensedUsers` feature flag.
  
  ---
This automated PR was generated by [Gitar](https://gitar.ai). View
[docs](https://gitar.ai/docs).

---------

Co-authored-by: Gitar <noreply@gitar.ai>
2025-01-06 10:44:13 +02:00
Mateusz Kwasniewski
790d813455
fix: save context button spacing (#9059) 2025-01-03 15:01:46 +01:00
David Leek
4f6e581dec
chore: reorder release plan template UI files (#9057) 2025-01-03 14:38:27 +01:00
David Leek
7893d3fbd3
feat: rework frontend validation for release plan templates (#9055) 2025-01-03 13:19:15 +01:00
Nuno Góis
3c16616c36
chore: improve group projects tooltip behavior (#9054)
https://linear.app/unleash/issue/2-3111/improve-group-card-projects-tooltip

Slight improvement to the group card projects tooltip.

This handles very long project names a little bit better by allowing
them to break into new lines.


![image](https://github.com/user-attachments/assets/8f30e729-7877-463b-8e1e-d05934396827)
2025-01-03 11:10:38 +00:00
Nuno Góis
7eced2962f
chore: new user avatar tooltip (#9050)
https://linear.app/unleash/issue/2-3109/improve-avatar-tooltip

I noticed our current user avatar tooltip is a bit poor.

This PR tries to improve it a bit using only the data we already have
available, without any drastic changes.

### Before


![image](https://github.com/user-attachments/assets/2eeb87ca-791a-422d-9e8b-27537b6f38ef)

### After


![image](https://github.com/user-attachments/assets/38bc1bb1-9187-4bf8-88ec-e57f4c95a0c8)

### Other examples after the changes


![image](https://github.com/user-attachments/assets/f25172aa-24aa-4c8c-8d46-65e2b61a33b9)


![image](https://github.com/user-attachments/assets/a420cafb-e690-4495-bf7f-b7b3d3ddf311)


![image](https://github.com/user-attachments/assets/66b2efa3-269e-4384-96a5-1b089333a9d1)


![image](https://github.com/user-attachments/assets/7c56dcf0-b6f1-4433-840a-e975baec6785)

---------

Co-authored-by: Thomas Heartman <thomas@getunleash.io>
2025-01-03 10:26:02 +00:00
Nuno Góis
67c1274a1b
chore: group cards redesign (#9048)
https://linear.app/unleash/issue/2-3108/cards-design-groups

Redesigns the group cards.

Like instructed in the task, I took inspiration from the project and
integration cards, along with the Figma sketch.

Also includes a new `Truncator` generic helper component.

### Before


![image](https://github.com/user-attachments/assets/e47ebb3d-a089-4cbb-962c-53af9f1933f9)

### After


![image](https://github.com/user-attachments/assets/ffeb96b7-e6c4-4433-a847-2e267beb72e9)

Hovering over the "X projects" label reveals the projects the group
belongs to. You can navigate to any project by clicking its badge.


![image](https://github.com/user-attachments/assets/cf06c7f5-011e-4b89-8e40-ed42e5817625)

Truncated titles and descriptions show a tooltip with the full text on
hover.


![image](https://github.com/user-attachments/assets/6fc598e7-b08a-4bfa-8cb2-4153a81f2a48)


![image](https://github.com/user-attachments/assets/91ceba73-c43e-4070-9de0-2a182a3d9257)
2025-01-02 15:08:15 +00:00
Mateusz Kwasniewski
e0b4e258dc
feat: grouping of project level roles in autocomplete (#9046) 2024-12-31 10:44:48 +01:00