@getflip/swirl-components 0.381.1 → 0.382.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/components.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2025-09-18T11:23:24",
2
+ "timestamp": "2025-09-19T08:54:27",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.35.0",
@@ -75769,7 +75769,7 @@
75769
75769
  "path": "src/components/swirl-tab-bar/swirl-tab-bar.tsx"
75770
75770
  },
75771
75771
  "src/components/swirl-tab-bar/swirl-tab-bar.tsx::SwirlTabBarTab": {
75772
- "declaration": "{\n active?: boolean;\n icon?: string;\n id: string;\n label: string;\n}",
75772
+ "declaration": "{\n active?: boolean;\n icon?: string;\n id: string;\n label: string;\n suffix?: string;\n}",
75773
75773
  "docstring": "",
75774
75774
  "path": "src/components/swirl-tab-bar/swirl-tab-bar.tsx"
75775
75775
  },
@@ -4,7 +4,7 @@ var index = require('./index-DM-IG6w2.js');
4
4
  var index$1 = require('./index-DcAhLZUH.js');
5
5
  var utils = require('./utils-CllbYlRY.js');
6
6
 
7
- const swirlTabBarCss = ".sc-swirl-tab-bar-h{display:flex;height:var(--swirl-tab-bar-height)}.sc-swirl-tab-bar-h *.sc-swirl-tab-bar{box-sizing:border-box}.tab-bar.sc-swirl-tab-bar{position:relative;display:flex;width:100%;justify-content:flex-start;overflow-x:auto;scrollbar-width:none}.tab-bar.tab-bar--variant-default.sc-swirl-tab-bar{border-bottom:var(--swirl-tab-bar-border-width) solid\n var(--s-border-default)}.tab-bar.tab-bar--variant-pill.sc-swirl-tab-bar{gap:var(--s-space-8)}.tab-bar--justify-evenly.sc-swirl-tab-bar>*.sc-swirl-tab-bar{flex:1}.tab-bar__tab.sc-swirl-tab-bar{position:relative;display:flex;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;margin:0;align-items:center;border:none;font:inherit;font-weight:var(--s-font-weight-medium);line-height:var(--s-line-height-lg);cursor:pointer;justify-content:center}.tab-bar__tab.tab-bar__tab--variant-default.sc-swirl-tab-bar{background-color:transparent;color:var(--s-interactive-neutral-default);padding:var(--s-space-4) var(--s-space-8)}.tab-bar__tab.tab-bar__tab--variant-default.sc-swirl-tab-bar:not(.tab-bar__tab--active):hover:after{position:absolute;bottom:0;left:50%;width:calc(100% - var(--s-space-8));height:0.1875rem;border-radius:0.125rem;background-color:var(--s-border-default);content:\"\";transform:translateX(-50%);pointer-events:none}.tab-bar__tab.tab-bar__tab--variant-default.tab-bar__tab--active.sc-swirl-tab-bar{color:var(--s-text-highlight)}.tab-bar__tab.tab-bar__tab--variant-default.tab-bar__tab--active.sc-swirl-tab-bar:after{position:absolute;bottom:0;left:50%;width:calc(100% - var(--s-space-8));height:0.1875rem;border-radius:0.125rem;background-color:var(--s-border-highlight);content:\"\";transform:translateX(-50%);pointer-events:none}.tab-bar__tab.tab-bar__tab--variant-default.sc-swirl-tab-bar:focus{outline:none}.tab-bar__tab.tab-bar__tab--variant-default.sc-swirl-tab-bar:focus-visible .tab-bar__tab-label.sc-swirl-tab-bar{border-radius:var(--s-border-radius-s);box-shadow:inset 0 0 0 0.125rem var(--s-focus-default)}.tab-bar__tab.tab-bar__tab--variant-pill.sc-swirl-tab-bar{border-radius:var(--s-border-radius-full-round);background:var(--s-action-neutral-default);color:var(--s-text-default);padding:var(--s-space-8) var(--s-space-16);gap:var(--s-space-8)}.tab-bar__tab.tab-bar__tab--variant-pill.sc-swirl-tab-bar:hover{background:var(--s-action-neutral-hovered)}.tab-bar__tab.tab-bar__tab--variant-pill.sc-swirl-tab-bar:active{background:var(--s-action-neutral-pressed)}.tab-bar__tab.tab-bar__tab--variant-pill.tab-bar__tab--active.sc-swirl-tab-bar{background:var(--s-action-primary-default);color:var(--s-text-on-action-primary)}.tab-bar__tab.tab-bar__tab--variant-pill.sc-swirl-tab-bar:focus-visible{outline-color:var(--s-focus-default);outline-offset:var(--s-space-2)}@media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px){.tab-bar__tab.sc-swirl-tab-bar{font-size:var(--s-font-size-sm);line-height:var(--s-line-height-sm);padding:calc(var(--s-space-4) + var(--s-space-2)) var(--s-space-8)}}.tab-bar__tab-icon.sc-swirl-tab-bar{display:inline-flex}.tab-bar__tab-label.sc-swirl-tab-bar{display:inline-flex;padding:var(--s-space-8) var(--s-space-8);text-align:center}.tab-bar__tab-label.tab-bar__tab-label--variant-pill.sc-swirl-tab-bar{padding:0}";
7
+ const swirlTabBarCss = ".sc-swirl-tab-bar-h{display:flex;height:var(--swirl-tab-bar-height)}.sc-swirl-tab-bar-h *.sc-swirl-tab-bar{box-sizing:border-box}.tab-bar.sc-swirl-tab-bar{position:relative;display:flex;overflow-x:auto;width:100%;justify-content:flex-start;scrollbar-width:none}.tab-bar.tab-bar--variant-default.sc-swirl-tab-bar{border-bottom:var(--swirl-tab-bar-border-width) solid\n var(--s-border-default)}.tab-bar.tab-bar--variant-pill.sc-swirl-tab-bar{gap:var(--s-space-8)}.tab-bar--justify-evenly.sc-swirl-tab-bar>*.sc-swirl-tab-bar{flex:1}.tab-bar__tab.sc-swirl-tab-bar{position:relative;display:flex;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;margin:0;justify-content:center;align-items:center;border:none;font:inherit;font-weight:var(--s-font-weight-medium);line-height:var(--s-line-height-lg);cursor:pointer}.tab-bar__tab.tab-bar__tab--variant-default.sc-swirl-tab-bar{padding:var(--s-space-4) var(--s-space-8);color:var(--s-interactive-neutral-default);background-color:transparent}.tab-bar__tab.tab-bar__tab--variant-default.sc-swirl-tab-bar:not(.tab-bar__tab--active):hover{color:var(--s-interactive-neutral-hovered)}.tab-bar__tab.tab-bar__tab--variant-default.sc-swirl-tab-bar:not(.tab-bar__tab--active):hover:after{position:absolute;bottom:0;left:50%;width:calc(100% - var(--s-space-8));height:0.1875rem;border-radius:0.125rem;background-color:var(--s-border-default);content:\"\";transform:translateX(-50%);pointer-events:none}.tab-bar__tab.tab-bar__tab--variant-default.sc-swirl-tab-bar:not(.tab-bar__tab--active):hover .tab-bar__tab-suffix.sc-swirl-tab-bar{color:var(--s-interactive-neutral-hovered)}.tab-bar__tab.tab-bar__tab--variant-default.sc-swirl-tab-bar:not(.tab-bar__tab--active):active{color:var(--s-interactive-neutral-pressed)}.tab-bar__tab.tab-bar__tab--variant-default.sc-swirl-tab-bar:not(.tab-bar__tab--active):active .tab-bar__tab-suffix.sc-swirl-tab-bar{color:var(--s-interactive-neutral-pressed)}.tab-bar__tab.tab-bar__tab--variant-default.tab-bar__tab--active.sc-swirl-tab-bar{color:var(--s-text-highlight)}.tab-bar__tab.tab-bar__tab--variant-default.tab-bar__tab--active.sc-swirl-tab-bar:after{position:absolute;bottom:0;left:50%;width:calc(100% - var(--s-space-8));height:0.1875rem;border-radius:0.125rem;background-color:var(--s-border-highlight);content:\"\";transform:translateX(-50%);pointer-events:none}.tab-bar__tab.tab-bar__tab--variant-default.tab-bar__tab--active.sc-swirl-tab-bar .tab-bar__tab-suffix.sc-swirl-tab-bar{color:var(--s-text-highlight)}.tab-bar__tab.tab-bar__tab--variant-default.sc-swirl-tab-bar:focus{outline:none}.tab-bar__tab.tab-bar__tab--variant-default.sc-swirl-tab-bar:focus-visible .tab-bar__tab-label.sc-swirl-tab-bar{border-radius:var(--s-border-radius-s);box-shadow:inset 0 0 0 0.125rem var(--s-focus-default)}.tab-bar__tab.tab-bar__tab--variant-pill.sc-swirl-tab-bar{padding:var(--s-space-8) var(--s-space-16);border-radius:var(--s-border-radius-full-round);color:var(--s-text-default);background:var(--s-action-neutral-default);gap:var(--s-space-8)}.tab-bar__tab.tab-bar__tab--variant-pill.sc-swirl-tab-bar:hover{background:var(--s-action-neutral-hovered)}.tab-bar__tab.tab-bar__tab--variant-pill.sc-swirl-tab-bar:active{background:var(--s-action-neutral-pressed)}.tab-bar__tab.tab-bar__tab--variant-pill.tab-bar__tab--active.sc-swirl-tab-bar{color:var(--s-text-on-action-primary);background:var(--s-action-primary-default)}.tab-bar__tab.tab-bar__tab--variant-pill.tab-bar__tab--active.sc-swirl-tab-bar .tab-bar__tab-suffix.sc-swirl-tab-bar{color:var(--s-text-on-action-primary)}.tab-bar__tab.tab-bar__tab--variant-pill.sc-swirl-tab-bar:focus-visible{outline-color:var(--s-focus-default);outline-offset:var(--s-space-2)}.tab-bar__tab.tab-bar__tab--variant-pill.sc-swirl-tab-bar .tab-bar__tab-suffix.sc-swirl-tab-bar{color:var(--s-text-subdued)}@media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px){.tab-bar__tab.sc-swirl-tab-bar{padding:calc(var(--s-space-4) + var(--s-space-2)) var(--s-space-8);font-size:var(--s-font-size-sm);line-height:var(--s-line-height-sm)}}.tab-bar__tab-icon.sc-swirl-tab-bar{display:inline-flex}.tab-bar__tab-label.sc-swirl-tab-bar{display:inline-flex;padding:var(--s-space-8) var(--s-space-8);text-align:center;white-space:nowrap;gap:var(--s-space-4)}.tab-bar__tab-label.tab-bar__tab-label--variant-pill.sc-swirl-tab-bar{padding:0}.tab-bar__tab-suffix.sc-swirl-tab-bar{color:var(--s-interactive-neutral-default);font-weight:var(--s-font-weight-normal)}";
8
8
 
