ds-one 0.2.5-alpha.8 → 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.
Files changed (213) hide show
  1. package/DS1/0-face/device.ts +138 -0
  2. package/DS1/0-face/i18n.ts +36 -89
  3. package/DS1/0-face/scaling.ts +152 -0
  4. package/DS1/1-root/fonts/Iosevka-Regular.woff2 +0 -0
  5. package/DS1/1-root/one.css +124 -77
  6. package/DS1/2-core/ds-banner.ts +120 -1
  7. package/DS1/2-core/ds-button.ts +16 -96
  8. package/DS1/2-core/ds-card.ts +137 -0
  9. package/DS1/2-core/ds-cycle.ts +82 -184
  10. package/DS1/2-core/ds-date.ts +3 -10
  11. package/DS1/2-core/ds-gap.ts +38 -0
  12. package/DS1/2-core/ds-icon.ts +6 -35
  13. package/DS1/2-core/ds-input.ts +306 -1
  14. package/DS1/2-core/ds-pagedots.ts +52 -0
  15. package/DS1/2-core/ds-text.ts +55 -28
  16. package/DS1/2-core/ds-tooltip.ts +14 -66
  17. package/DS1/2-core/styles/ds-banner.css +77 -0
  18. package/DS1/2-core/styles/ds-button.css +67 -0
  19. package/DS1/2-core/styles/ds-cycle.css +21 -0
  20. package/DS1/2-core/styles/ds-date.css +9 -0
  21. package/DS1/2-core/styles/ds-gap.css +93 -0
  22. package/DS1/2-core/styles/ds-icon.css +30 -0
  23. package/DS1/2-core/styles/ds-input.css +46 -0
  24. package/DS1/2-core/styles/ds-pagedots.css +31 -0
  25. package/DS1/2-core/styles/ds-text.css +29 -0
  26. package/DS1/2-core/styles/ds-tooltip.css +49 -0
  27. package/DS1/3-unit/ds-accordion.ts +95 -0
  28. package/DS1/3-unit/ds-form.ts +304 -0
  29. package/DS1/3-unit/ds-list.ts +5 -14
  30. package/DS1/3-unit/ds-row.ts +3 -19
  31. package/DS1/3-unit/ds-table.ts +3 -86
  32. package/DS1/3-unit/styles/ds-accordion.css +46 -0
  33. package/DS1/3-unit/styles/ds-list.css +9 -0
  34. package/DS1/3-unit/styles/ds-row.css +19 -0
  35. package/DS1/3-unit/styles/ds-table.css +80 -0
  36. package/DS1/4-page/ds-container.ts +28 -0
  37. package/DS1/4-page/ds-grid.ts +37 -50
  38. package/DS1/4-page/ds-layout.ts +652 -163
  39. package/DS1/4-page/styles/ds-container.css +35 -0
  40. package/DS1/4-page/styles/ds-grid.css +56 -0
  41. package/DS1/4-page/styles/ds-layout.css +246 -0
  42. package/DS1/index.ts +9 -1
  43. package/DS1/vite-env.d.ts +13 -0
  44. package/DS1/x-icon/2x.svg +4 -0
  45. package/DS1/x-icon/2xdots.svg +18 -0
  46. package/DS1/x-icon/2xgrid.svg +6 -0
  47. package/DS1/x-icon/2xlines.svg +6 -0
  48. package/DS1/x-icon/4x4.svg +18 -0
  49. package/DS1/x-icon/apple.svg +4 -0
  50. package/DS1/x-icon/avatar.svg +4 -0
  51. package/DS1/x-icon/big.svg +4 -0
  52. package/DS1/x-icon/blank.svg +3 -0
  53. package/DS1/x-icon/check.svg +3 -0
  54. package/DS1/x-icon/close.svg +3 -0
  55. package/DS1/x-icon/collapse.svg +3 -0
  56. package/DS1/x-icon/color.svg +4 -0
  57. package/DS1/x-icon/column.svg +5 -0
  58. package/DS1/x-icon/default.svg +3 -0
  59. package/DS1/x-icon/delete.svg +5 -0
  60. package/DS1/x-icon/dictate.svg +6 -0
  61. package/DS1/x-icon/do.svg +3 -0
  62. package/DS1/x-icon/down.svg +3 -0
  63. package/DS1/x-icon/duplicate.svg +4 -0
  64. package/DS1/x-icon/gallery.svg +5 -0
  65. package/DS1/x-icon/google.svg +6 -0
  66. package/DS1/x-icon/head.svg +5 -0
  67. package/DS1/x-icon/home.svg +3 -0
  68. package/DS1/x-icon/icon.svg +4 -0
  69. package/DS1/x-icon/in.svg +4 -0
  70. package/DS1/x-icon/lock.svg +5 -0
  71. package/DS1/x-icon/loop.svg +5 -0
  72. package/DS1/x-icon/mic.svg +5 -0
  73. package/DS1/x-icon/minimize.svg +3 -0
  74. package/DS1/x-icon/more.svg +5 -0
  75. package/DS1/x-icon/neutral.svg +6 -0
  76. package/DS1/x-icon/note.svg +6 -0
  77. package/DS1/x-icon/page.svg +4 -0
  78. package/DS1/x-icon/plus.svg +3 -0
  79. package/DS1/x-icon/rewind.svg +4 -0
  80. package/DS1/x-icon/row.svg +5 -0
  81. package/DS1/x-icon/sdown.svg +3 -0
  82. package/DS1/x-icon/search.svg +4 -0
  83. package/DS1/x-icon/see.svg +4 -0
  84. package/DS1/x-icon/ship.svg +5 -0
  85. package/DS1/x-icon/star.svg +3 -0
  86. package/DS1/x-icon/status.svg +4 -0
  87. package/DS1/x-icon/sup.svg +3 -0
  88. package/DS1/x-icon/title.svg +3 -0
  89. package/DS1/x-icon/undo.svg +3 -0
  90. package/DS1/x-icon/ungroup.svg +4 -0
  91. package/DS1/x-icon/unhead.svg +3 -0
  92. package/DS1/x-icon/unicon.svg +3 -0
  93. package/DS1/x-icon/unlock.svg +5 -0
  94. package/DS1/x-icon/unmic.svg +6 -0
  95. package/DS1/x-icon/unsee.svg +5 -0
  96. package/DS1/x-icon/unstar.svg +3 -0
  97. package/DS1/x-icon/untitle.svg +3 -0
  98. package/DS1/x-icon/up.svg +3 -0
  99. package/LICENSE +1 -1
  100. package/README.md +4 -4
  101. package/dist/0-face/device.d.ts +5 -0
  102. package/dist/0-face/device.d.ts.map +1 -1
  103. package/dist/0-face/device.js +111 -0
  104. package/dist/0-face/i18n.d.ts +0 -2
  105. package/dist/0-face/i18n.d.ts.map +1 -1
  106. package/dist/0-face/i18n.js +36 -73
  107. package/dist/0-face/scaling.d.ts +48 -0
  108. package/dist/0-face/scaling.d.ts.map +1 -0
  109. package/dist/0-face/scaling.js +114 -0
  110. package/dist/2-core/ds-banner.d.ts +67 -0
  111. package/dist/2-core/ds-banner.d.ts.map +1 -1
  112. package/dist/2-core/ds-banner.js +97 -1
  113. package/dist/2-core/ds-button.d.ts +4 -20
  114. package/dist/2-core/ds-button.d.ts.map +1 -1
  115. package/dist/2-core/ds-button.js +14 -88
  116. package/dist/2-core/ds-card.d.ts +39 -0
  117. package/dist/2-core/ds-card.d.ts.map +1 -0
  118. package/dist/2-core/ds-card.js +119 -0
  119. package/dist/2-core/ds-cycle.d.ts +1 -5
  120. package/dist/2-core/ds-cycle.d.ts.map +1 -1
  121. package/dist/2-core/ds-cycle.js +79 -166
  122. package/dist/2-core/ds-date.d.ts.map +1 -1
  123. package/dist/2-core/ds-date.js +3 -9
  124. package/dist/2-core/ds-gap.d.ts +28 -0
  125. package/dist/2-core/ds-gap.d.ts.map +1 -0
  126. package/dist/2-core/ds-gap.js +25 -0
  127. package/dist/2-core/ds-icon.d.ts.map +1 -1
  128. package/dist/2-core/ds-icon.js +6 -35
  129. package/dist/2-core/ds-input.d.ts +127 -0
  130. package/dist/2-core/ds-input.d.ts.map +1 -1
  131. package/dist/2-core/ds-input.js +252 -1
  132. package/dist/2-core/ds-pagedots.d.ts +32 -0
  133. package/dist/2-core/ds-pagedots.d.ts.map +1 -0
  134. package/dist/2-core/ds-pagedots.js +36 -0
  135. package/dist/2-core/ds-text.d.ts +5 -3
  136. package/dist/2-core/ds-text.d.ts.map +1 -1
  137. package/dist/2-core/ds-text.js +49 -27
  138. package/dist/2-core/ds-tooltip.d.ts +3 -3
  139. package/dist/2-core/ds-tooltip.d.ts.map +1 -1
  140. package/dist/2-core/ds-tooltip.js +13 -65
  141. package/dist/2-core/styles/ds-banner.css +77 -0
  142. package/dist/2-core/styles/ds-button.css +67 -0
  143. package/dist/2-core/styles/ds-cycle.css +21 -0
  144. package/dist/2-core/styles/ds-date.css +9 -0
  145. package/dist/2-core/styles/ds-gap.css +93 -0
  146. package/dist/2-core/styles/ds-icon.css +30 -0
  147. package/dist/2-core/styles/ds-input.css +46 -0
  148. package/dist/2-core/styles/ds-pagedots.css +26 -0
  149. package/dist/2-core/styles/ds-text.css +29 -0
  150. package/dist/2-core/styles/ds-tooltip.css +49 -0
  151. package/dist/3-unit/ds-accordion.d.ts +47 -0
  152. package/dist/3-unit/ds-accordion.d.ts.map +1 -0
  153. package/dist/3-unit/ds-accordion.js +75 -0
  154. package/dist/3-unit/ds-form.d.ts +70 -0
  155. package/dist/3-unit/ds-form.d.ts.map +1 -0
  156. package/dist/3-unit/ds-form.js +232 -0
  157. package/dist/3-unit/ds-list.d.ts.map +1 -1
  158. package/dist/3-unit/ds-list.js +5 -11
  159. package/dist/3-unit/ds-row.d.ts.map +1 -1
  160. package/dist/3-unit/ds-row.js +3 -19
  161. package/dist/3-unit/ds-table.d.ts.map +1 -1
  162. package/dist/3-unit/ds-table.js +3 -86
  163. package/dist/3-unit/styles/ds-accordion.css +46 -0
  164. package/dist/3-unit/styles/ds-list.css +9 -0
  165. package/dist/3-unit/styles/ds-row.css +19 -0
  166. package/dist/3-unit/styles/ds-table.css +80 -0
  167. package/dist/{3-unit/row-v1.d.ts → 4-page/ds-container.d.ts} +3 -11
  168. package/dist/4-page/ds-container.d.ts.map +1 -0
  169. package/dist/4-page/ds-container.js +11 -0
  170. package/dist/4-page/ds-grid.d.ts +5 -0
  171. package/dist/4-page/ds-grid.d.ts.map +1 -1
  172. package/dist/4-page/ds-grid.js +38 -56
  173. package/dist/4-page/ds-layout.d.ts +3 -3
  174. package/dist/4-page/ds-layout.d.ts.map +1 -1
  175. package/dist/4-page/ds-layout.js +651 -162
  176. package/dist/4-page/styles/ds-container.css +35 -0
  177. package/dist/4-page/styles/ds-grid.css +56 -0
  178. package/dist/4-page/styles/ds-layout.css +251 -0
  179. package/dist/ds-one.bundle.css +700 -0
  180. package/dist/ds-one.bundle.css.map +7 -0
  181. package/dist/ds-one.bundle.js +2728 -1597
  182. package/dist/ds-one.bundle.js.map +1 -7
  183. package/dist/ds-one.bundle.min.css +2 -0
  184. package/dist/ds-one.bundle.min.css.map +7 -0
  185. package/dist/ds-one.bundle.min.js +3850 -546
  186. package/dist/ds-one.bundle.min.js.map +1 -7
  187. package/dist/index.d.ts +9 -1
  188. package/dist/index.d.ts.map +1 -1
  189. package/dist/index.js +9 -1
  190. package/package.json +4 -3
  191. package/dist/3-unit/doublenav-v1.d.ts +0 -51
  192. package/dist/3-unit/doublenav-v1.d.ts.map +0 -1
  193. package/dist/3-unit/doublenav-v1.js +0 -88
  194. package/dist/3-unit/ds-portfolio-doublenav.d.ts +0 -51
  195. package/dist/3-unit/ds-portfolio-doublenav.d.ts.map +0 -1
  196. package/dist/3-unit/ds-portfolio-doublenav.js +0 -88
  197. package/dist/3-unit/ds-portfolio-panel.d.ts +0 -11
  198. package/dist/3-unit/ds-portfolio-panel.d.ts.map +0 -1
  199. package/dist/3-unit/ds-portfolio-panel.js +0 -16
  200. package/dist/3-unit/ds-portfolio-singlenav.d.ts +0 -32
  201. package/dist/3-unit/ds-portfolio-singlenav.d.ts.map +0 -1
  202. package/dist/3-unit/ds-portfolio-singlenav.js +0 -62
  203. package/dist/3-unit/list-v1.d.ts +0 -11
  204. package/dist/3-unit/list-v1.d.ts.map +0 -1
  205. package/dist/3-unit/list-v1.js +0 -15
  206. package/dist/3-unit/panel-v1.d.ts +0 -11
  207. package/dist/3-unit/panel-v1.d.ts.map +0 -1
  208. package/dist/3-unit/panel-v1.js +0 -16
  209. package/dist/3-unit/row-v1.d.ts.map +0 -1
  210. package/dist/3-unit/row-v1.js +0 -32
  211. package/dist/3-unit/singlenav-v1.d.ts +0 -32
  212. package/dist/3-unit/singlenav-v1.d.ts.map +0 -1
  213. package/dist/3-unit/singlenav-v1.js +0 -62
