@juligc99/loro-ui 0.0.1 → 0.0.7

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juligc99/loro-ui",
3
- "version": "0.0.1",
3
+ "version": "0.0.7",
4
4
  "description": "Loro UI design system and Angular component library.",
5
5
  "author": "juligc99",
6
6
  "license": "MIT",
@@ -68,9 +68,24 @@
68
68
  "**/*.css",
69
69
  "**/*.scss"
70
70
  ],
71
- "module": "fesm2022/juligc99-loro-ui.mjs",
72
- "typings": "types/juligc99-loro-ui.d.ts",
73
71
  "exports": {
72
+ "./styles/breakpoints": {
73
+ "sass": "./styles/_breakpoints.scss",
74
+ "default": "./styles/_breakpoints.scss"
75
+ },
76
+ "./styles/breakpoints.scss": {
77
+ "sass": "./styles/_breakpoints.scss",
78
+ "default": "./styles/_breakpoints.scss"
79
+ },
80
+ "./design-tokens/loro-theme": {
81
+ "sass": "./design-tokens/loro-theme.scss",
82
+ "default": "./design-tokens/loro-theme.scss"
83
+ },
84
+ "./design-tokens/loro-theme.scss": {
85
+ "sass": "./design-tokens/loro-theme.scss",
86
+ "default": "./design-tokens/loro-theme.scss"
87
+ },
88
+ "./assets/*": "./assets/loro-ui/*",
74
89
  "./package.json": {
75
90
  "default": "./package.json"
76
91
  },
@@ -79,5 +94,7 @@
79
94
  "default": "./fesm2022/juligc99-loro-ui.mjs"
80
95
  }
81
96
  },
97
+ "module": "fesm2022/juligc99-loro-ui.mjs",
98
+ "typings": "types/juligc99-loro-ui.d.ts",
82
99
  "type": "module"
83
100
  }
@@ -1,16 +1,20 @@
1
- $mobile-tablet-max: 1023.88px;
2
- $phone-max: 479.99px;
3
- $desktop-min: 1024px;
4
- $smart-tv-min: 1600px;
1
+ // Public Loro UI Sass breakpoint API.
2
+ // Import from apps with:
3
+ // @use '@juligc99/loro-ui/styles/breakpoints' as bp;
4
+
5
+ $phone-portrait-max: 599.98px !default;
6
+ $tablet-min: 600px !default;
7
+ $desktop-min: 1024px !default;
8
+ $smart-tv-min: 1600px !default;
5
9
 