9
9
  const SwirlTabBar = class {
10
10
  constructor(hostRef) {
@@ -63,7 +63,7 @@ const SwirlTabBar = class {
63
63
  ? `var(--s-space-${this.paddingBlockStart})`
64
64
  : undefined,
65
65
  };
66
- return (index.h(index.Host, { key: 'a74a02669913990d439be0c10a1487a52bf3c423' }, index.h("div", { key: '380105cfde66b814a86038b66bc87a82dc06e020', "aria-label": this.label, class: className, onKeyDown: this.onKeyDown, role: this.disableTabSemantics ? undefined : "tablist", style: styles }, this.tabs.map((tab) => {
66
+ return (index.h(index.Host, { key: '7a40ab6466db00ef0bffd646d7647afa171dbf42' }, index.h("div", { key: 'd3fff309915530aa60a94c1f13e36a89d1fd9094', "aria-label": this.label, class: className, onKeyDown: this.onKeyDown, role: this.disableTabSemantics ? undefined : "tablist", style: styles }, this.tabs.map((tab) => {
67
67
  const className = index$1.classnames("tab-bar__tab", {
68
68
  "tab-bar__tab--active": tab.active,
69
69
  "tab-bar__tab--variant-pill": this.variant === "pill",
@@ -78,7 +78,7 @@ const SwirlTabBar = class {
78
78
  ? "true"
79
79
  : "false", class: className, id: `tab-${tab.id}`, key: tab.id,
80
80
  // eslint-disable-next-line react/jsx-no-bind
81
- onClick: () => this.activateTab.emit(tab.id), onFocus: this.onTabFocus, role: this.disableTabSemantics ? undefined : "tab", tabIndex: this.disableTabSemantics ? undefined : tab.active ? 0 : -1, type: "button" }, tab.icon && (index.h("span", { class: "tab-bar__tab-icon", innerHTML: tab.icon })), index.h("span", { class: labelClassName }, tab.label)));
81
+ onClick: () => this.activateTab.emit(tab.id), onFocus: this.onTabFocus, role: this.disableTabSemantics ? undefined : "tab", tabIndex: this.disableTabSemantics ? undefined : tab.active ? 0 : -1, type: "button" }, tab.icon && (index.h("span", { class: "tab-bar__tab-icon", innerHTML: tab.icon })), index.h("span", { class: labelClassName }, tab.label, tab.suffix && (index.h("span", { class: "tab-bar__tab-suffix" }, tab.suffix)))));
82
82
  }))));
83
83
  }
84
84
  get el() { return index.getElement(this); }
@@ -10,9 +10,9 @@
10
10
  .tab-bar {
11
11
  position: relative;
12
12
  display: flex;
13
+ overflow-x: auto;
13
14
  width: 100%;
14
15
  justify-content: flex-start;
15
- overflow-x: auto;
16
16
  scrollbar-width: none;
17
17
  }
18
18
 
@@ -36,21 +36,25 @@
36
36
  min-width: -moz-fit-content;
37
37
  min-width: fit-content;
38
38
  margin: 0;
39
+ justify-content: center;
39
40
  align-items: center;
40
41
  border: none;
41
42
  font: inherit;
42
43
  font-weight: var(--s-font-weight-medium);
43
44
  line-height: var(--s-line-height-lg);
44
45
  cursor: pointer;
45
- justify-content: center;
46
46
  }
47
47
 
48
48
  .tab-bar__tab.tab-bar__tab--variant-default {
49
- background-color: transparent;
50
- color: var(--s-interactive-neutral-default);
51
49
  padding: var(--s-space-4) var(--s-space-8);
50
+ color: var(--s-interactive-neutral-default);
51
+ background-color: transparent;
52
52
  }
53
53
 
54
+ .tab-bar__tab.tab-bar__tab--variant-default:not(.tab-bar__tab--active):hover {
55
+ color: var(--s-interactive-neutral-hovered);
56
+ }
57
+
54
58
  .tab-bar__tab.tab-bar__tab--variant-default:not(.tab-bar__tab--active):hover:after {
55
59
  position: absolute;
56
60
  bottom: 0;
@@ -64,6 +68,18 @@
64
68
  pointer-events: none;
65
69
  }
66
70
 
71
+ .tab-bar__tab.tab-bar__tab--variant-default:not(.tab-bar__tab--active):hover .tab-bar__tab-suffix {
72
+ color: var(--s-interactive-neutral-hovered);
73
+ }
74
+
75
+ .tab-bar__tab.tab-bar__tab--variant-default:not(.tab-bar__tab--active):active {
76
+ color: var(--s-interactive-neutral-pressed);
77
+ }
78
+
79
+ .tab-bar__tab.tab-bar__tab--variant-default:not(.tab-bar__tab--active):active .tab-bar__tab-suffix {
80
+ color: var(--s-interactive-neutral-pressed);
81
+ }
82
+
67
83
  .tab-bar__tab.tab-bar__tab--variant-default.tab-bar__tab--active {
68
84
  color: var(--s-text-highlight);
69
85
  }
@@ -81,6 +97,10 @@
81
97
  pointer-events: none;
82
98
  }
83
99
 
100
+ .tab-bar__tab.tab-bar__tab--variant-default.tab-bar__tab--active .tab-bar__tab-suffix {
101
+ color: var(--s-text-highlight);
102
+ }
103
+
84
104
  .tab-bar__tab.tab-bar__tab--variant-default:focus {
85
105
  outline: none;
86
106
  }
@@ -91,10 +111,10 @@
91
111
  }
