@bluealba/pae-ui-react-core 4.6.0 → 4.7.0-develop-417

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,12 @@
1
+ import { FC, ReactNode } from 'react';
2
+
3
+ export interface PortalContainerProviderProps {
4
+ container: HTMLElement | null;
5
+ children: ReactNode;
6
+ }
7
+ export declare const PortalContainerProvider: FC<PortalContainerProviderProps>;
8
+ /**
9
+ * Returns the portal container to use, or undefined to let Radix default to
10
+ * document.body.
11
+ */
12
+ export declare const usePortalContainer: () => HTMLElement | undefined;
@@ -8,3 +8,5 @@ export { default as ThemeToggle } from './ThemeToggle/ThemeToggle';
8
8
  export { useTheme } from './ThemeToggle/useTheme';
9
9
  export { default as FragmentSlot } from './FragmentSlot';
10
10
  export type { FragmentSlotProps } from './FragmentSlot';
11
+ export { PortalContainerProvider, usePortalContainer } from './PortalContainerContext';
12
+ export type { PortalContainerProviderProps } from './PortalContainerContext';
@@ -1 +1,14 @@
1
+ /**
2
+ * Applies a tenant customization stylesheet.
3
+ *
4
+ * The stylesheet is wrapped in `@layer pae.customization`, the highest layer
5
+ * of the platform cascade contract (declared first in the document by the
6
+ * gateway). That makes the override deterministic: it always wins over
7
+ * `pae.theme`/`pae.base` regardless of when it loads — no artificial delay
8
+ * needed (this used to wait 1s to win by source order).
9
+ *
10
+ * Styles go through the StyleRegistry, so they reach both the document and
11
+ * the shell shadow root (theme variables are inherited custom properties
12
+ * either way).
13
+ */
1
14
  export declare const useDynamicStyleSheet: (styleSheet?: string) => void;
@@ -0,0 +1,2 @@
1
+ export { useFileStorage } from './useFileStorage';
2
+ export type { FileDto, UploadOptions, UpdateMetadataOptions, UseFileStorageResult } from './types';
@@ -0,0 +1,35 @@
1
+ export interface FileDto {
2
+ id: number;
3
+ originalName: string;
4
+ mimeType: string;
5
+ extension: string;
6
+ size: number;
7
+ isPublic: boolean;
8
+ description?: string;
9
+ metadata?: Record<string, unknown>;
10
+ url: string;
11
+ createdBy: string;
12
+ createdAt: string;
13
+ updatedAt: string;
14
+ }
15
+ export interface UploadOptions {
16
+ isPublic?: boolean;
17
+ description?: string;
18
+ metadata?: Record<string, unknown>;
19
+ onProgress?: (percent: number) => void;
20
+ signal?: AbortSignal;
21
+ }
22
+ export interface UpdateMetadataOptions {
23
+ originalName?: string;
24
+ isPublic?: boolean;
25
+ description?: string;
26
+ metadata?: Record<string, unknown>;
27
+ }
28
+ export interface UseFileStorageResult {
29
+ isEnabled: boolean;
30
+ upload(file: File, options?: UploadOptions): Promise<FileDto>;
31
+ updateMetadata(id: number, options: UpdateMetadataOptions): Promise<FileDto>;
32
+ remove(id: number): Promise<void>;
33
+ download(id: number): Promise<void>;
34
+ getPreviewUrl(id: number): Promise<string>;
35
+ }
@@ -0,0 +1,7 @@
1
+ export declare function uploadWithProgress<T>(opts: {
2
+ url: string;
3
+ method: 'POST' | 'PATCH';
4
+ formData: FormData;
5
+ onProgress?: (percent: number) => void;
6
+ signal?: AbortSignal;
7
+ }): Promise<T>;
@@ -0,0 +1,9 @@
1
+ import { UseFileStorageResult } from './types';
2
+
3
+ /**
4
+ * Hook providing client-side access to the platform File Storage API.
5
+ *
6
+ * The hook is a no-op when `fileStorageEnabled` is `false` in the platform state —
7
+ * every method will reject with a descriptive error.
8
+ */
9
+ export declare function useFileStorage(): UseFileStorageResult;
@@ -43,3 +43,5 @@ export { useResource } from './commons/useResource';
43
43
  export { useTenants } from './tenants/useTenants';
44
44
  export { useUserState } from './userState/useUserState';
45
45
  export { useAppStatus } from './useAppStatus';
46
+ export { useFileStorage } from './file-storage/useFileStorage';
47
+ export type { FileDto, UploadOptions, UpdateMetadataOptions, UseFileStorageResult } from './file-storage/types';
@@ -1,4 +1,4 @@
1
-
1
+ export { StyleRegistry } from './styles/StyleRegistry';
2
2
  export type { ModuleMetadata, AuthUser, AuthUserWithApplications, BaseUser } from '@bluealba/pae-core';
3
3
  export * from './core';
4
4
  export * from './hooks';
