ds-one 0.2.0-alpha.3 → 0.2.5-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/DS1/0-face/{2025-04-23-device.ts → device.ts} +10 -6
  2. package/DS1/{utils/language.ts → 0-face/i18n.ts} +236 -92
  3. package/DS1/0-face/preferences.ts +23 -0
  4. package/DS1/0-face/pricing.ts +57 -0
  5. package/DS1/1-root/fonts/Iosevka-Regular.woff2 +0 -0
  6. package/DS1/1-root/one.css +76 -107
  7. package/DS1/2-core/ds-banner.ts +3 -0
  8. package/DS1/2-core/ds-button.ts +13 -16
  9. package/DS1/2-core/ds-cycle.ts +84 -39
  10. package/DS1/2-core/{ds-year.ts → ds-date.ts} +5 -6
  11. package/DS1/2-core/ds-icon.ts +4 -4
  12. package/DS1/2-core/ds-input.ts +1 -0
  13. package/DS1/2-core/ds-text.ts +27 -3
  14. package/DS1/2-core/ds-tooltip.ts +9 -14
  15. package/DS1/3-unit/ds-list.ts +7 -0
  16. package/DS1/3-unit/ds-row.ts +4 -5
  17. package/DS1/3-unit/ds-table.ts +5 -6
  18. package/DS1/4-page/ds-grid.ts +9 -59
  19. package/DS1/4-page/ds-layout.ts +123 -18
  20. package/DS1/index.ts +39 -37
  21. package/LICENSE +1 -1
  22. package/README.md +43 -133
  23. package/dist/0-face/{2025-04-23-device.d.ts → device.d.ts} +1 -1
  24. package/dist/0-face/device.d.ts.map +1 -0
  25. package/dist/0-face/{2025-04-23-device.js → device.js} +7 -3
  26. package/dist/{utils/language.d.ts → 0-face/i18n.d.ts} +1 -3
  27. package/dist/0-face/i18n.d.ts.map +1 -0
  28. package/dist/{utils/language.js → 0-face/i18n.js} +178 -76
  29. package/dist/0-face/preferences.d.ts +9 -0
  30. package/dist/0-face/preferences.d.ts.map +1 -0
  31. package/dist/0-face/preferences.js +14 -0
  32. package/dist/0-face/pricing.d.ts +15 -0
  33. package/dist/0-face/pricing.d.ts.map +1 -0
  34. package/dist/0-face/pricing.js +46 -0
  35. package/dist/0-face/theme.d.ts.map +1 -0
  36. package/dist/2-core/ds-banner.d.ts +1 -0
  37. package/dist/2-core/ds-banner.d.ts.map +1 -0
  38. package/dist/2-core/ds-banner.js +2 -0
  39. package/dist/2-core/ds-button.d.ts +2 -7
  40. package/dist/2-core/ds-button.d.ts.map +1 -1
  41. package/dist/2-core/ds-button.js +12 -14
  42. package/dist/2-core/ds-cycle.d.ts +2 -0
  43. package/dist/2-core/ds-cycle.d.ts.map +1 -1
  44. package/dist/2-core/ds-cycle.js +80 -34
  45. package/dist/2-core/{ds-year.d.ts → ds-date.d.ts} +4 -4
  46. package/dist/2-core/ds-date.d.ts.map +1 -0
  47. package/dist/2-core/{ds-year.js → ds-date.js} +5 -5
  48. package/dist/2-core/ds-icon.js +4 -4
  49. package/dist/2-core/ds-input.d.ts +1 -0
  50. package/dist/2-core/ds-input.d.ts.map +1 -0
  51. package/dist/2-core/ds-input.js +1 -0
  52. package/dist/2-core/ds-text.d.ts +2 -0
  53. package/dist/2-core/ds-text.d.ts.map +1 -1
  54. package/dist/2-core/ds-text.js +26 -3
  55. package/dist/2-core/ds-tooltip.d.ts +1 -1
  56. package/dist/2-core/ds-tooltip.d.ts.map +1 -1
  57. package/dist/2-core/ds-tooltip.js +9 -13
  58. package/dist/3-unit/ds-list.d.ts.map +1 -1
  59. package/dist/3-unit/ds-list.js +3 -0
  60. package/dist/3-unit/{ds-doublenav.d.ts → ds-portfolio-doublenav.d.ts} +4 -4
  61. package/dist/3-unit/ds-portfolio-doublenav.d.ts.map +1 -0
  62. package/dist/3-unit/{ds-doublenav.js → ds-portfolio-doublenav.js} +4 -4
  63. package/dist/3-unit/{ds-panel.d.ts → ds-portfolio-panel.d.ts} +3 -3
  64. package/dist/3-unit/ds-portfolio-panel.d.ts.map +1 -0
  65. package/dist/3-unit/{ds-panel.js → ds-portfolio-panel.js} +3 -3
  66. package/dist/3-unit/{ds-singlenav.d.ts → ds-portfolio-singlenav.d.ts} +4 -4
  67. package/dist/3-unit/ds-portfolio-singlenav.d.ts.map +1 -0
  68. package/dist/3-unit/{ds-singlenav.js → ds-portfolio-singlenav.js} +7 -7
  69. package/dist/3-unit/ds-row.js +4 -4
  70. package/dist/3-unit/ds-table.d.ts.map +1 -1
  71. package/dist/3-unit/ds-table.js +5 -6
  72. package/dist/4-page/ds-grid.d.ts +0 -7
  73. package/dist/4-page/ds-grid.d.ts.map +1 -1
  74. package/dist/4-page/ds-grid.js +9 -54
  75. package/dist/4-page/ds-layout.d.ts +1 -1
  76. package/dist/4-page/ds-layout.d.ts.map +1 -1
  77. package/dist/4-page/ds-layout.js +126 -17
  78. package/dist/ds-one.bundle.js +2515 -4132
  79. package/dist/ds-one.bundle.js.map +4 -4
  80. package/dist/ds-one.bundle.min.js +245 -787
  81. package/dist/ds-one.bundle.min.js.map +4 -4
  82. package/dist/index.d.ts +16 -26
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +32 -34
  85. package/package.json +8 -9
  86. package/DS1/0-face/2025-04-23-language.ts +0 -4
  87. package/DS1/2-core/ds-article.ts +0 -454
  88. package/DS1/2-core/ds-attributes.ts +0 -155
  89. package/DS1/2-core/ds-downloadcv.ts +0 -146
  90. package/DS1/2-core/ds-header.ts +0 -82
  91. package/DS1/2-core/ds-home.ts +0 -168
  92. package/DS1/2-core/ds-link.ts +0 -121
  93. package/DS1/2-core/ds-markdown.ts +0 -252
  94. package/DS1/2-core/ds-price.ts +0 -108
  95. package/DS1/2-core/ds-squarecircle.ts +0 -155
  96. package/DS1/2-core/ds-title.ts +0 -139
  97. package/DS1/2-core/ds-viewtoggle.ts +0 -83
  98. package/DS1/3-unit/ds-doublenav.ts +0 -106
  99. package/DS1/3-unit/ds-panel.ts +0 -27
  100. package/DS1/3-unit/ds-singlenav.ts +0 -79
  101. package/DS1/utils/cdn-loader.ts +0 -208
  102. package/DS1/utils/keys.json +0 -41
  103. package/DS1/utils/pricing.ts +0 -24
  104. package/DS1/utils/scroll.ts +0 -184
  105. package/DS1/utils/settings.ts +0 -23
  106. package/DS1/utils/viewMode.ts +0 -55
  107. package/dist/0-face/2025-04-23-device.d.ts.map +0 -1
  108. package/dist/0-face/2025-04-23-language.d.ts +0 -1
  109. package/dist/0-face/2025-04-23-language.d.ts.map +0 -1
  110. package/dist/0-face/2025-04-23-language.js +0 -3
  111. package/dist/2-core/article-v1.d.ts +0 -129
  112. package/dist/2-core/article-v1.d.ts.map +0 -1
  113. package/dist/2-core/article-v1.js +0 -361
  114. package/dist/2-core/attributes-v1.d.ts +0 -47
  115. package/dist/2-core/attributes-v1.d.ts.map +0 -1
  116. package/dist/2-core/attributes-v1.js +0 -128
  117. package/dist/2-core/cycle-v1.d.ts +0 -66
  118. package/dist/2-core/cycle-v1.d.ts.map +0 -1
  119. package/dist/2-core/cycle-v1.js +0 -586
  120. package/dist/2-core/downloadcv-v1.d.ts +0 -58
  121. package/dist/2-core/downloadcv-v1.d.ts.map +0 -1
  122. package/dist/2-core/downloadcv-v1.js +0 -119
  123. package/dist/2-core/ds-article.d.ts +0 -129
  124. package/dist/2-core/ds-article.d.ts.map +0 -1
  125. package/dist/2-core/ds-article.js +0 -361
  126. package/dist/2-core/ds-attributes.d.ts +0 -47
  127. package/dist/2-core/ds-attributes.d.ts.map +0 -1
  128. package/dist/2-core/ds-attributes.js +0 -128
  129. package/dist/2-core/ds-button.figma.d.ts +0 -2
  130. package/dist/2-core/ds-button.figma.d.ts.map +0 -1
  131. package/dist/2-core/ds-button.figma.js +0 -6
  132. package/dist/2-core/ds-downloadcv.d.ts +0 -58
  133. package/dist/2-core/ds-downloadcv.d.ts.map +0 -1
  134. package/dist/2-core/ds-downloadcv.js +0 -119
  135. package/dist/2-core/ds-header.d.ts +0 -28
  136. package/dist/2-core/ds-header.d.ts.map +0 -1
  137. package/dist/2-core/ds-header.js +0 -66
  138. package/dist/2-core/ds-home.d.ts +0 -26
  139. package/dist/2-core/ds-home.d.ts.map +0 -1
  140. package/dist/2-core/ds-home.js +0 -148
  141. package/dist/2-core/ds-link.d.ts +0 -35
  142. package/dist/2-core/ds-link.d.ts.map +0 -1
  143. package/dist/2-core/ds-link.js +0 -85
  144. package/dist/2-core/ds-markdown.d.ts +0 -7
  145. package/dist/2-core/ds-markdown.d.ts.map +0 -1
  146. package/dist/2-core/ds-markdown.js +0 -240
  147. package/dist/2-core/ds-price.d.ts +0 -46
  148. package/dist/2-core/ds-price.d.ts.map +0 -1
  149. package/dist/2-core/ds-price.js +0 -72
  150. package/dist/2-core/ds-squarecircle.d.ts +0 -50
  151. package/dist/2-core/ds-squarecircle.d.ts.map +0 -1
  152. package/dist/2-core/ds-squarecircle.js +0 -133
  153. package/dist/2-core/ds-title.d.ts +0 -50
  154. package/dist/2-core/ds-title.d.ts.map +0 -1
  155. package/dist/2-core/ds-title.js +0 -103
  156. package/dist/2-core/ds-viewtoggle.d.ts +0 -27
  157. package/dist/2-core/ds-viewtoggle.d.ts.map +0 -1
  158. package/dist/2-core/ds-viewtoggle.js +0 -49
  159. package/dist/2-core/ds-year.d.ts.map +0 -1
  160. package/dist/2-core/header-v1.d.ts +0 -28
  161. package/dist/2-core/header-v1.d.ts.map +0 -1
  162. package/dist/2-core/header-v1.js +0 -66
  163. package/dist/2-core/home-v1.d.ts +0 -26
  164. package/dist/2-core/home-v1.d.ts.map +0 -1
  165. package/dist/2-core/home-v1.js +0 -148
  166. package/dist/2-core/icon-v1.d.ts +0 -28
  167. package/dist/2-core/icon-v1.d.ts.map +0 -1
  168. package/dist/2-core/icon-v1.js +0 -297
  169. package/dist/2-core/link-v1.d.ts +0 -35
  170. package/dist/2-core/link-v1.d.ts.map +0 -1
  171. package/dist/2-core/link-v1.js +0 -85
  172. package/dist/2-core/markdown-v1.d.ts +0 -7
  173. package/dist/2-core/markdown-v1.d.ts.map +0 -1
  174. package/dist/2-core/markdown-v1.js +0 -240
  175. package/dist/2-core/price-v1.d.ts +0 -46
  176. package/dist/2-core/price-v1.d.ts.map +0 -1
  177. package/dist/2-core/price-v1.js +0 -72
  178. package/dist/2-core/squarecircle-v1.d.ts +0 -50
  179. package/dist/2-core/squarecircle-v1.d.ts.map +0 -1
  180. package/dist/2-core/squarecircle-v1.js +0 -133
  181. package/dist/2-core/text-v1.d.ts +0 -48
  182. package/dist/2-core/text-v1.d.ts.map +0 -1
  183. package/dist/2-core/text-v1.js +0 -83
  184. package/dist/2-core/title-v1.d.ts +0 -50
  185. package/dist/2-core/title-v1.d.ts.map +0 -1
  186. package/dist/2-core/title-v1.js +0 -103
  187. package/dist/2-core/tooltip-v1.d.ts +0 -39
  188. package/dist/2-core/tooltip-v1.d.ts.map +0 -1
  189. package/dist/2-core/tooltip-v1.js +0 -145
  190. package/dist/2-core/viewtoggle-v1.d.ts +0 -27
  191. package/dist/2-core/viewtoggle-v1.d.ts.map +0 -1
  192. package/dist/2-core/viewtoggle-v1.js +0 -49
  193. package/dist/2-core/year-v1.d.ts +0 -16
  194. package/dist/2-core/year-v1.d.ts.map +0 -1
  195. package/dist/2-core/year-v1.js +0 -21
  196. package/dist/3-unit/ds-doublenav.d.ts.map +0 -1
  197. package/dist/3-unit/ds-panel.d.ts.map +0 -1
  198. package/dist/3-unit/ds-singlenav.d.ts.map +0 -1
  199. package/dist/utils/cdn-loader.d.ts +0 -19
  200. package/dist/utils/cdn-loader.d.ts.map +0 -1
  201. package/dist/utils/cdn-loader.js +0 -142
  202. package/dist/utils/keys.json +0 -41
  203. package/dist/utils/language.d.ts.map +0 -1
  204. package/dist/utils/pricing.d.ts +0 -8
  205. package/dist/utils/pricing.d.ts.map +0 -1
  206. package/dist/utils/pricing.js +0 -14
  207. package/dist/utils/scroll.d.ts +0 -34
  208. package/dist/utils/scroll.d.ts.map +0 -1
  209. package/dist/utils/scroll.js +0 -140
  210. package/dist/utils/settings.d.ts +0 -9
  211. package/dist/utils/settings.d.ts.map +0 -1
  212. package/dist/utils/settings.js +0 -14
  213. package/dist/utils/theme.d.ts.map +0 -1
  214. package/dist/utils/viewMode.d.ts +0 -14
  215. package/dist/utils/viewMode.d.ts.map +0 -1
  216. package/dist/utils/viewMode.js +0 -46
  217. /package/DS1/{utils → 0-face}/theme.ts +0 -0
  218. /package/DS1/{x Icon → x-icon}/1x.svg +0 -0
  219. /package/DS1/{x Icon → x-icon}/1xdots.svg +0 -0
  220. /package/DS1/{x Icon → x-icon}/1xgrid.svg +0 -0
  221. /package/DS1/{x Icon → x-icon}/1xlines.svg +0 -0
  222. /package/DS1/{x Icon → x-icon}/2x.svg +0 -0
  223. /package/DS1/{x Icon → x-icon}/2xdots.svg +0 -0
  224. /package/DS1/{x Icon → x-icon}/2xgrid.svg +0 -0
  225. /package/DS1/{x Icon → x-icon}/2xlines.svg +0 -0
  226. /package/DS1/{x Icon → x-icon}/big.svg +0 -0
  227. /package/DS1/{x Icon → x-icon}/blank.svg +0 -0
  228. /package/DS1/{x Icon → x-icon}/check.svg +0 -0
  229. /package/DS1/{x Icon → x-icon}/close.svg +0 -0
  230. /package/DS1/{x Icon → x-icon}/collapse.svg +0 -0
  231. /package/DS1/{x Icon → x-icon}/color.svg +0 -0
  232. /package/DS1/{x Icon → x-icon}/column.svg +0 -0
  233. /package/DS1/{x Icon → x-icon}/default.svg +0 -0
  234. /package/DS1/{x Icon → x-icon}/delete.svg +0 -0
  235. /package/DS1/{x Icon → x-icon}/do.svg +0 -0
  236. /package/DS1/{x Icon → x-icon}/down.svg +0 -0
  237. /package/DS1/{x Icon → x-icon}/duplicate.svg +0 -0
  238. /package/DS1/{x Icon → x-icon}/email.svg +0 -0
  239. /package/DS1/{x Icon → x-icon}/expand.svg +0 -0
  240. /package/DS1/{x Icon → x-icon}/gallery.svg +0 -0
  241. /package/DS1/{x Icon → x-icon}/group.svg +0 -0
  242. /package/DS1/{x Icon → x-icon}/head.svg +0 -0
  243. /package/DS1/{x Icon → x-icon}/icon.svg +0 -0
  244. /package/DS1/{x Icon → x-icon}/left.svg +0 -0
  245. /package/DS1/{x Icon → x-icon}/lock.svg +0 -0
  246. /package/DS1/{x Icon → x-icon}/mic.svg +0 -0
  247. /package/DS1/{x Icon → x-icon}/minimize.svg +0 -0
  248. /package/DS1/{x Icon → x-icon}/more.svg +0 -0
  249. /package/DS1/{x Icon → x-icon}/note.svg +0 -0
  250. /package/DS1/{x Icon → x-icon}/open.svg +0 -0
  251. /package/DS1/{x Icon → x-icon}/page.svg +0 -0
  252. /package/DS1/{x Icon → x-icon}/plus.svg +0 -0
  253. /package/DS1/{x Icon → x-icon}/rewind.svg +0 -0
  254. /package/DS1/{x Icon → x-icon}/right.svg +0 -0
  255. /package/DS1/{x Icon/row..svg → x-icon/row.svg} +0 -0
  256. /package/DS1/{x Icon → x-icon}/search.svg +0 -0
  257. /package/DS1/{x Icon → x-icon}/see.svg +0 -0
  258. /package/DS1/{x Icon → x-icon}/star.svg +0 -0
  259. /package/DS1/{x Icon → x-icon}/title.svg +0 -0
  260. /package/DS1/{x Icon → x-icon}/undo.svg +0 -0
  261. /package/DS1/{x Icon → x-icon}/ungroup.svg +0 -0
  262. /package/DS1/{x Icon → x-icon}/unhead.svg +0 -0
  263. /package/DS1/{x Icon → x-icon}/unicon.svg +0 -0
  264. /package/DS1/{x Icon → x-icon}/unlock.svg +0 -0
  265. /package/DS1/{x Icon → x-icon}/unmic.svg +0 -0
  266. /package/DS1/{x Icon → x-icon}/unsee.svg +0 -0
  267. /package/DS1/{x Icon → x-icon}/unstar.svg +0 -0
  268. /package/DS1/{x Icon → x-icon}/untitle.svg +0 -0
  269. /package/DS1/{x Icon → x-icon}/up.svg +0 -0
  270. /package/dist/{utils → 0-face}/theme.d.ts +0 -0
  271. /package/dist/{utils → 0-face}/theme.js +0 -0
