@softpak/components 0.0.0-beta.18 → 0.0.0-beta.180

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.
Files changed (83) hide show
  1. package/esm2022/spx-button/spx-button.component.mjs +12 -3
  2. package/esm2022/spx-change-details/public-api.mjs +2 -0
  3. package/esm2022/spx-change-details/softpak-components-spx-change-details.mjs +5 -0
  4. package/esm2022/spx-change-details/spx-change-details-value.interface.mjs +2 -0
  5. package/esm2022/spx-change-details/spx-change-details.component.mjs +149 -0
  6. package/esm2022/spx-channel-selection/src/spx-channel-selection.component.mjs +1 -1
  7. package/esm2022/spx-channel-selection/src/spx-company-selection.component.mjs +2 -2
  8. package/esm2022/spx-check-digit/spx-check-digit.component.mjs +12 -4
  9. package/esm2022/spx-form-section/spx-form-section.component.mjs +9 -9
  10. package/esm2022/spx-form-view/public-api.mjs +4 -0
  11. package/esm2022/spx-form-view/softpak-components-spx-form-view.mjs +5 -0
  12. package/esm2022/spx-form-view/spx-autocomplete-search.component.mjs +119 -0
  13. package/esm2022/spx-form-view/spx-form-field.interface.mjs +2 -0
  14. package/esm2022/spx-form-view/spx-form-section.interface.mjs +2 -0
  15. package/esm2022/spx-form-view/spx-form-view.component.mjs +215 -0
  16. package/esm2022/spx-inputs/spx-dropdown.component.mjs +94 -0
  17. package/esm2022/spx-inputs/spx-input-box.component.mjs +70 -46
  18. package/esm2022/spx-inputs/spx-input-date.component.mjs +1 -1
  19. package/esm2022/spx-inputs/spx-input-float.component.mjs +10 -5
  20. package/esm2022/spx-inputs/spx-input-number.component.mjs +10 -5
  21. package/esm2022/spx-inputs/spx-input-radio.component.mjs +93 -27
  22. package/esm2022/spx-inputs/spx-input-text.component.mjs +21 -32
  23. package/esm2022/spx-inputs/spx-input-type.enum.mjs +3 -1
  24. package/esm2022/spx-inputs/spx-input.component.mjs +48 -13
  25. package/esm2022/spx-navigation/spx-home-tile.component.mjs +29 -10
  26. package/esm2022/spx-navigation/spx-navigation-item.interface.mjs +1 -1
  27. package/esm2022/spx-navigation/spx-navigation.component.mjs +11 -5
  28. package/esm2022/spx-number-check/public-api.mjs +2 -0
  29. package/esm2022/spx-number-check/softpak-components-spx-number-check.mjs +5 -0
  30. package/esm2022/spx-number-check/spx-number-check.component.mjs +259 -0
  31. package/esm2022/spx-suggestion/spx-suggestion.component.mjs +28 -10
  32. package/esm2022/spx-update/src/spx-update-info.component.mjs +1 -1
  33. package/fesm2022/softpak-components-spx-button.mjs +11 -2
  34. package/fesm2022/softpak-components-spx-button.mjs.map +1 -1
  35. package/fesm2022/softpak-components-spx-change-details.mjs +156 -0
  36. package/fesm2022/softpak-components-spx-change-details.mjs.map +1 -0
  37. package/fesm2022/softpak-components-spx-channel-selection.mjs +2 -2
  38. package/fesm2022/softpak-components-spx-channel-selection.mjs.map +1 -1
  39. package/fesm2022/softpak-components-spx-check-digit.mjs +11 -3
  40. package/fesm2022/softpak-components-spx-check-digit.mjs.map +1 -1
  41. package/fesm2022/softpak-components-spx-form-section.mjs +8 -8
  42. package/fesm2022/softpak-components-spx-form-section.mjs.map +1 -1
  43. package/fesm2022/softpak-components-spx-form-view.mjs +334 -0
  44. package/fesm2022/softpak-components-spx-form-view.mjs.map +1 -0
  45. package/fesm2022/softpak-components-spx-inputs.mjs +332 -118
  46. package/fesm2022/softpak-components-spx-inputs.mjs.map +1 -1
  47. package/fesm2022/softpak-components-spx-navigation.mjs +37 -12
  48. package/fesm2022/softpak-components-spx-navigation.mjs.map +1 -1
  49. package/fesm2022/softpak-components-spx-number-check.mjs +266 -0
  50. package/fesm2022/softpak-components-spx-number-check.mjs.map +1 -0
  51. package/fesm2022/softpak-components-spx-suggestion.mjs +27 -9
  52. package/fesm2022/softpak-components-spx-suggestion.mjs.map +1 -1
  53. package/fesm2022/softpak-components-spx-update.mjs +1 -1
  54. package/fesm2022/softpak-components-spx-update.mjs.map +1 -1
  55. package/package.json +24 -6
  56. package/spx-button/spx-button.component.d.ts +3 -1
  57. package/spx-change-details/index.d.ts +5 -0
  58. package/spx-change-details/public-api.d.ts +1 -0
  59. package/spx-change-details/spx-change-details-value.interface.d.ts +7 -0
  60. package/spx-change-details/spx-change-details.component.d.ts +51 -0
  61. package/spx-check-digit/spx-check-digit.component.d.ts +3 -1
  62. package/spx-form-view/index.d.ts +5 -0
  63. package/spx-form-view/public-api.d.ts +3 -0
  64. package/spx-form-view/spx-autocomplete-search.component.d.ts +43 -0
  65. package/spx-form-view/spx-form-field.interface.d.ts +16 -0
  66. package/spx-form-view/spx-form-section.interface.d.ts +9 -0
  67. package/spx-form-view/spx-form-view.component.d.ts +37 -0
  68. package/spx-inputs/spx-dropdown.component.d.ts +18 -0
  69. package/spx-inputs/spx-input-box.component.d.ts +14 -7
  70. package/spx-inputs/spx-input-float.component.d.ts +3 -2
  71. package/spx-inputs/spx-input-number.component.d.ts +3 -2
  72. package/spx-inputs/spx-input-radio.component.d.ts +13 -5
  73. package/spx-inputs/spx-input-text.component.d.ts +3 -2
  74. package/spx-inputs/spx-input-type.enum.d.ts +3 -1
  75. package/spx-inputs/spx-input.component.d.ts +11 -3
  76. package/spx-navigation/spx-home-tile.component.d.ts +5 -1
  77. package/spx-navigation/spx-navigation-item.interface.d.ts +1 -0
  78. package/spx-navigation/spx-navigation.component.d.ts +4 -1
  79. package/spx-number-check/index.d.ts +5 -0
  80. package/spx-number-check/public-api.d.ts +1 -0
  81. package/spx-number-check/spx-number-check.component.d.ts +48 -0
  82. package/spx-suggestion/spx-suggestion.component.d.ts +3 -1
  83. package/tailwind.css +1 -1