@@ -0,0 +1,41 @@
1
+ /**
2
+ * StyleRegistry — single distribution point for pae-ui-react-core styles.
3
+ *
4
+ * pae-ui-react-core is loaded once (shared via the platform import map) but
5
+ * its components render in two different style scopes:
6
+ * - the document (micro-frontends mounted in the light DOM)
7
+ * - the shell shadow root (<pae-shell-host>)
8
+ *
9
+ * Every stylesheet registered here is applied to the document AND to every
10
+ * shadow root adopted via adoptInto(). Uses constructable stylesheets
11
+ * (adoptedStyleSheets) when available, falling back to <style> elements
12
+ * (jsdom, older browsers).
13
+ */
14
+ declare class StyleRegistryImpl {
15
+ private styles;
16
+ private shadowRoots;
17
+ /**
18
+ * Registers a stylesheet and applies it to the document and to every
19
+ * adopted shadow root. Returns an unregister function.
20
+ */
21
+ register(cssText: string): () => void;
22
+ /**
23
+ * Applies every registered stylesheet to the given shadow root and keeps
24
+ * it in sync with future registrations. Used by the shell host.
25
+ */
26
+ adoptInto(root: ShadowRoot): void;
27
+ /**
28
+ * Stops syncing styles into the given shadow root (e.g. when the shell
29
+ * host disconnects). Already-adopted sheets are removed.
30
+ */
31
+ releaseRoot(root: ShadowRoot): void;
32
+ private unregister;
33
+ private appendStyleElement;
34
+ }
35
+ export declare const StyleRegistry: StyleRegistryImpl;
36
+ /**
37
+ * Drains CSS bundled at build time (the build prepends the package CSS to
38
+ * the bundle as globalThis.__PAE_UI_CORE_CSS__) into the registry.
39
+ */
40
+ export declare const registerBundledCss: () => void;
41
+ export {};
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Suspend/restore a micro-frontend module's global styles across single-spa
3
+ * mount/unmount.
4
+ *
5
+ * style-loader injects a module's CSS into document.head when the bundle is
6
+ * LOADED, and single-spa unmount never removes it (SystemJS keeps the module
7
+ * cached). A module that imports a global stylesheet (a CSS framework reset,
8
+ * preflight, etc.) therefore permanently contaminates every app visited
9
+ * afterwards in the same session.
10
+ *
11
+ * The UI SDK tags every <style> it emits with data-pae-module="<name>"
12
+ * (see pae-ui-react-sdk getBaseConfig). initializeMicroFrontend calls
13
+ * suspendModuleStyles on unmount — detaching those elements from the
14
+ * document while keeping them in memory — and restoreModuleStyles on mount,
15
+ * so re-entering the app is instant (no re-parse, CSSOM preserved).
16
+ *
17
+ * For modules that opt into per-module shadow DOM, restoreModuleStyles
18
+ * accepts the module's shadow root as target: the tagged styles are moved
19
+ * INTO the shadow root (scoping them to the module) instead of back into
20
+ * document.head, and suspendModuleStyles also sweeps that root on unmount.
21
+ *
22
+ * NOTE: this only covers CSS that goes through style-loader. Runtime
23
+ * CSS-in-JS (e.g. Emotion/MUI) injects its own tags and is not affected.
24
+ *
25
+ * pae-ui-react-core is a shared singleton (one instance via the import map),
26
+ * so this module-scoped store is global across all micro-frontends.
27
+ */
28
+ /**
29
+ * Detach the module's style elements from the document (and from the given
30
+ * extra root, e.g. the module's shadow root), keeping them in memory for a
31
+ * later restoreModuleStyles call. Safe to call when the module has no tagged
32
+ * styles (no-op).
33
+ */
34
+ export declare const suspendModuleStyles: (moduleName: string, extraRoot?: ParentNode) => void;
35
+ /**
36
+ * Attach the module's style elements to the target (document.head by
37
+ * default, or the module's shadow root in per-module shadow DOM mode).
38
+ * Sources, in order: previously suspended elements, plus any still sitting
39
+ * in document.head when a non-document target is given (first mount of a
40
+ * shadow module — style-loader injected them at bundle load time).
41
+ * Safe to call when there is nothing to attach (no-op).
42
+ */
43
+ export declare const restoreModuleStyles: (moduleName: string, target?: ShadowRoot) => void;
@@ -4,6 +4,32 @@ import { RootComponentProps } from '../MicrofrontendProps';
4
4
 
5
5
  export interface MicroFrontendOptions<T extends RootComponentProps> extends SingleSpaReactOpts<T> {
6
6
  rootComponent: FC<T>;
7
+ /**
8
+ * Mount this module inside its own shadow root (attached to the host
9
+ * element the platform resolves from ui.mountAtSelector).
10
+ *
11
+ * Why: global CSS from OTHER modules mounted at the same time (a framework
12
+ * reset, unlayered utilities, ...) cannot reach this module's DOM, and this
13
+ * module's own style-loader CSS is moved into the shadow root so it cannot
14
+ * leak out. This is the only isolation that works for SIMULTANEOUSLY
15
+ * mounted modules (e.g. fragments side by side) — the suspend/restore
16
+ * lifecycle alone only helps across navigation.
17
+ *
18
+ * What module authors must know:
19
+ * - Design tokens (CSS custom properties) inherit into the shadow root —
20
+ * they keep working.
21
+ * - Selectors like `:root`, `html` or `body` do NOT match inside a shadow
22
+ * root; use `:host` (Tailwind v4 already emits `:root, :host`).
23
+ * - @keyframes and @layer order statements are scoped per tree — keep them
24
+ * in the module's own CSS (style-loader output is moved wholesale, so
25
+ * this is automatic for bundled CSS).
26
+ * - Platform core components (Dialog, Tooltip) portal into the shadow root
27
+ * automatically. Third-party overlay libraries default to document.body:
28
+ * pass them the container from usePortalContainer(), and point runtime
29
+ * CSS-in-JS (e.g. Emotion: createCache({ container })) at the shadow
30
+ * root, or their floating content will render unstyled outside it.
31
+ */
32
+ shadowDom?: boolean;
7
33
  }
