ds-one 0.2.5-alpha.16 → 0.2.5-alpha.18

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.
@@ -1860,12 +1860,24 @@ var Text = class extends i6 {
1860
1860
  }
1861
1861
  _updateLanguageAttribute() {
1862
1862
  const lang = this._currentLanguage || currentLanguage.value;
1863
- const primaryLang = lang?.toLowerCase().split(/[-_]/)[0] || "";
1863
+ const parts = (lang || "").toLowerCase().split(/[-_]/).filter(Boolean);
1864
+ const primaryLang = parts[0] || "";
1864
1865
  if (primaryLang === "ja") {
1865
1866
  this.setAttribute("data-language", "ja");
1866
- } else {
1867
- this.removeAttribute("data-language");
1867
+ return;
1868
+ }
1869
+ if (primaryLang === "zh") {
1870
+ const hasHans = parts.includes("hans") || parts.includes("cn") || parts.includes("sg");
1871
+ const hasHant = parts.includes("hant") || parts.includes("tw") || parts.includes("hk") || parts.includes("mo");
1872
+ if (hasHans)
1873
+ this.setAttribute("data-language", "zh-hans");
1874
+ else if (hasHant)
1875
+ this.setAttribute("data-language", "zh-hant");
1876
+ else
1877
+ this.setAttribute("data-language", "zh");
1878
+ return;
1868
1879
  }
1880
+ this.removeAttribute("data-language");
1869
1881
  }
