ds-one 0.2.5-alpha.1 → 0.2.5-alpha.10

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.
Files changed (67) hide show
  1. package/DS1/0-face/device.ts +10 -6
  2. package/DS1/0-face/i18n.ts +39 -90
  3. package/DS1/1-root/fonts/Iosevka-Regular.woff2 +0 -0
  4. package/DS1/1-root/one.css +76 -107
  5. package/DS1/2-core/ds-banner.ts +3 -0
  6. package/DS1/2-core/ds-button.ts +12 -15
  7. package/DS1/2-core/ds-cycle.ts +67 -21
  8. package/DS1/2-core/ds-date.ts +1 -2
  9. package/DS1/2-core/ds-icon.ts +4 -4
  10. package/DS1/2-core/ds-text.ts +27 -3
  11. package/DS1/2-core/ds-tooltip.ts +6 -12
  12. package/DS1/3-unit/ds-list.ts +7 -0
  13. package/DS1/3-unit/ds-row.ts +4 -5
  14. package/DS1/3-unit/ds-table.ts +5 -6
  15. package/DS1/4-page/ds-grid.ts +9 -59
  16. package/DS1/4-page/ds-layout.ts +123 -18
  17. package/LICENSE +1 -1
  18. package/README.md +43 -133
  19. package/dist/0-face/device.d.ts.map +1 -1
  20. package/dist/0-face/device.js +7 -3
  21. package/dist/0-face/i18n.d.ts +0 -2
  22. package/dist/0-face/i18n.d.ts.map +1 -1
  23. package/dist/0-face/i18n.js +37 -74
  24. package/dist/2-core/ds-banner.d.ts +1 -0
  25. package/dist/2-core/ds-banner.d.ts.map +1 -0
  26. package/dist/2-core/ds-banner.js +2 -0
  27. package/dist/2-core/ds-button.d.ts +2 -7
  28. package/dist/2-core/ds-button.d.ts.map +1 -1
  29. package/dist/2-core/ds-button.js +11 -13
  30. package/dist/2-core/ds-cycle.d.ts +2 -0
  31. package/dist/2-core/ds-cycle.d.ts.map +1 -1
  32. package/dist/2-core/ds-cycle.js +65 -19
  33. package/dist/2-core/ds-date.js +1 -1
  34. package/dist/2-core/ds-icon.js +4 -4
  35. package/dist/2-core/ds-text.d.ts +2 -0
  36. package/dist/2-core/ds-text.d.ts.map +1 -1
  37. package/dist/2-core/ds-text.js +26 -3
  38. package/dist/2-core/ds-tooltip.d.ts +1 -1
  39. package/dist/2-core/ds-tooltip.d.ts.map +1 -1
  40. package/dist/2-core/ds-tooltip.js +6 -12
  41. package/dist/3-unit/ds-list.d.ts.map +1 -1
  42. package/dist/3-unit/ds-list.js +3 -0
  43. package/dist/3-unit/ds-portfolio-panel.d.ts.map +1 -1
  44. package/dist/3-unit/ds-portfolio-singlenav.js +3 -3
  45. package/dist/3-unit/ds-row.js +4 -4
  46. package/dist/3-unit/ds-table.d.ts.map +1 -1
  47. package/dist/3-unit/ds-table.js +5 -6
  48. package/dist/4-page/ds-grid.d.ts +0 -7
  49. package/dist/4-page/ds-grid.d.ts.map +1 -1
  50. package/dist/4-page/ds-grid.js +9 -54
  51. package/dist/4-page/ds-layout.d.ts +1 -1
  52. package/dist/4-page/ds-layout.d.ts.map +1 -1
  53. package/dist/4-page/ds-layout.js +126 -17
  54. package/dist/ds-one.bundle.js +347 -265
  55. package/dist/ds-one.bundle.js.map +4 -4
  56. package/dist/ds-one.bundle.min.js +204 -80
  57. package/dist/ds-one.bundle.min.js.map +4 -4
  58. package/package.json +7 -8
  59. package/DS1/3-unit/doublenav-v1.ts +0 -105
  60. package/DS1/3-unit/ds-portfolio-doublenav.ts +0 -105
  61. package/DS1/3-unit/ds-portfolio-panel.ts +0 -27
  62. package/DS1/3-unit/ds-portfolio-singlenav.ts +0 -79
  63. package/DS1/3-unit/list-v1.ts +0 -24
  64. package/DS1/3-unit/panel-v1.ts +0 -26
  65. package/DS1/3-unit/row-v1.ts +0 -52
  66. package/DS1/3-unit/singlenav-v1.ts +0 -78
  67. /package/DS1/x-icon/{row..svg → row.svg} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { LitElement, html, css } from "lit";
