@extrachill/components 0.4.15 → 0.4.17

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/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.4.16] - 2026-03-25
4
+
5
+ ### Changed
6
+ - Tune shared tabs and panel surfaces to current settings design
7
+
3
8
  ## [0.4.13] - 2026-03-25
4
9
 
5
10
  ### Changed
@@ -1 +1 @@
1
- {"version":3,"file":"ResponsiveTabs.d.ts","sourceRoot":"","sources":["../src/ResponsiveTabs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAE,EAAE,EAAE,MAAM,KAAM,IAAI,CAAC;IACjC,WAAW,EAAE,CAAE,EAAE,EAAE,MAAM,KAAM,SAAS,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,cAAc,CAAE,EAC/B,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,WAAW,EACX,SAAc,EACd,WAAkC,EAClC,aAAkB,EAClB,eAA2B,EAC3B,gBAAsB,EACtB,kBAAuB,EACvB,eAAsB,GACtB,EAAE,mBAAmB,kDAkFrB"}
1
+ {"version":3,"file":"ResponsiveTabs.d.ts","sourceRoot":"","sources":["../src/ResponsiveTabs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAE,EAAE,EAAE,MAAM,KAAM,IAAI,CAAC;IACjC,WAAW,EAAE,CAAE,EAAE,EAAE,MAAM,KAAM,SAAS,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,cAAc,CAAE,EAC/B,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,WAAW,EACX,SAAc,EACd,WAAkC,EAClC,aAAkB,EAClB,eAA2B,EAC3B,gBAAsB,EACtB,kBAAuB,EACvB,eAAsB,GACtB,EAAE,mBAAmB,kDA0FrB"}
@@ -8,6 +8,7 @@ export function ResponsiveTabs({ tabs, active, onChange, renderPanel, className
8
8
  }
9
9
  return window.innerWidth < mobileBreakpoint;
10
10
  });
11
+ const [mobileActive, setMobileActive] = useState(active);
11
12
  useEffect(() => {
12
13
  if (typeof window === 'undefined') {
13
14
  return undefined;
@@ -19,6 +20,9 @@ export function ResponsiveTabs({ tabs, active, onChange, renderPanel, className
19
20
  window.addEventListener('resize', handleResize);
20
21
  return () => window.removeEventListener('resize', handleResize);
21
22
  }, [mobileBreakpoint]);
23
+ useEffect(() => {
24
+ setMobileActive(active);
25
+ }, [active]);
22
26
  const rootClass = useMemo(() => [
23
27
  classPrefix,
24
28
  isMobile ? `${classPrefix}--mobile` : `${classPrefix}--desktop`,
@@ -33,7 +37,10 @@ export function ResponsiveTabs({ tabs, active, onChange, renderPanel, className
33
37
  return (_jsxs("div", { className: rootClass, children: [showDesktopTabs && (_jsx(Tabs, { tabs: tabs, active: active, onChange: onChange, className: tabsClassName, classPrefix: tabsClassPrefix })), _jsx("div", { className: `${classPrefix}__desktop-panel`, children: renderPanel(active) })] }));
34
38
  }
35
39
  return (_jsx("div", { className: rootClass, children: _jsx("div", { className: [`${classPrefix}__accordion`, accordionClassName].filter(Boolean).join(' '), children: tabs.map((tab) => {
36
- const isActive = tab.id === active;
37
- return (_jsxs("div", { className: `${classPrefix}__item${isActive ? ' is-active' : ''}`, children: [_jsxs("button", { type: "button", className: `${classPrefix}__trigger${isActive ? ' is-active' : ''}`, "aria-expanded": isActive, onClick: () => onChange(tab.id), children: [_jsx("span", { children: tab.label }), _jsx("span", { className: `${classPrefix}__arrow`, "aria-hidden": "true", children: isActive ? '▲' : '▼' })] }), isActive && _jsx("div", { className: `${classPrefix}__panel`, children: renderPanel(tab.id) })] }, tab.id));
40
+ const isActive = tab.id === mobileActive;
41
+ return (_jsxs("div", { className: `${classPrefix}__item${isActive ? ' is-active' : ''}`, children: [_jsxs("button", { type: "button", className: `${classPrefix}__trigger${isActive ? ' is-active' : ''}`, "aria-expanded": isActive, onClick: () => {
42
+ setMobileActive(tab.id);
43
+ onChange(tab.id);
44
+ }, children: [_jsx("span", { children: tab.label }), _jsx("span", { className: `${classPrefix}__arrow`, "aria-hidden": "true", children: isActive ? '▲' : '▼' })] }), isActive && _jsx("div", { className: `${classPrefix}__panel`, children: renderPanel(tab.id) })] }, tab.id));
38
45
  }) }) }));
39
46
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@extrachill/components",
3
- "version": "0.4.15",
3
+ "version": "0.4.17",
4
4
  "description": "Shared React components for the Extra Chill Platform.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -36,6 +36,7 @@ export function ResponsiveTabs( {
36
36
 
37
37
  return window.innerWidth < mobileBreakpoint;
38
38
  } );
39
+ const [ mobileActive, setMobileActive ] = useState( active );
39
40
 
40
41
  useEffect( () => {
41
42
  if ( typeof window === 'undefined' ) {
@@ -52,6 +53,10 @@ export function ResponsiveTabs( {
52
53
  return () => window.removeEventListener( 'resize', handleResize );
53
54
  }, [ mobileBreakpoint ] );
54
55
 
56
+ useEffect( () => {
57
+ setMobileActive( active );
58
+ }, [ active ] );
59
+
55
60
  const rootClass = useMemo(
56
61
  () => [
57
62
  classPrefix,
@@ -88,7 +93,7 @@ export function ResponsiveTabs( {
88
93
  <div className={ rootClass }>
89
94
  <div className={ [ `${ classPrefix }__accordion`, accordionClassName ].filter( Boolean ).join( ' ' ) }>
90
95
  { tabs.map( ( tab ) => {
91
- const isActive = tab.id === active;
96
+ const isActive = tab.id === mobileActive;
92
97
 
93
98
  return (
94
99
  <div key={ tab.id } className={ `${ classPrefix }__item${ isActive ? ' is-active' : '' }` }>
@@ -96,7 +101,10 @@ export function ResponsiveTabs( {
96
101
  type="button"
97
102
  className={ `${ classPrefix }__trigger${ isActive ? ' is-active' : '' }` }
98
103
  aria-expanded={ isActive }
99
- onClick={ () => onChange( tab.id ) }
104
+ onClick={ () => {
105
+ setMobileActive( tab.id );
106
+ onChange( tab.id );
107
+ } }
100
108
  >
101
109
  <span>{ tab.label }</span>
102
110
  <span className={ `${ classPrefix }__arrow` } aria-hidden="true">
@@ -88,7 +88,7 @@
88
88
  align-items: center;
89
89
  gap: var(--spacing-xs, 0.25rem);
90
90
  border: 1px solid var(--border-color, #ddd);
91
- background: var(--background-color, #fff);
91
+ background: var(--card-background, #f1f5f9);
92
92
  padding: var(--spacing-sm, 0.5rem) var(--spacing-md, 1rem);
93
93
  border-radius: var(--border-radius-sm, 4px);
94
94
  cursor: pointer;
@@ -147,12 +147,12 @@
147
147
  .ec-responsive-tabs {
148
148
  display: grid;
149
149
  gap: var(--spacing-md, 1rem);
150
+ background: var(--card-background, #f1f5f9);
150
151
  }
151
152
 
152
153
  .ec-responsive-tabs__desktop-panel {
153
154
  display: grid;
154
155
  background: var(--background-color, #fff);
155
- border: 1px solid var(--border-color, #ddd);
156
156
  border-radius: 0 0 var(--border-radius-md, 8px) var(--border-radius-md, 8px);
157
157
  padding: 0;
158
158
  margin-bottom: 0;
@@ -210,7 +210,7 @@
210
210
 
211
211
  .ec-responsive-tabs__trigger:hover {
212
212
  background: var(--background-color, #fff);
213
- color: var(--link-color, #0b5394);
213
+ color: var(--link-color-hover, var(--link-color, #0b5394));
214
214
  }
215
215
 
216
216
  .ec-responsive-tabs__trigger:focus-visible {
@@ -324,7 +324,6 @@
324
324
  gap: var(--spacing-md, 1rem);
325
325
  flex-wrap: wrap;
326
326
  padding-bottom: var(--spacing-md, 1rem);
327
- background: var(--card-background, #f1f5f9);
328
327
  }
329
328
 
330
329
  .ec-block-shell-header--with-divider {
@@ -375,7 +374,7 @@
375
374
 
376
375
  .ec-panel--depth-1,
377
376
  .ec-panel--depth-3 {
378
- background: var(--background-color, #fff);
377
+ background: var(--card-background, #f8f8f8);
379
378
  }
380
379
 
381
380
  .ec-section {