8
34
  /**
9
35
  * Main function to create a PAE micro-frontend module.
@@ -12,6 +38,13 @@ export interface MicroFrontendOptions<T extends RootComponentProps> extends Sing
12
38
  *
13
39
  * All PAE micro-frontends are wrapped in PAE components that provides react context later used
14
40
  * by the provided hooks.
41
+ *
42
+ * On top of the single-spa lifecycles, the module's global styles (tagged
43
+ * with data-pae-module by the UI SDK) are suspended on unmount and restored
44
+ * on mount, so CSS frameworks imported by one module don't leak into other
45
+ * modules across navigation (see styles/moduleStyleLifecycle). With
46
+ * `shadowDom: true` the module is additionally mounted inside its own shadow
47
+ * root, isolating it from modules mounted at the same time.
15
48
  */
16
- declare const initializeMicroFrontend: <T extends RootComponentProps>({ rootComponent, ...opts }: MicroFrontendOptions<T>) => ReactAppOrParcel<T>;
49
+ declare const initializeMicroFrontend: <T extends RootComponentProps>({ rootComponent, shadowDom, ...opts }: MicroFrontendOptions<T>) => ReactAppOrParcel<T>;
17
50
  export default initializeMicroFrontend;
package/package.json CHANGED
@@ -1,13 +1,12 @@
1
1
  {
2
2
  "name": "@bluealba/pae-ui-react-core",
3
- "version": "4.6.0",
3
+ "version": "4.7.0-develop-417",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs.js",
6
6
  "module": "./dist/index.esm.js",
7
7
  "types": "./dist/src/index.d.ts",
8
8
  "files": [
9
- "dist",
10
- "src/global.css"
9
+ "dist"
11
10
  ],
12
11
  "description": "React utilities for PAE",
13
12
  "scripts": {
package/dist/index.css DELETED
@@ -1 +0,0 @@
1
- :root{--platform-label-color: var(--platform-text-secondary-color);--platform-input-border-color: var(--platform-lines);--platform-input-background-color: var(--platform-background-secondary-color);--platform-input-color: var(--platform-text-primary-color);--platform-input-focus-border-color: var(--platform-color-primary);--platform-button-base-padding: 4px 16px;--platform-button-base-border-radius: 6px;--platform-button-base-box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05);--platform-button-base-font-size: 1em;--platform-button-base-line-height: 16px;--platform-button-base-height: calc(2 * var(--platform-button-base-font-size));--platform-button-contained-primary-background-color: var(--platform-color-primary);--platform-button-contained-primary-color: #ffffff;--platform-button-outlined-primary-color: var(--platform-color-primary);--platform-button-text-primary-color: var(--platform-text-primary-color);--platform-button-contained-danger-background-color: var(--platform-color-danger);--platform-button-contained-danger-color: #ffffff;--platform-button-outlined-danger-color: var(--platform-color-danger);--platform-button-text-danger-color: var(--platform-color-danger)}.container__zBqbk{display:flex;align-items:center;justify-content:center;gap:16px;width:100%;cursor:pointer;height:var(--pae-shell-apps-menu-item-size);padding:8px calc((var(--pae-shell-navbar--width) - var(--pae-shell-apps-menu-icon-size)) / 2)}.container__zBqbk.expanded__EbsIr{justify-content:flex-start}.container__zBqbk .label__cdMnm{flex:1;text-align:left;font-size:var(--pae-shell-apps-menu-item-font-size);font-weight:var(--pae-shell-apps-menu-item-font-weight);line-height:21px;color:var(--pae-shell-apps-menu-selected-item-text-color)}@keyframes spinner-rotation__wUmPV{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spinner__fakUN{position:relative;display:flex;transition:.3s;width:var(--icon-size);height:var(--icon-size)}.spinner__fakUN:before{content:"";position:absolute;top:50%;left:50%;width:var(--icon-size);height:var(--icon-size);margin-top:calc(var(--icon-size) / -2);margin-left:calc(var(--icon-size) / -2);border:2px solid transparent;box-sizing:border-box;border-radius:50%;animation:spinner-rotation__wUmPV .6s linear infinite;display:block}.button__8FA9H{all:unset;padding:var(--platform-button-base-padding);border-radius:var(--platform-button-base-border-radius);box-shadow:var(--platform-button-base-box-shadow);font-size:var(--platform-button-base-font-size);line-height:var(--platform-button-base-line-height);height:var(--platform-button-base-height);font-weight:600;outline:none;border:none;cursor:pointer;transition:width .2s ease-in;display:flex;align-items:center;gap:8px;--icon-size: 12px}.button__8FA9H:disabled{cursor:not-allowed;opacity:.5}.button--contained-primary__stkTx{background-color:var(--platform-button-contained-primary-background-color);color:var(--platform-button-contained-primary-color)}.button--contained-primary__stkTx .spinner__fakUN:before{border-top-color:var(--platform-button-contained-primary-color);border-right-color:var(--platform-button-contained-primary-color)}.button--outlined-primary__KZ1ww{background-color:transparent;color:var(--platform-button-outlined-primary-color);border:1px solid var(--platform-button-outlined-primary-color);height:calc(var(--platform-button-base-height) - 2px)}.button--outlined-primary__KZ1ww .spinner__fakUN:before{border-top-color:var(--platform-button-outlined-primary-color);border-right-color:var(--platform-button-outlined-primary-color)}.button--text-primary__GLTfm{background-color:transparent;color:var(--platform-button-text-primary-color);box-shadow:none}.button--text-primary__GLTfm .spinner__fakUN:before{border-top-color:var(--platform-button-text-primary-color);border-right-color:var(--platform-button-text-primary-color)}.button--contained-danger__L9ehT{background-color:var(--platform-button-contained-danger-background-color);color:var(--platform-button-contained-danger-color)}.button--contained-danger__L9ehT .spinner__fakUN:before{border-top-color:var(--platform-button-contained-danger-color);border-right-color:var(--platform-button-contained-danger-color)}.button--outlined-danger__eoYLd{background-color:transparent;color:var(--platform-button-outlined-danger-color);border:1px solid var(--platform-button-outlined-danger-color);height:calc(var(--platform-button-base-height) - 2px)}.button--outlined-danger__eoYLd .spinner__fakUN:before{border-top-color:var(--platform-button-outlined-danger-color);border-right-color:var(--platform-button-outlined-danger-color)}.button--text-danger__Sw-ha{background-color:transparent;color:var(--platform-button-text-danger-color);box-shadow:none}.button--text-danger__Sw-ha .spinner__fakUN:before{border-top-color:var(--platform-button-text-danger-color);border-right-color:var(--platform-button-text-danger-color)}.icon__--umH{width:var(--icon-size);height:var(--icon-size)}.Badges__5jpum{display:flex;gap:10px;margin-top:8px}.Badge__95MWM{display:flex;flex-direction:row;justify-content:center;align-items:center;text-align:center;color:var(--admin-ui-badge-color);padding:var(--admin-ui-badge-padding);background:var(--admin-ui-badge-background-color);border:1px solid var(--admin-ui-badge-color);border-radius:var(--admin-ui-badge-border-radius)}.Badge--primary__Rx-bS{--admin-ui-badge-background-color: var(--admin-ui-primary-color);--admin-ui-badge-color: #ffffff}.Badge--secondary__d92bT{--admin-ui-badge-background-color: var(--admin-ui-background-color-light);--admin-ui-badge-color: var(--admin-ui-secondary-text-color)}.Badge--success__Kdo98{--admin-ui-badge-background-color: var(--admin-ui-success-color-light);--admin-ui-badge-color: var(--admin-ui-success-color)}.Badge--warning__bf-Nn{--admin-ui-badge-background-color: var(--admin-ui-warning-color-light);--admin-ui-badge-color: var(--admin-ui-warning-color)}.Badge--danger__HTj39{--admin-ui-badge-background-color: var(--admin-ui-danger-color-light);--admin-ui-badge-color: var(--admin-ui-danger-color)}.Badge--small__y93Pj{font-size:var(--admin-ui-badge-font-size);line-height:var(--admin-ui-badge-line-height)}.Badge--regular__aT5AL{font-size:calc(1.25 * var(--admin-ui-badge-font-size));line-height:calc(1.25 * var(--admin-ui-badge-line-height))}.Badge--large__wORCH{font-size:calc(1.5 * var(--admin-ui-badge-font-size));line-height:calc(1.5 * var(--admin-ui-badge-line-height))}.CopyToClipboardButton__2Nd2m:hover{cursor:pointer}.FieldGroup__Q2JCV{margin-bottom:1em}.FieldGroup--horizontal__kpfL1{display:grid;grid-template-columns:max-content 1fr;grid-gap:1em;align-items:center;height:100%}.FieldGroup--vertical__FLo-Q{display:grid;grid-template-columns:1fr;grid-gap:4px}.Input__uS0sb{width:100%;padding:10px;border:1px solid var(--platform-input-border-color);background-color:var(--platform-input-background-color);color:var(--platform-input-color);border-radius:8px;font-size:1em}.Input__uS0sb:focus{outline:1px solid var(--platform-input-focus-border-color)}.Input__uS0sb.Error__-DQpw{border-color:var(--platform-color-danger)}.Error__N4OP5{width:100%;min-height:15px;color:var(--platform-color-danger);font-size:1em}.Label__VYUvW{font-size:1em;font-weight:400;color:var(--platform-label-color)}.Label__VYUvW.Error__Eu6DI{color:var(--platform-color-danger)}.Select__giqpe{width:100%;position:relative}.Select__giqpe select{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;color:var(--platform-input-color);font-size:14px;background-color:var(--platform-input-background-color);border:1px solid var(--platform-input-border-color);border-radius:8px;cursor:pointer;padding:10px}.Select__giqpe select:focus{outline:1px solid var(--platform-input-focus-border-color)}.Chevron__YvhBd{position:absolute;right:1em;top:50%;transform:translateY(-50%);pointer-events:none}.Container__xcHXp{display:flex;flex-direction:column;gap:8px}.Label__0cZB9{font-size:1em;font-weight:600;color:var(--platform-input-color)}.HelperText__m1nA9{font-size:.875em;color:var(--platform-text-secondary-color);margin-top:-4px}.Trigger__AyFUd{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px;background-color:var(--platform-input-background-color);border:1px solid var(--platform-input-border-color);border-radius:8px;font-size:1em;color:var(--platform-input-color);cursor:pointer;transition:all .2s}.Trigger__AyFUd:hover{border-color:var(--platform-input-focus-border-color)}.Trigger__AyFUd:focus{outline:none;border-color:var(--platform-input-focus-border-color)}.Trigger__AyFUd[data-disabled]{opacity:.5;cursor:not-allowed}.Trigger__AyFUd[data-disabled]:hover{border-color:var(--platform-input-border-color)}.Trigger__AyFUd[data-placeholder]{color:var(--platform-text-secondary-color)}.TriggerIcon__aygFG{display:flex;align-items:center;color:var(--platform-text-primary-color)}.Content__llztG{overflow:hidden;background-color:var(--platform-input-background-color);border:1px solid var(--platform-input-border-color);border-radius:8px;box-shadow:0 4px 16px #0000001a;z-index:99999;min-width:var(--radix-select-trigger-width)}.Viewport__COtSL{padding:4px}.Item__XN1-2{display:flex;align-items:center;justify-content:flex-start;gap:8px;padding:10px 12px;font-size:1em;border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;position:relative;color:var(--platform-input-color)}.Item__XN1-2[data-highlighted]{background-color:#0000000d}.Item__XN1-2[data-disabled]{opacity:.5;pointer-events:none}.Item__XN1-2[data-state=checked]{font-weight:500}.ItemIndicatorContainer__EQH-X{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0}.ItemIndicator__bySSc{display:flex;align-items:center;justify-content:center;color:var(--platform-input-color)}.TextArea__pa-A0{width:100%;height:100%;background-clip:padding-box;padding:10px;border:1px solid var(--platform-input-border-color);background-color:var(--platform-input-background-color);color:var(--platform-input-color);border-radius:8px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.TextArea__pa-A0:focus{outline:1px solid var(--platform-input-focus-border-color)}.tooltip__nUuSh{border-radius:8px;padding:8px 12px;font-size:12px;font-weight:var(--platform-tooltip-font-weight);line-height:18px;color:var(--platform-tooltip-color);background-color:var(--platform-tooltip-background-color);box-shadow:0 4px 10px 0 var(--platform-shadow-color);-webkit-user-select:none;user-select:none;pointer-events:none;animation-duration:.4s;animation-timing-function:cubic-bezier(.16,1,.3,1);will-change:transform,opacity}.tooltip__nUuSh[data-side=right]{animation-name:slideLeftAndFade__DYdE5}.tooltip__nUuSh[data-side=bottom]{animation-name:slideUpAndFade__itahf}.tooltipArrow__W2w-f{fill:var(--platform-tooltip-background-color)}@keyframes slideLeftAndFade__DYdE5{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@keyframes slideUpAndFade__itahf{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translate(0)}}.truncatedText__Y-jSd{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.overflowing__o8TC-{cursor:default}.SearchInput__4OFyE{position:relative}.SearchInput__4OFyE .SearchIcon__YgnQy{position:absolute;top:50%;transform:translateY(-50%);left:10px;color:#000}.SearchInput__4OFyE .ClearIcon__ukRVr{position:absolute;top:50%;transform:translateY(-50%);right:15px;color:#000;cursor:pointer}.SearchInput__4OFyE input{font-size:1em}.SearchInput__ClearIcon__uzVoc input{padding-right:30px}.SearchInput__SearchIcon__zoDG4 input{padding-left:30px}.SearchAutocomplete__vR9Hk{position:relative}.AutocompleteItem__YIm7R{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:4px 16px;min-height:36px;width:100%;text-align:left;border:none;background-color:transparent;line-height:14px;font-size:12px;font-weight:400;color:var(--platform-text-primary-color);pointer-events:none}.AutocompleteItem--canBeSelected__jxk4z{cursor:pointer;pointer-events:auto}.AutocompleteItem--canBeSelected__jxk4z:hover{background-color:#0000001a}.AutocompleteHighlighter__LAFTV{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;line-clamp:1;-webkit-box-orient:vertical;word-break:break-all}.AutocompleteHighlighter__match__Wy1o2{font-weight:700}.DropdownList__-fHIk{width:100%;padding-bottom:8px;padding-top:8px;min-height:0;border:1px solid var(--platform-lines)}.AutocompleteItemDescription__4QYN5{font-size:.8em;line-height:1em;font-weight:500;color:var(--platform-text-secondary-color);margin-top:2px}.DropdownList__QTXXX{position:absolute;z-index:1;background-color:var(--platform-background-primary-color);border-radius:8px;box-shadow:0 1px 5px #1018281a;min-width:105px;padding:4px 0;transition:all .2s ease-in-out}.DropdownList--closed__pdL1Z{opacity:0;pointer-events:none;transform:translateY(-10px);visibility:hidden}.DropdownList--open__opzc9{display:flex;flex-direction:column;opacity:1;pointer-events:all;transform:translateY(0)}.DropdownList--left__xSwXR{right:0}.SkeletonListContainer__MKJhE{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch}.Skeleton__Ovpiw{animation:skeleton-pulse__ZqB1e 1s infinite alternate-reverse;background-image:none;background-clip:border-box;border:none;box-shadow:none;-webkit-box-decoration-break:clone;box-decoration-break:clone;color:transparent;outline:none;pointer-events:none;-webkit-user-select:none;user-select:none;cursor:default;display:block}@keyframes skeleton-pulse__ZqB1e{0%{background-color:var(--platform-skeleton-color-1)}to{background-color:var(--platform-skeleton-color-2)}}@keyframes rotate__EqlXe{to{transform:rotate(360deg)}}.spinner__qa7F6{width:80px;height:80px;border:6px solid var(--platform-color-white);border-bottom-color:#ffffff1a;border-radius:50%;display:inline-block;box-sizing:border-box;animation:rotate__EqlXe 2s linear infinite}.spinner-dark__9A9-q{border-color:var(--platform-color-dark);border-bottom-color:#ffffff1a}.spinner-white__gRbtI{border-color:var(--platform-color-white);border-bottom-color:#ffffff1a}.spinner-success__otWGm{border-color:var(--platform-color-success);border-bottom-color:#ffffff1a}.spinner-danger__Bq5DM{border-color:var(--platform-color-danger);border-bottom-color:#ffffff1a}.spinner-warning__U900K{border-color:var(--platform-color-warning);border-bottom-color:#ffffff1a}.switch__0b2av{position:relative;display:inline-flex;align-items:center;width:44px;min-width:44px;height:24px;padding:0;border:none;border-radius:12px;background-color:#ccc;cursor:pointer;transition:background-color .2s ease;outline:none;font-size:0}.switch__0b2av:disabled{opacity:.5}.switch__0b2av:focus-visible{box-shadow:0 0 0 2px var(--platform-color-primary)}.switch__0b2av:hover:not(.disabled__KpauE){background-color:#bbb}.switch__0b2av.checked__2-JV-{background-color:var(--platform-color-primary)}.switch__0b2av.checked__2-JV-:hover:not(.disabled__KpauE){background-color:var(--platform-color-secondary)}.switch__0b2av.disabled__KpauE{opacity:.5;cursor:not-allowed;pointer-events:none}.thumb__fEuKD{position:absolute;top:2px;left:2px;width:20px;height:20px;background-color:#fff;border-radius:50%;transition:transform .2s ease;box-shadow:0 1px 3px #0000001a}.switch__0b2av.checked__2-JV- .thumb__fEuKD{transform:translate(20px)}[data-theme=dark] .switch__0b2av{background-color:#555}[data-theme=dark] .switch__0b2av:hover:not(.disabled__KpauE){background-color:#666}[data-theme=dark] .switch__0b2av.checked__2-JV-{background-color:var(--platform-color-primary)}[data-theme=dark] .switch__0b2av.checked__2-JV-:hover:not(.disabled__KpauE){background-color:var(--platform-color-secondary)}.tabs-list__rc10N{display:flex;position:relative}.tabs-list--horizontal__e1YW4{flex-direction:row;border-bottom:1px solid var(--platform-lines)}.tabs-list--vertical__huK05{flex-direction:column;border-right:none;width:200px}.tabs-trigger__D8R4R{position:relative;background:transparent;border:none;padding:12px 16px;font-size:14px;font-weight:500;color:var(--platform-text-secondary-color);cursor:pointer;transition:all .15s ease-in-out;white-space:nowrap;outline:none}.tabs-trigger__D8R4R:hover:not(.tabs-trigger--disabled__ezDWc){color:var(--platform-text-primary-color)}.tabs-trigger__D8R4R:focus-visible{outline:2px solid var(--platform-color-primary);outline-offset:2px;border-radius:4px}.tabs-trigger--horizontal__4jBFV{border-bottom:2px solid transparent;margin-bottom:-1px}.tabs-trigger--horizontal__4jBFV.tabs-trigger--active__S-Z-S{color:var(--platform-text-primary-color);border-bottom-color:var(--platform-text-primary-color)}.tabs-trigger--vertical__dNVIZ{border-left:none;border-right:3px solid transparent;margin-right:-8px;text-align:left;justify-content:flex-start;display:flex;width:calc(100% + 8px);border-radius:6px 0 0 6px;padding-right:19px}.tabs-trigger--vertical__dNVIZ:hover:not(.tabs-trigger--disabled__ezDWc):not(.tabs-trigger--active__S-Z-S){background-color:#0000000a}.tabs-trigger--vertical__dNVIZ.tabs-trigger--active__S-Z-S{color:var(--platform-text-primary-color);border-right-color:var(--platform-text-primary-color);background-color:var(--platform-background-primary-color);font-weight:600}.tabs-trigger--disabled__ezDWc{color:#9ca3af;cursor:not-allowed}.tabs-content__1d77o{padding:16px 0;outline:none}.tabs-content__1d77o:focus-visible{outline:2px solid var(--platform-color-primary);outline-offset:2px;border-radius:4px}.PasswordInput__GDJDN{position:relative}.PasswordInput__GDJDN input{padding-right:40px;box-sizing:border-box}.PasswordInput__GDJDN .eyeIcon__kDExG{position:absolute;top:50%;right:1em;transform:translateY(-50%)}.PasswordInput__GDJDN .eyeIcon__kDExG:hover{cursor:pointer}.Overlay__M5Z83{background-color:#0e12167f;position:fixed;top:0;right:0;bottom:0;left:0;animation:overlayShow__seU5M .15s cubic-bezier(.16,1,.3,1);z-index:var(--platform-modal-layer)}.Content__wAkP4{display:flex;position:relative;flex-direction:column;justify-content:flex-start;align-items:stretch;font-size:var(--admin-ui-base-font-size);z-index:calc(var(--platform-modal-layer) + 1);background-color:var(--platform-background-primary-color);border-radius:8px;overflow:hidden;box-shadow:#0e121659 0 10px 38px -10px,#0e121633 0 10px 20px -15px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);animation:contentShow__rxphL .15s cubic-bezier(.16,1,.3,1)}.Content__wAkP4:focus{outline:none}@keyframes overlayShow__seU5M{0%{opacity:0}to{opacity:1}}@keyframes contentShow__rxphL{0%{opacity:0;transform:translate(-50%,-48%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.ExampleDialog__llNIZ{max-width:500px}.Header__VHxNf{display:flex;justify-content:space-between;align-items:center;background-color:var(--admin-ui-background-color-light);padding:16px 24px}.Content__I04qM{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;padding:24px;width:90vw;max-height:85vh;max-width:100%;margin-bottom:64px;overflow:auto}.Close__xSN-7{cursor:pointer}.Title__Dznh6{line-height:24px;font-size:20px;font-weight:700;color:var(--admin-ui-primary-text-color)}.Description__ALT2w{font-size:12px;color:var(--platform-text-primary-color)}.Footer__-8gzQ{position:absolute;bottom:0;left:0;right:0;background-color:var(--admin-ui-background-color-light);display:flex;justify-content:flex-end;padding:16px 24px;gap:16px;box-shadow:0 -1px 6px #78787826}.Actions__kKF2Q{display:flex;gap:16px}.pill__vtGwB{border-radius:300px;min-width:4em;text-align:center;padding:3px 12px;font-size:.8em;font-weight:700;border:1px solid}.pill--solid__F-mR4{border-color:var(--pae-shell-color-secondary, #ED8525);background:var(--pae-shell-color-secondary, #ED8525);color:var(--pae-shell-color-white)}.pill--outline__gC-mh{border-color:var(--pae-shell-color-secondary, #ED8525);color:var(--pae-shell-color-secondary, #ED8525);background-color:var(--pae-shell-color-white)}.DialogContent__-WjG9{max-width:450px}.Message__AUgVP{color:var(--platform-text-primary-color);font-size:1.15em}.container__AjtYJ{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;height:100vh}.title__A2vCu{font-size:24px;font-weight:600;line-height:36px;color:var(--text-primary-color);padding-top:24px}.description__bP6Ig{font-size:16px;font-weight:400;line-height:24px;color:var(--text-secondary-color)}a.mailToText__SdlsE{color:var(--pae-shell-color-secondary);font-weight:500}.List__h09XG{display:flex;flex-direction:column;position:relative;overflow-y:auto}.Item__YMy2i{display:flex;flex-direction:column;padding:12px 16px;cursor:pointer;color:var(--admin-ui-primary-text-color)}.List--primary__J2pbx{gap:16px}.List--primary__J2pbx .Item__YMy2i{border:1px solid var(--admin-ui-border-color);border-radius:8px}.List--secondary__gi1ao .Item__YMy2i{border-top:1px solid var(--admin-ui-border-color);border-bottom:1px solid transparent}.List--secondary__gi1ao .Item--selected__yRWow{background:#a0a0a01a;border-top:1px solid var(--admin-ui-primary-color);border-bottom:1px solid var(--admin-ui-primary-color)}.List__h09XG .Title__RJmEW{display:flex;align-items:center;gap:8px;padding-right:16px;font-size:1em;line-height:1.15em;color:var(--admin-ui-primary-text-color);margin-bottom:4px}.List__h09XG .Description__DGyX2{font-size:.8em;line-height:1em;font-weight:500;color:var(--admin-ui-secondary-text-color)}.List__h09XG .Actions__UHP5l{position:absolute;right:16px}.List__h09XG .Action__q-R1I{box-sizing:border-box;display:flex;flex-direction:row;align-items:center;padding:8px 16px;gap:12px;width:100%}.List__h09XG .Action__q-R1I:hover{background:var(--admin-ui-background-color-light)}.List__h09XG .Item--disabled__Ke1u-{background:var(--admin-ui-background-color-light);cursor:not-allowed;opacity:.5}.List--small__ijoSR .Item__YMy2i{padding:8px 12px;height:auto;font-size:1em}.List--medium__E1FEY .Item__YMy2i{padding:12px 16px;height:auto;font-size:1.1em}.List--large__T8tfz .Item__YMy2i{padding:16px 24px;height:auto;font-size:1.25em}.List__h09XG .Icon__dFr-L{display:flex;align-items:center;justify-content:center;width:1.4em;height:1.4em}.Navigation__uylxk{margin:0 auto;display:flex;justify-content:flex-end;width:100%;color:var(--platform-text-primary-color)}.PaginationContent__UpLw0{display:flex;align-items:center;gap:4px}.PaginationEllipsis__perWk{display:flex;width:2.5em;height:2.5em;justify-content:center;align-items:center}.PaginationEllipsis__perWk svg{width:1em;height:1em}.PaginationLink__GVUZj{display:inline-flex;align-items:center;justify-content:center;gap:.6em;padding:.5em;min-width:32px;border-radius:4px;font-size:1em;font-weight:500;border:1px solid transparent;cursor:pointer}.PaginationLink__GVUZj:focus{outline:none}.PaginationLink__GVUZj:hover{background-color:var(--platform-background-secondary-color)}.PaginationLink__GVUZj.Active__u1Ahy{border-color:var(--platform-lines)}.PaginationLink__GVUZj.Disabled__8WM0y{opacity:.8;pointer-events:none;cursor:default}.PaginationLink__GVUZj svg{width:1em;height:1em}.Prev__wp4hc{padding-right:12px}.Next__eVyL5{padding-left:12px}.TableContainer__osh6Z{border:1px solid var(--platform-lines);border-radius:1em;overflow:hidden}.TableHeader__sYa-8{padding:.6em .8em;font-size:1.4em;font-weight:600;width:100%;border-bottom:1px solid var(--platform-lines);color:var(--platform-text-primary-color)}.Table__2cIs3{overflow-x:auto;overflow-y:hidden}.Table__2cIs3 table{border-collapse:collapse;width:100%;min-width:max-content}.Table__2cIs3 td,.Table__2cIs3 th{border-bottom:1px solid var(--platform-lines);padding:1em;font-weight:400;font-size:var(--platform-text-base-font-size);color:var(--platform-text-secondary-color)}.Table__2cIs3 td{color:var(--platform-text-primary-color)}.Table__2cIs3 tr:last-child td{border-bottom:none}.Table__2cIs3 thead th{font-weight:500;background-color:var(--platform-background-secondary-color)}.Table__2cIs3 tr{transition:background-color .2s ease-in-out;background-color:var(--platform-background-primary-color)}.Table__2cIs3 tr.selectable__WsGg1:hover{cursor:pointer;background-color:var(--platform-background-secondary-color)}.Table__2cIs3 .Cell__ZEv-K{display:flex;align-items:center;gap:4px;justify-content:flex-start}.Table__2cIs3 .Right__YoM1V{justify-content:flex-end}.Table__2cIs3 .Center__CF3tr{justify-content:center}.Table__2cIs3 .Sortable__JIV1V{cursor:pointer}.Table__2cIs3 .SortIcon__f0bBy{opacity:0;visibility:hidden;transition:opacity .2s ease-in-out,transform .2s ease-in-out}.Table__2cIs3 .SortIcon__f0bBy.Active__rJjxB{opacity:1;visibility:visible}.Table__2cIs3 .SortIcon__f0bBy.Rotate__7cwTK{transform:rotate(-180deg)}.Table__2cIs3 .Cell__ZEv-K:hover .SortIcon__f0bBy{opacity:1;visibility:visible}.Pagination__sbqMP{display:flex;justify-content:flex-end;margin-top:1em!important}.PointerNone__kQdQS{pointer-events:none}.EmptyStateContainer__Q9FEb{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1em;padding:2em 0}.EmptyStateContainer__Q9FEb .Message__IHK6M{font-size:1.15em;color:var(--platform-text-secondary-color)}.EmptyStateContainer__Q9FEb svg{color:var(--platform-text-secondary-color)}.alert__LblpE{position:relative;width:100%;border-radius:.8em;border:1px solid var(--platform-lines);padding:1em 1.2em;font-size:1em;display:grid;grid-template-columns:0 1fr;gap:.5em}.alert__LblpE:has(>svg){grid-template-columns:16px 1fr;gap:12px}.alert__LblpE>svg{margin-top:2px;width:16px;height:16px;color:inherit}.default__mgO6A{background-color:var(--platform-background-primary-color, #fff);color:var(--platform-text-primary-color, #111)}.destructive__bLNSM{background-color:var(--platform-background-primary-color, #fff);color:var(--platform-color-danger, #dc2626);border-color:var(--platform-color-danger, #dc2626)}.destructive__bLNSM>svg{color:inherit}.destructive__bLNSM [data-slot=alert-description]{color:var(--platform-color-danger, #dc2626)}.alertTitle__gblKf{grid-column-start:2;min-height:1em;font-weight:500;line-clamp:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.alertDescription__BuVHV{grid-column-start:2;display:grid;justify-items:start;gap:4px;font-size:1em;color:var(--platform-text-secondary-color)}.alertDescription__BuVHV p{line-height:1.5}.container__LbyGQ{display:flex;align-items:center}.avatarWrapper__HCQIZ{position:relative;display:inline-block}.avatar__E453a{border-radius:9999px;display:flex;align-items:center;justify-content:center;font-weight:600;border-width:1px;color:var(--platform-color-white);border-color:var(--platform-lines)}.overflowWrapper__ETnPO{position:relative;display:inline-block;cursor:default}.overflowBadge__igBKT{border-radius:9999px;display:flex;align-items:center;justify-content:center;color:var(--platform-color-white);font-weight:600;border-width:1px;border-color:var(--platform-lines);background-color:var(--platform-color-primary)}
package/src/global.css DELETED
@@ -1,32 +0,0 @@
1
- :root {
2
- /* Input */
3
- --platform-label-color: var(--platform-text-secondary-color);
4
- --platform-input-border-color: var(--platform-lines);
5
- --platform-input-background-color: var(--platform-background-secondary-color);
6
- --platform-input-color: var(--platform-text-primary-color);
7
- --platform-input-focus-border-color: var(--platform-color-primary);
8
-
9
- /* Button */
10
- --platform-button-base-padding: 4px 16px;
11
- --platform-button-base-border-radius: 6px;
12
- --platform-button-base-box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
13
- --platform-button-base-font-size: 1em;
14
- --platform-button-base-line-height: 16px;
15
- --platform-button-base-height: calc(2 * var(--platform-button-base-font-size));
16
- /* Contained Primary variant */
17
- --platform-button-contained-primary-background-color: var(--platform-color-primary);
18
- --platform-button-contained-primary-color: #ffffff;
19
- /* Outlined Primary variant */
20
- --platform-button-outlined-primary-color: var(--platform-color-primary);
21
- /* Text Primary variant */
22
- --platform-button-text-primary-color: var(--platform-text-primary-color);
23
-
24
- /* Contained danger variant */
25
- --platform-button-contained-danger-background-color: var(--platform-color-danger);
26
- --platform-button-contained-danger-color: #ffffff;
27
- /* Outlined danger variant */
28
- --platform-button-outlined-danger-color: var(--platform-color-danger);
29
- /* Text danger variant */
30
- --platform-button-text-danger-color: var(--platform-color-danger);
31
-
32
- }