2
- import { translate, getNotionText } from "../0-face/i18n";
2
+ import { translate } from "../0-face/i18n";
3
3
  export class Tooltip extends LitElement {
4
4
  constructor() {
5
5
  super();
@@ -58,19 +58,13 @@ export class Tooltip extends LitElement {
58
58
  this._loadText();
59
59
  }
60
60
  }
61
- async _loadText() {
61
+ _loadText() {
62
62
  if (!this.key) {
63
63
  this._text = this.defaultValue || "";
64
64
  this.requestUpdate();
65
65
  return;
66
66
  }
67
67
  try {
68
- const notionText = await getNotionText(this.key);
69
- if (notionText) {
70
- this._text = notionText;
71
- this.requestUpdate();
72
- return;
73
- }
74
68
  const t = translate(this.key);
75
69
  this._text = t && t !== this.key ? t : this.defaultValue || this.key;
76
70
  }
@@ -114,10 +108,10 @@ Tooltip.styles = css `
114
108
  position: absolute;
115
109
  left: 50%;
116
110
  bottom: 100%;
117
- transform: translate(-50%, calc(-2px * var(--scaling-factor)));
111
+ transform: translate(-50%, calc(-2px * var(--sf)));
118
112
  z-index: 1000;
119
113
  pointer-events: none;
120
- height: calc(var(--08) * var(--scaling-factor));
114
+ height: calc(var(--08) * var(--sf));
121
115
  opacity: 0;
122
116
  transition:
123
117
  opacity 120ms ease,
@@ -126,9 +120,9 @@ Tooltip.styles = css `
126
120
  color: light-dark(var(--white), var(--black));
127
121
  border-radius: 0;
128
122
  font-size: var(--type-size-default);
129
- padding: 0px calc(1px * var(--scaling-factor));
123
+ padding: 0px calc(1px * var(--sf));
130
124
  font-family: var(
131
- --typeface,
125
+ --typeface-regular,
132
126
  -apple-system,
133
127
  BlinkMacSystemFont,
134
128
  "Segoe UI",
@@ -1 +1 @@
1
- {"version":3,"file":"ds-list.d.ts","sourceRoot":"","sources":["../../DS1/3-unit/ds-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,qBAAa,IAAK,SAAQ,UAAU;IAClC,MAAM,CAAC,MAAM,0BAOX;IAEF,MAAM;CAGP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,IAAI,CAAC;KACjB;CACF"}
1
+ {"version":3,"file":"ds-list.d.ts","sourceRoot":"","sources":["../../DS1/3-unit/ds-list.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,qBAAa,IAAK,SAAQ,UAAU;IAClC,MAAM,CAAC,MAAM,0BAOX;IAEF,MAAM;CAGP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,IAAI,CAAC;KACjB;CACF"}
@@ -1,3 +1,6 @@
1
+ // ds-banner.ts
2
+ // Unit component that
3
+ // can be used to show a list of items consiting of compoentnts from core
1
4
  import { LitElement, html, css } from "lit";
2
5
  export class List extends LitElement {
3
6
  render() {
@@ -1 +1 @@
1
- {"version":3,"file":"ds-portfolio-panel.d.ts","sourceRoot":"","sources":["../../DS1/3-unit/ds-portfolio-panel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,qBAAa,cAAe,SAAQ,UAAU;IAC5C,MAAM,CAAC,MAAM,0BAQX;IAEF,MAAM;CAGP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,cAAc,CAAC;KACnC;CACF"}
1
+ {"version":3,"file":"ds-portfolio-panel.d.ts","sourceRoot":"","sources":["../../DS1/3-unit/ds-portfolio-panel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,qBAAa,cAAe,SAAQ,UAAU;IAC5C,MAAM,CAAC,MAAM,0BAQX;IAEF,MAAM;CAGP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,cAAc,CAAC;KACnC;CACF"}
@@ -46,15 +46,15 @@ PortfolioSingleNav.styles = css `
46
46
  :host {
47
47
  display: flex;
48
48
  justify-content: end;
49
- gap: calc(5px * var(--scaling-factor));
50
- padding: calc(2px * var(--scaling-factor));
49
+ gap: calc(5px * var(--sf));
50
+ padding: calc(2px * var(--sf));
51
51
  align-items: center;
52
52
  }
53
53
 
54
54
  a {
55
55
  display: inline-flex;
56
56
  align-items: center;
57
- gap: calc(5px * var(--scaling-factor));
57
+ gap: calc(5px * var(--sf));
58
58
  text-decoration: none;
59
59
  color: inherit;
60
60
  }
@@ -15,18 +15,18 @@ Row.styles = css `
15
15
  :host {
16
16
  display: flex;
17
17
  align-items: end;
18
- width: calc(240px * var(--scaling-factor));
18
+ width: calc(240px * var(--sf));
19
19
  }
20
20
 
21
21
  :host([type="fill"]) {
22
22
  justify-content: space-between;
23
- height: calc(var(--1) * var(--scaling-factor));
23
+ height: calc(var(--1) * var(--sf));
24
24
  }
25
25
 
26
26
  :host([type="centered"]) {
27
27
  justify-content: center;
28
- height: calc(var(--1) * var(--scaling-factor));
29
- gap: calc(var(--025) * var(--scaling-factor));
28
+ height: calc(var(--1) * var(--sf));
29
+ gap: calc(var(--025) * var(--sf));
30
30
  }
31
31
  `;
32
32
  customElements.define("ds-row", Row);
@@ -1 +1 @@
1
- {"version":3,"file":"ds-table.d.ts","sourceRoot":"","sources":["../../DS1/3-unit/ds-table.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,OAAQ,SAAQ,UAAU;IACrC,MAAM,CAAC,UAAU;;;;;;;;;;;MAIf;IAEM,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;;IAS5B,MAAM,CAAC,MAAM,0BAmFX;IAEF,MAAM;CA2BP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}
1
+ {"version":3,"file":"ds-table.d.ts","sourceRoot":"","sources":["../../DS1/3-unit/ds-table.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,OAAQ,SAAQ,UAAU;IACrC,MAAM,CAAC,UAAU;;;;;;;;;;;MAIf;IAEM,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;;IAS5B,MAAM,CAAC,MAAM,0BAmFX;IAEF,MAAM;CA0BP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}
@@ -12,7 +12,6 @@ export class DsTable extends LitElement {
12
12
  return html `
13
13
  <div class="table-container">
14
14
  <div class="table-header">
15
-
16
15
  <div class="header-cell product-cell">Product</div>
17
16
  <div class="header-cell users-cell">Users</div>
18
17
  <div class="header-cell retention-cell">Retention</div>
@@ -70,8 +69,8 @@ DsTable.styles = css `
70
69
  display: flex;
71
70
  align-items: center;
72
71
  justify-content: left;
73
- padding: 0 2px;
74
- font-family: var(--typeface);
72
+ padding: 0 2px;
73
+ font-family: var(--typeface-regular);
75
74
  font-size: var(--type-size-default);
76
75
  font-weight: var(--type-weight-default);
77
76
  line-height: var(--type-lineheight-default);
@@ -85,10 +84,10 @@ DsTable.styles = css `
85
84
  display: flex;
86
85
  align-items: center;
87
86
  justify-content: left;
88
-
87
+
89
88
  outline: 1px solid var(--black);
90
89
 
91
- font-family: var(--typeface);
90
+ font-family: var(--typeface-regular);
92
91
  font-size: var(--type-size-default);
93
92
  font-weight: var(--type-weight-default);
94
93
  line-height: var(--type-lineheight-default);
@@ -97,7 +96,7 @@ DsTable.styles = css `
97
96
  }
98
97
 
99
98
  .status-cell {
100
- background-color: var(--light-green);
99
+ background-color: var(--apple-green);
101
100
  }
102
101
 
103
102
  .product-cell {
@@ -10,16 +10,9 @@ export declare class Grid extends LitElement {
10
10
  align: {
11
11
  type: StringConstructor;
12
12
  };
13
- _isMobile: {
14
- type: BooleanConstructor;
15
- state: boolean;
16
- };
17
13
  };
18
14
  align?: string;
19
- _isMobile: boolean;
20
- connectedCallback(): void;
21
15
  static styles: import("lit").CSSResult;
22
- updated(): void;
23
16
  render(): import("lit-html").TemplateResult<1>;
24
17
  }
25
18
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"ds-grid.d.ts","sourceRoot":"","sources":["../../DS1/4-page/ds-grid.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,UAAU,GAAG,IAAI,CAAC;KAC5D;IACD,IAAI,cAAc,EAAE,qBAAqB,CAAC;CAC3C;AAED,qBAAa,IAAK,SAAQ,UAAU;IAClC,MAAM,CAAC,UAAU;;;;;;;;MAGf;IAEF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAS;IAE3B,iBAAiB;IAiCjB,MAAM,CAAC,MAAM,0BA2DX;IAEF,OAAO;IASP,MAAM;CAGP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,IAAI,CAAC;KACjB;CACF"}
1
+ {"version":3,"file":"ds-grid.d.ts","sourceRoot":"","sources":["../../DS1/4-page/ds-grid.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,UAAU,GAAG,IAAI,CAAC;KAC5D;IACD,IAAI,cAAc,EAAE,qBAAqB,CAAC;CAC3C;AAED,qBAAa,IAAK,SAAQ,UAAU;IAClC,MAAM,CAAC,UAAU;;;;MAEf;IAEF,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,MAAM,CAAC,MAAM,0BAsDX;IAEF,MAAM;CAGP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,IAAI,CAAC;KACjB;CACF"}
@@ -1,53 +1,13 @@
1
1
  // ds-grid.ts
2
2
  // Simple grid layout component
3
3
  import { LitElement, html, css } from "lit";
4
- import { detectMobileDevice } from "../0-face/device";
5
4
  export class Grid extends LitElement {
6
- constructor() {
7
- super(...arguments);
8
- this._isMobile = false;
9
- }
10
- connectedCallback() {
11
- super.connectedCallback();
12
- this._isMobile = detectMobileDevice();
13
- console.log(`[ds-grid] Mobile device: ${this._isMobile}`);
14
- // Apply mobile class immediately
15
- if (this._isMobile) {
16
- this.classList.add("mobile");
17
- console.log(`[ds-grid] Mobile class added`);
18
- }
19
- // Calculate mobile grid dimensions to fit screen
20
- if (this._isMobile && typeof window !== "undefined") {
21
- const screenWidth = window.innerWidth;
22
- const columns = 14;
23
- const gap = 0.5;
24
- // Calculate column size accounting for gaps between columns
25
- // Total width = (columns * columnSize) + ((columns - 1) * gap)
26
- // Therefore: columnSize = (screenWidth - ((columns - 1) * gap)) / columns
27
- const totalGapWidth = (columns - 1) * gap;
28
- const columnSize = (screenWidth - totalGapWidth) / columns;
29
- console.log(`[ds-grid] Mobile grid: ${columns} columns × ${columnSize.toFixed(2)}px + ${totalGapWidth}px gaps = ${screenWidth}px`);
30
- // Set custom property for this grid instance
31
- this.style.setProperty("--mobile-column-size", `${columnSize}px`);
32
- this.style.setProperty("--mobile-gap", `${gap}px`);
33
- }
34
- }
35
- updated() {
36
- // Apply mobile class if detected as mobile device
37
- if (this._isMobile) {
38
- this.classList.add("mobile");
39
- }
40
- else {
41
- this.classList.remove("mobile");
42
- }
43
- }
44
5
  render() {
45
6
  return html ``;
46
7
  }
47
8
  }
48
9
  Grid.properties = {
49
10
  align: { type: String },
50
- _isMobile: { type: Boolean, state: true },
51
11
  };
52
12
  Grid.styles = css `
53
13
  :host {
@@ -55,17 +15,13 @@ Grid.styles = css `
55
15
  margin-left: 0.5px !important;
56
16
  display: grid;
57
17
  width: 1440px;
58
- height: 100%;
18
+ height: 360px;
59
19
  grid-template-columns: repeat(auto-fill, 19px);
60
20
  grid-template-rows: repeat(auto-fill, 19px);
61
21
  gap: 1px;
62
- row-rule: calc(1px * var(--scaling-factor)) solid
63
- light-dark(rgb(147, 147, 147), rgb(147, 147, 147));
64
- column-rule: calc(1px * var(--scaling-factor)) solid
65
- light-dark(rgb(147, 147, 147), rgb(147, 147, 147));
66
- outline:
67
- 1px solid light-dark(rgb(147, 147, 147)),
68
- rgb(147, 147, 147);
22
+ row-rule: calc(1px * var(--sf)) solid var(--grid-color);
23
+ column-rule: calc(1px * var(--sf)) solid var(--grid-color);
24
+ outline: 1px solid black;
69
25
  position: fixed;
70
26
  top: 0;
71
27
  left: 50%;
@@ -76,21 +32,20 @@ Grid.styles = css `
76
32
 
77
33
  /* DO NOT CHANGE THIS GRID CODE FOR MOBILE. ITS PERFECT FOR MOBILE. */
78
34
  :host(.mobile) {
79
- outline: calc(2px * var(--scaling-factor)) solid rgba(251, 255, 0, 0.9);
80
- width: calc(100% - calc(1px * var(--scaling-factor)));
35
+ width: calc(100% - calc(1px * var(--sf)));
81
36
  max-width: 100vw;
82
37
  margin-left: 0 !important;
83
38
  margin-top: 0 !important;
84
39
  box-sizing: border-box;
85
40
  position: fixed;
86
- top: calc(0.5px * var(--scaling-factor));
41
+ top: calc(0.5px * var(--sf));
87
42
  left: 50%;
88
43
  transform: translateX(-50%);
89
44
  pointer-events: none;
90
45
  z-index: 300;
91
- gap: calc(1px * var(--scaling-factor));
92
- grid-template-columns: repeat(14, calc(19px * var(--scaling-factor)));
93
- grid-template-rows: repeat(auto-fill, calc(19px * var(--scaling-factor)));
46
+ gap: calc(1px * var(--sf));
47
+ grid-template-columns: repeat(14, calc(19px * var(--sf)));
48
+ grid-template-rows: repeat(auto-fill, calc(19px * var(--sf)));
94
49
  }
95
50
 
96
51
  :host([align="left"]) {
@@ -17,7 +17,7 @@ export declare class Layout extends LitElement {
17
17
  type: BooleanConstructor;
18
18
  };
19
19
  };
20
- mode?: string;
20
+ mode: string;
21
21
  align?: string;
22
22
  debug?: boolean;
23
23
  static styles: import("lit").CSSResult;
@@ -1 +1 @@
1
- {"version":3,"file":"ds-layout.d.ts","sourceRoot":"","sources":["../../DS1/4-page/ds-layout.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,UAAU,GAAG,IAAI,CAAC;KAC5D;IACD,IAAI,cAAc,EAAE,qBAAqB,CAAC;CAC3C;AAED,qBAAa,MAAO,SAAQ,UAAU;IACpC,MAAM,CAAC,UAAU;;;;;;;;;;MAIf;IAEF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,MAAM,CAAC,MAAM,0BAgJX;IAEF,MAAM;CA6BP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,MAAM,CAAC;KACrB;CACF"}
1
+ {"version":3,"file":"ds-layout.d.ts","sourceRoot":"","sources":["../../DS1/4-page/ds-layout.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,UAAU,GAAG,IAAI,CAAC;KAC5D;IACD,IAAI,cAAc,EAAE,qBAAqB,CAAC;CAC3C;AAED,qBAAa,MAAO,SAAQ,UAAU;IACpC,MAAM,CAAC,UAAU;;;;;;;;;;MAIf;IAEF,IAAI,EAAE,MAAM,CAAe;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,MAAM,CAAC,MAAM,0BAiNX;IAEF,MAAM;CAqEP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,MAAM,CAAC;KACrB;CACF"}
@@ -2,29 +2,73 @@
2
2
  // Simple grid layout component with debug mode
3
3
  import { LitElement, html, css } from "lit";
4
4
  export class Layout extends LitElement {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.mode = "portfolio";
8
+ }
5
9
  render() {
6
10
  const isDebug = this.debug || this.mode === "debug";
11
+ const isPortfolio = this.mode === "portfolio";
7
12
  const isCompany = this.mode === "company";
13
+ const isApp = this.mode === "app";
8
14
  return html `
9
15
  <slot></slot>
10
16
  ${isDebug
11
17
  ? html `
12
18
  <div class="debug-overlay">
13
- ${isCompany
19
+ ${isApp
14
20
  ? html `
15
- <div class="debug-area debug-header">header</div>
16
- <div class="debug-area debug-content">content</div>
17
- <div class="debug-area debug-footer">footer</div>
21
+ <div class="debug-area debug-banner">
22
+ <ds-text key="banner">banner</ds-text>
23
+ </div>
24
+ <div class="debug-area debug-header">
25
+ <ds-text key="header">header</ds-text>
26
+ </div>
27
+
28
+ <div class="debug-area debug-main">
29
+ <ds-text key="main">main</ds-text>
30
+ </div>
31
+ <div class="debug-area debug-footer-app">
32
+ <ds-text key="footer">footer</ds-text>
33
+ </div>
18
34
  `
19
- : html `
20
- <div class="debug-area debug-square">square</div>
21
- <div class="debug-area debug-title">title</div>
22
- <div class="debug-area debug-header">header</div>
23
- <div class="debug-area debug-projects">projects</div>
24
- <div class="debug-area debug-bio">bio</div>
25
- <div class="debug-area debug-nav">nav</div>
26
- <div class="debug-area debug-footer">footer</div>
27
- `}
35
+ : isCompany
36
+ ? html `
37
+ <div class="debug-area debug-header">
38
+ <ds-text key="header">header</ds-text>
39
+ </div>
40
+ <div class="debug-area debug-content">
41
+ <ds-text key="content">content</ds-text>
42
+ </div>
43
+ <div class="debug-area debug-footer">
44
+ <ds-text key="footer">footer</ds-text>
45
+ </div>
46
+ `
47
+ : isPortfolio
48
+ ? html `
49
+ <div class="debug-area debug-square">
50
+ <ds-text key="square">square</ds-text>
51
+ </div>
52
+ <div class="debug-area debug-title">
53
+ <ds-text key="title">title</ds-text>
54
+ </div>
55
+ <div class="debug-area debug-header">
56
+ <ds-text key="header">header</ds-text>
57
+ </div>
58
+ <div class="debug-area debug-projects">
59
+ <ds-text key="projects">projects</ds-text>
60
+ </div>
61
+ <div class="debug-area debug-bio">
62
+ <ds-text key="bio">bio</ds-text>
63
+ </div>
64
+ <div class="debug-area debug-nav">
65
+ <ds-text key="nav">nav</ds-text>
66
+ </div>
67
+ <div class="debug-area debug-footer">
68
+ <ds-text key="footer">footer</ds-text>
69
+ </div>
70
+ `
71
+ : ""}
28
72
  </div>
29
73
  `
30
74
  : ""}
@@ -39,6 +83,11 @@ Layout.properties = {
39
83
  Layout.styles = css `
40
84
  :host {
41
85
  display: grid;
86
+ position: relative;
87
+ width: 100%;
88
+ }
89
+
90
+ :host([mode="portfolio"]) {
42
91
  grid-template-columns: 120px 480px 40px;
43
92
  grid-template-rows: 120px 120px 60px 180px 60px 120px 60px 20px 120px 120px;
44
93
  grid-template-areas:
@@ -55,8 +104,6 @@ Layout.styles = css `
55
104
  ". . .";
56
105
  min-height: 600px;
57
106
  background-color: rgba(165, 165, 165, 0.03);
58
- position: relative;
59
- width: 100%;
60
107
  max-width: 640px;
61
108
  margin: 0 auto;
62
109
  }
@@ -90,6 +137,29 @@ Layout.styles = css `
90
137
  justify-self: end;
91
138
  }
92
139
 
140
+ /* App mode - Base */
141
+ :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";
148
+ min-height: 100vh;
149
+ background-color: transparent;
150
+ width: 100%;
151
+ margin: 0 auto;
152
+ gap: 0;
153
+ }
154
+
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));
161
+ }
162
+
93
163
  .debug-overlay {
94
164
  position: absolute;
95
165
  margin-left: -1px;
@@ -102,6 +172,9 @@ Layout.styles = css `
102
172
  display: grid;
103
173
  font-size: 18px;
104
174
  font-weight: bold;
175
+ }
176
+
177
+ :host([mode="portfolio"]) .debug-overlay {
105
178
  grid-template-columns: 120px 480px;
106
179
  grid-template-rows: 120px 120px 60px 180px 60px 120px 60px 20px 120px 120px;
107
180
  grid-template-areas:
@@ -137,7 +210,7 @@ Layout.styles = css `
137
210
  justify-content: center;
138
211
  font-size: 10px;
139
212
  font-weight: var(--type-weight-default);
140
- font-family: var(--typeface);
213
+ font-family: var(--typeface-regular);
141
214
  color: var(--black);
142
215
  border: 1px solid red;
143
216
  opacity: 1;
@@ -173,12 +246,48 @@ Layout.styles = css `
173
246
 
174
247
  .debug-footer {
175
248
  grid-area: footer;
176
- border-color: #ffa500;
249
+ border-color: rgb(24, 147, 73);
250
+ background-color: rgba(127, 123, 11, 0.1);
177
251
  }
178
252
 
179
253
  .debug-content {
180
254
  grid-area: content;
181
255
  border-color: rgba(71, 231, 71, 0.63);
182
256
  }
257
+
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 {
273
+ 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
+ }
282
+
283
+ .debug-main {
284
+ grid-area: main;
285
+ border-color: #0000ff;
286
+ }
287
+
288
+ .debug-footer-app {
289
+ grid-area: footer;
290
+ border-color: #ffa500;
291
+ }
183
292
  `;
184
293
  customElements.define("ds-layout", Layout);