@0001-labs/design-system-1 0.0.0-stage → 0.3.0-alpha.13

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 (699) hide show
  1. package/DS1/0-face/control.ts +99 -0
  2. package/DS1/0-face/define.ts +5 -0
  3. package/DS1/0-face/device.ts +414 -0
  4. package/DS1/0-face/grid-fit.ts +63 -0
  5. package/DS1/0-face/grid.ts +144 -0
  6. package/DS1/0-face/i18n.ts +1023 -0
  7. package/DS1/0-face/language-routing.ts +135 -0
  8. package/DS1/0-face/language-validator.ts +46 -0
  9. package/DS1/0-face/languages.ts +242 -0
  10. package/DS1/0-face/layout-inspector.ts +184 -0
  11. package/DS1/0-face/preferences.ts +39 -0
  12. package/DS1/0-face/pricing.ts +57 -0
  13. package/DS1/0-face/scaling.ts +25 -0
  14. package/DS1/0-face/shared-words.ts +45 -0
  15. package/DS1/0-face/theme.ts +58 -0
  16. package/DS1/0-face/tooltips.ts +82 -0
  17. package/DS1/0-face/translations/da.json +63 -0
  18. package/DS1/0-face/translations/de.json +63 -0
  19. package/DS1/0-face/translations/en.json +63 -0
  20. package/DS1/0-face/translations/es.json +63 -0
  21. package/DS1/0-face/translations/fi.json +63 -0
  22. package/DS1/0-face/translations/fr.json +63 -0
  23. package/DS1/0-face/translations/is.json +56 -0
  24. package/DS1/0-face/translations/it.json +63 -0
  25. package/DS1/0-face/translations/ja.json +63 -0
  26. package/DS1/0-face/translations/ko.json +63 -0
  27. package/DS1/0-face/translations/nb.json +63 -0
  28. package/DS1/0-face/translations/pt-BR.json +63 -0
  29. package/DS1/0-face/translations/pt.json +63 -0
  30. package/DS1/0-face/translations/sv.json +63 -0
  31. package/DS1/0-face/translations/zh.json +63 -0
  32. package/DS1/0-face/translations-format.ts +216 -0
  33. package/DS1/1-root/component-appearance.css +32 -0
  34. package/DS1/1-root/component-metrics.css +21 -0
  35. package/DS1/1-root/component-tokens.css +90 -0
  36. package/DS1/1-root/controls.css +261 -0
  37. package/DS1/1-root/fonts/GT-America-Compressed-Regular.woff2 +0 -0
  38. package/DS1/1-root/fonts/GT-America-Standard-Medium.woff2 +0 -0
  39. package/DS1/1-root/fonts/GT-America-Standard-Regular.woff2 +0 -0
  40. package/DS1/1-root/fonts/GT-Canon-M-Standard-Medium-Trial.woff2 +0 -0
  41. package/DS1/1-root/fonts/Inter-Arrows.woff2 +0 -0
  42. package/DS1/1-root/fonts/Inter-LICENSE.md +7 -0
  43. package/DS1/1-root/fonts/Iosevka-LICENSE.md +7 -0
  44. package/DS1/1-root/fonts/Iosevka-Regular.woff2 +0 -0
  45. package/DS1/1-root/grid.css +31 -0
  46. package/DS1/1-root/one.css +602 -0
  47. package/DS1/1-root/one.semantic.css +683 -0
  48. package/DS1/1-root/palette.ts +91 -0
  49. package/DS1/2-core/ds-avatar.ts +130 -0
  50. package/DS1/2-core/ds-badge.ts +77 -0
  51. package/DS1/2-core/ds-banner.ts +122 -0
  52. package/DS1/2-core/ds-button.ts +163 -0
  53. package/DS1/2-core/ds-card.ts +137 -0
  54. package/DS1/2-core/ds-checkbox.ts +14 -0
  55. package/DS1/2-core/ds-color.ts +32 -0
  56. package/DS1/2-core/ds-composer.ts +182 -0
  57. package/DS1/2-core/ds-cycle.ts +628 -0
  58. package/DS1/2-core/ds-date.ts +24 -0
  59. package/DS1/2-core/ds-file-picker.ts +83 -0
  60. package/DS1/2-core/ds-gap.ts +34 -0
  61. package/DS1/2-core/ds-icon.ts +161 -0
  62. package/DS1/2-core/ds-input.ts +518 -0
  63. package/DS1/2-core/ds-language.ts +94 -0
  64. package/DS1/2-core/ds-pagedots.ts +52 -0
  65. package/DS1/2-core/ds-radio.ts +25 -0
  66. package/DS1/2-core/ds-select.ts +44 -0
  67. package/DS1/2-core/ds-split.ts +122 -0
  68. package/DS1/2-core/ds-swatch.ts +20 -0
  69. package/DS1/2-core/ds-switch.ts +13 -0
  70. package/DS1/2-core/ds-text.ts +190 -0
  71. package/DS1/2-core/ds-textarea.ts +136 -0
  72. package/DS1/2-core/ds-token.ts +40 -0
  73. package/DS1/2-core/ds-tooltip.ts +115 -0
  74. package/DS1/2-core/generated/ds-icon-map.ts +583 -0
  75. package/DS1/2-core/generated/icons-extra.ts +243 -0
  76. package/DS1/2-core/generated/icons-immediate.ts +49 -0
  77. package/DS1/2-core/styles/ds-avatar.css +125 -0
  78. package/DS1/2-core/styles/ds-badge.css +26 -0
  79. package/DS1/2-core/styles/ds-banner.css +77 -0
  80. package/DS1/2-core/styles/ds-button-host.css +214 -0
  81. package/DS1/2-core/styles/ds-button.css +131 -0
  82. package/DS1/2-core/styles/ds-checkbox.css +48 -0
  83. package/DS1/2-core/styles/ds-color.css +24 -0
  84. package/DS1/2-core/styles/ds-composer-frame.css +11 -0
  85. package/DS1/2-core/styles/ds-composer.css +55 -0
  86. package/DS1/2-core/styles/ds-cycle.css +18 -0
  87. package/DS1/2-core/styles/ds-date.css +9 -0
  88. package/DS1/2-core/styles/ds-file-picker.css +66 -0
  89. package/DS1/2-core/styles/ds-gap.css +71 -0
  90. package/DS1/2-core/styles/ds-icon.css +44 -0
  91. package/DS1/2-core/styles/ds-input.css +233 -0
  92. package/DS1/2-core/styles/ds-language.css +78 -0
  93. package/DS1/2-core/styles/ds-pagedots.css +31 -0
  94. package/DS1/2-core/styles/ds-radio.css +83 -0
  95. package/DS1/2-core/styles/ds-select.css +95 -0
  96. package/DS1/2-core/styles/ds-split.css +62 -0
  97. package/DS1/2-core/styles/ds-switch.css +50 -0
  98. package/DS1/2-core/styles/ds-text.css +87 -0
  99. package/DS1/2-core/styles/ds-textarea.css +27 -0
  100. package/DS1/2-core/styles/ds-token.css +9 -0
  101. package/DS1/2-core/styles/ds-tooltip.css +37 -0
  102. package/DS1/3-unit/context-trigger.ts +104 -0
  103. package/DS1/3-unit/ds-accordion.ts +120 -0
  104. package/DS1/3-unit/ds-avatar-group.ts +99 -0
  105. package/DS1/3-unit/ds-form.ts +304 -0
  106. package/DS1/3-unit/ds-list.ts +36 -0
  107. package/DS1/3-unit/ds-menu.ts +482 -0
  108. package/DS1/3-unit/ds-row.ts +48 -0
  109. package/DS1/3-unit/ds-table.ts +68 -0
  110. package/DS1/3-unit/ds-tabs.ts +77 -0
  111. package/DS1/3-unit/ds-token-field.ts +127 -0
  112. package/DS1/3-unit/styles/context-trigger.css +6 -0
  113. package/DS1/3-unit/styles/ds-accordion.css +64 -0
  114. package/DS1/3-unit/styles/ds-avatar-group.css +51 -0
  115. package/DS1/3-unit/styles/ds-list.css +26 -0
  116. package/DS1/3-unit/styles/ds-menu.css +97 -0
  117. package/DS1/3-unit/styles/ds-row.css +37 -0
  118. package/DS1/3-unit/styles/ds-table.css +80 -0
  119. package/DS1/3-unit/styles/ds-tabs.css +44 -0
  120. package/DS1/3-unit/styles/ds-token-field.css +11 -0
  121. package/DS1/4-page/ds-container.ts +28 -0
  122. package/DS1/4-page/ds-dialog.ts +331 -0
  123. package/DS1/4-page/ds-grid.ts +74 -0
  124. package/DS1/4-page/ds-layout.ts +949 -0
  125. package/DS1/4-page/ds-panel.ts +38 -0
  126. package/DS1/4-page/email.ts +170 -0
  127. package/DS1/4-page/styles/ds-container.css +35 -0
  128. package/DS1/4-page/styles/ds-dialog.css +94 -0
  129. package/DS1/4-page/styles/ds-grid.css +95 -0
  130. package/DS1/4-page/styles/ds-layout.css +246 -0
  131. package/DS1/4-page/styles/ds-panel.css +31 -0
  132. package/DS1/components.ts +13 -0
  133. package/DS1/index.ts +86 -0
  134. package/DS1/react/accordion.ts +33 -0
  135. package/DS1/react/avatar-group.ts +11 -0
  136. package/DS1/react/avatar.ts +42 -0
  137. package/DS1/react/badge.ts +7 -0
  138. package/DS1/react/button.ts +63 -0
  139. package/DS1/react/choice.ts +64 -0
  140. package/DS1/react/composer.ts +18 -0
  141. package/DS1/react/context-menu.ts +167 -0
  142. package/DS1/react/dialog.ts +102 -0
  143. package/DS1/react/file-picker.ts +34 -0
  144. package/DS1/react/input.ts +184 -0
  145. package/DS1/react/menu.ts +28 -0
  146. package/DS1/react/split.ts +42 -0
  147. package/DS1/react/token-field.ts +32 -0
  148. package/DS1/vite-env.d.ts +13 -0
  149. package/DS1/x-icon/1x.svg +4 -0
  150. package/DS1/x-icon/1xdots.svg +11 -0
  151. package/DS1/x-icon/1xgrid.svg +8 -0
  152. package/DS1/x-icon/1xlines.svg +5 -0
  153. package/DS1/x-icon/2x.svg +4 -0
  154. package/DS1/x-icon/2xdots.svg +18 -0
  155. package/DS1/x-icon/2xgrid-alt-2.svg +9 -0
  156. package/DS1/x-icon/2xgrid-alt-3.svg +8 -0
  157. package/DS1/x-icon/2xgrid-alt.svg +15 -0
  158. package/DS1/x-icon/2xgrid.svg +6 -0
  159. package/DS1/x-icon/2xlines.svg +6 -0
  160. package/DS1/x-icon/4x4.svg +18 -0
  161. package/DS1/x-icon/app.svg +4 -0
  162. package/DS1/x-icon/apple.svg +3 -0
  163. package/DS1/x-icon/archive-alt.svg +4 -0
  164. package/DS1/x-icon/archive.svg +4 -0
  165. package/DS1/x-icon/arrange-archive.svg +1 -0
  166. package/DS1/x-icon/arrange-check.svg +1 -0
  167. package/DS1/x-icon/arrange-chevron.svg +1 -0
  168. package/DS1/x-icon/arrange-connect.svg +1 -0
  169. package/DS1/x-icon/arrange-draft.svg +1 -0
  170. package/DS1/x-icon/arrange-dropdown.svg +1 -0
  171. package/DS1/x-icon/arrange-home.svg +1 -0
  172. package/DS1/x-icon/arrange-link.svg +1 -0
  173. package/DS1/x-icon/arrange-menu.svg +1 -0
  174. package/DS1/x-icon/arrange-more.svg +1 -0
  175. package/DS1/x-icon/arrange-page.svg +1 -0
  176. package/DS1/x-icon/arrange-plus.svg +1 -0
  177. package/DS1/x-icon/arrange-site.svg +1 -0
  178. package/DS1/x-icon/avatar.svg +4 -0
  179. package/DS1/x-icon/badge-bands-3d.svg +1 -0
  180. package/DS1/x-icon/badge-bands.svg +1 -0
  181. package/DS1/x-icon/badge-blue-fan-3d.svg +1 -0
  182. package/DS1/x-icon/badge-blue-fan.svg +1 -0
  183. package/DS1/x-icon/badge-bricks-3d.svg +1 -0
  184. package/DS1/x-icon/badge-bricks.svg +1 -0
  185. package/DS1/x-icon/badge-broken-stripes-3d.svg +1 -0
  186. package/DS1/x-icon/badge-broken-stripes.svg +1 -0
  187. package/DS1/x-icon/badge-checker-3d.svg +1 -0
  188. package/DS1/x-icon/badge-checker.svg +1 -0
  189. package/DS1/x-icon/badge-diamond-3d.svg +1 -0
  190. package/DS1/x-icon/badge-diamond.svg +1 -0
  191. package/DS1/x-icon/badge-fan-3d.svg +1 -0
  192. package/DS1/x-icon/badge-fan-dark-3d.svg +1 -0
  193. package/DS1/x-icon/badge-fan-dark.svg +1 -0
  194. package/DS1/x-icon/badge-fan.svg +1 -0
  195. package/DS1/x-icon/badge-halves-3d.svg +1 -0
  196. package/DS1/x-icon/badge-halves-green-3d.svg +1 -0
  197. package/DS1/x-icon/badge-halves-green.svg +1 -0
  198. package/DS1/x-icon/badge-halves.svg +1 -0
  199. package/DS1/x-icon/badge-red-3d.svg +1 -0
  200. package/DS1/x-icon/badge-red-blue-bricks-3d.svg +1 -0
  201. package/DS1/x-icon/badge-red-blue-bricks.svg +1 -0
  202. package/DS1/x-icon/badge-red.svg +1 -0
  203. package/DS1/x-icon/badge-round-fan-3d.svg +1 -0
  204. package/DS1/x-icon/badge-round-fan.svg +1 -0
  205. package/DS1/x-icon/badge-shard-3d.svg +1 -0
  206. package/DS1/x-icon/badge-shard.svg +1 -0
  207. package/DS1/x-icon/badge-split-circle-3d.svg +1 -0
  208. package/DS1/x-icon/badge-split-circle.svg +1 -0
  209. package/DS1/x-icon/badge-tall-bricks-3d.svg +1 -0
  210. package/DS1/x-icon/badge-tall-bricks.svg +1 -0
  211. package/DS1/x-icon/badge-weave-3d.svg +1 -0
  212. package/DS1/x-icon/badge-weave.svg +1 -0
  213. package/DS1/x-icon/bag.svg +4 -0
  214. package/DS1/x-icon/block-accordion.svg +1 -0
  215. package/DS1/x-icon/block-banner.svg +1 -0
  216. package/DS1/x-icon/block-breadcrumbs.svg +1 -0
  217. package/DS1/x-icon/block-button.svg +1 -0
  218. package/DS1/x-icon/block-divider.svg +1 -0
  219. package/DS1/x-icon/block-forms.svg +1 -0
  220. package/DS1/x-icon/block-group.svg +1 -0
  221. package/DS1/x-icon/block-heading.svg +1 -0
  222. package/DS1/x-icon/block-image.svg +1 -0
  223. package/DS1/x-icon/block-logo-marquee.svg +1 -0
  224. package/DS1/x-icon/block-page-progress.svg +1 -0
  225. package/DS1/x-icon/block-section.svg +1 -0
  226. package/DS1/x-icon/block-table.svg +1 -0
  227. package/DS1/x-icon/block-tabs.svg +1 -0
  228. package/DS1/x-icon/block-text.svg +1 -0
  229. package/DS1/x-icon/bold.svg +3 -0
  230. package/DS1/x-icon/bullet.svg +5 -0
  231. package/DS1/x-icon/calendar.svg +6 -0
  232. package/DS1/x-icon/callout.svg +5 -0
  233. package/DS1/x-icon/camera.svg +5 -0
  234. package/DS1/x-icon/categories.svg +12 -0
  235. package/DS1/x-icon/check-alt.svg +3 -0
  236. package/DS1/x-icon/check.svg +3 -0
  237. package/DS1/x-icon/close.svg +3 -0
  238. package/DS1/x-icon/code-block.svg +4 -0
  239. package/DS1/x-icon/code.svg +3 -0
  240. package/DS1/x-icon/collapse.svg +3 -0
  241. package/DS1/x-icon/color.svg +4 -0
  242. package/DS1/x-icon/column.svg +3 -0
  243. package/DS1/x-icon/comment.svg +3 -0
  244. package/DS1/x-icon/compose.svg +4 -0
  245. package/DS1/x-icon/connect.svg +5 -0
  246. package/DS1/x-icon/content.svg +6 -0
  247. package/DS1/x-icon/default.svg +4 -0
  248. package/DS1/x-icon/delete.svg +5 -0
  249. package/DS1/x-icon/dictate.svg +6 -0
  250. package/DS1/x-icon/divider.svg +3 -0
  251. package/DS1/x-icon/down.svg +3 -0
  252. package/DS1/x-icon/duplicate.svg +8 -0
  253. package/DS1/x-icon/email.svg +3 -0
  254. package/DS1/x-icon/equation.svg +3 -0
  255. package/DS1/x-icon/exercise.svg +3 -0
  256. package/DS1/x-icon/expand.svg +3 -0
  257. package/DS1/x-icon/ezo-accordion-chevron.svg +11 -0
  258. package/DS1/x-icon/ezo-account-close.svg +1 -0
  259. package/DS1/x-icon/ezo-android-screen-archive.svg +4 -0
  260. package/DS1/x-icon/ezo-android-screen-calendar.svg +6 -0
  261. package/DS1/x-icon/ezo-android-screen-camera.svg +5 -0
  262. package/DS1/x-icon/ezo-android-screen-check.svg +3 -0
  263. package/DS1/x-icon/ezo-android-screen-compose.svg +4 -0
  264. package/DS1/x-icon/ezo-android-screen-globe.svg +1 -0
  265. package/DS1/x-icon/ezo-android-screen-lists.svg +3 -0
  266. package/DS1/x-icon/ezo-android-screen-shared.svg +5 -0
  267. package/DS1/x-icon/ezo-android-screen-stats.svg +3 -0
  268. package/DS1/x-icon/ezo-android-screen-store.svg +4 -0
  269. package/DS1/x-icon/ezo-android-screen-views.svg +4 -0
  270. package/DS1/x-icon/ezo-android-screen-work.svg +3 -0
  271. package/DS1/x-icon/ezo-arrow-cursor.svg +8 -0
  272. package/DS1/x-icon/ezo-block-accordion.svg +1 -0
  273. package/DS1/x-icon/ezo-block-divider.svg +1 -0
  274. package/DS1/x-icon/ezo-block-group.svg +1 -0
  275. package/DS1/x-icon/ezo-block-image.svg +1 -0
  276. package/DS1/x-icon/ezo-block-section.svg +1 -0
  277. package/DS1/x-icon/ezo-block-table.svg +1 -0
  278. package/DS1/x-icon/ezo-code.svg +14 -0
  279. package/DS1/x-icon/ezo-down.svg +3 -0
  280. package/DS1/x-icon/ezo-figma-premium-star.svg +5 -0
  281. package/DS1/x-icon/ezo-item-button-complete.svg +4 -0
  282. package/DS1/x-icon/ezo-item-button-header.svg +3 -0
  283. package/DS1/x-icon/ezo-item-button-open.svg +3 -0
  284. package/DS1/x-icon/ezo-item-button-reopen.svg +3 -0
  285. package/DS1/x-icon/ezo-item-button-star.svg +3 -0
  286. package/DS1/x-icon/ezo-item-button-start.svg +3 -0
  287. package/DS1/x-icon/ezo-item-button-unheader.svg +7 -0
  288. package/DS1/x-icon/ezo-item-button-unstar.svg +5 -0
  289. package/DS1/x-icon/ezo-item-star.svg +5 -0
  290. package/DS1/x-icon/ezo-left.svg +3 -0
  291. package/DS1/x-icon/ezo-logo.svg +1 -0
  292. package/DS1/x-icon/ezo-mic.svg +8 -0
  293. package/DS1/x-icon/ezo-move-column.svg +14 -0
  294. package/DS1/x-icon/ezo-move-row.svg +18 -0
  295. package/DS1/x-icon/ezo-navigation-check.svg +1 -0
  296. package/DS1/x-icon/ezo-note-back.svg +5 -0
  297. package/DS1/x-icon/ezo-note-menu-complete.svg +11 -0
  298. package/DS1/x-icon/ezo-note-menu-delete.svg +4 -0
  299. package/DS1/x-icon/ezo-note-menu-duplicate.svg +8 -0
  300. package/DS1/x-icon/ezo-note-menu-note.svg +5 -0
  301. package/DS1/x-icon/ezo-note-menu-page.svg +3 -0
  302. package/DS1/x-icon/ezo-note-menu-star.svg +5 -0
  303. package/DS1/x-icon/ezo-note-menu-start.svg +6 -0
  304. package/DS1/x-icon/ezo-note-menu-stop.svg +6 -0
  305. package/DS1/x-icon/ezo-note-more.svg +7 -0
  306. package/DS1/x-icon/ezo-note-star.svg +5 -0
  307. package/DS1/x-icon/ezo-password-visibility-see.svg +6 -0
  308. package/DS1/x-icon/ezo-password-visibility-unsee.svg +9 -0
  309. package/DS1/x-icon/ezo-pattern-call-to-action.svg +1 -0
  310. package/DS1/x-icon/ezo-play.svg +5 -0
  311. package/DS1/x-icon/ezo-premium-star.svg +5 -0
  312. package/DS1/x-icon/ezo-setting-1xdots.svg +13 -0
  313. package/DS1/x-icon/ezo-setting-1xgrid.svg +10 -0
  314. package/DS1/x-icon/ezo-setting-1xlines.svg +7 -0
  315. package/DS1/x-icon/ezo-setting-2xdots.svg +8 -0
  316. package/DS1/x-icon/ezo-setting-2xgrid.svg +8 -0
  317. package/DS1/x-icon/ezo-setting-2xlines.svg +6 -0
  318. package/DS1/x-icon/ezo-setting-blank.svg +5 -0
  319. package/DS1/x-icon/ezo-store-chevron.svg +1 -0
  320. package/DS1/x-icon/ezo-upgrade-close.svg +5 -0
  321. package/DS1/x-icon/folder.svg +3 -0
  322. package/DS1/x-icon/form.svg +5 -0
  323. package/DS1/x-icon/gallery.svg +3 -0
  324. package/DS1/x-icon/globe.svg +1 -0
  325. package/DS1/x-icon/google.svg +6 -0
  326. package/DS1/x-icon/group-alt-2.svg +3 -0
  327. package/DS1/x-icon/group-alt.svg +7 -0
  328. package/DS1/x-icon/group.svg +3 -0
  329. package/DS1/x-icon/h1.svg +3 -0
  330. package/DS1/x-icon/h2.svg +3 -0
  331. package/DS1/x-icon/h3.svg +3 -0
  332. package/DS1/x-icon/handle.svg +8 -0
  333. package/DS1/x-icon/head.svg +3 -0
  334. package/DS1/x-icon/help-alt.svg +3 -0
  335. package/DS1/x-icon/help.svg +5 -0
  336. package/DS1/x-icon/home.svg +3 -0
  337. package/DS1/x-icon/icon.svg +4 -0
  338. package/DS1/x-icon/image.svg +5 -0
  339. package/DS1/x-icon/in.svg +4 -0
  340. package/DS1/x-icon/indent.svg +4 -0
  341. package/DS1/x-icon/italic.svg +3 -0
  342. package/DS1/x-icon/item.svg +3 -0
  343. package/DS1/x-icon/left.svg +4 -0
  344. package/DS1/x-icon/life.svg +8 -0
  345. package/DS1/x-icon/link.svg +3 -0
  346. package/DS1/x-icon/list-line.svg +3 -0
  347. package/DS1/x-icon/lists.svg +3 -0
  348. package/DS1/x-icon/lock-filled.svg +3 -0
  349. package/DS1/x-icon/lock.svg +3 -0
  350. package/DS1/x-icon/logo-marquee.svg +5 -0
  351. package/DS1/x-icon/loop.svg +6 -0
  352. package/DS1/x-icon/mention.svg +4 -0
  353. package/DS1/x-icon/menu.svg +3 -0
  354. package/DS1/x-icon/mic.svg +5 -0
  355. package/DS1/x-icon/minimize-alt.svg +4 -0
  356. package/DS1/x-icon/minimize.svg +4 -0
  357. package/DS1/x-icon/money.svg +6 -0
  358. package/DS1/x-icon/more.svg +5 -0
  359. package/DS1/x-icon/navigation-check.svg +1 -0
  360. package/DS1/x-icon/note-alt-2.svg +6 -0
  361. package/DS1/x-icon/note-alt.svg +4 -0
  362. package/DS1/x-icon/note-lines.svg +6 -0
  363. package/DS1/x-icon/note.svg +4 -0
  364. package/DS1/x-icon/notifications.svg +3 -0
  365. package/DS1/x-icon/numbered.svg +4 -0
  366. package/DS1/x-icon/open-alt.svg +3 -0
  367. package/DS1/x-icon/open-source.svg +3 -0
  368. package/DS1/x-icon/open.svg +3 -0
  369. package/DS1/x-icon/outdent.svg +4 -0
  370. package/DS1/x-icon/pad.svg +8 -0
  371. package/DS1/x-icon/page-18.svg +3 -0
  372. package/DS1/x-icon/page-alt.svg +3 -0
  373. package/DS1/x-icon/page-note.svg +1 -0
  374. package/DS1/x-icon/page.svg +3 -0
  375. package/DS1/x-icon/panel.svg +4 -0
  376. package/DS1/x-icon/pattern-call-to-action.svg +1 -0
  377. package/DS1/x-icon/pattern-card.svg +1 -0
  378. package/DS1/x-icon/pattern-feature.svg +1 -0
  379. package/DS1/x-icon/pattern-hero.svg +1 -0
  380. package/DS1/x-icon/pen.svg +4 -0
  381. package/DS1/x-icon/play-alt.svg +3 -0
  382. package/DS1/x-icon/plus.svg +3 -0
  383. package/DS1/x-icon/product-sources.json +2557 -0
  384. package/DS1/x-icon/quote.svg +3 -0
  385. package/DS1/x-icon/redo.svg +3 -0
  386. package/DS1/x-icon/relationships.svg +3 -0
  387. package/DS1/x-icon/rewind-30-alt.svg +4 -0
  388. package/DS1/x-icon/rewind-30.svg +5 -0
  389. package/DS1/x-icon/rewind.svg +5 -0
  390. package/DS1/x-icon/right.svg +3 -0
  391. package/DS1/x-icon/row.svg +3 -0
  392. package/DS1/x-icon/school.svg +4 -0
  393. package/DS1/x-icon/sdown.svg +3 -0
  394. package/DS1/x-icon/search-30.svg +4 -0
  395. package/DS1/x-icon/search.svg +3 -0
  396. package/DS1/x-icon/see-30.svg +4 -0
  397. package/DS1/x-icon/see.svg +4 -0
  398. package/DS1/x-icon/settings.svg +8 -0
  399. package/DS1/x-icon/shared.svg +5 -0
  400. package/DS1/x-icon/slash.svg +3 -0
  401. package/DS1/x-icon/star-alt-2.svg +3 -0
  402. package/DS1/x-icon/star-alt.svg +3 -0
  403. package/DS1/x-icon/star.svg +3 -0
  404. package/DS1/x-icon/stats.svg +3 -0
  405. package/DS1/x-icon/status-alt.svg +11 -0
  406. package/DS1/x-icon/status-filled.svg +26 -0
  407. package/DS1/x-icon/status.svg +10 -0
  408. package/DS1/x-icon/store.svg +4 -0
  409. package/DS1/x-icon/strike.svg +3 -0
  410. package/DS1/x-icon/sup.svg +3 -0
  411. package/DS1/x-icon/table.svg +4 -0
  412. package/DS1/x-icon/template.svg +4 -0
  413. package/DS1/x-icon/templates.svg +4 -0
  414. package/DS1/x-icon/text.svg +3 -0
  415. package/DS1/x-icon/title.svg +3 -0
  416. package/DS1/x-icon/titlestyle.svg +11 -0
  417. package/DS1/x-icon/todo.svg +5 -0
  418. package/DS1/x-icon/toggle.svg +4 -0
  419. package/DS1/x-icon/triangle.svg +3 -0
  420. package/DS1/x-icon/underline.svg +3 -0
  421. package/DS1/x-icon/undo.svg +3 -0
  422. package/DS1/x-icon/ungroup.svg +4 -0
  423. package/DS1/x-icon/unhead.svg +7 -0
  424. package/DS1/x-icon/unicon.svg +6 -0
  425. package/DS1/x-icon/unlock.svg +3 -0
  426. package/DS1/x-icon/unmic.svg +6 -0
  427. package/DS1/x-icon/unsee.svg +5 -0
  428. package/DS1/x-icon/unstar.svg +5 -0
  429. package/DS1/x-icon/untitle.svg +7 -0
  430. package/DS1/x-icon/up-right.svg +3 -0
  431. package/DS1/x-icon/up.svg +3 -0
  432. package/DS1/x-icon/views.svg +4 -0
  433. package/DS1/x-icon/warning.svg +3 -0
  434. package/DS1/x-icon/work.svg +3 -0
  435. package/LICENSE +21 -0
  436. package/README.md +240 -2
  437. package/dist/0-face/control.d.ts +24 -0
  438. package/dist/0-face/control.d.ts.map +1 -0
  439. package/dist/0-face/control.js +117 -0
  440. package/dist/0-face/define.d.ts +3 -0
  441. package/dist/0-face/define.d.ts.map +1 -0
  442. package/dist/0-face/define.js +7 -0
  443. package/dist/0-face/device.d.ts +71 -0
  444. package/dist/0-face/device.d.ts.map +1 -0
  445. package/dist/0-face/device.js +318 -0
  446. package/dist/0-face/grid-fit.d.ts +3 -0
  447. package/dist/0-face/grid-fit.d.ts.map +1 -0
  448. package/dist/0-face/grid-fit.js +73 -0
  449. package/dist/0-face/grid.d.ts +3 -0
  450. package/dist/0-face/grid.d.ts.map +1 -0
  451. package/dist/0-face/grid.js +144 -0
  452. package/dist/0-face/i18n.d.ts +138 -0
  453. package/dist/0-face/i18n.d.ts.map +1 -0
  454. package/dist/0-face/i18n.js +725 -0
  455. package/dist/0-face/language-routing.d.ts +47 -0
  456. package/dist/0-face/language-routing.d.ts.map +1 -0
  457. package/dist/0-face/language-routing.js +91 -0
  458. package/dist/0-face/language-validator.d.ts +11 -0
  459. package/dist/0-face/language-validator.d.ts.map +1 -0
  460. package/dist/0-face/language-validator.js +31 -0
  461. package/dist/0-face/languages.d.ts +53 -0
  462. package/dist/0-face/languages.d.ts.map +1 -0
  463. package/dist/0-face/languages.js +192 -0
  464. package/dist/0-face/layout-inspector.d.ts +6 -0
  465. package/dist/0-face/layout-inspector.d.ts.map +1 -0
  466. package/dist/0-face/layout-inspector.js +197 -0
  467. package/dist/0-face/preferences.d.ts +20 -0
  468. package/dist/0-face/preferences.d.ts.map +1 -0
  469. package/dist/0-face/preferences.js +19 -0
  470. package/dist/0-face/pricing.d.ts +15 -0
  471. package/dist/0-face/pricing.d.ts.map +1 -0
  472. package/dist/0-face/pricing.js +46 -0
  473. package/dist/0-face/scaling.d.ts +10 -0
  474. package/dist/0-face/scaling.d.ts.map +1 -0
  475. package/dist/0-face/scaling.js +14 -0
  476. package/dist/0-face/shared-words.d.ts +14 -0
  477. package/dist/0-face/shared-words.d.ts.map +1 -0
  478. package/dist/0-face/shared-words.js +32 -0
  479. package/dist/0-face/theme.d.ts +4 -0
  480. package/dist/0-face/theme.d.ts.map +1 -0
  481. package/dist/0-face/theme.js +48 -0
  482. package/dist/0-face/tooltips.d.ts +8 -0
  483. package/dist/0-face/tooltips.d.ts.map +1 -0
  484. package/dist/0-face/tooltips.js +90 -0
  485. package/dist/0-face/translations/da.json +63 -0
  486. package/dist/0-face/translations/de.json +63 -0
  487. package/dist/0-face/translations/en.json +63 -0
  488. package/dist/0-face/translations/es.json +63 -0
  489. package/dist/0-face/translations/fi.json +63 -0
  490. package/dist/0-face/translations/fr.json +63 -0
  491. package/dist/0-face/translations/is.json +56 -0
  492. package/dist/0-face/translations/it.json +63 -0
  493. package/dist/0-face/translations/ja.json +63 -0
  494. package/dist/0-face/translations/ko.json +63 -0
  495. package/dist/0-face/translations/nb.json +63 -0
  496. package/dist/0-face/translations/pt-BR.json +63 -0
  497. package/dist/0-face/translations/pt.json +63 -0
  498. package/dist/0-face/translations/sv.json +63 -0
  499. package/dist/0-face/translations/zh.json +63 -0
  500. package/dist/0-face/translations-format.d.ts +62 -0
  501. package/dist/0-face/translations-format.d.ts.map +1 -0
  502. package/dist/0-face/translations-format.js +159 -0
  503. package/dist/1-root/palette.d.ts +31 -0
  504. package/dist/1-root/palette.d.ts.map +1 -0
  505. package/dist/1-root/palette.js +83 -0
  506. package/dist/2-core/ds-avatar.d.ts +82 -0
  507. package/dist/2-core/ds-avatar.d.ts.map +1 -0
  508. package/dist/2-core/ds-avatar.js +102 -0
  509. package/dist/2-core/ds-badge.d.ts +33 -0
  510. package/dist/2-core/ds-badge.d.ts.map +1 -0
  511. package/dist/2-core/ds-badge.js +77 -0
  512. package/dist/2-core/ds-banner.d.ts +68 -0
  513. package/dist/2-core/ds-banner.d.ts.map +1 -0
  514. package/dist/2-core/ds-banner.js +98 -0
  515. package/dist/2-core/ds-button.d.ts +102 -0
  516. package/dist/2-core/ds-button.d.ts.map +1 -0
  517. package/dist/2-core/ds-button.js +133 -0
  518. package/dist/2-core/ds-card.d.ts +39 -0
  519. package/dist/2-core/ds-card.d.ts.map +1 -0
  520. package/dist/2-core/ds-card.js +119 -0
  521. package/dist/2-core/ds-checkbox.d.ts +13 -0
  522. package/dist/2-core/ds-checkbox.d.ts.map +1 -0
  523. package/dist/2-core/ds-checkbox.js +11 -0
  524. package/dist/2-core/ds-color.d.ts +15 -0
  525. package/dist/2-core/ds-color.d.ts.map +1 -0
  526. package/dist/2-core/ds-color.js +30 -0
  527. package/dist/2-core/ds-composer.d.ts +69 -0
  528. package/dist/2-core/ds-composer.d.ts.map +1 -0
  529. package/dist/2-core/ds-composer.js +183 -0
  530. package/dist/2-core/ds-cycle.d.ts +85 -0
  531. package/dist/2-core/ds-cycle.d.ts.map +1 -0
  532. package/dist/2-core/ds-cycle.js +497 -0
  533. package/dist/2-core/ds-date.d.ts +16 -0
  534. package/dist/2-core/ds-date.d.ts.map +1 -0
  535. package/dist/2-core/ds-date.js +15 -0
  536. package/dist/2-core/ds-file-picker.d.ts +65 -0
  537. package/dist/2-core/ds-file-picker.d.ts.map +1 -0
  538. package/dist/2-core/ds-file-picker.js +80 -0
  539. package/dist/2-core/ds-gap.d.ts +27 -0
  540. package/dist/2-core/ds-gap.d.ts.map +1 -0
  541. package/dist/2-core/ds-gap.js +22 -0
  542. package/dist/2-core/ds-icon.d.ts +58 -0
  543. package/dist/2-core/ds-icon.d.ts.map +1 -0
  544. package/dist/2-core/ds-icon.js +128 -0
  545. package/dist/2-core/ds-input.d.ts +97 -0
  546. package/dist/2-core/ds-input.d.ts.map +1 -0
  547. package/dist/2-core/ds-input.js +429 -0
  548. package/dist/2-core/ds-language.d.ts +75 -0
  549. package/dist/2-core/ds-language.d.ts.map +1 -0
  550. package/dist/2-core/ds-language.js +74 -0
  551. package/dist/2-core/ds-pagedots.d.ts +32 -0
  552. package/dist/2-core/ds-pagedots.d.ts.map +1 -0
  553. package/dist/2-core/ds-pagedots.js +36 -0
  554. package/dist/2-core/ds-radio.d.ts +35 -0
  555. package/dist/2-core/ds-radio.d.ts.map +1 -0
  556. package/dist/2-core/ds-radio.js +19 -0
  557. package/dist/2-core/ds-select.d.ts +30 -0
  558. package/dist/2-core/ds-select.d.ts.map +1 -0
  559. package/dist/2-core/ds-select.js +45 -0
  560. package/dist/2-core/ds-split.d.ts +75 -0
  561. package/dist/2-core/ds-split.d.ts.map +1 -0
  562. package/dist/2-core/ds-split.js +101 -0
  563. package/dist/2-core/ds-swatch.d.ts +24 -0
  564. package/dist/2-core/ds-swatch.d.ts.map +1 -0
  565. package/dist/2-core/ds-swatch.js +16 -0
  566. package/dist/2-core/ds-switch.d.ts +13 -0
  567. package/dist/2-core/ds-switch.d.ts.map +1 -0
  568. package/dist/2-core/ds-switch.js +10 -0
  569. package/dist/2-core/ds-text.d.ts +75 -0
  570. package/dist/2-core/ds-text.d.ts.map +1 -0
  571. package/dist/2-core/ds-text.js +142 -0
  572. package/dist/2-core/ds-textarea.d.ts +46 -0
  573. package/dist/2-core/ds-textarea.d.ts.map +1 -0
  574. package/dist/2-core/ds-textarea.js +121 -0
  575. package/dist/2-core/ds-token.d.ts +48 -0
  576. package/dist/2-core/ds-token.d.ts.map +1 -0
  577. package/dist/2-core/ds-token.js +44 -0
  578. package/dist/2-core/ds-tooltip.d.ts +48 -0
  579. package/dist/2-core/ds-tooltip.d.ts.map +1 -0
  580. package/dist/2-core/ds-tooltip.js +99 -0
  581. package/dist/2-core/generated/ds-icon-map.d.ts +295 -0
  582. package/dist/2-core/generated/ds-icon-map.d.ts.map +1 -0
  583. package/dist/2-core/generated/ds-icon-map.js +579 -0
  584. package/dist/2-core/generated/icons-extra.d.ts +2 -0
  585. package/dist/2-core/generated/icons-extra.d.ts.map +1 -0
  586. package/dist/2-core/generated/icons-extra.js +243 -0
  587. package/dist/2-core/generated/icons-immediate.d.ts +3 -0
  588. package/dist/2-core/generated/icons-immediate.d.ts.map +1 -0
  589. package/dist/2-core/generated/icons-immediate.js +49 -0
  590. package/dist/3-unit/context-trigger.d.ts +22 -0
  591. package/dist/3-unit/context-trigger.d.ts.map +1 -0
  592. package/dist/3-unit/context-trigger.js +130 -0
  593. package/dist/3-unit/ds-accordion.d.ts +55 -0
  594. package/dist/3-unit/ds-accordion.d.ts.map +1 -0
  595. package/dist/3-unit/ds-accordion.js +105 -0
  596. package/dist/3-unit/ds-avatar-group.d.ts +40 -0
  597. package/dist/3-unit/ds-avatar-group.d.ts.map +1 -0
  598. package/dist/3-unit/ds-avatar-group.js +84 -0
  599. package/dist/3-unit/ds-form.d.ts +70 -0
  600. package/dist/3-unit/ds-form.d.ts.map +1 -0
  601. package/dist/3-unit/ds-form.js +232 -0
  602. package/dist/3-unit/ds-list.d.ts +25 -0
  603. package/dist/3-unit/ds-list.d.ts.map +1 -0
  604. package/dist/3-unit/ds-list.js +25 -0
  605. package/dist/3-unit/ds-menu.d.ts +162 -0
  606. package/dist/3-unit/ds-menu.d.ts.map +1 -0
  607. package/dist/3-unit/ds-menu.js +607 -0
  608. package/dist/3-unit/ds-row.d.ts +43 -0
  609. package/dist/3-unit/ds-row.d.ts.map +1 -0
  610. package/dist/3-unit/ds-row.js +32 -0
  611. package/dist/3-unit/ds-table.d.ts +33 -0
  612. package/dist/3-unit/ds-table.d.ts.map +1 -0
  613. package/dist/3-unit/ds-table.js +43 -0
  614. package/dist/3-unit/ds-tabs.d.ts +50 -0
  615. package/dist/3-unit/ds-tabs.d.ts.map +1 -0
  616. package/dist/3-unit/ds-tabs.js +64 -0
  617. package/dist/3-unit/ds-token-field.d.ts +64 -0
  618. package/dist/3-unit/ds-token-field.d.ts.map +1 -0
  619. package/dist/3-unit/ds-token-field.js +184 -0
  620. package/dist/4-page/ds-container.d.ts +17 -0
  621. package/dist/4-page/ds-container.d.ts.map +1 -0
  622. package/dist/4-page/ds-container.js +11 -0
  623. package/dist/4-page/ds-dialog.d.ts +105 -0
  624. package/dist/4-page/ds-dialog.d.ts.map +1 -0
  625. package/dist/4-page/ds-dialog.js +358 -0
  626. package/dist/4-page/ds-grid.d.ts +28 -0
  627. package/dist/4-page/ds-grid.d.ts.map +1 -0
  628. package/dist/4-page/ds-grid.js +49 -0
  629. package/dist/4-page/ds-layout.d.ts +31 -0
  630. package/dist/4-page/ds-layout.d.ts.map +1 -0
  631. package/dist/4-page/ds-layout.js +930 -0
  632. package/dist/4-page/ds-panel.d.ts +26 -0
  633. package/dist/4-page/ds-panel.d.ts.map +1 -0
  634. package/dist/4-page/ds-panel.js +29 -0
  635. package/dist/4-page/email.d.ts +49 -0
  636. package/dist/4-page/email.d.ts.map +1 -0
  637. package/dist/4-page/email.js +134 -0
  638. package/dist/components.d.ts +14 -0
  639. package/dist/components.d.ts.map +1 -0
  640. package/dist/components.js +13 -0
  641. package/dist/design-system-1.bundle.js +9115 -0
  642. package/dist/design-system-1.bundle.js.map +1 -0
  643. package/dist/design-system-1.bundle.min.js +6879 -0
  644. package/dist/design-system-1.bundle.min.js.map +1 -0
  645. package/dist/design-system-1.css +2 -0
  646. package/dist/icons-extra-BoAACA4X.js +944 -0
  647. package/dist/icons-extra-BoAACA4X.js.map +1 -0
  648. package/dist/icons-extra-DlxTo_Y4.js +247 -0
  649. package/dist/icons-extra-DlxTo_Y4.js.map +1 -0
  650. package/dist/index.d.ts +57 -0
  651. package/dist/index.d.ts.map +1 -0
  652. package/dist/index.js +73 -0
  653. package/dist/react/accordion.d.ts +21 -0
  654. package/dist/react/accordion.d.ts.map +1 -0
  655. package/dist/react/accordion.js +30 -0
  656. package/dist/react/avatar-group.d.ts +6 -0
  657. package/dist/react/avatar-group.d.ts.map +1 -0
  658. package/dist/react/avatar-group.js +5 -0
  659. package/dist/react/avatar.d.ts +13 -0
  660. package/dist/react/avatar.d.ts.map +1 -0
  661. package/dist/react/avatar.js +18 -0
  662. package/dist/react/badge.d.ts +11 -0
  663. package/dist/react/badge.d.ts.map +1 -0
  664. package/dist/react/badge.js +4 -0
  665. package/dist/react/button.d.ts +13 -0
  666. package/dist/react/button.d.ts.map +1 -0
  667. package/dist/react/button.js +37 -0
  668. package/dist/react/choice.d.ts +43 -0
  669. package/dist/react/choice.d.ts.map +1 -0
  670. package/dist/react/choice.js +32 -0
  671. package/dist/react/composer.d.ts +17 -0
  672. package/dist/react/composer.d.ts.map +1 -0
  673. package/dist/react/composer.js +8 -0
  674. package/dist/react/context-menu.d.ts +657 -0
  675. package/dist/react/context-menu.d.ts.map +1 -0
  676. package/dist/react/context-menu.js +133 -0
  677. package/dist/react/dialog.d.ts +1173 -0
  678. package/dist/react/dialog.d.ts.map +1 -0
  679. package/dist/react/dialog.js +79 -0
  680. package/dist/react/file-picker.d.ts +29 -0
  681. package/dist/react/file-picker.d.ts.map +1 -0
  682. package/dist/react/file-picker.js +17 -0
  683. package/dist/react/input.d.ts +35 -0
  684. package/dist/react/input.d.ts.map +1 -0
  685. package/dist/react/input.js +128 -0
  686. package/dist/react/menu.d.ts +37 -0
  687. package/dist/react/menu.d.ts.map +1 -0
  688. package/dist/react/menu.js +31 -0
  689. package/dist/react/split.d.ts +15 -0
  690. package/dist/react/split.d.ts.map +1 -0
  691. package/dist/react/split.js +32 -0
  692. package/dist/react/token-field.d.ts +36 -0
  693. package/dist/react/token-field.d.ts.map +1 -0
  694. package/dist/react/token-field.js +33 -0
  695. package/dist/shared-words-Cg6Phtx0.js +915 -0
  696. package/dist/shared-words-Cg6Phtx0.js.map +1 -0
  697. package/dist/shared-words-Ddz0yUEF.js +933 -0
  698. package/dist/shared-words-Ddz0yUEF.js.map +1 -0
  699. package/package.json +149 -3
