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
@@ -1,145 +0,0 @@
1
- import { LitElement, html, css } from "lit";
2
- import { translate, getNotionText } from "../utils/language";
3
- export class Tooltip extends LitElement {
4
- constructor() {
5
- super();
6
- this.key = "";
7
- this.defaultValue = "";
8
- this._text = "";
9
- this._visible = false;
10
- this.boundWindowHandlers = {
11
- languageChanged: (() => {
12
- this._loadText();
13
- }),
14
- translationsLoaded: (() => {
15
- this._loadText();
16
- }),
17
- };
18
- this.boundHostHandlers = {
19
- mouseenter: (() => {
20
- this._visible = true;
21
- this.requestUpdate();
22
- }),
23
- mouseleave: (() => {
24
- this._visible = false;
25
- this.requestUpdate();
26
- }),
27
- focusin: (() => {
28
- this._visible = true;
29
- this.requestUpdate();
30
- }),
31
- focusout: (() => {
32
- this._visible = false;
33
- this.requestUpdate();
34
- }),
35
- };
36
- }
37
- connectedCallback() {
38
- super.connectedCallback();
39
- this._loadText();
40
- window.addEventListener("language-changed", this.boundWindowHandlers.languageChanged);
41
- window.addEventListener("translations-loaded", this.boundWindowHandlers.translationsLoaded);
42
- this.addEventListener("mouseenter", this.boundHostHandlers.mouseenter);
43
- this.addEventListener("mouseleave", this.boundHostHandlers.mouseleave);
44
- this.addEventListener("focusin", this.boundHostHandlers.focusin);
45
- this.addEventListener("focusout", this.boundHostHandlers.focusout);
46
- }
47
- disconnectedCallback() {
48
- super.disconnectedCallback();
49
- window.removeEventListener("language-changed", this.boundWindowHandlers.languageChanged);
50
- window.removeEventListener("translations-loaded", this.boundWindowHandlers.translationsLoaded);
51
- this.removeEventListener("mouseenter", this.boundHostHandlers.mouseenter);
52
- this.removeEventListener("mouseleave", this.boundHostHandlers.mouseleave);
53
- this.removeEventListener("focusin", this.boundHostHandlers.focusin);
54
- this.removeEventListener("focusout", this.boundHostHandlers.focusout);
55
- }
56
- updated(changed) {
57
- if (changed.has("key") || changed.has("defaultValue")) {
58
- this._loadText();
59
- }
60
- }
61
- async _loadText() {
62
- if (!this.key) {
63
- this._text = this.defaultValue || "";
64
- this.requestUpdate();
65
- return;
66
- }
67
- try {
68
- const notionText = await getNotionText(this.key);
69
- if (notionText) {
70
- this._text = notionText;
71
- this.requestUpdate();
72
- return;
73
- }
74
- const t = translate(this.key);
75
- this._text = t && t !== this.key ? t : this.defaultValue || this.key;
76
- }
77
- catch (err) {
78
- console.error("tooltip-v1: error loading text for key", this.key, err);
79
- this._text = this.defaultValue || this.key;
80
- }
81
- this.requestUpdate();
82
- }
83
- render() {
84
- const bubbleClasses = ["bubble", this._visible ? "visible" : ""].join(" ");
85
- return html `
86
- <span class="slot-wrapper"><slot></slot></span>
87
- ${this._text
88
- ? html `<div class="${bubbleClasses}">${this._text}</div>`
89
- : null}
90
- `;
91
- }
92
- }
93
- Tooltip.properties = {
94
- key: { type: String, reflect: true },
95
- defaultValue: { type: String, reflect: true, attribute: "default-value" },
96
- _text: { state: true },
97
- _visible: { state: true },
98
- };
99
- Tooltip.styles = css `
100
- :host {
101
- position: relative;
102
- display: inline-block;
103
- }
104
-
105
- .slot-wrapper {
106
- display: inline-flex;
107
- align-items: center;
108
- }
109
-
110
- .bubble {
111
- display: flex;
112
- align-items: center;
113
- justify-content: center;
114
- position: absolute;
115
- left: 50%;
116
- bottom: 100%;
117
- transform: translate(-50%, calc(-2px * var(--scaling-factor)));
118
- z-index: 1000;
119
- pointer-events: none;
120
- height: calc(var(--08) * var(--scaling-factor));
121
- opacity: 0;
122
- transition: opacity 120ms ease, transform 120ms ease;
123
- background-color: light-dark(var(--black), var(--white));
124
- color: light-dark(var(--white), var(--black));
125
- border-radius: 0;
126
- font-size: var(--type-size-default);
127
- padding: 0px calc(1px * var(--scaling-factor));
128
- font-family: var(
129
- --typeface,
130
- -apple-system,
131
- BlinkMacSystemFont,
132
- "Segoe UI",
133
- Roboto,
134
- sans-serif
135
- );
136
- font-weight: 500;
137
- white-space: nowrap;
138
- min-width: max-content;
139
- }
140
-
141
- .bubble.visible {
142
- opacity: 1;
143
- }
144
- `;
145
- customElements.define("tooltip-v1", Tooltip);
@@ -1,27 +0,0 @@
1
- import { LitElement } from "lit";
2
- /**
3
- * A component for toggling between text and image view modes
4
- *
5
- * @element viewtoggle-v1
6
- */
7
- export declare class ViewToggle extends LitElement {
8
- static properties: {
9
- _mode: {
10
- type: StringConstructor;
11
- state: boolean;
12
- };
13
- };
14
- _mode: "text" | "image";
15
- private boundHandlers;
16
- constructor();
17
- connectedCallback(): void;
18
- disconnectedCallback(): void;
19
- private _toggle;
20
- render(): import("lit-html").TemplateResult<1>;
21
- }
22
- declare global {
23
- interface HTMLElementTagNameMap {
24
- "viewtoggle-v1": ViewToggle;
25
- }
26
- }
27
- //# sourceMappingURL=viewtoggle-v1.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"viewtoggle-v1.d.ts","sourceRoot":"","sources":["../../DS1/2-core/viewtoggle-v1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAIvC;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,UAAU;IACxC,MAAM,CAAC,UAAU;;;;;MAEf;IAEM,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAEhC,OAAO,CAAC,aAAa,CAGnB;;IAkBF,iBAAiB;IAYjB,oBAAoB;IAYpB,OAAO,CAAC,OAAO,CAGb;IAEF,MAAM;CAOP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,eAAe,EAAE,UAAU,CAAC;KAC7B;CACF"}
@@ -1,49 +0,0 @@
1
- import { LitElement, html } from "lit";
2
- import { getText } from "../utils/language";
3
- import { getViewMode, setViewMode } from "../utils/viewMode";
4
- /**
5
- * A component for toggling between text and image view modes
6
- *
7
- * @element viewtoggle-v1
8
- */
9
- export class ViewToggle extends LitElement {
10
- constructor() {
11
- super();
12
- this._toggle = () => {
13
- const next = this._mode === "image" ? "text" : "image";
14
- setViewMode(next);
15
- };
16
- this._mode = getViewMode();
17
- this.boundHandlers = {
18
- viewModeChanged: ((e) => {
19
- const mode = e.detail === "image" ? "image" : "text";
20
- if (this._mode !== mode) {
21
- this._mode = mode;
22
- }
23
- }),
24
- languageChanged: (() => {
25
- this.requestUpdate();
26
- }),
27
- };
28
- }
29
- connectedCallback() {
30
- super.connectedCallback();
31
- window.addEventListener("view-mode-changed", this.boundHandlers.viewModeChanged);
32
- window.addEventListener("language-changed", this.boundHandlers.languageChanged);
33
- }
34
- disconnectedCallback() {
35
- super.disconnectedCallback();
36
- window.removeEventListener("view-mode-changed", this.boundHandlers.viewModeChanged);
37
- window.removeEventListener("language-changed", this.boundHandlers.languageChanged);
38
- }
39
- render() {
40
- const label = this._mode === "image" ? getText("hideImage") : getText("viewImage");
41
- return html `
42
- <ds-button variant="primary" @click=${this._toggle}>${label}</ds-button>
43
- `;
44
- }
45
- }
46
- ViewToggle.properties = {
47
- _mode: { type: String, state: true },
48
- };
49
- customElements.define("viewtoggle-v1", ViewToggle);
@@ -1,16 +0,0 @@
1
- import { LitElement } from "lit";
2
- /**
3
- * A component for displaying the current year
4
- *
5
- * @element year-v1
6
- */
7
- export declare class Year extends LitElement {
8
- static styles: import("lit").CSSResult;
9
- render(): import("lit-html").TemplateResult<1>;
10
- }
11
- declare global {
12
- interface HTMLElementTagNameMap {
13
- "year-v1": Year;
14
- }
15
- }
16
- //# sourceMappingURL=year-v1.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"year-v1.d.ts","sourceRoot":"","sources":["../../DS1/2-core/year-v1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,IAAK,SAAQ,UAAU;IAClC,MAAM,CAAC,MAAM,0BAOX;IAEF,MAAM;CAIP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,IAAI,CAAC;KACjB;CACF"}
@@ -1,21 +0,0 @@
1
- import { LitElement, html, css } from "lit";
2
- /**
3
- * A component for displaying the current year
4
- *
5
- * @element year-v1
6
- */
7
- export class Year extends LitElement {
8
- render() {
9
- const year = new Date().getFullYear();
10
- return html `<span>${year}</span>`;
11
- }
12
- }
13
- Year.styles = css `
14
- :host {
15
- display: inline;
16
- font-family: var(--typeface, var(--typeface-regular));
17
- font-size: inherit;
18
- color: inherit;
19
- }
20
- `;
21
- customElements.define("year-v1", Year);
@@ -1 +0,0 @@
1
- {"version":3,"file":"ds-doublenav.d.ts","sourceRoot":"","sources":["../../DS1/3-unit/ds-doublenav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C;;;;;;;;;GASG;AACH,qBAAa,SAAU,SAAQ,UAAU;IACvC,MAAM,KAAK,UAAU;;;;;;;;;;;;;;;;;;;;;;;MAQpB;IAEO,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;;IAWzB,MAAM,CAAC,MAAM,0BAoCX;IAEF,MAAM;CAoBP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,SAAS,CAAC;KAC3B;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ds-panel.d.ts","sourceRoot":"","sources":["../../DS1/3-unit/ds-panel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,qBAAa,KAAM,SAAQ,UAAU;IACnC,MAAM,CAAC,MAAM,0BAQX;IAEF,MAAM;CAGP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,KAAK,CAAC;KACnB;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ds-singlenav.d.ts","sourceRoot":"","sources":["../../DS1/3-unit/ds-singlenav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C;;;;;;GAMG;AACH,qBAAa,SAAU,SAAQ,UAAU;IACvC,MAAM,KAAK,UAAU;;;;;;;;;MAKpB;IAEO,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;;IAOpB,MAAM,CAAC,MAAM,0BAgBX;IAEF,MAAM;IAYN,OAAO,CAAC,YAAY;CAcrB;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,SAAS,CAAC;KAC3B;CACF"}
@@ -1,19 +0,0 @@
1
- /**
2
- * CDN Loader Utility
3
- * Automatically detects and loads translation JSON files from the same directory as the HTML file
4
- * for CDN users who want to use external translations
5
- */
6
- type TranslationData = Record<string, string>;
7
- type TranslationMap = Record<string, TranslationData>;
8
- declare global {
9
- interface Window {
10
- DS_ONE_TRANSLATIONS?: TranslationMap;
11
- DS_ONE_TRANSLATIONS_FILE?: string;
12
- }
13
- }
14
- /**
15
- * Attempts to load translations from a JSON file in the same directory
16
- */
17
- export declare function loadExternalTranslations(): Promise<boolean>;
18
- export {};
19
- //# sourceMappingURL=cdn-loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cdn-loader.d.ts","sourceRoot":"","sources":["../../DS1/utils/cdn-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,KAAK,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9C,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAEtD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,mBAAmB,CAAC,EAAE,cAAc,CAAC;QACrC,wBAAwB,CAAC,EAAE,MAAM,CAAC;KACnC;CACF;AAmID;;GAEG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CA8CjE"}
@@ -1,142 +0,0 @@
1
- /**
2
- * CDN Loader Utility
3
- * Automatically detects and loads translation JSON files from the same directory as the HTML file
4
- * for CDN users who want to use external translations
5
- */
6
- // Track if we've already attempted to load
7
- let loadAttempted = false;
8
- const DEFAULT_TRANSLATION_FILE = "./translations.json";
9
- function normalizeCandidate(path) {
10
- if (!path) {
11
- return null;
12
- }
13
- const trimmed = path.trim();
14
- if (!trimmed) {
15
- return null;
16
- }
17
- if (trimmed.startsWith("./") ||
18
- trimmed.startsWith("../") ||
19
- trimmed.startsWith("/") ||
20
- /^https?:\/\//i.test(trimmed)) {
21
- return trimmed;
22
- }
23
- return `./${trimmed}`;
24
- }
25
- function findAttributeCandidate() {
26
- if (typeof document === "undefined") {
27
- return null;
28
- }
29
- const scriptWithAttribute = document.querySelector("script[data-ds-one-translations]");
30
- const scriptCandidate = scriptWithAttribute?.getAttribute("data-ds-one-translations");
31
- if (scriptCandidate) {
32
- return scriptCandidate;
33
- }
34
- const metaCandidate = document
35
- .querySelector('meta[name="ds-one:translations"]')
36
- ?.getAttribute("content");
37
- if (metaCandidate) {
38
- return metaCandidate;
39
- }
40
- const linkCandidate = document
41
- .querySelector('link[rel="ds-one-translations"]')
42
- ?.getAttribute("href");
43
- if (linkCandidate) {
44
- return linkCandidate;
45
- }
46
- return null;
47
- }
48
- function resolveTranslationSources() {
49
- const candidates = [];
50
- const windowCandidate = typeof window !== "undefined" ? window.DS_ONE_TRANSLATIONS_FILE : null;
51
- const attributeCandidate = findAttributeCandidate();
52
- // Only use explicitly configured paths, or the single default
53
- const windowNormalized = normalizeCandidate(windowCandidate ?? "");
54
- if (windowNormalized) {
55
- candidates.push(windowNormalized);
56
- }
57
- const attrNormalized = normalizeCandidate(attributeCandidate ?? "");
58
- if (attrNormalized && !candidates.includes(attrNormalized)) {
59
- candidates.push(attrNormalized);
60
- }
61
- // Only try default if no explicit path was configured
62
- if (candidates.length === 0) {
63
- candidates.push(DEFAULT_TRANSLATION_FILE);
64
- }
65
- return candidates;
66
- }
67
- function validateTranslationMap(candidate) {
68
- if (!candidate || typeof candidate !== "object") {
69
- return false;
70
- }
71
- return Object.values(candidate).every((entry) => entry && typeof entry === "object");
72
- }
73
- async function fetchTranslationFile(source) {
74
- try {
75
- const response = await fetch(source);
76
- if (!response.ok) {
77
- // 404 is expected if no translations file exists - don't log as error
78
- return null;
79
- }
80
- const translations = await response.json();
81
- if (!validateTranslationMap(translations)) {
82
- console.warn(`[DS one] Invalid translation format in ${source}. Expected object with language codes as keys.`);
83
- return null;
84
- }
85
- const languages = Object.keys(translations);
86
- if (languages.length === 0) {
87
- console.warn(`[DS one] No languages found in ${source}`);
88
- return null;
89
- }
90
- return translations;
91
- }
92
- catch {
93
- // Silently fail - file likely doesn't exist or isn't valid JSON
94
- return null;
95
- }
96
- }
97
- /**
98
- * Attempts to load translations from a JSON file in the same directory
99
- */
100
- export async function loadExternalTranslations() {
101
- // Only attempt once
102
- if (loadAttempted) {
103
- return false;
104
- }
105
- loadAttempted = true;
106
- if (typeof window === "undefined") {
107
- return false;
108
- }
109
- // Check if translations are already loaded (e.g., by the application)
110
- if (window.DS_ONE_TRANSLATIONS &&
111
- Object.keys(window.DS_ONE_TRANSLATIONS).length > 0) {
112
- console.log(`[DS one] Translations already loaded (${Object.keys(window.DS_ONE_TRANSLATIONS).length} languages), skipping auto-load`);
113
- return true;
114
- }
115
- const sources = resolveTranslationSources();
116
- for (const source of sources) {
117
- const translations = await fetchTranslationFile(source);
118
- if (!translations) {
119
- continue;
120
- }
121
- window.DS_ONE_TRANSLATIONS = translations;
122
- const languages = Object.keys(translations);
123
- console.log(`[DS one] External translations loaded from ${source}: ${languages.length} language(s) – ${languages.join(", ")}`);
124
- window.dispatchEvent(new CustomEvent("translations-ready"));
125
- return true;
126
- }
127
- console.info(`[DS one] No external translations found at ${sources[0] ?? DEFAULT_TRANSLATION_FILE}. Using bundled translations.`);
128
- return false;
129
- }
130
- // Auto-load translations when this module is imported (for CDN bundle)
131
- if (typeof window !== "undefined") {
132
- // Wait a bit to ensure the DOM is ready
133
- if (document.readyState === "loading") {
134
- document.addEventListener("DOMContentLoaded", () => {
135
- loadExternalTranslations();
136
- });
137
- }
138
- else {
139
- // DOM is already ready
140
- loadExternalTranslations();
141
- }
142
- }
@@ -1,41 +0,0 @@
1
- {
2
- "en": {
3
- "language": "Language",
4
- "theme": "Theme",
5
- "home": "Home",
6
- "about": "About",
7
- "contact": "Contact",
8
- "welcome": "Welcome",
9
- "description": "Description",
10
- "learnMore": "Learn More",
11
- "copyright": "© 2025",
12
- "siteTitle": "Site Title",
13
- "downloadCV": "Download CV"
14
- },
15
- "da": {
16
- "language": "Sprog",
17
- "theme": "Tema",
18
- "home": "Hjem",
19
- "about": "Om",
20
- "contact": "Kontakt",
21
- "welcome": "Velkommen",
22
- "description": "Beskrivelse",
23
- "learnMore": "Lær Mere",
24
- "copyright": "© 2025",
25
- "siteTitle": "Site Titel",
26
- "downloadCV": "Download CV"
27
- },
28
- "ja": {
29
- "language": "言語",
30
- "theme": "テーマ",
31
- "home": "ホーム",
32
- "about": "について",
33
- "contact": "お問い合わせ",
34
- "welcome": "ようこそ",
35
- "description": "説明",
36
- "learnMore": "詳細を見る",
37
- "copyright": "© 2025",
38
- "siteTitle": "サイトタイトル",
39
- "downloadCV": "CVをダウンロード"
40
- }
41
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../DS1/utils/language.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAGlC,KAAK,eAAe,GAAG;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB,CAAC;AAwDF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACtD,wBAAwB,CAAC,EAAE,MAAM,CAAC;KACnC;CACF;AA6GD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,MAAM,CA6CR;AAwDD,wBAAgB,kBAAkB,IAAI,YAAY,CAwBjD;AAWD,eAAO,MAAM,eAAe;;gBAGL,YAAY;CAWlC,CAAC;AA4CF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAe7C;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,YAAoC,GAC7C,OAAO,CAmBT;AAGD,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3C;AAGD,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,YAAoC,GAC7C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoBxB;AAGD,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,YAAoC,GAC7C,IAAI,CAKN;AAUD,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAS/D;AAGD,wBAAgB,yBAAyB,IAAI,YAAY,EAAE,CAO1D;AAGD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,eAAe,GAC5B,IAAI,CAON;AAGD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAgBxD"}
@@ -1,8 +0,0 @@
1
- import type { LanguageCode } from "./language";
2
- type PriceLabelOptions = {
3
- language: LanguageCode;
4
- country?: string;
5
- };
6
- export declare function getPriceLabel({ language, country }: PriceLabelOptions): string;
7
- export {};
8
- //# sourceMappingURL=pricing.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../DS1/utils/pricing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AASF,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,iBAAiB,GAAG,MAAM,CAS9E"}
@@ -1,14 +0,0 @@
1
- const defaultPriceByLanguage = {
2
- en: "$42", // life, the universe and everything
3
- de: "42 €",
4
- fr: "42 €",
5
- es: "42 €",
6
- };
7
- export function getPriceLabel({ language, country }) {
8
- const normalized = language.toLowerCase();
9
- const base = defaultPriceByLanguage[normalized] ?? defaultPriceByLanguage.en;
10
- if (!country) {
11
- return base;
12
- }
13
- return `${base} (${country.toUpperCase()})`;
14
- }
@@ -1,34 +0,0 @@
1
- export type ScrollPosition = {
2
- x: number;
3
- y: number;
4
- };
5
- /**
6
- * Save the current scroll position
7
- */
8
- export declare function saveScrollPosition(): void;
9
- /**
10
- * Get the saved scroll position
11
- */
12
- export declare function getScrollPosition(): ScrollPosition | null;
13
- /**
14
- * Restore the saved scroll position
15
- */
16
- export declare function restoreScrollPosition(options?: {
17
- smooth?: boolean;
18
- clear?: boolean;
19
- }): boolean;
20
- /**
21
- * Clear the saved scroll position
22
- */
23
- export declare function clearScrollPosition(): void;
24
- /**
25
- * Initialize scroll position management
26
- * Call this once to set up automatic save/restore behavior
27
- */
28
- export declare function initScrollManagement(options?: {
29
- autoSave?: boolean;
30
- autoRestore?: boolean;
31
- smooth?: boolean;
32
- clearOnRestore?: boolean;
33
- }): void;
34
- //# sourceMappingURL=scroll.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../DS1/utils/scroll.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAIF;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAezC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CA6BzD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAClD,OAAO,CAsCT;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAU1C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CACrB,GACL,IAAI,CAsCN"}