ds-one 0.2.5-alpha.12 → 0.2.5-alpha.13
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/DS1/0-face/device.ts +8 -0
- package/DS1/1-root/one.css +36 -16
- package/DS1/2-core/ds-button.ts +1 -2
- package/DS1/2-core/ds-text.ts +1 -1
- package/DS1/4-page/ds-container.ts +59 -0
- package/DS1/4-page/ds-grid.ts +43 -3
- package/DS1/4-page/ds-layout.ts +139 -134
- package/DS1/index.ts +1 -0
- package/README.md +2 -2
- package/dist/0-face/device.d.ts.map +1 -1
- package/dist/0-face/device.js +6 -0
- package/dist/2-core/ds-button.d.ts.map +1 -1
- package/dist/2-core/ds-button.js +1 -2
- package/dist/2-core/ds-text.js +1 -1
- package/dist/4-page/ds-container.d.ts +17 -0
- package/dist/4-page/ds-container.d.ts.map +1 -0
- package/dist/4-page/ds-container.js +42 -0
- package/dist/4-page/ds-grid.d.ts +5 -0
- package/dist/4-page/ds-grid.d.ts.map +1 -1
- package/dist/4-page/ds-grid.js +38 -3
- package/dist/4-page/ds-layout.d.ts +2 -2
- package/dist/4-page/ds-layout.d.ts.map +1 -1
- package/dist/4-page/ds-layout.js +138 -133
- package/dist/ds-one.bundle.js +220 -138
- package/dist/ds-one.bundle.js.map +4 -4
- package/dist/ds-one.bundle.min.js +181 -145
- package/dist/ds-one.bundle.min.js.map +4 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/package.json +1 -1
package/DS1/0-face/device.ts
CHANGED
|
@@ -104,6 +104,10 @@ export function initDeviceDetection(): DeviceInfo {
|
|
|
104
104
|
scalingFactor.toFixed(3)
|
|
105
105
|
);
|
|
106
106
|
|
|
107
|
+
// Add .mobile class to html element for CSS targeting
|
|
108
|
+
document.documentElement.classList.add("mobile");
|
|
109
|
+
document.documentElement.classList.remove("desktop");
|
|
110
|
+
|
|
107
111
|
console.log(
|
|
108
112
|
`[DS one] Mobile device detected - ${deviceInfo.deviceType} (${deviceInfo.screenWidth}x${deviceInfo.screenHeight}), scaling factor: ${scalingFactor.toFixed(2)}`
|
|
109
113
|
);
|
|
@@ -113,6 +117,10 @@ export function initDeviceDetection(): DeviceInfo {
|
|
|
113
117
|
document.documentElement.style.setProperty("--sf", "1");
|
|
114
118
|
// Also set --sf for backwards compatibility
|
|
115
119
|
document.documentElement.style.setProperty("--sf", "1");
|
|
120
|
+
|
|
121
|
+
// Add .desktop class and remove .mobile class
|
|
122
|
+
document.documentElement.classList.add("desktop");
|
|
123
|
+
document.documentElement.classList.remove("mobile");
|
|
116
124
|
}
|
|
117
125
|
console.log(
|
|
118
126
|
`[DS one] Desktop device detected (${deviceInfo.screenWidth}x${deviceInfo.screenHeight})`
|
package/DS1/1-root/one.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* version 0.2.5-alpha.
|
|
1
|
+
/* version 0.2.5-alpha.13 */
|
|
2
2
|
|
|
3
3
|
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@200");
|
|
4
4
|
|
|
@@ -54,9 +54,14 @@ input {
|
|
|
54
54
|
--typeface-regular: "GT-America-Standard-Regular";
|
|
55
55
|
--typeface-medium: "GT-America-Standard-Medium";
|
|
56
56
|
--typeface-compressed: "GT-America-Compressed-Regular";
|
|
57
|
-
--typeface-regular-jp: "Noto Sans JP";
|
|
58
57
|
--typeface-mono: "Iosevka";
|
|
59
58
|
|
|
59
|
+
/* language specific typefaces */
|
|
60
|
+
|
|
61
|
+
--typeface-regular-jp: "Noto Sans JP";
|
|
62
|
+
|
|
63
|
+
/* typefaces sizes and weight */
|
|
64
|
+
|
|
60
65
|
--type-size-default: calc(14px * var(--sf));
|
|
61
66
|
--type-size-small: calc(10px * var(--sf));
|
|
62
67
|
--type-weight-default: 500;
|
|
@@ -73,6 +78,35 @@ input {
|
|
|
73
78
|
--type-weight-book: 400;
|
|
74
79
|
--type-lineheight-book: 15px;
|
|
75
80
|
|
|
81
|
+
/* ----------------------------------------------------------
|
|
82
|
+
SIZING SCALE
|
|
83
|
+
- Define a base unit ( --1 ) and derive all other sizes
|
|
84
|
+
- Larger sizes are simple multipliers (×2, ×3, ×4)
|
|
85
|
+
- Smaller sizes use fractional multipliers (0.1, 0.25, 0.8)
|
|
86
|
+
---------------------------------------------------------- */
|
|
87
|
+
|
|
88
|
+
--01: calc(var(--1) * 0.1);
|
|
89
|
+
--025: calc(var(--1) * 0.25);
|
|
90
|
+
--05: calc(var(--1) * 0.5);
|
|
91
|
+
--08: calc(var(--1) * 0.8);
|
|
92
|
+
--1: 20px; /* SET BASE UNIT HERE FOR EXAMPLE 20px */
|
|
93
|
+
--2: calc(var(--1) * 2);
|
|
94
|
+
--3: calc(var(--1) * 3);
|
|
95
|
+
--4: calc(var(--1) * 4);
|
|
96
|
+
--8: calc(var(--1) * 8);
|
|
97
|
+
|
|
98
|
+
/* Semantic sizing units */
|
|
99
|
+
|
|
100
|
+
--tenth: var(--01);
|
|
101
|
+
--quarter: var(--025);
|
|
102
|
+
--half: var(--05);
|
|
103
|
+
--eight-tenth: var(--08);
|
|
104
|
+
--unit: var(--1);
|
|
105
|
+
--double: var(--2);
|
|
106
|
+
--triple: var(--3);
|
|
107
|
+
--quad: var(--4);
|
|
108
|
+
--oct: var(--8);
|
|
109
|
+
|
|
76
110
|
/* size */
|
|
77
111
|
--outline-stroke: 1px solid light-dark(var(--black), var(--slate-dark));
|
|
78
112
|
--outline-stroke-mobile: calc(1px * var(--sf)) solid
|
|
@@ -81,20 +115,6 @@ input {
|
|
|
81
115
|
--item-height: calc(19px * var(--sf));
|
|
82
116
|
--margin-correction: calc(1px * var(--sf));
|
|
83
117
|
|
|
84
|
-
/* SIZING */
|
|
85
|
-
|
|
86
|
-
/* main unit */
|
|
87
|
-
--1: 20px;
|
|
88
|
-
/* bigger sizes */
|
|
89
|
-
--2: calc(var(--1) * 2);
|
|
90
|
-
--3: calc(var(--1) * 3);
|
|
91
|
-
--4: calc(var(--1) * 4);
|
|
92
|
-
|
|
93
|
-
/* smaller sizes */
|
|
94
|
-
--01: calc(var(--1) * 0.1);
|
|
95
|
-
--025: calc(var(--1) * 0.25);
|
|
96
|
-
--08: calc(var(--1) * 0.8);
|
|
97
|
-
|
|
98
118
|
/* button */
|
|
99
119
|
--button-background-color-primary: var(--accent-color);
|
|
100
120
|
--button-background-color-secondary: light-dark(
|
package/DS1/2-core/ds-button.ts
CHANGED
|
@@ -58,8 +58,7 @@ export class Button extends LitElement {
|
|
|
58
58
|
max-height: calc(var(--08) * var(--sf));
|
|
59
59
|
border: none;
|
|
60
60
|
cursor: pointer;
|
|
61
|
-
|
|
62
|
-
padding: 0 calc(1px * var(--sf));
|
|
61
|
+
padding: 0 calc(2px * var(--sf));
|
|
63
62
|
color: var(--button-text-color);
|
|
64
63
|
font-family: var(--typeface-regular);
|
|
65
64
|
}
|
package/DS1/2-core/ds-text.ts
CHANGED
|
@@ -50,7 +50,7 @@ export class Text extends LitElement {
|
|
|
50
50
|
:host {
|
|
51
51
|
display: inline;
|
|
52
52
|
font-family: var(--typeface-regular);
|
|
53
|
-
font-size:
|
|
53
|
+
font-size: var(--type-size-default);
|
|
54
54
|
font-weight: var(--type-weight-default);
|
|
55
55
|
line-height: calc(var(--type-lineheight-default) * var(--sf));
|
|
56
56
|
letter-spacing: calc(var(--type-letterspacing-default) * var(--sf));
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// ds-container.ts
|
|
2
|
+
// Container component with responsive width constraints
|
|
3
|
+
|
|
4
|
+
import { LitElement, html, css } from "lit";
|
|
5
|
+
|
|
6
|
+
declare global {
|
|
7
|
+
interface CustomElementRegistry {
|
|
8
|
+
define(name: string, constructor: typeof LitElement): void;
|
|
9
|
+
}
|
|
10
|
+
var customElements: CustomElementRegistry;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export class Container extends LitElement {
|
|
14
|
+
static styles = css`
|
|
15
|
+
:host {
|
|
16
|
+
display: flex;
|
|
17
|
+
width: 100%;
|
|
18
|
+
max-width: 100%;
|
|
19
|
+
flex-direction: column;
|
|
20
|
+
box-sizing: border-box;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* Ensure children don't overflow */
|
|
24
|
+
:host ::slotted(*) {
|
|
25
|
+
max-width: 100%;
|
|
26
|
+
box-sizing: border-box;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* Mobile: 100% width */
|
|
30
|
+
@media (max-width: 820px) {
|
|
31
|
+
:host {
|
|
32
|
+
width: 100%;
|
|
33
|
+
max-width: 100%;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* Desktop: max-width 1000px, centered */
|
|
38
|
+
@media (min-width: 821px) {
|
|
39
|
+
:host {
|
|
40
|
+
max-width: 1000px;
|
|
41
|
+
margin-left: auto;
|
|
42
|
+
margin-right: auto;
|
|
43
|
+
width: 100%;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
`;
|
|
47
|
+
|
|
48
|
+
render() {
|
|
49
|
+
return html`<slot></slot>`;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
customElements.define("ds-container", Container);
|
|
54
|
+
|
|
55
|
+
declare global {
|
|
56
|
+
interface HTMLElementTagNameMap {
|
|
57
|
+
"ds-container": Container;
|
|
58
|
+
}
|
|
59
|
+
}
|
package/DS1/4-page/ds-grid.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// Simple grid layout component
|
|
3
3
|
|
|
4
4
|
import { LitElement, html, css } from "lit";
|
|
5
|
+
import { detectMobileDevice } from "../0-face/device";
|
|
5
6
|
|
|
6
7
|
declare global {
|
|
7
8
|
interface CustomElementRegistry {
|
|
@@ -16,6 +17,8 @@ export class Grid extends LitElement {
|
|
|
16
17
|
};
|
|
17
18
|
|
|
18
19
|
align?: string;
|
|
20
|
+
private resizeObserver?: () => void;
|
|
21
|
+
private resizeTimeout?: any;
|
|
19
22
|
|
|
20
23
|
static styles = css`
|
|
21
24
|
:host {
|
|
@@ -23,13 +26,13 @@ export class Grid extends LitElement {
|
|
|
23
26
|
margin-left: 0.5px !important;
|
|
24
27
|
display: grid;
|
|
25
28
|
width: 1440px;
|
|
26
|
-
height:
|
|
29
|
+
height: 1280px;
|
|
27
30
|
grid-template-columns: repeat(auto-fill, 19px);
|
|
28
31
|
grid-template-rows: repeat(auto-fill, 19px);
|
|
29
32
|
gap: 1px;
|
|
30
33
|
row-rule: calc(1px * var(--sf)) solid var(--grid-color);
|
|
31
34
|
column-rule: calc(1px * var(--sf)) solid var(--grid-color);
|
|
32
|
-
outline: 1px solid
|
|
35
|
+
outline: calc(1px * var(--sf)) solid var(--yellow);
|
|
33
36
|
position: fixed;
|
|
34
37
|
top: 0;
|
|
35
38
|
left: 50%;
|
|
@@ -42,7 +45,7 @@ export class Grid extends LitElement {
|
|
|
42
45
|
:host(.mobile) {
|
|
43
46
|
width: calc(100% - calc(1px * var(--sf)));
|
|
44
47
|
max-width: 100vw;
|
|
45
|
-
margin-left: 0 !important;
|
|
48
|
+
margin-left: 0.5px !important;
|
|
46
49
|
margin-top: 0 !important;
|
|
47
50
|
box-sizing: border-box;
|
|
48
51
|
position: fixed;
|
|
@@ -73,6 +76,43 @@ export class Grid extends LitElement {
|
|
|
73
76
|
}
|
|
74
77
|
`;
|
|
75
78
|
|
|
79
|
+
connectedCallback() {
|
|
80
|
+
super.connectedCallback();
|
|
81
|
+
this.updateMobileClass();
|
|
82
|
+
|
|
83
|
+
// Listen for resize events to update mobile class
|
|
84
|
+
this.resizeObserver = () => {
|
|
85
|
+
if (this.resizeTimeout) {
|
|
86
|
+
clearTimeout(this.resizeTimeout);
|
|
87
|
+
}
|
|
88
|
+
this.resizeTimeout = setTimeout(() => {
|
|
89
|
+
this.updateMobileClass();
|
|
90
|
+
}, 100);
|
|
91
|
+
};
|
|
92
|
+
window.addEventListener("resize", this.resizeObserver);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
disconnectedCallback() {
|
|
96
|
+
super.disconnectedCallback();
|
|
97
|
+
if (this.resizeObserver) {
|
|
98
|
+
window.removeEventListener("resize", this.resizeObserver);
|
|
99
|
+
}
|
|
100
|
+
if (this.resizeTimeout) {
|
|
101
|
+
clearTimeout(this.resizeTimeout);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
private updateMobileClass() {
|
|
106
|
+
const isMobile = detectMobileDevice();
|
|
107
|
+
if (isMobile) {
|
|
108
|
+
this.classList.add("mobile");
|
|
109
|
+
this.classList.remove("desktop");
|
|
110
|
+
} else {
|
|
111
|
+
this.classList.add("desktop");
|
|
112
|
+
this.classList.remove("mobile");
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
76
116
|
render() {
|
|
77
117
|
return html``;
|
|
78
118
|
}
|
package/DS1/4-page/ds-layout.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// ds-layout.ts
|
|
2
|
-
// Simple grid layout component with
|
|
2
|
+
// Simple grid layout component with view mode
|
|
3
3
|
|
|
4
4
|
import { LitElement, html, css } from "lit";
|
|
5
5
|
|
|
@@ -14,12 +14,12 @@ export class Layout extends LitElement {
|
|
|
14
14
|
static properties = {
|
|
15
15
|
mode: { type: String },
|
|
16
16
|
align: { type: String },
|
|
17
|
-
|
|
17
|
+
view: { type: Boolean },
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
mode: string = "portfolio";
|
|
21
21
|
align?: string;
|
|
22
|
-
|
|
22
|
+
view?: boolean;
|
|
23
23
|
|
|
24
24
|
static styles = css`
|
|
25
25
|
:host {
|
|
@@ -29,79 +29,103 @@ export class Layout extends LitElement {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
:host([mode="portfolio"]) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
".
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
". nav ."
|
|
43
|
-
". . ."
|
|
44
|
-
". footer ."
|
|
45
|
-
". . .";
|
|
32
|
+
--portfolio-cols: 120px 480px 40px;
|
|
33
|
+
--portfolio-rows: 120px 120px 60px 180px 60px 120px 60px 20px 120px 120px;
|
|
34
|
+
--portfolio-areas: "square . ." ". title ." ". header ." ". projects ."
|
|
35
|
+
". . ." ". bio ." ". . ." ". nav ." ". . ." ". footer ." ". . .";
|
|
36
|
+
--portfolio-overlay-cols: 120px 480px;
|
|
37
|
+
--portfolio-overlay-areas: "square ." ". title" ". header" ". projects"
|
|
38
|
+
". ." ". bio" ". ." ". nav" ". ." ". footer" ". .";
|
|
39
|
+
grid-template-columns: var(--portfolio-cols);
|
|
40
|
+
grid-template-rows: var(--portfolio-rows);
|
|
41
|
+
grid-template-areas: var(--portfolio-areas);
|
|
46
42
|
min-height: 600px;
|
|
47
43
|
background-color: rgba(165, 165, 165, 0.03);
|
|
48
44
|
max-width: 640px;
|
|
49
|
-
margin: 0
|
|
45
|
+
margin: 0;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
:host([mode="portfolio"]) .view-overlay {
|
|
49
|
+
grid-template-columns: var(--portfolio-overlay-cols);
|
|
50
|
+
grid-template-rows: var(--portfolio-rows);
|
|
51
|
+
grid-template-areas: var(--portfolio-overlay-areas);
|
|
50
52
|
}
|
|
51
53
|
|
|
52
54
|
:host([mode="company"]) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
". . ."
|
|
57
|
-
". header ."
|
|
58
|
-
". . ."
|
|
59
|
-
". content ."
|
|
60
|
-
". . ."
|
|
55
|
+
--company-cols: auto 400px auto;
|
|
56
|
+
--company-rows: 80px 20px 20px 120px 20px 120px;
|
|
57
|
+
--company-areas: ". . ." ". header ." ". . ." ". content ." ". . ."
|
|
61
58
|
". footer .";
|
|
59
|
+
grid-template-columns: var(--company-cols);
|
|
60
|
+
grid-template-rows: var(--company-rows);
|
|
61
|
+
grid-template-areas: var(--company-areas);
|
|
62
62
|
gap: 0;
|
|
63
63
|
max-width: 100%;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
:host([
|
|
66
|
+
:host([mode="company"]) .view-overlay {
|
|
67
|
+
grid-template-columns: var(--company-cols);
|
|
68
|
+
grid-template-rows: var(--company-rows);
|
|
69
|
+
grid-template-areas: var(--company-areas);
|
|
70
|
+
gap: 0;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
:host([align="left"]),
|
|
74
|
+
:host([mode="portfolio"][align="left"]),
|
|
75
|
+
:host([mode="company"][align="left"]),
|
|
76
|
+
:host([mode="app"][align="left"]) {
|
|
67
77
|
margin: 0;
|
|
68
78
|
justify-self: start;
|
|
69
79
|
}
|
|
70
80
|
|
|
71
|
-
:host([align="center"])
|
|
81
|
+
:host([align="center"]),
|
|
82
|
+
:host([mode="portfolio"][align="center"]),
|
|
83
|
+
:host([mode="company"][align="center"]),
|
|
84
|
+
:host([mode="app"][align="center"]) {
|
|
72
85
|
margin: 0 auto;
|
|
73
86
|
justify-self: center;
|
|
74
87
|
}
|
|
75
88
|
|
|
76
|
-
:host([align="right"])
|
|
89
|
+
:host([align="right"]),
|
|
90
|
+
:host([mode="portfolio"][align="right"]),
|
|
91
|
+
:host([mode="company"][align="right"]),
|
|
92
|
+
:host([mode="app"][align="right"]) {
|
|
77
93
|
margin: 0 0 0 auto;
|
|
78
94
|
justify-self: end;
|
|
79
95
|
}
|
|
80
96
|
|
|
81
97
|
/* App mode - Base */
|
|
82
98
|
:host([mode="app"]) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
99
|
+
--app-cols: calc(var(--double) * var(--sf));
|
|
100
|
+
--app-rows: calc(var(--unit) * var(--sf)) calc(var(--2) * var(--sf))
|
|
101
|
+
calc(var(--unit) * var(--sf)) calc(var(--unit) * var(--sf))
|
|
102
|
+
calc(var(--unit) * var(--sf));
|
|
103
|
+
--app-areas: "1" "." "2" "." "3";
|
|
104
|
+
--app-overlay-cols: calc(var(--oct) * var(--sf));
|
|
105
|
+
--app-overlay-rows: calc(var(--unit) * var(--sf))
|
|
106
|
+
calc(var(--double) * var(--sf)) calc(var(--unit) * var(--sf))
|
|
107
|
+
calc(var(--unit) * var(--sf));
|
|
108
|
+
--app-overlay-areas: "banner" "." "header" "." "main" "." "footer";
|
|
109
|
+
grid-template-columns: var(--app-cols);
|
|
110
|
+
grid-template-rows: var(--app-rows);
|
|
111
|
+
grid-template-areas: var(--app-areas);
|
|
89
112
|
min-height: 100vh;
|
|
90
113
|
background-color: transparent;
|
|
91
114
|
width: 100%;
|
|
92
|
-
margin: 0 auto;
|
|
93
115
|
gap: 0;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/* App mode - with scaling factor */
|
|
97
|
-
:host([mode="app"]) {
|
|
98
116
|
max-width: calc(400px * var(--sf, 1));
|
|
99
117
|
padding: calc(60px * var(--sf, 1)) calc(28px * var(--sf, 1))
|
|
100
118
|
calc(9.751px * var(--sf, 1));
|
|
101
119
|
gap: calc(28px * var(--sf, 1));
|
|
102
120
|
}
|
|
103
121
|
|
|
104
|
-
.
|
|
122
|
+
:host([mode="app"]) .view-overlay {
|
|
123
|
+
grid-template-columns: var(--app-overlay-cols);
|
|
124
|
+
grid-template-rows: var(--app-overlay-rows);
|
|
125
|
+
grid-template-areas: var(--app-overlay-areas);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.view-overlay {
|
|
105
129
|
position: absolute;
|
|
106
130
|
margin-left: -1px;
|
|
107
131
|
top: 0;
|
|
@@ -115,37 +139,7 @@ export class Layout extends LitElement {
|
|
|
115
139
|
font-weight: bold;
|
|
116
140
|
}
|
|
117
141
|
|
|
118
|
-
|
|
119
|
-
grid-template-columns: 120px 480px;
|
|
120
|
-
grid-template-rows: 120px 120px 60px 180px 60px 120px 60px 20px 120px 120px;
|
|
121
|
-
grid-template-areas:
|
|
122
|
-
"square ."
|
|
123
|
-
". title"
|
|
124
|
-
". header"
|
|
125
|
-
". projects"
|
|
126
|
-
". ."
|
|
127
|
-
". bio"
|
|
128
|
-
". ."
|
|
129
|
-
". nav"
|
|
130
|
-
". ."
|
|
131
|
-
". footer"
|
|
132
|
-
". .";
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
:host([mode="company"]) .debug-overlay {
|
|
136
|
-
grid-template-columns: auto 400px auto;
|
|
137
|
-
grid-template-rows: 80px 20px 20px 120px 20px 120px;
|
|
138
|
-
grid-template-areas:
|
|
139
|
-
". . ."
|
|
140
|
-
". header ."
|
|
141
|
-
". . ."
|
|
142
|
-
". content ."
|
|
143
|
-
". . ."
|
|
144
|
-
". footer .";
|
|
145
|
-
gap: 0;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
.debug-area {
|
|
142
|
+
.view-area {
|
|
149
143
|
display: flex;
|
|
150
144
|
align-items: center;
|
|
151
145
|
justify-content: center;
|
|
@@ -153,145 +147,156 @@ export class Layout extends LitElement {
|
|
|
153
147
|
font-weight: var(--type-weight-default);
|
|
154
148
|
font-family: var(--typeface-regular);
|
|
155
149
|
color: var(--black);
|
|
156
|
-
border: 1px solid
|
|
150
|
+
border: 1px solid;
|
|
157
151
|
opacity: 1;
|
|
158
152
|
}
|
|
159
153
|
|
|
160
|
-
.
|
|
154
|
+
:host([mode="portfolio"]) .view-area:nth-of-type(1) {
|
|
155
|
+
border-color: var(--tuned-red);
|
|
156
|
+
}
|
|
157
|
+
:host([mode="portfolio"]) .view-area:nth-of-type(2) {
|
|
158
|
+
border-color: var(--sharp-blue);
|
|
159
|
+
}
|
|
160
|
+
:host([mode="portfolio"]) .view-area:nth-of-type(3) {
|
|
161
|
+
border-color: var(--yellow);
|
|
162
|
+
}
|
|
163
|
+
:host([mode="portfolio"]) .view-area:nth-of-type(4) {
|
|
164
|
+
border-color: var(--apple-green);
|
|
165
|
+
}
|
|
166
|
+
:host([mode="portfolio"]) .view-area:nth-of-type(5) {
|
|
167
|
+
border-color: var(--pink);
|
|
168
|
+
}
|
|
169
|
+
:host([mode="portfolio"]) .view-area:nth-of-type(6) {
|
|
170
|
+
border-color: var(--orange);
|
|
171
|
+
}
|
|
172
|
+
:host([mode="portfolio"]) .view-area:nth-of-type(7) {
|
|
173
|
+
border-color: var(--zenith-blue);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
:host([mode="company"]) .view-area:nth-of-type(1) {
|
|
177
|
+
border-color: var(--tuned-red);
|
|
178
|
+
}
|
|
179
|
+
:host([mode="company"]) .view-area:nth-of-type(2) {
|
|
180
|
+
border-color: var(--sharp-blue);
|
|
181
|
+
}
|
|
182
|
+
:host([mode="company"]) .view-area:nth-of-type(3) {
|
|
183
|
+
border-color: var(--yellow);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
:host([mode="app"]) .view-area:nth-of-type(1) {
|
|
187
|
+
border-color: var(--tuned-red);
|
|
188
|
+
}
|
|
189
|
+
:host([mode="app"]) .view-area:nth-of-type(2) {
|
|
190
|
+
border-color: var(--sharp-blue);
|
|
191
|
+
}
|
|
192
|
+
:host([mode="app"]) .view-area:nth-of-type(3) {
|
|
193
|
+
border-color: var(--yellow);
|
|
194
|
+
}
|
|
195
|
+
:host([mode="app"]) .view-area:nth-of-type(4) {
|
|
196
|
+
border-color: var(--apple-green);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.view-square {
|
|
161
200
|
grid-area: square;
|
|
162
201
|
}
|
|
163
202
|
|
|
164
|
-
.
|
|
203
|
+
.view-title {
|
|
165
204
|
grid-area: title;
|
|
166
205
|
}
|
|
167
206
|
|
|
168
|
-
.
|
|
207
|
+
.view-header {
|
|
169
208
|
grid-area: header;
|
|
170
|
-
border-color: #0000ff;
|
|
171
209
|
}
|
|
172
210
|
|
|
173
|
-
.
|
|
211
|
+
.view-projects {
|
|
174
212
|
grid-area: projects;
|
|
175
|
-
border-color: #ffff00;
|
|
176
213
|
}
|
|
177
214
|
|
|
178
|
-
.
|
|
215
|
+
.view-bio {
|
|
179
216
|
grid-area: bio;
|
|
180
|
-
border-color: #ff00ff;
|
|
181
217
|
}
|
|
182
218
|
|
|
183
|
-
.
|
|
219
|
+
.view-nav {
|
|
184
220
|
grid-area: nav;
|
|
185
|
-
border-color: #00ffff;
|
|
186
221
|
}
|
|
187
222
|
|
|
188
|
-
.
|
|
223
|
+
.view-footer {
|
|
189
224
|
grid-area: footer;
|
|
190
|
-
border-color: rgb(24, 147, 73);
|
|
191
|
-
background-color: rgba(127, 123, 11, 0.1);
|
|
192
225
|
}
|
|
193
226
|
|
|
194
|
-
.
|
|
227
|
+
.view-content {
|
|
195
228
|
grid-area: content;
|
|
196
|
-
border-color: rgba(71, 231, 71, 0.63);
|
|
197
229
|
}
|
|
198
230
|
|
|
199
|
-
|
|
200
|
-
grid-template-columns: 1fr;
|
|
201
|
-
grid-template-rows:
|
|
202
|
-
calc(var(--1) * var(--sf))
|
|
203
|
-
calc(var(--2) * var(--sf))
|
|
204
|
-
calc(var(--4) * var(--sf))
|
|
205
|
-
calc(var(--1) * var(--sf));
|
|
206
|
-
grid-template-areas:
|
|
207
|
-
"banner"
|
|
208
|
-
"header"
|
|
209
|
-
"main"
|
|
210
|
-
"footer";
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
.debug-banner {
|
|
231
|
+
.view-banner {
|
|
214
232
|
grid-area: banner;
|
|
215
|
-
border-color: #daed09;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
.debug-header {
|
|
219
|
-
grid-area: header;
|
|
220
|
-
border-color: #0000ff;
|
|
221
|
-
background-color: rgba(127, 123, 11, 0.5);
|
|
222
233
|
}
|
|
223
234
|
|
|
224
|
-
.
|
|
235
|
+
.view-main {
|
|
225
236
|
grid-area: main;
|
|
226
|
-
border-color: #0000ff;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
.debug-footer-app {
|
|
230
|
-
grid-area: footer;
|
|
231
|
-
border-color: #ffa500;
|
|
232
237
|
}
|
|
233
238
|
`;
|
|
234
239
|
|
|
235
240
|
render() {
|
|
236
|
-
const
|
|
241
|
+
const isView = this.view || this.mode === "view";
|
|
237
242
|
const isPortfolio = this.mode === "portfolio";
|
|
238
243
|
const isCompany = this.mode === "company";
|
|
239
244
|
const isApp = this.mode === "app";
|
|
240
245
|
|
|
241
246
|
return html`
|
|
242
247
|
<slot></slot>
|
|
243
|
-
${
|
|
248
|
+
${isView
|
|
244
249
|
? html`
|
|
245
|
-
<div class="
|
|
250
|
+
<div class="view-overlay">
|
|
246
251
|
${isApp
|
|
247
252
|
? html`
|
|
248
|
-
<div class="
|
|
253
|
+
<div class="view-area view-banner">
|
|
249
254
|
<ds-text key="banner">banner</ds-text>
|
|
250
255
|
</div>
|
|
251
|
-
<div class="
|
|
256
|
+
<div class="view-area view-header">
|
|
252
257
|
<ds-text key="header">header</ds-text>
|
|
253
258
|
</div>
|
|
254
259
|
|
|
255
|
-
<div class="
|
|
260
|
+
<div class="view-area view-main">
|
|
256
261
|
<ds-text key="main">main</ds-text>
|
|
257
262
|
</div>
|
|
258
|
-
<div class="
|
|
263
|
+
<div class="view-area view-footer">
|
|
259
264
|
<ds-text key="footer">footer</ds-text>
|
|
260
265
|
</div>
|
|
261
266
|
`
|
|
262
267
|
: isCompany
|
|
263
268
|
? html`
|
|
264
|
-
<div class="
|
|
269
|
+
<div class="view-area view-header">
|
|
265
270
|
<ds-text key="header">header</ds-text>
|
|
266
271
|
</div>
|
|
267
|
-
<div class="
|
|
272
|
+
<div class="view-area view-content">
|
|
268
273
|
<ds-text key="content">content</ds-text>
|
|
269
274
|
</div>
|
|
270
|
-
<div class="
|
|
275
|
+
<div class="view-area view-footer">
|
|
271
276
|
<ds-text key="footer">footer</ds-text>
|
|
272
277
|
</div>
|
|
273
278
|
`
|
|
274
279
|
: isPortfolio
|
|
275
280
|
? html`
|
|
276
|
-
<div class="
|
|
281
|
+
<div class="view-area view-square">
|
|
277
282
|
<ds-text key="square">square</ds-text>
|
|
278
283
|
</div>
|
|
279
|
-
<div class="
|
|
284
|
+
<div class="view-area view-title">
|
|
280
285
|
<ds-text key="title">title</ds-text>
|
|
281
286
|
</div>
|
|
282
|
-
<div class="
|
|
287
|
+
<div class="view-area view-header">
|
|
283
288
|
<ds-text key="header">header</ds-text>
|
|
284
289
|
</div>
|
|
285
|
-
<div class="
|
|
290
|
+
<div class="view-area view-projects">
|
|
286
291
|
<ds-text key="projects">projects</ds-text>
|
|
287
292
|
</div>
|
|
288
|
-
<div class="
|
|
293
|
+
<div class="view-area view-bio">
|
|
289
294
|
<ds-text key="bio">bio</ds-text>
|
|
290
295
|
</div>
|
|
291
|
-
<div class="
|
|
296
|
+
<div class="view-area view-nav">
|
|
292
297
|
<ds-text key="nav">nav</ds-text>
|
|
293
298
|
</div>
|
|
294
|
-
<div class="
|
|
299
|
+
<div class="view-area view-footer">
|
|
295
300
|
<ds-text key="footer">footer</ds-text>
|
|
296
301
|
</div>
|
|
297
302
|
`
|