ps-helix 4.1.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/THEME.md +159 -156
- package/fesm2022/ps-helix.mjs +566 -325
- package/fesm2022/ps-helix.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/styles/themes/dark.css +16 -16
- package/src/lib/styles/themes/light.css +16 -16
- package/src/lib/styles/tokens/spacing.tokens.css +4 -0
- package/types/ps-helix.d.ts +142 -24
package/package.json
CHANGED
|
@@ -139,28 +139,28 @@
|
|
|
139
139
|
--text-on-dark: #FFFFFF;
|
|
140
140
|
--text-on-light: #0a0d16;
|
|
141
141
|
|
|
142
|
-
/* Primary Colors - Use
|
|
143
|
-
--primary-color: var(--
|
|
144
|
-
--primary-color-light: var(--
|
|
145
|
-
--primary-color-lighter: var(--
|
|
146
|
-
--primary-color-dark: var(--
|
|
147
|
-
--primary-color-darker: var(--
|
|
148
|
-
--primary-color-text: var(--
|
|
149
|
-
--primary-color-rgb: var(--
|
|
142
|
+
/* Primary Colors - Use customer context with fallbacks (lighter shades for dark theme contrast) */
|
|
143
|
+
--primary-color: var(--customer-primary-color, #8178F7);
|
|
144
|
+
--primary-color-light: var(--customer-primary-color-light, #8A7FED);
|
|
145
|
+
--primary-color-lighter: var(--customer-primary-color-lighter, #A99FF7);
|
|
146
|
+
--primary-color-dark: var(--customer-primary-color-dark, #4A3FD9);
|
|
147
|
+
--primary-color-darker: var(--customer-primary-color-darker, #3730A3);
|
|
148
|
+
--primary-color-text: var(--customer-primary-color-text, #FFFFFF);
|
|
149
|
+
--primary-color-rgb: var(--customer-primary-color-rgb, 107, 95, 227);
|
|
150
150
|
|
|
151
151
|
/* Primary Gradients - Automatically adapt to custom colors */
|
|
152
152
|
--primary-gradient: linear-gradient(to right, var(--primary-color), var(--primary-color-light));
|
|
153
153
|
--primary-gradient-hover: linear-gradient(to right, var(--primary-color), var(--primary-color-lighter));
|
|
154
154
|
--primary-gradient-reversed: linear-gradient(to left, var(--primary-color-dark), var(--primary-color-light));
|
|
155
155
|
|
|
156
|
-
/* Secondary Colors - Use
|
|
157
|
-
--secondary-color: var(--
|
|
158
|
-
--secondary-color-light: var(--
|
|
159
|
-
--secondary-color-lighter: var(--
|
|
160
|
-
--secondary-color-dark: var(--
|
|
161
|
-
--secondary-color-darker: var(--
|
|
162
|
-
--secondary-color-text: var(--
|
|
163
|
-
--secondary-color-rgb: var(--
|
|
156
|
+
/* Secondary Colors - Use customer context with fallbacks (gray tones for dark theme) */
|
|
157
|
+
--secondary-color: var(--customer-secondary-color, #5B5A5A);
|
|
158
|
+
--secondary-color-light: var(--customer-secondary-color-light, #838181);
|
|
159
|
+
--secondary-color-lighter: var(--customer-secondary-color-lighter, #9E9D9D);
|
|
160
|
+
--secondary-color-dark: var(--customer-secondary-color-dark, #4E4D4D);
|
|
161
|
+
--secondary-color-darker: var(--customer-secondary-color-darker, #3D3838);
|
|
162
|
+
--secondary-color-text: var(--customer-secondary-color-text, #FFFFFF);
|
|
163
|
+
--secondary-color-rgb: var(--customer-secondary-color-rgb, 48, 48, 48);
|
|
164
164
|
|
|
165
165
|
/* Success Colors */
|
|
166
166
|
--success-color: #12B94F;
|
|
@@ -223,28 +223,28 @@
|
|
|
223
223
|
--pink-800: #9D174D;
|
|
224
224
|
--pink-900: #831843;
|
|
225
225
|
|
|
226
|
-
/* Primary Colors - Use
|
|
227
|
-
--primary-color: var(--
|
|
228
|
-
--primary-color-light: var(--
|
|
229
|
-
--primary-color-lighter: var(--
|
|
230
|
-
--primary-color-dark: var(--
|
|
231
|
-
--primary-color-darker: var(--
|
|
232
|
-
--primary-color-text: var(--
|
|
233
|
-
--primary-color-rgb: var(--
|
|
226
|
+
/* Primary Colors - Use customer context with fallbacks */
|
|
227
|
+
--primary-color: var(--customer-primary-color, #0B0191);
|
|
228
|
+
--primary-color-light: var(--customer-primary-color-light, #0F02C4);
|
|
229
|
+
--primary-color-lighter: var(--customer-primary-color-lighter, #4A3FD9);
|
|
230
|
+
--primary-color-dark: var(--customer-primary-color-dark, #09017A);
|
|
231
|
+
--primary-color-darker: var(--customer-primary-color-darker, #07015E);
|
|
232
|
+
--primary-color-text: var(--customer-primary-color-text, #FFFFFF);
|
|
233
|
+
--primary-color-rgb: var(--customer-primary-color-rgb, 11, 1, 145);
|
|
234
234
|
|
|
235
235
|
/* Primary Gradients - Automatically adapt to custom colors */
|
|
236
236
|
--primary-gradient: linear-gradient(to right, var(--primary-color-darker), var(--primary-color-light));
|
|
237
237
|
--primary-gradient-hover: linear-gradient(to right, var(--primary-color-dark), var(--primary-color-lighter));
|
|
238
238
|
--primary-gradient-reversed: linear-gradient(to left, var(--primary-color-darker), var(--primary-color-light));
|
|
239
239
|
|
|
240
|
-
/* Secondary Colors - Use
|
|
241
|
-
--secondary-color: var(--
|
|
242
|
-
--secondary-color-light: var(--
|
|
243
|
-
--secondary-color-lighter: var(--
|
|
244
|
-
--secondary-color-dark: var(--
|
|
245
|
-
--secondary-color-darker: var(--
|
|
246
|
-
--secondary-color-text: var(--
|
|
247
|
-
--secondary-color-rgb: var(--
|
|
240
|
+
/* Secondary Colors - Use customer context with fallbacks (gray tones for light theme) */
|
|
241
|
+
--secondary-color: var(--customer-secondary-color, #5E5E5E);
|
|
242
|
+
--secondary-color-light: var(--customer-secondary-color-light, #7B7B7B);
|
|
243
|
+
--secondary-color-lighter: var(--customer-secondary-color-lighter, #969696);
|
|
244
|
+
--secondary-color-dark: var(--customer-secondary-color-dark, #404040);
|
|
245
|
+
--secondary-color-darker: var(--customer-secondary-color-darker, #2B2B2B);
|
|
246
|
+
--secondary-color-text: var(--customer-secondary-color-text, #FFFFFF);
|
|
247
|
+
--secondary-color-rgb: var(--customer-secondary-color-rgb, 94, 94, 94);
|
|
248
248
|
|
|
249
249
|
/* Success Colors */
|
|
250
250
|
--success-color: #0F853A;
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
--spacing-3xl: 4rem; /* 64px */
|
|
13
13
|
--spacing-4xl: 5rem; /* 80px */
|
|
14
14
|
|
|
15
|
+
/* Form field semantic spacing */
|
|
16
|
+
--form-field-gap: var(--spacing-xs); /* label <-> control <-> message */
|
|
17
|
+
--form-label-gap: var(--spacing-sm); /* control <-> inline label (checkbox/radio/switch) */
|
|
18
|
+
|
|
15
19
|
/* Negative spacing scale (for negative margins) */
|
|
16
20
|
--negative-spacing-xxs: -0.125rem;
|
|
17
21
|
--negative-spacing-xs: -0.25rem;
|
package/types/ps-helix.d.ts
CHANGED
|
@@ -167,7 +167,7 @@ declare class PshBadgeComponent<T = number> {
|
|
|
167
167
|
/**
|
|
168
168
|
* Apparences disponibles pour le bouton
|
|
169
169
|
*/
|
|
170
|
-
type ButtonAppearance = 'filled' | 'outline' | '
|
|
170
|
+
type ButtonAppearance = 'filled' | 'outline' | 'text';
|
|
171
171
|
/**
|
|
172
172
|
* Variantes disponibles pour le bouton
|
|
173
173
|
*/
|
|
@@ -705,6 +705,14 @@ interface DropdownItem<T = string> {
|
|
|
705
705
|
/** État actif */
|
|
706
706
|
active?: boolean;
|
|
707
707
|
}
|
|
708
|
+
/**
|
|
709
|
+
* Apparences disponibles pour le dropdown
|
|
710
|
+
*/
|
|
711
|
+
type DropdownAppearance = 'filled' | 'outline' | 'text';
|
|
712
|
+
/**
|
|
713
|
+
* Variantes disponibles pour le dropdown
|
|
714
|
+
*/
|
|
715
|
+
type DropdownVariant = 'primary' | 'secondary' | 'success' | 'warning' | 'danger';
|
|
708
716
|
/**
|
|
709
717
|
* Tailles disponibles pour le dropdown
|
|
710
718
|
*/
|
|
@@ -717,26 +725,35 @@ type DropdownPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end'
|
|
|
717
725
|
* Configuration complète du dropdown
|
|
718
726
|
*/
|
|
719
727
|
interface DropdownConfig {
|
|
720
|
-
/**
|
|
721
|
-
|
|
728
|
+
/** Apparence visuelle */
|
|
729
|
+
appearance?: DropdownAppearance;
|
|
730
|
+
/** Variante de couleur */
|
|
731
|
+
variant?: DropdownVariant;
|
|
722
732
|
/** Taille du dropdown */
|
|
723
733
|
size?: DropdownSize;
|
|
724
734
|
/** Position du menu */
|
|
725
735
|
placement?: DropdownPlacement;
|
|
726
736
|
/** État désactivé */
|
|
727
737
|
disabled?: boolean;
|
|
738
|
+
/** Mode icône seule (masque le label et le caret) */
|
|
739
|
+
iconOnly?: boolean;
|
|
740
|
+
/** Texte accessible (aria-label) quand iconOnly est actif */
|
|
741
|
+
iconOnlyText?: string;
|
|
728
742
|
}
|
|
729
743
|
|
|
730
744
|
declare class PshDropdownComponent<T = string> implements OnDestroy {
|
|
731
745
|
private elementRef;
|
|
732
746
|
private clickOutsideHandler;
|
|
733
|
-
|
|
747
|
+
appearance: _angular_core.InputSignal<DropdownAppearance>;
|
|
748
|
+
variant: _angular_core.InputSignal<DropdownVariant>;
|
|
734
749
|
size: _angular_core.InputSignal<DropdownSize>;
|
|
735
750
|
placement: _angular_core.InputSignal<DropdownPlacement>;
|
|
736
751
|
items: _angular_core.InputSignal<DropdownItem<T>[]>;
|
|
737
752
|
label: _angular_core.InputSignal<string>;
|
|
738
753
|
icon: _angular_core.InputSignal<string | undefined>;
|
|
739
754
|
ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
755
|
+
iconOnly: _angular_core.InputSignal<boolean>;
|
|
756
|
+
iconOnlyText: _angular_core.InputSignal<string | undefined>;
|
|
740
757
|
disabled: _angular_core.ModelSignal<boolean>;
|
|
741
758
|
private isOpenSignal;
|
|
742
759
|
private selectedItemSignal;
|
|
@@ -746,6 +763,7 @@ declare class PshDropdownComponent<T = string> implements OnDestroy {
|
|
|
746
763
|
closed: _angular_core.OutputEmitterRef<void>;
|
|
747
764
|
isOpen: _angular_core.Signal<boolean>;
|
|
748
765
|
selectedItem: _angular_core.Signal<DropdownItem<T> | null>;
|
|
766
|
+
isIconOnly: _angular_core.Signal<boolean>;
|
|
749
767
|
computedAriaLabel: _angular_core.Signal<string>;
|
|
750
768
|
state: _angular_core.Signal<string>;
|
|
751
769
|
private getState;
|
|
@@ -763,7 +781,7 @@ declare class PshDropdownComponent<T = string> implements OnDestroy {
|
|
|
763
781
|
private focusItemAtIndex;
|
|
764
782
|
ngOnDestroy(): void;
|
|
765
783
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PshDropdownComponent<any>, never>;
|
|
766
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PshDropdownComponent<any>, "psh-dropdown", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "selected": "selected"; "opened": "opened"; "closed": "closed"; }, never, ["[dropdown-trigger]", "[dropdown-menu]"], true, never>;
|
|
784
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PshDropdownComponent<any>, "psh-dropdown", never, { "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "iconOnly": { "alias": "iconOnly"; "required": false; "isSignal": true; }; "iconOnlyText": { "alias": "iconOnlyText"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "selected": "selected"; "opened": "opened"; "closed": "closed"; }, never, ["[dropdown-trigger]", "[dropdown-menu]"], true, never>;
|
|
767
785
|
}
|
|
768
786
|
|
|
769
787
|
type InputType = 'text' | 'password' | 'email' | 'tel' | 'url' | 'search' | 'date' | 'number';
|
|
@@ -866,6 +884,94 @@ declare class PshInputComponent implements ControlValueAccessor, FormValueContro
|
|
|
866
884
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PshInputComponent, "psh-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "iconStart": { "alias": "iconStart"; "required": false; "isSignal": true; }; "iconEnd": { "alias": "iconEnd"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "success": { "alias": "success"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "autocompleteConfig": { "alias": "autocompleteConfig"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "disabled": "disabledChange"; "readonly": "readonlyChange"; "loading": "loadingChange"; "touched": "touchedChange"; "inputFocus": "inputFocus"; "inputBlur": "inputBlur"; "suggestionSelect": "suggestionSelect"; }, never, ["[input-label]", "[input-error]", "[input-success]", "[input-hint]"], true, never>;
|
|
867
885
|
}
|
|
868
886
|
|
|
887
|
+
type TextareaVariant = 'outlined' | 'filled';
|
|
888
|
+
type TextareaSize = 'small' | 'medium' | 'large';
|
|
889
|
+
type TextareaResize = 'none' | 'vertical' | 'horizontal' | 'both';
|
|
890
|
+
interface TextareaConfig {
|
|
891
|
+
variant: TextareaVariant;
|
|
892
|
+
size: TextareaSize;
|
|
893
|
+
resize: TextareaResize;
|
|
894
|
+
disabled: boolean;
|
|
895
|
+
required: boolean;
|
|
896
|
+
readonly: boolean;
|
|
897
|
+
fullWidth: boolean;
|
|
898
|
+
showLabel: boolean;
|
|
899
|
+
showCharacterCount: boolean;
|
|
900
|
+
autoSize: boolean;
|
|
901
|
+
rows: number;
|
|
902
|
+
maxLength?: number;
|
|
903
|
+
label: string;
|
|
904
|
+
placeholder: string;
|
|
905
|
+
hint: string | null | undefined;
|
|
906
|
+
error: string | null | undefined;
|
|
907
|
+
success: string | null | undefined;
|
|
908
|
+
ariaLabel: string | null;
|
|
909
|
+
}
|
|
910
|
+
declare const TEXTAREA_LABELS: {
|
|
911
|
+
readonly characterCountSuffix: "caractères";
|
|
912
|
+
readonly characterCountSeparator: "/";
|
|
913
|
+
};
|
|
914
|
+
|
|
915
|
+
declare class PshTextareaComponent implements ControlValueAccessor, FormValueControl<string> {
|
|
916
|
+
private readonly elementRef;
|
|
917
|
+
private readonly cdr;
|
|
918
|
+
private static nextId;
|
|
919
|
+
readonly textareaId: string;
|
|
920
|
+
readonly value: _angular_core.ModelSignal<string>;
|
|
921
|
+
readonly disabled: _angular_core.ModelSignal<boolean>;
|
|
922
|
+
readonly readonly: _angular_core.ModelSignal<boolean>;
|
|
923
|
+
readonly touched: _angular_core.ModelSignal<boolean>;
|
|
924
|
+
variant: _angular_core.InputSignal<TextareaVariant>;
|
|
925
|
+
size: _angular_core.InputSignal<TextareaSize>;
|
|
926
|
+
resize: _angular_core.InputSignal<TextareaResize>;
|
|
927
|
+
rows: _angular_core.InputSignal<number>;
|
|
928
|
+
maxLength: _angular_core.InputSignal<number | undefined>;
|
|
929
|
+
autoSize: _angular_core.InputSignal<boolean>;
|
|
930
|
+
showCharacterCount: _angular_core.InputSignal<boolean>;
|
|
931
|
+
fullWidth: _angular_core.InputSignal<boolean>;
|
|
932
|
+
required: _angular_core.InputSignal<boolean>;
|
|
933
|
+
showLabel: _angular_core.InputSignal<boolean>;
|
|
934
|
+
label: _angular_core.InputSignal<string>;
|
|
935
|
+
placeholder: _angular_core.InputSignal<string>;
|
|
936
|
+
hint: _angular_core.InputSignal<string | null | undefined>;
|
|
937
|
+
error: _angular_core.InputSignal<string | null | undefined>;
|
|
938
|
+
success: _angular_core.InputSignal<string | null | undefined>;
|
|
939
|
+
ariaLabel: _angular_core.InputSignal<string | null>;
|
|
940
|
+
private readonly focusedSignal;
|
|
941
|
+
inputFocus: _angular_core.OutputEmitterRef<void>;
|
|
942
|
+
inputBlur: _angular_core.OutputEmitterRef<void>;
|
|
943
|
+
private textareaRef?;
|
|
944
|
+
focused: _angular_core.Signal<boolean>;
|
|
945
|
+
effectiveResize: _angular_core.Signal<TextareaResize>;
|
|
946
|
+
characterCount: _angular_core.Signal<{
|
|
947
|
+
current: number;
|
|
948
|
+
max: number | undefined;
|
|
949
|
+
}>;
|
|
950
|
+
isOverLimit: _angular_core.Signal<boolean>;
|
|
951
|
+
isAtLimit: _angular_core.Signal<boolean>;
|
|
952
|
+
shouldShowCount: _angular_core.Signal<boolean>;
|
|
953
|
+
hasError: _angular_core.Signal<boolean>;
|
|
954
|
+
computedAriaLabel: _angular_core.Signal<string | null>;
|
|
955
|
+
describedBy: _angular_core.Signal<string | null>;
|
|
956
|
+
state: _angular_core.Signal<"success" | "default" | "disabled" | "error" | "readonly" | "focused">;
|
|
957
|
+
characterCountLabel: "caractères";
|
|
958
|
+
constructor();
|
|
959
|
+
private onChange;
|
|
960
|
+
private onTouched;
|
|
961
|
+
writeValue(value: unknown): void;
|
|
962
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
963
|
+
registerOnTouched(fn: () => void): void;
|
|
964
|
+
setDisabledState(isDisabled: boolean): void;
|
|
965
|
+
handleInput(event: Event): void;
|
|
966
|
+
handleFocus(): void;
|
|
967
|
+
handleBlur(): void;
|
|
968
|
+
focus(): void;
|
|
969
|
+
private applyAutoSize;
|
|
970
|
+
protected hasLabelContent(): boolean;
|
|
971
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PshTextareaComponent, never>;
|
|
972
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PshTextareaComponent, "psh-textarea", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "resize": { "alias": "resize"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "autoSize": { "alias": "autoSize"; "required": false; "isSignal": true; }; "showCharacterCount": { "alias": "showCharacterCount"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "success": { "alias": "success"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "disabled": "disabledChange"; "readonly": "readonlyChange"; "touched": "touchedChange"; "inputFocus": "inputFocus"; "inputBlur": "inputBlur"; }, never, ["[textarea-label]", "[textarea-error]", "[textarea-success]", "[textarea-hint]"], true, never>;
|
|
973
|
+
}
|
|
974
|
+
|
|
869
975
|
/**
|
|
870
976
|
* Type pour le mode d'affichage du menu
|
|
871
977
|
*/
|
|
@@ -1472,6 +1578,7 @@ interface SelectOptionGroup<T> {
|
|
|
1472
1578
|
disabled?: boolean;
|
|
1473
1579
|
}
|
|
1474
1580
|
type SelectSize = 'small' | 'medium' | 'large';
|
|
1581
|
+
type SelectVariant = 'outlined' | 'filled';
|
|
1475
1582
|
interface SearchConfig {
|
|
1476
1583
|
debounceTime: number;
|
|
1477
1584
|
placeholder: string;
|
|
@@ -1490,6 +1597,7 @@ declare class PshSelectComponent<T = unknown> implements ControlValueAccessor, F
|
|
|
1490
1597
|
readonly disabled: _angular_core.ModelSignal<boolean>;
|
|
1491
1598
|
readonly touched: _angular_core.ModelSignal<boolean>;
|
|
1492
1599
|
size: _angular_core.InputSignal<SelectSize>;
|
|
1600
|
+
variant: _angular_core.InputSignal<SelectVariant>;
|
|
1493
1601
|
searchable: _angular_core.InputSignal<boolean>;
|
|
1494
1602
|
multiple: _angular_core.InputSignal<boolean>;
|
|
1495
1603
|
clearable: _angular_core.InputSignal<boolean>;
|
|
@@ -1549,7 +1657,7 @@ declare class PshSelectComponent<T = unknown> implements ControlValueAccessor, F
|
|
|
1549
1657
|
private focusFirst;
|
|
1550
1658
|
private focusLast;
|
|
1551
1659
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PshSelectComponent<any>, never>;
|
|
1552
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PshSelectComponent<any>, "psh-select", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "multiplePlaceholder": { "alias": "multiplePlaceholder"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "success": { "alias": "success"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "maxSelections": { "alias": "maxSelections"; "required": false; "isSignal": true; }; "minSelections": { "alias": "minSelections"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "searchConfig": { "alias": "searchConfig"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "disabled": "disabledChange"; "touched": "touchedChange"; "opened": "opened"; "closed": "closed"; "searched": "searched"; "scrollEnd": "scrollEnd"; }, never, never, true, never>;
|
|
1660
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PshSelectComponent<any>, "psh-select", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "multiplePlaceholder": { "alias": "multiplePlaceholder"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "success": { "alias": "success"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "maxSelections": { "alias": "maxSelections"; "required": false; "isSignal": true; }; "minSelections": { "alias": "minSelections"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "searchConfig": { "alias": "searchConfig"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "disabled": "disabledChange"; "touched": "touchedChange"; "opened": "opened"; "closed": "closed"; "searched": "searched"; "scrollEnd": "scrollEnd"; }, never, never, true, never>;
|
|
1553
1661
|
}
|
|
1554
1662
|
|
|
1555
1663
|
/**
|
|
@@ -2100,7 +2208,7 @@ declare class PshTableComponent {
|
|
|
2100
2208
|
emptyMessage: _angular_core.InputSignal<string>;
|
|
2101
2209
|
noResultsMessage: _angular_core.InputSignal<string>;
|
|
2102
2210
|
globalSearchPlaceholder: _angular_core.InputSignal<string>;
|
|
2103
|
-
tableLayout: _angular_core.InputSignal<"
|
|
2211
|
+
tableLayout: _angular_core.InputSignal<"auto" | "fixed">;
|
|
2104
2212
|
truncateText: _angular_core.InputSignal<boolean>;
|
|
2105
2213
|
expandable: _angular_core.InputSignal<boolean>;
|
|
2106
2214
|
singleExpand: _angular_core.InputSignal<boolean>;
|
|
@@ -2403,19 +2511,30 @@ type Theme = 'light' | 'dark';
|
|
|
2403
2511
|
interface ThemeConfig {
|
|
2404
2512
|
isDark: boolean;
|
|
2405
2513
|
name: Theme;
|
|
2406
|
-
|
|
2514
|
+
customerTheme?: {
|
|
2407
2515
|
primaryColor: string;
|
|
2408
2516
|
secondaryColor?: string;
|
|
2409
2517
|
};
|
|
2410
2518
|
}
|
|
2411
2519
|
|
|
2412
|
-
|
|
2520
|
+
type ContrastTarget = 'AA' | 'AAA';
|
|
2521
|
+
|
|
2522
|
+
/**
|
|
2523
|
+
* Contract for applications that want to override brand colors.
|
|
2524
|
+
* Kept generic (customer) so it can fit any vertical.
|
|
2525
|
+
*/
|
|
2526
|
+
interface CustomerContextService {
|
|
2413
2527
|
primaryColor(): string;
|
|
2414
2528
|
secondaryColor(): string;
|
|
2415
2529
|
}
|
|
2416
|
-
declare const
|
|
2530
|
+
declare const CUSTOMER_CONTEXT_SERVICE: InjectionToken<CustomerContextService>;
|
|
2531
|
+
interface PshThemeOptions {
|
|
2532
|
+
targetContrast?: ContrastTarget;
|
|
2533
|
+
}
|
|
2534
|
+
declare const PSH_THEME_OPTIONS: InjectionToken<PshThemeOptions>;
|
|
2417
2535
|
declare class ThemeService {
|
|
2418
|
-
private
|
|
2536
|
+
private customerContext;
|
|
2537
|
+
private options;
|
|
2419
2538
|
private isDarkThemeSignal;
|
|
2420
2539
|
private themeNameSignal;
|
|
2421
2540
|
private lastChangeSignal;
|
|
@@ -2431,19 +2550,18 @@ declare class ThemeService {
|
|
|
2431
2550
|
toggleTheme(): void;
|
|
2432
2551
|
updateTheme(name: Theme): void;
|
|
2433
2552
|
/**
|
|
2434
|
-
*
|
|
2435
|
-
*
|
|
2436
|
-
*
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
* Initialise le thème au démarrage de l'application
|
|
2441
|
-
* Utilise la préférence stockée ou le thème par défaut 'light'
|
|
2553
|
+
* Applies the customer brand colors to CSS variables, automatically
|
|
2554
|
+
* deriving variants in OKLCH and enforcing WCAG contrast against the
|
|
2555
|
+
* current theme background. If the provided color is not accessible
|
|
2556
|
+
* as a UI color, it is silently adjusted so UI components stay readable.
|
|
2557
|
+
* The original brand color is preserved in --customer-*-color-source
|
|
2558
|
+
* for purely decorative use (logos, marketing surfaces).
|
|
2442
2559
|
*/
|
|
2560
|
+
applyCustomerTheme(): void;
|
|
2561
|
+
private applyPalette;
|
|
2562
|
+
private derivePalette;
|
|
2563
|
+
private ensureIfInteractive;
|
|
2443
2564
|
private initializeTheme;
|
|
2444
|
-
/**
|
|
2445
|
-
* Sauvegarde la préférence de thème dans le localStorage
|
|
2446
|
-
*/
|
|
2447
2565
|
private saveThemePreference;
|
|
2448
2566
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeService, never>;
|
|
2449
2567
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThemeService>;
|
|
@@ -2488,5 +2606,5 @@ declare class ScrollService {
|
|
|
2488
2606
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ScrollService>;
|
|
2489
2607
|
}
|
|
2490
2608
|
|
|
2491
|
-
export { CHECKBOX_CONFIG,
|
|
2492
|
-
export type { AlertConfig, AlertLabels, AlertRole, AlertSize, AlertType, AutocompleteConfig, AvatarConfig, AvatarShape, AvatarSize, AvatarStatus, BadgeDisplayType, BadgePosition, BadgeSize, BadgeVariant, ButtonAppearance, ButtonIconPosition, ButtonSize, ButtonVariant, CardActionsAlignment, CardColorVariant, CardDensity, CardVariant, CheckboxConfig, CheckboxLabelPosition, CheckboxSize, CollapseSize, CollapseVariant, DropdownConfig, DropdownItem, DropdownPlacement, DropdownSize, FlowStepConfig, IconPosition, InfoCardData, InfoCardOptions, InfoCardVariant, InputConfig, InputSize, InputType, InputVariant,
|
|
2609
|
+
export { CHECKBOX_CONFIG, CUSTOMER_CONTEXT_SERVICE, INPUT_LABELS, MODAL_CONFIG, ModalService, NgxTranslateProvider, PAGINATION_CONFIG, PROGRESSBAR_CONFIG, PSH_THEME_OPTIONS, PshAlertComponent, PshAvatarComponent, PshBadgeComponent, PshButtonComponent, PshCardComponent, PshCheckboxComponent, PshCollapseComponent, PshDropdownComponent, PshFlowStepComponent, PshHorizontalCardComponent, PshInfoCardComponent, PshInputComponent, PshMenuComponent, PshModalComponent, PshPaginationComponent, PshProgressbarComponent, PshRadioComponent, PshSelectComponent, PshSidebarComponent, PshSpinLoaderComponent, PshStatCardComponent, PshStateFlowIndicatorComponent, PshStepComponent, PshStepperComponent, PshSwitchComponent, PshTabBarComponent, PshTabComponent, PshTableComponent, PshTabsComponent, PshTagComponent, PshTextareaComponent, PshToastComponent, PshToastService, PshTooltipComponent, RADIO_CONFIG, RADIO_STYLES, SIDEBAR_CONFIG, SPINLOADER_CONFIG, STATE_FLOW_INDICATOR_CONFIG, STEPPER_CONFIG, SWITCH_CONFIG, ScrollService, TABLE_CONFIG, TABS_CONFIG, TAB_BAR_CONFIG, TAG_CONFIG, TEXTAREA_LABELS, TOAST_CONFIG, TOOLTIP_CONFIG, TRANSLATION_PROVIDER, ThemeService, ToastComponent, ToastService, provideTranslation };
|
|
2610
|
+
export type { AlertConfig, AlertLabels, AlertRole, AlertSize, AlertType, AutocompleteConfig, AvatarConfig, AvatarShape, AvatarSize, AvatarStatus, BadgeDisplayType, BadgePosition, BadgeSize, BadgeVariant, ButtonAppearance, ButtonIconPosition, ButtonSize, ButtonVariant, CardActionsAlignment, CardColorVariant, CardDensity, CardVariant, CheckboxConfig, CheckboxLabelPosition, CheckboxSize, CollapseSize, CollapseVariant, CustomerContextService, DropdownAppearance, DropdownConfig, DropdownItem, DropdownPlacement, DropdownSize, DropdownVariant, FlowStepConfig, IconPosition, InfoCardData, InfoCardOptions, InfoCardVariant, InputConfig, InputSize, InputType, InputVariant, MenuItem, MenuMode, MenuVariant, ModalConfig, ModalSize, PaginationConfig, PaginationSize, PaginationVariant, ProgressbarConfig, ProgressbarLabelPosition, ProgressbarMode, ProgressbarSize, ProgressbarVariant, PshThemeOptions, RadioConfig, RadioSize, SearchConfig, SelectOption, SelectOptionGroup, SelectSize, SelectVariant, SidebarConfig, SidebarMode, SidebarPosition, SpinLoaderColor, SpinLoaderConfig, SpinLoaderSize, SpinLoaderVariant, StatCardLayout, StatCardVariant, StatTagVariant, StateFlowIndicatorAriaLabels, StateFlowIndicatorConfig, StateFlowIndicatorSize, StepConfig, StepperAriaLabels, StepperConfig, StepperVariant, SuggestionResult, SwitchConfig, SwitchSize, Tab, TabBarChangeEvent, TabBarConfig, TabBarItem, TabChangeEvent, TableCellContext, TableColumn, TableConfig, TableExpandedRowContext, TableRow, TableRowClickEvent, TableRowExpandEvent, TableSort, TabsConfig, TabsSize, TabsVariant, TagConfig, TagSize, TagVariant, TextareaConfig, TextareaResize, TextareaSize, TextareaVariant, Theme, ThemeConfig, Toast, ToastConfig, ToastPosition, ToastType, TooltipConfig, TooltipPosition, TooltipVariant, TranslationConfig, TranslationEntry, TranslationProvider };
|