92
112
 
93
113
  .tab-bar__tab.tab-bar__tab--variant-pill {
114
+ padding: var(--s-space-8) var(--s-space-16);
94
115
  border-radius: var(--s-border-radius-full-round);
95
- background: var(--s-action-neutral-default);
96
116
  color: var(--s-text-default);
97
- padding: var(--s-space-8) var(--s-space-16);
117
+ background: var(--s-action-neutral-default);
98
118
  gap: var(--s-space-8);
99
119
  }
100
120
 
@@ -107,21 +127,29 @@
107
127
  }
108
128
 
109
129
  .tab-bar__tab.tab-bar__tab--variant-pill.tab-bar__tab--active {
110
- background: var(--s-action-primary-default);
111
130
  color: var(--s-text-on-action-primary);
131
+ background: var(--s-action-primary-default);
112
132
  }
113
133
 
134
+ .tab-bar__tab.tab-bar__tab--variant-pill.tab-bar__tab--active .tab-bar__tab-suffix {
135
+ color: var(--s-text-on-action-primary);
136
+ }
137
+
114
138
  .tab-bar__tab.tab-bar__tab--variant-pill:focus-visible {
115
139
  outline-color: var(--s-focus-default);
116
140
  outline-offset: var(--s-space-2);
117
141
  }
