ng-luna 0.0.1 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,6 +6,8 @@ An Angular component library inspired by Windows XP aesthetics, built with XP.cs
6
6
 
7
7
  ng-luna provides a collection of Angular components styled to match the classic Windows XP design language. The library uses [XP.css](https://botoxparty.github.io/XP.css/) for styling and [IBM Plex](https://www.ibm.com/plex/) fonts for typography.
8
8
 
9
+ All components are **standalone** and implement Angular's reactive forms API where applicable, making them compatible with `FormControl`, `FormGroup`, and `ngModel`.
10
+
9
11
  ## Installation
10
12
 
11
13
  ```bash
@@ -18,24 +20,30 @@ This library requires the following peer dependencies:
18
20
 
19
21
  - `@angular/common`: 19.2.15
20
22
  - `@angular/core`: 19.2.15
23
+ - `@angular/forms`: 19.2.15
21
24
 
22
25
  ## Usage
23
26
 
24
- ### Import the Module
27
+ ### Import Components
25
28
 
26
- Import the components you need in your Angular application:
29
+ Import the components you need in your Angular application. All components are standalone:
27
30
 
28
31
  ```typescript
29
32
  import { ButtonComponent } from 'ng-luna';
33
+
34
+ @Component({
35
+ imports: [ ButtonComponent ],
36
+ // ...
37
+ })
30
38
  ```
31
39
 
40
+ ## Components
41
+
32
42
  ### Button Component
33
43
 
34
- The `luna-button` component provides a Windows XP-styled button:
44
+ The `luna-button` component provides a Windows XP-styled button.
35
45
 
36
- ```html
37
- <luna-button (click)="handleClick()">Click Me</luna-button>
38
- ```
46
+ **Selector:** `luna-button`
39
47
 
40
48
  #### Inputs
41
49
 
@@ -71,6 +79,337 @@ The `luna-button` component provides a Windows XP-styled button:
71
79
  </luna-button>
72
80
  ```
73
81
 
82
+ ### Checkbox Component
83
+
84
+ The `luna-checkbox` component provides a Windows XP-styled checkbox that implements `ControlValueAccessor` for reactive forms support.
85
+
86
+ **Selector:** `luna-checkbox`
87
+
88
+ #### Inputs
89
+
90
+ - `disabled: boolean` - Whether the checkbox is disabled (default: `false`)
91
+ - `label?: string` - Label text for the checkbox
92
+ - `name?: string` - Name attribute for the checkbox
93
+ - `value?: string` - Value attribute for the checkbox
94
+
95
+ #### Outputs
96
+
97
+ - `change: EventEmitter<boolean>` - Emitted when the checkbox state changes
98
+
99
+ #### Example
100
+
101
+ ```html
102
+ <luna-checkbox
103
+ [(ngModel)]="isChecked"
104
+ label="Accept terms and conditions"
105
+ (change)="onCheckboxChange($event)">
106
+ </luna-checkbox>
107
+ ```
108
+
109
+ ### Fieldset Component
110
+
111
+ The `luna-fieldset` component provides a Windows XP-styled fieldset for grouping form controls.
112
+
113
+ **Selector:** `luna-fieldset`
114
+
115
+ #### Inputs
116
+
117
+ - `legend?: string` - Legend text for the fieldset
118
+
119
+ #### Example
120
+
121
+ ```html
122
+ <luna-fieldset legend="User Information">
123
+ <!-- Form controls here -->
124
+ </luna-fieldset>
125
+ ```
126
+
127
+ ### Input Component
128
+
129
+ The `luna-input` component provides a Windows XP-styled text input that implements `ControlValueAccessor` for reactive forms support.
130
+
131
+ **Selector:** `luna-input`
132
+
133
+ #### Inputs
134
+
135
+ - `disabled: boolean` - Whether the input is disabled (default: `false`)
136
+ - `name?: string` - Name attribute for the input
137
+ - `placeholder?: string` - Placeholder text
138
+ - `type: InputType` - Input type: `'text' | 'password' | 'email'` (default: `'text'`)
139
+ - `readonly: boolean` - Whether the input is readonly (default: `false`)
140
+
141
+ #### Outputs
142
+
143
+ - `change: EventEmitter<string>` - Emitted when the input value changes
144
+ - `blur: EventEmitter<FocusEvent>` - Emitted when the input loses focus
145
+
146
+ #### Example
147
+
148
+ ```html
149
+ <luna-input
150
+ [(ngModel)]="username"
151
+ type="text"
152
+ placeholder="Enter username"
153
+ (change)="onInputChange($event)">
154
+ </luna-input>
155
+ ```
156
+
157
+ ### Progress Component
158
+
159
+ The `luna-progress` component provides a Windows XP-styled progress bar.
160
+
161
+ **Selector:** `luna-progress`
162
+
163
+ #### Inputs
164
+
165
+ - `value?: number` - Current progress value
166
+ - `max: number` - Maximum value (default: `100`)
167
+
168
+ #### Example
169
+
170
+ ```html
171
+ <luna-progress
172
+ [value]="progressValue"
173
+ [max]="100">
174
+ </luna-progress>
175
+ ```
176
+
177
+ ### Radio Component
178
+
179
+ The `luna-radio` component provides a Windows XP-styled radio button that implements `ControlValueAccessor` for reactive forms support.
180
+
181
+ **Selector:** `luna-radio`
182
+
183
+ #### Inputs
184
+
185
+ - `disabled: boolean` - Whether the radio button is disabled (default: `false`)
186
+ - `label?: string` - Label text for the radio button
187
+ - `name?: string` - Name attribute for the radio button (required for grouping)
188
+ - `value?: string` - Value attribute for the radio button
189
+
190
+ #### Outputs
191
+
192
+ - `change: EventEmitter<string>` - Emitted when the radio button is selected
193
+
194
+ #### Example
195
+
196
+ ```html
197
+ <luna-radio
198
+ name="option"
199
+ value="option1"
200
+ label="Option 1"
201
+ [(ngModel)]="selectedOption">
202
+ </luna-radio>
203
+ <luna-radio
204
+ name="option"
205
+ value="option2"
206
+ label="Option 2"
207
+ [(ngModel)]="selectedOption">
208
+ </luna-radio>
209
+ ```
210
+
211
+ ### Select Component
212
+
213
+ The `luna-select` component provides a Windows XP-styled select dropdown that implements `ControlValueAccessor` for reactive forms support.
214
+
215
+ **Selector:** `luna-select`
216
+
217
+ #### Inputs
218
+
219
+ - `disabled: boolean` - Whether the select is disabled (default: `false`)
220
+ - `name?: string` - Name attribute for the select
221
+
222
+ #### Outputs
223
+
224
+ - `change: EventEmitter<string>` - Emitted when the selection changes
225
+
226
+ #### Example
227
+
228
+ ```html
229
+ <luna-select
230
+ [(ngModel)]="selectedValue"
231
+ (change)="onSelectChange($event)">
232
+ <option value="option1">Option 1</option>
233
+ <option value="option2">Option 2</option>
234
+ </luna-select>
235
+ ```
236
+
237
+ ### Slider Component
238
+
239
+ The `luna-slider` component provides a Windows XP-styled range slider that implements `ControlValueAccessor` for reactive forms support.
240
+
241
+ **Selector:** `luna-slider`
242
+
243
+ #### Inputs
244
+
245
+ - `disabled: boolean` - Whether the slider is disabled (default: `false`)
246
+ - `name?: string` - Name attribute for the slider
247
+ - `min: number` - Minimum value (default: `0`)
248
+ - `max: number` - Maximum value (default: `100`)
249
+ - `step: number` - Step value (default: `1`)
250
+ - `vertical: boolean` - Whether the slider is vertical (default: `false`)
251
+ - `boxIndicator: boolean` - Whether to show a box indicator (default: `false`)
252
+
253
+ #### Outputs
254
+
255
+ - `change: EventEmitter<number>` - Emitted when the slider value changes
256
+
257
+ #### Example
258
+
259
+ ```html
260
+ <luna-slider
261
+ [(ngModel)]="sliderValue"
262
+ [min]="0"
263
+ [max]="100"
264
+ [step]="1"
265
+ (change)="onSliderChange($event)">
266
+ </luna-slider>
267
+ ```
268
+
269
+ ### Tabs Component
270
+
271
+ The `luna-tabs` component provides a Windows XP-styled tab interface.
272
+
273
+ **Selector:** `luna-tabs`
274
+
275
+ #### Inputs
276
+
277
+ - `tabs: Tab[]` - Array of tab objects with `id`, `label`, and optional `content`
278
+ - `activeTabId?: string` - ID of the currently active tab
279
+
280
+ #### Outputs
281
+
282
+ - `tabChange: EventEmitter<string>` - Emitted when a tab is selected
283
+
284
+ #### Example
285
+
286
+ ```html
287
+ <luna-tabs
288
+ [tabs]="tabs"
289
+ [activeTabId]="activeTabId"
290
+ (tabChange)="onTabChange($event)">
291
+ </luna-tabs>
292
+ ```
293
+
294
+ ```typescript
295
+ tabs: Tab[] = [
296
+ { id: 'tab1', label: 'Tab 1', content: 'Content 1' },
297
+ { id: 'tab2', label: 'Tab 2', content: 'Content 2' }
298
+ ];
299
+ ```
300
+
301
+ ### Textarea Component
302
+
303
+ The `luna-textarea` component provides a Windows XP-styled textarea that implements `ControlValueAccessor` for reactive forms support.
304
+
305
+ **Selector:** `luna-textarea`
306
+
307
+ #### Inputs
308
+
309
+ - `disabled: boolean` - Whether the textarea is disabled (default: `false`)
310
+ - `name?: string` - Name attribute for the textarea
311
+ - `placeholder?: string` - Placeholder text
312
+ - `rows?: number` - Number of visible rows
313
+ - `cols?: number` - Number of visible columns
314
+ - `readonly: boolean` - Whether the textarea is readonly (default: `false`)
315
+
316
+ #### Outputs
317
+
318
+ - `change: EventEmitter<string>` - Emitted when the textarea value changes
319
+ - `blur: EventEmitter<FocusEvent>` - Emitted when the textarea loses focus
320
+
321
+ #### Example
322
+
323
+ ```html
324
+ <luna-textarea
325
+ [(ngModel)]="message"
326
+ [rows]="5"
327
+ [cols]="40"
328
+ placeholder="Enter your message"
329
+ (change)="onTextareaChange($event)">
330
+ </luna-textarea>
331
+ ```
332
+
333
+ ### Window Component
334
+
335
+ The `luna-window` component provides a Windows XP-styled window with title bar and controls.
336
+
337
+ **Selector:** `luna-window`
338
+
339
+ #### Inputs
340
+
341
+ - `title?: string` - Window title text
342
+ - `showMinimize: boolean` - Whether to show the minimize button (default: `true`)
343
+ - `showMaximize: boolean` - Whether to show the maximize button (default: `true`)
344
+ - `showHelp: boolean` - Whether to show the help button (default: `false`)
345
+ - `showClose: boolean` - Whether to show the close button (default: `true`)
346
+ - `isMaximized: boolean` - Whether the window is currently maximized (default: `false`)
347
+
348
+ #### Outputs
349
+
350
+ - `minimize: EventEmitter<void>` - Emitted when the minimize button is clicked
351
+ - `maximize: EventEmitter<void>` - Emitted when the maximize button is clicked
352
+ - `restore: EventEmitter<void>` - Emitted when the restore button is clicked
353
+ - `help: EventEmitter<void>` - Emitted when the help button is clicked
354
+ - `close: EventEmitter<void>` - Emitted when the close button is clicked
355
+
356
+ #### Example
357
+
358
+ ```html
359
+ <luna-window
360
+ title="My Application"
361
+ [showHelp]="true"
362
+ (minimize)="onMinimize()"
363
+ (maximize)="onMaximize()"
364
+ (close)="onClose()">
365
+ <div class="window-body">
366
+ Window content goes here
367
+ </div>
368
+ </luna-window>
369
+ ```
370
+
371
+ ## Reactive Forms Support
372
+
373
+ Components that implement `ControlValueAccessor` (checkbox, input, radio, select, slider, textarea) can be used with Angular's reactive forms:
374
+
375
+ ```typescript
376
+ import { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';
377
+
378
+ export class MyComponent
379
+ {
380
+ form: FormGroup;
381
+
382
+ constructor(private fb: FormBuilder)
383
+ {
384
+ this.form = this.fb.group({
385
+ username: [''],
386
+ email: [''],
387
+ agreeToTerms: [false]
388
+ });
389
+ }
390
+ }
391
+ ```
392
+
393
+ ```html
394
+ <form [formGroup]="form">
395
+ <luna-input
396
+ formControlName="username"
397
+ placeholder="Username">
398
+ </luna-input>
399
+
400
+ <luna-input
401
+ formControlName="email"
402
+ type="email"
403
+ placeholder="Email">
404
+ </luna-input>
405
+
406
+ <luna-checkbox
407
+ formControlName="agreeToTerms"
408
+ label="I agree to the terms">
409
+ </luna-checkbox>
410
+ </form>
411
+ ```
412
+
74
413
  ## Development
75
414
 
76
415
  ### Building the Library
@@ -86,9 +425,22 @@ ng-luna/
86
425
  ├── src/
87
426
  │ ├── controls/ # Component library controls
88
427
  │ │ ├── button/ # Button component
428
+ │ │ ├── checkbox/ # Checkbox component
429
+ │ │ ├── fieldset/ # Fieldset component
430
+ │ │ ├── input/ # Input component
431
+ │ │ ├── progress/ # Progress component
432
+ │ │ ├── radio/ # Radio component
433
+ │ │ ├── select/ # Select component
434
+ │ │ ├── slider/ # Slider component
435
+ │ │ ├── tabs/ # Tabs component
436
+ │ │ ├── textarea/ # Textarea component
437
+ │ │ ├── window/ # Window component
89
438
  │ │ └── index.ts # Controls barrel export
90
439
  │ ├── theme/ # Theme files (fonts, styles)
91
- │ │ └── _fonts.scss # IBM Plex font imports
440
+ │ │ ├── _fonts.scss # IBM Plex font imports
441
+ │ │ ├── _palette.scss # Color palette
442
+ │ │ ├── _graphics.scss # SVG graphics
443
+ │ │ └── _global.scss # Global styles
92
444
  │ └── public-api.ts # Public API surface
93
445
  ├── ng-package.json # ng-packagr configuration
94
446
  ├── package.json # Package dependencies
@@ -98,7 +450,7 @@ ng-luna/
98
450
  ## Dependencies
99
451
 
100
452
  - **XP.css** (v0.2.6) - Windows XP styling framework
101
- - **@ibm/plex** (v6.4.1) - IBM Plex font families
453
+ - **@ibm/plex** (v6.4.1) - IBM Plex font families (fonts are bundled with the library)
102
454
  - **@angular/cdk** (v19.2.17) - Angular Component Dev Kit
103
455
 
104
456
  ## Publishing
@@ -155,4 +507,3 @@ npm publish ./dist
155
507
  MIT License - see [LICENSE](LICENSE) file for details.
156
508
 
157
509
  Copyright (c) 2025 Adam R Moss
158
-
@@ -1,29 +1,26 @@
1
1
  import { EventEmitter } from '@angular/core';
2
+ import { LunaControl } from '../luna-control';
2
3
  import * as i0 from "@angular/core";
3
4
  export type ButtonType = 'button' | 'submit' | 'reset';
4
5
  export type FormEnctype = 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
5
6
  export type FormMethod = 'get' | 'post';
6
7
  export type FormTarget = '_self' | '_blank' | '_parent' | '_top';
7
8
  export type PopoverTargetAction = 'show' | 'hide' | 'toggle';
8
- export declare class ButtonComponent {
9
- autofocus: boolean;
9
+ export declare class ButtonComponent extends LunaControl {
10
10
  command?: string;
11
11
  commandfor?: string;
12
- disabled: boolean;
13
12
  form?: string;
14
13
  formaction?: string;
15
14
  formenctype?: FormEnctype;
16
15
  formmethod?: FormMethod;
17
16
  formnovalidate: boolean;
18
17
  formtarget?: FormTarget;
19
- name?: string;
20
18
  popovertarget?: string;
21
19
  popovertargetaction?: PopoverTargetAction;
22
- tabindex?: number;
23
20
  type: ButtonType;
24
21
  value?: string;
25
22
  click: EventEmitter<MouseEvent>;
26
23
  onClick(event: MouseEvent): void;
27
24
  static ɵfac: i0.ɵɵFactoryDeclaration<ButtonComponent, never>;
28
- static ɵcmp: i0.ɵɵComponentDeclaration<ButtonComponent, "luna-button", never, { "autofocus": { "alias": "autofocus"; "required": false; }; "command": { "alias": "command"; "required": false; }; "commandfor": { "alias": "commandfor"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "form": { "alias": "form"; "required": false; }; "formaction": { "alias": "formaction"; "required": false; }; "formenctype": { "alias": "formenctype"; "required": false; }; "formmethod": { "alias": "formmethod"; "required": false; }; "formnovalidate": { "alias": "formnovalidate"; "required": false; }; "formtarget": { "alias": "formtarget"; "required": false; }; "name": { "alias": "name"; "required": false; }; "popovertarget": { "alias": "popovertarget"; "required": false; }; "popovertargetaction": { "alias": "popovertargetaction"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "type": { "alias": "type"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "click": "click"; }, never, ["*"], true, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<ButtonComponent, "luna-button", never, { "command": { "alias": "command"; "required": false; }; "commandfor": { "alias": "commandfor"; "required": false; }; "form": { "alias": "form"; "required": false; }; "formaction": { "alias": "formaction"; "required": false; }; "formenctype": { "alias": "formenctype"; "required": false; }; "formmethod": { "alias": "formmethod"; "required": false; }; "formnovalidate": { "alias": "formnovalidate"; "required": false; }; "formtarget": { "alias": "formtarget"; "required": false; }; "popovertarget": { "alias": "popovertarget"; "required": false; }; "popovertargetaction": { "alias": "popovertargetaction"; "required": false; }; "type": { "alias": "type"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "click": "click"; }, never, ["*"], true, never>;
29
26
  }
@@ -1,10 +1,9 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
+ import { LunaControl } from '../luna-control';
3
4
  import * as i0 from "@angular/core";
4
- export declare class CheckboxComponent implements ControlValueAccessor {
5
- disabled: boolean;
5
+ export declare class CheckboxComponent extends LunaControl implements ControlValueAccessor {
6
6
  label?: string;
7
- name?: string;
8
7
  value?: string;
9
8
  change: EventEmitter<boolean>;
10
9
  checked: boolean;
@@ -16,5 +15,5 @@ export declare class CheckboxComponent implements ControlValueAccessor {
16
15
  registerOnTouched(fn: () => void): void;
17
16
  setDisabledState(isDisabled: boolean): void;
18
17
  static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxComponent, never>;
19
- static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "luna-checkbox", never, { "disabled": { "alias": "disabled"; "required": false; }; "label": { "alias": "label"; "required": false; }; "name": { "alias": "name"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "change": "change"; }, never, ["*"], true, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "luna-checkbox", never, { "label": { "alias": "label"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "change": "change"; }, never, ["*"], true, never>;
20
19
  }
@@ -1,5 +1,6 @@
1
+ import { LunaControl } from '../luna-control';
1
2
  import * as i0 from "@angular/core";
2
- export declare class FieldsetComponent {
3
+ export declare class FieldsetComponent extends LunaControl {
3
4
  legend?: string;
4
5
  static ɵfac: i0.ɵɵFactoryDeclaration<FieldsetComponent, never>;
5
6
  static ɵcmp: i0.ɵɵComponentDeclaration<FieldsetComponent, "luna-fieldset", never, { "legend": { "alias": "legend"; "required": false; }; }, {}, never, ["*"], true, never>;
@@ -1,13 +1,12 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
+ import { LunaControl } from '../luna-control';
3
4
  import * as i0 from "@angular/core";
4
5
  export type InputType = 'text' | 'password' | 'email';
5
- export declare class InputComponent implements ControlValueAccessor {
6
- disabled: boolean;
7
- name?: string;
6
+ export declare class InputComponent extends LunaControl implements ControlValueAccessor {
8
7
  placeholder?: string;
9
- type: InputType;
10
8
  readonly: boolean;
9
+ type: InputType;
11
10
  change: EventEmitter<string>;
12
11
  blur: EventEmitter<FocusEvent>;
13
12
  value: string;
@@ -20,5 +19,5 @@ export declare class InputComponent implements ControlValueAccessor {
20
19
  registerOnTouched(fn: () => void): void;
21
20
  setDisabledState(isDisabled: boolean): void;
22
21
  static ɵfac: i0.ɵɵFactoryDeclaration<InputComponent, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<InputComponent, "luna-input", never, { "disabled": { "alias": "disabled"; "required": false; }; "name": { "alias": "name"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "type": { "alias": "type"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; }, { "change": "change"; "blur": "blur"; }, never, never, true, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputComponent, "luna-input", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "type": { "alias": "type"; "required": false; }; }, { "change": "change"; "blur": "blur"; }, never, never, true, never>;
24
23
  }
@@ -0,0 +1,10 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare abstract class LunaControl {
3
+ id?: string;
4
+ name?: string;
5
+ disabled: boolean;
6
+ tabindex?: number;
7
+ autofocus: boolean;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<LunaControl, never>;
9
+ static ɵdir: i0.ɵɵDirectiveDeclaration<LunaControl, never, never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; }, {}, never, never, true, never>;
10
+ }
@@ -1,7 +1,8 @@
1
+ import { LunaControl } from '../luna-control';
1
2
  import * as i0 from "@angular/core";
2
- export declare class ProgressComponent {
3
- value?: number;
3
+ export declare class ProgressComponent extends LunaControl {
4
4
  max: number;
5
+ value?: number;
5
6
  static ɵfac: i0.ɵɵFactoryDeclaration<ProgressComponent, never>;
6
- static ɵcmp: i0.ɵɵComponentDeclaration<ProgressComponent, "luna-progress", never, { "value": { "alias": "value"; "required": false; }; "max": { "alias": "max"; "required": false; }; }, {}, never, never, true, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<ProgressComponent, "luna-progress", never, { "max": { "alias": "max"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, {}, never, never, true, never>;
7
8
  }
@@ -1,10 +1,9 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
+ import { LunaControl } from '../luna-control';
3
4
  import * as i0 from "@angular/core";
4
- export declare class RadioComponent implements ControlValueAccessor {
5
- disabled: boolean;
5
+ export declare class RadioComponent extends LunaControl implements ControlValueAccessor {
6
6
  label?: string;
7
- name?: string;
8
7
  value?: string;
9
8
  change: EventEmitter<string>;
10
9
  checked: boolean;
@@ -16,5 +15,5 @@ export declare class RadioComponent implements ControlValueAccessor {
16
15
  registerOnTouched(fn: () => void): void;
17
16
  setDisabledState(isDisabled: boolean): void;
18
17
  static ɵfac: i0.ɵɵFactoryDeclaration<RadioComponent, never>;
19
- static ɵcmp: i0.ɵɵComponentDeclaration<RadioComponent, "luna-radio", never, { "disabled": { "alias": "disabled"; "required": false; }; "label": { "alias": "label"; "required": false; }; "name": { "alias": "name"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "change": "change"; }, never, ["*"], true, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<RadioComponent, "luna-radio", never, { "label": { "alias": "label"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "change": "change"; }, never, ["*"], true, never>;
20
19
  }
@@ -1,9 +1,8 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
+ import { LunaControl } from '../luna-control';
3
4
  import * as i0 from "@angular/core";
4
- export declare class SelectComponent implements ControlValueAccessor {
5
- disabled: boolean;
6
- name?: string;
5
+ export declare class SelectComponent extends LunaControl implements ControlValueAccessor {
7
6
  change: EventEmitter<string>;
8
7
  value: string;
9
8
  private onChange;
@@ -14,5 +13,5 @@ export declare class SelectComponent implements ControlValueAccessor {
14
13
  registerOnTouched(fn: () => void): void;
15
14
  setDisabledState(isDisabled: boolean): void;
16
15
  static ɵfac: i0.ɵɵFactoryDeclaration<SelectComponent, never>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent, "luna-select", never, { "disabled": { "alias": "disabled"; "required": false; }; "name": { "alias": "name"; "required": false; }; }, { "change": "change"; }, never, ["*"], true, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent, "luna-select", never, {}, { "change": "change"; }, never, ["*"], true, never>;
18
17
  }
@@ -1,14 +1,13 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
+ import { LunaControl } from '../luna-control';
3
4
  import * as i0 from "@angular/core";
4
- export declare class SliderComponent implements ControlValueAccessor {
5
- disabled: boolean;
6
- name?: string;
7
- min: number;
5
+ export declare class SliderComponent extends LunaControl implements ControlValueAccessor {
6
+ boxIndicator: boolean;
8
7
  max: number;
8
+ min: number;
9
9
  step: number;
10
10
  vertical: boolean;
11
- boxIndicator: boolean;
12
11
  change: EventEmitter<number>;
13
12
  value: number;
14
13
  private onChange;
@@ -20,5 +19,5 @@ export declare class SliderComponent implements ControlValueAccessor {
20
19
  registerOnTouched(fn: () => void): void;
21
20
  setDisabledState(isDisabled: boolean): void;
22
21
  static ɵfac: i0.ɵɵFactoryDeclaration<SliderComponent, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<SliderComponent, "luna-slider", never, { "disabled": { "alias": "disabled"; "required": false; }; "name": { "alias": "name"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "step": { "alias": "step"; "required": false; }; "vertical": { "alias": "vertical"; "required": false; }; "boxIndicator": { "alias": "boxIndicator"; "required": false; }; }, { "change": "change"; }, never, never, true, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<SliderComponent, "luna-slider", never, { "boxIndicator": { "alias": "boxIndicator"; "required": false; }; "max": { "alias": "max"; "required": false; }; "min": { "alias": "min"; "required": false; }; "step": { "alias": "step"; "required": false; }; "vertical": { "alias": "vertical"; "required": false; }; }, { "change": "change"; }, never, never, true, never>;
24
23
  }
@@ -1,16 +1,17 @@
1
1
  import { EventEmitter } from '@angular/core';
2
+ import { LunaControl } from '../luna-control';
2
3
  import * as i0 from "@angular/core";
3
4
  export interface Tab {
4
5
  id: string;
5
6
  label: string;
6
7
  content?: string;
7
8
  }
8
- export declare class TabsComponent {
9
- tabs: Tab[];
9
+ export declare class TabsComponent extends LunaControl {
10
10
  activeTabId?: string;
11
+ tabs: Tab[];
11
12
  tabChange: EventEmitter<string>;
12
13
  selectTab(tabId: string): void;
13
14
  isActive(tabId: string): boolean;
14
15
  static ɵfac: i0.ɵɵFactoryDeclaration<TabsComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<TabsComponent, "luna-tabs", never, { "tabs": { "alias": "tabs"; "required": false; }; "activeTabId": { "alias": "activeTabId"; "required": false; }; }, { "tabChange": "tabChange"; }, never, ["*"], true, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<TabsComponent, "luna-tabs", never, { "activeTabId": { "alias": "activeTabId"; "required": false; }; "tabs": { "alias": "tabs"; "required": false; }; }, { "tabChange": "tabChange"; }, never, ["*"], true, never>;
16
17
  }
@@ -1,13 +1,12 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
+ import { LunaControl } from '../luna-control';
3
4
  import * as i0 from "@angular/core";
4
- export declare class TextareaComponent implements ControlValueAccessor {
5
- disabled: boolean;
6
- name?: string;
7
- placeholder?: string;
8
- rows?: number;
5
+ export declare class TextareaComponent extends LunaControl implements ControlValueAccessor {
9
6
  cols?: number;
7
+ placeholder?: string;
10
8
  readonly: boolean;
9
+ rows?: number;
11
10
  change: EventEmitter<string>;
12
11
  blur: EventEmitter<FocusEvent>;
13
12
  value: string;
@@ -20,5 +19,5 @@ export declare class TextareaComponent implements ControlValueAccessor {
20
19
  registerOnTouched(fn: () => void): void;
21
20
  setDisabledState(isDisabled: boolean): void;
22
21
  static ɵfac: i0.ɵɵFactoryDeclaration<TextareaComponent, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<TextareaComponent, "luna-textarea", never, { "disabled": { "alias": "disabled"; "required": false; }; "name": { "alias": "name"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "cols": { "alias": "cols"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; }, { "change": "change"; "blur": "blur"; }, never, never, true, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<TextareaComponent, "luna-textarea", never, { "cols": { "alias": "cols"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; }, { "change": "change"; "blur": "blur"; }, never, never, true, never>;
24
23
  }