@wawjs/ngx-prime 22.0.2 → 22.0.4

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.
@@ -140,7 +140,7 @@ class Textarea extends BaseModelHolder {
140
140
  });
141
141
  }
142
142
  onInit() {
143
- if (this.ngControl) {
143
+ if (this.ngControl?.valueChanges) {
144
144
  this.ngControlSubscription = this.ngControl.valueChanges.subscribe(() => {
145
145
  this.updateState();
146
146
  });
@@ -1 +1 @@
1
- {"version":3,"file":"wawjs-ngx-prime-textarea.mjs","sources":["../../src/textarea/style/textareastyle.ts","../../src/textarea/textarea.ts","../../src/textarea/wawjs-ngx-prime-textarea.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style as textarea_style } from '@wawjs/css-prime-styles/textarea';\nimport { BaseStyle } from '@wawjs/ngx-prime/base';\n\nconst style = /*css*/ `\n ${textarea_style}\n\n /* For ngx-prime */\n .p-textarea.ng-invalid.ng-dirty {\n border-color: dt('textarea.invalid.border.color');\n }\n .p-textarea.ng-invalid.ng-dirty::placeholder {\n color: dt('textarea.invalid.placeholder.color');\n }\n`;\n\nconst classes = {\n root: ({ instance }) => [\n 'p-textarea p-component',\n {\n 'p-filled': instance.$filled(),\n 'p-textarea-resizable ': instance.autoResize,\n 'p-variant-filled': instance.$variant() === 'filled',\n 'p-textarea-fluid': instance.hasFluid,\n 'p-inputfield-sm p-textarea-sm': instance.pSize() === 'small',\n 'p-textarea-lg p-inputfield-lg': instance.pSize() === 'large',\n 'p-invalid': instance.invalid()\n }\n ]\n};\n\n@Injectable()\nexport class TextareaStyle extends BaseStyle {\n name = 'textarea';\n\n style = style;\n\n classes = classes;\n}\n\n/**\n *\n * Textarea is a multi-line text input element.\n *\n * [Live Demo](https://www.ngx-prime.org/textarea/)\n *\n * @module textareastyle\n *\n */\nexport enum TextareaClasses {\n /**\n * Class name of the root element\n */\n root = 'p-textarea'\n}\n","import { booleanAttribute, computed, Directive, effect, inject, InjectionToken, input, NgModule, output } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { PARENT_INSTANCE } from '@wawjs/ngx-prime/basecomponent';\nimport { BaseModelHolder } from '@wawjs/ngx-prime/basemodelholder';\nimport { Bind } from '@wawjs/ngx-prime/bind';\nimport { Fluid } from '@wawjs/ngx-prime/fluid';\nimport { TextareaPassThrough } from '@wawjs/ngx-prime/types/textarea';\nimport { Subscription } from 'rxjs';\nimport { TextareaStyle } from './style/textareastyle';\n\nconst TEXTAREA_INSTANCE = new InjectionToken<Textarea>('TEXTAREA_INSTANCE');\n\n/**\n * Textarea adds styling and autoResize functionality to standard textarea element.\n * @group Components\n */\n@Directive({\n selector: '[pTextarea], [pInputTextarea]',\n standalone: true,\n host: {\n '[class]': \"cx('root')\",\n '(input)': 'onInput($event)'\n },\n providers: [TextareaStyle, { provide: TEXTAREA_INSTANCE, useExisting: Textarea }, { provide: PARENT_INSTANCE, useExisting: Textarea }],\n hostDirectives: [Bind]\n})\nexport class Textarea extends BaseModelHolder<TextareaPassThrough> {\n componentName = 'Textarea';\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n $pcTextarea: Textarea | undefined = inject(TEXTAREA_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n /**\n * Used to pass attributes to DOM elements inside the Textarea component.\n * @defaultValue undefined\n * @group Props\n */\n pTextareaPT = input<TextareaPassThrough>();\n /**\n * Indicates whether the component should be rendered without styles.\n * @defaultValue undefined\n * @group Props\n */\n pTextareaUnstyled = input<boolean | undefined>();\n\n /**\n * When present, textarea size changes as being typed.\n * @group Props\n */\n autoResize = input(false, { transform: booleanAttribute });\n /**\n * Defines the size of the component.\n * @group Props\n */\n pSize = input<'large' | 'small'>();\n /**\n * Specifies the input variant of the component.\n * @defaultValue undefined\n * @group Props\n */\n variant = input<'filled' | 'outlined' | undefined>();\n /**\n * Spans 100% width of the container when enabled.\n * @defaultValue undefined\n * @group Props\n */\n fluid = input(undefined, { transform: booleanAttribute });\n /**\n * When present, it specifies that the component should have invalid state style.\n * @defaultValue false\n * @group Props\n */\n invalid = input(undefined, { transform: booleanAttribute });\n\n $variant = computed(() => this.variant() || this.config.inputStyle() || this.config.inputVariant());\n /**\n * Callback to invoke on textarea resize.\n * @param {(Event | {})} event - Custom resize event.\n * @group Emits\n */\n onResize = output<Event | object>();\n\n ngControlSubscription: Subscription | undefined;\n\n _componentStyle = inject(TextareaStyle);\n\n ngControl = inject(NgControl, { optional: true, self: true });\n\n pcFluid: Fluid | null = inject(Fluid, { optional: true, host: true, skipSelf: true });\n\n get hasFluid() {\n return this.fluid() ?? !!this.pcFluid;\n }\n\n constructor() {\n super();\n effect(() => {\n const pt = this.pTextareaPT();\n\n pt && this.directivePT.set(pt);\n });\n\n effect(() => {\n this.pTextareaUnstyled() && this.directiveUnstyled.set(this.pTextareaUnstyled());\n });\n }\n\n onInit() {\n if (this.ngControl) {\n this.ngControlSubscription = (this.ngControl as any).valueChanges.subscribe(() => {\n this.updateState();\n });\n }\n }\n\n onAfterViewInit() {\n if (this.autoResize()) this.resize();\n\n this.cd.detectChanges();\n }\n\n onAfterViewChecked() {\n this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n\n if (this.autoResize()) {\n this.resize();\n }\n\n this.writeModelValue(this.ngControl?.value ?? this.el.nativeElement.value);\n }\n\n onInput(e: Event) {\n this.writeModelValue((e.target as HTMLTextAreaElement)?.value);\n this.updateState();\n }\n\n resize(event?: Event) {\n this.el.nativeElement.style.height = 'auto';\n this.el.nativeElement.style.height = this.el.nativeElement.scrollHeight + 'px';\n\n if (parseFloat(this.el.nativeElement.style.height) >= parseFloat(this.el.nativeElement.style.maxHeight)) {\n this.el.nativeElement.style.overflowY = 'scroll';\n this.el.nativeElement.style.height = this.el.nativeElement.style.maxHeight;\n } else {\n this.el.nativeElement.style.overflow = 'hidden';\n }\n\n this.onResize.emit(event || {});\n }\n\n updateState() {\n if (this.autoResize()) {\n this.resize();\n }\n }\n\n onDestroy() {\n if (this.ngControlSubscription) {\n this.ngControlSubscription.unsubscribe();\n }\n }\n}\n\n@NgModule({\n imports: [Textarea],\n exports: [Textarea]\n})\nexport class TextareaModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["textarea_style"],"mappings":"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"}
1
+ {"version":3,"file":"wawjs-ngx-prime-textarea.mjs","sources":["../../src/textarea/style/textareastyle.ts","../../src/textarea/textarea.ts","../../src/textarea/wawjs-ngx-prime-textarea.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style as textarea_style } from '@wawjs/css-prime-styles/textarea';\nimport { BaseStyle } from '@wawjs/ngx-prime/base';\n\nconst style = /*css*/ `\n ${textarea_style}\n\n /* For ngx-prime */\n .p-textarea.ng-invalid.ng-dirty {\n border-color: dt('textarea.invalid.border.color');\n }\n .p-textarea.ng-invalid.ng-dirty::placeholder {\n color: dt('textarea.invalid.placeholder.color');\n }\n`;\n\nconst classes = {\n root: ({ instance }) => [\n 'p-textarea p-component',\n {\n 'p-filled': instance.$filled(),\n 'p-textarea-resizable ': instance.autoResize,\n 'p-variant-filled': instance.$variant() === 'filled',\n 'p-textarea-fluid': instance.hasFluid,\n 'p-inputfield-sm p-textarea-sm': instance.pSize() === 'small',\n 'p-textarea-lg p-inputfield-lg': instance.pSize() === 'large',\n 'p-invalid': instance.invalid()\n }\n ]\n};\n\n@Injectable()\nexport class TextareaStyle extends BaseStyle {\n name = 'textarea';\n\n style = style;\n\n classes = classes;\n}\n\n/**\n *\n * Textarea is a multi-line text input element.\n *\n * [Live Demo](https://www.ngx-prime.org/textarea/)\n *\n * @module textareastyle\n *\n */\nexport enum TextareaClasses {\n /**\n * Class name of the root element\n */\n root = 'p-textarea'\n}\n","import { booleanAttribute, computed, Directive, effect, inject, InjectionToken, input, NgModule, output } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { PARENT_INSTANCE } from '@wawjs/ngx-prime/basecomponent';\nimport { BaseModelHolder } from '@wawjs/ngx-prime/basemodelholder';\nimport { Bind } from '@wawjs/ngx-prime/bind';\nimport { Fluid } from '@wawjs/ngx-prime/fluid';\nimport { TextareaPassThrough } from '@wawjs/ngx-prime/types/textarea';\nimport { Subscription } from 'rxjs';\nimport { TextareaStyle } from './style/textareastyle';\n\nconst TEXTAREA_INSTANCE = new InjectionToken<Textarea>('TEXTAREA_INSTANCE');\n\n/**\n * Textarea adds styling and autoResize functionality to standard textarea element.\n * @group Components\n */\n@Directive({\n selector: '[pTextarea], [pInputTextarea]',\n standalone: true,\n host: {\n '[class]': \"cx('root')\",\n '(input)': 'onInput($event)'\n },\n providers: [TextareaStyle, { provide: TEXTAREA_INSTANCE, useExisting: Textarea }, { provide: PARENT_INSTANCE, useExisting: Textarea }],\n hostDirectives: [Bind]\n})\nexport class Textarea extends BaseModelHolder<TextareaPassThrough> {\n componentName = 'Textarea';\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n $pcTextarea: Textarea | undefined = inject(TEXTAREA_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n /**\n * Used to pass attributes to DOM elements inside the Textarea component.\n * @defaultValue undefined\n * @group Props\n */\n pTextareaPT = input<TextareaPassThrough>();\n /**\n * Indicates whether the component should be rendered without styles.\n * @defaultValue undefined\n * @group Props\n */\n pTextareaUnstyled = input<boolean | undefined>();\n\n /**\n * When present, textarea size changes as being typed.\n * @group Props\n */\n autoResize = input(false, { transform: booleanAttribute });\n /**\n * Defines the size of the component.\n * @group Props\n */\n pSize = input<'large' | 'small'>();\n /**\n * Specifies the input variant of the component.\n * @defaultValue undefined\n * @group Props\n */\n variant = input<'filled' | 'outlined' | undefined>();\n /**\n * Spans 100% width of the container when enabled.\n * @defaultValue undefined\n * @group Props\n */\n fluid = input(undefined, { transform: booleanAttribute });\n /**\n * When present, it specifies that the component should have invalid state style.\n * @defaultValue false\n * @group Props\n */\n invalid = input(undefined, { transform: booleanAttribute });\n\n $variant = computed(() => this.variant() || this.config.inputStyle() || this.config.inputVariant());\n /**\n * Callback to invoke on textarea resize.\n * @param {(Event | {})} event - Custom resize event.\n * @group Emits\n */\n onResize = output<Event | object>();\n\n ngControlSubscription: Subscription | undefined;\n\n _componentStyle = inject(TextareaStyle);\n\n ngControl = inject(NgControl, { optional: true, self: true });\n\n pcFluid: Fluid | null = inject(Fluid, { optional: true, host: true, skipSelf: true });\n\n get hasFluid() {\n return this.fluid() ?? !!this.pcFluid;\n }\n\n constructor() {\n super();\n effect(() => {\n const pt = this.pTextareaPT();\n\n pt && this.directivePT.set(pt);\n });\n\n effect(() => {\n this.pTextareaUnstyled() && this.directiveUnstyled.set(this.pTextareaUnstyled());\n });\n }\n\n onInit() {\n if (this.ngControl?.valueChanges) {\n this.ngControlSubscription = (this.ngControl as any).valueChanges.subscribe(() => {\n this.updateState();\n });\n }\n }\n\n onAfterViewInit() {\n if (this.autoResize()) this.resize();\n\n this.cd.detectChanges();\n }\n\n onAfterViewChecked() {\n this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n\n if (this.autoResize()) {\n this.resize();\n }\n\n this.writeModelValue(this.ngControl?.value ?? this.el.nativeElement.value);\n }\n\n onInput(e: Event) {\n this.writeModelValue((e.target as HTMLTextAreaElement)?.value);\n this.updateState();\n }\n\n resize(event?: Event) {\n this.el.nativeElement.style.height = 'auto';\n this.el.nativeElement.style.height = this.el.nativeElement.scrollHeight + 'px';\n\n if (parseFloat(this.el.nativeElement.style.height) >= parseFloat(this.el.nativeElement.style.maxHeight)) {\n this.el.nativeElement.style.overflowY = 'scroll';\n this.el.nativeElement.style.height = this.el.nativeElement.style.maxHeight;\n } else {\n this.el.nativeElement.style.overflow = 'hidden';\n }\n\n this.onResize.emit(event || {});\n }\n\n updateState() {\n if (this.autoResize()) {\n this.resize();\n }\n }\n\n onDestroy() {\n if (this.ngControlSubscription) {\n this.ngControlSubscription.unsubscribe();\n }\n }\n}\n\n@NgModule({\n imports: [Textarea],\n exports: [Textarea]\n})\nexport class TextareaModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["textarea_style"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ //# sourceMappingURL=wawjs-ngx-prime-types-link.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wawjs-ngx-prime-types-link.mjs","sources":["../../src/types/link/wawjs-ngx-prime-types-link.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"AAAA;;AAEG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wawjs/ngx-prime",
3
- "version": "22.0.2",
3
+ "version": "22.0.4",
4
4
  "author": "Web Art Work",
5
5
  "description": "ngx-prime is an independent MIT-licensed Angular UI component library continuing from the ngx-prime v21.1.9 codebase.",
6
6
  "homepage": "https://github.com/WebArtWork/ngx-prime",
@@ -42,10 +42,10 @@
42
42
  "rxjs": "^6.0.0 || ^7.8.1"
43
43
  },
44
44
  "dependencies": {
45
- "@wawjs/css-prime-styled": "^1.0.0",
46
- "@wawjs/css-prime-utils": "^1.0.0",
47
- "@wawjs/css-prime-styles": "^1.0.0",
48
- "@wawjs/css-prime-motion": "^1.0.0",
45
+ "@wawjs/css-prime-styled": "^1.1.0",
46
+ "@wawjs/css-prime-utils": "^1.1.0",
47
+ "@wawjs/css-prime-styles": "^1.1.0",
48
+ "@wawjs/css-prime-motion": "^1.1.0",
49
49
  "tslib": "^2.3.0"
50
50
  },
51
51
  "module": "fesm2022/wawjs-ngx-prime.mjs",
@@ -530,6 +530,10 @@
530
530
  "types": "./types/wawjs-ngx-prime-knob.d.ts",
531
531
  "default": "./fesm2022/wawjs-ngx-prime-knob.mjs"
532
532
  },
533
+ "./link": {
534
+ "types": "./types/wawjs-ngx-prime-link.d.ts",
535
+ "default": "./fesm2022/wawjs-ngx-prime-link.mjs"
536
+ },
533
537
  "./listbox": {
534
538
  "types": "./types/wawjs-ngx-prime-listbox.d.ts",
535
539
  "default": "./fesm2022/wawjs-ngx-prime-listbox.mjs"
@@ -914,6 +918,10 @@
914
918
  "types": "./types/wawjs-ngx-prime-types-knob.d.ts",
915
919
  "default": "./fesm2022/wawjs-ngx-prime-types-knob.mjs"
916
920
  },
921
+ "./types/link": {
922
+ "types": "./types/wawjs-ngx-prime-types-link.d.ts",
923
+ "default": "./fesm2022/wawjs-ngx-prime-types-link.mjs"
924
+ },
917
925
  "./types/listbox": {
918
926
  "types": "./types/wawjs-ngx-prime-types-listbox.d.ts",
919
927
  "default": "./fesm2022/wawjs-ngx-prime-types-listbox.mjs"
@@ -0,0 +1,4 @@
1
+ {
2
+ "module": "../../fesm2022/wawjs-ngx-prime-types-link.mjs",
3
+ "typings": "../wawjs-ngx-prime-types-link.d.ts"
4
+ }
@@ -0,0 +1,126 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { BaseComponent } from '@wawjs/ngx-prime/basecomponent';
3
+ import * as i1 from '@wawjs/ngx-prime/bind';
4
+ import { Bind } from '@wawjs/ngx-prime/bind';
5
+ import { LinkPassThrough, LinkIconPosition } from '@wawjs/ngx-prime/types/link';
6
+ import * as _wawjs_css_prime_styled from '@wawjs/css-prime-styled';
7
+ import { BaseStyle } from '@wawjs/ngx-prime/base';
8
+
9
+ declare class LinkStyle extends BaseStyle {
10
+ name: string;
11
+ style: _wawjs_css_prime_styled.StyleType;
12
+ classes: {
13
+ root: ({ instance }: {
14
+ instance: any;
15
+ }) => (string | {
16
+ 'p-disabled': any;
17
+ })[];
18
+ icon: ({ instance }: {
19
+ instance: any;
20
+ }) => (string | {
21
+ 'p-link-icon-right': boolean;
22
+ })[];
23
+ };
24
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LinkStyle, never>;
25
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<LinkStyle>;
26
+ }
27
+ /**
28
+ *
29
+ * Link renders a semantic, styled anchor for display-only navigation.
30
+ *
31
+ * [Live Demo](https://ngx-prime.org/link)
32
+ *
33
+ * @module linkstyle
34
+ *
35
+ */
36
+ declare enum LinkClasses {
37
+ /**
38
+ * Class name of the root element
39
+ */
40
+ root = "p-link",
41
+ /**
42
+ * Class name of the icon element
43
+ */
44
+ icon = "p-link-icon"
45
+ }
46
+
47
+ type LinkType = 'email' | 'tel' | 'sms' | 'whatsapp' | 'url' | 'custom';
48
+ /**
49
+ * Link renders a semantic, styled anchor for display-only navigation. It
50
+ * derives `mailto:`, `tel:`, `sms:`, WhatsApp, or `https:` targets from
51
+ * `value` based on `type`, or use `href` directly for a custom target.
52
+ *
53
+ * [Live Demo](https://ngx-prime.org/link)
54
+ *
55
+ * @group Components
56
+ */
57
+ declare class Link extends BaseComponent<LinkPassThrough> {
58
+ componentName: string;
59
+ $pcLink: Link | undefined;
60
+ bindDirectiveInstance: Bind;
61
+ _componentStyle: LinkStyle;
62
+ private readonly _renderer;
63
+ /**
64
+ * Style class of the component.
65
+ * @group Props
66
+ */
67
+ styleClass: _angular_core.InputSignal<string | undefined>;
68
+ /**
69
+ * Text or address the href is derived from when `href` is not set.
70
+ * @group Props
71
+ */
72
+ value: _angular_core.InputSignal<string>;
73
+ /**
74
+ * Determines how `value` is turned into an href.
75
+ * @group Props
76
+ */
77
+ type: _angular_core.InputSignal<LinkType>;
78
+ /**
79
+ * Explicit href, takes precedence over the value derived from `value`/`type`.
80
+ * @group Props
81
+ */
82
+ href: _angular_core.InputSignal<string | null>;
83
+ /**
84
+ * Native anchor target.
85
+ * @group Props
86
+ */
87
+ target: _angular_core.InputSignal<string>;
88
+ /**
89
+ * Explicit rel, defaults to `noopener noreferrer` for `_blank` targets.
90
+ * @group Props
91
+ */
92
+ rel: _angular_core.InputSignal<string | null>;
93
+ /**
94
+ * Icon shown next to the anchor content, e.g. `pi pi-envelope`.
95
+ * @group Props
96
+ */
97
+ icon: _angular_core.InputSignal<string | undefined>;
98
+ /**
99
+ * Position of the icon relative to the anchor content.
100
+ * @group Props
101
+ */
102
+ iconPos: _angular_core.InputSignal<LinkIconPosition>;
103
+ /**
104
+ * When true, the link is not navigable and click events are suppressed.
105
+ * @group Props
106
+ */
107
+ disabled: _angular_core.InputSignal<boolean>;
108
+ linkHref: _angular_core.Signal<string | null>;
109
+ linkRel: _angular_core.Signal<string | null>;
110
+ isClickable: _angular_core.Signal<boolean>;
111
+ get hostHref(): string | null;
112
+ get hostRel(): string | null;
113
+ get hostAriaDisabled(): 'true' | null;
114
+ get dataP(): string | undefined;
115
+ private readonly _elementRef;
116
+ private readonly _iconEl;
117
+ constructor();
118
+ onAfterViewChecked(): void;
119
+ onClick(event: MouseEvent): void;
120
+ private _syncIcon;
121
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Link, never>;
122
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Link, "a[pLink]", never, { "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "rel": { "alias": "rel"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPos": { "alias": "iconPos"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
123
+ }
124
+
125
+ export { Link, LinkClasses, LinkStyle };
126
+ export type { LinkType };
@@ -0,0 +1,33 @@
1
+ import { PassThrough, PassThroughOption } from '@wawjs/ngx-prime/api';
2
+
3
+ /**
4
+ * Custom pass-through(pt) options.
5
+ * @template I Type of instance.
6
+ *
7
+ * @see {@link Link.pt}
8
+ * @group Interface
9
+ */
10
+ interface LinkPassThroughOptions<I = unknown> {
11
+ /**
12
+ * Used to pass attributes to the root's DOM element.
13
+ */
14
+ root?: PassThroughOption<HTMLAnchorElement, I>;
15
+ /**
16
+ * Used to pass attributes to the icon's DOM element.
17
+ */
18
+ icon?: PassThroughOption<HTMLElement, I>;
19
+ }
20
+ /**
21
+ * Defines valid pass-through options in Link component.
22
+ * @see {@link LinkPassThroughOptions}
23
+ *
24
+ * @template I Type of instance.
25
+ */
26
+ type LinkPassThrough<I = unknown> = PassThrough<I, LinkPassThroughOptions<I>>;
27
+ /**
28
+ * Position of the icon relative to the label.
29
+ * @group Types
30
+ */
31
+ type LinkIconPosition = 'left' | 'right';
32
+
33
+ export type { LinkIconPosition, LinkPassThrough, LinkPassThroughOptions };