@molecule/app-weather-card-react 4.0.0 → 4.0.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"WeatherCard.d.ts","sourceRoot":"","sources":["../src/WeatherCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAIpD,gDAAgD;AAChD,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAA;AAEjE,0EAA0E;AAC1E,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,mDAAmD;AACnD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACrC,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,oDAAoD;IACpD,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;IACxC,6CAA6C;IAC7C,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,yCAAyC;IACzC,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAoCD,2CAA2C;AAC3C,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,MAAM,EACN,WAAW,EACX,SAAS,EACT,aAAmC,EACnC,UAAU,EACV,UAAU,EACV,YAAY,EACZ,IAAW,EACX,OAAO,EACP,KAAK,EACL,cAAc,EACd,YAAY,EACZ,SAAS,GACV,EAAE,gBAAgB,GAAG,YAAY,CAiLjC;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"WeatherCard.d.ts","sourceRoot":"","sources":["../src/WeatherCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAIpD,gDAAgD;AAChD,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAA;AAEjE,0EAA0E;AAC1E,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,mDAAmD;AACnD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACrC,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,oDAAoD;IACpD,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;IACxC,6CAA6C;IAC7C,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,yCAAyC;IACzC,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA8BD,2CAA2C;AAC3C,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,MAAM,EACN,WAAW,EACX,SAAS,EACT,aAAmC,EACnC,UAAU,EACV,UAAU,EACV,YAAY,EACZ,IAAW,EACX,OAAO,EACP,KAAK,EACL,cAAc,EACd,YAAY,EACZ,SAAS,GACV,EAAE,gBAAgB,GAAG,YAAY,CA+JjC;AAED,eAAe,WAAW,CAAA"}
@@ -1,10 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { getClassMap } from '@molecule/app-ui';
3
- const ALERT_TONE = {
4
- watch: 'bg-warning/30 text-white',
5
- warning: 'bg-error/30 text-white',
6
- emergency: 'bg-error/60 text-white',
7
- };
8
3
  /** Computes SVG fill and stroke path data for the 24h temperature sparkline. */
9
4
  function buildSparkline(trace) {
10
5
  const fallback = {
@@ -34,11 +29,16 @@ function buildSparkline(trace) {
34
29
  export function WeatherCard({ locationName, region, temperature, condition, conditionIcon = 'partly_cloudy_day', alertLevel, alertLabel, updatedLabel, unit = '°F', eyebrow, trace, feelsLikeLabel, highLowLabel, className, }) {
35
30
  const cm = getClassMap();
36
31
  const sparkline = buildSparkline(trace);
37
- return (_jsxs("div", { className: cm.cn(cm.flex({ direction: 'col', justify: 'between' }), cm.sp('p', 10), 'min-h-[360px] bg-gradient-to-br from-primary via-primary-container to-tertiary-container rounded-[2rem] text-white relative overflow-hidden shadow-2xl shadow-primary/30', className), children: [_jsxs("div", { className: cm.cn('relative z-10'), children: [_jsxs("div", { className: cm.flex({ align: 'center', justify: 'between', gap: 'md' }), children: [_jsxs("div", { children: [eyebrow ? (_jsx("p", { className: cm.cn(cm.fontWeight('bold'), cm.textSize('xs'), cm.sp('mb', 1), 'uppercase tracking-widest text-primary-fixed/80'), children: eyebrow })) : null, _jsx("h2", { className: cm.cn(cm.textSize('2xl'), cm.fontWeight('semibold'), 'tracking-tight text-white'), children: locationName }), region ? (_jsx("p", { className: cm.cn(cm.textSize('xs'), cm.sp('mt', 1), 'font-mono uppercase tracking-widest text-white/70'), children: region })) : null] }), alertLevel ? (_jsxs("span", { className: cm.cn(cm.flex({ align: 'center', gap: 'xs' }), cm.sp('px', 3), cm.sp('py', 1), cm.roundedFull, cm.fontWeight('bold'), 'text-[10px] uppercase tracking-widest backdrop-blur-md', ALERT_TONE[alertLevel]), children: [_jsx("span", { className: cm.cn('material-symbols-outlined', cm.textSize('sm')), "aria-hidden": "true", children: "warning" }), alertLabel ?? alertLevel] })) : null] }), _jsxs("div", { className: cm.cn(cm.flex({ align: 'baseline', gap: 'lg' }), cm.sp('mt', 8)), children: [_jsxs("span", { className: cm.cn('tabular-nums text-white'), style: {
32
+ const alertTone = alertLevel === 'watch'
33
+ ? cm.weatherCardAlertWatch
34
+ : alertLevel === 'warning'
35
+ ? cm.weatherCardAlertWarning
36
+ : cm.weatherCardAlertEmergency;
37
+ return (_jsxs("div", { className: cm.cn(cm.flex({ direction: 'col', justify: 'between' }), cm.sp('p', 10), cm.weatherCardHero, className), children: [_jsxs("div", { className: cm.cn(cm.weatherCardContent), children: [_jsxs("div", { className: cm.flex({ align: 'center', justify: 'between', gap: 'md' }), children: [_jsxs("div", { children: [eyebrow ? (_jsx("p", { className: cm.cn(cm.fontWeight('bold'), cm.textSize('xs'), cm.sp('mb', 1), cm.weatherCardEyebrow), children: eyebrow })) : null, _jsx("h2", { className: cm.cn(cm.textSize('2xl'), cm.fontWeight('semibold'), cm.weatherCardLocation), children: locationName }), region ? (_jsx("p", { className: cm.cn(cm.textSize('xs'), cm.sp('mt', 1), cm.weatherCardRegion), children: region })) : null] }), alertLevel ? (_jsxs("span", { className: cm.cn(cm.flex({ align: 'center', gap: 'xs' }), cm.sp('px', 3), cm.sp('py', 1), cm.roundedFull, cm.fontWeight('bold'), cm.weatherCardAlertBadge, alertTone), children: [_jsx("span", { className: cm.cn(cm.iconGlyphFont, cm.textSize('sm')), "aria-hidden": "true", children: "warning" }), alertLabel ?? alertLevel] })) : null] }), _jsxs("div", { className: cm.cn(cm.flex({ align: 'baseline', gap: 'lg' }), cm.sp('mt', 8)), children: [_jsxs("span", { className: cm.cn(cm.weatherCardTemperature), style: {
38
38
  fontSize: '4.5rem',
39
39
  fontWeight: 200,
40
40
  letterSpacing: '-0.03em',
41
41
  lineHeight: 1,
42
- }, children: [Math.round(temperature), unit] }), _jsxs("div", { className: cm.cn(cm.flex({ align: 'center', gap: 'sm' }), cm.sp('px', 3), cm.sp('py', 1), cm.roundedFull, 'bg-white/20 backdrop-blur-md border border-white/15'), children: [_jsx("span", { className: cm.cn('material-symbols-outlined', cm.textSize('2xl')), style: { fontVariationSettings: "'FILL' 1" }, "aria-hidden": "true", children: conditionIcon }), condition ? (_jsx("span", { className: cm.cn(cm.fontWeight('semibold'), cm.textSize('sm')), children: condition })) : null] })] }), _jsxs("div", { className: cm.cn(cm.flex({ align: 'center', gap: 'md', wrap: 'wrap' }), cm.sp('mt', 4)), children: [feelsLikeLabel ? (_jsx("span", { className: cm.cn(cm.textSize('sm'), cm.fontWeight('medium'), 'text-white/85'), children: feelsLikeLabel })) : null, highLowLabel ? (_jsx("span", { className: cm.cn(cm.flex({ align: 'center', gap: 'xs' }), cm.sp('px', 3), cm.sp('py', 1), cm.roundedFull, cm.textSize('xs'), cm.fontWeight('bold'), 'bg-white/15 backdrop-blur-md tabular-nums'), children: highLowLabel })) : null, updatedLabel ? (_jsx("span", { className: cm.cn(cm.textSize('xs'), 'font-mono uppercase tracking-widest text-white/60'), children: updatedLabel })) : null] })] }), _jsx("div", { className: cm.cn(cm.sp('mt', 10), cm.h(24), cm.w('full'), 'relative z-10'), children: _jsxs("svg", { className: cm.cn(cm.w('full'), cm.h('full')), viewBox: "0 0 400 100", preserveAspectRatio: "none", "aria-hidden": "true", children: [_jsx("path", { d: sparkline.fill, fill: "white", opacity: "0.25" }), _jsx("path", { d: sparkline.stroke, fill: "none", stroke: "white", strokeWidth: "2.5", strokeLinecap: "round" })] }) }), _jsx("div", { className: cm.cn('absolute -right-24 -bottom-24 w-72 h-72 rounded-full bg-white/10 blur-3xl'), "aria-hidden": "true" }), _jsx("div", { className: cm.cn('absolute right-12 top-12 w-20 h-20 rounded-full bg-tertiary-fixed/30 blur-2xl'), "aria-hidden": "true" })] }));
42
+ }, children: [Math.round(temperature), unit] }), _jsxs("div", { className: cm.cn(cm.flex({ align: 'center', gap: 'sm' }), cm.sp('px', 3), cm.sp('py', 1), cm.roundedFull, cm.weatherCardConditionPill), children: [_jsx("span", { className: cm.cn(cm.iconGlyphFont, cm.textSize('2xl')), style: { fontVariationSettings: "'FILL' 1" }, "aria-hidden": "true", children: conditionIcon }), condition ? (_jsx("span", { className: cm.cn(cm.fontWeight('semibold'), cm.textSize('sm')), children: condition })) : null] })] }), _jsxs("div", { className: cm.cn(cm.flex({ align: 'center', gap: 'md', wrap: 'wrap' }), cm.sp('mt', 4)), children: [feelsLikeLabel ? (_jsx("span", { className: cm.cn(cm.textSize('sm'), cm.fontWeight('medium'), cm.weatherCardFeelsLike), children: feelsLikeLabel })) : null, highLowLabel ? (_jsx("span", { className: cm.cn(cm.flex({ align: 'center', gap: 'xs' }), cm.sp('px', 3), cm.sp('py', 1), cm.roundedFull, cm.textSize('xs'), cm.fontWeight('bold'), cm.weatherCardHighLowChip), children: highLowLabel })) : null, updatedLabel ? (_jsx("span", { className: cm.cn(cm.textSize('xs'), cm.weatherCardUpdated), children: updatedLabel })) : null] })] }), _jsx("div", { className: cm.cn(cm.sp('mt', 10), cm.h(24), cm.w('full'), cm.weatherCardContent), children: _jsxs("svg", { className: cm.cn(cm.w('full'), cm.h('full')), viewBox: "0 0 400 100", preserveAspectRatio: "none", "aria-hidden": "true", children: [_jsx("path", { d: sparkline.fill, fill: "white", opacity: "0.25" }), _jsx("path", { d: sparkline.stroke, fill: "none", stroke: "white", strokeWidth: "2.5", strokeLinecap: "round" })] }) }), _jsx("div", { className: cm.cn(cm.weatherCardGlowLarge), "aria-hidden": "true" }), _jsx("div", { className: cm.cn(cm.weatherCardGlowSmall), "aria-hidden": "true" })] }));
43
43
  }
44
44
  export default WeatherCard;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@molecule/app-weather-card-react",
3
- "version": "4.0.0",
3
+ "version": "4.0.1",
4
4
  "description": "Atmospheric current-conditions hero card: gradient background, glass condition pill, 24h temperature sparkline, optional alert badge. Extracted from weather-dashboard flagship.",
5
5
  "homepage": "https://www.molecule.dev/packages/app-weather-card-react",
6
6
  "type": "module",
@@ -42,9 +42,9 @@
42
42
  "react": "^18.0.0 || ^19.0.0"
43
43
  },
44
44
  "devDependencies": {
45
- "@molecule/app-react": "4.0.0",
46
- "@molecule/app-ui": "1.3.9",
47
- "@molecule/app-ui-react": "4.0.0",
45
+ "@molecule/app-react": "4.1.2",
46
+ "@molecule/app-ui": "1.3.11",
47
+ "@molecule/app-ui-react": "4.1.0",
48
48
  "@types/node": "26.6.5",
49
49
  "@types/react": "19.3.0",
50
50
  "react": "19.3.1",