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.
- package/DS1/0-face/{2025-04-23-device.ts → device.ts} +10 -6
- package/DS1/{utils/language.ts → 0-face/i18n.ts} +236 -92
- package/DS1/0-face/preferences.ts +23 -0
- package/DS1/0-face/pricing.ts +57 -0
- package/DS1/1-root/fonts/Iosevka-Regular.woff2 +0 -0
- package/DS1/1-root/one.css +76 -107
- package/DS1/2-core/ds-banner.ts +3 -0
- package/DS1/2-core/ds-button.ts +13 -16
- package/DS1/2-core/ds-cycle.ts +84 -39
- package/DS1/2-core/{ds-year.ts → ds-date.ts} +5 -6
- package/DS1/2-core/ds-icon.ts +4 -4
- package/DS1/2-core/ds-input.ts +1 -0
- package/DS1/2-core/ds-text.ts +27 -3
- package/DS1/2-core/ds-tooltip.ts +9 -14
- package/DS1/3-unit/ds-list.ts +7 -0
- package/DS1/3-unit/ds-row.ts +4 -5
- package/DS1/3-unit/ds-table.ts +5 -6
- package/DS1/4-page/ds-grid.ts +9 -59
- package/DS1/4-page/ds-layout.ts +123 -18
- package/DS1/index.ts +39 -37
- package/LICENSE +1 -1
- package/README.md +43 -133
- package/dist/0-face/{2025-04-23-device.d.ts → device.d.ts} +1 -1
- package/dist/0-face/device.d.ts.map +1 -0
- package/dist/0-face/{2025-04-23-device.js → device.js} +7 -3
- package/dist/{utils/language.d.ts → 0-face/i18n.d.ts} +1 -3
- package/dist/0-face/i18n.d.ts.map +1 -0
- package/dist/{utils/language.js → 0-face/i18n.js} +178 -76
- package/dist/0-face/preferences.d.ts +9 -0
- package/dist/0-face/preferences.d.ts.map +1 -0
- package/dist/0-face/preferences.js +14 -0
- package/dist/0-face/pricing.d.ts +15 -0
- package/dist/0-face/pricing.d.ts.map +1 -0
- package/dist/0-face/pricing.js +46 -0
- package/dist/0-face/theme.d.ts.map +1 -0
- package/dist/2-core/ds-banner.d.ts +1 -0
- package/dist/2-core/ds-banner.d.ts.map +1 -0
- package/dist/2-core/ds-banner.js +2 -0
- package/dist/2-core/ds-button.d.ts +2 -7
- package/dist/2-core/ds-button.d.ts.map +1 -1
- package/dist/2-core/ds-button.js +12 -14
- package/dist/2-core/ds-cycle.d.ts +2 -0
- package/dist/2-core/ds-cycle.d.ts.map +1 -1
- package/dist/2-core/ds-cycle.js +80 -34
- package/dist/2-core/{ds-year.d.ts → ds-date.d.ts} +4 -4
- package/dist/2-core/ds-date.d.ts.map +1 -0
- package/dist/2-core/{ds-year.js → ds-date.js} +5 -5
- package/dist/2-core/ds-icon.js +4 -4
- package/dist/2-core/ds-input.d.ts +1 -0
- package/dist/2-core/ds-input.d.ts.map +1 -0
- package/dist/2-core/ds-input.js +1 -0
- package/dist/2-core/ds-text.d.ts +2 -0
- package/dist/2-core/ds-text.d.ts.map +1 -1
- package/dist/2-core/ds-text.js +26 -3
- package/dist/2-core/ds-tooltip.d.ts +1 -1
- package/dist/2-core/ds-tooltip.d.ts.map +1 -1
- package/dist/2-core/ds-tooltip.js +9 -13
- package/dist/3-unit/ds-list.d.ts.map +1 -1
- package/dist/3-unit/ds-list.js +3 -0
- package/dist/3-unit/{ds-doublenav.d.ts → ds-portfolio-doublenav.d.ts} +4 -4
- package/dist/3-unit/ds-portfolio-doublenav.d.ts.map +1 -0
- package/dist/3-unit/{ds-doublenav.js → ds-portfolio-doublenav.js} +4 -4
- package/dist/3-unit/{ds-panel.d.ts → ds-portfolio-panel.d.ts} +3 -3
- package/dist/3-unit/ds-portfolio-panel.d.ts.map +1 -0
- package/dist/3-unit/{ds-panel.js → ds-portfolio-panel.js} +3 -3
- package/dist/3-unit/{ds-singlenav.d.ts → ds-portfolio-singlenav.d.ts} +4 -4
- package/dist/3-unit/ds-portfolio-singlenav.d.ts.map +1 -0
- package/dist/3-unit/{ds-singlenav.js → ds-portfolio-singlenav.js} +7 -7
- package/dist/3-unit/ds-row.js +4 -4
- package/dist/3-unit/ds-table.d.ts.map +1 -1
- package/dist/3-unit/ds-table.js +5 -6
- package/dist/4-page/ds-grid.d.ts +0 -7
- package/dist/4-page/ds-grid.d.ts.map +1 -1
- package/dist/4-page/ds-grid.js +9 -54
- package/dist/4-page/ds-layout.d.ts +1 -1
- package/dist/4-page/ds-layout.d.ts.map +1 -1
- package/dist/4-page/ds-layout.js +126 -17
- package/dist/ds-one.bundle.js +2515 -4132
- package/dist/ds-one.bundle.js.map +4 -4
- package/dist/ds-one.bundle.min.js +245 -787
- package/dist/ds-one.bundle.min.js.map +4 -4
- package/dist/index.d.ts +16 -26
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -34
- package/package.json +8 -9
- package/DS1/0-face/2025-04-23-language.ts +0 -4
- package/DS1/2-core/ds-article.ts +0 -454
- package/DS1/2-core/ds-attributes.ts +0 -155
- package/DS1/2-core/ds-downloadcv.ts +0 -146
- package/DS1/2-core/ds-header.ts +0 -82
- package/DS1/2-core/ds-home.ts +0 -168
- package/DS1/2-core/ds-link.ts +0 -121
- package/DS1/2-core/ds-markdown.ts +0 -252
- package/DS1/2-core/ds-price.ts +0 -108
- package/DS1/2-core/ds-squarecircle.ts +0 -155
- package/DS1/2-core/ds-title.ts +0 -139
- package/DS1/2-core/ds-viewtoggle.ts +0 -83
- package/DS1/3-unit/ds-doublenav.ts +0 -106
- package/DS1/3-unit/ds-panel.ts +0 -27
- package/DS1/3-unit/ds-singlenav.ts +0 -79
- package/DS1/utils/cdn-loader.ts +0 -208
- package/DS1/utils/keys.json +0 -41
- package/DS1/utils/pricing.ts +0 -24
- package/DS1/utils/scroll.ts +0 -184
- package/DS1/utils/settings.ts +0 -23
- package/DS1/utils/viewMode.ts +0 -55
- package/dist/0-face/2025-04-23-device.d.ts.map +0 -1
- package/dist/0-face/2025-04-23-language.d.ts +0 -1
- package/dist/0-face/2025-04-23-language.d.ts.map +0 -1
- package/dist/0-face/2025-04-23-language.js +0 -3
- package/dist/2-core/article-v1.d.ts +0 -129
- package/dist/2-core/article-v1.d.ts.map +0 -1
- package/dist/2-core/article-v1.js +0 -361
- package/dist/2-core/attributes-v1.d.ts +0 -47
- package/dist/2-core/attributes-v1.d.ts.map +0 -1
- package/dist/2-core/attributes-v1.js +0 -128
- package/dist/2-core/cycle-v1.d.ts +0 -66
- package/dist/2-core/cycle-v1.d.ts.map +0 -1
- package/dist/2-core/cycle-v1.js +0 -586
- package/dist/2-core/downloadcv-v1.d.ts +0 -58
- package/dist/2-core/downloadcv-v1.d.ts.map +0 -1
- package/dist/2-core/downloadcv-v1.js +0 -119
- package/dist/2-core/ds-article.d.ts +0 -129
- package/dist/2-core/ds-article.d.ts.map +0 -1
- package/dist/2-core/ds-article.js +0 -361
- package/dist/2-core/ds-attributes.d.ts +0 -47
- package/dist/2-core/ds-attributes.d.ts.map +0 -1
- package/dist/2-core/ds-attributes.js +0 -128
- package/dist/2-core/ds-button.figma.d.ts +0 -2
- package/dist/2-core/ds-button.figma.d.ts.map +0 -1
- package/dist/2-core/ds-button.figma.js +0 -6
- package/dist/2-core/ds-downloadcv.d.ts +0 -58
- package/dist/2-core/ds-downloadcv.d.ts.map +0 -1
- package/dist/2-core/ds-downloadcv.js +0 -119
- package/dist/2-core/ds-header.d.ts +0 -28
- package/dist/2-core/ds-header.d.ts.map +0 -1
- package/dist/2-core/ds-header.js +0 -66
- package/dist/2-core/ds-home.d.ts +0 -26
- package/dist/2-core/ds-home.d.ts.map +0 -1
- package/dist/2-core/ds-home.js +0 -148
- package/dist/2-core/ds-link.d.ts +0 -35
- package/dist/2-core/ds-link.d.ts.map +0 -1
- package/dist/2-core/ds-link.js +0 -85
- package/dist/2-core/ds-markdown.d.ts +0 -7
- package/dist/2-core/ds-markdown.d.ts.map +0 -1
- package/dist/2-core/ds-markdown.js +0 -240
- package/dist/2-core/ds-price.d.ts +0 -46
- package/dist/2-core/ds-price.d.ts.map +0 -1
- package/dist/2-core/ds-price.js +0 -72
- package/dist/2-core/ds-squarecircle.d.ts +0 -50
- package/dist/2-core/ds-squarecircle.d.ts.map +0 -1
- package/dist/2-core/ds-squarecircle.js +0 -133
- package/dist/2-core/ds-title.d.ts +0 -50
- package/dist/2-core/ds-title.d.ts.map +0 -1
- package/dist/2-core/ds-title.js +0 -103
- package/dist/2-core/ds-viewtoggle.d.ts +0 -27
- package/dist/2-core/ds-viewtoggle.d.ts.map +0 -1
- package/dist/2-core/ds-viewtoggle.js +0 -49
- package/dist/2-core/ds-year.d.ts.map +0 -1
- package/dist/2-core/header-v1.d.ts +0 -28
- package/dist/2-core/header-v1.d.ts.map +0 -1
- package/dist/2-core/header-v1.js +0 -66
- package/dist/2-core/home-v1.d.ts +0 -26
- package/dist/2-core/home-v1.d.ts.map +0 -1
- package/dist/2-core/home-v1.js +0 -148
- package/dist/2-core/icon-v1.d.ts +0 -28
- package/dist/2-core/icon-v1.d.ts.map +0 -1
- package/dist/2-core/icon-v1.js +0 -297
- package/dist/2-core/link-v1.d.ts +0 -35
- package/dist/2-core/link-v1.d.ts.map +0 -1
- package/dist/2-core/link-v1.js +0 -85
- package/dist/2-core/markdown-v1.d.ts +0 -7
- package/dist/2-core/markdown-v1.d.ts.map +0 -1
- package/dist/2-core/markdown-v1.js +0 -240
- package/dist/2-core/price-v1.d.ts +0 -46
- package/dist/2-core/price-v1.d.ts.map +0 -1
- package/dist/2-core/price-v1.js +0 -72
- package/dist/2-core/squarecircle-v1.d.ts +0 -50
- package/dist/2-core/squarecircle-v1.d.ts.map +0 -1
- package/dist/2-core/squarecircle-v1.js +0 -133
- package/dist/2-core/text-v1.d.ts +0 -48
- package/dist/2-core/text-v1.d.ts.map +0 -1
- package/dist/2-core/text-v1.js +0 -83
- package/dist/2-core/title-v1.d.ts +0 -50
- package/dist/2-core/title-v1.d.ts.map +0 -1
- package/dist/2-core/title-v1.js +0 -103
- package/dist/2-core/tooltip-v1.d.ts +0 -39
- package/dist/2-core/tooltip-v1.d.ts.map +0 -1
- package/dist/2-core/tooltip-v1.js +0 -145
- package/dist/2-core/viewtoggle-v1.d.ts +0 -27
- package/dist/2-core/viewtoggle-v1.d.ts.map +0 -1
- package/dist/2-core/viewtoggle-v1.js +0 -49
- package/dist/2-core/year-v1.d.ts +0 -16
- package/dist/2-core/year-v1.d.ts.map +0 -1
- package/dist/2-core/year-v1.js +0 -21
- package/dist/3-unit/ds-doublenav.d.ts.map +0 -1
- package/dist/3-unit/ds-panel.d.ts.map +0 -1
- package/dist/3-unit/ds-singlenav.d.ts.map +0 -1
- package/dist/utils/cdn-loader.d.ts +0 -19
- package/dist/utils/cdn-loader.d.ts.map +0 -1
- package/dist/utils/cdn-loader.js +0 -142
- package/dist/utils/keys.json +0 -41
- package/dist/utils/language.d.ts.map +0 -1
- package/dist/utils/pricing.d.ts +0 -8
- package/dist/utils/pricing.d.ts.map +0 -1
- package/dist/utils/pricing.js +0 -14
- package/dist/utils/scroll.d.ts +0 -34
- package/dist/utils/scroll.d.ts.map +0 -1
- package/dist/utils/scroll.js +0 -140
- package/dist/utils/settings.d.ts +0 -9
- package/dist/utils/settings.d.ts.map +0 -1
- package/dist/utils/settings.js +0 -14
- package/dist/utils/theme.d.ts.map +0 -1
- package/dist/utils/viewMode.d.ts +0 -14
- package/dist/utils/viewMode.d.ts.map +0 -1
- package/dist/utils/viewMode.js +0 -46
- /package/DS1/{utils → 0-face}/theme.ts +0 -0
- /package/DS1/{x Icon → x-icon}/1x.svg +0 -0
- /package/DS1/{x Icon → x-icon}/1xdots.svg +0 -0
- /package/DS1/{x Icon → x-icon}/1xgrid.svg +0 -0
- /package/DS1/{x Icon → x-icon}/1xlines.svg +0 -0
- /package/DS1/{x Icon → x-icon}/2x.svg +0 -0
- /package/DS1/{x Icon → x-icon}/2xdots.svg +0 -0
- /package/DS1/{x Icon → x-icon}/2xgrid.svg +0 -0
- /package/DS1/{x Icon → x-icon}/2xlines.svg +0 -0
- /package/DS1/{x Icon → x-icon}/big.svg +0 -0
- /package/DS1/{x Icon → x-icon}/blank.svg +0 -0
- /package/DS1/{x Icon → x-icon}/check.svg +0 -0
- /package/DS1/{x Icon → x-icon}/close.svg +0 -0
- /package/DS1/{x Icon → x-icon}/collapse.svg +0 -0
- /package/DS1/{x Icon → x-icon}/color.svg +0 -0
- /package/DS1/{x Icon → x-icon}/column.svg +0 -0
- /package/DS1/{x Icon → x-icon}/default.svg +0 -0
- /package/DS1/{x Icon → x-icon}/delete.svg +0 -0
- /package/DS1/{x Icon → x-icon}/do.svg +0 -0
- /package/DS1/{x Icon → x-icon}/down.svg +0 -0
- /package/DS1/{x Icon → x-icon}/duplicate.svg +0 -0
- /package/DS1/{x Icon → x-icon}/email.svg +0 -0
- /package/DS1/{x Icon → x-icon}/expand.svg +0 -0
- /package/DS1/{x Icon → x-icon}/gallery.svg +0 -0
- /package/DS1/{x Icon → x-icon}/group.svg +0 -0
- /package/DS1/{x Icon → x-icon}/head.svg +0 -0
- /package/DS1/{x Icon → x-icon}/icon.svg +0 -0
- /package/DS1/{x Icon → x-icon}/left.svg +0 -0
- /package/DS1/{x Icon → x-icon}/lock.svg +0 -0
- /package/DS1/{x Icon → x-icon}/mic.svg +0 -0
- /package/DS1/{x Icon → x-icon}/minimize.svg +0 -0
- /package/DS1/{x Icon → x-icon}/more.svg +0 -0
- /package/DS1/{x Icon → x-icon}/note.svg +0 -0
- /package/DS1/{x Icon → x-icon}/open.svg +0 -0
- /package/DS1/{x Icon → x-icon}/page.svg +0 -0
- /package/DS1/{x Icon → x-icon}/plus.svg +0 -0
- /package/DS1/{x Icon → x-icon}/rewind.svg +0 -0
- /package/DS1/{x Icon → x-icon}/right.svg +0 -0
- /package/DS1/{x Icon/row..svg → x-icon/row.svg} +0 -0
- /package/DS1/{x Icon → x-icon}/search.svg +0 -0
- /package/DS1/{x Icon → x-icon}/see.svg +0 -0
- /package/DS1/{x Icon → x-icon}/star.svg +0 -0
- /package/DS1/{x Icon → x-icon}/title.svg +0 -0
- /package/DS1/{x Icon → x-icon}/undo.svg +0 -0
- /package/DS1/{x Icon → x-icon}/ungroup.svg +0 -0
- /package/DS1/{x Icon → x-icon}/unhead.svg +0 -0
- /package/DS1/{x Icon → x-icon}/unicon.svg +0 -0
- /package/DS1/{x Icon → x-icon}/unlock.svg +0 -0
- /package/DS1/{x Icon → x-icon}/unmic.svg +0 -0
- /package/DS1/{x Icon → x-icon}/unsee.svg +0 -0
- /package/DS1/{x Icon → x-icon}/unstar.svg +0 -0
- /package/DS1/{x Icon → x-icon}/untitle.svg +0 -0
- /package/DS1/{x Icon → x-icon}/up.svg +0 -0
- /package/dist/{utils → 0-face}/theme.d.ts +0 -0
- /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-
|
|
6
|
+
* @element ds-date
|
|
7
7
|
*/
|
|
8
|
-
export class
|
|
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-
|
|
24
|
+
customElements.define("ds-date", DateComponent);
|
|
25
25
|
|
|
26
26
|
declare global {
|
|
27
27
|
interface HTMLElementTagNameMap {
|
|
28
|
-
"ds-
|
|
28
|
+
"ds-date": DateComponent;
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
|
package/DS1/2-core/ds-icon.ts
CHANGED
|
@@ -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(--
|
|
30
|
-
height: calc(16px * var(--
|
|
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(--
|
|
48
|
-
height: calc(16px * var(--
|
|
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
|
package/DS1/2-core/ds-text.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LitElement, html, css } from "lit";
|
|
2
|
-
import { getText } from "../
|
|
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
|
-
|
|
50
|
-
|
|
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
|
|
package/DS1/2-core/ds-tooltip.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LitElement, html, css } from "lit";
|
|
2
|
-
import { translate
|
|
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(--
|
|
82
|
+
transform: translate(-50%, calc(-2px * var(--sf)));
|
|
83
83
|
z-index: 1000;
|
|
84
84
|
pointer-events: none;
|
|
85
|
-
height: calc(var(--08) * var(--
|
|
85
|
+
height: calc(var(--08) * var(--sf));
|
|
86
86
|
opacity: 0;
|
|
87
|
-
transition:
|
|
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(--
|
|
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
|
-
|
|
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
|
-
|
package/DS1/3-unit/ds-list.ts
CHANGED
package/DS1/3-unit/ds-row.ts
CHANGED
|
@@ -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(--
|
|
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(--
|
|
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(--
|
|
37
|
-
gap: calc(var(--025) * var(--
|
|
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
|
-
|
package/DS1/3-unit/ds-table.ts
CHANGED
|
@@ -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:
|
|
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(--
|
|
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>
|
package/DS1/4-page/ds-grid.ts
CHANGED
|
@@ -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:
|
|
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(--
|
|
67
|
-
|
|
68
|
-
|
|
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
|
-
|
|
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(--
|
|
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(--
|
|
96
|
-
grid-template-columns: repeat(14, calc(19px * var(--
|
|
97
|
-
grid-template-rows: repeat(auto-fill, calc(19px * var(--
|
|
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
|
}
|
package/DS1/4-page/ds-layout.ts
CHANGED
|
@@ -17,13 +17,18 @@ export class Layout extends LitElement {
|
|
|
17
17
|
debug: { type: Boolean },
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
mode
|
|
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:
|
|
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
|
-
${
|
|
246
|
+
${isApp
|
|
180
247
|
? html`
|
|
181
|
-
<div class="debug-area debug-
|
|
182
|
-
|
|
183
|
-
|
|
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
|
-
:
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
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
|
: ""}
|