1870
1882
  _loadText() {
1871
1883
  if (!this.key) {
@@ -1904,6 +1916,17 @@ Text.styles = i4`
1904
1916
  :host([data-language="ja"]) {
1905
1917
  font-family: var(--typeface-regular-jp);
1906
1918
  }
1919
+
1920
+ :host([data-language="zh"]),
1921
+ :host([data-language="zh-hant"]) {
1922
+ font-family: var(--typeface-regular-zh-hant);
1923
+ font-weight: 800;
1924
+ }
1925
+
1926
+ :host([data-language="zh-hans"]) {
1927
+ font-family: var(--typeface-regular-zh-hans);
1928
+ font-weight: 800;
1929
+ }
1907
1930
  `;
1908
1931
  customElements.define("ds-text", Text);
1909
1932
 
@@ -2047,6 +2070,162 @@ Button.styles = i4`
2047
2070
  `;
2048
2071
  customElements.define("ds-button", Button);
2049
2072
 
2073
+ // dist/2-core/ds-banner.js
2074
+ var Banner = class extends i6 {
2075
+ constructor() {
2076
+ super(...arguments);
2077
+ this.textKey = "";
2078
+ this.actionKey = "";
2079
+ this.href = "";
2080
+ this.mailto = "";
2081
+ this.subjectKey = "";
2082
+ this.describeKey = "";
2083
+ this.appVersionKey = "";
2084
+ this.variant = "warning";
2085
+ this.version = "";
2086
+ this._showVersion = false;
2087
+ this._boundUpdate = () => this.requestUpdate();
2088
+ }
2089
+ connectedCallback() {
2090
+ super.connectedCallback();
2091
+ window.addEventListener("translations-loaded", this._boundUpdate);
2092
+ window.addEventListener("language-changed", this._boundUpdate);
2093
+ }
2094
+ disconnectedCallback() {
2095
+ super.disconnectedCallback();
2096
+ window.removeEventListener("translations-loaded", this._boundUpdate);
2097
+ window.removeEventListener("language-changed", this._boundUpdate);
2098
+ }
2099
+ _toggleVersion() {
2100
+ if (this.version) {
2101
+ this._showVersion = !this._showVersion;
2102
+ }
2103
+ }
2104
+ _getMailtoHref() {
2105
+ if (this.href && this.href !== "#")
2106
+ return this.href;
2107
+ if (this.mailto) {
2108
+ try {
2109
+ const subject = this.subjectKey ? getText(this.subjectKey) || this.subjectKey : "Issue report";
2110
+ const describe = this.describeKey ? getText(this.describeKey) || this.describeKey : "Describe the issue:";
2111
+ const appVersionLabel = this.appVersionKey ? getText(this.appVersionKey) || this.appVersionKey : "App version:";
2112
+ const body = `${describe}
2113
+
2114
+
2115
+ ${appVersionLabel} ${this.version || ""}`;
2116
+ return `mailto:${this.mailto}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;
2117
+ } catch (error) {
2118
+ return `mailto:${this.mailto}?subject=Issue%20report&body=Describe%20the%20issue%3A%0A%0A%0AApp%20version%3A%20${this.version || ""}`;
2119
+ }
2120
+ }
2121
+ return "#";
2122
+ }
2123
+ render() {
2124
+ const mailtoHref = this._getMailtoHref();
2125
+ return x`
2126
+ <div class="text-wrapper" @click=${this._toggleVersion}>
2127
+ ${this._showVersion && this.version ? x`<ds-text default-value=${this.version}></ds-text>` : x`<ds-text key=${this.textKey}><slot></slot></ds-text>`}
2128
+ </div>
2129
+ ${this.actionKey ? x`
2130
+ <div class="action-wrapper">
2131
+ <a href=${mailtoHref}>
2132
+ <ds-text key=${this.actionKey}></ds-text>
2133
+ </a>
2134
+ </div>
2135
+ ` : ""}
2136
+ `;
2137
+ }
2138
+ };
2139
+ Banner.properties = {
2140
+ textKey: { type: String, attribute: "text-key" },
2141
+ actionKey: { type: String, attribute: "action-key" },
2142
+ href: { type: String },
2143
+ mailto: { type: String },
2144
+ subjectKey: { type: String, attribute: "subject-key" },
2145
+ describeKey: { type: String, attribute: "describe-key" },
2146
+ appVersionKey: { type: String, attribute: "app-version-key" },
2147
+ variant: { type: String },
2148
+ version: { type: String },
2149
+ _showVersion: { type: Boolean, state: true }
2150
+ };
2151
+ Banner.styles = i4`
2152
+ :host {
2153
+ display: flex;
2154
+ position: absolute;
2155
+ top: 0;
2156
+ left: 0;
2157
+ right: 0;
2158
+ width: 100%;
2159
+ height: calc(var(--unit) * var(--sf, 1));
2160
+ align-items: center;
2161
+ justify-content: space-between;
2162
+ padding: 0 calc(var(--unit) * var(--sf, 1));
2163
+ box-sizing: border-box;
2164
+ z-index: 9999;
2165
+ }
2166
+
2167
+ :host([variant="warning"]) {
2168
+ background-color: color-mix(in srgb, var(--yellow) 50%, transparent);
2169
+ --banner-text-color: color-mix(in srgb, var(--black) 50%, transparent);
2170
+ --banner-action-color: var(--slate);
2171
+ }
2172
+
2173
+ :host([variant="info"]) {
2174
+ background-color: rgba(var(--sharp-blue-rgb, 0, 122, 255), 0.7);
2175
+ --banner-text-color: var(--white, #fff);
2176
+ --banner-action-color: var(--white, #fff);
2177
+ }
2178
+
2179
+ :host([variant="success"]) {
2180
+ background-color: rgba(var(--apple-green-rgb, 52, 199, 89), 0.7);
2181
+ --banner-text-color: var(--white, #fff);
2182
+ --banner-action-color: var(--white, #fff);
2183
+ }
2184
+
2185
+ :host([variant="error"]) {
2186
+ background-color: rgba(var(--tuned-red-rgb, 255, 59, 48), 0.7);
2187
+ --banner-text-color: var(--white, #fff);
2188
+ --banner-action-color: var(--slate, #1e1e1e);
2189
+ }
2190
+
2191
+ .text-wrapper {
2192
+ flex: 1;
2193
+ cursor: pointer;
2194
+ user-select: none;
2195
+ }
2196
+
2197
+ .text-wrapper ds-text,
2198
+ .text-wrapper .version {
2199
+ color: var(--banner-text-color);
2200
+ }
2201
+
2202
+ .action-wrapper {
2203
+ font-size: calc(12px * var(--sf, 1));
2204
+ }
2205
+
2206
+ .action-wrapper a {
2207
+ color: var(--banner-action-color);
2208
+ text-decoration: none;
2209
+ font-family: var(--typeface-regular);
2210
+ font-size: calc(12px * var(--sf, 1));
2211
+ cursor: pointer;
2212
+ pointer-events: auto;
2213
+ display: inline-block;
2214
+ }
2215
+
2216
+ .action-wrapper a:hover {
2217
+ opacity: 0.8;
2218
+ }
2219
+
2220
+ .action-wrapper ds-text {
2221
+ color: var(--banner-action-color);
2222
+ font-family: var(--typeface-regular);
2223
+ font-size: calc(12px * var(--sf, 1));
2224
+ pointer-events: none;
2225
+ }
2226
+ `;
2227
+ customElements.define("ds-banner", Banner);
2228
+
2050
2229
  // node_modules/lit-html/directives/unsafe-html.js
2051
2230
  var e6 = class extends i2 {
2052
2231
  constructor(i7) {
@@ -2384,7 +2563,6 @@ var Cycle = class extends i6 {
2384
2563
  return {
2385
2564
  type: { type: String },
2386
2565
  values: { type: Array },
2387
- label: { type: String },
2388
2566
  currentValue: { type: String, state: true },
2389
2567
  // Make this a private state property
2390
2568
  translationsReady: { type: Boolean, state: true },
@@ -2397,7 +2575,6 @@ var Cycle = class extends i6 {
2397
2575
  super();
2398
2576
  this.type = "";
2399
2577
  this.values = [];
2400
- this.label = "";
2401
2578
  this.currentValue = "";
2402
2579
  this.translationsReady = false;
2403
2580
  this.disabled = false;
@@ -2425,12 +2602,10 @@ var Cycle = class extends i6 {
2425
2602
  const availableLanguages = getAvailableLanguagesSync();
2426
2603
  this.values = availableLanguages;
2427
2604
  this.currentValue = currentLanguage.value;
2428
- this.label = this.getLabel();
2429
2605
  } else if (this.type === "theme") {
2430
2606
  this.values = ["light", "dark"];
2431
2607
  const currentThemeValue = currentTheme.get();
2432
2608
  this.currentValue = currentThemeValue;
2433
- this.label = this.getLabel();
2434
2609
  } else if (this.type === "accent-color") {
2435
2610
  this.values = [
2436
2611
  "--apple-green",
@@ -2451,16 +2626,13 @@ var Cycle = class extends i6 {
2451
2626
  this.currentValue = currentNotesStyle;
2452
2627
  const currentPageStyle = getPageStyle();
2453
2628
  this.disabled = currentPageStyle === "note";
2454
- this.label = this.getLabel();
2455
2629
  } else if (this.type === "page-style") {
2456
2630
  this.values = ["note", "page"];
2457
2631
  const currentPageStyle = getPageStyle();
2458
2632
  this.currentValue = currentPageStyle;
2459
- this.label = this.getLabel();
2460
2633
  } else if (this.type === "icon-only") {
2461
2634
  this.values = ["note", "page"];
2462
2635
  this.currentValue = this.values[0];
2463
- this.label = "";
2464
2636
  }
2465
2637
  this.requestUpdate();
2466
2638
  }
@@ -2483,11 +2655,9 @@ var Cycle = class extends i6 {
2483
2655
  if (this.type === "language") {
2484
2656
  const currentLang = currentLanguage.value;
2485
2657
  this.currentValue = currentLang;
2486
- this.label = this.getLabel();
2487
2658
  } else if (this.type === "theme") {
2488
2659
  const currentThemeValue = currentTheme.get();
2489
2660
  this.currentValue = currentThemeValue;
2490
- this.label = this.getLabel();
2491
2661
  } else if (this.type === "accent-color") {
2492
2662
  const currentAccentColor = getAccentColor();
2493
2663
  this.currentValue = currentAccentColor;
@@ -2497,15 +2667,12 @@ var Cycle = class extends i6 {
2497
2667
  this.currentValue = currentNotesStyle;
2498
2668
  const currentPageStyle = getPageStyle();
2499
2669
  this.disabled = currentPageStyle === "note";
2500
- this.label = this.getLabel();
2501
2670
  } else if (this.type === "page-style") {
2502
2671
  const currentPageStyle = getPageStyle();
2503
2672
  this.currentValue = currentPageStyle;
2504
- this.label = this.getLabel();
2505
2673
  } else if (this.type === "icon-only") {
2506
2674
  const currentPageStyle = getPageStyle();
2507
2675
  this.currentValue = currentPageStyle;
2508
- this.label = "";
2509
2676
  }
2510
2677
  this.requestUpdate();
2511
2678
  }
@@ -2587,12 +2754,10 @@ var Cycle = class extends i6 {
2587
2754
  this.currentValue = newIconOnlyValue;
2588
2755
  savePageStyle(newIconOnlyValue);
2589
2756
  savePreferences({ pageStyle: newIconOnlyValue });
2590
- this.label = "";
2591
2757
  window.dispatchEvent(new CustomEvent("page-style-changed", {
2592
2758
  detail: { behavior: newIconOnlyValue }
2593
2759
  }));
2594
2760
  }
2595
- this.label = this.getLabel();
2596
2761
  this.requestUpdate();
2597
2762
  }
2598
2763
  getValueDisplay(value) {
@@ -2677,101 +2842,39 @@ var Cycle = class extends i6 {
2677
2842
  }
2678
2843
  return x`<span>${style}</span>`;
2679
2844
  }
2680
- getLabel() {
2681
- if (this.type === "language") {
2682
- if (this.translationsReady) {
2683
- const translatedLabel = translate("language");
2684
- if (translatedLabel && translatedLabel !== "language") {
2685
- return translatedLabel;
2686
- }
2687
- }
2688
- return "Language";
2689
- } else if (this.type === "theme") {
2690
- if (this.translationsReady) {
2691
- const translatedLabel = translate("theme");
2692
- if (translatedLabel && translatedLabel !== "theme") {
2693
- return translatedLabel;
2694
- }
2695
- }
2696
- return "Theme";
2697
- } else if (this.type === "accent-color") {
2698
- if (this.translationsReady) {
2699
- const translatedLabel = translate("accentColor");
2700
- if (translatedLabel && translatedLabel !== "accentColor") {
2701
- return translatedLabel;
2702
- }
2703
- }
2704
- return "Accent Color";
2705
- } else if (this.type === "notes-style-medium") {
2706
- if (this.translationsReady) {
2707
- const translatedLabel = translate("notesStyle");
2708
- if (translatedLabel && translatedLabel !== "notesStyle") {
2709
- return translatedLabel;
2710
- }
2711
- }
2712
- return "Notes Style";
2713
- } else if (this.type === "page-style") {
2714
- if (this.translationsReady) {
2715
- const translatedLabel = translate("clickingItem");
2716
- if (translatedLabel && translatedLabel !== "clickingItem") {
2717
- return translatedLabel;
2718
- }
2719
- }
2720
- return "Clic";
2721
- } else if (this.type === "icon-only") {
2722
- return "";
2723
- }
2724
- return this.label;
2725
- }
2726
2845
  render() {
2727
2846
  return x`
2728
- <div class="cycle-container">
2729
- ${this.type !== "icon-only" ? x`${this.type === "language" ? x`<ds-text
2730
- key="language"
2731
- default-value="Language"
2732
- class="cycle-label"
2847
+ <div class="cycle">
2848
+ <ds-button
2849
+ variant=${this.variant || (this.type === "language" || this.type === "theme" ? "secondary" : "primary")}
2850
+ ?disabled=${this.disabled}
2851
+ @click=${this.handleButtonClick}
2852
+ >
2853
+ ${this.type === "notes-style-medium" || this.type === "icon-only" ? x`<span
2854
+ style="display: inline-flex; align-items: center; gap: var(--025)"
2855
+ >${this.getValueDisplay(this.currentValue)}</span
2856
+ >` : this.type === "language" ? x`<ds-text
2857
+ default-value=${this.getValueDisplay(this.currentValue)}
2733
2858
  ></ds-text>` : this.type === "theme" ? x`<ds-text
2734
- key="theme"
2735
- default-value="Theme"
2736
- class="cycle-label"
2859
+ key=${this.currentValue}
2860
+ default-value=${this.currentValue}
2737
2861
  ></ds-text>` : this.type === "accent-color" ? x`<ds-text
2738
- key="accentColor"
2739
- default-value="Accent color"
2740
- class="cycle-label"
2741
- ></ds-text>` : x`<span class="cycle-label">${this.label}</span>`}` : ""}
2742
- <div
2743
- style="display: flex; align-items: center; ${this.type === "icon-only" ? "justify-content: center;" : ""}"
2744
- >
2745
- <ds-button
2746
- variant=${this.variant || (this.type === "language" || this.type === "theme" ? "secondary" : "primary")}
2747
- ?disabled=${this.disabled}
2748
- @click=${this.handleButtonClick}
2749
- >
2750
- ${this.type === "notes-style-medium" || this.type === "icon-only" ? x`<span
2751
- style="display: inline-flex; align-items: center; gap: var(--025)"
2752
- >${this.getValueDisplay(this.currentValue)}</span
2753
- >` : this.type === "language" ? x`<ds-text
2754
- default-value=${this.getValueDisplay(this.currentValue)}
2755
- ></ds-text>` : this.type === "theme" ? x`<ds-text
2756
- key=${this.currentValue}
2757
- default-value=${this.currentValue}
2758
- ></ds-text>` : this.type === "accent-color" ? x`<ds-text
2759
- key=${this.getColorKey(this.currentValue)}
2760
- default-value=${this.getColorName(this.currentValue)}
2761
- ></ds-text>` : this.type === "page-style" ? x`<ds-text
2762
- key=${this.currentValue}
2763
- default-value=${this.currentValue}
2764
- ></ds-text>` : x`<ds-text
2765
- default-value=${this.getValueDisplay(this.currentValue)}
2766
- ></ds-text>`}
2767
- </ds-button>
2768
- ${this.type === "accent-color" ? x`
2769
- <div
2770
- class="color-preview"
2771
- style="background-color: var(${this.currentValue})"
2772
- ></div>
2773
- ` : ""}
2774
- </div>
2862
+ key=${this.getColorKey(this.currentValue)}
2863
+ default-value=${this.getColorName(this.currentValue)}
2864
+ ></ds-text>` : this.type === "page-style" ? x`<ds-text
2865
+ key=${this.currentValue}
2866
+ default-value=${this.currentValue}
2867
+ ></ds-text>` : x`<ds-text
2868
+ default-value=${this.getValueDisplay(this.currentValue)}
2869
+ ></ds-text>`}
2870
+ </ds-button>
2871
+
2872
+ ${this.type === "accent-color" ? x`
2873
+ <div
2874
+ class="color-preview"
2875
+ style="background-color: var(${this.currentValue})"
2876
+ ></div>
2877
+ ` : ""}
2775
2878
  </div>
2776
2879
  `;
2777
2880
  }
@@ -2816,19 +2919,118 @@ var Cycle = class extends i6 {
2816
2919
  }
2817
2920
  };
2818
2921
  Cycle.styles = i4`
2819
- .cycle-container {
2820
- display: flex;
2821
- justify-content: space-between;
2922
+ :host {
2923
+ display: inline-flex;
2924
+ align-items: center;
2925
+ }
2926
+
2927
+ .cycle {
2928
+ display: inline-flex;
2929
+ align-items: center;
2822
2930
  gap: var(--025);
2823
- width: 100%;
2824
2931
  }
2825
2932
 
2826
- .cycle-label {
2827
- color: var(--text-color-primary);
2933
+ .color-preview {
2934
+ width: var(--05);
2935
+ height: var(--05);
2936
+ border-radius: 999px;
2937
+ border: 1px solid
2938
+ color-mix(in srgb, var(--text-color-primary) 20%, transparent);
2939
+ flex: 0 0 auto;
2828
2940
  }
2829
2941
  `;
2830
2942
  customElements.define("ds-cycle", Cycle);
2831
2943
 
2944
+ // dist/2-core/ds-gap.js
2945
+ var Gap = class extends i6 {
2946
+ constructor() {
2947
+ super();
2948
+ this.size = "";
2949
+ }
2950
+ render() {
2951
+ return x``;
2952
+ }
2953
+ };
2954
+ Gap.properties = {
2955
+ /** Raw scale token selector ("01", "025", "05", "08", "1", "2", "3", "4", "8", "12") */
2956
+ size: { type: String, reflect: true }
2957
+ };
2958
+ Gap.styles = i4`
2959
+ :host {
2960
+ display: block;
2961
+ width: 100%;
2962
+ /* Default if no attribute is provided */
2963
+ --gap-size: var(--unit);
2964
+ height: var(--gap-size);
2965
+ flex: 0 0 auto;
2966
+ }
2967
+
2968
+ /* Semantic sizing tokens (from DS1/1-root/one.css) */
2969
+ :host([tenth]) {
2970
+ --gap-size: var(--tenth);
2971
+ }
2972
+ :host([quarter]) {
2973
+ --gap-size: var(--quarter);
2974
+ }
2975
+ :host([half]) {
2976
+ --gap-size: var(--half);
2977
+ }
2978
+ :host([eight-tenth]) {
2979
+ --gap-size: var(--eight-tenth);
2980
+ }
2981
+ :host([unit]) {
2982
+ --gap-size: var(--unit);
2983
+ }
2984
+ :host([double]) {
2985
+ --gap-size: var(--double);
2986
+ }
2987
+ :host([triple]) {
2988
+ --gap-size: var(--triple);
2989
+ }
2990
+ :host([quad]) {
2991
+ --gap-size: var(--quad);
2992
+ }
2993
+ :host([oct]) {
2994
+ --gap-size: var(--oct);
2995
+ }
2996
+ :host([dozen]) {
2997
+ --gap-size: var(--dozen);
2998
+ }
2999
+
3000
+ /* Raw scale sizing (size="...") */
3001
+ :host([size="01"]) {
3002
+ --gap-size: var(--01);
3003
+ }
3004
+ :host([size="025"]) {
3005
+ --gap-size: var(--025);
3006
+ }
3007
+ :host([size="05"]) {
3008
+ --gap-size: var(--05);
3009
+ }
3010
+ :host([size="08"]) {
3011
+ --gap-size: var(--08);
3012
+ }
3013
+ :host([size="1"]) {
3014
+ --gap-size: var(--1);
3015
+ }
3016
+ :host([size="2"]) {
3017
+ --gap-size: var(--2);
3018
+ }
3019
+ :host([size="3"]) {
3020
+ --gap-size: var(--3);
3021
+ }
3022
+ :host([size="4"]) {
3023
+ --gap-size: var(--4);
3024
+ }
3025
+ :host([size="8"]) {
3026
+ --gap-size: var(--8);
3027
+ }
3028
+ :host([size="12"]) {
3029
+ --gap-size: var(--12);
3030
+ }
3031
+ `;
3032
+ customElements.define("ds-gap", Gap);
3033
+
2832
3034
  // dist/2-core/ds-tooltip.js
2833
3035
  var Tooltip = class extends i6 {
2834
3036
  constructor() {
@@ -3033,6 +3235,95 @@ Row.styles = i4`
3033
3235
  `;
3034
3236
  customElements.define("ds-row", Row);
3035
3237
 
3238
+ // dist/3-unit/ds-accordion.js
3239
+ var Accordion = class extends i6 {
3240
+ constructor() {
3241
+ super();
3242
+ this.summaryKey = "";
3243
+ this.detailsKey = "";
3244
+ this.open = false;
3245
+ }
3246
+ render() {
3247
+ return x`
3248
+ <details ?open=${this.open}>
3249
+ <summary>
3250
+ <ds-row class="summaryRow" type="centered">
3251
+ <ds-text .key=${this.summaryKey}></ds-text>
3252
+ <ds-icon class="chevron" aria-hidden="true">
3253
+ <svg
3254
+ viewBox="0 0 10.157 8.219"
3255
+ xmlns="http://www.w3.org/2000/svg"
3256
+ aria-hidden="true"
3257
+ focusable="false"
3258
+ >
3259
+ <path
3260
+ d="M5.078 8.219L0 3.141L1.414 1.727L5.078 5.391L8.743 1.727L10.157 3.141L5.078 8.219Z"
3261
+ fill="currentColor"
3262
+ />
3263
+ </svg>
3264
+ </ds-icon>
3265
+ </ds-row>
3266
+ </summary>
3267
+
3268
+ <div class="detailsBody">
3269
+ <ds-text class="detailsText" .key=${this.detailsKey}></ds-text>
3270
+ </div>
3271
+ </details>
3272
+ `;
3273
+ }
3274
+ };
3275
+ Accordion.properties = {
3276
+ summaryKey: { type: String, attribute: "summary-key" },
3277
+ detailsKey: { type: String, attribute: "details-key" },
3278
+ open: { type: Boolean, reflect: true }
3279
+ };
3280
+ Accordion.styles = i4`
3281
+ :host {
3282
+ display: block;
3283
+ width: calc(240px * var(--sf));
3284
+ color: var(--text-color-primary);
3285
+ }
3286
+
3287
+ details {
3288
+ width: 100%;
3289
+ }
3290
+
3291
+ summary {
3292
+ cursor: pointer;
3293
+ user-select: none;
3294
+ list-style: none;
3295
+ outline: none;
3296
+ }
3297
+
3298
+ summary::-webkit-details-marker {
3299
+ display: none;
3300
+ }
3301
+
3302
+ .summaryRow {
3303
+ width: 100%;
3304
+ }
3305
+
3306
+ ds-icon.chevron {
3307
+ transform: rotate(0deg);
3308
+ transition: transform 140ms ease;
3309
+ }
3310
+
3311
+ details[open] ds-icon.chevron {
3312
+ transform: rotate(180deg);
3313
+ }
3314
+
3315
+ .detailsBody {
3316
+ padding-top: calc(var(--half) * var(--sf));
3317
+ }
3318
+
3319
+ .detailsText {
3320
+ display: block;
3321
+ white-space: normal;
3322
+ text-align: left;
3323
+ }
3324
+ `;
3325
+ customElements.define("ds-accordion", Accordion);
3326
+
3036
3327
  // dist/3-unit/ds-table.js
3037
3328
  var DsTable = class extends i6 {
3038
3329
  constructor() {
@@ -3590,11 +3881,14 @@ Layout.styles = i4`
3590
3881
  `;
3591
3882
  customElements.define("ds-layout", Layout);
3592
3883
  export {
3884
+ Accordion,
3885
+ Banner,
3593
3886
  Button,
3594
3887
  Container,
3595
3888
  Cycle,
3596
3889
  DateComponent,
3597
3890
  DsTable,
3891
+ Gap,
3598
3892
  Grid,
3599
3893
  Icon,
3600
3894
  Layout,