@@ -0,0 +1,497 @@
1
+ import { LitElement, html, unsafeCSS } from "lit";
2
+ import { define } from "../0-face/define";
3
+ import { translate, currentLanguage, getAvailableLanguagesSync, getLanguageDisplayName, setLanguage, } from "../0-face/i18n";
4
+ import { currentTheme, setTheme } from "../0-face/theme";
5
+ import { savePreferences } from "../0-face/preferences";
6
+ import "./ds-button";
7
+ import "./ds-icon";
8
+ import "./ds-text";
9
+ import styles from "./styles/ds-cycle.css?inline";
10
+ // Accent color utilities
11
+ const saveAccentColor = (color) => {
12
+ localStorage.setItem("accentColor", color);
13
+ };
14
+ const getAccentColor = () => {
15
+ return localStorage.getItem("accentColor") || "--sharp-blue"; // Default color if none set
16
+ };
17
+ const applyAccentColor = () => {
18
+ const color = getAccentColor();
19
+ document.documentElement.style.setProperty("--accent-color", `var(${color})`);
20
+ };
21
+ // Notes style medium utilities
22
+ const saveNotesStyleMedium = (style) => {
23
+ localStorage.setItem("notesStyleMedium", style);
24
+ };
25
+ const getNotesStyleMedium = () => {
26
+ return localStorage.getItem("notesStyleMedium") || "note"; // Default to note
27
+ };
28
+ // Note behavior utilities
29
+ const savePageStyle = (style) => {
30
+ localStorage.setItem("pageStyle", style);
31
+ };
32
+ const getPageStyle = () => {
33
+ return localStorage.getItem("pageStyle") || "note"; // Default to note
34
+ };
35
+ // App width utilities removed
36
+ // Use a regular class with proper TypeScript type declarations and JSDoc comments
37
+ export class Cycle extends LitElement {
38
+ // Define reactive properties using Lit's property system
39
+ static get properties() {
40
+ return {
41
+ type: { type: String },
42
+ values: { type: Array },
43
+ currentValue: { type: String, state: true }, // Make this a private state property
44
+ translationsReady: { type: Boolean, state: true }, // Track if translations are loaded
45
+ disabled: { type: Boolean, reflect: true },
46
+ _fieldsetDisabled: { state: true },
47
+ variant: { type: String },
48
+ // The same two words a button takes: `primary` is a chip in the accent,
49
+ // `secondary` a grey one. Neither given, the type decides (below), and
50
+ // the choice is written back onto the host so a page sheet can read it.
51
+ primary: { type: Boolean, reflect: true },
52
+ secondary: { type: Boolean, reflect: true },
53
+ };
54
+ }
55
+ constructor() {
56
+ super();
57
+ if (typeof this.attachInternals === "function")
58
+ this.attachInternals();
59
+ this._fieldsetDisabled = false;
60
+ this.variant = "";
61
+ // Initialize properties with default values
62
+ this.type = "";
63
+ this.values = [];
64
+ this.currentValue = "";
65
+ this.translationsReady = false;
66
+ this.disabled = false;
67
+ this.primary = false;
68
+ this.secondary = false;
69
+ // Bind event handlers to this instance for proper cleanup
70
+ this.boundHandlers = {
71
+ translationsLoaded: this.handleTranslationsLoaded.bind(this),
72
+ languageChanged: this.handleLanguageChanged.bind(this),
73
+ handleLanguageChanged: this.handleLanguageChanged.bind(this),
74
+ handleThemeChanged: this.handleThemeChanged.bind(this),
75
+ handleAccentColorChanged: this.handleAccentColorChanged.bind(this),
76
+ handleNoteBehaviorChanged: this.handleNoteBehaviorChanged.bind(this),
77
+ };
78
+ }
79
+ formDisabledCallback(disabled) { this._fieldsetDisabled = disabled; }
80
+ focus(options) { this.shadowRoot?.querySelector("ds-button, button")?.focus(options); }
81
+ connectedCallback() {
82
+ super.connectedCallback();
83
+ // Add event listeners
84
+ window.addEventListener("translations-loaded", this.boundHandlers.translationsLoaded);
85
+ window.addEventListener("language-changed", this.boundHandlers.languageChanged);
86
+ window.addEventListener("theme-changed", this.boundHandlers.handleThemeChanged);
87
+ window.addEventListener("accent-color-changed", this.boundHandlers.handleAccentColorChanged);
88
+ window.addEventListener("page-style-changed", this.boundHandlers.handleNoteBehaviorChanged);
89
+ // Initialize the component
90
+ this.initializeValues();
91
+ }
92
+ async initializeValues() {
93
+ if (this.type === "language") {
94
+ // Dynamically get available languages from translation data
95
+ const availableLanguages = getAvailableLanguagesSync();
96
+ this.values = availableLanguages;
97
+ this.currentValue = currentLanguage.value;
98
+ }
99
+ else if (this.type === "theme") {
100
+ // Set up theme cycling
101
+ this.values = ["light", "dark"];
102
+ // Set initial value based on current theme
103
+ const currentThemeValue = currentTheme.get();
104
+ this.currentValue = currentThemeValue;
105
+ }
106
+ else if (this.type === "accent-color") {
107
+ // Set up accent color cycling
108
+ this.values = [
109
+ "--apple-green",
110
+ "--every-green",
111
+ "--zenith-blue",
112
+ "--sharp-blue",
113
+ "--pink",
114
+ "--tuned-red",
115
+ "--orange",
116
+ "--yellow",
117
+ ];
118
+ // Set initial value based on current accent color
119
+ const currentAccentColor = getAccentColor();
120
+ this.currentValue = currentAccentColor;
121
+ // Apply the accent color to ensure it's active
122
+ applyAccentColor();
123
+ }
124
+ else if (this.type === "notes-style-medium") {
125
+ // Set up notes style medium cycling
126
+ this.values = ["default", "big", "gallery"];
127
+ // Set initial value based on current notes style medium
128
+ const currentNotesStyle = getNotesStyleMedium();
129
+ this.currentValue = currentNotesStyle;
130
+ // Check if this should be disabled based on note behavior
131
+ const currentPageStyle = getPageStyle();
132
+ this.disabled = currentPageStyle === "note";
133
+ }
134
+ else if (this.type === "page-style") {
135
+ // Set up page style cycling
136
+ this.values = ["note", "page"];
137
+ // Set initial value based on current page style
138
+ const currentPageStyle = getPageStyle();
139
+ this.currentValue = currentPageStyle;
140
+ }
141
+ else if (this.type === "icon-only") {
142
+ // Set up icon-only cycling (no label)
143
+ this.values = ["note", "page"];
144
+ // Set initial value
145
+ this.currentValue = this.values[0];
146
+ }
147
+ // Request update to re-render with new values
148
+ this.requestUpdate();
149
+ }
150
+ attributeChangedCallback(name, oldValue, newValue) {
151
+ super.attributeChangedCallback(name, oldValue, newValue);
152
+ if (name === "type" && oldValue !== newValue) {
153
+ // Type changed, reinitialize values
154
+ this.initializeValues();
155
+ }
156
+ }
157
+ async setupInitialValue() {
158
+ if (this.type === "language") {
159
+ // Get current language
160
+ const currentLang = currentLanguage.value;
161
+ this.currentValue = currentLang;
162
+ }
163
+ else if (this.type === "theme") {
164
+ // Get current theme
165
+ const currentThemeValue = currentTheme.get();
166
+ this.currentValue = currentThemeValue;
167
+ }
168
+ else if (this.type === "accent-color") {
169
+ // Get current accent color
170
+ const currentAccentColor = getAccentColor();
171
+ this.currentValue = currentAccentColor;
172
+ // Apply the accent color to ensure it's active
173
+ applyAccentColor();
174
+ }
175
+ else if (this.type === "notes-style-medium") {
176
+ // Get current notes style medium
177
+ const currentNotesStyle = getNotesStyleMedium();
178
+ this.currentValue = currentNotesStyle;
179
+ // Check if this should be disabled based on note behavior
180
+ const currentPageStyle = getPageStyle();
181
+ this.disabled = currentPageStyle === "note";
182
+ }
183
+ else if (this.type === "page-style") {
184
+ // Get current page style
185
+ const currentPageStyle = getPageStyle();
186
+ this.currentValue = currentPageStyle;
187
+ }
188
+ else if (this.type === "icon-only") {
189
+ // Get current page style for icon-only
190
+ const currentPageStyle = getPageStyle();
191
+ this.currentValue = currentPageStyle;
192
+ }
193
+ this.requestUpdate();
194
+ }
195
+ handleSettingsChanges() {
196
+ // Handle any settings changes that might affect this component
197
+ this.setupInitialValue();
198
+ }
199
+ disconnectedCallback() {
200
+ super.disconnectedCallback();
201
+ // Remove event listeners
202
+ window.removeEventListener("translations-loaded", this.boundHandlers.translationsLoaded);
203
+ window.removeEventListener("language-changed", this.boundHandlers.languageChanged);
204
+ window.removeEventListener("theme-changed", this.boundHandlers.handleThemeChanged);
205
+ window.removeEventListener("accent-color-changed", this.boundHandlers.handleAccentColorChanged);
206
+ window.removeEventListener("page-style-changed", this.boundHandlers.handleNoteBehaviorChanged);
207
+ }
208
+ handleButtonClick(e) {
209
+ e.preventDefault();
210
+ e.stopPropagation();
211
+ // Don't handle clicks if disabled
212
+ if (this.disabled || this._fieldsetDisabled || !this.values.length || this.values.every(value => value === this.currentValue)) {
213
+ return;
214
+ }
215
+ if (this.type === "language") {
216
+ // Cycle through available languages
217
+ const currentIndex = this.values.indexOf(this.currentValue);
218
+ const nextIndex = (currentIndex + 1) % this.values.length;
219
+ const newLanguage = this.values[nextIndex];
220
+ // Update current value
221
+ this.currentValue = newLanguage;
222
+ // Set the new language with view transition like Portfolio
223
+ if (document.startViewTransition) {
224
+ document.startViewTransition(() => {
225
+ setLanguage(newLanguage);
226
+ });
227
+ }
228
+ else {
229
+ setLanguage(newLanguage);
230
+ }
231
+ // Save preferences
232
+ savePreferences({ language: newLanguage });
233
+ }
234
+ else if (this.type === "theme") {
235
+ // Cycle through themes
236
+ const currentIndex = this.values.indexOf(this.currentValue);
237
+ const nextIndex = (currentIndex + 1) % this.values.length;
238
+ const newTheme = this.values[nextIndex];
239
+ // Update current value
240
+ this.currentValue = newTheme;
241
+ // Set the new theme using the shared helper
242
+ setTheme(newTheme);
243
+ // Save preferences
244
+ savePreferences({ theme: newTheme });
245
+ // Theme helper already emits the change event, so no manual dispatch here
246
+ }
247
+ else if (this.type === "accent-color") {
248
+ // Cycle through accent colors
249
+ const currentIndex = this.values.indexOf(this.currentValue);
250
+ const nextIndex = (currentIndex + 1) % this.values.length;
251
+ const newColor = this.values[nextIndex];
252
+ // Update current value
253
+ this.currentValue = newColor;
254
+ // Save the new accent color
255
+ saveAccentColor(newColor);
256
+ // Apply the new accent color
257
+ applyAccentColor();
258
+ // Save preferences
259
+ savePreferences({ accentColor: newColor });
260
+ // Dispatch accent color change event
261
+ window.dispatchEvent(new CustomEvent("accent-color-changed", {
262
+ detail: { color: newColor },
263
+ }));
264
+ }
265
+ else if (this.type === "notes-style-medium") {
266
+ // Cycle through notes style medium options
267
+ const currentIndex = this.values.indexOf(this.currentValue);
268
+ const nextIndex = (currentIndex + 1) % this.values.length;
269
+ const newStyle = this.values[nextIndex];
270
+ // Update current value
271
+ this.currentValue = newStyle;
272
+ // Save the new notes style medium
273
+ saveNotesStyleMedium(newStyle);
274
+ // Save preferences
275
+ savePreferences({ notesStyleMedium: newStyle });
276
+ // Dispatch notes style medium change event
277
+ window.dispatchEvent(new CustomEvent("notes-style-medium-changed", {
278
+ detail: { style: newStyle },
279
+ }));
280
+ }
281
+ else if (this.type === "page-style") {
282
+ // Cycle through note behavior options
283
+ const currentIndex = this.values.indexOf(this.currentValue);
284
+ const nextIndex = (currentIndex + 1) % this.values.length;
285
+ const newBehavior = this.values[nextIndex];
286
+ // Update current value
287
+ this.currentValue = newBehavior;
288
+ // Save the new note behavior
289
+ savePageStyle(newBehavior);
290
+ // Save preferences
291
+ savePreferences({ pageStyle: newBehavior });
292
+ // Dispatch note behavior change event
293
+ window.dispatchEvent(new CustomEvent("page-style-changed", {
294
+ detail: { behavior: newBehavior },
295
+ }));
296
+ }
297
+ else if (this.type === "icon-only") {
298
+ // Cycle through icon-only options (note/page)
299
+ const currentIndex = this.values.indexOf(this.currentValue);
300
+ const nextIndex = (currentIndex + 1) % this.values.length;
301
+ const newIconOnlyValue = this.values[nextIndex];
302
+ // Update current value
303
+ this.currentValue = newIconOnlyValue;
304
+ // Save the new page style
305
+ savePageStyle(newIconOnlyValue);
306
+ // Save preferences
307
+ savePreferences({ pageStyle: newIconOnlyValue });
308
+ // Dispatch page style change event
309
+ window.dispatchEvent(new CustomEvent("page-style-changed", {
310
+ detail: { behavior: newIconOnlyValue },
311
+ }));
312
+ }
313
+ // Request update to re-render
314
+ this.requestUpdate();
315
+ }
316
+ getValueDisplay(value) {
317
+ if (this.type === "language") {
318
+ return getLanguageDisplayName(value, {
319
+ locale: currentLanguage.value,
320
+ });
321
+ }
322
+ else if (this.type === "theme") {
323
+ // Try to get translated theme name
324
+ if (this.translationsReady) {
325
+ const translatedName = translate(value);
326
+ if (translatedName && translatedName !== value) {
327
+ return translatedName;
328
+ }
329
+ }
330
+ // Fall back to the theme value itself
331
+ return value;
332
+ }
333
+ else if (this.type === "accent-color") {
334
+ // Get color name from CSS variable
335
+ return this.getColorName(value);
336
+ }
337
+ else if (this.type === "notes-style-medium") {
338
+ // Return SVG icon for notes style medium
339
+ return this.getNotesStyleIcon(value);
340
+ }
341
+ else if (this.type === "page-style") {
342
+ // Return translated text for note behavior
343
+ if (this.translationsReady) {
344
+ const translatedText = translate(value === "note" ? "Note" : "Page");
345
+ if (translatedText &&
346
+ translatedText !== (value === "note" ? "Note" : "Page")) {
347
+ return translatedText;
348
+ }
349
+ }
350
+ return value;
351
+ }
352
+ else if (this.type === "icon-only") {
353
+ // Return SVG icon for icon-only type (note/page icons)
354
+ if (value === "note") {
355
+ return html `<ds-icon type="note"></ds-icon>`;
356
+ }
357
+ else if (value === "page") {
358
+ return html `<ds-icon type="page"></ds-icon>`;
359
+ }
360
+ return html `<span>${value}</span>`;
361
+ }
362
+ return value;
363
+ }
364
+ getColorKey(colorVar) {
365
+ // Map CSS variables to translation text keys
366
+ const colorMap = {
367
+ "--tuned-red": "Red",
368
+ "--orange": "Orange",
369
+ "--yellow": "Yellow",
370
+ "--apple-green": "Apple green",
371
+ "--every-green": "Green",
372
+ "--zenith-blue": "Light blue",
373
+ "--sharp-blue": "Blue",
374
+ "--pink": "Pink",
375
+ };
376
+ return colorMap[colorVar] || colorVar.replace("--", "").replace("-", " ");
377
+ }
378
+ getColorName(colorVar) {
379
+ // Map CSS variables to translation text keys
380
+ const colorMap = {
381
+ "--tuned-red": "Red",
382
+ "--orange": "Orange",
383
+ "--yellow": "Yellow",
384
+ "--apple-green": "Apple green",
385
+ "--every-green": "Green",
386
+ "--zenith-blue": "Light blue",
387
+ "--sharp-blue": "Blue",
388
+ "--pink": "Pink",
389
+ };
390
+ const translationText = colorMap[colorVar];
391
+ if (translationText && this.translationsReady) {
392
+ const translatedName = translate(translationText);
393
+ if (translatedName && translatedName !== translationText) {
394
+ return translatedName;
395
+ }
396
+ }
397
+ // Fallback to simple name conversion
398
+ return colorVar.replace("--", "").replace("-", " ");
399
+ }
400
+ getNotesStyleIcon(style) {
401
+ if (style === "page") {
402
+ return html `<ds-icon type="page"></ds-icon>`;
403
+ }
404
+ else if (style === "note") {
405
+ return html `<ds-icon type="note"></ds-icon>`;
406
+ }
407
+ else if (style === "default") {
408
+ return html `<ds-icon type="default"></ds-icon>`;
409
+ }
410
+ else if (style === "big") {
411
+ return html `<ds-icon type="big"></ds-icon>`;
412
+ }
413
+ else if (style === "gallery") {
414
+ return html `<ds-icon type="gallery"></ds-icon>`;
415
+ }
416
+ return html `<span>${style}</span>`;
417
+ }
418
+ /**
419
+ * A cycle without a stated look takes the one its type has always had: the
420
+ * language and theme cycles are grey chips, every other one, the accent
421
+ * colour's included, is in the accent. Written onto the host before the
422
+ * first paint, so the inner button and any page sheet see the same word.
423
+ */
424
+ willUpdate(changed) {
425
+ if (changed.has("variant") && this.variant) {
426
+ this.primary = this.variant === "primary";
427
+ this.secondary = this.variant === "secondary";
428
+ }
429
+ if ((!this.hasUpdated || changed.has("type")) && !this.primary && !this.secondary) {
430
+ if (this.type === "language" || this.type === "theme")
431
+ this.secondary = true;
432
+ else
433
+ this.primary = true;
434
+ }
435
+ }
436
+ render() {
437
+ return html `
438
+ <div class="cycle">
439
+ <ds-button fit
440
+ ?primary=${this.primary && !this.secondary}
441
+ ?secondary=${this.secondary}
442
+ ?disabled=${this.disabled || this._fieldsetDisabled}
443
+ @click=${this.handleButtonClick}
444
+ >
445
+ ${this.type === "notes-style-medium" || this.type === "icon-only"
446
+ ? html `<span
447
+ style="display: inline-flex; align-items: center; gap: var(--025)"
448
+ >${this.getValueDisplay(this.currentValue)}</span
449
+ >`
450
+ : this.type === "language"
451
+ ? html `<ds-text
452
+ literal text=${this.getValueDisplay(this.currentValue)}
453
+ ></ds-text>`
454
+ : this.type === "theme"
455
+ ? html `<ds-text
456
+ text=${this.currentValue === "light" ? "Light" : "Dark"}
457
+ ></ds-text>`
458
+ : this.type === "accent-color"
459
+ ? html `<ds-text
460
+ text=${this.getColorKey(this.currentValue)}
461
+ ></ds-text>`
462
+ : this.type === "page-style"
463
+ ? html `<ds-text
464
+ text=${this.currentValue === "note" ? "Note" : "Page"}
465
+ ></ds-text>`
466
+ : html `<ds-text
467
+ literal text=${this.getValueDisplay(this.currentValue)}
468
+ ></ds-text>`}
469
+ </ds-button>
470
+ </div>
471
+ `;
472
+ }
473
+ handleTranslationsLoaded() {
474
+ this.translationsReady = true;
475
+ // Refresh language values if this is a language cycle
476
+ if (this.type === "language") {
477
+ const availableLanguages = getAvailableLanguagesSync();
478
+ this.values = availableLanguages;
479
+ }
480
+ this.setupInitialValue();
481
+ }
482
+ handleLanguageChanged() {
483
+ this.setupInitialValue();
484
+ }
485
+ handleThemeChanged() {
486
+ this.setupInitialValue();
487
+ }
488
+ handleAccentColorChanged() {
489
+ this.setupInitialValue();
490
+ }
491
+ handleNoteBehaviorChanged() {
492
+ this.setupInitialValue();
493
+ }
494
+ }
495
+ Cycle.formAssociated = true;
496
+ Cycle.styles = unsafeCSS(styles);
497
+ define("ds-cycle", Cycle);
@@ -0,0 +1,16 @@
1
+ import { LitElement } from "lit";
2
+ /**
3
+ * A component for displaying the current year
4
+ *
5
+ * @element ds-date
6
+ */
7
+ export declare class DateComponent extends LitElement {
8
+ static styles: import("lit").CSSResult;
9
+ render(): import("lit").TemplateResult<1>;
10
+ }
11
+ declare global {
12
+ interface HTMLElementTagNameMap {
13
+ "ds-date": DateComponent;
14
+ }
15
+ }
16
+ //# sourceMappingURL=ds-date.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ds-date.d.ts","sourceRoot":"","sources":["../../DS1/2-core/ds-date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAGlD;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAC3C,MAAM,CAAC,MAAM,0BAAqB;IAElC,MAAM;CAIP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,aAAa,CAAC;KAC1B;CACF"}
@@ -0,0 +1,15 @@
1
+ import { LitElement, html, unsafeCSS } from "lit";
2
+ import styles from "./styles/ds-date.css?inline";
3
+ /**
4
+ * A component for displaying the current year
5
+ *
6
+ * @element ds-date
7
+ */
8
+ export class DateComponent extends LitElement {
9
+ render() {
10
+ const year = new Date().getFullYear();
11
+ return html `<span>${year}</span>`;
12
+ }
13
+ }
14
+ DateComponent.styles = unsafeCSS(styles);
15
+ customElements.define("ds-date", DateComponent);
@@ -0,0 +1,65 @@
1
+ import { LitElement } from "lit";
2
+ import "./ds-button";
3
+ /** Native file selection, forms and focus, with one shared Button face. */
4
+ export declare class FilePicker extends LitElement {
5
+ static properties: {
6
+ label: {
7
+ type: StringConstructor;
8
+ };
9
+ icon: {
10
+ type: BooleanConstructor;
11
+ reflect: boolean;
12
+ };
13
+ preview: {
14
+ type: BooleanConstructor;
15
+ reflect: boolean;
16
+ };
17
+ area: {
18
+ type: BooleanConstructor;
19
+ reflect: boolean;
20
+ };
21
+ dragging: {
22
+ type: BooleanConstructor;
23
+ reflect: boolean;
24
+ };
25
+ compact: {
26
+ type: BooleanConstructor;
27
+ reflect: boolean;
28
+ };
29
+ primary: {
30
+ type: BooleanConstructor;
31
+ reflect: boolean;
32
+ };
33
+ secondary: {
34
+ type: BooleanConstructor;
35
+ reflect: boolean;
36
+ };
37
+ };
38
+ static styles: import("lit").CSSResult;
39
+ label: string;
40
+ icon: boolean;
41
+ preview: boolean;
42
+ area: boolean;
43
+ dragging: boolean;
44
+ compact: boolean;
45
+ primary: boolean;
46
+ secondary: boolean;
47
+ private controlDisabled;
48
+ private observer;
49
+ constructor();
50
+ private control;
51
+ private syncDisabled;
52
+ private showDrag;
53
+ private clearDrag;
54
+ private observeControl;
55
+ connectedCallback(): void;
56
+ disconnectedCallback(): void;
57
+ focus(options?: FocusOptions): void;
58
+ render(): import("lit").TemplateResult<1>;
59
+ }
60
+ declare global {
61
+ interface HTMLElementTagNameMap {
62
+ "ds-file-picker": FilePicker;
63
+ }
64
+ }
65
+ //# sourceMappingURL=ds-file-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ds-file-picker.d.ts","sourceRoot":"","sources":["../../DS1/2-core/ds-file-picker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAElD,OAAO,aAAa,CAAC;AAGrB,2EAA2E;AAC3E,qBAAa,UAAW,SAAQ,UAAU;IACxC,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MASf;IACF,MAAM,CAAC,MAAM,0BAAqB;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAmD;;IAMnE,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,QAAQ,CAKd;IACF,OAAO,CAAC,SAAS,CAAoD;IACrE,OAAO,CAAC,cAAc;IAUtB,iBAAiB;IAMjB,oBAAoB;IAOpB,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY;IAC5B,MAAM;CAMP;AAED,OAAO,CAAC,MAAM,CAAC;IAAE,UAAU,qBAAqB;QAAG,gBAAgB,EAAE,UAAU,CAAA;KAAE;CAAE"}
@@ -0,0 +1,80 @@
1
+ import { LitElement, html, unsafeCSS } from "lit";
2
+ import { define } from "../0-face/define";
3
+ import "./ds-button";
4
+ import styles from "./styles/ds-file-picker.css?inline";
5
+ /** Native file selection, forms and focus, with one shared Button face. */
6
+ export class FilePicker extends LitElement {
7
+ constructor() {
8
+ super();
9
+ this.controlDisabled = false;
10
+ this.observer = new MutationObserver(() => this.syncDisabled());
11
+ this.showDrag = (event) => {
12
+ const control = this.control();
13
+ if (control && !control.matches(":disabled") && event.dataTransfer?.types.includes("Files")) {
14
+ this.setAttribute("data-dragging", "");
15
+ }
16
+ };
17
+ this.clearDrag = () => { this.removeAttribute("data-dragging"); };
18
+ this.label = "";
19
+ this.icon = this.preview = this.area = this.dragging = this.compact = this.primary = this.secondary = false;
20
+ }
21
+ control() { return this.querySelector(":scope > input[type=file]"); }
22
+ syncDisabled() {
23
+ if (!this.isConnected)
24
+ return;
25
+ const control = this.control();
26
+ this.toggleAttribute("data-menu-item", control?.getAttribute("role") === "menuitem");
27
+ this.controlDisabled = !control || control.matches(":disabled");
28
+ this.toggleAttribute("data-disabled", this.controlDisabled);
29
+ if (this.controlDisabled)
30
+ this.clearDrag();
31
+ this.requestUpdate();
32
+ }
33
+ observeControl() {
34
+ this.observer.disconnect();
35
+ if (!this.isConnected)
36
+ return;
37
+ const control = this.control();
38
+ if (control)
39
+ this.observer.observe(control, { attributes: true, attributeFilter: ["disabled", "role"] });
40
+ for (let parent = this.parentElement; parent; parent = parent.parentElement) {
41
+ if (parent.localName === "fieldset")
42
+ this.observer.observe(parent, { attributes: true, attributeFilter: ["disabled"] });
43
+ }
44
+ this.syncDisabled();
45
+ }
46
+ connectedCallback() {
47
+ super.connectedCallback();
48
+ this.observeControl();
49
+ this.addEventListener("dragenter", this.showDrag);
50
+ this.addEventListener("dragleave", this.clearDrag);
51
+ this.addEventListener("drop", this.clearDrag);
52
+ }
53
+ disconnectedCallback() {
54
+ this.observer.disconnect();
55
+ this.clearDrag();
56
+ this.removeEventListener("dragenter", this.showDrag);
57
+ this.removeEventListener("dragleave", this.clearDrag);
58
+ this.removeEventListener("drop", this.clearDrag);
59
+ super.disconnectedCallback();
60
+ }
61
+ focus(options) { this.control()?.focus(options); }
62
+ render() {
63
+ return html `<ds-button control="host" inert aria-hidden="true" tabindex="-1"
64
+ .icon=${!this.area && (this.icon || this.preview)} .primary=${this.primary} .secondary=${this.secondary || this.area}
65
+ .disabled=${this.controlDisabled}><slot name="content">${this.label}</slot></ds-button>
66
+ <slot @slotchange=${this.observeControl}></slot>`;
67
+ }
68
+ }
69
+ FilePicker.properties = {
70
+ label: { type: String },
71
+ icon: { type: Boolean, reflect: true },
72
+ preview: { type: Boolean, reflect: true },
73
+ area: { type: Boolean, reflect: true },
74
+ dragging: { type: Boolean, reflect: true },
75
+ compact: { type: Boolean, reflect: true },
76
+ primary: { type: Boolean, reflect: true },
77
+ secondary: { type: Boolean, reflect: true },
78
+ };
79
+ FilePicker.styles = unsafeCSS(styles);
80
+ define("ds-file-picker", FilePicker);