ds-one 0.2.5-alpha.12 → 0.2.5-alpha.14

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.
@@ -1,5 +1,5 @@
1
1
  // ds-layout.ts
2
- // Simple grid layout component with debug mode
2
+ // Simple grid layout component with view mode
3
3
  import { LitElement, html, css } from "lit";
4
4
  export class Layout extends LitElement {
5
5
  constructor() {
@@ -7,64 +7,64 @@ export class Layout extends LitElement {
7
7
  this.mode = "portfolio";
8
8
  }
9
9
  render() {
10
- const isDebug = this.debug || this.mode === "debug";
10
+ const isView = this.view || this.mode === "view";
11
11
  const isPortfolio = this.mode === "portfolio";
12
12
  const isCompany = this.mode === "company";
13
13
  const isApp = this.mode === "app";
14
14
  return html `
15
15
  <slot></slot>
16
- ${isDebug
16
+ ${isView
17
17
  ? html `
18
- <div class="debug-overlay">
18
+ <div class="view-overlay">
19
19
  ${isApp
20
20
  ? html `
21
- <div class="debug-area debug-banner">
21
+ <div class="view-area view-banner">
22
22
  <ds-text key="banner">banner</ds-text>
23
23
  </div>
24
- <div class="debug-area debug-header">
24
+ <div class="view-area view-header">
25
25
  <ds-text key="header">header</ds-text>
26
26
  </div>
27
27
 
28
- <div class="debug-area debug-main">
28
+ <div class="view-area view-main">
29
29
  <ds-text key="main">main</ds-text>
30
30
  </div>
31
- <div class="debug-area debug-footer-app">
31
+ <div class="view-area view-footer">
32
32
  <ds-text key="footer">footer</ds-text>
33
33
  </div>
34
34
  `
35
35
  : isCompany
36
36
  ? html `
37
- <div class="debug-area debug-header">
37
+ <div class="view-area view-header">
38
38
  <ds-text key="header">header</ds-text>
39
39
  </div>
40
- <div class="debug-area debug-content">
40
+ <div class="view-area view-content">
41
41
  <ds-text key="content">content</ds-text>
42
42
  </div>
43
- <div class="debug-area debug-footer">
43
+ <div class="view-area view-footer">
44
44
  <ds-text key="footer">footer</ds-text>
45
45
  </div>
46
46
  `
47
47
  : isPortfolio
48
48
  ? html `
49
- <div class="debug-area debug-square">
49
+ <div class="view-area view-square">
50
50
  <ds-text key="square">square</ds-text>
51
51
  </div>
52
- <div class="debug-area debug-title">
52
+ <div class="view-area view-title">
53
53
  <ds-text key="title">title</ds-text>
54
54
  </div>
55
- <div class="debug-area debug-header">
55
+ <div class="view-area view-header">
56
56
  <ds-text key="header">header</ds-text>
57
57
  </div>
58
- <div class="debug-area debug-projects">
58
+ <div class="view-area view-projects">
59
59
  <ds-text key="projects">projects</ds-text>
60
60
  </div>
61
- <div class="debug-area debug-bio">
61
+ <div class="view-area view-bio">
62
62
  <ds-text key="bio">bio</ds-text>
63
63
  </div>
64
- <div class="debug-area debug-nav">
64
+ <div class="view-area view-nav">
65
65
  <ds-text key="nav">nav</ds-text>
66
66
  </div>
67
- <div class="debug-area debug-footer">
67
+ <div class="view-area view-footer">
68
68
  <ds-text key="footer">footer</ds-text>
69
69
  </div>
70
70
  `
@@ -78,7 +78,7 @@ export class Layout extends LitElement {
78
78
  Layout.properties = {
79
79
  mode: { type: String },
80
80
  align: { type: String },
81
- debug: { type: Boolean },
81
+ view: { type: Boolean },
82
82
  };
83
83
  Layout.styles = css `
84
84
  :host {
@@ -87,80 +87,106 @@ Layout.styles = css `
87
87
  width: 100%;
88
88
  }
89
89
 
90
+ slot {
91
+ display: contents;
92
+ }
93
+
90
94
  :host([mode="portfolio"]) {
91
- grid-template-columns: 120px 480px 40px;
92
- grid-template-rows: 120px 120px 60px 180px 60px 120px 60px 20px 120px 120px;
93
- grid-template-areas:
94
- "square . ."
95
- ". title ."
96
- ". header ."
97
- ". projects ."
98
- ". . ."
99
- ". bio ."
100
- ". . ."
101
- ". nav ."
102
- ". . ."
103
- ". footer ."
104
- ". . .";
95
+ --portfolio-cols: 120px 480px 40px;
96
+ --portfolio-rows: 120px 120px 60px 180px 60px 120px 60px 20px 120px 120px;
97
+ --portfolio-areas: "square . ." ". title ." ". header ." ". projects ."
98
+ ". . ." ". bio ." ". . ." ". nav ." ". . ." ". footer ." ". . .";
99
+ --portfolio-overlay-cols: 120px 480px;
100
+ --portfolio-overlay-areas: "square ." ". title" ". header" ". projects"
101
+ ". ." ". bio" ". ." ". nav" ". ." ". footer" ". .";
102
+ grid-template-columns: var(--portfolio-cols);
103
+ grid-template-rows: var(--portfolio-rows);
104
+ grid-template-areas: var(--portfolio-areas);
105
105
  min-height: 600px;
106
106
  background-color: rgba(165, 165, 165, 0.03);
107
107
  max-width: 640px;
108
- margin: 0 auto;
108
+ margin: 0;
109
+ }
110
+
111
+ :host([mode="portfolio"]) .view-overlay {
112
+ grid-template-columns: var(--portfolio-overlay-cols);
113
+ grid-template-rows: var(--portfolio-rows);
114
+ grid-template-areas: var(--portfolio-overlay-areas);
109
115
  }
110
116
 
111
117
  :host([mode="company"]) {
112
- grid-template-columns: auto 400px auto;
113
- grid-template-rows: 80px 20px 20px 120px 20px 120px;
114
- grid-template-areas:
115
- ". . ."
116
- ". header ."
117
- ". . ."
118
- ". content ."
119
- ". . ."
118
+ --company-cols: auto 400px auto;
119
+ --company-rows: 80px 20px 20px 120px 20px 120px;
120
+ --company-areas: ". . ." ". header ." ". . ." ". content ." ". . ."
120
121
  ". footer .";
122
+ grid-template-columns: var(--company-cols);
123
+ grid-template-rows: var(--company-rows);
124
+ grid-template-areas: var(--company-areas);
121
125
  gap: 0;
122
126
  max-width: 100%;
123
127
  }
124
128
 
125
- :host([align="left"]) {
129
+ :host([mode="company"]) .view-overlay {
130
+ grid-template-columns: var(--company-cols);
131
+ grid-template-rows: var(--company-rows);
132
+ grid-template-areas: var(--company-areas);
133
+ gap: 0;
134
+ }
135
+
136
+ :host([align="left"]),
137
+ :host([mode="portfolio"][align="left"]),
138
+ :host([mode="company"][align="left"]),
139
+ :host([mode="app"][align="left"]) {
126
140
  margin: 0;
127
141
  justify-self: start;
128
142
  }
129
143
 
130
- :host([align="center"]) {
144
+ :host([align="center"]),
145
+ :host([mode="portfolio"][align="center"]),
146
+ :host([mode="company"][align="center"]),
147
+ :host([mode="app"][align="center"]) {
131
148
  margin: 0 auto;
132
149
  justify-self: center;
133
150
  }
134
151
 
135
- :host([align="right"]) {
152
+ :host([align="right"]),
153
+ :host([mode="portfolio"][align="right"]),
154
+ :host([mode="company"][align="right"]),
155
+ :host([mode="app"][align="right"]) {
136
156
  margin: 0 0 0 auto;
137
157
  justify-self: end;
138
158
  }
139
159
 
140
160
  /* App mode - Base */
141
161
  :host([mode="app"]) {
142
- grid-template-columns: 1fr;
143
- grid-template-rows: calc(var(--1) * var(--sf)) 20px 1fr auto;
144
- grid-template-areas:
145
- "banner"
146
- "main"
147
- "footer";
162
+ --app-cols: 100%;
163
+ --app-rows: calc(var(--unit) * var(--sf)) calc(var(--unit) * var(--sf))
164
+ calc(var(--unit) * var(--sf)) calc(var(--dozen) * var(--sf))
165
+ calc(var(--quad) * var(--sf)) calc(var(--unit) * var(--sf));
166
+ --app-areas: "banner" "." "header" "." "main" "." "footer";
167
+ --app-overlay-cols: 100%;
168
+ --app-overlay-rows: calc(var(--unit) * var(--sf))
169
+ calc(var(--unit) * var(--sf)) calc(var(--unit) * var(--sf))
170
+ calc(var(--unit) * var(--sf)) calc(var(--dozen) * var(--sf))
171
+ calc(var(--quad) * var(--sf)) calc(var(--unit) * var(--sf));
172
+ --app-overlay-areas: "banner" "." "header" "." "main" "." "footer";
173
+ grid-template-columns: var(--app-cols);
174
+ grid-template-rows: var(--app-rows);
175
+ grid-template-areas: var(--app-areas);
148
176
  min-height: 100vh;
149
177
  background-color: transparent;
150
- width: 100%;
178
+ width: calc(240px * var(--sf, 1));
179
+ max-width: calc(240px * var(--sf, 1));
151
180
  margin: 0 auto;
152
- gap: 0;
153
181
  }
154
182
 
155
- /* App mode - with scaling factor */
156
- :host([mode="app"]) {
157
- max-width: calc(400px * var(--sf, 1));
158
- padding: calc(60px * var(--sf, 1)) calc(28px * var(--sf, 1))
159
- calc(9.751px * var(--sf, 1));
160
- gap: calc(28px * var(--sf, 1));
183
+ :host([mode="app"]) .view-overlay {
184
+ grid-template-columns: var(--app-overlay-cols);
185
+ grid-template-rows: var(--app-overlay-rows);
186
+ grid-template-areas: var(--app-overlay-areas);
161
187
  }
162
188
 
163
- .debug-overlay {
189
+ .view-overlay {
164
190
  position: absolute;
165
191
  margin-left: -1px;
166
192
  top: 0;
@@ -170,124 +196,108 @@ Layout.styles = css `
170
196
  pointer-events: none;
171
197
  z-index: 1000;
172
198
  display: grid;
173
- font-size: 18px;
174
- font-weight: bold;
175
- }
176
-
177
- :host([mode="portfolio"]) .debug-overlay {
178
- grid-template-columns: 120px 480px;
179
- grid-template-rows: 120px 120px 60px 180px 60px 120px 60px 20px 120px 120px;
180
- grid-template-areas:
181
- "square ."
182
- ". title"
183
- ". header"
184
- ". projects"
185
- ". ."
186
- ". bio"
187
- ". ."
188
- ". nav"
189
- ". ."
190
- ". footer"
191
- ". .";
192
199
  }
193
200
 
194
- :host([mode="company"]) .debug-overlay {
195
- grid-template-columns: auto 400px auto;
196
- grid-template-rows: 80px 20px 20px 120px 20px 120px;
197
- grid-template-areas:
198
- ". . ."
199
- ". header ."
200
- ". . ."
201
- ". content ."
202
- ". . ."
203
- ". footer .";
204
- gap: 0;
205
- }
206
-
207
- .debug-area {
201
+ .view-area {
208
202
  display: flex;
203
+ width: calc(240px * var(--sf, 1));
204
+ height: 100%;
209
205
  align-items: center;
210
206
  justify-content: center;
211
- font-size: 10px;
212
- font-weight: var(--type-weight-default);
213
207
  font-family: var(--typeface-regular);
214
- color: var(--black);
215
- border: 1px solid red;
208
+ font-size: calc(var(--type-size-default) * var(--05));
209
+ color: color-mix(in srgb, var(--tuned-red) 25%, transparent);
210
+ background-color: color-mix(
211
+ in srgb,
212
+ var(--accent-color) 25%,
213
+ transparent
214
+ );
216
215
  opacity: 1;
217
216
  }
218
217
 
219
- .debug-square {
218
+ :host([mode="portfolio"]) .view-area:nth-of-type(1) {
219
+ background-color: color-mix(in srgb, var(--tuned-red) 25%, transparent);
220
+ }
221
+ :host([mode="portfolio"]) .view-area:nth-of-type(2) {
222
+ border-color: var(--sharp-blue);
223
+ }
224
+ :host([mode="portfolio"]) .view-area:nth-of-type(3) {
225
+ border-color: var(--yellow);
226
+ }
227
+ :host([mode="portfolio"]) .view-area:nth-of-type(4) {
228
+ border-color: var(--apple-green);
229
+ }
230
+ :host([mode="portfolio"]) .view-area:nth-of-type(5) {
231
+ border-color: var(--pink);
232
+ }
233
+ :host([mode="portfolio"]) .view-area:nth-of-type(6) {
234
+ border-color: var(--orange);
235
+ }
236
+ :host([mode="portfolio"]) .view-area:nth-of-type(7) {
237
+ border-color: var(--zenith-blue);
238
+ }
239
+
240
+ :host([mode="company"]) .view-area:nth-of-type(1) {
241
+ border-color: var(--tuned-red);
242
+ }
243
+ :host([mode="company"]) .view-area:nth-of-type(2) {
244
+ border-color: var(--sharp-blue);
245
+ }
246
+ :host([mode="company"]) .view-area:nth-of-type(3) {
247
+ border-color: var(--yellow);
248
+ }
249
+
250
+ :host([mode="app"]) .view-area:nth-of-type(1) {
251
+ background-color: color-mix(in srgb, var(--tuned-red) 25%, transparent);
252
+ }
253
+ :host([mode="app"]) .view-area:nth-of-type(2) {
254
+ background-color: color-mix(in srgb, var(--sharp-blue) 25%, transparent);
255
+ }
256
+ :host([mode="app"]) .view-area:nth-of-type(3) {
257
+ background-color: color-mix(in srgb, var(--yellow) 25%, transparent);
258
+ }
259
+ :host([mode="app"]) .view-area:nth-of-type(4) {
260
+ background-color: color-mix(in srgb, var(--apple-green) 25%, transparent);
261
+ }
262
+
263
+ .view-square {
220
264
  grid-area: square;
221
265
  }
222
266
 
223
- .debug-title {
267
+ .view-title {
224
268
  grid-area: title;
225
269
  }
226
270
 
227
- .debug-header {
271
+ .view-header {
228
272
  grid-area: header;
229
- border-color: #0000ff;
230
273
  }
231
274
 
232
- .debug-projects {
275
+ .view-projects {
233
276
  grid-area: projects;
234
- border-color: #ffff00;
235
277
  }
236
278
 
237
- .debug-bio {
279
+ .view-bio {
238
280
  grid-area: bio;
239
- border-color: #ff00ff;
240
281
  }
241
282
 
242
- .debug-nav {
283
+ .view-nav {
243
284
  grid-area: nav;
244
- border-color: #00ffff;
245
285
  }
246
286
 
247
- .debug-footer {
287
+ .view-footer {
248
288
  grid-area: footer;
249
- border-color: rgb(24, 147, 73);
250
- background-color: rgba(127, 123, 11, 0.1);
251
289
  }
252
290
 
253
- .debug-content {
291
+ .view-content {
254
292
  grid-area: content;
255
- border-color: rgba(71, 231, 71, 0.63);
256
293
  }
257
294
 
258
- :host([mode="app"]) .debug-overlay {
259
- grid-template-columns: 1fr;
260
- grid-template-rows:
261
- calc(var(--1) * var(--sf))
262
- calc(var(--2) * var(--sf))
263
- calc(var(--4) * var(--sf))
264
- calc(var(--1) * var(--sf));
265
- grid-template-areas:
266
- "banner"
267
- "header"
268
- "main"
269
- "footer";
270
- }
271
-
272
- .debug-banner {
295
+ .view-banner {
273
296
  grid-area: banner;
274
- border-color: #daed09;
275
- }
276
-
277
- .debug-header {
278
- grid-area: header;
279
- border-color: #0000ff;
280
- background-color: rgba(127, 123, 11, 0.5);
281
297
  }
282
298
 
283
- .debug-main {
299
+ .view-main {
284
300
  grid-area: main;
285
- border-color: #0000ff;
286
- }
287
-
288
- .debug-footer-app {
289
- grid-area: footer;
290
- border-color: #ffa500;
291
301
  }
292
302
  `;
293
303
  customElements.define("ds-layout", Layout);