@manakind/manuia-ui 0.3.1 → 0.5.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/dist/category-card/category-card.css +154 -0
- package/dist/category-card/category-card.css.d.ts +2 -0
- package/dist/category-card/category-card.d.ts +83 -0
- package/dist/category-card/category-card.d.ts.map +1 -0
- package/dist/category-card/category-card.js +79 -0
- package/dist/category-card/category-card.js.map +1 -0
- package/dist/category-card/index.d.ts +3 -0
- package/dist/category-card/index.d.ts.map +1 -0
- package/dist/category-card/index.js +2 -0
- package/dist/category-card/index.js.map +1 -0
- package/dist/css-color.d.ts +3 -0
- package/dist/css-color.d.ts.map +1 -0
- package/dist/css-color.js +54 -0
- package/dist/css-color.js.map +1 -0
- package/dist/goal-categories/goal-categories.d.ts +2 -2
- package/dist/goal-categories/goal-categories.d.ts.map +1 -1
- package/dist/goal-categories/goal-categories.js +1 -58
- package/dist/goal-categories/goal-categories.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
.mui-category-card {
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
/*
|
|
6
|
+
* The category's own colour, as a wash over the card surface. Only set
|
|
7
|
+
* when the product passed a real colour, so the fallback is the plain
|
|
8
|
+
* card; decoration, never the signal (see `color` on the props).
|
|
9
|
+
*
|
|
10
|
+
* 8% at the top, not more: the rating bands are measured against the bare
|
|
11
|
+
* card, and 8% of any colour, black included, leaves every band above
|
|
12
|
+
* 4.5:1 (10% took two of them to 4.4:1).
|
|
13
|
+
*/
|
|
14
|
+
background-image: linear-gradient(
|
|
15
|
+
color-mix(in srgb, var(--mui-category-color, transparent) 8%, transparent),
|
|
16
|
+
color-mix(in srgb, var(--mui-category-color, transparent) 4%, transparent)
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
/* Tighter than the card's own gap, through the key ui-core's header reads. */
|
|
20
|
+
& .mui-category-card__header {
|
|
21
|
+
--ds-card-gap: var(--semantic-space-gap);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
& .mui-category-card__meta {
|
|
25
|
+
display: flex;
|
|
26
|
+
align-items: flex-start;
|
|
27
|
+
justify-content: space-between;
|
|
28
|
+
gap: var(--semantic-space-gap);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
& .mui-category-card__gap {
|
|
32
|
+
display: flex;
|
|
33
|
+
flex-direction: column;
|
|
34
|
+
align-items: flex-end;
|
|
35
|
+
margin: 0;
|
|
36
|
+
line-height: var(--primitives-line-height-tight);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
& .mui-category-card__gap-value {
|
|
40
|
+
font-size: var(--component-category-card-gap-font-size);
|
|
41
|
+
font-weight: var(--primitives-font-weight-bold);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
& .mui-category-card__gap-label {
|
|
45
|
+
color: var(--semantic-color-text-muted);
|
|
46
|
+
font-size: var(--primitives-font-size-xs);
|
|
47
|
+
font-weight: var(--primitives-font-weight-medium);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
& .mui-category-card__title {
|
|
51
|
+
/* Two lines at most, then an ellipsis: a long name must not push the ratings off the card. */
|
|
52
|
+
display: -webkit-box;
|
|
53
|
+
-webkit-box-orient: vertical;
|
|
54
|
+
-webkit-line-clamp: 2;
|
|
55
|
+
overflow: hidden;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
& .mui-category-card__content {
|
|
59
|
+
flex: 1;
|
|
60
|
+
justify-content: space-between;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
& .mui-category-card__vision {
|
|
64
|
+
margin: 0;
|
|
65
|
+
color: var(--semantic-color-text-muted);
|
|
66
|
+
font-size: var(--primitives-font-size-sm);
|
|
67
|
+
font-style: italic;
|
|
68
|
+
line-height: var(--primitives-line-height-relaxed);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
& .mui-category-card__roles {
|
|
72
|
+
display: flex;
|
|
73
|
+
flex-wrap: wrap;
|
|
74
|
+
gap: var(--semantic-space-gap-tight);
|
|
75
|
+
margin: 0;
|
|
76
|
+
padding: 0;
|
|
77
|
+
list-style: none;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
& .mui-category-card__ratings {
|
|
81
|
+
display: flex;
|
|
82
|
+
flex-direction: column;
|
|
83
|
+
gap: var(--semantic-space-gap);
|
|
84
|
+
padding-block-start: var(--semantic-space-gap);
|
|
85
|
+
border-block-start: 1px solid var(--semantic-color-border-subtle);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/*
|
|
89
|
+
* Each bar is recoloured through the contract key `ui-core`'s Progress
|
|
90
|
+
* reads, re-declared on this class: current in the accent, ideal in the
|
|
91
|
+
* strong primary, the colour the goal state wears everywhere else.
|
|
92
|
+
*/
|
|
93
|
+
& .mui-category-card__bar--current {
|
|
94
|
+
--ds-progress-indicator-bg: var(--component-category-card-bar-current);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
& .mui-category-card__bar--ideal {
|
|
98
|
+
--ds-progress-indicator-bg: var(--component-category-card-bar-ideal);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* Mirrors the product's small-caps labels, as GoalCard's milestone label does. */
|
|
102
|
+
& .mui-category-card__rating-label {
|
|
103
|
+
color: var(--semantic-color-text-muted);
|
|
104
|
+
font-size: var(--primitives-font-size-xs);
|
|
105
|
+
font-weight: var(--primitives-font-weight-semibold);
|
|
106
|
+
letter-spacing: 0.15em;
|
|
107
|
+
line-height: var(--primitives-line-height-tight);
|
|
108
|
+
text-transform: uppercase;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
& .mui-category-card__rating-value {
|
|
112
|
+
color: var(--semantic-color-text-default);
|
|
113
|
+
font-size: var(--primitives-font-size-xl);
|
|
114
|
+
font-weight: var(--primitives-font-weight-bold);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
& .mui-category-card__rating-max {
|
|
118
|
+
color: var(--semantic-color-text-muted);
|
|
119
|
+
font-size: var(--primitives-font-size-sm);
|
|
120
|
+
font-weight: var(--primitives-font-weight-regular);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/*
|
|
124
|
+
* The bands. The product's thresholds decide which applies; the card
|
|
125
|
+
* paints it. Every value clears 4.5:1 on the bare card in both themes
|
|
126
|
+
* (contrast-pairs.json) and stays above it under the 8% wash, which the
|
|
127
|
+
* product's own ramp did not: it ran from 2.14:1 to 4.05:1.
|
|
128
|
+
*/
|
|
129
|
+
& .mui-category-card__gap--excellent,
|
|
130
|
+
& .mui-category-card__rating-value--excellent {
|
|
131
|
+
color: var(--component-category-card-rating-excellent);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
& .mui-category-card__gap--good,
|
|
135
|
+
& .mui-category-card__rating-value--good {
|
|
136
|
+
color: var(--component-category-card-rating-good);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
& .mui-category-card__gap--moderate,
|
|
140
|
+
& .mui-category-card__rating-value--moderate {
|
|
141
|
+
color: var(--component-category-card-rating-moderate);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
& .mui-category-card__gap--poor,
|
|
145
|
+
& .mui-category-card__rating-value--poor {
|
|
146
|
+
color: var(--component-category-card-rating-poor);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
& .mui-category-card__gap--critical,
|
|
150
|
+
& .mui-category-card__rating-value--critical {
|
|
151
|
+
color: var(--component-category-card-rating-critical);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import './category-card.css';
|
|
2
|
+
/** Manuia's two kinds of life category. */
|
|
3
|
+
export type CategoryType = 'Personal' | 'Professional';
|
|
4
|
+
/**
|
|
5
|
+
* How a rating, or the gap between two ratings, reads. The product decides
|
|
6
|
+
* the thresholds; the card only paints the band. `excellent` is the goal
|
|
7
|
+
* state and `critical` the furthest from it.
|
|
8
|
+
*/
|
|
9
|
+
export type CategoryRatingBand = 'excellent' | 'good' | 'moderate' | 'poor' | 'critical';
|
|
10
|
+
export interface CategoryRole {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
}
|
|
14
|
+
export interface CategoryCardProps {
|
|
15
|
+
/** Category name. Rendered as the card's heading. */
|
|
16
|
+
name: string;
|
|
17
|
+
/** Personal or professional. Shown as a badge; the two get different tints. */
|
|
18
|
+
type: CategoryType;
|
|
19
|
+
/**
|
|
20
|
+
* Resolved CSS colour for this category, applied as a faint wash over the
|
|
21
|
+
* card. Category colours are data, not design tokens: each category row
|
|
22
|
+
* stores a colour the user picked. Validated before it reaches the style
|
|
23
|
+
* attribute; a value that is not a recognisable CSS colour is ignored and
|
|
24
|
+
* the card keeps its plain surface. The wash is decoration: nothing on the
|
|
25
|
+
* card relies on it. It is capped at 8%, which keeps every rating band
|
|
26
|
+
* above 4.5:1 over any colour at all.
|
|
27
|
+
*/
|
|
28
|
+
color?: string;
|
|
29
|
+
/** The vision statement, shown as an excerpt. */
|
|
30
|
+
vision?: string;
|
|
31
|
+
/** Where the category stands today, on the product's 0–10 scale. A value off the scale is clamped. */
|
|
32
|
+
currentRating: number;
|
|
33
|
+
/** Where the user wants it to be, on the same scale. A value off the scale is clamped. */
|
|
34
|
+
idealRating: number;
|
|
35
|
+
/** Band the current rating falls in. Colours its number. */
|
|
36
|
+
currentBand?: CategoryRatingBand;
|
|
37
|
+
/** Band the ideal rating falls in. Colours its number. */
|
|
38
|
+
idealBand?: CategoryRatingBand;
|
|
39
|
+
/** Band the gap between the two falls in. Colours the gap figure. */
|
|
40
|
+
gapBand?: CategoryRatingBand;
|
|
41
|
+
/** Roles the user plays in this category. */
|
|
42
|
+
roles?: CategoryRole[];
|
|
43
|
+
/** How many roles to show before collapsing into `+N more`. A non-finite value shows all. */
|
|
44
|
+
maxVisibleRoles?: number;
|
|
45
|
+
/** Characters (graphemes) of the vision to show before an ellipsis. */
|
|
46
|
+
visionLength?: number;
|
|
47
|
+
/**
|
|
48
|
+
* Heading level for the name. Defaults to `h3`: a grid of these usually
|
|
49
|
+
* sits under a section heading.
|
|
50
|
+
*/
|
|
51
|
+
titleAs?: 'h2' | 'h3' | 'h4';
|
|
52
|
+
/** Extra class names. */
|
|
53
|
+
className?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* A Manuia life category, rendered as a card.
|
|
57
|
+
*
|
|
58
|
+
* Composes `ui-core`'s `Card`, `Badge` and `Progress` with Manuia's own
|
|
59
|
+
* concepts — category types, the current and ideal rating, the gap, roles —
|
|
60
|
+
* which is why it lives in the product package rather than in `ui-core`.
|
|
61
|
+
*
|
|
62
|
+
* The thresholds that turn a rating into a band are product rules, so the
|
|
63
|
+
* caller passes the bands in; the card never decides that a 7 is good.
|
|
64
|
+
*
|
|
65
|
+
* The card is styled as interactive but is **not** operable on its own: wrap
|
|
66
|
+
* it in a link so it is reachable by keyboard, as `Card`'s `interactive`
|
|
67
|
+
* prop documents.
|
|
68
|
+
*
|
|
69
|
+
* ```tsx
|
|
70
|
+
* <CategoryCard
|
|
71
|
+
* name="Health"
|
|
72
|
+
* type="Personal"
|
|
73
|
+
* color="#8fa878"
|
|
74
|
+
* currentRating={6}
|
|
75
|
+
* idealRating={9}
|
|
76
|
+
* currentBand="good"
|
|
77
|
+
* idealBand="excellent"
|
|
78
|
+
* gapBand="moderate"
|
|
79
|
+
* />
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export declare function CategoryCard({ name, type, color, vision, currentRating, idealRating, currentBand, idealBand, gapBand, roles, maxVisibleRoles, visionLength, titleAs, className, }: CategoryCardProps): import("react/jsx-runtime").JSX.Element;
|
|
83
|
+
//# sourceMappingURL=category-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"category-card.d.ts","sourceRoot":"","sources":["../../src/category-card/category-card.tsx"],"names":[],"mappings":"AAGA,OAAO,qBAAqB,CAAC;AAE7B,2CAA2C;AAC3C,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,cAAc,CAAC;AAEvD;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;AAEzF,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,IAAI,EAAE,YAAY,CAAC;IACnB;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sGAAsG;IACtG,aAAa,EAAE,MAAM,CAAC;IACtB,0FAA0F;IAC1F,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,0DAA0D;IAC1D,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,qEAAqE;IACrE,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,6CAA6C;IAC7C,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,6FAA6F;IAC7F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC7B,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4CD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,WAAW,EACX,SAAS,EACT,OAAO,EACP,KAAU,EACV,eAAmB,EACnB,YAAkB,EAClB,OAAc,EACd,SAAS,GACV,EAAE,iBAAiB,2CA4FnB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Badge, Card, CardContent, CardHeader, CardTitle, cx, Progress } from '@manakind/ui-core';
|
|
3
|
+
import { safeColor } from '../css-color';
|
|
4
|
+
import './category-card.css';
|
|
5
|
+
const TYPE_VARIANT = {
|
|
6
|
+
Personal: 'success',
|
|
7
|
+
Professional: 'info',
|
|
8
|
+
};
|
|
9
|
+
/** The scale every rating is on. */
|
|
10
|
+
const RATING_MAX = 10;
|
|
11
|
+
/*
|
|
12
|
+
* A rating outside the scale is data the card cannot draw: Ark's Progress
|
|
13
|
+
* throws on a value past `max` or below zero. Clamping here keeps the bar and
|
|
14
|
+
* the gap honest about the scale rather than about the input.
|
|
15
|
+
*/
|
|
16
|
+
function clampRating(rating) {
|
|
17
|
+
if (!Number.isFinite(rating))
|
|
18
|
+
return 0;
|
|
19
|
+
return Math.min(Math.max(rating, 0), RATING_MAX);
|
|
20
|
+
}
|
|
21
|
+
/*
|
|
22
|
+
* Cut by grapheme, not by UTF-16 unit, so a flag or a skin-toned emoji at the
|
|
23
|
+
* boundary is kept whole rather than split into a replacement glyph.
|
|
24
|
+
*/
|
|
25
|
+
const graphemes = new Intl.Segmenter(undefined, { granularity: 'grapheme' });
|
|
26
|
+
function excerpt(text, length) {
|
|
27
|
+
const limit = Math.max(Math.trunc(length), 0);
|
|
28
|
+
const units = Array.from(graphemes.segment(text), (segment) => segment.segment);
|
|
29
|
+
if (units.length <= limit)
|
|
30
|
+
return text;
|
|
31
|
+
return `${units.slice(0, limit).join('').trimEnd()}…`;
|
|
32
|
+
}
|
|
33
|
+
/*
|
|
34
|
+
* Same normalisation as GoalCategories' `maxVisible`: truncated toward zero,
|
|
35
|
+
* clamped at zero, and a non-finite value means no limit rather than no roles.
|
|
36
|
+
*/
|
|
37
|
+
function visibleLimit(limit) {
|
|
38
|
+
return Number.isFinite(limit) ? Math.max(Math.trunc(limit), 0) : undefined;
|
|
39
|
+
}
|
|
40
|
+
const BAND_CLASS = (part, band) => band && `mui-category-card__${part}--${band}`;
|
|
41
|
+
/**
|
|
42
|
+
* A Manuia life category, rendered as a card.
|
|
43
|
+
*
|
|
44
|
+
* Composes `ui-core`'s `Card`, `Badge` and `Progress` with Manuia's own
|
|
45
|
+
* concepts — category types, the current and ideal rating, the gap, roles —
|
|
46
|
+
* which is why it lives in the product package rather than in `ui-core`.
|
|
47
|
+
*
|
|
48
|
+
* The thresholds that turn a rating into a band are product rules, so the
|
|
49
|
+
* caller passes the bands in; the card never decides that a 7 is good.
|
|
50
|
+
*
|
|
51
|
+
* The card is styled as interactive but is **not** operable on its own: wrap
|
|
52
|
+
* it in a link so it is reachable by keyboard, as `Card`'s `interactive`
|
|
53
|
+
* prop documents.
|
|
54
|
+
*
|
|
55
|
+
* ```tsx
|
|
56
|
+
* <CategoryCard
|
|
57
|
+
* name="Health"
|
|
58
|
+
* type="Personal"
|
|
59
|
+
* color="#8fa878"
|
|
60
|
+
* currentRating={6}
|
|
61
|
+
* idealRating={9}
|
|
62
|
+
* currentBand="good"
|
|
63
|
+
* idealBand="excellent"
|
|
64
|
+
* gapBand="moderate"
|
|
65
|
+
* />
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export function CategoryCard({ name, type, color, vision, currentRating, idealRating, currentBand, idealBand, gapBand, roles = [], maxVisibleRoles = 3, visionLength = 100, titleAs = 'h3', className, }) {
|
|
69
|
+
const wash = safeColor(color);
|
|
70
|
+
const current = clampRating(currentRating);
|
|
71
|
+
const ideal = clampRating(idealRating);
|
|
72
|
+
const gap = ideal - current;
|
|
73
|
+
const limit = visibleLimit(maxVisibleRoles);
|
|
74
|
+
const visibleRoles = limit === undefined ? roles : roles.slice(0, limit);
|
|
75
|
+
const remainingRoles = roles.length - visibleRoles.length;
|
|
76
|
+
const visionText = vision?.trim();
|
|
77
|
+
return (_jsxs(Card, { interactive: true, className: cx('mui-category-card', className), style: wash ? { '--mui-category-color': wash } : undefined, children: [_jsxs(CardHeader, { className: "mui-category-card__header", children: [_jsxs("div", { className: "mui-category-card__meta", children: [_jsx(Badge, { variant: TYPE_VARIANT[type], appearance: "plain", children: type }), _jsxs("p", { className: cx('mui-category-card__gap', BAND_CLASS('gap', gapBand)), children: [_jsx("span", { className: "mui-category-card__gap-value", children: gap }), _jsx("span", { className: "mui-category-card__gap-label", children: "gap" })] })] }), _jsx(CardTitle, { as: titleAs, className: "mui-category-card__title", title: name, children: name })] }), _jsxs(CardContent, { className: "mui-category-card__content", children: [visionText && (_jsx("p", { className: "mui-category-card__vision", children: excerpt(visionText, visionLength) })), roles.length > 0 && (_jsxs("ul", { className: "mui-category-card__roles", "aria-label": "Roles", children: [visibleRoles.map((role) => (_jsx("li", { children: _jsx(Badge, { variant: "outline", children: role.name }) }, role.id))), remainingRoles > 0 && (_jsx("li", { children: _jsxs(Badge, { variant: "muted", children: ["+", remainingRoles, " more"] }) }))] })), _jsxs("div", { className: "mui-category-card__ratings", children: [_jsx(Progress, { size: "sm", className: "mui-category-card__bar mui-category-card__bar--current", value: current, max: RATING_MAX, label: _jsx("span", { className: "mui-category-card__rating-label", children: "Current" }), valueText: _jsxs("span", { className: cx('mui-category-card__rating-value', BAND_CLASS('rating-value', currentBand)), children: [current, _jsxs("span", { className: "mui-category-card__rating-max", children: ["/", RATING_MAX] })] }) }), _jsx(Progress, { size: "sm", className: "mui-category-card__bar mui-category-card__bar--ideal", value: ideal, max: RATING_MAX, label: _jsx("span", { className: "mui-category-card__rating-label", children: "Ideal" }), valueText: _jsxs("span", { className: cx('mui-category-card__rating-value', BAND_CLASS('rating-value', idealBand)), children: [ideal, _jsxs("span", { className: "mui-category-card__rating-max", children: ["/", RATING_MAX] })] }) })] })] })] }));
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=category-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"category-card.js","sourceRoot":"","sources":["../../src/category-card/category-card.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/category-card/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/category-card/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css-color.d.ts","sourceRoot":"","sources":["../src/css-color.ts"],"names":[],"mappings":"AAgDA,yEAAyE;AACzE,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKvE"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* A colour that arrives from outside the token pipeline is validated before
|
|
3
|
+
* it reaches a style attribute. Two reasons, and the second is the one that
|
|
4
|
+
* bites in practice.
|
|
5
|
+
*
|
|
6
|
+
* **Injection, on the server.** React escapes HTML, not CSS. For a *custom*
|
|
7
|
+
* property `react-dom/server` serialises the string into the markup with only
|
|
8
|
+
* the five HTML entities replaced — the semicolon is not among them — so
|
|
9
|
+
* `red;position:fixed;inset:0` closes the declaration and the browser parses
|
|
10
|
+
* the tail as further rules. Enough to cover the page or hide a control.
|
|
11
|
+
* (React's client path goes through `style.setProperty()`, and CSSOM rejects
|
|
12
|
+
* a value containing `;`, so this is specifically an SSR exposure.)
|
|
13
|
+
*
|
|
14
|
+
* **Invisible marks, everywhere.** A value that is not a colour at all is the
|
|
15
|
+
* likelier input — a product mapping its own palette names through, say. Once
|
|
16
|
+
* it is *set*, a `var(--mui-…, fallback)` in the CSS no longer applies, and
|
|
17
|
+
* the property it feeds is invalid at computed-value time: the mark resolves
|
|
18
|
+
* to transparent rather than falling back. So the guard admits only real
|
|
19
|
+
* colour syntax; anything else is left unset, which is what makes the
|
|
20
|
+
* documented fallback actually happen.
|
|
21
|
+
*/
|
|
22
|
+
const CSS_COLOR_FUNCTION = /^(?:rgb|hsl|hwb|lab|lch|oklab|oklch|color)a?\([^;(){}]*\)$/i;
|
|
23
|
+
const CSS_HEX = /^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;
|
|
24
|
+
// The CSS named colours. A bare word outside this set is rejected rather than
|
|
25
|
+
// passed through, because an unrecognised keyword is what produces the
|
|
26
|
+
// invalid-colour case above.
|
|
27
|
+
const CSS_NAMED_COLORS = new Set(`aliceblue antiquewhite aqua aquamarine azure beige bisque black blanchedalmond blue
|
|
28
|
+
blueviolet brown burlywood cadetblue chartreuse chocolate coral cornflowerblue cornsilk
|
|
29
|
+
crimson cyan darkblue darkcyan darkgoldenrod darkgray darkgreen darkgrey darkkhaki
|
|
30
|
+
darkmagenta darkolivegreen darkorange darkorchid darkred darksalmon darkseagreen
|
|
31
|
+
darkslateblue darkslategray darkslategrey darkturquoise darkviolet deeppink deepskyblue
|
|
32
|
+
dimgray dimgrey dodgerblue firebrick floralwhite forestgreen fuchsia gainsboro ghostwhite
|
|
33
|
+
gold goldenrod gray green greenyellow grey honeydew hotpink indianred indigo ivory khaki
|
|
34
|
+
lavender lavenderblush lawngreen lemonchiffon lightblue lightcoral lightcyan
|
|
35
|
+
lightgoldenrodyellow lightgray lightgreen lightgrey lightpink lightsalmon lightseagreen
|
|
36
|
+
lightskyblue lightslategray lightslategrey lightsteelblue lightyellow lime limegreen linen
|
|
37
|
+
magenta maroon mediumaquamarine mediumblue mediumorchid mediumpurple mediumseagreen
|
|
38
|
+
mediumslateblue mediumspringgreen mediumturquoise mediumvioletred midnightblue mintcream
|
|
39
|
+
mistyrose moccasin navajowhite navy oldlace olive olivedrab orange orangered orchid
|
|
40
|
+
palegoldenrod palegreen paleturquoise palevioletred papayawhip peachpuff peru pink plum
|
|
41
|
+
powderblue purple rebeccapurple red rosybrown royalblue saddlebrown salmon sandybrown
|
|
42
|
+
seagreen seashell sienna silver skyblue slateblue slategray slategrey snow springgreen
|
|
43
|
+
steelblue tan teal thistle tomato transparent turquoise violet wheat white whitesmoke
|
|
44
|
+
yellow yellowgreen`.split(/\s+/));
|
|
45
|
+
/** The colour if it is real CSS colour syntax, otherwise `undefined`. */
|
|
46
|
+
export function safeColor(color) {
|
|
47
|
+
const trimmed = color?.trim();
|
|
48
|
+
if (!trimmed)
|
|
49
|
+
return undefined;
|
|
50
|
+
if (CSS_HEX.test(trimmed) || CSS_COLOR_FUNCTION.test(trimmed))
|
|
51
|
+
return trimmed;
|
|
52
|
+
return CSS_NAMED_COLORS.has(trimmed.toLowerCase()) ? trimmed : undefined;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=css-color.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css-color.js","sourceRoot":"","sources":["../src/css-color.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,kBAAkB,GAAG,6DAA6D,CAAC;AACzF,MAAM,OAAO,GAAG,yDAAyD,CAAC;AAE1E,8EAA8E;AAC9E,uEAAuE;AACvE,6BAA6B;AAC7B,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B;;;;;;;;;;;;;;;;;sBAiBoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAClC,CAAC;AAEF,yEAAyE;AACzE,MAAM,UAAU,SAAS,CAAC,KAAyB;IACjD,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAC9E,OAAO,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC"}
|
|
@@ -13,8 +13,8 @@ export interface GoalCategory {
|
|
|
13
13
|
* rather than an inline `background-color` so the CSS keeps ownership of
|
|
14
14
|
* how the colour is used.
|
|
15
15
|
*
|
|
16
|
-
* Validated before it reaches the style attribute — see `safeColor`
|
|
17
|
-
*
|
|
16
|
+
* Validated before it reaches the style attribute — see `safeColor` in
|
|
17
|
+
* `css-color.ts`. A value that is not a recognisable CSS colour is ignored.
|
|
18
18
|
*
|
|
19
19
|
* When omitted or rejected the dot falls back to the product's primary
|
|
20
20
|
* action colour.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goal-categories.d.ts","sourceRoot":"","sources":["../../src/goal-categories/goal-categories.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"goal-categories.d.ts","sourceRoot":"","sources":["../../src/goal-categories/goal-categories.tsx"],"names":[],"mappings":"AAGA,OAAO,uBAAuB,CAAC;AAE/B,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,mBAAmB,kDA0CxF"}
|
|
@@ -1,64 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { cx } from '@manakind/ui-core';
|
|
3
|
+
import { safeColor } from '../css-color';
|
|
3
4
|
import './goal-categories.css';
|
|
4
|
-
/*
|
|
5
|
-
* The colour arrives from outside the token pipeline, so this component
|
|
6
|
-
* validates it instead of trusting its caller.
|
|
7
|
-
*
|
|
8
|
-
* Two separate reasons, and the second is the one that bites in practice.
|
|
9
|
-
*
|
|
10
|
-
* **Injection, on the server.** React escapes HTML, not CSS. For a *custom*
|
|
11
|
-
* property `react-dom/server` serialises the string into the markup with only
|
|
12
|
-
* the five HTML entities replaced — the semicolon is not among them — so
|
|
13
|
-
* `red;position:fixed;inset:0` closes the declaration and the browser parses
|
|
14
|
-
* the tail as further rules. Enough to cover the page or hide a control.
|
|
15
|
-
* (React's client path goes through `style.setProperty()`, and CSSOM rejects
|
|
16
|
-
* a value containing `;`, so this is specifically an SSR exposure.)
|
|
17
|
-
*
|
|
18
|
-
* **Invisible dots, everywhere.** A value that is not a colour at all is the
|
|
19
|
-
* likelier input — a product mapping its own palette names through, say. Once
|
|
20
|
-
* it is *set*, the `var(--mui-goal-category, …)` fallback in the CSS no longer
|
|
21
|
-
* applies, and the `background-color` it feeds is invalid at computed-value
|
|
22
|
-
* time: the dot resolves to transparent rather than falling back. So the guard
|
|
23
|
-
* admits only real colour syntax; anything else is left unset, which is what
|
|
24
|
-
* makes the documented fallback actually happen.
|
|
25
|
-
*
|
|
26
|
-
* This outlived the pills-to-dots change. The mechanism moved — it was
|
|
27
|
-
* `color-mix()` going invalid, now it is `background-color` — but "a bad value
|
|
28
|
-
* silently paints nothing" is a property of the custom-property fallback, not
|
|
29
|
-
* of whatever consumed it.
|
|
30
|
-
*/
|
|
31
|
-
const CSS_COLOR_FUNCTION = /^(?:rgb|hsl|hwb|lab|lch|oklab|oklch|color)a?\([^;(){}]*\)$/i;
|
|
32
|
-
const CSS_HEX = /^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;
|
|
33
|
-
// The CSS named colours. A bare word outside this set is rejected rather than
|
|
34
|
-
// passed through, because an unrecognised keyword is what produces the
|
|
35
|
-
// invalid-colour case above.
|
|
36
|
-
const CSS_NAMED_COLORS = new Set(`aliceblue antiquewhite aqua aquamarine azure beige bisque black blanchedalmond blue
|
|
37
|
-
blueviolet brown burlywood cadetblue chartreuse chocolate coral cornflowerblue cornsilk
|
|
38
|
-
crimson cyan darkblue darkcyan darkgoldenrod darkgray darkgreen darkgrey darkkhaki
|
|
39
|
-
darkmagenta darkolivegreen darkorange darkorchid darkred darksalmon darkseagreen
|
|
40
|
-
darkslateblue darkslategray darkslategrey darkturquoise darkviolet deeppink deepskyblue
|
|
41
|
-
dimgray dimgrey dodgerblue firebrick floralwhite forestgreen fuchsia gainsboro ghostwhite
|
|
42
|
-
gold goldenrod gray green greenyellow grey honeydew hotpink indianred indigo ivory khaki
|
|
43
|
-
lavender lavenderblush lawngreen lemonchiffon lightblue lightcoral lightcyan
|
|
44
|
-
lightgoldenrodyellow lightgray lightgreen lightgrey lightpink lightsalmon lightseagreen
|
|
45
|
-
lightskyblue lightslategray lightslategrey lightsteelblue lightyellow lime limegreen linen
|
|
46
|
-
magenta maroon mediumaquamarine mediumblue mediumorchid mediumpurple mediumseagreen
|
|
47
|
-
mediumslateblue mediumspringgreen mediumturquoise mediumvioletred midnightblue mintcream
|
|
48
|
-
mistyrose moccasin navajowhite navy oldlace olive olivedrab orange orangered orchid
|
|
49
|
-
palegoldenrod palegreen paleturquoise palevioletred papayawhip peachpuff peru pink plum
|
|
50
|
-
powderblue purple rebeccapurple red rosybrown royalblue saddlebrown salmon sandybrown
|
|
51
|
-
seagreen seashell sienna silver skyblue slateblue slategray slategrey snow springgreen
|
|
52
|
-
steelblue tan teal thistle tomato transparent turquoise violet wheat white whitesmoke
|
|
53
|
-
yellow yellowgreen`.split(/\s+/));
|
|
54
|
-
function safeColor(color) {
|
|
55
|
-
const trimmed = color?.trim();
|
|
56
|
-
if (!trimmed)
|
|
57
|
-
return undefined;
|
|
58
|
-
if (CSS_HEX.test(trimmed) || CSS_COLOR_FUNCTION.test(trimmed))
|
|
59
|
-
return trimmed;
|
|
60
|
-
return CSS_NAMED_COLORS.has(trimmed.toLowerCase()) ? trimmed : undefined;
|
|
61
|
-
}
|
|
62
5
|
/**
|
|
63
6
|
* The categories a Manuia goal belongs to, as dotted text.
|
|
64
7
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goal-categories.js","sourceRoot":"","sources":["../../src/goal-categories/goal-categories.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAEvC,OAAO,
|
|
1
|
+
{"version":3,"file":"goal-categories.js","sourceRoot":"","sources":["../../src/goal-categories/goal-categories.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,uBAAuB,CAAC;AAuC/B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,cAAc,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAuB;IACvF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,uEAAuE;IACvE,4EAA4E;IAC5E,sEAAsE;IACtE,yEAAyE;IACzE,6EAA6E;IAC7E,wEAAwE;IACxE,sEAAsE;IACtE,wEAAwE;IACxE,4EAA4E;IAC5E,4EAA4E;IAC5E,OAAO;IACP,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;QACvC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAoB,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IAEnF,OAAO,CACL,cAAI,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,aAChD,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACxB,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACtC,OAAO,CACL,cAEE,SAAS,EAAC,2BAA2B,EACrC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAE,EAAE,qBAAqB,EAAE,GAAG,EAAoB,CAAC,CAAC,CAAC,SAAS,aAE1E,eAAM,SAAS,EAAC,0BAA0B,iBAAa,MAAM,GAAG,EAC/D,QAAQ,CAAC,IAAI,KALT,QAAQ,CAAC,EAAE,CAMb,CACN,CAAC;YACJ,CAAC,CAAC,EACD,SAAS,GAAG,CAAC,IAAI,CAChB,cAAI,SAAS,EAAC,+DAA+D,kBACzE,SAAS,aACR,CACN,IACE,CACN,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@manakind/manuia-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"vr": "playwright test"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@manakind/manuia-tokens": "0.
|
|
41
|
-
"@manakind/ui-core": "0.
|
|
40
|
+
"@manakind/manuia-tokens": "0.5.0",
|
|
41
|
+
"@manakind/ui-core": "0.5.0"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"react": "^19.0.0",
|