@@ -1,184 +0,0 @@
1
- // scroll.ts
2
- // Scroll position utilities for carrying scroll position across page navigations
3
-
4
- export type ScrollPosition = {
5
- x: number;
6
- y: number;
7
- };
8
-
9
- const SCROLL_POSITION_KEY = "ds-scroll-position";
10
-
11
- /**
12
- * Save the current scroll position
13
- */
14
- export function saveScrollPosition(): void {
15
- if (typeof window === "undefined") {
16
- return;
17
- }
18
-
19
- try {
20
- const position: ScrollPosition = {
21
- x: window.scrollX,
22
- y: window.scrollY,
23
- };
24
-
25
- sessionStorage.setItem(SCROLL_POSITION_KEY, JSON.stringify(position));
26
- } catch (error) {
27
- console.warn("[DS one] Failed to save scroll position:", error);
28
- }
29
- }
30
-
31
- /**
32
- * Get the saved scroll position
33
- */
34
- export function getScrollPosition(): ScrollPosition | null {
35
- if (typeof window === "undefined") {
36
- return null;
37
- }
38
-
39
- try {
40
- const stored = sessionStorage.getItem(SCROLL_POSITION_KEY);
41
-
42
- if (!stored) {
43
- return null;
44
- }
45
-
46
- const position = JSON.parse(stored) as ScrollPosition;
47
-
48
- // Validate the parsed data
49
- if (
50
- typeof position.x === "number" &&
51
- typeof position.y === "number" &&
52
- !isNaN(position.x) &&
53
- !isNaN(position.y)
54
- ) {
55
- return position;
56
- }
57
-
58
- return null;
59
- } catch (error) {
60
- console.warn("[DS one] Failed to retrieve scroll position:", error);
61
- return null;
62
- }
63
- }
64
-
65
- /**
66
- * Restore the saved scroll position
67
- */
68
- export function restoreScrollPosition(
69
- options: { smooth?: boolean; clear?: boolean } = {}
70
- ): boolean {
71
- if (typeof window === "undefined") {
72
- return false;
73
- }
74
-
75
- const position = getScrollPosition();
76
-
77
- if (!position) {
78
- return false;
79
- }
80
-
81
- try {
82
- // Use requestAnimationFrame to ensure DOM is ready
83
- requestAnimationFrame(() => {
84
- window.scrollTo({
85
- left: position.x,
86
- top: position.y,
87
- behavior: options.smooth ? "smooth" : "instant",
88
- });
89
-
90
- // Optionally clear the saved position after restoring
91
- if (options.clear) {
92
- clearScrollPosition();
93
- }
94
-
95
- // Dispatch custom event
96
- window.dispatchEvent(
97
- new CustomEvent("scroll-restored", {
98
- detail: position,
99
- })
100
- );
101
- });
102
-
103
- return true;
104
- } catch (error) {
105
- console.warn("[DS one] Failed to restore scroll position:", error);
106
- return false;
107
- }
108
- }
109
-
110
- /**
111
- * Clear the saved scroll position
112
- */
113
- export function clearScrollPosition(): void {
114
- if (typeof window === "undefined") {
115
- return;
116
- }
117
-
118
- try {
119
- sessionStorage.removeItem(SCROLL_POSITION_KEY);
120
- } catch (error) {
121
- console.warn("[DS one] Failed to clear scroll position:", error);
122
- }
123
- }
124
-
125
- /**
126
- * Initialize scroll position management
127
- * Call this once to set up automatic save/restore behavior
128
- */
129
- export function initScrollManagement(
130
- options: {
131
- autoSave?: boolean;
132
- autoRestore?: boolean;
133
- smooth?: boolean;
134
- clearOnRestore?: boolean;
135
- } = {}
136
- ): void {
137
- if (typeof window === "undefined") {
138
- return;
139
- }
140
-
141
- const {
142
- autoSave = true,
143
- autoRestore = true,
144
- smooth = false,
145
- clearOnRestore = false,
146
- } = options;
147
-
148
- // Auto-save scroll position before leaving the page
149
- if (autoSave) {
150
- window.addEventListener("beforeunload", () => {
151
- saveScrollPosition();
152
- });
153
-
154
- // Also save on history state changes (for SPAs)
155
- window.addEventListener("pagehide", () => {
156
- saveScrollPosition();
157
- });
158
- }
159
-
160
- // Auto-restore scroll position when page loads
161
- if (autoRestore) {
162
- const restore = () => {
163
- restoreScrollPosition({ smooth, clear: clearOnRestore });
164
- };
165
-
166
- if (document.readyState === "loading") {
167
- // Wait for DOM to be ready
168
- document.addEventListener("DOMContentLoaded", restore);
169
- } else {
170
- // DOM is already ready
171
- restore();
172
- }
173
- }
174
- }
175
-
176
- // Auto-initialize scroll management when module loads
177
- if (typeof window !== "undefined") {
178
- initScrollManagement({
179
- autoSave: true,
180
- autoRestore: true,
181
- smooth: false,
182
- clearOnRestore: false,
183
- });
184
- }
@@ -1,23 +0,0 @@
1
- import type { LanguageCode } from "./language";
2
- import type { ThemeType } from "./theme";
3
-
4
- export type Settings = {
5
- language?: LanguageCode;
6
- theme?: ThemeType;
7
- [key: string]: unknown;
8
- };
9
-
10
- export function saveSettings(settings: Settings): void {
11
- if (typeof window === "undefined") {
12
- return;
13
- }
14
-
15
- try {
16
- const raw = window.localStorage?.getItem("ds-one:settings");
17
- const existing = raw ? (JSON.parse(raw) as Record<string, unknown>) : {};
18
- const next = { ...existing, ...settings };
19
- window.localStorage?.setItem("ds-one:settings", JSON.stringify(next));
20
- } catch (error) {
21
- console.warn("ds-one: unable to persist settings", error);
22
- }
23
- }
@@ -1,55 +0,0 @@
1
- // viewMode.ts
2
- // View mode utilities for managing text/image view states
3
-
4
- export type ViewMode = "text" | "image";
5
-
6
- const VIEW_MODE_KEY = "ds-view-mode";
7
- const DEFAULT_VIEW_MODE: ViewMode = "text";
8
-
9
- /**
10
- * Get the current view mode from localStorage or return default
11
- */
12
- export function getViewMode(): ViewMode {
13
- if (typeof window === "undefined") {
14
- return DEFAULT_VIEW_MODE;
15
- }
16
-
17
- try {
18
- const stored = localStorage.getItem(VIEW_MODE_KEY);
19
- return stored === "image" || stored === "text" ? stored : DEFAULT_VIEW_MODE;
20
- } catch {
21
- return DEFAULT_VIEW_MODE;
22
- }
23
- }
24
-
25
- /**
26
- * Set the view mode in localStorage and dispatch change event
27
- */
28
- export function setViewMode(mode: ViewMode): void {
29
- if (typeof window === "undefined") {
30
- return;
31
- }
32
-
33
- try {
34
- localStorage.setItem(VIEW_MODE_KEY, mode);
35
-
36
- // Dispatch custom event for components to listen to
37
- window.dispatchEvent(
38
- new CustomEvent("view-mode-changed", {
39
- detail: mode,
40
- })
41
- );
42
- } catch (error) {
43
- console.warn("Failed to save view mode:", error);
44
- }
45
- }
46
-
47
- /**
48
- * Toggle between text and image view modes
49
- */
50
- export function toggleViewMode(): ViewMode {
51
- const currentMode = getViewMode();
52
- const newMode = currentMode === "text" ? "image" : "text";
53
- setViewMode(newMode);
54
- return newMode;
55
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"2025-04-23-device.d.ts","sourceRoot":"","sources":["../../DS1/0-face/2025-04-23-device.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CA0B5C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,CA6B1C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,UAAU,CA8ChD"}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=2025-04-23-language.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"2025-04-23-language.d.ts","sourceRoot":"","sources":["../../DS1/0-face/2025-04-23-language.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- // 2025-04-23-language.ts
2
- // Language detection and internationalization utilities
3
- // TODO: Implement language detection utilities
@@ -1,129 +0,0 @@
1
- import { LitElement } from "lit";
2
- /**
3
- * A component for displaying article content with image/text toggle
4
- *
5
- * @element article-v1
6
- */
7
- export declare class Article extends LitElement {
8
- static get properties(): {
9
- imgLightDesktop: {
10
- type: StringConstructor;
11
- reflect: boolean;
12
- attribute: string;
13
- };
14
- imgDarkDesktop: {
15
- type: StringConstructor;
16
- reflect: boolean;
17
- attribute: string;
18
- };
19
- imgLightMobile: {
20
- type: StringConstructor;
21
- reflect: boolean;
22
- attribute: string;
23
- };
24
- imgDarkMobile: {
25
- type: StringConstructor;
26
- reflect: boolean;
27
- attribute: string;
28
- };
29
- src: {
30
- type: StringConstructor;
31
- reflect: boolean;
32
- };
33
- alt: {
34
- type: StringConstructor;
35
- reflect: boolean;
36
- };
37
- imageToggle: {
38
- type: BooleanConstructor;
39
- reflect: boolean;
40
- attribute: string;
41
- };
42
- imageOnlyWidth: {
43
- type: NumberConstructor;
44
- reflect: boolean;
45
- attribute: string;
46
- };
47
- priority: {
48
- type: BooleanConstructor;
49
- reflect: boolean;
50
- };
51
- externalToggle: {
52
- type: BooleanConstructor;
53
- reflect: boolean;
54
- attribute: string;
55
- };
56
- mobileKey: {
57
- type: StringConstructor;
58
- reflect: boolean;
59
- attribute: string;
60
- };
61
- desktopKey: {
62
- type: StringConstructor;
63
- reflect: boolean;
64
- attribute: string;
65
- };
66
- textKey: {
67
- type: StringConstructor;
68
- reflect: boolean;
69
- attribute: string;
70
- };
71
- defaultValue: {
72
- type: StringConstructor;
73
- reflect: boolean;
74
- attribute: string;
75
- };
76
- _text: {
77
- type: StringConstructor;
78
- state: boolean;
79
- };
80
- _currentImage: {
81
- type: StringConstructor;
82
- state: boolean;
83
- };
84
- _imageVisible: {
85
- type: BooleanConstructor;
86
- state: boolean;
87
- };
88
- _shouldAnimate: {
89
- type: BooleanConstructor;
90
- state: boolean;
91
- };
92
- };
93
- imgLightDesktop: string;
94
- imgDarkDesktop: string;
95
- imgLightMobile: string;
96
- imgDarkMobile: string;
97
- src: string;
98
- alt: string;
99
- imageToggle: boolean;
100
- imageOnlyWidth: number;
101
- priority: boolean;
102
- externalToggle: boolean;
103
- mobileKey: string;
104
- desktopKey: string;
105
- textKey: string;
106
- defaultValue: string;
107
- _text: string;
108
- _currentImage: string;
109
- _imageVisible: boolean;
110
- _shouldAnimate: boolean;
111
- private _mql;
112
- private boundHandlers;
113
- constructor();
114
- static styles: import("lit").CSSResult;
115
- updated(changed: Map<string, unknown>): void;
116
- connectedCallback(): void;
117
- disconnectedCallback(): void;
118
- private _loadText;
119
- private _resolveImage;
120
- private _toggleImage;
121
- private _handleImageLoad;
122
- render(): import("lit-html").TemplateResult<1>;
123
- }
124
- declare global {
125
- interface HTMLElementTagNameMap {
126
- "article-v1": Article;
127
- }
128
- }
129
- //# sourceMappingURL=article-v1.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"article-v1.d.ts","sourceRoot":"","sources":["../../DS1/2-core/article-v1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C;;;;GAIG;AACH,qBAAa,OAAQ,SAAQ,UAAU;IACrC,MAAM,KAAK,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6CpB;IAEO,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IAEhC,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,aAAa,CAKnB;;IAiDF,MAAM,CAAC,MAAM,0BAmEX;IAEF,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAkCrC,iBAAiB;IAuDjB,oBAAoB;IA+BpB,OAAO,CAAC,SAAS;IAsCjB,OAAO,CAAC,aAAa;IAwCrB,OAAO,CAAC,YAAY,CAIlB;IAEF,OAAO,CAAC,gBAAgB,CAGtB;IAEF,MAAM;CAmCP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,OAAO,CAAC;KACvB;CACF"}