valtech-components 2.0.566 → 2.0.567
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/esm2022/lib/components/atoms/avatar/avatar.component.mjs +51 -14
- package/esm2022/lib/components/atoms/fab/fab.component.mjs +63 -25
- package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +64 -19
- package/esm2022/lib/components/molecules/accordion/accordion.component.mjs +45 -18
- package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +43 -15
- package/esm2022/lib/components/molecules/card/card.component.mjs +2 -2
- package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +52 -8
- package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +54 -37
- package/esm2022/lib/components/molecules/comment/comment.component.mjs +1 -1
- package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +62 -27
- package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +74 -46
- package/esm2022/lib/components/molecules/multi-select-search/multi-select-search.component.mjs +2 -2
- package/esm2022/lib/components/molecules/participant-card/participant-card.component.mjs +1 -1
- package/esm2022/lib/components/molecules/phone-input/phone-input.component.mjs +95 -59
- package/esm2022/lib/components/molecules/pill/pill.component.mjs +61 -13
- package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +2 -2
- package/esm2022/lib/components/molecules/rating/rating.component.mjs +60 -43
- package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +56 -26
- package/esm2022/lib/components/molecules/searchbar/types.mjs +2 -0
- package/esm2022/lib/components/molecules/segment-control/segment-control.component.mjs +52 -29
- package/esm2022/lib/components/molecules/select-search/select-search.component.mjs +2 -2
- package/esm2022/lib/components/molecules/stats-card/stats-card.component.mjs +67 -51
- package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +51 -23
- package/esm2022/lib/components/molecules/tabs/tabs.component.mjs +59 -21
- package/esm2022/lib/components/molecules/textarea-input/textarea-input.component.mjs +93 -59
- package/esm2022/lib/components/molecules/toggle-input/toggle-input.component.mjs +49 -15
- package/esm2022/lib/components/molecules/winner-display/winner-display.component.mjs +1 -1
- package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +2 -2
- package/esm2022/lib/components/organisms/form/form.component.mjs +2 -2
- package/esm2022/lib/components/organisms/tabbed-content/tabbed-content.component.mjs +1 -1
- package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +2 -2
- package/esm2022/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.mjs +2 -2
- package/fesm2022/valtech-components.mjs +1259 -675
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/avatar/avatar.component.d.ts +26 -5
- package/lib/components/atoms/fab/fab.component.d.ts +24 -5
- package/lib/components/atoms/progress-bar/progress-bar.component.d.ts +21 -6
- package/lib/components/molecules/accordion/accordion.component.d.ts +10 -4
- package/lib/components/molecules/breadcrumb/breadcrumb.component.d.ts +10 -4
- package/lib/components/molecules/check-input/check-input.component.d.ts +25 -4
- package/lib/components/molecules/chip-group/chip-group.component.d.ts +10 -4
- package/lib/components/molecules/date-input/date-input.component.d.ts +25 -7
- package/lib/components/molecules/glow-card/glow-card.component.d.ts +16 -5
- package/lib/components/molecules/phone-input/phone-input.component.d.ts +28 -5
- package/lib/components/molecules/pill/pill.component.d.ts +27 -3
- package/lib/components/molecules/rating/rating.component.d.ts +10 -4
- package/lib/components/molecules/searchbar/searchbar.component.d.ts +15 -11
- package/lib/components/molecules/searchbar/types.d.ts +33 -0
- package/lib/components/molecules/segment-control/segment-control.component.d.ts +17 -6
- package/lib/components/molecules/stats-card/stats-card.component.d.ts +10 -4
- package/lib/components/molecules/stepper/stepper.component.d.ts +20 -4
- package/lib/components/molecules/tabs/tabs.component.d.ts +27 -4
- package/lib/components/molecules/textarea-input/textarea-input.component.d.ts +27 -4
- package/lib/components/molecules/toggle-input/toggle-input.component.d.ts +25 -4
- package/package.json +1 -1
- package/src/lib/components/styles/_docs-page.scss +310 -0
|
@@ -1,9 +1,25 @@
|
|
|
1
|
-
import { EventEmitter } from '@angular/core';
|
|
1
|
+
import { OnChanges, OnInit, EventEmitter, SimpleChanges } from '@angular/core';
|
|
2
2
|
import { StepperMetadata, StepMetadata, StepChangeEvent, StepStatus } from './types';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class StepperComponent {
|
|
5
|
-
|
|
4
|
+
export declare class StepperComponent implements OnInit, OnChanges {
|
|
5
|
+
private presets;
|
|
6
|
+
/**
|
|
7
|
+
* Preset name to apply. Presets define reusable stepper configurations
|
|
8
|
+
* that can be registered at app level via provideValtechPresets().
|
|
9
|
+
*/
|
|
10
|
+
preset?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Stepper configuration object. Values here override preset values.
|
|
13
|
+
*/
|
|
14
|
+
props: Partial<StepperMetadata>;
|
|
15
|
+
/**
|
|
16
|
+
* Resolved props after merging preset + explicit props.
|
|
17
|
+
*/
|
|
18
|
+
resolvedProps: StepperMetadata;
|
|
6
19
|
stepChange: EventEmitter<StepChangeEvent>;
|
|
20
|
+
ngOnInit(): void;
|
|
21
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
22
|
+
private resolveProps;
|
|
7
23
|
getCurrentIndex(): number;
|
|
8
24
|
getStepStatus(step: StepMetadata, index: number): StepStatus;
|
|
9
25
|
getStepColor(step: StepMetadata, index: number): string;
|
|
@@ -11,5 +27,5 @@ export declare class StepperComponent {
|
|
|
11
27
|
onStepClick(step: StepMetadata, index: number): void;
|
|
12
28
|
getStepLabel(step: StepMetadata): string;
|
|
13
29
|
static ɵfac: i0.ɵɵFactoryDeclaration<StepperComponent, never>;
|
|
14
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<StepperComponent, "val-stepper", never, { "props": { "alias": "props"; "required": false; }; }, { "stepChange": "stepChange"; }, never, never, true, never>;
|
|
30
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StepperComponent, "val-stepper", never, { "preset": { "alias": "preset"; "required": false; }; "props": { "alias": "props"; "required": false; }; }, { "stepChange": "stepChange"; }, never, never, true, never>;
|
|
15
31
|
}
|
|
@@ -1,11 +1,34 @@
|
|
|
1
|
-
import { EventEmitter } from '@angular/core';
|
|
1
|
+
import { OnChanges, OnInit, EventEmitter, SimpleChanges } from '@angular/core';
|
|
2
2
|
import { TabsMetadata, TabMetadata } from './types';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class TabsComponent {
|
|
5
|
-
|
|
4
|
+
export declare class TabsComponent implements OnInit, OnChanges {
|
|
5
|
+
private presets;
|
|
6
|
+
/**
|
|
7
|
+
* Preset name to apply. Presets define reusable tabs configurations
|
|
8
|
+
* that can be registered at app level via provideValtechPresets().
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* <val-tabs preset="main-nav" [props]="{ tabs: [...] }"></val-tabs>
|
|
12
|
+
*/
|
|
13
|
+
preset?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Tabs configuration object. Values here override preset values.
|
|
16
|
+
*/
|
|
17
|
+
props: Partial<TabsMetadata>;
|
|
18
|
+
/**
|
|
19
|
+
* Resolved props after merging preset + explicit props.
|
|
20
|
+
*/
|
|
21
|
+
resolvedProps: TabsMetadata;
|
|
6
22
|
tabChange: EventEmitter<TabMetadata>;
|
|
23
|
+
ngOnInit(): void;
|
|
24
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
25
|
+
/**
|
|
26
|
+
* Merge preset configuration with explicit props.
|
|
27
|
+
* Explicit props take precedence over preset values.
|
|
28
|
+
*/
|
|
29
|
+
private resolveProps;
|
|
7
30
|
onTabClick(tab: TabMetadata): void;
|
|
8
31
|
getTabLabel(tab: TabMetadata): string;
|
|
9
32
|
static ɵfac: i0.ɵɵFactoryDeclaration<TabsComponent, never>;
|
|
10
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TabsComponent, "val-tabs", never, { "props": { "alias": "props"; "required": false; }; }, { "tabChange": "tabChange"; }, never, never, true, never>;
|
|
33
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TabsComponent, "val-tabs", never, { "preset": { "alias": "preset"; "required": false; }; "props": { "alias": "props"; "required": false; }; }, { "tabChange": "tabChange"; }, never, never, true, never>;
|
|
11
34
|
}
|
|
@@ -1,8 +1,24 @@
|
|
|
1
|
-
import { OnInit } from '@angular/core';
|
|
1
|
+
import { OnChanges, OnInit, SimpleChanges } from '@angular/core';
|
|
2
2
|
import { TextareaInputMetadata } from './types';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class TextareaInputComponent implements OnInit {
|
|
5
|
-
|
|
4
|
+
export declare class TextareaInputComponent implements OnInit, OnChanges {
|
|
5
|
+
private presets;
|
|
6
|
+
/**
|
|
7
|
+
* Preset name to apply. Presets define reusable textarea configurations
|
|
8
|
+
* that can be registered at app level via provideValtechPresets().
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* <val-textarea-input preset="form-field" [props]="{ control: ctrl }"></val-textarea-input>
|
|
12
|
+
*/
|
|
13
|
+
preset?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Textarea configuration object. Values here override preset values.
|
|
16
|
+
*/
|
|
17
|
+
props: Partial<TextareaInputMetadata>;
|
|
18
|
+
/**
|
|
19
|
+
* Resolved props after merging preset + explicit props.
|
|
20
|
+
*/
|
|
21
|
+
resolvedProps: TextareaInputMetadata;
|
|
6
22
|
states: {
|
|
7
23
|
ENABLED: "ENABLED";
|
|
8
24
|
DISABLED: "DISABLED";
|
|
@@ -10,6 +26,13 @@ export declare class TextareaInputComponent implements OnInit {
|
|
|
10
26
|
ERROR: "ERROR";
|
|
11
27
|
};
|
|
12
28
|
ngOnInit(): void;
|
|
29
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
30
|
+
/**
|
|
31
|
+
* Merge preset configuration with explicit props.
|
|
32
|
+
* Explicit props take precedence over preset values.
|
|
33
|
+
*/
|
|
34
|
+
private resolveProps;
|
|
35
|
+
private applyDefaultValue;
|
|
13
36
|
getLabel(): string;
|
|
14
37
|
getPlaceholder(): string;
|
|
15
38
|
getHint(): string;
|
|
@@ -19,5 +42,5 @@ export declare class TextareaInputComponent implements OnInit {
|
|
|
19
42
|
getRemainingLabel(): string;
|
|
20
43
|
counterFormatter: (inputLength: number, maxLength: number) => string;
|
|
21
44
|
static ɵfac: i0.ɵɵFactoryDeclaration<TextareaInputComponent, never>;
|
|
22
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TextareaInputComponent, "val-textarea-input", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
|
|
45
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TextareaInputComponent, "val-textarea-input", never, { "preset": { "alias": "preset"; "required": false; }; "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
|
|
23
46
|
}
|
|
@@ -1,18 +1,39 @@
|
|
|
1
|
+
import { OnChanges, OnInit, SimpleChanges } from '@angular/core';
|
|
1
2
|
import { ToggleInputMetadata } from './types';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class ToggleInputComponent {
|
|
4
|
+
export declare class ToggleInputComponent implements OnInit, OnChanges {
|
|
5
|
+
private presets;
|
|
4
6
|
/**
|
|
5
|
-
*
|
|
7
|
+
* Preset name to apply. Presets define reusable toggle input configurations
|
|
8
|
+
* that can be registered at app level via provideValtechPresets().
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* <val-toggle-input preset="form-field" [props]="{ control: ctrl }"></val-toggle-input>
|
|
12
|
+
*/
|
|
13
|
+
preset?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Input configuration object. Values here override preset values.
|
|
6
16
|
* @type {ToggleInputMetadata}
|
|
7
17
|
*/
|
|
8
|
-
props: ToggleInputMetadata
|
|
18
|
+
props: Partial<ToggleInputMetadata>;
|
|
19
|
+
/**
|
|
20
|
+
* Resolved props after merging preset + explicit props.
|
|
21
|
+
*/
|
|
22
|
+
resolvedProps: ToggleInputMetadata;
|
|
9
23
|
states: {
|
|
10
24
|
ENABLED: "ENABLED";
|
|
11
25
|
DISABLED: "DISABLED";
|
|
12
26
|
WORKING: "WORKING";
|
|
13
27
|
ERROR: "ERROR";
|
|
14
28
|
};
|
|
29
|
+
ngOnInit(): void;
|
|
30
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
31
|
+
/**
|
|
32
|
+
* Merge preset configuration with explicit props.
|
|
33
|
+
* Explicit props take precedence over preset values.
|
|
34
|
+
*/
|
|
35
|
+
private resolveProps;
|
|
15
36
|
getDisplayLabel(): string;
|
|
16
37
|
static ɵfac: i0.ɵɵFactoryDeclaration<ToggleInputComponent, never>;
|
|
17
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ToggleInputComponent, "val-toggle-input", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
|
|
38
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ToggleInputComponent, "val-toggle-input", never, { "preset": { "alias": "preset"; "required": false; }; "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
|
|
18
39
|
}
|
package/package.json
CHANGED
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared styles for documentation pages.
|
|
3
|
+
* Import this file in your component and include the mixin.
|
|
4
|
+
*
|
|
5
|
+
* Usage in component:
|
|
6
|
+
* @use 'valtech-components/styles/docs-page' as docs;
|
|
7
|
+
*
|
|
8
|
+
* styles: [`@include docs.page();`]
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
@mixin page() {
|
|
12
|
+
// Main layout
|
|
13
|
+
.docs-page {
|
|
14
|
+
display: grid;
|
|
15
|
+
grid-template-columns: 1fr 200px;
|
|
16
|
+
gap: 2rem;
|
|
17
|
+
max-width: 1200px;
|
|
18
|
+
margin: 0 auto;
|
|
19
|
+
padding: 2rem;
|
|
20
|
+
|
|
21
|
+
@media (max-width: 1024px) {
|
|
22
|
+
grid-template-columns: 1fr;
|
|
23
|
+
padding: 1rem;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.docs-page__content {
|
|
28
|
+
min-width: 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.docs-page__toc {
|
|
32
|
+
position: sticky;
|
|
33
|
+
top: 2rem;
|
|
34
|
+
height: fit-content;
|
|
35
|
+
|
|
36
|
+
@media (max-width: 1024px) {
|
|
37
|
+
display: none;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Header
|
|
42
|
+
.docs-page__header {
|
|
43
|
+
margin-bottom: 2rem;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.docs-page__badge {
|
|
47
|
+
display: inline-block;
|
|
48
|
+
font-size: 0.75rem;
|
|
49
|
+
font-weight: 600;
|
|
50
|
+
text-transform: uppercase;
|
|
51
|
+
padding: 0.25rem 0.5rem;
|
|
52
|
+
border-radius: 4px;
|
|
53
|
+
background: rgba(0, 0, 0, 0.06);
|
|
54
|
+
color: #555;
|
|
55
|
+
margin-bottom: 0.75rem;
|
|
56
|
+
|
|
57
|
+
@media (prefers-color-scheme: dark) {
|
|
58
|
+
background: rgba(255, 255, 255, 0.1);
|
|
59
|
+
color: #aaa;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.docs-page__header h1 {
|
|
64
|
+
font-size: 2.5rem;
|
|
65
|
+
font-weight: 700;
|
|
66
|
+
margin: 0 0 0.75rem 0;
|
|
67
|
+
color: var(--ion-text-color, #1a1a1a);
|
|
68
|
+
|
|
69
|
+
@media (max-width: 768px) {
|
|
70
|
+
font-size: 2rem;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.docs-page__lead {
|
|
75
|
+
font-size: 1.125rem;
|
|
76
|
+
color: var(--ion-color-medium, #666);
|
|
77
|
+
margin: 0;
|
|
78
|
+
line-height: 1.6;
|
|
79
|
+
|
|
80
|
+
@media (max-width: 768px) {
|
|
81
|
+
font-size: 1rem;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Sections
|
|
86
|
+
section {
|
|
87
|
+
margin-bottom: 2rem;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Headings
|
|
91
|
+
h2 {
|
|
92
|
+
font-size: 1.5rem;
|
|
93
|
+
font-weight: 600;
|
|
94
|
+
margin: 0 0 1rem 0;
|
|
95
|
+
color: var(--ion-text-color, #1a1a1a);
|
|
96
|
+
scroll-margin-top: 2rem;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
h3 {
|
|
100
|
+
font-size: 1.125rem;
|
|
101
|
+
font-weight: 600;
|
|
102
|
+
margin: 1.5rem 0 1rem 0;
|
|
103
|
+
color: var(--ion-text-color, #1a1a1a);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
h4 {
|
|
107
|
+
font-size: 1rem;
|
|
108
|
+
font-weight: 600;
|
|
109
|
+
margin: 1.25rem 0 0.75rem 0;
|
|
110
|
+
color: var(--ion-text-color, #1a1a1a);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Text
|
|
114
|
+
p {
|
|
115
|
+
line-height: 1.7;
|
|
116
|
+
color: var(--ion-text-color, #1a1a1a);
|
|
117
|
+
margin: 0 0 1rem 0;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Lists
|
|
121
|
+
ul,
|
|
122
|
+
ol {
|
|
123
|
+
padding-left: 1.5rem;
|
|
124
|
+
margin: 0 0 1rem 0;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
li {
|
|
128
|
+
margin-bottom: 0.5rem;
|
|
129
|
+
line-height: 1.6;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// Links
|
|
133
|
+
a {
|
|
134
|
+
color: var(--ion-color-primary, #3880ff);
|
|
135
|
+
text-decoration: none;
|
|
136
|
+
|
|
137
|
+
&:hover {
|
|
138
|
+
text-decoration: underline;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Code inline
|
|
143
|
+
code:not([class*='language-']) {
|
|
144
|
+
background: rgba(0, 0, 0, 0.06);
|
|
145
|
+
padding: 0.125rem 0.375rem;
|
|
146
|
+
border-radius: 4px;
|
|
147
|
+
font-family: 'SF Mono', 'Fira Code', Consolas, monospace;
|
|
148
|
+
font-size: 0.875em;
|
|
149
|
+
|
|
150
|
+
@media (prefers-color-scheme: dark) {
|
|
151
|
+
background: rgba(255, 255, 255, 0.1);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Pre blocks (without syntax highlighting)
|
|
156
|
+
pre:not([class*='language-']) {
|
|
157
|
+
background: rgba(0, 0, 0, 0.04);
|
|
158
|
+
padding: 1rem;
|
|
159
|
+
border-radius: 8px;
|
|
160
|
+
overflow-x: auto;
|
|
161
|
+
margin: 0 0 1rem 0;
|
|
162
|
+
|
|
163
|
+
@media (prefers-color-scheme: dark) {
|
|
164
|
+
background: rgba(255, 255, 255, 0.06);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
code {
|
|
168
|
+
background: none;
|
|
169
|
+
padding: 0;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Tables
|
|
174
|
+
table {
|
|
175
|
+
width: 100%;
|
|
176
|
+
border-collapse: collapse;
|
|
177
|
+
margin: 0 0 1rem 0;
|
|
178
|
+
font-size: 0.875rem;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
th,
|
|
182
|
+
td {
|
|
183
|
+
padding: 0.75rem;
|
|
184
|
+
text-align: left;
|
|
185
|
+
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
|
|
186
|
+
|
|
187
|
+
@media (prefers-color-scheme: dark) {
|
|
188
|
+
border-color: rgba(255, 255, 255, 0.1);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
th {
|
|
193
|
+
font-weight: 600;
|
|
194
|
+
background: rgba(0, 0, 0, 0.02);
|
|
195
|
+
|
|
196
|
+
@media (prefers-color-scheme: dark) {
|
|
197
|
+
background: rgba(255, 255, 255, 0.04);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// Blockquote
|
|
202
|
+
blockquote {
|
|
203
|
+
margin: 0 0 1rem 0;
|
|
204
|
+
padding: 1rem 1.5rem;
|
|
205
|
+
border-left: 4px solid var(--ion-color-primary, #3880ff);
|
|
206
|
+
background: rgba(0, 0, 0, 0.02);
|
|
207
|
+
border-radius: 0 8px 8px 0;
|
|
208
|
+
|
|
209
|
+
@media (prefers-color-scheme: dark) {
|
|
210
|
+
background: rgba(255, 255, 255, 0.04);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
p:last-child {
|
|
214
|
+
margin-bottom: 0;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// Image
|
|
219
|
+
img {
|
|
220
|
+
max-width: 100%;
|
|
221
|
+
height: auto;
|
|
222
|
+
border-radius: 8px;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// Horizontal rule
|
|
226
|
+
hr {
|
|
227
|
+
border: none;
|
|
228
|
+
border-top: 1px solid rgba(0, 0, 0, 0.1);
|
|
229
|
+
margin: 2rem 0;
|
|
230
|
+
|
|
231
|
+
@media (prefers-color-scheme: dark) {
|
|
232
|
+
border-color: rgba(255, 255, 255, 0.1);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// Strong text
|
|
237
|
+
strong {
|
|
238
|
+
font-weight: 600;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Compact version without grid layout (for use inside other layouts)
|
|
244
|
+
*/
|
|
245
|
+
@mixin content() {
|
|
246
|
+
// Headings
|
|
247
|
+
h2 {
|
|
248
|
+
font-size: 1.5rem;
|
|
249
|
+
font-weight: 600;
|
|
250
|
+
margin: 0 0 1rem 0;
|
|
251
|
+
color: var(--ion-text-color, #1a1a1a);
|
|
252
|
+
scroll-margin-top: 2rem;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
h3 {
|
|
256
|
+
font-size: 1.125rem;
|
|
257
|
+
font-weight: 600;
|
|
258
|
+
margin: 1.5rem 0 1rem 0;
|
|
259
|
+
color: var(--ion-text-color, #1a1a1a);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
h4 {
|
|
263
|
+
font-size: 1rem;
|
|
264
|
+
font-weight: 600;
|
|
265
|
+
margin: 1.25rem 0 0.75rem 0;
|
|
266
|
+
color: var(--ion-text-color, #1a1a1a);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
p {
|
|
270
|
+
line-height: 1.7;
|
|
271
|
+
color: var(--ion-text-color, #1a1a1a);
|
|
272
|
+
margin: 0 0 1rem 0;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
ul,
|
|
276
|
+
ol {
|
|
277
|
+
padding-left: 1.5rem;
|
|
278
|
+
margin: 0 0 1rem 0;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
li {
|
|
282
|
+
margin-bottom: 0.5rem;
|
|
283
|
+
line-height: 1.6;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
section {
|
|
287
|
+
margin-bottom: 2rem;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
a {
|
|
291
|
+
color: var(--ion-color-primary, #3880ff);
|
|
292
|
+
text-decoration: none;
|
|
293
|
+
|
|
294
|
+
&:hover {
|
|
295
|
+
text-decoration: underline;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
code:not([class*='language-']) {
|
|
300
|
+
background: rgba(0, 0, 0, 0.06);
|
|
301
|
+
padding: 0.125rem 0.375rem;
|
|
302
|
+
border-radius: 4px;
|
|
303
|
+
font-family: 'SF Mono', 'Fira Code', Consolas, monospace;
|
|
304
|
+
font-size: 0.875em;
|
|
305
|
+
|
|
306
|
+
@media (prefers-color-scheme: dark) {
|
|
307
|
+
background: rgba(255, 255, 255, 0.1);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|