@@ -1,11 +1,12 @@
1
1
  import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
2
- import { SpxInputTypeEnum } from '@softpak/components/spx-inputs';
2
+ import { SpxInputComponent, SpxInputTypeEnum } from '@softpak/components/spx-inputs';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class SpxCheckDigitComponent {
5
5
  private readonly formBuilder;
6
6
  txtCheckDigit: string;
7
7
  txtContainer: string;
8
8
  txtPrefix: string;
9
+ ctrlContainerNumberRef?: SpxInputComponent;
9
10
  inputTypeOverlayNumber: SpxInputTypeEnum;
10
11
  inputTypeText: SpxInputTypeEnum;
11
12
  formGroup: FormGroup;
@@ -15,6 +16,7 @@ export declare class SpxCheckDigitComponent {
15
16
  private inputChanges?;
16
17
  constructor(formBuilder: FormBuilder);
17
18
  ngOnInit(): void;
19
+ ngAfterViewInit(): void;
18
20
  ngOnDestroy(): void;
19
21
  getRawValidators(formControl: FormControl): any;
20
22
  static ɵfac: i0.ɵɵFactoryDeclaration<SpxCheckDigitComponent, never>;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@softpak/components/spx-form-view" />
5
+ export * from './public-api';
@@ -0,0 +1,3 @@
1
+ export * from './spx-form-field.interface';
2
+ export * from './spx-form-section.interface';
3
+ export * from './spx-form-view.component';
@@ -0,0 +1,43 @@
1
+ import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
+ import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
3
+ import { SpxInputTypeEnum, SpxValuePair } from '@softpak/components/spx-inputs';
4
+ import { SpxSeverityEnum } from '@softpak/components/spx-helpers';
5
+ import { SpxFormFieldI } from './spx-form-field.interface';
6
+ import { SpxFormSectionI } from './spx-form-section.interface';
7
+ import * as i0 from "@angular/core";
8
+ export declare const sectionAutocompleteSearch = "autocompleteSearch";
9
+ export declare const ctrlQuery = "query";
10
+ export declare const ctrlOptions = "options";
11
+ export declare class SpxAutocompleteSearchComponent implements OnInit, OnDestroy {
12
+ readonly formBuilder: FormBuilder;
13
+ formGroup: FormGroup;
14
+ spxSuggestions: SpxValuePair<any>[];
15
+ spxField: SpxFormFieldI;
16
+ txtOptions: string;
17
+ txtQuery: string;
18
+ txtSubmit: string;
19
+ spxValuePair: SpxValuePair<any>;
20
+ spxCancel: EventEmitter<void>;
21
+ spxSearch: EventEmitter<SpxValuePair<any>>;
22
+ spxSubmit: EventEmitter<SpxValuePair<any>>;
23
+ inputTypeRadio: SpxInputTypeEnum;
24
+ inputTypeText: SpxInputTypeEnum;
25
+ severityError: SpxSeverityEnum;
26
+ severitySuccess: SpxSeverityEnum;
27
+ sections: SpxFormSectionI[];
28
+ get ctrlQuery(): FormControl;
29
+ get ctrlOptions(): FormControl;
30
+ private subSelection?;
31
+ private subQuery?;
32
+ constructor(formBuilder: FormBuilder);
33
+ ngOnInit(): void;
34
+ ngOnDestroy(): void;
35
+ private createForm;
36
+ getRawValidators(formControl: FormControl): any;
37
+ onCancel(): void;
38
+ onSubmit(): void;
39
+ private listenToQuery;
40
+ private listenToSelection;
41
+ static ɵfac: i0.ɵɵFactoryDeclaration<SpxAutocompleteSearchComponent, never>;
42
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpxAutocompleteSearchComponent, "spx-autocomplete-search", never, { "spxSuggestions": { "alias": "spxSuggestions"; "required": false; }; "spxField": { "alias": "spxField"; "required": false; }; "txtOptions": { "alias": "txtOptions"; "required": false; }; "txtQuery": { "alias": "txtQuery"; "required": false; }; "txtSubmit": { "alias": "txtSubmit"; "required": false; }; "spxValuePair": { "alias": "spxValuePair"; "required": false; }; }, { "spxCancel": "spxCancel"; "spxSearch": "spxSearch"; "spxSubmit": "spxSubmit"; }, never, never, true, never>;
43
+ }
@@ -0,0 +1,16 @@
1
+ import { SpxInputTypeEnum, SpxValuePair } from "@softpak/components/spx-inputs";
2
+ export interface SpxFormFieldI {
3
+ afterValueChange?: (value: SpxValuePair<string | number | boolean | any>) => void;
4
+ autofocus?: () => boolean;
5
+ capitalize?: () => boolean;
6
+ defaultValue?: () => string | number | boolean | any;
7
+ key: string;
8
+ label?: () => string;
9
+ readonly?: () => boolean;
10
+ show?: () => boolean;
11
+ step?: () => number;
12
+ suggestions?: () => boolean;
13
+ suggestionsFixed?: () => SpxValuePair<string | number | boolean | any>[];
14
+ type: () => SpxInputTypeEnum;
15
+ validators?: () => any[];
16
+ }
@@ -0,0 +1,9 @@
1
+ import { SpxFormFieldI } from "./spx-form-field.interface";
2
+ export interface SpxFormSectionI {
3
+ fields: SpxFormFieldI[];
4
+ index?: () => number;
5
+ key: string;
6
+ show?: () => boolean;
7
+ showTitle?: () => boolean;
8
+ title?: () => string;
9
+ }
@@ -0,0 +1,37 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { SpxFormSectionI } from './spx-form-section.interface';
3
+ import { SpxInputTypeEnum, SpxValuePair } from '@softpak/components/spx-inputs';
4
+ import { AbstractControl, FormBuilder, FormGroup } from '@angular/forms';
5
+ import { SpxFormFieldI } from './spx-form-field.interface';
6
+ import * as i0 from "@angular/core";
7
+ export declare class SpxFormViewComponent {
8
+ readonly formBuilder: FormBuilder;
9
+ spxFormGroup: FormGroup;
10
+ spxSections: SpxFormSectionI[];
11
+ spxSuggestions: any;
12
+ spxSearch: EventEmitter<{
13
+ field: SpxFormFieldI;
14
+ valuePair: SpxValuePair<any>;
15
+ }>;
16
+ autocompleteField?: SpxFormFieldI;
17
+ typeAutocomplete: SpxInputTypeEnum;
18
+ typeFloat: SpxInputTypeEnum;
19
+ typeNumber: SpxInputTypeEnum;
20
+ typeRadio: SpxInputTypeEnum;
21
+ typeText: SpxInputTypeEnum;
22
+ typeNumericKeyboard: SpxInputTypeEnum;
23
+ typeOverlay: SpxInputTypeEnum;
24
+ typeOverlayNumber: SpxInputTypeEnum;
25
+ onBlur(field: SpxFormFieldI): void;
26
+ onAutocompleteCancel(): void;
27
+ onAutocompleteSearch(valuePair: SpxValuePair<any>): void;
28
+ onAutocompleteSave(valuePair: SpxValuePair<any>): void;
29
+ onSearch(field: SpxFormFieldI): void;
30
+ getRawValidators(formControl: AbstractControl): any;
31
+ hasRequiredField(abstractControl: AbstractControl): boolean;
32
+ static initialFormValue(sections: SpxFormSectionI[]): any;
33
+ static createForm(formBuilder: FormBuilder, sections: SpxFormSectionI[]): FormGroup;
34
+ constructor(formBuilder: FormBuilder);
35
+ static ɵfac: i0.ɵɵFactoryDeclaration<SpxFormViewComponent, never>;
36
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpxFormViewComponent, "spx-form-view", never, { "spxFormGroup": { "alias": "spxFormGroup"; "required": false; }; "spxSections": { "alias": "spxSections"; "required": false; }; "spxSuggestions": { "alias": "spxSuggestions"; "required": false; }; }, { "spxSearch": "spxSearch"; }, never, never, true, never>;
37
+ }
@@ -0,0 +1,18 @@
1
+ import { EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
2
+ import { SpxValuePair } from './spx-value-interface';
3
+ import { Subscription } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export declare class SpxDropdownComponent implements OnChanges, OnInit, OnDestroy {
6
+ protected focusPosition: number;
7
+ spxSuggestions: SpxValuePair<boolean | number | string>[];
8
+ spxSelect: EventEmitter<SpxValuePair<any>>;
9
+ subscriptionKeyUp?: Subscription;
10
+ ngOnInit(): void;
11
+ ngOnChanges(changes: SimpleChanges): void;
12
+ ngOnDestroy(): void;
13
+ handleSuggestionClick(valuePair: SpxValuePair<string | number | boolean>): void;
14
+ private listenToKeyUp;
15
+ private select;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<SpxDropdownComponent, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpxDropdownComponent, "spx-dropdown", never, { "spxSuggestions": { "alias": "spxSuggestions"; "required": false; }; }, { "spxSelect": "spxSelect"; }, never, never, true, never>;
18
+ }
@@ -1,18 +1,21 @@
1
- import { EventEmitter } from '@angular/core';
1
+ import { ElementRef, EventEmitter } from '@angular/core';
2
2
  import { SpxValuePair } from './spx-value-interface';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class SpxInputBoxComponent {
5
+ private elRef;
5
6
  faEdit: import("@fortawesome/fontawesome-common-types").IconDefinition;
6
7
  faSearch: import("@fortawesome/fontawesome-common-types").IconDefinition;
7
8
  faQuestion: import("@fortawesome/fontawesome-common-types").IconDefinition;
8
9
  faTimes: import("@fortawesome/fontawesome-common-types").IconDefinition;
10
+ spxCompact?: boolean;
11
+ spxFocused: boolean;
9
12
  spxLabel?: string;
10
- spxRequired?: boolean;
11
13
  spxReadonly: boolean;
12
- spxShowHelp?: boolean;
13
- spxCompact?: boolean;
14
+ spxRequired?: boolean;
14
15
  spxShowClear: boolean;
15
16
  spxShowEdit?: boolean;
17
+ spxShowHelp?: boolean;
18
+ spxShowLabel: boolean;
16
19
  spxShowSearch?: boolean;
17
20
  spxShowValidationMessages?: boolean | null | undefined;
18
21
  spxValue?: SpxValuePair<any>;
@@ -22,12 +25,16 @@ export declare class SpxInputBoxComponent {
22
25
  spxFocusOut: EventEmitter<void>;
23
26
  spxEdit: EventEmitter<void>;
24
27
  spxHelp: EventEmitter<void>;
25
- spxFocused: boolean;
26
- spxSetFocus(): Promise<void>;
28
+ handleFocusIn(ev: Event): void;
29
+ handleFocusOut(ev: FocusEvent): void;
30
+ handleWindowClick(ev: Event): void;
27
31
  onClear(): void;
28
32
  onSearch(): void;
29
33
  onEdit(): void;
30
34
  onHelp(): void;
35
+ constructor(elRef: ElementRef);
36
+ private emitFocusIn;
37
+ private emitFocusOut;
31
38
  static ɵfac: i0.ɵɵFactoryDeclaration<SpxInputBoxComponent, never>;
32
- static ɵcmp: i0.ɵɵComponentDeclaration<SpxInputBoxComponent, "spx-input-box", never, { "spxLabel": { "alias": "spxLabel"; "required": false; }; "spxRequired": { "alias": "spxRequired"; "required": false; }; "spxReadonly": { "alias": "spxReadonly"; "required": false; }; "spxShowHelp": { "alias": "spxShowHelp"; "required": false; }; "spxCompact": { "alias": "spxCompact"; "required": false; }; "spxShowClear": { "alias": "spxShowClear"; "required": false; }; "spxShowEdit": { "alias": "spxShowEdit"; "required": false; }; "spxShowSearch": { "alias": "spxShowSearch"; "required": false; }; "spxShowValidationMessages": { "alias": "spxShowValidationMessages"; "required": false; }; "spxValue": { "alias": "spxValue"; "required": false; }; "spxFocused": { "alias": "spxFocused"; "required": false; }; }, { "spxClear": "spxClear"; "spxSearch": "spxSearch"; "spxFocus": "spxFocus"; "spxFocusOut": "spxFocusOut"; "spxEdit": "spxEdit"; "spxHelp": "spxHelp"; }, never, ["[controls]", "[validation-messages]"], true, never>;
39
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpxInputBoxComponent, "spx-input-box", never, { "spxCompact": { "alias": "spxCompact"; "required": false; }; "spxFocused": { "alias": "spxFocused"; "required": false; }; "spxLabel": { "alias": "spxLabel"; "required": false; }; "spxReadonly": { "alias": "spxReadonly"; "required": false; }; "spxRequired": { "alias": "spxRequired"; "required": false; }; "spxShowClear": { "alias": "spxShowClear"; "required": false; }; "spxShowEdit": { "alias": "spxShowEdit"; "required": false; }; "spxShowHelp": { "alias": "spxShowHelp"; "required": false; }; "spxShowLabel": { "alias": "spxShowLabel"; "required": false; }; "spxShowSearch": { "alias": "spxShowSearch"; "required": false; }; "spxShowValidationMessages": { "alias": "spxShowValidationMessages"; "required": false; }; "spxValue": { "alias": "spxValue"; "required": false; }; }, { "spxClear": "spxClear"; "spxSearch": "spxSearch"; "spxFocus": "spxFocus"; "spxFocusOut": "spxFocusOut"; "spxEdit": "spxEdit"; "spxHelp": "spxHelp"; }, never, ["[controls]", "[validation-messages]"], true, never>;
33
40
  }
@@ -1,4 +1,4 @@
1
- import { EventEmitter } from '@angular/core';
1
+ import { ElementRef, EventEmitter } from '@angular/core';
2
2
  import { SpxValuePair } from './spx-value-interface';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class SpxInputFloatComponent {
@@ -17,7 +17,8 @@ export declare class SpxInputFloatComponent {
17
17
  spxFocus: EventEmitter<void>;
18
18
  spxWasInternalUpdate: boolean;
19
19
  tick: {};
20
- spxSetFocus(): Promise<void>;
20
+ firstInputRef?: ElementRef<HTMLInputElement>;
21
+ spxSetFocus(): void;
21
22
  componentDidLoad(): void;
22
23
  handleFocus(): void;
23
24
  handleSetValue(newValue: SpxValuePair<any>): void;
@@ -1,4 +1,4 @@
1
- import { EventEmitter } from '@angular/core';
1
+ import { ElementRef, EventEmitter } from '@angular/core';
2
2
  import { SpxValuePair } from './spx-value-interface';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class SpxInputNumberComponent {
@@ -12,8 +12,9 @@ export declare class SpxInputNumberComponent {
12
12
  value?: SpxValuePair<any>;
13
13
  spxChange: EventEmitter<SpxValuePair<any>>;
14
14
  spxFocus: EventEmitter<void>;
15
+ inputRef?: ElementRef<HTMLInputElement>;
15
16
  spxWasInternalUpdate: boolean;
16
- spxSetFocus(): Promise<void>;
17
+ spxSetFocus(): void;
17
18
  componentDidLoad(): void;
18
19
  handleFocus(): void;
19
20
  handleInput(event: any): void;
@@ -1,18 +1,26 @@
1
- import { EventEmitter } from '@angular/core';
1
+ import { EventEmitter, SimpleChanges } from '@angular/core';
2
2
  import { SpxValuePair } from './spx-value-interface';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class SpxInputRadioComponent {
5
+ protected focusPosition: number;
5
6
  spxName?: string;
6
7
  spxValidators: any[];
7
8
  spxFocused: boolean;
9
+ spxShowLabel: boolean;
8
10
  spxReadonly: boolean;
9
11
  spxSuggestions: SpxValuePair<any>[];
10
12
  value?: SpxValuePair<any>;
11
13
  spxChange: EventEmitter<SpxValuePair<any>>;
12
14
  spxFocus: EventEmitter<void>;
13
- spxWasInternalUpdate: boolean;
14
- spxSetFocus(): Promise<void>;
15
- handleSuggestionClick(value: SpxValuePair<any>): void;
15
+ private subscriptionKeyUp?;
16
+ private subscriptionKeyDown?;
17
+ spxFocusIn(): void;
18
+ spxFocusOut(): void;
19
+ ngOnChanges(changes: SimpleChanges): void;
20
+ handleSuggestionClick(valuePair: SpxValuePair<any>): void;
21
+ private determineFocusPosition;
22
+ private select;
23
+ private listenToKeys;
16
24
  static ɵfac: i0.ɵɵFactoryDeclaration<SpxInputRadioComponent, never>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<SpxInputRadioComponent, "spx-input-radio", never, { "spxName": { "alias": "spxName"; "required": false; }; "spxValidators": { "alias": "spxValidators"; "required": false; }; "spxFocused": { "alias": "spxFocused"; "required": false; }; "spxReadonly": { "alias": "spxReadonly"; "required": false; }; "spxSuggestions": { "alias": "spxSuggestions"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "spxChange": "spxChange"; "spxFocus": "spxFocus"; }, never, never, true, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpxInputRadioComponent, "spx-input-radio", never, { "spxName": { "alias": "spxName"; "required": false; }; "spxValidators": { "alias": "spxValidators"; "required": false; }; "spxFocused": { "alias": "spxFocused"; "required": false; }; "spxShowLabel": { "alias": "spxShowLabel"; "required": false; }; "spxReadonly": { "alias": "spxReadonly"; "required": false; }; "spxSuggestions": { "alias": "spxSuggestions"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "spxChange": "spxChange"; "spxFocus": "spxFocus"; }, never, never, true, never>;
18
26
  }
@@ -1,4 +1,4 @@
1
- import { EventEmitter } from '@angular/core';
1
+ import { ElementRef, EventEmitter } from '@angular/core';
2
2
  import { SpxValuePair } from './spx-value-interface';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class SpxInputTextComponent {
@@ -17,7 +17,8 @@ export declare class SpxInputTextComponent {
17
17
  spxChange: EventEmitter<SpxValuePair<any>>;
18
18
  spxFocus: EventEmitter<void>;
19
19
  spxWasInternalUpdate: boolean;
20
- spxSetFocus(): Promise<void>;
20
+ inputRef?: ElementRef<HTMLInputElement>;
21
+ spxSetFocus(): void;
21
22
  componentDidLoad(): void;
22
23
  handleBlur(): void;
23
24
  handleFocus(): void;
@@ -2,10 +2,12 @@ export declare enum SpxInputTypeEnum {
2
2
  autocomplete = "autocomplete",
3
3
  date = "date",
4
4
  float = "float",
5
+ hidden = "hidden",
5
6
  overlay = "overlay",
6
7
  overlayNumber = "overlaynumber",
7
8
  radio = "radio",
8
9
  number = "number",
9
10
  password = "password",
10
- text = "text"
11
+ text = "text",
12
+ textNumericKeyboard = "textNumericKeyboard"
11
13
  }
@@ -1,5 +1,9 @@
1
1
  import { EventEmitter } from '@angular/core';
2
+ import { SpxInputTextComponent } from './spx-input-text.component';
2
3
  import { SpxValuePair } from './spx-value-interface';
4
+ import { SpxInputFloatComponent } from './spx-input-float.component';
5
+ import { SpxInputNumberComponent } from './spx-input-number.component';
6
+ import { SpxInputRadioComponent } from './spx-input-radio.component';
3
7
  import { SpxInputTypeEnum } from './spx-input-type.enum';
4
8
  import * as i0 from "@angular/core";
5
9
  export declare class SpxInputComponent {
@@ -16,6 +20,7 @@ export declare class SpxInputComponent {
16
20
  spxSelectDay: boolean;
17
21
  spxShowEdit: boolean;
18
22
  spxShowHelp: boolean;
23
+ spxShowLabel: boolean;
19
24
  spxCompact: boolean;
20
25
  spxShowClear: boolean;
21
26
  spxShowSearch: boolean;
@@ -33,14 +38,17 @@ export declare class SpxInputComponent {
33
38
  spxEdit: EventEmitter<void>;
34
39
  spxHelp: EventEmitter<void>;
35
40
  spxSearch: EventEmitter<void>;
41
+ floatInput?: SpxInputFloatComponent;
42
+ numberInput?: SpxInputNumberComponent;
43
+ textInput?: SpxInputTextComponent;
44
+ radioInput?: SpxInputRadioComponent;
36
45
  spxFocused: boolean;
37
- spxSetFocus(): void;
38
46
  handleBlur(): void;
39
47
  handleChange(event: any): void;
40
48
  handleClear(): void;
41
49
  handleFocus(): void;
42
50
  handleSearch(): void;
43
- setFocus(): void;
51
+ setFocusIn(): void;
44
52
  setFocusOut(): void;
45
53
  handleEdit(): void;
46
54
  handleHelp(): void;
@@ -54,5 +62,5 @@ export declare class SpxInputComponent {
54
62
  registerOnChange(fn: (value: any) => void): void;
55
63
  registerOnTouched(fn: () => void): void;
56
64
  static ɵfac: i0.ɵɵFactoryDeclaration<SpxInputComponent, never>;
57
- static ɵcmp: i0.ɵɵComponentDeclaration<SpxInputComponent, "spx-input", never, { "spxLabel": { "alias": "spxLabel"; "required": false; }; "spxMax": { "alias": "spxMax"; "required": false; }; "spxMin": { "alias": "spxMin"; "required": false; }; "spxName": { "alias": "spxName"; "required": false; }; "spxReadonly": { "alias": "spxReadonly"; "required": false; }; "spxAutofocus": { "alias": "spxAutofocus"; "required": false; }; "spxInputMode": { "alias": "spxInputMode"; "required": false; }; "spxPattern": { "alias": "spxPattern"; "required": false; }; "spxRequired": { "alias": "spxRequired"; "required": false; }; "spxSelectMonth": { "alias": "spxSelectMonth"; "required": false; }; "spxSelectDay": { "alias": "spxSelectDay"; "required": false; }; "spxShowEdit": { "alias": "spxShowEdit"; "required": false; }; "spxShowHelp": { "alias": "spxShowHelp"; "required": false; }; "spxCompact": { "alias": "spxCompact"; "required": false; }; "spxShowClear": { "alias": "spxShowClear"; "required": false; }; "spxShowSearch": { "alias": "spxShowSearch"; "required": false; }; "spxShowValidationMessages": { "alias": "spxShowValidationMessages"; "required": false; }; "spxStep": { "alias": "spxStep"; "required": false; }; "spxSuggestions": { "alias": "spxSuggestions"; "required": false; }; "spxType": { "alias": "spxType"; "required": false; }; "spxValidators": { "alias": "spxValidators"; "required": false; }; "value": { "alias": "value"; "required": false; }; "spxCapitalize": { "alias": "spxCapitalize"; "required": false; }; "spxFocused": { "alias": "spxFocused"; "required": false; }; }, { "spxBlur": "spxBlur"; "spxClear": "spxClear"; "spxChange": "spxChange"; "spxFocus": "spxFocus"; "spxEdit": "spxEdit"; "spxHelp": "spxHelp"; "spxSearch": "spxSearch"; }, never, ["*"], true, never>;
65
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpxInputComponent, "spx-input", never, { "spxLabel": { "alias": "spxLabel"; "required": false; }; "spxMax": { "alias": "spxMax"; "required": false; }; "spxMin": { "alias": "spxMin"; "required": false; }; "spxName": { "alias": "spxName"; "required": false; }; "spxReadonly": { "alias": "spxReadonly"; "required": false; }; "spxAutofocus": { "alias": "spxAutofocus"; "required": false; }; "spxInputMode": { "alias": "spxInputMode"; "required": false; }; "spxPattern": { "alias": "spxPattern"; "required": false; }; "spxRequired": { "alias": "spxRequired"; "required": false; }; "spxSelectMonth": { "alias": "spxSelectMonth"; "required": false; }; "spxSelectDay": { "alias": "spxSelectDay"; "required": false; }; "spxShowEdit": { "alias": "spxShowEdit"; "required": false; }; "spxShowHelp": { "alias": "spxShowHelp"; "required": false; }; "spxShowLabel": { "alias": "spxShowLabel"; "required": false; }; "spxCompact": { "alias": "spxCompact"; "required": false; }; "spxShowClear": { "alias": "spxShowClear"; "required": false; }; "spxShowSearch": { "alias": "spxShowSearch"; "required": false; }; "spxShowValidationMessages": { "alias": "spxShowValidationMessages"; "required": false; }; "spxStep": { "alias": "spxStep"; "required": false; }; "spxSuggestions": { "alias": "spxSuggestions"; "required": false; }; "spxType": { "alias": "spxType"; "required": false; }; "spxValidators": { "alias": "spxValidators"; "required": false; }; "value": { "alias": "value"; "required": false; }; "spxCapitalize": { "alias": "spxCapitalize"; "required": false; }; "spxFocused": { "alias": "spxFocused"; "required": false; }; }, { "spxBlur": "spxBlur"; "spxClear": "spxClear"; "spxChange": "spxChange"; "spxFocus": "spxFocus"; "spxEdit": "spxEdit"; "spxHelp": "spxHelp"; "spxSearch": "spxSearch"; }, never, ["*"], true, never>;
58
66
  }
@@ -1,7 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class SpxHomeTileComponent {
3
+ spxAutofocus?: boolean;
3
4
  spxClass?: string;
5
+ spxSubtitle?: string;
4
6
  spxTitle?: string;
7
+ private buttonRef?;
8
+ setFocus(): void;
5
9
  static ɵfac: i0.ɵɵFactoryDeclaration<SpxHomeTileComponent, never>;
6
- static ɵcmp: i0.ɵɵComponentDeclaration<SpxHomeTileComponent, "spx-home-tile", never, { "spxClass": { "alias": "spxClass"; "required": false; }; "spxTitle": { "alias": "spxTitle"; "required": false; }; }, {}, never, ["*"], true, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpxHomeTileComponent, "spx-home-tile", never, { "spxAutofocus": { "alias": "spxAutofocus"; "required": false; }; "spxClass": { "alias": "spxClass"; "required": false; }; "spxSubtitle": { "alias": "spxSubtitle"; "required": false; }; "spxTitle": { "alias": "spxTitle"; "required": false; }; }, {}, never, ["*"], true, never>;
7
11
  }
@@ -16,5 +16,6 @@ export interface SpxNavigationItemI {
16
16
  signInRequired?: boolean;
17
17
  tileClasses?: string;
18
18
  title: string;
19
+ subtite?: string;
19
20
  currentSettingsRequired?: boolean;
20
21
  }
@@ -1,11 +1,14 @@
1
- import { EventEmitter, TemplateRef } from '@angular/core';
1
+ import { EventEmitter, QueryList, TemplateRef } from '@angular/core';
2
2
  import { SpxNavigationItemI } from './spx-navigation-item.interface';
3
+ import { SpxHomeTileComponent } from './spx-home-tile.component';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class SpxNavigationComponent {
6
+ tiles?: QueryList<SpxHomeTileComponent>;
5
7
  iconTemplateRef?: TemplateRef<any>;
6
8
  navItems: SpxNavigationItemI[];
7
9
  spxClick: EventEmitter<string>;
8
10
  constructor();
11
+ setFocus(): void;
9
12
  onNavigate(link: string): void;
10
13
  static ɵfac: i0.ɵɵFactoryDeclaration<SpxNavigationComponent, never>;
11
14
  static ɵcmp: i0.ɵɵComponentDeclaration<SpxNavigationComponent, "spx-navigation", never, { "navItems": { "alias": "navItems"; "required": false; }; }, { "spxClick": "spxClick"; }, ["iconTemplateRef"], never, true, never>;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@softpak/components/spx-number-check" />
5
+ export * from './public-api';
@@ -0,0 +1 @@
1
+ export * from './spx-number-check.component';
@@ -0,0 +1,48 @@
1
+ import { ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
2
+ import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
3
+ import { SpxSeverityEnum } from '@softpak/components/spx-helpers';
4
+ import { Subscription } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ export declare class SpxNumberCheckComponent implements OnChanges, OnInit, OnDestroy {
7
+ private readonly formBuilder;
8
+ spxAction: string;
9
+ spxSimpleMode: boolean;
10
+ spxPincode: string;
11
+ txtCancel: string;
12
+ txtConfirm: string;
13
+ txtConfirmMessage: string;
14
+ txtReset: string;
15
+ spxCancel: EventEmitter<void>;
16
+ spxConfirm: EventEmitter<void>;
17
+ viewChild1: ElementRef<HTMLInputElement>;
18
+ viewChild2: ElementRef<HTMLInputElement>;
19
+ viewChild3: ElementRef<HTMLInputElement>;
20
+ viewChild4: ElementRef<HTMLInputElement>;
21
+ form: FormGroup;
22
+ severityError: SpxSeverityEnum;
23
+ severitySuccess: SpxSeverityEnum;
24
+ severityWarning: SpxSeverityEnum;
25
+ accepted: boolean;
26
+ denied: boolean;
27
+ listenToCtrl1?: Subscription;
28
+ listenToCtrl2?: Subscription;
29
+ listenToCtrl3?: Subscription;
30
+ listenToCtrl4?: Subscription;
31
+ listenToTyping?: Subscription;
32
+ get ctrl1(): FormControl;
33
+ get ctrl2(): FormControl;
34
+ get ctrl3(): FormControl;
35
+ get ctrl4(): FormControl;
36
+ constructor(formBuilder: FormBuilder);
37
+ ngOnInit(): void;
38
+ ngOnChanges(changes: SimpleChanges): void;
39
+ ngOnDestroy(): void;
40
+ handleCancel(): void;
41
+ handleConfirm(): void;
42
+ handleReset(): void;
43
+ onDigitInput(event: any): void;
44
+ onBackspace(event: any): void;
45
+ private checkPincode;
46
+ static ɵfac: i0.ɵɵFactoryDeclaration<SpxNumberCheckComponent, never>;
47
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpxNumberCheckComponent, "spx-number-check", never, { "spxAction": { "alias": "spxAction"; "required": false; }; "spxSimpleMode": { "alias": "spxSimpleMode"; "required": false; }; "spxPincode": { "alias": "spxPincode"; "required": false; }; "txtCancel": { "alias": "txtCancel"; "required": false; }; "txtConfirm": { "alias": "txtConfirm"; "required": false; }; "txtConfirmMessage": { "alias": "txtConfirmMessage"; "required": false; }; "txtReset": { "alias": "txtReset"; "required": false; }; }, { "spxCancel": "spxCancel"; "spxConfirm": "spxConfirm"; }, never, never, true, never>;
48
+ }
@@ -1,7 +1,9 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class SpxSuggestionComponent {
3
3
  spxDisabled: boolean;
4
+ spxFocused: boolean;
4
5
  spxSelected: boolean;
6
+ spxTabbable: boolean;
5
7
  static ɵfac: i0.ɵɵFactoryDeclaration<SpxSuggestionComponent, never>;
6
- static ɵcmp: i0.ɵɵComponentDeclaration<SpxSuggestionComponent, "spx-suggestion", never, { "spxDisabled": { "alias": "spxDisabled"; "required": false; }; "spxSelected": { "alias": "spxSelected"; "required": false; }; }, {}, never, ["*"], true, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpxSuggestionComponent, "spx-suggestion", never, { "spxDisabled": { "alias": "spxDisabled"; "required": false; }; "spxFocused": { "alias": "spxFocused"; "required": false; }; "spxSelected": { "alias": "spxSelected"; "required": false; }; "spxTabbable": { "alias": "spxTabbable"; "required": false; }; }, {}, never, ["*"], true, never>;
7
9
  }
package/tailwind.css CHANGED
@@ -1 +1 @@
1
- /*! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-16{bottom:4rem}.left-0{left:0}.right-0{right:0}.z-20{z-index:20}.z-50{z-index:50}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-2\.5{margin-top:.625rem;margin-bottom:.625rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mt-3{margin-top:.75rem}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-full{height:100%}.w-full{width:100%}.max-w-lg{max-width:32rem}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.items-end{align-items:flex-end}.items-center{align-items:center}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.self-center{align-self:center}.overflow-hidden,.truncate{overflow:hidden}.truncate{white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-lg{border-radius:.5rem}.rounded-none{border-radius:0}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-width:1px}.border-t-4{border-top-width:4px}.border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity))}.border-cyan-500{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-lime-500{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.border-transparent{border-color:#0000}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.bg-amber-600{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.bg-cyan-100{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.bg-lime-100{--tw-bg-opacity:1;background-color:rgb(236 252 203/var(--tw-bg-opacity))}.bg-lime-600{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.bg-sky-100{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.bg-teal-500{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-2{padding-bottom:.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-cyan-600{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}.text-cyan-900{--tw-text-opacity:1;color:rgb(22 78 99/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-lime-600{--tw-text-opacity:1;color:rgb(101 163 13/var(--tw-text-opacity))}.text-lime-900{--tw-text-opacity:1;color:rgb(54 83 20/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.outline-none{outline:2px solid #0000;outline-offset:2px}.outline{outline-style:solid}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.ring-offset-2{--tw-ring-offset-width:2px}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\:bg-amber-200:hover{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.hover\:bg-amber-600:hover{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.hover\:bg-amber-800:hover{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.hover\:bg-blue-800:hover{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.hover\:bg-cyan-200:hover{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\:bg-lime-200:hover{--tw-bg-opacity:1;background-color:rgb(217 249 157/var(--tw-bg-opacity))}.hover\:bg-lime-600:hover{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}.hover\:bg-lime-800:hover{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}.hover\:bg-red-200:hover{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.hover\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.hover\:bg-red-800:hover{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}.hover\:bg-sky-200:hover{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}.focus\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-amber-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(245 158 11/var(--tw-ring-opacity))}.focus\:ring-amber-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(217 119 6/var(--tw-ring-opacity))}.focus\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.focus\:ring-cyan-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(8 145 178/var(--tw-ring-opacity))}.focus\:ring-lime-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(132 204 22/var(--tw-ring-opacity))}.focus\:ring-lime-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(101 163 13/var(--tw-ring-opacity))}.focus\:ring-red-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity))}.focus\:ring-red-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(220 38 38/var(--tw-ring-opacity))}.focus\:ring-sky-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(186 230 253/var(--tw-ring-opacity))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.active\:bg-sky-300:active{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}@media (min-width:768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1280px){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}
1
+ /*! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-0{bottom:0}.bottom-16{bottom:4rem}.left-0{left:0}.right-0{right:0}.top-0{top:0}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-2\.5{margin-top:.625rem;margin-bottom:.625rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mt-3{margin-top:.75rem}.mt-32{margin-top:8rem}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-full{height:100%}.w-full{width:100%}.max-w-96{max-width:24rem}.max-w-lg{max-width:32rem}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.items-end{align-items:flex-end}.items-center{align-items:center}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden,.truncate{overflow:hidden}.truncate{white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-lg{border-radius:.5rem}.rounded-none{border-radius:0}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-width:1px}.border-t-4{border-top-width:4px}.border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity))}.border-cyan-500{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-lime-500{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.border-transparent{border-color:#0000}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.bg-amber-600{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.bg-cyan-100{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.bg-lime-100{--tw-bg-opacity:1;background-color:rgb(236 252 203/var(--tw-bg-opacity))}.bg-lime-600{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}.bg-neutral-700{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.bg-sky-100{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.bg-teal-500{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}.bg-teal-700{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-yellow-300{--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-2{padding-bottom:.5rem}.pt-16{padding-top:4rem}.text-left{text-align:left}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-cyan-600{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}.text-cyan-900{--tw-text-opacity:1;color:rgb(22 78 99/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-lime-600{--tw-text-opacity:1;color:rgb(101 163 13/var(--tw-text-opacity))}.text-lime-900{--tw-text-opacity:1;color:rgb(54 83 20/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.outline-none{outline:2px solid #0000;outline-offset:2px}.outline{outline-style:solid}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.ring-offset-2{--tw-ring-offset-width:2px}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\:bg-amber-200:hover{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.hover\:bg-amber-600:hover{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.hover\:bg-amber-800:hover{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.hover\:bg-blue-800:hover{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.hover\:bg-cyan-200:hover{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.hover\:bg-lime-200:hover{--tw-bg-opacity:1;background-color:rgb(217 249 157/var(--tw-bg-opacity))}.hover\:bg-lime-600:hover{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}.hover\:bg-lime-800:hover{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}.hover\:bg-red-200:hover{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.hover\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.hover\:bg-red-800:hover{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}.hover\:bg-sky-300:hover{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.focus\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-amber-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(245 158 11/var(--tw-ring-opacity))}.focus\:ring-amber-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(217 119 6/var(--tw-ring-opacity))}.focus\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.focus\:ring-cyan-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(8 145 178/var(--tw-ring-opacity))}.focus\:ring-lime-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(132 204 22/var(--tw-ring-opacity))}.focus\:ring-lime-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(101 163 13/var(--tw-ring-opacity))}.focus\:ring-red-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity))}.focus\:ring-red-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(220 38 38/var(--tw-ring-opacity))}.focus\:ring-sky-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(125 211 252/var(--tw-ring-opacity))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.active\:bg-sky-300:active{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}@media (min-width:768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1280px){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}