6
10
  @mixin on-phone-portrait {
7
- @media (max-width: $phone-max) and (orientation: portrait) {
11
+ @media (max-width: $phone-portrait-max) {
8
12
  @content;
9
13
  }
10
14
  }
11
15
 
12
16
  @mixin on-mobile-tablet-landscape {
13
- @media (min-width: $phone-max) and (max-width: $mobile-tablet-max) and (orientation: landscape) {
17
+ @media (min-width: $tablet-min) and (max-width: 1023.98px) and (orientation: landscape) {
14
18
  @content;
15
19
  }
16
20
  }
@@ -4,7 +4,7 @@ import { LoroButtonVariant as LoroButtonVariant$1 } from '@loro-ui/components/co
4
4
  import { LoroImageName } from '@loro-ui/components/resources/loro-image/loro-image';
5
5
  import { LoroBadgeVariant as LoroBadgeVariant$1 } from '@loro-ui/components/components/loro-badge/loro-badge';
6
6
  import * as _juligc99_loro_ui from '@juligc99/loro-ui';
7
- import { FormCheckboxControl, WithOptionalFieldTree, ValidationError, FormValueControl } from '@angular/forms/signals';
7
+ import { FormValueControl, WithOptionalFieldTree, ValidationError, FormCheckboxControl } from '@angular/forms/signals';
8
8
  import { LoroIconName as LoroIconName$1, LoroImageName as LoroImageName$1 } from '@loro-ui/assets/loro-assets.generated';
9
9
  export { LORO_ICON_ASSETS, LORO_ICON_LEGACY_NAMES, LORO_ICON_PATHS, LORO_IMAGE_ASSETS, LORO_IMAGE_LEGACY_NAMES, LORO_IMAGE_PATHS, LoroIconAsset, LoroIconAssetName, LoroIconLegacyName, LoroIconName, LoroImageAsset, LoroImageAssetName, LoroImageLegacyName, LoroImageName } from '@loro-ui/assets/loro-assets.generated';
10
10
 
@@ -537,17 +537,22 @@ declare class LoroToast {
537
537
  }
538
538
 
539
539
  type LoroAuthFieldState = 'default' | 'error';
540
- declare class LoroAuthField {
540
+ declare class LoroAuthField implements FormValueControl<string> {
541
541
  icon: _angular_core.InputSignal<LoroIconName>;
542
542
  label: _angular_core.InputSignal<string>;
543
543
  placeholder: _angular_core.InputSignal<string>;
544
- value: _angular_core.InputSignal<string>;
544
+ value: _angular_core.ModelSignal<string>;
545
545
  type: _angular_core.InputSignal<"email" | "text" | "password">;
546
546
  autocomplete: _angular_core.InputSignal<string>;
547
547
  selected: _angular_core.InputSignal<boolean>;
548
548
  state: _angular_core.InputSignal<LoroAuthFieldState>;
549
+ disabled: _angular_core.InputSignal<boolean>;
550
+ readonly: _angular_core.InputSignal<boolean>;
551
+ required: _angular_core.InputSignal<boolean>;
552
+ invalid: _angular_core.InputSignal<boolean>;
553
+ touched: _angular_core.ModelSignal<boolean>;
549
554
  errorMessage: _angular_core.InputSignal<string>;
550
- valueChange: _angular_core.OutputEmitterRef<string>;
555
+ errors: _angular_core.InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
551
556
  protected readonly errorId: string;
552
557
  protected readonly errorText: _angular_core.Signal<string>;
553
558
  protected readonly hasError: _angular_core.Signal<boolean>;
@@ -556,7 +561,7 @@ declare class LoroAuthField {
556
561
  protected resolvedType(): "email" | "text" | "password";
557
562
  protected toggleVisibility(): void;
558
563
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoroAuthField, never>;
559
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoroAuthField, "loro-auth-field", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
564
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoroAuthField, "loro-auth-field", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
560
565
  }
561
566
 
562
567
  declare class LoroCheckbox implements FormCheckboxControl {
@@ -580,14 +585,24 @@ interface LoroDropdownOption {
580
585
  label: string;
581
586
  value: string;
582
587
  }
583
- declare class LoroDropdown {
588
+ declare class LoroDropdown implements FormValueControl<string> {
584
589
  label: _angular_core.InputSignal<string>;
585
590
  placeholder: _angular_core.InputSignal<string>;
586
- value: _angular_core.InputSignal<string>;
591
+ value: _angular_core.ModelSignal<string>;
587
592
  options: _angular_core.InputSignal<readonly LoroDropdownOption[]>;
588
- valueChange: _angular_core.OutputEmitterRef<string>;
593
+ disabled: _angular_core.InputSignal<boolean>;
594
+ readonly: _angular_core.InputSignal<boolean>;
595
+ required: _angular_core.InputSignal<boolean>;
596
+ invalid: _angular_core.InputSignal<boolean>;
597
+ touched: _angular_core.ModelSignal<boolean>;
598
+ errorMessage: _angular_core.InputSignal<string>;
599
+ errors: _angular_core.InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
600
+ protected readonly errorId: string;
601
+ protected readonly errorText: _angular_core.Signal<string>;
602
+ protected readonly showError: _angular_core.Signal<boolean>;
603
+ protected select(value: string): void;
589
604
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoroDropdown, never>;
590
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoroDropdown, "loro-dropdown", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
605
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoroDropdown, "loro-dropdown", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
591
606
  }
592
607
 
593
608
  declare class LoroFilterChip {
@@ -628,8 +643,8 @@ declare class LoroInput implements FormValueControl<string> {
628
643
  touched: _angular_core.ModelSignal<boolean>;
629
644
  unit: _angular_core.InputSignal<string>;
630
645
  step: _angular_core.InputSignal<number>;
631
- min: _angular_core.InputSignal<number | undefined>;
632
- max: _angular_core.InputSignal<number | undefined>;
646
+ min: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
647
+ max: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
633
648
  trailingClick: _angular_core.OutputEmitterRef<void>;
634
649
  private readonly control;
635
650
  protected readonly errorId: string;
@@ -651,6 +666,7 @@ declare class LoroInput implements FormValueControl<string> {
651
666
  protected stepperInputMaxLength(): number;
652
667
  protected sanitizeStepperInput(event: Event): void;
653
668
  private clampValue;
669
+ private coerceLimit;
654
670
  private sanitizeValue;
655
671
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoroInput, never>;
656
672
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoroInput, "loro-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "inputmode": { "alias": "inputmode"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; "trailingIcon": { "alias": "trailingIcon"; "required": false; "isSignal": true; }; "trailingIconSize": { "alias": "trailingIconSize"; "required": false; "isSignal": true; }; "trailingAriaLabel": { "alias": "trailingAriaLabel"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "unit": { "alias": "unit"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; "trailingClick": "trailingClick"; }, never, never, true, never>;
@@ -672,12 +688,20 @@ interface LoroSegmentedOption {
672
688
  label: string;
673
689
  value: string;
674
690
  }
675
- declare class LoroSegmentedControl {
691
+ declare class LoroSegmentedControl implements FormValueControl<string> {
676
692
  options: _angular_core.InputSignal<readonly LoroSegmentedOption[]>;
677
- value: _angular_core.InputSignal<string>;
678
- valueChange: _angular_core.OutputEmitterRef<string>;
693
+ value: _angular_core.ModelSignal<string>;
694
+ disabled: _angular_core.InputSignal<boolean>;
695
+ readonly: _angular_core.InputSignal<boolean>;
696
+ invalid: _angular_core.InputSignal<boolean>;
697
+ touched: _angular_core.ModelSignal<boolean>;
698
+ errorMessage: _angular_core.InputSignal<string>;
699
+ errors: _angular_core.InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
700
+ protected readonly errorText: _angular_core.Signal<string>;
701
+ protected readonly showError: _angular_core.Signal<boolean>;
702
+ protected select(value: string): void;
679
703
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoroSegmentedControl, never>;
680
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoroSegmentedControl, "loro-segmented-control", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
704
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoroSegmentedControl, "loro-segmented-control", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
681
705
  }
682
706
 
683
707
  declare class LoroSelect {
@@ -694,24 +718,40 @@ declare class LoroSelect {
694
718
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoroSelect, "loro-select", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; }, { "action": "action"; }, never, never, true, never>;
695
719
  }
696
720
 
697
- declare class LoroTextArea {
721
+ declare class LoroTextArea implements FormValueControl<string> {
698
722
  label: _angular_core.InputSignal<string>;
699
723
  placeholder: _angular_core.InputSignal<string>;
700
- value: _angular_core.InputSignal<string>;
701
- maxLength: _angular_core.InputSignal<number | null>;
702
- valueChange: _angular_core.OutputEmitterRef<string>;
724
+ value: _angular_core.ModelSignal<string>;
725
+ maxLength: _angular_core.InputSignal<number | undefined>;
726
+ disabled: _angular_core.InputSignal<boolean>;
727
+ readonly: _angular_core.InputSignal<boolean>;
728
+ required: _angular_core.InputSignal<boolean>;
729
+ invalid: _angular_core.InputSignal<boolean>;
730
+ touched: _angular_core.ModelSignal<boolean>;
731
+ errorMessage: _angular_core.InputSignal<string>;
732
+ errors: _angular_core.InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
733
+ protected readonly errorId: string;
734
+ protected readonly errorText: _angular_core.Signal<string>;
735
+ protected readonly showError: _angular_core.Signal<boolean>;
703
736
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoroTextArea, never>;
704
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoroTextArea, "loro-text-area", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
737
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoroTextArea, "loro-text-area", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
705
738
  }
706
739
 
707
- declare class LoroToggle {
708
- checked: _angular_core.InputSignal<boolean>;
740
+ declare class LoroToggle implements FormCheckboxControl {
741
+ checked: _angular_core.ModelSignal<boolean>;
709
742
  disabled: _angular_core.InputSignal<boolean>;
743
+ readonly: _angular_core.InputSignal<boolean>;
744
+ required: _angular_core.InputSignal<boolean>;
745
+ invalid: _angular_core.InputSignal<boolean>;
746
+ touched: _angular_core.ModelSignal<boolean>;
747
+ errorMessage: _angular_core.InputSignal<string>;
748
+ errors: _angular_core.InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
710
749
  ariaLabel: _angular_core.InputSignal<string>;
711
- checkedChange: _angular_core.OutputEmitterRef<boolean>;
750
+ protected readonly errorText: _angular_core.Signal<string>;
751
+ protected readonly showError: _angular_core.Signal<boolean>;
712
752
  protected toggle(): void;
713
753
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoroToggle, never>;
714
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoroToggle, "loro-toggle", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "checkedChange": "checkedChange"; }, never, never, true, never>;
754
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoroToggle, "loro-toggle", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "touched": "touchedChange"; }, never, never, true, never>;
715
755
  }
716
756
 
717
757
  declare class LoroUpload {