diff --git a/app/assets/css/theme.css b/app/assets/css/theme.css index 68e4d1a00..87be93bc0 100644 --- a/app/assets/css/theme.css +++ b/app/assets/css/theme.css @@ -87,7 +87,7 @@ --orange-1: #e86925; - --BE-only: var(--ui-warning-7); + --BE-only: var(--ui-gray-6); --text-log-viewer-color-json-grey: var(--text-log-viewer-color); --text-log-viewer-color-json-magenta: var(--text-log-viewer-color); @@ -259,8 +259,7 @@ /* Dark Theme */ [theme='dark'] { - --BE-only: var(--ui-blue-8); - --bg-BE-only: rgba(225, 223, 223, 0.08); + --BE-only: var(--ui-gray-6); --text-log-viewer-color-json-grey: var(--text-log-viewer-color); --text-log-viewer-color-json-magenta: var(--text-log-viewer-color); @@ -434,6 +433,7 @@ /* High Contrast Theme */ [theme='highcontrast'] { + --BE-only: var(--ui-gray-6); --text-log-viewer-color-json-grey: var(--text-log-viewer-color); --text-log-viewer-color-json-magenta: var(--text-log-viewer-color); --text-log-viewer-color-json-yellow: var(--text-log-viewer-color); diff --git a/app/portainer/components/BEFeatureIndicator/BEFeatureIndicator.html b/app/portainer/components/BEFeatureIndicator/BEFeatureIndicator.html index 4637e8b3f..64a23c125 100644 --- a/app/portainer/components/BEFeatureIndicator/BEFeatureIndicator.html +++ b/app/portainer/components/BEFeatureIndicator/BEFeatureIndicator.html @@ -1,5 +1,5 @@ - Business Edition Feature + Business Feature diff --git a/app/portainer/components/accessManagement/porAccessManagementController.js b/app/portainer/components/accessManagement/porAccessManagementController.js index d0ef11629..7ff973fd7 100644 --- a/app/portainer/components/accessManagement/porAccessManagementController.js +++ b/app/portainer/components/accessManagement/porAccessManagementController.js @@ -76,7 +76,7 @@ class PorAccessManagementController { } if (this.isRoleLimitedToBE(role)) { - return `${role.Name} (Business Edition Feature)`; + return `${role.Name} (Business Feature)`; } return `${role.Name} (Default)`; diff --git a/app/portainer/oauth/components/oauth-settings/oauth-settings.html b/app/portainer/oauth/components/oauth-settings/oauth-settings.html index b849bd75d..eecf02720 100644 --- a/app/portainer/oauth/components/oauth-settings/oauth-settings.html +++ b/app/portainer/oauth/components/oauth-settings/oauth-settings.html @@ -169,68 +169,46 @@ -
OAuth Configuration
- -
- -
- -
-
+
+
OAuth Configuration
-
- -
- +
+ +
+ +
-
-
- -
- +
+ +
+ +
-
-
+
-
-
- - - Override default configuration - - - - Use default configuration - +
+ +
+
OAuth Configuration
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ + +
- diff --git a/app/portainer/react/components/index.ts b/app/portainer/react/components/index.ts index 45644ebce..1dd88a733 100644 --- a/app/portainer/react/components/index.ts +++ b/app/portainer/react/components/index.ts @@ -71,7 +71,6 @@ export const ngModule = angular 'message', 'buttonText', 'className', - 'icon', 'buttonClassName', ]) ) @@ -82,7 +81,7 @@ export const ngModule = angular .component( 'portainerTooltip', - r2a(Tooltip, ['message', 'position', 'className', 'setHtmlMessage']) + r2a(Tooltip, ['message', 'position', 'className', 'setHtmlMessage', 'size']) ) .component('badge', r2a(Badge, ['type', 'className'])) .component('fileUploadField', fileUploadField) diff --git a/app/portainer/settings/authentication/ldap/ad-settings/ad-settings.html b/app/portainer/settings/authentication/ldap/ad-settings/ad-settings.html index 742b264b0..e3b6150a7 100644 --- a/app/portainer/settings/authentication/ldap/ad-settings/ad-settings.html +++ b/app/portainer/settings/authentication/ldap/ad-settings/ad-settings.html @@ -1,9 +1,6 @@ -
- +
+
diff --git a/app/portainer/settings/authentication/ldap/ldap-custom-admin-group/ldap-custom-admin-group.html b/app/portainer/settings/authentication/ldap/ldap-custom-admin-group/ldap-custom-admin-group.html index 7a32b3723..0963f6504 100644 --- a/app/portainer/settings/authentication/ldap/ldap-custom-admin-group/ldap-custom-admin-group.html +++ b/app/portainer/settings/authentication/ldap/ldap-custom-admin-group/ldap-custom-admin-group.html @@ -2,73 +2,71 @@ Auto-populate team admins
- - -
- Extra search configuration -
+
+
+ Extra search configuration +
-
- -
- -
+
+ +
+ +
- -
- -
+ +
+
-
- -
- - -
+
+
+ +
+ +
- - +
+
diff --git a/app/portainer/settings/authentication/ldap/ldap-group-search-item/ldap-group-search-item.html b/app/portainer/settings/authentication/ldap/ldap-group-search-item/ldap-group-search-item.html index 601149366..86a28abeb 100644 --- a/app/portainer/settings/authentication/ldap/ldap-group-search-item/ldap-group-search-item.html +++ b/app/portainer/settings/authentication/ldap/ldap-group-search-item/ldap-group-search-item.html @@ -1,88 +1,78 @@ - - -
- Extra search configuration - -
+
+
+ Extra search configuration + +
- + -
- -
- {{ $ctrl.config.GroupBaseDN }} -
+
+ +
+ {{ $ctrl.config.GroupBaseDN }}
+
-
-
- - - - add another group - -
-
- - -
-
- -
-
- -
-
- -
-
-
-
+
+
+ + + + add another group + +
+
+
+
+
+ +
+
+ +
+
+ +
+
+
-
- -
- {{ $ctrl.config.GroupFilter }} -
+
+ +
+ {{ $ctrl.config.GroupFilter }}
- - +
+
diff --git a/app/portainer/settings/authentication/ldap/ldap-settings-openldap/ldap-settings-openldap.html b/app/portainer/settings/authentication/ldap/ldap-settings-openldap/ldap-settings-openldap.html index 201a50aac..b075cfd2b 100644 --- a/app/portainer/settings/authentication/ldap/ldap-settings-openldap/ldap-settings-openldap.html +++ b/app/portainer/settings/authentication/ldap/ldap-settings-openldap/ldap-settings-openldap.html @@ -1,9 +1,6 @@ -
- +
+
Information
diff --git a/app/portainer/settings/authentication/ldap/ldap-user-search-item/ldap-user-search-item.html b/app/portainer/settings/authentication/ldap/ldap-user-search-item/ldap-user-search-item.html index 9c62a4e13..4d1d51751 100644 --- a/app/portainer/settings/authentication/ldap/ldap-user-search-item/ldap-user-search-item.html +++ b/app/portainer/settings/authentication/ldap/ldap-user-search-item/ldap-user-search-item.html @@ -1,101 +1,99 @@ - - -
- Extra search configuration - -
+
+
+ Extra search configuration + +
-
-
- -
-
-
-
- - -
+
+
+ +
+
+
+
+ +
+
-
- -
- {{ $ctrl.config.BaseDN }} -
+
+ +
+ {{ $ctrl.config.BaseDN }}
+
- + -
-
- - -
-
-
- - - - - -
+
+
+ + +
+
+
+ + + + +
+
-
- -
- {{ $ctrl.config.Filter }} -
+
+ +
+ {{ $ctrl.config.Filter }}
- - +
+
diff --git a/app/portainer/user-activity/activity-logs-view/activity-logs-view.html b/app/portainer/user-activity/activity-logs-view/activity-logs-view.html index 92dcd192f..e28f60a6f 100644 --- a/app/portainer/user-activity/activity-logs-view/activity-logs-view.html +++ b/app/portainer/user-activity/activity-logs-view/activity-logs-view.html @@ -1,11 +1,8 @@
-
- +
+
@@ -34,11 +31,8 @@
-
- +
+
-
- +
+
@@ -33,11 +30,8 @@
-
- +
+
{children} {showIcon && } - - Business Edition Feature - + Business Feature ); } diff --git a/app/react/components/BEFeatureIndicator/BEOverlay.tsx b/app/react/components/BEFeatureIndicator/BEOverlay.tsx index a1bd94c33..41765930c 100644 --- a/app/react/components/BEFeatureIndicator/BEOverlay.tsx +++ b/app/react/components/BEFeatureIndicator/BEOverlay.tsx @@ -1,16 +1,18 @@ +import clsx from 'clsx'; + import { FeatureId } from '@/react/portainer/feature-flags/enums'; import { isLimitedToBE } from '@/react/portainer/feature-flags/feature-flags.service'; -import { Tooltip } from '@@/Tip/Tooltip'; - -import { BEFeatureIndicator } from '.'; +import { BEFeatureIndicator } from './BEFeatureIndicator'; export function BEOverlay({ featureId, children, + className, }: { featureId: FeatureId; children: React.ReactNode; + className?: string; }) { const isLimited = isLimitedToBE(featureId); if (!isLimited) { @@ -19,13 +21,10 @@ export function BEOverlay({ return (
-
-
- - -
-
{children}
+
+
+
{children}
); } diff --git a/app/react/components/BETeaserButton.tsx b/app/react/components/BETeaserButton.tsx index 78467113d..6764de1c0 100644 --- a/app/react/components/BETeaserButton.tsx +++ b/app/react/components/BETeaserButton.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { Briefcase } from 'lucide-react'; import { FeatureId } from '@/react/portainer/feature-flags/enums'; @@ -11,7 +11,6 @@ interface Props { message: string; buttonText: string; className?: string; - icon?: ReactNode; buttonClassName?: string; } @@ -21,7 +20,6 @@ export function BETeaserButton({ message, buttonText, className, - icon, buttonClassName, }: Props) { return ( @@ -34,9 +32,9 @@ export function BETeaserButton({
diff --git a/app/react/kubernetes/annotations/AnnotationsBeTeaser.tsx b/app/react/kubernetes/annotations/AnnotationsBeTeaser.tsx index 9bdb4ecf9..ebf5ead1f 100644 --- a/app/react/kubernetes/annotations/AnnotationsBeTeaser.tsx +++ b/app/react/kubernetes/annotations/AnnotationsBeTeaser.tsx @@ -1,5 +1,3 @@ -import { Plus } from 'lucide-react'; - import { FeatureId } from '@/react/portainer/feature-flags/enums'; import { BETeaserButton } from '@@/BETeaserButton'; @@ -42,7 +40,6 @@ export function AnnotationsBeTeaser() { message="Allows specifying of annotations on this resource." featureId={FeatureId.K8S_ANNOTATIONS} buttonClassName="!ml-0" - icon={Plus} />
diff --git a/app/react/kubernetes/applications/DetailsView/ApplicationDetailsWidget/RestartApplicationButton.tsx b/app/react/kubernetes/applications/DetailsView/ApplicationDetailsWidget/RestartApplicationButton.tsx index 18d2bfa7b..c038a2eaa 100644 --- a/app/react/kubernetes/applications/DetailsView/ApplicationDetailsWidget/RestartApplicationButton.tsx +++ b/app/react/kubernetes/applications/DetailsView/ApplicationDetailsWidget/RestartApplicationButton.tsx @@ -1,5 +1,3 @@ -import { RefreshCw } from 'lucide-react'; - import { FeatureId } from '@/react/portainer/feature-flags/enums'; import { BETeaserButton } from '@@/BETeaserButton'; @@ -10,7 +8,6 @@ export function RestartApplicationButton() { buttonClassName="!ml-0" data-cy="k8sAppDetail-restartButton" heading="Rolling restart" - icon={RefreshCw} featureId={FeatureId.K8S_ROLLING_RESTART} message="A rolling restart of the application is performed." buttonText="Rolling restart" diff --git a/app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardKubernetes/KubeConfigTeaserForm.tsx b/app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardKubernetes/KubeConfigTeaserForm.tsx index 1151b3cf2..c6386551d 100644 --- a/app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardKubernetes/KubeConfigTeaserForm.tsx +++ b/app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardKubernetes/KubeConfigTeaserForm.tsx @@ -81,7 +81,7 @@ export function KubeConfigTeaserForm() {
- o.value === type)?.feature} - /> - +
+ + +
); default: diff --git a/app/react/portainer/feature-flags/feature-flags.css b/app/react/portainer/feature-flags/feature-flags.css index 553c4e454..58e387150 100644 --- a/app/react/portainer/feature-flags/feature-flags.css +++ b/app/react/portainer/feature-flags/feature-flags.css @@ -10,17 +10,19 @@ button.limited-be, button[disabled].limited-be.oauth-save-settings-button { background-color: var(--BE-only); border-color: var(--BE-only); + margin-left: 0px; } button.limited-be.oauth-save-settings-button { background-color: var(--blue-2); border-color: transparent; + margin-left: 0px; } ng-form.limited-be, form.limited-be, div.limited-be { - border: solid 2px var(--BE-only); + border: solid 1px var(--BE-only); border-radius: 8px; pointer-events: none; touch-action: none; @@ -28,49 +30,31 @@ div.limited-be { } .limited-be-content { - background: rgba(247, 144, 9, 0.1); - opacity: 0.5; - padding: 10px; + @apply border-gray-6 p-2.5 text-xs opacity-50; } .limited-be-link { + padding: 10px; + width: inherit; z-index: 5; position: relative; - width: 270px; - height: 40px; top: 0px; right: 0px; float: right; border-top-right-radius: 8px; border-bottom-left-radius: 8px; - - @apply bg-warning-5 text-warning-9; - @apply th-dark:bg-[color:var(--bg-BE-only)] th-dark:text-blue-8; - - padding: 5px 10px; touch-action: auto; cursor: hand; pointer-events: auto; } .limited-be-link a { - @apply pointer-events-auto cursor-pointer; - @apply text-warning-9 th-dark:text-blue-8; + @apply text-gray-6; } .limited-be-link a:hover { - @apply text-warning-9 underline th-dark:text-blue-8; -} - -.overlay { - @apply bg-center bg-no-repeat; - @apply bg-[url(~@/assets/ico/lock.svg)] th-dark:bg-[url(~@/assets/ico/lock-2.svg)]; -} - -.limited-be input, -.limited-be .widget-body { - background: rgba(247, 144, 9, 0.05); - @apply th-dark:bg-[color:var(--bg-BE-only)]; + @apply underline; + @apply border-blue-9 text-blue-9; } .form-control.limited-be[disabled] { diff --git a/app/react/portainer/settings/SettingsView/BackupSettingsView/BackupS3Form.tsx b/app/react/portainer/settings/SettingsView/BackupSettingsView/BackupS3Form.tsx index 7ad8b955a..7368013df 100644 --- a/app/react/portainer/settings/SettingsView/BackupSettingsView/BackupS3Form.tsx +++ b/app/react/portainer/settings/SettingsView/BackupSettingsView/BackupS3Form.tsx @@ -13,6 +13,7 @@ import { FormControl } from '@@/form-components/FormControl'; import { LoadingButton } from '@@/buttons/LoadingButton'; import { Input } from '@@/form-components/Input'; import { SwitchField } from '@@/form-components/SwitchField'; +import { BEOverlay } from '@@/BEFeatureIndicator/BEOverlay'; import { useBackupS3Settings, @@ -57,159 +58,159 @@ export function BackupS3Form() { validateOnMount > {({ values, errors, isSubmitting, setFieldValue, isValid }) => ( -
-
-
- setFieldValue('scheduleAutomaticBackup', e)} - /> + + +
+
+ setFieldValue('scheduleAutomaticBackup', e)} + /> +
-
- {values.scheduleAutomaticBackup && ( + {values.scheduleAutomaticBackup && ( + + + + )} + - )} - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - -
-
- { - handleExport(values); - }} - > - Export backup - + +
+
+ { + handleExport(values); + }} + > + Export backup + +
-
-
-
-
- - Save backup settings - +
+
+ + Save backup settings + +
-
- + + )} ); diff --git a/app/react/portainer/settings/SettingsView/HelmCertPanel.tsx b/app/react/portainer/settings/SettingsView/HelmCertPanel.tsx index ed0ead58d..bc2301802 100644 --- a/app/react/portainer/settings/SettingsView/HelmCertPanel.tsx +++ b/app/react/portainer/settings/SettingsView/HelmCertPanel.tsx @@ -30,7 +30,7 @@ export function HelmCertPanel() { }; return ( - + {isSidebarOpen && <>Upgrade to Business Edition}