@@ -1,9 +1,10 @@
1
- import { LitElement, html, css } from "lit";
2
- import { translate, getNotionText } from "../0-face/i18n";
1
+ import { LitElement, html, unsafeCSS } from "lit";
2
+ import { translate } from "../0-face/i18n";
3
+ import styles from "./styles/ds-tooltip.css?inline";
3
4
  export class Tooltip extends LitElement {
4
5
  constructor() {
5
6
  super();
6
- this.key = "";
7
+ this.text = "";
7
8
  this.defaultValue = "";
8
9
  this._text = "";
9
10
  this._visible = false;
@@ -54,29 +55,23 @@ export class Tooltip extends LitElement {
54
55
  this.removeEventListener("focusout", this.boundHostHandlers.focusout);
55
56
  }
56
57
  updated(changed) {
57
- if (changed.has("key") || changed.has("defaultValue")) {
58
+ if (changed.has("text") || changed.has("defaultValue")) {
58
59
  this._loadText();
59
60
  }
60
61
  }
61
- async _loadText() {
62
- if (!this.key) {
62
+ _loadText() {
63
+ if (!this.text) {
63
64
  this._text = this.defaultValue || "";
64
65
  this.requestUpdate();
65
66
  return;
66
67
  }
67
68
  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;
69
+ const t = translate(this.text);
70
+ this._text = t && t !== this.text ? t : this.defaultValue || this.text;
76
71
  }
77
72
  catch (err) {
78
- console.error("ds-tooltip: error loading text for key", this.key, err);
79
- this._text = this.defaultValue || this.key;
73
+ console.error("ds-tooltip: error loading text for text", this.text, err);
74
+ this._text = this.defaultValue || this.text;
80
75
  }
81
76
  this.requestUpdate();
82
77
  }
@@ -91,57 +86,10 @@ export class Tooltip extends LitElement {
91
86
  }
92
87
  }
93
88
  Tooltip.properties = {
94
- key: { type: String, reflect: true },
89
+ text: { type: String, reflect: true },
95
90
  defaultValue: { type: String, reflect: true, attribute: "default-value" },
96
91
  _text: { state: true },
97
92
  _visible: { state: true },
98
93
  };
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(--sf)));
118
- z-index: 1000;
119
- pointer-events: none;
120
- height: calc(var(--08) * var(--sf));
121
- opacity: 0;
122
- transition:
123
- opacity 120ms ease,
124
- transform 120ms ease;
125
- background-color: light-dark(var(--black), var(--white));
126
- color: light-dark(var(--white), var(--black));
127
- border-radius: 0;
128
- font-size: var(--type-size-default);
129
- padding: 0px calc(1px * var(--sf));
130
- font-family: var(
131
- --typeface,
132
- -apple-system,
133
- BlinkMacSystemFont,
134
- "Segoe UI",
135
- Roboto,
136
- sans-serif
137
- );
138
- font-weight: 500;
139
- white-space: nowrap;
140
- min-width: max-content;
141
- }
142
-
143
- .bubble.visible {
144
- opacity: 1;
145
- }
146
- `;
94
+ Tooltip.styles = unsafeCSS(styles);
147
95
  customElements.define("ds-tooltip", Tooltip);
@@ -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,9 @@
1
+ /* ds-date.css */
2
+ /* Date component styles for displaying the current year */
3
+
4
+ :host {
5
+ display: inline;
6
+ font-family: var(--typeface-regular, var(--typeface-regular-regular));
7
+ font-size: inherit;
8
+ color: inherit;
9
+ }
@@ -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);