118
142
 
143
+ .tab-bar__tab.tab-bar__tab--variant-pill .tab-bar__tab-suffix {
144
+ color: var(--s-text-subdued);
145
+ }
146
+
119
147
  @media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {
120
148
 
121
149
  .tab-bar__tab {
150
+ padding: calc(var(--s-space-4) + var(--s-space-2)) var(--s-space-8);
122
151
  font-size: var(--s-font-size-sm);
123
- line-height: var(--s-line-height-sm);
124
- padding: calc(var(--s-space-4) + var(--s-space-2)) var(--s-space-8)
152
+ line-height: var(--s-line-height-sm)
125
153
  }
126
154
  }
127
155
 
@@ -133,8 +161,15 @@
133
161
  display: inline-flex;
134
162
  padding: var(--s-space-8) var(--s-space-8);
135
163
  text-align: center;
164
+ white-space: nowrap;
165
+ gap: var(--s-space-4);
136
166
  }
137
167
 
138
168
  .tab-bar__tab-label.tab-bar__tab-label--variant-pill {
139
169
  padding: 0;
140
170
  }
171
+
172
+ .tab-bar__tab-suffix {
173
+ color: var(--s-interactive-neutral-default);
174
+ font-weight: var(--s-font-weight-normal);
175
+ }
@@ -54,7 +54,7 @@ export class SwirlTabBar {
54
54
  ? `var(--s-space-${this.paddingBlockStart})`
55
55
  : undefined,
56
56
  };
