ds-one 0.2.0-alpha.3 → 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 (271) hide show
  1. package/DS1/0-face/{2025-04-23-device.ts → device.ts} +10 -6
  2. package/DS1/{utils/language.ts → 0-face/i18n.ts} +236 -92
  3. package/DS1/0-face/preferences.ts +23 -0
  4. package/DS1/0-face/pricing.ts +57 -0
  5. package/DS1/1-root/fonts/Iosevka-Regular.woff2 +0 -0
  6. package/DS1/1-root/one.css +76 -107
  7. package/DS1/2-core/ds-banner.ts +3 -0
  8. package/DS1/2-core/ds-button.ts +13 -16
  9. package/DS1/2-core/ds-cycle.ts +84 -39
  10. package/DS1/2-core/{ds-year.ts → ds-date.ts} +5 -6
  11. package/DS1/2-core/ds-icon.ts +4 -4
  12. package/DS1/2-core/ds-input.ts +1 -0
  13. package/DS1/2-core/ds-text.ts +27 -3
  14. package/DS1/2-core/ds-tooltip.ts +9 -14
  15. package/DS1/3-unit/ds-list.ts +7 -0
  16. package/DS1/3-unit/ds-row.ts +4 -5
  17. package/DS1/3-unit/ds-table.ts +5 -6
  18. package/DS1/4-page/ds-grid.ts +9 -59
  19. package/DS1/4-page/ds-layout.ts +123 -18
  20. package/DS1/index.ts +39 -37
  21. package/LICENSE +1 -1
  22. package/README.md +43 -133
  23. package/dist/0-face/{2025-04-23-device.d.ts → device.d.ts} +1 -1
  24. package/dist/0-face/device.d.ts.map +1 -0
  25. package/dist/0-face/{2025-04-23-device.js → device.js} +7 -3
  26. package/dist/{utils/language.d.ts → 0-face/i18n.d.ts} +1 -3
  27. package/dist/0-face/i18n.d.ts.map +1 -0
  28. package/dist/{utils/language.js → 0-face/i18n.js} +178 -76
  29. package/dist/0-face/preferences.d.ts +9 -0
  30. package/dist/0-face/preferences.d.ts.map +1 -0
  31. package/dist/0-face/preferences.js +14 -0
  32. package/dist/0-face/pricing.d.ts +15 -0
  33. package/dist/0-face/pricing.d.ts.map +1 -0
  34. package/dist/0-face/pricing.js +46 -0
  35. package/dist/0-face/theme.d.ts.map +1 -0
  36. package/dist/2-core/ds-banner.d.ts +1 -0
  37. package/dist/2-core/ds-banner.d.ts.map +1 -0
  38. package/dist/2-core/ds-banner.js +2 -0
  39. package/dist/2-core/ds-button.d.ts +2 -7
  40. package/dist/2-core/ds-button.d.ts.map +1 -1
  41. package/dist/2-core/ds-button.js +12 -14
  42. package/dist/2-core/ds-cycle.d.ts +2 -0
  43. package/dist/2-core/ds-cycle.d.ts.map +1 -1
  44. package/dist/2-core/ds-cycle.js +80 -34
  45. package/dist/2-core/{ds-year.d.ts → ds-date.d.ts} +4 -4
  46. package/dist/2-core/ds-date.d.ts.map +1 -0
  47. package/dist/2-core/{ds-year.js → ds-date.js} +5 -5
  48. package/dist/2-core/ds-icon.js +4 -4
  49. package/dist/2-core/ds-input.d.ts +1 -0
  50. package/dist/2-core/ds-input.d.ts.map +1 -0
  51. package/dist/2-core/ds-input.js +1 -0
  52. package/dist/2-core/ds-text.d.ts +2 -0
  53. package/dist/2-core/ds-text.d.ts.map +1 -1
  54. package/dist/2-core/ds-text.js +26 -3
  55. package/dist/2-core/ds-tooltip.d.ts +1 -1
  56. package/dist/2-core/ds-tooltip.d.ts.map +1 -1
  57. package/dist/2-core/ds-tooltip.js +9 -13
  58. package/dist/3-unit/ds-list.d.ts.map +1 -1
  59. package/dist/3-unit/ds-list.js +3 -0
  60. package/dist/3-unit/{ds-doublenav.d.ts → ds-portfolio-doublenav.d.ts} +4 -4
  61. package/dist/3-unit/ds-portfolio-doublenav.d.ts.map +1 -0
  62. package/dist/3-unit/{ds-doublenav.js → ds-portfolio-doublenav.js} +4 -4
  63. package/dist/3-unit/{ds-panel.d.ts → ds-portfolio-panel.d.ts} +3 -3
  64. package/dist/3-unit/ds-portfolio-panel.d.ts.map +1 -0
  65. package/dist/3-unit/{ds-panel.js → ds-portfolio-panel.js} +3 -3
  66. package/dist/3-unit/{ds-singlenav.d.ts → ds-portfolio-singlenav.d.ts} +4 -4
  67. package/dist/3-unit/ds-portfolio-singlenav.d.ts.map +1 -0
  68. package/dist/3-unit/{ds-singlenav.js → ds-portfolio-singlenav.js} +7 -7
  69. package/dist/3-unit/ds-row.js +4 -4
  70. package/dist/3-unit/ds-table.d.ts.map +1 -1
  71. package/dist/3-unit/ds-table.js +5 -6
  72. package/dist/4-page/ds-grid.d.ts +0 -7
  73. package/dist/4-page/ds-grid.d.ts.map +1 -1
  74. package/dist/4-page/ds-grid.js +9 -54
  75. package/dist/4-page/ds-layout.d.ts +1 -1
  76. package/dist/4-page/ds-layout.d.ts.map +1 -1
  77. package/dist/4-page/ds-layout.js +126 -17
  78. package/dist/ds-one.bundle.js +2515 -4132
  79. package/dist/ds-one.bundle.js.map +4 -4
  80. package/dist/ds-one.bundle.min.js +245 -787
  81. package/dist/ds-one.bundle.min.js.map +4 -4
  82. package/dist/index.d.ts +16 -26
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +32 -34
  85. package/package.json +8 -9
  86. package/DS1/0-face/2025-04-23-language.ts +0 -4
  87. package/DS1/2-core/ds-article.ts +0 -454
  88. package/DS1/2-core/ds-attributes.ts +0 -155
  89. package/DS1/2-core/ds-downloadcv.ts +0 -146
  90. package/DS1/2-core/ds-header.ts +0 -82
  91. package/DS1/2-core/ds-home.ts +0 -168
  92. package/DS1/2-core/ds-link.ts +0 -121
  93. package/DS1/2-core/ds-markdown.ts +0 -252
  94. package/DS1/2-core/ds-price.ts +0 -108
  95. package/DS1/2-core/ds-squarecircle.ts +0 -155
  96. package/DS1/2-core/ds-title.ts +0 -139
  97. package/DS1/2-core/ds-viewtoggle.ts +0 -83
  98. package/DS1/3-unit/ds-doublenav.ts +0 -106
  99. package/DS1/3-unit/ds-panel.ts +0 -27
  100. package/DS1/3-unit/ds-singlenav.ts +0 -79
  101. package/DS1/utils/cdn-loader.ts +0 -208
  102. package/DS1/utils/keys.json +0 -41
  103. package/DS1/utils/pricing.ts +0 -24
  104. package/DS1/utils/scroll.ts +0 -184
  105. package/DS1/utils/settings.ts +0 -23
  106. package/DS1/utils/viewMode.ts +0 -55
  107. package/dist/0-face/2025-04-23-device.d.ts.map +0 -1
  108. package/dist/0-face/2025-04-23-language.d.ts +0 -1
  109. package/dist/0-face/2025-04-23-language.d.ts.map +0 -1
  110. package/dist/0-face/2025-04-23-language.js +0 -3
  111. package/dist/2-core/article-v1.d.ts +0 -129
  112. package/dist/2-core/article-v1.d.ts.map +0 -1
  113. package/dist/2-core/article-v1.js +0 -361
  114. package/dist/2-core/attributes-v1.d.ts +0 -47
  115. package/dist/2-core/attributes-v1.d.ts.map +0 -1
  116. package/dist/2-core/attributes-v1.js +0 -128
  117. package/dist/2-core/cycle-v1.d.ts +0 -66
  118. package/dist/2-core/cycle-v1.d.ts.map +0 -1
  119. package/dist/2-core/cycle-v1.js +0 -586
  120. package/dist/2-core/downloadcv-v1.d.ts +0 -58
  121. package/dist/2-core/downloadcv-v1.d.ts.map +0 -1
  122. package/dist/2-core/downloadcv-v1.js +0 -119
  123. package/dist/2-core/ds-article.d.ts +0 -129
  124. package/dist/2-core/ds-article.d.ts.map +0 -1
  125. package/dist/2-core/ds-article.js +0 -361
  126. package/dist/2-core/ds-attributes.d.ts +0 -47
  127. package/dist/2-core/ds-attributes.d.ts.map +0 -1
  128. package/dist/2-core/ds-attributes.js +0 -128
  129. package/dist/2-core/ds-button.figma.d.ts +0 -2
  130. package/dist/2-core/ds-button.figma.d.ts.map +0 -1
  131. package/dist/2-core/ds-button.figma.js +0 -6
  132. package/dist/2-core/ds-downloadcv.d.ts +0 -58
  133. package/dist/2-core/ds-downloadcv.d.ts.map +0 -1
  134. package/dist/2-core/ds-downloadcv.js +0 -119
  135. package/dist/2-core/ds-header.d.ts +0 -28
  136. package/dist/2-core/ds-header.d.ts.map +0 -1
  137. package/dist/2-core/ds-header.js +0 -66
  138. package/dist/2-core/ds-home.d.ts +0 -26
  139. package/dist/2-core/ds-home.d.ts.map +0 -1
  140. package/dist/2-core/ds-home.js +0 -148
  141. package/dist/2-core/ds-link.d.ts +0 -35
  142. package/dist/2-core/ds-link.d.ts.map +0 -1
  143. package/dist/2-core/ds-link.js +0 -85
  144. package/dist/2-core/ds-markdown.d.ts +0 -7
  145. package/dist/2-core/ds-markdown.d.ts.map +0 -1
  146. package/dist/2-core/ds-markdown.js +0 -240
  147. package/dist/2-core/ds-price.d.ts +0 -46
  148. package/dist/2-core/ds-price.d.ts.map +0 -1
  149. package/dist/2-core/ds-price.js +0 -72
  150. package/dist/2-core/ds-squarecircle.d.ts +0 -50
  151. package/dist/2-core/ds-squarecircle.d.ts.map +0 -1
  152. package/dist/2-core/ds-squarecircle.js +0 -133
  153. package/dist/2-core/ds-title.d.ts +0 -50
  154. package/dist/2-core/ds-title.d.ts.map +0 -1
  155. package/dist/2-core/ds-title.js +0 -103
  156. package/dist/2-core/ds-viewtoggle.d.ts +0 -27
  157. package/dist/2-core/ds-viewtoggle.d.ts.map +0 -1
  158. package/dist/2-core/ds-viewtoggle.js +0 -49
  159. package/dist/2-core/ds-year.d.ts.map +0 -1
  160. package/dist/2-core/header-v1.d.ts +0 -28
  161. package/dist/2-core/header-v1.d.ts.map +0 -1
  162. package/dist/2-core/header-v1.js +0 -66
  163. package/dist/2-core/home-v1.d.ts +0 -26
  164. package/dist/2-core/home-v1.d.ts.map +0 -1
  165. package/dist/2-core/home-v1.js +0 -148
  166. package/dist/2-core/icon-v1.d.ts +0 -28
  167. package/dist/2-core/icon-v1.d.ts.map +0 -1
  168. package/dist/2-core/icon-v1.js +0 -297
  169. package/dist/2-core/link-v1.d.ts +0 -35
  170. package/dist/2-core/link-v1.d.ts.map +0 -1
  171. package/dist/2-core/link-v1.js +0 -85
  172. package/dist/2-core/markdown-v1.d.ts +0 -7
  173. package/dist/2-core/markdown-v1.d.ts.map +0 -1
  174. package/dist/2-core/markdown-v1.js +0 -240
  175. package/dist/2-core/price-v1.d.ts +0 -46
  176. package/dist/2-core/price-v1.d.ts.map +0 -1
  177. package/dist/2-core/price-v1.js +0 -72
  178. package/dist/2-core/squarecircle-v1.d.ts +0 -50
  179. package/dist/2-core/squarecircle-v1.d.ts.map +0 -1
  180. package/dist/2-core/squarecircle-v1.js +0 -133
  181. package/dist/2-core/text-v1.d.ts +0 -48
  182. package/dist/2-core/text-v1.d.ts.map +0 -1
  183. package/dist/2-core/text-v1.js +0 -83
  184. package/dist/2-core/title-v1.d.ts +0 -50
  185. package/dist/2-core/title-v1.d.ts.map +0 -1
  186. package/dist/2-core/title-v1.js +0 -103
  187. package/dist/2-core/tooltip-v1.d.ts +0 -39
  188. package/dist/2-core/tooltip-v1.d.ts.map +0 -1
  189. package/dist/2-core/tooltip-v1.js +0 -145
  190. package/dist/2-core/viewtoggle-v1.d.ts +0 -27
  191. package/dist/2-core/viewtoggle-v1.d.ts.map +0 -1
  192. package/dist/2-core/viewtoggle-v1.js +0 -49
  193. package/dist/2-core/year-v1.d.ts +0 -16
  194. package/dist/2-core/year-v1.d.ts.map +0 -1
  195. package/dist/2-core/year-v1.js +0 -21
  196. package/dist/3-unit/ds-doublenav.d.ts.map +0 -1
  197. package/dist/3-unit/ds-panel.d.ts.map +0 -1
  198. package/dist/3-unit/ds-singlenav.d.ts.map +0 -1
  199. package/dist/utils/cdn-loader.d.ts +0 -19
  200. package/dist/utils/cdn-loader.d.ts.map +0 -1
  201. package/dist/utils/cdn-loader.js +0 -142
  202. package/dist/utils/keys.json +0 -41
  203. package/dist/utils/language.d.ts.map +0 -1
  204. package/dist/utils/pricing.d.ts +0 -8
  205. package/dist/utils/pricing.d.ts.map +0 -1
  206. package/dist/utils/pricing.js +0 -14
  207. package/dist/utils/scroll.d.ts +0 -34
  208. package/dist/utils/scroll.d.ts.map +0 -1
  209. package/dist/utils/scroll.js +0 -140
  210. package/dist/utils/settings.d.ts +0 -9
  211. package/dist/utils/settings.d.ts.map +0 -1
  212. package/dist/utils/settings.js +0 -14
  213. package/dist/utils/theme.d.ts.map +0 -1
  214. package/dist/utils/viewMode.d.ts +0 -14
  215. package/dist/utils/viewMode.d.ts.map +0 -1
  216. package/dist/utils/viewMode.js +0 -46
  217. /package/DS1/{utils → 0-face}/theme.ts +0 -0
  218. /package/DS1/{x Icon → x-icon}/1x.svg +0 -0
  219. /package/DS1/{x Icon → x-icon}/1xdots.svg +0 -0
  220. /package/DS1/{x Icon → x-icon}/1xgrid.svg +0 -0
  221. /package/DS1/{x Icon → x-icon}/1xlines.svg +0 -0
  222. /package/DS1/{x Icon → x-icon}/2x.svg +0 -0
  223. /package/DS1/{x Icon → x-icon}/2xdots.svg +0 -0
  224. /package/DS1/{x Icon → x-icon}/2xgrid.svg +0 -0
  225. /package/DS1/{x Icon → x-icon}/2xlines.svg +0 -0
  226. /package/DS1/{x Icon → x-icon}/big.svg +0 -0
  227. /package/DS1/{x Icon → x-icon}/blank.svg +0 -0
  228. /package/DS1/{x Icon → x-icon}/check.svg +0 -0
  229. /package/DS1/{x Icon → x-icon}/close.svg +0 -0
  230. /package/DS1/{x Icon → x-icon}/collapse.svg +0 -0
  231. /package/DS1/{x Icon → x-icon}/color.svg +0 -0
  232. /package/DS1/{x Icon → x-icon}/column.svg +0 -0
  233. /package/DS1/{x Icon → x-icon}/default.svg +0 -0
  234. /package/DS1/{x Icon → x-icon}/delete.svg +0 -0
  235. /package/DS1/{x Icon → x-icon}/do.svg +0 -0
  236. /package/DS1/{x Icon → x-icon}/down.svg +0 -0
  237. /package/DS1/{x Icon → x-icon}/duplicate.svg +0 -0
  238. /package/DS1/{x Icon → x-icon}/email.svg +0 -0
  239. /package/DS1/{x Icon → x-icon}/expand.svg +0 -0
  240. /package/DS1/{x Icon → x-icon}/gallery.svg +0 -0
  241. /package/DS1/{x Icon → x-icon}/group.svg +0 -0
  242. /package/DS1/{x Icon → x-icon}/head.svg +0 -0
  243. /package/DS1/{x Icon → x-icon}/icon.svg +0 -0
  244. /package/DS1/{x Icon → x-icon}/left.svg +0 -0
  245. /package/DS1/{x Icon → x-icon}/lock.svg +0 -0
  246. /package/DS1/{x Icon → x-icon}/mic.svg +0 -0
  247. /package/DS1/{x Icon → x-icon}/minimize.svg +0 -0
  248. /package/DS1/{x Icon → x-icon}/more.svg +0 -0
  249. /package/DS1/{x Icon → x-icon}/note.svg +0 -0
  250. /package/DS1/{x Icon → x-icon}/open.svg +0 -0
  251. /package/DS1/{x Icon → x-icon}/page.svg +0 -0
  252. /package/DS1/{x Icon → x-icon}/plus.svg +0 -0
  253. /package/DS1/{x Icon → x-icon}/rewind.svg +0 -0
  254. /package/DS1/{x Icon → x-icon}/right.svg +0 -0
  255. /package/DS1/{x Icon/row..svg → x-icon/row.svg} +0 -0
  256. /package/DS1/{x Icon → x-icon}/search.svg +0 -0
  257. /package/DS1/{x Icon → x-icon}/see.svg +0 -0
  258. /package/DS1/{x Icon → x-icon}/star.svg +0 -0
  259. /package/DS1/{x Icon → x-icon}/title.svg +0 -0
  260. /package/DS1/{x Icon → x-icon}/undo.svg +0 -0
  261. /package/DS1/{x Icon → x-icon}/ungroup.svg +0 -0
  262. /package/DS1/{x Icon → x-icon}/unhead.svg +0 -0
  263. /package/DS1/{x Icon → x-icon}/unicon.svg +0 -0
  264. /package/DS1/{x Icon → x-icon}/unlock.svg +0 -0
  265. /package/DS1/{x Icon → x-icon}/unmic.svg +0 -0
  266. /package/DS1/{x Icon → x-icon}/unsee.svg +0 -0
  267. /package/DS1/{x Icon → x-icon}/unstar.svg +0 -0
  268. /package/DS1/{x Icon → x-icon}/untitle.svg +0 -0
  269. /package/DS1/{x Icon → x-icon}/up.svg +0 -0
  270. /package/dist/{utils → 0-face}/theme.d.ts +0 -0
  271. /package/dist/{utils → 0-face}/theme.js +0 -0
