ds-one 0.2.5-alpha.9 → 0.3.0-alpha.1
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/device.ts +138 -0
- package/DS1/0-face/scaling.ts +152 -0
- package/DS1/1-root/fonts/Iosevka-Regular.woff2 +0 -0
- package/DS1/1-root/one.css +124 -77
- package/DS1/2-core/ds-banner.ts +120 -1
- package/DS1/2-core/ds-button.ts +16 -93
- package/DS1/2-core/ds-card.ts +137 -0
- package/DS1/2-core/ds-cycle.ts +77 -179
- package/DS1/2-core/ds-date.ts +3 -10
- package/DS1/2-core/ds-gap.ts +38 -0
- package/DS1/2-core/ds-icon.ts +6 -35
- package/DS1/2-core/ds-input.ts +306 -1
- package/DS1/2-core/ds-pagedots.ts +52 -0
- package/DS1/2-core/ds-text.ts +55 -28
- package/DS1/2-core/ds-tooltip.ts +12 -58
- package/DS1/2-core/styles/ds-banner.css +77 -0
- package/DS1/2-core/styles/ds-button.css +67 -0
- package/DS1/2-core/styles/ds-cycle.css +21 -0
- package/DS1/2-core/styles/ds-date.css +9 -0
- package/DS1/2-core/styles/ds-gap.css +93 -0
- package/DS1/2-core/styles/ds-icon.css +30 -0
- package/DS1/2-core/styles/ds-input.css +46 -0
- package/DS1/2-core/styles/ds-pagedots.css +31 -0
- package/DS1/2-core/styles/ds-text.css +29 -0
- package/DS1/2-core/styles/ds-tooltip.css +49 -0
- package/DS1/3-unit/ds-accordion.ts +95 -0
- package/DS1/3-unit/ds-form.ts +304 -0
- package/DS1/3-unit/ds-list.ts +5 -14
- package/DS1/3-unit/ds-row.ts +3 -19
- package/DS1/3-unit/ds-table.ts +3 -86
- package/DS1/3-unit/styles/ds-accordion.css +46 -0
- package/DS1/3-unit/styles/ds-list.css +9 -0
- package/DS1/3-unit/styles/ds-row.css +19 -0
- package/DS1/3-unit/styles/ds-table.css +80 -0
- package/DS1/4-page/ds-container.ts +28 -0
- package/DS1/4-page/ds-grid.ts +37 -50
- package/DS1/4-page/ds-layout.ts +652 -163
- package/DS1/4-page/styles/ds-container.css +35 -0
- package/DS1/4-page/styles/ds-grid.css +56 -0
- package/DS1/4-page/styles/ds-layout.css +246 -0
- package/DS1/index.ts +9 -1
- package/DS1/vite-env.d.ts +13 -0
- package/DS1/x-icon/2x.svg +4 -0
- package/DS1/x-icon/2xdots.svg +18 -0
- package/DS1/x-icon/2xgrid.svg +6 -0
- package/DS1/x-icon/2xlines.svg +6 -0
- package/DS1/x-icon/4x4.svg +18 -0
- package/DS1/x-icon/apple.svg +4 -0
- package/DS1/x-icon/avatar.svg +4 -0
- package/DS1/x-icon/big.svg +4 -0
- package/DS1/x-icon/blank.svg +3 -0
- package/DS1/x-icon/check.svg +3 -0
- package/DS1/x-icon/close.svg +3 -0
- package/DS1/x-icon/collapse.svg +3 -0
- package/DS1/x-icon/color.svg +4 -0
- package/DS1/x-icon/column.svg +5 -0
- package/DS1/x-icon/default.svg +3 -0
- package/DS1/x-icon/delete.svg +5 -0
- package/DS1/x-icon/dictate.svg +6 -0
- package/DS1/x-icon/do.svg +3 -0
- package/DS1/x-icon/down.svg +3 -0
- package/DS1/x-icon/duplicate.svg +4 -0
- package/DS1/x-icon/gallery.svg +5 -0
- package/DS1/x-icon/google.svg +6 -0
- package/DS1/x-icon/head.svg +5 -0
- package/DS1/x-icon/home.svg +3 -0
- package/DS1/x-icon/icon.svg +4 -0
- package/DS1/x-icon/in.svg +4 -0
- package/DS1/x-icon/lock.svg +5 -0
- package/DS1/x-icon/loop.svg +5 -0
- package/DS1/x-icon/mic.svg +5 -0
- package/DS1/x-icon/minimize.svg +3 -0
- package/DS1/x-icon/more.svg +5 -0
- package/DS1/x-icon/neutral.svg +6 -0
- package/DS1/x-icon/note.svg +6 -0
- package/DS1/x-icon/page.svg +4 -0
- package/DS1/x-icon/plus.svg +3 -0
- package/DS1/x-icon/rewind.svg +4 -0
- package/DS1/x-icon/row.svg +5 -0
- package/DS1/x-icon/sdown.svg +3 -0
- package/DS1/x-icon/search.svg +4 -0
- package/DS1/x-icon/see.svg +4 -0
- package/DS1/x-icon/ship.svg +5 -0
- package/DS1/x-icon/star.svg +3 -0
- package/DS1/x-icon/status.svg +4 -0
- package/DS1/x-icon/sup.svg +3 -0
- package/DS1/x-icon/title.svg +3 -0
- package/DS1/x-icon/undo.svg +3 -0
- package/DS1/x-icon/ungroup.svg +4 -0
- package/DS1/x-icon/unhead.svg +3 -0
- package/DS1/x-icon/unicon.svg +3 -0
- package/DS1/x-icon/unlock.svg +5 -0
- package/DS1/x-icon/unmic.svg +6 -0
- package/DS1/x-icon/unsee.svg +5 -0
- package/DS1/x-icon/unstar.svg +3 -0
- package/DS1/x-icon/untitle.svg +3 -0
- package/DS1/x-icon/up.svg +3 -0
- package/LICENSE +1 -1
- package/README.md +4 -4
- package/dist/0-face/device.d.ts +5 -0
- package/dist/0-face/device.d.ts.map +1 -1
- package/dist/0-face/device.js +111 -0
- package/dist/0-face/scaling.d.ts +48 -0
- package/dist/0-face/scaling.d.ts.map +1 -0
- package/dist/0-face/scaling.js +114 -0
- package/dist/2-core/ds-banner.d.ts +67 -0
- package/dist/2-core/ds-banner.d.ts.map +1 -1
- package/dist/2-core/ds-banner.js +97 -1
- package/dist/2-core/ds-button.d.ts +4 -15
- package/dist/2-core/ds-button.d.ts.map +1 -1
- package/dist/2-core/ds-button.js +14 -86
- package/dist/2-core/ds-card.d.ts +39 -0
- package/dist/2-core/ds-card.d.ts.map +1 -0
- package/dist/2-core/ds-card.js +119 -0
- package/dist/2-core/ds-cycle.d.ts +1 -5
- package/dist/2-core/ds-cycle.d.ts.map +1 -1
- package/dist/2-core/ds-cycle.js +74 -163
- package/dist/2-core/ds-date.d.ts.map +1 -1
- package/dist/2-core/ds-date.js +3 -9
- package/dist/2-core/ds-gap.d.ts +28 -0
- package/dist/2-core/ds-gap.d.ts.map +1 -0
- package/dist/2-core/ds-gap.js +25 -0
- package/dist/2-core/ds-icon.d.ts.map +1 -1
- package/dist/2-core/ds-icon.js +6 -35
- package/dist/2-core/ds-input.d.ts +127 -0
- package/dist/2-core/ds-input.d.ts.map +1 -1
- package/dist/2-core/ds-input.js +252 -1
- package/dist/2-core/ds-pagedots.d.ts +32 -0
- package/dist/2-core/ds-pagedots.d.ts.map +1 -0
- package/dist/2-core/ds-pagedots.js +36 -0
- package/dist/2-core/ds-text.d.ts +5 -3
- package/dist/2-core/ds-text.d.ts.map +1 -1
- package/dist/2-core/ds-text.js +49 -27
- package/dist/2-core/ds-tooltip.d.ts +2 -2
- package/dist/2-core/ds-tooltip.d.ts.map +1 -1
- package/dist/2-core/ds-tooltip.js +11 -57
- package/dist/2-core/styles/ds-banner.css +77 -0
- package/dist/2-core/styles/ds-button.css +67 -0
- package/dist/2-core/styles/ds-cycle.css +21 -0
- package/dist/2-core/styles/ds-date.css +9 -0
- package/dist/2-core/styles/ds-gap.css +93 -0
- package/dist/2-core/styles/ds-icon.css +30 -0
- package/dist/2-core/styles/ds-input.css +46 -0
- package/dist/2-core/styles/ds-pagedots.css +26 -0
- package/dist/2-core/styles/ds-text.css +29 -0
- package/dist/2-core/styles/ds-tooltip.css +49 -0
- package/dist/3-unit/ds-accordion.d.ts +47 -0
- package/dist/3-unit/ds-accordion.d.ts.map +1 -0
- package/dist/3-unit/ds-accordion.js +75 -0
- package/dist/3-unit/ds-form.d.ts +70 -0
- package/dist/3-unit/ds-form.d.ts.map +1 -0
- package/dist/3-unit/ds-form.js +232 -0
- package/dist/3-unit/ds-list.d.ts.map +1 -1
- package/dist/3-unit/ds-list.js +5 -11
- package/dist/3-unit/ds-row.d.ts.map +1 -1
- package/dist/3-unit/ds-row.js +3 -19
- package/dist/3-unit/ds-table.d.ts.map +1 -1
- package/dist/3-unit/ds-table.js +3 -86
- package/dist/3-unit/styles/ds-accordion.css +46 -0
- package/dist/3-unit/styles/ds-list.css +9 -0
- package/dist/3-unit/styles/ds-row.css +19 -0
- package/dist/3-unit/styles/ds-table.css +80 -0
- package/dist/{3-unit/row-v1.d.ts → 4-page/ds-container.d.ts} +3 -11
- package/dist/4-page/ds-container.d.ts.map +1 -0
- package/dist/4-page/ds-container.js +11 -0
- package/dist/4-page/ds-grid.d.ts +5 -0
- package/dist/4-page/ds-grid.d.ts.map +1 -1
- package/dist/4-page/ds-grid.js +38 -56
- package/dist/4-page/ds-layout.d.ts +3 -3
- package/dist/4-page/ds-layout.d.ts.map +1 -1
- package/dist/4-page/ds-layout.js +651 -162
- package/dist/4-page/styles/ds-container.css +35 -0
- package/dist/4-page/styles/ds-grid.css +56 -0
- package/dist/4-page/styles/ds-layout.css +251 -0
- package/dist/ds-one.bundle.css +700 -0
- package/dist/ds-one.bundle.css.map +7 -0
- package/dist/ds-one.bundle.js +2642 -1469
- package/dist/ds-one.bundle.js.map +1 -7
- package/dist/ds-one.bundle.min.css +2 -0
- package/dist/ds-one.bundle.min.css.map +7 -0
- package/dist/ds-one.bundle.min.js +3850 -550
- package/dist/ds-one.bundle.min.js.map +1 -7
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/package.json +4 -2
- package/dist/3-unit/doublenav-v1.d.ts +0 -51
- package/dist/3-unit/doublenav-v1.d.ts.map +0 -1
- package/dist/3-unit/doublenav-v1.js +0 -88
- package/dist/3-unit/ds-portfolio-doublenav.d.ts +0 -51
- package/dist/3-unit/ds-portfolio-doublenav.d.ts.map +0 -1
- package/dist/3-unit/ds-portfolio-doublenav.js +0 -88
- package/dist/3-unit/ds-portfolio-panel.d.ts +0 -11
- package/dist/3-unit/ds-portfolio-panel.d.ts.map +0 -1
- package/dist/3-unit/ds-portfolio-panel.js +0 -16
- package/dist/3-unit/ds-portfolio-singlenav.d.ts +0 -32
- package/dist/3-unit/ds-portfolio-singlenav.d.ts.map +0 -1
- package/dist/3-unit/ds-portfolio-singlenav.js +0 -62
- package/dist/3-unit/list-v1.d.ts +0 -11
- package/dist/3-unit/list-v1.d.ts.map +0 -1
- package/dist/3-unit/list-v1.js +0 -15
- package/dist/3-unit/panel-v1.d.ts +0 -11
- package/dist/3-unit/panel-v1.d.ts.map +0 -1
- package/dist/3-unit/panel-v1.js +0 -16
- package/dist/3-unit/row-v1.d.ts.map +0 -1
- package/dist/3-unit/row-v1.js +0 -32
- package/dist/3-unit/singlenav-v1.d.ts +0 -32
- package/dist/3-unit/singlenav-v1.d.ts.map +0 -1
- package/dist/3-unit/singlenav-v1.js +0 -62
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/* ds-banner.css */
|
|
2
|
+
/* Fixed banner component styles for notifications/alerts */
|
|
3
|
+
|
|
4
|
+
:host {
|
|
5
|
+
display: flex;
|
|
6
|
+
position: absolute;
|
|
7
|
+
top: 0;
|
|
8
|
+
left: 0;
|
|
9
|
+
right: 0;
|
|
10
|
+
width: 100%;
|
|
11
|
+
height: calc(var(--unit) * var(--sf, 1));
|
|
12
|
+
align-items: center;
|
|
13
|
+
justify-content: space-between;
|
|
14
|
+
padding: 0 calc(var(--unit) * var(--sf, 1));
|
|
15
|
+
box-sizing: border-box;
|
|
16
|
+
z-index: 9999;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
:host([variant="warning"]) {
|
|
20
|
+
background-color: color-mix(in srgb, var(--yellow) 50%, transparent);
|
|
21
|
+
--banner-text-color: color-mix(in srgb, var(--black) 50%, transparent);
|
|
22
|
+
--banner-action-color: var(--slate);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
:host([variant="info"]) {
|
|
26
|
+
background-color: rgba(var(--sharp-blue-rgb, 0, 122, 255), 0.7);
|
|
27
|
+
--banner-text-color: var(--white, #fff);
|
|
28
|
+
--banner-action-color: var(--white, #fff);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
:host([variant="success"]) {
|
|
32
|
+
background-color: rgba(var(--apple-green-rgb, 52, 199, 89), 0.7);
|
|
33
|
+
--banner-text-color: var(--white, #fff);
|
|
34
|
+
--banner-action-color: var(--white, #fff);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
:host([variant="error"]) {
|
|
38
|
+
background-color: rgba(var(--tuned-red-rgb, 255, 59, 48), 0.7);
|
|
39
|
+
--banner-text-color: var(--white, #fff);
|
|
40
|
+
--banner-action-color: var(--slate, #1e1e1e);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.text-wrapper {
|
|
44
|
+
flex: 1;
|
|
45
|
+
cursor: pointer;
|
|
46
|
+
user-select: none;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.text-wrapper ds-text,
|
|
50
|
+
.text-wrapper .version {
|
|
51
|
+
color: var(--banner-text-color);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.action-wrapper {
|
|
55
|
+
font-size: calc(12px * var(--sf, 1));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.action-wrapper a {
|
|
59
|
+
color: var(--banner-action-color);
|
|
60
|
+
text-decoration: none;
|
|
61
|
+
font-family: var(--typeface-regular);
|
|
62
|
+
font-size: calc(12px * var(--sf, 1));
|
|
63
|
+
cursor: pointer;
|
|
64
|
+
pointer-events: auto;
|
|
65
|
+
display: inline-block;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.action-wrapper a:hover {
|
|
69
|
+
opacity: 0.8;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.action-wrapper ds-text {
|
|
73
|
+
color: var(--banner-action-color);
|
|
74
|
+
font-family: var(--typeface-regular);
|
|
75
|
+
font-size: calc(12px * var(--sf, 1));
|
|
76
|
+
pointer-events: none;
|
|
77
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/* ds-button.css */
|
|
2
|
+
/* Core button component styles */
|
|
3
|
+
|
|
4
|
+
button {
|
|
5
|
+
max-height: calc(var(--08) * var(--sf));
|
|
6
|
+
display: inline-flex;
|
|
7
|
+
align-items: center;
|
|
8
|
+
justify-content: center;
|
|
9
|
+
border: none;
|
|
10
|
+
cursor: pointer;
|
|
11
|
+
padding: 0 calc(0.5px * var(--sf));
|
|
12
|
+
color: var(--button-text-color);
|
|
13
|
+
font-family: var(--typeface-regular);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
button.title {
|
|
17
|
+
background-color: var(--button-background-color-secondary);
|
|
18
|
+
color: var(--button-text-color);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
button.primary {
|
|
22
|
+
background-color: var(--accent-color);
|
|
23
|
+
color: var(--button-text-color);
|
|
24
|
+
text-decoration-line: none;
|
|
25
|
+
font-family: var(--typeface-regular);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
button.secondary {
|
|
29
|
+
background-color: var(--button-background-color-secondary);
|
|
30
|
+
color: var(--button-text-color);
|
|
31
|
+
font-family: var(--typeface-regular);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
button.text {
|
|
35
|
+
background-color: transparent;
|
|
36
|
+
color: var(--button-color, var(--button-text-color));
|
|
37
|
+
font-family: var(--typeface-regular);
|
|
38
|
+
padding: 0;
|
|
39
|
+
text-decoration: none;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
button.text:hover {
|
|
43
|
+
opacity: 0.8;
|
|
44
|
+
text-decoration: none;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
button[bold] {
|
|
48
|
+
font-weight: var(--type-weight-bold);
|
|
49
|
+
font-family: var(--typeface-medium);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
button[no-background] {
|
|
53
|
+
background-color: transparent;
|
|
54
|
+
max-height: var(--1);
|
|
55
|
+
padding: 0;
|
|
56
|
+
color: var(--button-color, var(--button-text-color-secondary));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
button[no-background][bold] {
|
|
60
|
+
font-weight: var(--type-weight-bold);
|
|
61
|
+
font-family: var(--typeface-medium);
|
|
62
|
+
color: var(--button-color, var(--button-text-color-secondary));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.loading {
|
|
66
|
+
opacity: 0.7;
|
|
67
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/* ds-cycle.css */
|
|
2
|
+
/* Cycle component styles for cycling through options */
|
|
3
|
+
|
|
4
|
+
:host {
|
|
5
|
+
display: inline-flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.cycle {
|
|
10
|
+
display: inline-flex;
|
|
11
|
+
align-items: center;
|
|
12
|
+
gap: var(--025);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.color-preview {
|
|
16
|
+
width: var(--05);
|
|
17
|
+
height: var(--05);
|
|
18
|
+
border-radius: 999px;
|
|
19
|
+
border: 1px solid color-mix(in srgb, var(--text-color-primary) 20%, transparent);
|
|
20
|
+
flex: 0 0 auto;
|
|
21
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/* ds-gap.css */
|
|
2
|
+
/* Full-width vertical spacer styles */
|
|
3
|
+
|
|
4
|
+
:host {
|
|
5
|
+
display: block;
|
|
6
|
+
width: 100%;
|
|
7
|
+
/* Default if no attribute is provided */
|
|
8
|
+
--gap-size: var(--unit);
|
|
9
|
+
height: var(--gap-size);
|
|
10
|
+
flex: 0 0 auto;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/* Semantic sizing tokens (from DS1/1-root/one.css) */
|
|
14
|
+
:host([tenth]) {
|
|
15
|
+
--gap-size: var(--tenth);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
:host([quarter]) {
|
|
19
|
+
--gap-size: var(--quarter);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
:host([half]) {
|
|
23
|
+
--gap-size: var(--half);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
:host([eight-tenth]) {
|
|
27
|
+
--gap-size: var(--eight-tenth);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
:host([unit]) {
|
|
31
|
+
--gap-size: var(--unit);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
:host([double]) {
|
|
35
|
+
--gap-size: var(--double);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
:host([triple]) {
|
|
39
|
+
--gap-size: var(--triple);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
:host([quad]) {
|
|
43
|
+
--gap-size: var(--quad);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
:host([oct]) {
|
|
47
|
+
--gap-size: var(--oct);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
:host([dozen]) {
|
|
51
|
+
--gap-size: var(--dozen);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* Raw scale sizing (size="...") */
|
|
55
|
+
:host([size="01"]) {
|
|
56
|
+
--gap-size: var(--01);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
:host([size="025"]) {
|
|
60
|
+
--gap-size: var(--025);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
:host([size="05"]) {
|
|
64
|
+
--gap-size: var(--05);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
:host([size="08"]) {
|
|
68
|
+
--gap-size: var(--08);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
:host([size="1"]) {
|
|
72
|
+
--gap-size: var(--1);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
:host([size="2"]) {
|
|
76
|
+
--gap-size: var(--2);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
:host([size="3"]) {
|
|
80
|
+
--gap-size: var(--3);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
:host([size="4"]) {
|
|
84
|
+
--gap-size: var(--4);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
:host([size="8"]) {
|
|
88
|
+
--gap-size: var(--8);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
:host([size="12"]) {
|
|
92
|
+
--gap-size: var(--12);
|
|
93
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/* ds-icon.css */
|
|
2
|
+
/* Icon component styles */
|
|
3
|
+
|
|
4
|
+
:host {
|
|
5
|
+
display: inline-flex;
|
|
6
|
+
justify-content: center;
|
|
7
|
+
align-items: center;
|
|
8
|
+
width: calc(16px * var(--sf));
|
|
9
|
+
height: calc(16px * var(--sf));
|
|
10
|
+
/* Notes style color variable for future implementation */
|
|
11
|
+
--notes-style-color: #ffb6b9;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
svg {
|
|
15
|
+
width: 100%;
|
|
16
|
+
height: 100%;
|
|
17
|
+
fill: var(--icon-color, currentColor);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
path {
|
|
21
|
+
fill: var(--icon-color, currentColor);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.icon-container {
|
|
25
|
+
display: flex;
|
|
26
|
+
justify-content: center;
|
|
27
|
+
align-items: center;
|
|
28
|
+
width: calc(16px * var(--sf));
|
|
29
|
+
height: calc(16px * var(--sf));
|
|
30
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/* ds-input.css */
|
|
2
|
+
/* Input component styles */
|
|
3
|
+
|
|
4
|
+
:host {
|
|
5
|
+
display: block;
|
|
6
|
+
width: 100%;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
input {
|
|
10
|
+
background: var(--base-light-grey, #e8e8e8);
|
|
11
|
+
border: none;
|
|
12
|
+
padding: 0 calc(2px * var(--sf, 1));
|
|
13
|
+
border-radius: 4px;
|
|
14
|
+
font-size: var(--type-size-default);
|
|
15
|
+
font-family: var(
|
|
16
|
+
--typeface-regular,
|
|
17
|
+
-apple-system,
|
|
18
|
+
BlinkMacSystemFont,
|
|
19
|
+
"Segoe UI",
|
|
20
|
+
Roboto,
|
|
21
|
+
sans-serif
|
|
22
|
+
);
|
|
23
|
+
color: var(--base-darker-grey, #797979);
|
|
24
|
+
line-height: calc(20px * var(--sf, 1));
|
|
25
|
+
letter-spacing: calc(-0.4px * var(--sf, 1));
|
|
26
|
+
opacity: 0.5;
|
|
27
|
+
height: calc(28px * var(--sf, 1));
|
|
28
|
+
width: 100%;
|
|
29
|
+
box-sizing: border-box;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
input:focus {
|
|
33
|
+
outline: none;
|
|
34
|
+
opacity: 1;
|
|
35
|
+
color: var(--base-slate, #1e1e1e);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
input::placeholder {
|
|
39
|
+
color: var(--base-darker-grey, #797979);
|
|
40
|
+
opacity: 0.5;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
input:disabled {
|
|
44
|
+
cursor: not-allowed;
|
|
45
|
+
opacity: 0.5;
|
|
46
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/* ds-pagedots.css */
|
|
2
|
+
/* Page dots indicator component styles for carousels and pagination */
|
|
3
|
+
|
|
4
|
+
:host {
|
|
5
|
+
display: flex;
|
|
6
|
+
gap: calc(11.2px * var(--sf, 1));
|
|
7
|
+
justify-content: center;
|
|
8
|
+
align-items: center;
|
|
9
|
+
height: calc(28px * var(--sf, 1));
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.dot {
|
|
13
|
+
width: calc(2.8px * var(--sf, 1));
|
|
14
|
+
height: calc(2.8px * var(--sf, 1));
|
|
15
|
+
border-radius: 50%;
|
|
16
|
+
background: white;
|
|
17
|
+
border: calc(0.7px * var(--sf, 1)) solid #696969;
|
|
18
|
+
transition: background 0.2s ease, border 0.2s ease;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.dot.active {
|
|
22
|
+
background: #666;
|
|
23
|
+
border: none;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/* ds-text.css */
|
|
2
|
+
/* Text component styles for displaying translations */
|
|
3
|
+
|
|
4
|
+
:host {
|
|
5
|
+
display: inline;
|
|
6
|
+
font-family: var(--typeface-regular);
|
|
7
|
+
font-size: var(--type-size-default);
|
|
8
|
+
font-weight: var(--type-weight-default);
|
|
9
|
+
line-height: calc(var(--type-lineheight-default) * var(--sf));
|
|
10
|
+
letter-spacing: calc(var(--type-letterspacing-default) * var(--sf));
|
|
11
|
+
text-align: var(--text-align-default);
|
|
12
|
+
text-transform: var(--text-transform-default);
|
|
13
|
+
text-decoration: var(--text-decoration-default);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
:host([data-language="ja"]) {
|
|
17
|
+
font-family: var(--typeface-regular-jp);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
:host([data-language="zh"]),
|
|
21
|
+
:host([data-language="zh-hant"]) {
|
|
22
|
+
font-family: var(--typeface-regular-zh-hant);
|
|
23
|
+
font-weight: 800;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
:host([data-language="zh-hans"]) {
|
|
27
|
+
font-family: var(--typeface-regular-zh-hans);
|
|
28
|
+
font-weight: 800;
|
|
29
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/* ds-tooltip.css */
|
|
2
|
+
/* Tooltip component styles */
|
|
3
|
+
|
|
4
|
+
:host {
|
|
5
|
+
position: relative;
|
|
6
|
+
display: inline-block;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.slot-wrapper {
|
|
10
|
+
display: inline-flex;
|
|
11
|
+
align-items: center;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.bubble {
|
|
15
|
+
display: flex;
|
|
16
|
+
align-items: center;
|
|
17
|
+
justify-content: center;
|
|
18
|
+
position: absolute;
|
|
19
|
+
left: 50%;
|
|
20
|
+
bottom: 100%;
|
|
21
|
+
transform: translate(-50%, calc(-2px * var(--sf)));
|
|
22
|
+
z-index: 1000;
|
|
23
|
+
pointer-events: none;
|
|
24
|
+
height: calc(var(--08) * var(--sf));
|
|
25
|
+
opacity: 0;
|
|
26
|
+
transition:
|
|
27
|
+
opacity 120ms ease,
|
|
28
|
+
transform 120ms ease;
|
|
29
|
+
background-color: light-dark(var(--black), var(--white));
|
|
30
|
+
color: light-dark(var(--white), var(--black));
|
|
31
|
+
border-radius: 0;
|
|
32
|
+
font-size: var(--type-size-default);
|
|
33
|
+
padding: 0px calc(1px * var(--sf));
|
|
34
|
+
font-family: var(
|
|
35
|
+
--typeface-regular,
|
|
36
|
+
-apple-system,
|
|
37
|
+
BlinkMacSystemFont,
|
|
38
|
+
"Segoe UI",
|
|
39
|
+
Roboto,
|
|
40
|
+
sans-serif
|
|
41
|
+
);
|
|
42
|
+
font-weight: 500;
|
|
43
|
+
white-space: nowrap;
|
|
44
|
+
min-width: max-content;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.bubble.visible {
|
|
48
|
+
opacity: 1;
|
|
49
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { LitElement } from "lit";
|
|
2
|
+
import "../2-core/ds-text";
|
|
3
|
+
import "../2-core/ds-icon";
|
|
4
|
+
import "./ds-row";
|
|
5
|
+
/**
|
|
6
|
+
* Native accordion using <details>/<summary> (no JS toggle logic).
|
|
7
|
+
*
|
|
8
|
+
* Usage (with translation text):
|
|
9
|
+
* <ds-accordion summary="How it began" details="Designed in Hokkaido"></ds-accordion>
|
|
10
|
+
*
|
|
11
|
+
* Usage (with slotted details content):
|
|
12
|
+
* <ds-accordion summary="How it began">
|
|
13
|
+
* <div slot="details">Rich HTML content here</div>
|
|
14
|
+
* </ds-accordion>
|
|
15
|
+
*/
|
|
16
|
+
export declare class Accordion extends LitElement {
|
|
17
|
+
static properties: {
|
|
18
|
+
summary: {
|
|
19
|
+
type: StringConstructor;
|
|
20
|
+
};
|
|
21
|
+
details: {
|
|
22
|
+
type: StringConstructor;
|
|
23
|
+
};
|
|
24
|
+
open: {
|
|
25
|
+
type: BooleanConstructor;
|
|
26
|
+
reflect: boolean;
|
|
27
|
+
};
|
|
28
|
+
_hasSlottedContent: {
|
|
29
|
+
type: BooleanConstructor;
|
|
30
|
+
state: boolean;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
summary: string;
|
|
34
|
+
details: string;
|
|
35
|
+
open: boolean;
|
|
36
|
+
_hasSlottedContent: boolean;
|
|
37
|
+
constructor();
|
|
38
|
+
static styles: import("lit").CSSResult;
|
|
39
|
+
private _handleSlotChange;
|
|
40
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
41
|
+
}
|
|
42
|
+
declare global {
|
|
43
|
+
interface HTMLElementTagNameMap {
|
|
44
|
+
"ds-accordion": Accordion;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=ds-accordion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ds-accordion.d.ts","sourceRoot":"","sources":["../../DS1/3-unit/ds-accordion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAClD,OAAO,mBAAmB,CAAC;AAC3B,OAAO,mBAAmB,CAAC;AAC3B,OAAO,UAAU,CAAC;AAGlB;;;;;;;;;;GAUG;AACH,qBAAa,SAAU,SAAQ,UAAU;IACvC,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;MAKf;IAEM,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,kBAAkB,EAAE,OAAO,CAAC;;IAUpC,MAAM,CAAC,MAAM,0BAAqB;IAElC,OAAO,CAAC,iBAAiB;IAYzB,MAAM;CAkCP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,SAAS,CAAC;KAC3B;CACF"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { LitElement, html, unsafeCSS } from "lit";
|
|
2
|
+
import "../2-core/ds-text";
|
|
3
|
+
import "../2-core/ds-icon";
|
|
4
|
+
import "./ds-row";
|
|
5
|
+
import styles from "./styles/ds-accordion.css?inline";
|
|
6
|
+
/**
|
|
7
|
+
* Native accordion using <details>/<summary> (no JS toggle logic).
|
|
8
|
+
*
|
|
9
|
+
* Usage (with translation text):
|
|
10
|
+
* <ds-accordion summary="How it began" details="Designed in Hokkaido"></ds-accordion>
|
|
11
|
+
*
|
|
12
|
+
* Usage (with slotted details content):
|
|
13
|
+
* <ds-accordion summary="How it began">
|
|
14
|
+
* <div slot="details">Rich HTML content here</div>
|
|
15
|
+
* </ds-accordion>
|
|
16
|
+
*/
|
|
17
|
+
export class Accordion extends LitElement {
|
|
18
|
+
constructor() {
|
|
19
|
+
super();
|
|
20
|
+
this.summary = "";
|
|
21
|
+
this.details = "";
|
|
22
|
+
this.open = false;
|
|
23
|
+
this._hasSlottedContent = false;
|
|
24
|
+
}
|
|
25
|
+
_handleSlotChange(e) {
|
|
26
|
+
const slot = e.target;
|
|
27
|
+
const assignedNodes = slot.assignedNodes({ flatten: true });
|
|
28
|
+
// Filter out empty text nodes (whitespace only)
|
|
29
|
+
const hasContent = assignedNodes.some((node) => node.nodeType === Node.ELEMENT_NODE ||
|
|
30
|
+
(node.nodeType === Node.TEXT_NODE && node.textContent?.trim()));
|
|
31
|
+
this._hasSlottedContent = hasContent;
|
|
32
|
+
}
|
|
33
|
+
render() {
|
|
34
|
+
return html `
|
|
35
|
+
<details ?open=${this.open}>
|
|
36
|
+
<summary>
|
|
37
|
+
<ds-row class="summaryRow" type="centered">
|
|
38
|
+
<ds-text .text=${this.summary}></ds-text>
|
|
39
|
+
<ds-icon class="chevron" aria-hidden="true">
|
|
40
|
+
<svg
|
|
41
|
+
viewBox="0 0 10.157 8.219"
|
|
42
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
43
|
+
aria-hidden="true"
|
|
44
|
+
focusable="false"
|
|
45
|
+
>
|
|
46
|
+
<path
|
|
47
|
+
d="M5.078 8.219L0 3.141L1.414 1.727L5.078 5.391L8.743 1.727L10.157 3.141L5.078 8.219Z"
|
|
48
|
+
fill="currentColor"
|
|
49
|
+
/>
|
|
50
|
+
</svg>
|
|
51
|
+
</ds-icon>
|
|
52
|
+
</ds-row>
|
|
53
|
+
</summary>
|
|
54
|
+
|
|
55
|
+
<div class="detailsBody">
|
|
56
|
+
<slot name="details" @slotchange=${this._handleSlotChange}></slot>
|
|
57
|
+
${!this._hasSlottedContent
|
|
58
|
+
? html `<ds-text
|
|
59
|
+
class="detailsText"
|
|
60
|
+
.text=${this.details}
|
|
61
|
+
></ds-text>`
|
|
62
|
+
: ""}
|
|
63
|
+
</div>
|
|
64
|
+
</details>
|
|
65
|
+
`;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
Accordion.properties = {
|
|
69
|
+
summary: { type: String },
|
|
70
|
+
details: { type: String },
|
|
71
|
+
open: { type: Boolean, reflect: true },
|
|
72
|
+
_hasSlottedContent: { type: Boolean, state: true },
|
|
73
|
+
};
|
|
74
|
+
Accordion.styles = unsafeCSS(styles);
|
|
75
|
+
customElements.define("ds-accordion", Accordion);
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { LitElement } from "lit";
|
|
2
|
+
export interface FormData {
|
|
3
|
+
[key: string]: string | number | boolean | null;
|
|
4
|
+
}
|
|
5
|
+
export interface FormValidationResult {
|
|
6
|
+
valid: boolean;
|
|
7
|
+
errors: {
|
|
8
|
+
[key: string]: string;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export declare class Form extends LitElement {
|
|
12
|
+
static properties: {
|
|
13
|
+
action: {
|
|
14
|
+
type: StringConstructor;
|
|
15
|
+
};
|
|
16
|
+
method: {
|
|
17
|
+
type: StringConstructor;
|
|
18
|
+
};
|
|
19
|
+
name: {
|
|
20
|
+
type: StringConstructor;
|
|
21
|
+
};
|
|
22
|
+
novalidate: {
|
|
23
|
+
type: BooleanConstructor;
|
|
24
|
+
reflect: boolean;
|
|
25
|
+
};
|
|
26
|
+
autocomplete: {
|
|
27
|
+
type: StringConstructor;
|
|
28
|
+
};
|
|
29
|
+
_isSubmitting: {
|
|
30
|
+
type: BooleanConstructor;
|
|
31
|
+
state: boolean;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
action: string;
|
|
35
|
+
method: "get" | "post";
|
|
36
|
+
name: string;
|
|
37
|
+
novalidate: boolean;
|
|
38
|
+
autocomplete: "on" | "off";
|
|
39
|
+
_isSubmitting: boolean;
|
|
40
|
+
constructor();
|
|
41
|
+
static styles: import("lit").CSSResult;
|
|
42
|
+
/**
|
|
43
|
+
* Get all form data as an object
|
|
44
|
+
*/
|
|
45
|
+
getFormData(): FormData;
|
|
46
|
+
private _collectFormData;
|
|
47
|
+
/**
|
|
48
|
+
* Validate the form
|
|
49
|
+
*/
|
|
50
|
+
validate(): FormValidationResult;
|
|
51
|
+
private _validateElement;
|
|
52
|
+
/**
|
|
53
|
+
* Reset the form
|
|
54
|
+
*/
|
|
55
|
+
reset(): void;
|
|
56
|
+
private _resetElement;
|
|
57
|
+
/**
|
|
58
|
+
* Submit the form
|
|
59
|
+
*/
|
|
60
|
+
submit(): Promise<void>;
|
|
61
|
+
private _handleSubmit;
|
|
62
|
+
private _handleKeydown;
|
|
63
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
64
|
+
}
|
|
65
|
+
declare global {
|
|
66
|
+
interface HTMLElementTagNameMap {
|
|
67
|
+
"ds-form": Form;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=ds-form.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ds-form.d.ts","sourceRoot":"","sources":["../../DS1/3-unit/ds-form.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,MAAM,WAAW,QAAQ;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACnC;AAED,qBAAa,IAAK,SAAQ,UAAU;IAClC,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;MAOf;IAEM,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,IAAI,GAAG,KAAK,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;;IAY/B,MAAM,CAAC,MAAM,0BAqBX;IAEF;;OAEG;IACH,WAAW,IAAI,QAAQ;IAYvB,OAAO,CAAC,gBAAgB;IA8BxB;;OAEG;IACH,QAAQ,IAAI,oBAAoB;IAoBhC,OAAO,CAAC,gBAAgB;IAmCxB;;OAEG;IACH,KAAK,IAAI,IAAI;IAWb,OAAO,CAAC,aAAa;IA0BrB;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAsD7B,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,cAAc;IAWtB,MAAM;CAeP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,IAAI,CAAC;KACjB;CACF"}
|