57
- return (h(Host, { key: 'a74a02669913990d439be0c10a1487a52bf3c423' }, h("div", { key: '380105cfde66b814a86038b66bc87a82dc06e020', "aria-label": this.label, class: className, onKeyDown: this.onKeyDown, role: this.disableTabSemantics ? undefined : "tablist", style: styles }, this.tabs.map((tab) => {
57
+ return (h(Host, { key: '7a40ab6466db00ef0bffd646d7647afa171dbf42' }, h("div", { key: 'd3fff309915530aa60a94c1f13e36a89d1fd9094', "aria-label": this.label, class: className, onKeyDown: this.onKeyDown, role: this.disableTabSemantics ? undefined : "tablist", style: styles }, this.tabs.map((tab) => {
58
58
  const className = classnames("tab-bar__tab", {
59
59
  "tab-bar__tab--active": tab.active,
60
60
  "tab-bar__tab--variant-pill": this.variant === "pill",
@@ -69,7 +69,7 @@ export class SwirlTabBar {
69
69
  ? "true"
70
70
  : "false", class: className, id: `tab-${tab.id}`, key: tab.id,
71
71
  // eslint-disable-next-line react/jsx-no-bind
72
- onClick: () => this.activateTab.emit(tab.id), onFocus: this.onTabFocus, role: this.disableTabSemantics ? undefined : "tab", tabIndex: this.disableTabSemantics ? undefined : tab.active ? 0 : -1, type: "button" }, tab.icon && (h("span", { class: "tab-bar__tab-icon", innerHTML: tab.icon })), h("span", { class: labelClassName }, tab.label)));
72
+ onClick: () => this.activateTab.emit(tab.id), onFocus: this.onTabFocus, role: this.disableTabSemantics ? undefined : "tab", tabIndex: this.disableTabSemantics ? undefined : tab.active ? 0 : -1, type: "button" }, tab.icon && (h("span", { class: "tab-bar__tab-icon", innerHTML: tab.icon })), h("span", { class: labelClassName }, tab.label, tab.suffix && (h("span", { class: "tab-bar__tab-suffix" }, tab.suffix)))));
73
73
  }))));
74
74
  }
75
75
  static get is() { return "swirl-tab-bar"; }
@@ -20,19 +20,21 @@ SwirlTabBar.args = {
20
20
  {
21
21
  active: false,
22
22
  id: "tab1",
23
- label: "Tab #1",
23
+ label: "A Tab",
24
+ suffix: "2",
24
25
  },
25
26
  {
26
27
  active: true,
27
28
  icon: '<swirl-icon glyph="emoji-mood" size="20"></swirl-icon>',
28
29
  id: "tab2",
29
- label: "Tab #2",
30
+ label: "Another Tab",
31
+ suffix: "12",
30
32
  },
31
33
  {
32
34
  active: false,
33
35
  icon: '<swirl-icon glyph="emoji-satisfied" size="20"></swirl-icon>',
34
36
  id: "tab3",
35
- label: "Tab #3",
37
+ label: "Yet Another Tab",
36
38
  },
37
39
  ],
38
40
  };