@@ -3,13 +3,13 @@ import { LitElement, html, css } from "lit";
3
3
  /**
4
4
  * A component for displaying the current year
5
5
  *
6
- * @element ds-year
6
+ * @element ds-date
7
7
  */
8
- export class Year extends LitElement {
8
+ export class DateComponent extends LitElement {
9
9
  static styles = css`
10
10
  :host {
11
11
  display: inline;
12
- font-family: var(--typeface, var(--typeface-regular));
12
+ font-family: var(--typeface-regular, var(--typeface-regular-regular));
13
13
  font-size: inherit;
14
14
  color: inherit;
15
15
  }
@@ -21,11 +21,10 @@ export class Year extends LitElement {
21
21
  }
22
22
  }
23
23
 
24
- customElements.define("ds-year", Year);
24
+ customElements.define("ds-date", DateComponent);
25
25
 
26
26
  declare global {
27
27
  interface HTMLElementTagNameMap {
28
- "ds-year": Year;
28
+ "ds-date": DateComponent;
29
29
  }
30
30
  }
31
-
@@ -26,8 +26,8 @@ export class Icon extends LitElement {
26
26
  display: inline-flex;
27
27
  justify-content: center;
28
28
  align-items: center;
29
- width: calc(16px * var(--scaling-factor));
30
- height: calc(16px * var(--scaling-factor));
29
+ width: calc(16px * var(--sf));
30
+ height: calc(16px * var(--sf));
31
31
  }
32
32
 
33
33
  svg {
@@ -44,8 +44,8 @@ export class Icon extends LitElement {
44
44
  display: flex;
45
45
  justify-content: center;
46
46
  align-items: center;
47
- width: calc(16px * var(--scaling-factor));
48
- height: calc(16px * var(--scaling-factor));
47
+ width: calc(16px * var(--sf));
48
+ height: calc(16px * var(--sf));
49
49
  }
50
50
 
51
51
  /* Notes style color variable for future implementation */
@@ -0,0 +1 @@
1
+ // here should be an input component
@@ -1,5 +1,5 @@
1
1
  import { LitElement, html, css } from "lit";
2
- import { getText } from "../utils/language";
2
+ import { getText, currentLanguage } from "../0-face/i18n";
3
3
 
4
4
  /**
5
5
  * A component for displaying text from translations
@@ -23,6 +23,7 @@ export class Text extends LitElement {
23
23
  declare defaultValue: string;
24
24
  declare fallback: string;
25
25
  declare _text: string;
26
+ declare _currentLanguage: string;
26
27
  private boundHandlers: { languageChanged: EventListener };
27
28
 
28
29
  constructor() {
@@ -31,12 +32,15 @@ export class Text extends LitElement {
31
32
  this.defaultValue = "";
32
33
  this.fallback = "";
33
34
  this._text = "";
35
+ this._currentLanguage = currentLanguage.value;
34
36
 
35
37
  // Create bound event handlers for proper cleanup
36
38
  this.boundHandlers = {
37
39
  languageChanged: (() => {
38
40
  console.log("Language changed event received in ds-text");
41
+ this._currentLanguage = currentLanguage.value;
39
42
  this._loadText();
43
+ this.requestUpdate();
40
44
  }) as EventListener,
41
45
  };
42
46
  }
@@ -44,15 +48,25 @@ export class Text extends LitElement {
44
48
  static styles = css`
45
49
  :host {
46
50
  display: inline;
51
+ font-family: var(--typeface-regular);
52
+ font-size: calc(var(--type-size-default) * var(--sf));
53
+ font-weight: var(--type-weight-default);
54
+ line-height: calc(var(--type-lineheight-default) * var(--sf));
55
+ letter-spacing: calc(var(--type-letterspacing-default) * var(--sf));
56
+ text-align: var(--text-align-default);
57
+ text-transform: var(--text-transform-default);
58
+ text-decoration: var(--text-decoration-default);
47
59
  }
48
60
 
49
- .loading {
50
- opacity: 0.6;
61
+ :host([data-language="ja"]) {
62
+ font-family: var(--typeface-regular-jp);
51
63
  }
52
64
  `;
53
65
 
54
66
  connectedCallback() {
55
67
  super.connectedCallback();
68
+ this._currentLanguage = currentLanguage.value;
69
+ this._updateLanguageAttribute();
56
70
  this._loadText();
57
71
 
58
72
  // Listen for language changes
@@ -91,6 +105,15 @@ export class Text extends LitElement {
91
105
  }
92
106
  }
93
107
 
108
+ _updateLanguageAttribute() {
109
+ const lang = this._currentLanguage || currentLanguage.value;
110
+ if (lang === "ja") {
111
+ this.setAttribute("data-language", "ja");
112
+ } else {
113
+ this.removeAttribute("data-language");
114
+ }
115
+ }
116
+
94
117
  _loadText() {
95
118
  if (!this.key) {
96
119
  this._text = this.defaultValue || this.fallback || "";
@@ -104,6 +127,7 @@ export class Text extends LitElement {
104
127
  console.error("Error loading text for key:", this.key, error);
105
128
  this._text = this.defaultValue || this.fallback || this.key;
106
129
  }
130
+ this._updateLanguageAttribute();
107
131
  this.requestUpdate();
108
132
  }
109
133
 
@@ -1,5 +1,5 @@
1
1
  import { LitElement, html, css } from "lit";
2
- import { translate, getNotionText } from "../utils/language";
2
+ import { translate } from "../0-face/i18n";
3
3
 
4
4
  export class Tooltip extends LitElement {
5
5
  static properties = {
@@ -79,19 +79,21 @@ export class Tooltip extends LitElement {
79
79
  position: absolute;
80
80
  left: 50%;
81
81
  bottom: 100%;
82
- transform: translate(-50%, calc(-2px * var(--scaling-factor)));
82
+ transform: translate(-50%, calc(-2px * var(--sf)));
83
83
  z-index: 1000;
84
84
  pointer-events: none;
85
- height: calc(var(--08) * var(--scaling-factor));
85
+ height: calc(var(--08) * var(--sf));
86
86
  opacity: 0;
87
- transition: opacity 120ms ease, transform 120ms ease;
87
+ transition:
88
+ opacity 120ms ease,
89
+ transform 120ms ease;
88
90
  background-color: light-dark(var(--black), var(--white));
89
91
  color: light-dark(var(--white), var(--black));
90
92
  border-radius: 0;
91
93
  font-size: var(--type-size-default);
92
- padding: 0px calc(1px * var(--scaling-factor));
94
+ padding: 0px calc(1px * var(--sf));
93
95
  font-family: var(
94
- --typeface,
96
+ --typeface-regular,
95
97
  -apple-system,
96
98
  BlinkMacSystemFont,
97
99
  "Segoe UI",
@@ -150,7 +152,7 @@ export class Tooltip extends LitElement {
150
152
  }
151
153
  }
152
154
 
153
- async _loadText(): Promise<void> {
155
+ _loadText(): void {
154
156
  if (!this.key) {
155
157
  this._text = this.defaultValue || "";
156
158
  this.requestUpdate();
@@ -158,12 +160,6 @@ export class Tooltip extends LitElement {
158
160
  }
159
161
 
160
162
  try {
161
- const notionText = await getNotionText(this.key);
162
- if (notionText) {
163
- this._text = notionText;
164
- this.requestUpdate();
165
- return;
166
- }
167
163
  const t = translate(this.key);
168
164
  this._text = t && t !== this.key ? t : this.defaultValue || this.key;
169
165
  } catch (err) {
@@ -192,4 +188,3 @@ declare global {
192
188
  "ds-tooltip": Tooltip;
193
189
  }
194
190
  }
195
-
@@ -1,3 +1,10 @@
1
+ // ds-banner.ts
2
+ // Unit component that
3
+ // can be used to show a list of items consiting of compoentnts from core
4
+
5
+
6
+
7
+
1
8
  import { LitElement, html, css } from "lit";
2
9
 
3
10
  export class List extends LitElement {
@@ -23,18 +23,18 @@ export class Row extends LitElement {
23
23
  :host {
24
24
  display: flex;
25
25
  align-items: end;
26
- width: calc(240px * var(--scaling-factor));
26
+ width: calc(240px * var(--sf));
27
27
  }
28
28
 
29
29
  :host([type="fill"]) {
30
30
  justify-content: space-between;
31
- height: calc(var(--1) * var(--scaling-factor));
31
+ height: calc(var(--1) * var(--sf));
32
32
  }
33
33
 
34
34
  :host([type="centered"]) {
35
35
  justify-content: center;
36
- height: calc(var(--1) * var(--scaling-factor));
37
- gap: calc(var(--025) * var(--scaling-factor));
36
+ height: calc(var(--1) * var(--sf));
37
+ gap: calc(var(--025) * var(--sf));
38
38
  }
39
39
  `;
40
40
 
@@ -50,4 +50,3 @@ declare global {
50
50
  "ds-row": Row;
51
51
  }
52
52
  }
53
-
@@ -59,8 +59,8 @@ export class DsTable extends LitElement {
59
59
  display: flex;
60
60
  align-items: center;
61
61
  justify-content: left;
62
- padding: 0 2px;
63
- font-family: var(--typeface);
62
+ padding: 0 2px;
63
+ font-family: var(--typeface-regular);
64
64
  font-size: var(--type-size-default);
65
65
  font-weight: var(--type-weight-default);
66
66
  line-height: var(--type-lineheight-default);
@@ -74,10 +74,10 @@ export class DsTable extends LitElement {
74
74
  display: flex;
75
75
  align-items: center;
76
76
  justify-content: left;
77
-
77
+
78
78
  outline: 1px solid var(--black);
79
79
 
80
- font-family: var(--typeface);
80
+ font-family: var(--typeface-regular);
81
81
  font-size: var(--type-size-default);
82
82
  font-weight: var(--type-weight-default);
83
83
  line-height: var(--type-lineheight-default);
@@ -86,7 +86,7 @@ export class DsTable extends LitElement {
86
86
  }
87
87
 
88
88
  .status-cell {
89
- background-color: var(--light-green);
89
+ background-color: var(--apple-green);
90
90
  }
91
91
 
92
92
  .product-cell {
@@ -117,7 +117,6 @@ export class DsTable extends LitElement {
117
117
  return html`
118
118
  <div class="table-container">
119
119
  <div class="table-header">
120
-
121
120
  <div class="header-cell product-cell">Product</div>
122
121
  <div class="header-cell users-cell">Users</div>
123
122
  <div class="header-cell retention-cell">Retention</div>
@@ -2,7 +2,6 @@
2
2
  // Simple grid layout component
3
3
 
4
4
  import { LitElement, html, css } from "lit";
5
- import { detectMobileDevice } from "../0-face/2025-04-23-device";
6
5
 
7
6
  declare global {
8
7
  interface CustomElementRegistry {
@@ -14,44 +13,9 @@ declare global {
14
13
  export class Grid extends LitElement {
15
14
  static properties = {
16
15
  align: { type: String },
17
- _isMobile: { type: Boolean, state: true },
18
16
  };
19
17
 
20
18
  align?: string;
21
- _isMobile: boolean = false;
22
-
23
- connectedCallback() {
24
- super.connectedCallback();
25
- this._isMobile = detectMobileDevice();
26
- console.log(`[ds-grid] Mobile device: ${this._isMobile}`);
27
-
28
- // Apply mobile class immediately
29
- if (this._isMobile) {
30
- this.classList.add("mobile");
31
- console.log(`[ds-grid] Mobile class added`);
32
- }
33
-
34
- // Calculate mobile grid dimensions to fit screen
35
- if (this._isMobile && typeof window !== "undefined") {
36
- const screenWidth = window.innerWidth;
37
- const columns = 14;
38
- const gap = 0.5;
39
-
40
- // Calculate column size accounting for gaps between columns
41
- // Total width = (columns * columnSize) + ((columns - 1) * gap)
42
- // Therefore: columnSize = (screenWidth - ((columns - 1) * gap)) / columns
43
- const totalGapWidth = (columns - 1) * gap;
44
- const columnSize = (screenWidth - totalGapWidth) / columns;
45
-
46
- console.log(
47
- `[ds-grid] Mobile grid: ${columns} columns × ${columnSize.toFixed(2)}px + ${totalGapWidth}px gaps = ${screenWidth}px`
48
- );
49
-
50
- // Set custom property for this grid instance
51
- this.style.setProperty("--mobile-column-size", `${columnSize}px`);
52
- this.style.setProperty("--mobile-gap", `${gap}px`);
53
- }
54
- }
55
19
 
56
20
  static styles = css`
57
21
  :host {
@@ -59,17 +23,13 @@ export class Grid extends LitElement {
59
23
  margin-left: 0.5px !important;
60
24
  display: grid;
61
25
  width: 1440px;
62
- height: 100%;
26
+ height: 360px;
63
27
  grid-template-columns: repeat(auto-fill, 19px);
64
28
  grid-template-rows: repeat(auto-fill, 19px);
65
29
  gap: 1px;
66
- row-rule: calc(1px * var(--scaling-factor)) solid
67
- light-dark(rgb(147, 147, 147), rgb(147, 147, 147));
68
- column-rule: calc(1px * var(--scaling-factor)) solid
69
- light-dark(rgb(147, 147, 147), rgb(147, 147, 147));
70
- outline:
71
- 1px solid light-dark(rgb(147, 147, 147)),
72
- rgb(147, 147, 147);
30
+ row-rule: calc(1px * var(--sf)) solid var(--grid-color);
31
+ column-rule: calc(1px * var(--sf)) solid var(--grid-color);
32
+ outline: 1px solid black;
73
33
  position: fixed;
74
34
  top: 0;
75
35
  left: 50%;
@@ -80,21 +40,20 @@ export class Grid extends LitElement {
80
40
 
81
41
  /* DO NOT CHANGE THIS GRID CODE FOR MOBILE. ITS PERFECT FOR MOBILE. */
82
42
  :host(.mobile) {
83
- outline: calc(2px * var(--scaling-factor)) solid rgba(251, 255, 0, 0.9);
84
- width: calc(100% - calc(1px * var(--scaling-factor)));
43
+ width: calc(100% - calc(1px * var(--sf)));
85
44
  max-width: 100vw;
86
45
  margin-left: 0 !important;
87
46
  margin-top: 0 !important;
88
47
  box-sizing: border-box;
89
48
  position: fixed;
90
- top: calc(0.5px * var(--scaling-factor));
49
+ top: calc(0.5px * var(--sf));
91
50
  left: 50%;
92
51
  transform: translateX(-50%);
93
52
  pointer-events: none;
94
53
  z-index: 300;
95
- gap: calc(1px * var(--scaling-factor));
96
- grid-template-columns: repeat(14, calc(19px * var(--scaling-factor)));
97
- grid-template-rows: repeat(auto-fill, calc(19px * var(--scaling-factor)));
54
+ gap: calc(1px * var(--sf));
55
+ grid-template-columns: repeat(14, calc(19px * var(--sf)));
56
+ grid-template-rows: repeat(auto-fill, calc(19px * var(--sf)));
98
57
  }
99
58
 
100
59
  :host([align="left"]) {
@@ -114,15 +73,6 @@ export class Grid extends LitElement {
114
73
  }
115
74
  `;
116
75
 
117
- updated() {
118
- // Apply mobile class if detected as mobile device
119
- if (this._isMobile) {
120
- this.classList.add("mobile");
121
- } else {
122
- this.classList.remove("mobile");
123
- }
124
- }
125
-
126
76
  render() {
127
77
  return html``;
128
78
  }
@@ -17,13 +17,18 @@ export class Layout extends LitElement {
17
17
  debug: { type: Boolean },
18
18
  };
19
19
 
20
- mode?: string;
20
+ mode: string = "portfolio";
21
21
  align?: string;
22
22
  debug?: boolean;
23
23
 
24
24
  static styles = css`
25
25
  :host {
26
26
  display: grid;
27
+ position: relative;
28
+ width: 100%;
29
+ }
30
+
31
+ :host([mode="portfolio"]) {
27
32
  grid-template-columns: 120px 480px 40px;
28
33
  grid-template-rows: 120px 120px 60px 180px 60px 120px 60px 20px 120px 120px;
29
34
  grid-template-areas:
@@ -40,8 +45,6 @@ export class Layout extends LitElement {
40
45
  ". . .";
41
46
  min-height: 600px;
42
47
  background-color: rgba(165, 165, 165, 0.03);
43
- position: relative;
44
- width: 100%;
45
48
  max-width: 640px;
46
49
  margin: 0 auto;
47
50
  }
@@ -75,6 +78,29 @@ export class Layout extends LitElement {
75
78
  justify-self: end;
76
79
  }
77
80
 
81
+ /* App mode - Base */
82
+ :host([mode="app"]) {
83
+ grid-template-columns: 1fr;
84
+ grid-template-rows: calc(var(--1) * var(--sf)) 20px 1fr auto;
85
+ grid-template-areas:
86
+ "banner"
87
+ "main"
88
+ "footer";
89
+ min-height: 100vh;
90
+ background-color: transparent;
91
+ width: 100%;
92
+ margin: 0 auto;
93
+ gap: 0;
94
+ }
95
+
96
+ /* App mode - with scaling factor */
97
+ :host([mode="app"]) {
98
+ max-width: calc(400px * var(--sf, 1));
99
+ padding: calc(60px * var(--sf, 1)) calc(28px * var(--sf, 1))
100
+ calc(9.751px * var(--sf, 1));
101
+ gap: calc(28px * var(--sf, 1));
102
+ }
103
+
78
104
  .debug-overlay {
79
105
  position: absolute;
80
106
  margin-left: -1px;
@@ -87,6 +113,9 @@ export class Layout extends LitElement {
87
113
  display: grid;
88
114
  font-size: 18px;
89
115
  font-weight: bold;
116
+ }
117
+
118
+ :host([mode="portfolio"]) .debug-overlay {
90
119
  grid-template-columns: 120px 480px;
91
120
  grid-template-rows: 120px 120px 60px 180px 60px 120px 60px 20px 120px 120px;
92
121
  grid-template-areas:
@@ -122,7 +151,7 @@ export class Layout extends LitElement {
122
151
  justify-content: center;
123
152
  font-size: 10px;
124
153
  font-weight: var(--type-weight-default);
125
- font-family: var(--typeface);
154
+ font-family: var(--typeface-regular);
126
155
  color: var(--black);
127
156
  border: 1px solid red;
128
157
  opacity: 1;
@@ -158,39 +187,115 @@ export class Layout extends LitElement {
158
187
 
159
188
  .debug-footer {
160
189
  grid-area: footer;
161
- border-color: #ffa500;
190
+ border-color: rgb(24, 147, 73);
191
+ background-color: rgba(127, 123, 11, 0.1);
162
192
  }
163
193
 
164
194
  .debug-content {
165
195
  grid-area: content;
166
196
  border-color: rgba(71, 231, 71, 0.63);
167
197
  }
198
+
199
+ :host([mode="app"]) .debug-overlay {
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 {
214
+ 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
+ }
223
+
224
+ .debug-main {
225
+ grid-area: main;
226
+ border-color: #0000ff;
227
+ }
228
+
229
+ .debug-footer-app {
230
+ grid-area: footer;
231
+ border-color: #ffa500;
232
+ }
168
233
  `;
169
234
 
170
235
  render() {
171
236
  const isDebug = this.debug || this.mode === "debug";
237
+ const isPortfolio = this.mode === "portfolio";
172
238
  const isCompany = this.mode === "company";
239
+ const isApp = this.mode === "app";
173
240
 
174
241
  return html`
175
242
  <slot></slot>
176
243
  ${isDebug
177
244
  ? html`
178
245
  <div class="debug-overlay">
179
- ${isCompany
246
+ ${isApp
180
247
  ? html`
181
- <div class="debug-area debug-header">header</div>
182
- <div class="debug-area debug-content">content</div>
183
- <div class="debug-area debug-footer">footer</div>
248
+ <div class="debug-area debug-banner">
249
+ <ds-text key="banner">banner</ds-text>
250
+ </div>
251
+ <div class="debug-area debug-header">
252
+ <ds-text key="header">header</ds-text>
253
+ </div>
254
+
255
+ <div class="debug-area debug-main">
256
+ <ds-text key="main">main</ds-text>
257
+ </div>
258
+ <div class="debug-area debug-footer-app">
259
+ <ds-text key="footer">footer</ds-text>
260
+ </div>
184
261
  `
185
- : html`
186
- <div class="debug-area debug-square">square</div>
187
- <div class="debug-area debug-title">title</div>
188
- <div class="debug-area debug-header">header</div>
189
- <div class="debug-area debug-projects">projects</div>
190
- <div class="debug-area debug-bio">bio</div>
191
- <div class="debug-area debug-nav">nav</div>
192
- <div class="debug-area debug-footer">footer</div>
193
- `}
262
+ : isCompany
263
+ ? html`
264
+ <div class="debug-area debug-header">
265
+ <ds-text key="header">header</ds-text>
266
+ </div>
267
+ <div class="debug-area debug-content">
268
+ <ds-text key="content">content</ds-text>
269
+ </div>
270
+ <div class="debug-area debug-footer">
271
+ <ds-text key="footer">footer</ds-text>
272
+ </div>
273
+ `
274
+ : isPortfolio
275
+ ? html`
276
+ <div class="debug-area debug-square">
277
+ <ds-text key="square">square</ds-text>
278
+ </div>
279
+ <div class="debug-area debug-title">
280
+ <ds-text key="title">title</ds-text>
281
+ </div>
282
+ <div class="debug-area debug-header">
283
+ <ds-text key="header">header</ds-text>
284
+ </div>
285
+ <div class="debug-area debug-projects">
286
+ <ds-text key="projects">projects</ds-text>
287
+ </div>
288
+ <div class="debug-area debug-bio">
289
+ <ds-text key="bio">bio</ds-text>
290
+ </div>
291
+ <div class="debug-area debug-nav">
292
+ <ds-text key="nav">nav</ds-text>
293
+ </div>
294
+ <div class="debug-area debug-footer">
295
+ <ds-text key="footer">footer</ds-text>
296
+ </div>
297
+ `
298
+ : ""}
194
299
  </div>
195
300
  `
196
301
  : ""}