@revikornmann/muka-ui 0.5.0 → 0.7.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.
Files changed (103) hide show
  1. package/cli/commands/brand.js +7 -0
  2. package/cli/commands/init.js +7 -1
  3. package/cli/templates/CLAUDE.md +18 -4
  4. package/cli/templates/muka-ui-guidelines.md +20 -0
  5. package/dist/cjs/components/DataTable/DataTable.js +15 -2
  6. package/dist/cjs/components/DataTable/DataTable.js.map +1 -1
  7. package/dist/cjs/components/ListItem/ListItem.css +10 -4
  8. package/dist/cjs/components/NavigationTransition/NavigationTransition.js +25 -8
  9. package/dist/cjs/components/NavigationTransition/NavigationTransition.js.map +1 -1
  10. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.css +207 -0
  11. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.js +66 -0
  12. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.js.map +1 -0
  13. package/dist/cjs/components/ProgressAccordeon/index.js +11 -0
  14. package/dist/cjs/components/ProgressAccordeon/index.js.map +1 -0
  15. package/dist/cjs/components/SpecList/SpecList.css +34 -21
  16. package/dist/cjs/components/SpecList/SpecList.js +9 -3
  17. package/dist/cjs/components/SpecList/SpecList.js.map +1 -1
  18. package/dist/cjs/components/index.js +5 -3
  19. package/dist/cjs/components/index.js.map +1 -1
  20. package/dist/esm/components/DataTable/DataTable.js +15 -2
  21. package/dist/esm/components/DataTable/DataTable.js.map +1 -1
  22. package/dist/esm/components/ListItem/ListItem.css +10 -4
  23. package/dist/esm/components/NavigationTransition/NavigationTransition.js +25 -8
  24. package/dist/esm/components/NavigationTransition/NavigationTransition.js.map +1 -1
  25. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.css +207 -0
  26. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.js +62 -0
  27. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.js.map +1 -0
  28. package/dist/esm/components/ProgressAccordeon/index.js +3 -0
  29. package/dist/esm/components/ProgressAccordeon/index.js.map +1 -0
  30. package/dist/esm/components/SpecList/SpecList.css +34 -21
  31. package/dist/esm/components/SpecList/SpecList.js +9 -3
  32. package/dist/esm/components/SpecList/SpecList.js.map +1 -1
  33. package/dist/esm/components/index.js +1 -0
  34. package/dist/esm/components/index.js.map +1 -1
  35. package/dist/styles/components/ListItem.css +10 -4
  36. package/dist/styles/components/ProgressAccordeon.css +207 -0
  37. package/dist/styles/components/SpecList.css +34 -21
  38. package/dist/styles/fonts/funnel-display-latin-wght-normal.woff2 +0 -0
  39. package/dist/styles/fonts/funnel-display.LICENSE.txt +93 -0
  40. package/dist/styles/fonts/funnel-sans-latin-wght-normal.woff2 +0 -0
  41. package/dist/styles/fonts/funnel-sans.LICENSE.txt +93 -0
  42. package/dist/styles/fonts/ibm-plex-sans-latin-wght-normal.woff2 +0 -0
  43. package/dist/styles/fonts/ibm-plex-sans.LICENSE.txt +93 -0
  44. package/dist/styles/fonts/lora-latin-wght-normal.woff2 +0 -0
  45. package/dist/styles/fonts/lora.LICENSE.txt +93 -0
  46. package/dist/styles/fonts/quicksand-latin-wght-normal.woff2 +0 -0
  47. package/dist/styles/fonts/quicksand.LICENSE.txt +93 -0
  48. package/dist/styles/fonts/red-hat-display-latin-wght-normal.woff2 +0 -0
  49. package/dist/styles/fonts/red-hat-display.LICENSE.txt +93 -0
  50. package/dist/styles/fonts/red-hat-text-latin-wght-normal.woff2 +0 -0
  51. package/dist/styles/fonts/red-hat-text.LICENSE.txt +93 -0
  52. package/dist/styles/fonts/yesteryear-latin-400-normal.woff2 +0 -0
  53. package/dist/styles/fonts/yesteryear.LICENSE.txt +93 -0
  54. package/dist/styles/fonts-all.css +75 -0
  55. package/dist/styles/fonts-bouwplan.css +30 -0
  56. package/dist/styles/fonts-fscl.css +21 -0
  57. package/dist/styles/fonts-grip.css +21 -0
  58. package/dist/styles/fonts-muka.css +30 -0
  59. package/dist/styles/fonts-wireframe.css +5 -0
  60. package/dist/styles/index.css +2880 -2474
  61. package/dist/styles/muka-dark.css +2880 -2474
  62. package/dist/styles/muka-light.css +2880 -2474
  63. package/dist/styles/tokens-bouwplan-dark.css +150 -5
  64. package/dist/styles/tokens-bouwplan-light.css +150 -5
  65. package/dist/styles/tokens-fscl-dark.css +150 -5
  66. package/dist/styles/tokens-fscl-light.css +150 -5
  67. package/dist/styles/tokens-grip-dark.css +150 -5
  68. package/dist/styles/tokens-grip-light.css +150 -5
  69. package/dist/styles/tokens-muka-dark.css +150 -5
  70. package/dist/styles/tokens-muka-light.css +150 -5
  71. package/dist/styles/tokens-wireframe-dark.css +150 -5
  72. package/dist/styles/tokens-wireframe-light.css +150 -5
  73. package/dist/styles/wireframe-dark.css +3304 -2930
  74. package/dist/styles/wireframe-light.css +3304 -2930
  75. package/dist/types/components/DataTable/DataTable.d.ts.map +1 -1
  76. package/dist/types/components/NavigationTransition/NavigationTransition.d.ts +3 -1
  77. package/dist/types/components/NavigationTransition/NavigationTransition.d.ts.map +1 -1
  78. package/dist/types/components/ProgressAccordeon/ProgressAccordeon.d.ts +91 -0
  79. package/dist/types/components/ProgressAccordeon/ProgressAccordeon.d.ts.map +1 -0
  80. package/dist/types/components/ProgressAccordeon/index.d.ts +3 -0
  81. package/dist/types/components/ProgressAccordeon/index.d.ts.map +1 -0
  82. package/dist/types/components/SpecList/SpecList.d.ts +13 -5
  83. package/dist/types/components/SpecList/SpecList.d.ts.map +1 -1
  84. package/dist/types/components/index.d.ts +1 -0
  85. package/dist/types/components/index.d.ts.map +1 -1
  86. package/docs/consumers/setup-instructions.md +22 -3
  87. package/package.json +12 -2
  88. package/scripts/build-fonts.js +248 -0
  89. package/scripts/build-tokens.js +12 -1
  90. package/tokens/t1-primitives/color.json +400 -0
  91. package/tokens/t1-primitives/motion.json +21 -0
  92. package/tokens/t2-alias/base.json +17 -0
  93. package/tokens/t2-alias/brand/bouwplan/dark.json +15 -1
  94. package/tokens/t2-alias/brand/bouwplan/light.json +15 -1
  95. package/tokens/t2-alias/brand/fscl/dark.json +15 -1
  96. package/tokens/t2-alias/brand/fscl/light.json +15 -1
  97. package/tokens/t2-alias/brand/grip/dark.json +51 -1
  98. package/tokens/t2-alias/brand/grip/light.json +51 -1
  99. package/tokens/t2-alias/brand/muka/dark.json +51 -1
  100. package/tokens/t2-alias/brand/muka/light.json +51 -1
  101. package/tokens/t2-alias/brand/wireframe/dark.json +51 -1
  102. package/tokens/t2-alias/brand/wireframe/light.json +51 -1
  103. package/tokens/t3-semantics/ui.json +25 -13
@@ -0,0 +1,62 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { Button } from '../Button';
4
+ import { Icon } from '../Icon';
5
+ import { Divider } from '../Divider';
6
+ import './ProgressAccordeon.css';
7
+ /**
8
+ * ProgressAccordeon Component
9
+ *
10
+ * A single step in a vertical, progress-driven accordion flow. Each step
11
+ * combines a numbered/checked step indicator with a heading and an optional
12
+ * content slot — visualising both progress and the work for a step.
13
+ *
14
+ * States:
15
+ * - **past** — dark check indicator, heading, edit + chevron controls; the
16
+ * content slot collapses/expands via `collapsed` + `onToggle`
17
+ * - **current** — accent numbered indicator, heading, content slot, actions
18
+ * - **upcoming** — muted numbered indicator, heading only
19
+ *
20
+ * Content is passed as `children` (an optional slot) and rendered as-is — supply
21
+ * your own `Card` when you want a card surface. Composes the Button, Icon and
22
+ * Divider primitives and is fully themed through the Muka design token system.
23
+ *
24
+ * Tokens used:
25
+ * - alias.color.accent.{default|contrast} — step indicator fills
26
+ * - color.surface.sunken — upcoming indicator fill
27
+ * - color.text.default.{default|inverse} — indicator glyphs
28
+ * - text.heading.{md|sm} — step heading (responsive)
29
+ * - text.body.base.regular — supporting description
30
+ * - text.label.md.{bold|semibold} — indicator number
31
+ * - spacing.{1|4|6|8} — vertical rhythm and gaps
32
+ *
33
+ * @accessibility
34
+ * - Renders each step as a labelled group with `aria-current="step"` on the
35
+ * active (current) step.
36
+ * - The chevron toggle exposes `aria-expanded`.
37
+ */
38
+ export const ProgressAccordeon = ({ state, stepNumber, heading, description, children, divider = true, collapsed = false, onToggle, editLabel = 'Edit', onEdit, primaryAction, secondaryAction, className = '', }) => {
39
+ const isPast = state === 'past';
40
+ const isCurrent = state === 'current';
41
+ const isExpanded = isPast && !collapsed;
42
+ const showToggle = isPast && Boolean(onToggle);
43
+ const showEdit = isExpanded && Boolean(onEdit);
44
+ const showDescription = Boolean(description) && !collapsed;
45
+ const hasSlot = (isExpanded || isCurrent) && Boolean(children);
46
+ const hasActions = isCurrent && Boolean(primaryAction || secondaryAction);
47
+ const rootClasses = [
48
+ 'muka-progress-accordeon',
49
+ `muka-progress-accordeon--${state}`,
50
+ isPast && `muka-progress-accordeon--${collapsed ? 'collapsed' : 'expanded'}`,
51
+ className,
52
+ ].filter(Boolean).join(' ');
53
+ const indicatorClasses = [
54
+ 'muka-progress-accordeon__indicator',
55
+ `muka-progress-accordeon__indicator--${state}`,
56
+ ].join(' ');
57
+ const header = (_jsxs("div", { className: "muka-progress-accordeon__header", children: [_jsxs("div", { className: "muka-progress-accordeon__header-row", children: [_jsxs("div", { className: "muka-progress-accordeon__heading-group", children: [_jsx("div", { className: indicatorClasses, "aria-hidden": "true", children: isPast ? (_jsx(Icon, { name: "check", variant: "fill", size: "sm", className: "muka-progress-accordeon__check-icon" })) : (_jsx("span", { className: "muka-progress-accordeon__number", children: stepNumber })) }), _jsx("h3", { className: "muka-progress-accordeon__heading", children: heading })] }), (showEdit || showToggle) && (_jsxs("div", { className: "muka-progress-accordeon__controls", children: [showEdit && (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "tertiary", size: "md", onClick: onEdit, iconLeft: _jsx(Icon, { name: "pencil", variant: "line", size: "md" }), className: "muka-progress-accordeon__edit muka-progress-accordeon__edit--wide", children: editLabel }), _jsx(Button, { variant: "tertiary", size: "md", iconOnly: true, onClick: onEdit, className: "muka-progress-accordeon__edit muka-progress-accordeon__edit--narrow", "aria-label": editLabel, children: _jsx(Icon, { name: "pencil", variant: "line", size: "md" }) })] })), showToggle && (_jsx(Button, { variant: "tertiary", size: "md", iconOnly: true, onClick: onToggle, className: "muka-progress-accordeon__toggle", "aria-label": collapsed ? 'Expand' : 'Collapse', "aria-expanded": !collapsed, children: _jsx(Icon, { name: collapsed ? 'arrow-down-s' : 'arrow-up-s', variant: "line", size: "md" }) }))] }))] }), showDescription && (_jsx("div", { className: "muka-progress-accordeon__description", children: description }))] }));
58
+ const slot = hasSlot ? (_jsx("div", { className: "muka-progress-accordeon__slot", children: children })) : null;
59
+ return (_jsxs("div", { className: rootClasses, role: "group", "aria-label": `Step ${stepNumber}: ${heading}`, "aria-current": isCurrent ? 'step' : undefined, children: [isExpanded ? (_jsxs("div", { className: "muka-progress-accordeon__body", children: [header, slot] })) : (_jsxs(_Fragment, { children: [header, slot] })), hasActions && (_jsxs("div", { className: "muka-progress-accordeon__actions", children: [secondaryAction && (_jsx(Button, { variant: "secondary", size: "md", onClick: secondaryAction.onClick, disabled: secondaryAction.disabled, className: "muka-progress-accordeon__action", children: secondaryAction.label })), primaryAction && (_jsx(Button, { variant: "primary", size: "md", onClick: primaryAction.onClick, disabled: primaryAction.disabled, className: "muka-progress-accordeon__action", children: primaryAction.label }))] })), divider && _jsx(Divider, { className: "muka-progress-accordeon__divider" })] }));
60
+ };
61
+ export default ProgressAccordeon;
62
+ //# sourceMappingURL=ProgressAccordeon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressAccordeon.js","sourceRoot":"","sources":["../../../../components/ProgressAccordeon/ProgressAccordeon.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { ProgressAccordeon, } from './ProgressAccordeon';
2
+ export { default } from './ProgressAccordeon';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../components/ProgressAccordeon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAIlB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC"}
@@ -3,55 +3,48 @@
3
3
  .muka-spec-list {
4
4
  margin: 0;
5
5
  padding: 0;
6
- background-color: var(--color-surface-level1);
7
- border-radius: var(--radius-md);
8
- overflow: hidden;
9
6
  }
10
7
 
11
8
  /* ─── Row ─────────────────────────────────────────────── */
12
9
 
13
10
  .muka-spec-row {
14
11
  display: flex;
15
- align-items: baseline;
12
+ align-items: flex-start;
16
13
  gap: var(--spacing-3);
17
- padding: var(--spacing-3) var(--spacing-4);
18
- border-top: var(--border-width-regular) solid var(--color-border-default);
19
- }
20
-
21
- .muka-spec-row:first-child {
22
- border-top: none;
14
+ padding-bottom: var(--spacing-3);
23
15
  }
24
16
 
25
17
  /* ─── Label ───────────────────────────────────────────── */
26
18
 
27
19
  .muka-spec-row__label {
28
20
  flex: 0 0 auto;
29
- min-width: 40%;
30
21
  margin: 0;
31
22
  color: var(--color-text-subtle-default);
32
23
  font-family: var(--text-body-md-regular-fontFamily);
33
24
  font-weight: var(--text-body-md-regular-fontWeight);
34
25
  font-size: var(--text-body-md-regular-fontSize);
35
26
  line-height: var(--text-body-md-regular-lineHeight);
27
+ overflow: hidden;
28
+ text-overflow: ellipsis;
29
+ white-space: nowrap;
36
30
  }
37
31
 
38
32
  /* ─── Value ───────────────────────────────────────────── */
39
33
 
40
34
  .muka-spec-row__value {
41
- flex: 1 1 auto;
35
+ flex: 1 1 0;
36
+ min-width: 0;
42
37
  margin: 0;
43
38
  display: flex;
44
39
  flex-direction: column;
45
- align-items: flex-end;
46
- text-align: right;
47
40
  color: var(--color-text-default-default);
48
41
  }
49
42
 
50
43
  .muka-spec-row__value-text {
51
- font-family: var(--text-body-md-medium-fontFamily);
52
- font-weight: var(--text-body-md-medium-fontWeight);
53
- font-size: var(--text-body-md-medium-fontSize);
54
- line-height: var(--text-body-md-medium-lineHeight);
44
+ font-family: var(--text-body-md-regular-fontFamily);
45
+ font-weight: var(--text-body-md-regular-fontWeight);
46
+ font-size: var(--text-body-md-regular-fontSize);
47
+ line-height: var(--text-body-md-regular-lineHeight);
55
48
  }
56
49
 
57
50
  .muka-spec-row__hint {
@@ -62,8 +55,28 @@
62
55
  line-height: var(--text-body-sm-regular-lineHeight);
63
56
  }
64
57
 
65
- /* ─── Compact density ─────────────────────────────────── */
58
+ /* ─── Label width (horizontal stacking) ───────────────── */
59
+
60
+ .muka-spec-list--label-small .muka-spec-row__label {
61
+ width: 80px;
62
+ }
63
+
64
+ .muka-spec-list--label-medium .muka-spec-row__label {
65
+ width: 120px;
66
+ }
67
+
68
+ .muka-spec-list--label-large .muka-spec-row__label {
69
+ width: 160px;
70
+ }
71
+
72
+ /* ─── Vertical stacking ───────────────────────────────── */
73
+
74
+ .muka-spec-list--vertical .muka-spec-row {
75
+ flex-direction: column;
76
+ gap: var(--spacing-1);
77
+ }
66
78
 
67
- .muka-spec-list--compact .muka-spec-row {
68
- padding: var(--spacing-2) var(--spacing-4);
79
+ .muka-spec-list--vertical .muka-spec-row__label {
80
+ width: 100%;
81
+ white-space: normal;
69
82
  }
@@ -14,10 +14,16 @@ export const SpecRow = ({ label, value, hint, className = '' }) => {
14
14
  *
15
15
  * Mobile-friendly alternative to `Table` when displaying flat key/value data
16
16
  * (e.g. motorcycle specs, vehicle details). Each row is a `<dt>/<dd>` pair
17
- * inside a `<dl>` for semantic accessibility.
17
+ * inside a `<dl>` for semantic accessibility. Renders flat — no background,
18
+ * radius, or dividers — so it sits directly on the page surface.
18
19
  */
19
- export const SpecList = ({ children, density = 'default', className = '', }) => {
20
- const classes = ['muka-spec-list', `muka-spec-list--${density}`, className]
20
+ export const SpecList = ({ children, stacking = 'horizontal', labelWidth = 'small', className = '', }) => {
21
+ const classes = [
22
+ 'muka-spec-list',
23
+ `muka-spec-list--${stacking}`,
24
+ `muka-spec-list--label-${labelWidth}`,
25
+ className,
26
+ ]
21
27
  .filter(Boolean)
22
28
  .join(' ');
23
29
  return _jsx("dl", { className: classes, children: children });
@@ -1 +1 @@
1
- {"version":3,"file":"SpecList.js","sourceRoot":"","sources":["../../../../components/SpecList/SpecList.tsx"],"names":[],"mappings":";AACA,OAAO,gBAAgB,CAAC;AAkBxB;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAA2B,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,EAAE,EAAE;IACxF,MAAM,OAAO,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvE,OAAO,CACL,eAAK,SAAS,EAAE,OAAO,aACrB,aAAI,SAAS,EAAC,sBAAsB,YAAE,KAAK,GAAM,EACjD,cAAI,SAAS,EAAC,sBAAsB,aAClC,eAAM,SAAS,EAAC,2BAA2B,YAAE,KAAK,GAAQ,EACzD,IAAI,IAAI,eAAM,SAAS,EAAC,qBAAqB,YAAE,IAAI,GAAQ,IACzD,IACD,CACP,CAAC;AACJ,CAAC,CAAC;AAmBF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAAC,EAChD,QAAQ,EACR,OAAO,GAAG,SAAS,EACnB,SAAS,GAAG,EAAE,GACf,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,CAAC,gBAAgB,EAAE,mBAAmB,OAAO,EAAE,EAAE,SAAS,CAAC;SACxE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,aAAI,SAAS,EAAE,OAAO,YAAG,QAAQ,GAAM,CAAC;AACjD,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"SpecList.js","sourceRoot":"","sources":["../../../../components/SpecList/SpecList.tsx"],"names":[],"mappings":";AACA,OAAO,gBAAgB,CAAC;AAkBxB;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAA2B,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,EAAE,EAAE;IACxF,MAAM,OAAO,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvE,OAAO,CACL,eAAK,SAAS,EAAE,OAAO,aACrB,aAAI,SAAS,EAAC,sBAAsB,YAAE,KAAK,GAAM,EACjD,cAAI,SAAS,EAAC,sBAAsB,aAClC,eAAM,SAAS,EAAC,2BAA2B,YAAE,KAAK,GAAQ,EACzD,IAAI,IAAI,eAAM,SAAS,EAAC,qBAAqB,YAAE,IAAI,GAAQ,IACzD,IACD,CACP,CAAC;AACJ,CAAC,CAAC;AA2BF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAAC,EAChD,QAAQ,EACR,QAAQ,GAAG,YAAY,EACvB,UAAU,GAAG,OAAO,EACpB,SAAS,GAAG,EAAE,GACf,EAAE,EAAE;IACH,MAAM,OAAO,GAAG;QACd,gBAAgB;QAChB,mBAAmB,QAAQ,EAAE;QAC7B,yBAAyB,UAAU,EAAE;QACrC,SAAS;KACV;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,aAAI,SAAS,EAAE,OAAO,YAAG,QAAQ,GAAM,CAAC;AACjD,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -19,6 +19,7 @@ export { Alert } from './Alert';
19
19
  export { Toast } from './Toast';
20
20
  export { EmptyState } from './EmptyState';
21
21
  export { ProgressTracker } from './ProgressTracker';
22
+ export { ProgressAccordeon, } from './ProgressAccordeon';
22
23
  export { TopBar, ControlBar } from './TopBar';
23
24
  export { BottomBar, BottomBarTab } from './BottomBar';
24
25
  export { Dialog } from './Dialog';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../components/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../components/index.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@
19
19
  position: relative;
20
20
 
21
21
  /* Interaction - only apply if interactive */
22
- transition: background-color 0.2s ease;
22
+ transition: background-color 0.2s ease, box-shadow 0.2s ease;
23
23
  }
24
24
 
25
25
  /* Interactive state */
@@ -27,13 +27,19 @@
27
27
  cursor: pointer;
28
28
  }
29
29
 
30
+ /*
31
+ * surface.hover / surface.pressed are theme-adaptive translucent tints, so they
32
+ * are layered on top of the item's base surface via an inset box-shadow overlay
33
+ * rather than replacing background-color. This preserves the base level (level3,
34
+ * or level2 when selected) and lets the tint read correctly on any surface.
35
+ */
30
36
  .muka-listitem--interactive:hover:not(:disabled):not(.muka-listitem--disabled) {
31
- background-color: var(--color-surface-hover);
37
+ box-shadow: inset 0 0 0 9999px var(--color-surface-hover);
32
38
  }
33
39
 
34
40
  .muka-listitem--interactive:active:not(:disabled):not(.muka-listitem--disabled),
35
41
  .muka-listitem--interactive.muka-listitem--pressed:not(:disabled):not(.muka-listitem--disabled) {
36
- background-color: var(--color-surface-pressed);
42
+ box-shadow: inset 0 0 0 9999px var(--color-surface-pressed);
37
43
  }
38
44
 
39
45
  /* Focus styles for accessibility */
@@ -59,7 +65,7 @@
59
65
  }
60
66
 
61
67
  .muka-listitem--selected:hover {
62
- background-color: var(--color-surface-hover);
68
+ box-shadow: inset 0 0 0 9999px var(--color-surface-hover);
63
69
  }
64
70
 
65
71
  /* No divider modifier */
@@ -0,0 +1,207 @@
1
+ /* ProgressAccordeon Component Styles — Using Muka Design Tokens */
2
+
3
+ /* ─── Root ──────────────────────────────────────────────── */
4
+ .muka-progress-accordeon {
5
+ container-type: inline-size;
6
+ display: flex;
7
+ flex-direction: column;
8
+ align-items: stretch;
9
+ width: 100%;
10
+ /* Top padding provides the vertical rhythm between stacked steps */
11
+ padding-top: var(--spacing-8);
12
+ }
13
+
14
+ /* Per-state gap: content-bearing steps are tighter, header-only steps looser */
15
+ .muka-progress-accordeon--current,
16
+ .muka-progress-accordeon--past.muka-progress-accordeon--expanded {
17
+ gap: var(--spacing-6);
18
+ }
19
+
20
+ .muka-progress-accordeon--upcoming,
21
+ .muka-progress-accordeon--past.muka-progress-accordeon--collapsed {
22
+ gap: var(--spacing-8);
23
+ }
24
+
25
+ /* Past-expanded groups header + slot with a tighter internal gap */
26
+ .muka-progress-accordeon__body {
27
+ display: flex;
28
+ flex-direction: column;
29
+ gap: var(--spacing-4);
30
+ width: 100%;
31
+ }
32
+
33
+ /* ─── Header ─────────────────────────────────────────────── */
34
+ .muka-progress-accordeon__header {
35
+ display: flex;
36
+ flex-direction: column;
37
+ gap: var(--spacing-3);
38
+ width: 100%;
39
+ }
40
+
41
+ .muka-progress-accordeon__header-row {
42
+ display: flex;
43
+ align-items: flex-start;
44
+ gap: var(--spacing-3);
45
+ width: 100%;
46
+ min-height: 40px;
47
+ }
48
+
49
+ .muka-progress-accordeon__heading-group {
50
+ display: flex;
51
+ flex: 1 0 0;
52
+ min-width: 0;
53
+ align-items: flex-start;
54
+ gap: var(--spacing-4);
55
+ }
56
+
57
+ /* Past steps carry 40px controls; nudge the heading to vertically centre it */
58
+ .muka-progress-accordeon--past .muka-progress-accordeon__heading-group {
59
+ padding-top: var(--spacing-1);
60
+ }
61
+
62
+ .muka-progress-accordeon__controls {
63
+ display: flex;
64
+ flex-shrink: 0;
65
+ align-items: center;
66
+ gap: var(--spacing-3);
67
+ }
68
+
69
+ /* ─── Step indicator (circle) ───────────────────────────── */
70
+ .muka-progress-accordeon__indicator {
71
+ width: 32px;
72
+ height: 32px;
73
+ flex-shrink: 0;
74
+ border-radius: var(--border-radius-full);
75
+ display: flex;
76
+ align-items: center;
77
+ justify-content: center;
78
+ }
79
+
80
+ /* Past: dark accent-contrast circle with inverse checkmark */
81
+ .muka-progress-accordeon__indicator--past {
82
+ background-color: var(--alias-color-accent-contrast);
83
+ color: var(--color-text-default-inverse);
84
+ }
85
+
86
+ /* Current: accent circle with inverse bold number */
87
+ .muka-progress-accordeon__indicator--current {
88
+ background-color: var(--alias-color-accent-default);
89
+ color: var(--color-text-default-inverse);
90
+ }
91
+
92
+ /* Upcoming: sunken/muted circle with default-color number */
93
+ .muka-progress-accordeon__indicator--upcoming {
94
+ background-color: var(--color-surface-sunken);
95
+ color: var(--color-text-default-default);
96
+ }
97
+
98
+ .muka-progress-accordeon__check-icon {
99
+ width: 20px;
100
+ height: 20px;
101
+ color: var(--color-text-default-inverse);
102
+ }
103
+
104
+ .muka-progress-accordeon__number {
105
+ font-family: var(--text-label-md-bold-fontFamily);
106
+ font-weight: var(--text-label-md-bold-fontWeight);
107
+ font-size: var(--text-label-md-bold-fontSize);
108
+ line-height: var(--text-label-md-bold-lineHeight);
109
+ text-align: center;
110
+ user-select: none;
111
+ }
112
+
113
+ /* Upcoming number is semibold (not bold) per Figma */
114
+ .muka-progress-accordeon__indicator--upcoming .muka-progress-accordeon__number {
115
+ font-family: var(--text-label-md-semibold-fontFamily);
116
+ font-weight: var(--text-label-md-semibold-fontWeight);
117
+ }
118
+
119
+ /* ─── Heading (responsive: heading/md on wide, heading/sm on narrow) ─────── */
120
+ .muka-progress-accordeon__heading {
121
+ flex: 1 0 0;
122
+ min-width: 0;
123
+ margin: 0;
124
+ font-family: var(--text-heading-md-fontFamily);
125
+ font-weight: var(--text-heading-md-fontWeight);
126
+ font-size: var(--text-heading-md-fontSize);
127
+ line-height: var(--text-heading-md-lineHeight);
128
+ letter-spacing: var(--text-heading-md-letterSpacing);
129
+ color: var(--color-text-default-default);
130
+ }
131
+
132
+ /* ─── Description ────────────────────────────────────────── */
133
+ /* Indented 48px (32px indicator + 16px gap) to align under the heading text */
134
+ .muka-progress-accordeon__description {
135
+ width: 100%;
136
+ padding-left: 48px;
137
+ font-family: var(--text-body-base-regular-fontFamily);
138
+ font-weight: var(--text-body-base-regular-fontWeight);
139
+ font-size: var(--text-body-base-regular-fontSize);
140
+ line-height: var(--text-body-base-regular-lineHeight);
141
+ color: var(--color-text-default-default);
142
+ }
143
+
144
+ /* ─── Edit button ────────────────────────────────────────── */
145
+ .muka-progress-accordeon__edit {
146
+ flex-shrink: 0;
147
+ }
148
+
149
+ /* Wide container shows the labelled button; the icon-only one is hidden */
150
+ .muka-progress-accordeon__edit--narrow {
151
+ display: none;
152
+ }
153
+
154
+ /* ─── Content slot ───────────────────────────────────────── */
155
+ .muka-progress-accordeon__slot {
156
+ display: flex;
157
+ flex-direction: column;
158
+ align-items: stretch;
159
+ width: 100%;
160
+ }
161
+
162
+ /* ─── Action buttons (current state) ─────────────────────── */
163
+ .muka-progress-accordeon__actions {
164
+ display: flex;
165
+ justify-content: flex-end;
166
+ gap: var(--spacing-4);
167
+ width: 100%;
168
+ }
169
+
170
+ .muka-progress-accordeon__action {
171
+ min-width: 160px;
172
+ }
173
+
174
+ /* ─── Divider ────────────────────────────────────────────── */
175
+ .muka-progress-accordeon__divider {
176
+ width: 100%;
177
+ }
178
+
179
+ /* ─── Responsive (narrow container) ──────────────────────── */
180
+ @container (max-width: 480px) {
181
+ /* Heading steps down to heading/sm. The 24px line-height is shorter than the
182
+ 32px step indicator, so nudge the text down to keep a single line centred. */
183
+ .muka-progress-accordeon__heading {
184
+ font-size: var(--text-heading-sm-fontSize);
185
+ line-height: var(--text-heading-sm-lineHeight);
186
+ padding-top: var(--spacing-1);
187
+ }
188
+
189
+ /* Edit button swaps to the icon-only variant */
190
+ .muka-progress-accordeon__edit--wide {
191
+ display: none;
192
+ }
193
+
194
+ .muka-progress-accordeon__edit--narrow {
195
+ display: inline-flex;
196
+ }
197
+
198
+ /* Action buttons stretch to fill the row */
199
+ .muka-progress-accordeon__actions {
200
+ justify-content: stretch;
201
+ }
202
+
203
+ .muka-progress-accordeon__action {
204
+ flex: 1 0 0;
205
+ min-width: 0;
206
+ }
207
+ }
@@ -3,55 +3,48 @@
3
3
  .muka-spec-list {
4
4
  margin: 0;
5
5
  padding: 0;
6
- background-color: var(--color-surface-level1);
7
- border-radius: var(--radius-md);
8
- overflow: hidden;
9
6
  }
10
7
 
11
8
  /* ─── Row ─────────────────────────────────────────────── */
12
9
 
13
10
  .muka-spec-row {
14
11
  display: flex;
15
- align-items: baseline;
12
+ align-items: flex-start;
16
13
  gap: var(--spacing-3);
17
- padding: var(--spacing-3) var(--spacing-4);
18
- border-top: var(--border-width-regular) solid var(--color-border-default);
19
- }
20
-
21
- .muka-spec-row:first-child {
22
- border-top: none;
14
+ padding-bottom: var(--spacing-3);
23
15
  }
24
16
 
25
17
  /* ─── Label ───────────────────────────────────────────── */
26
18
 
27
19
  .muka-spec-row__label {
28
20
  flex: 0 0 auto;
29
- min-width: 40%;
30
21
  margin: 0;
31
22
  color: var(--color-text-subtle-default);
32
23
  font-family: var(--text-body-md-regular-fontFamily);
33
24
  font-weight: var(--text-body-md-regular-fontWeight);
34
25
  font-size: var(--text-body-md-regular-fontSize);
35
26
  line-height: var(--text-body-md-regular-lineHeight);
27
+ overflow: hidden;
28
+ text-overflow: ellipsis;
29
+ white-space: nowrap;
36
30
  }
37
31
 
38
32
  /* ─── Value ───────────────────────────────────────────── */
39
33
 
40
34
  .muka-spec-row__value {
41
- flex: 1 1 auto;
35
+ flex: 1 1 0;
36
+ min-width: 0;
42
37
  margin: 0;
43
38
  display: flex;
44
39
  flex-direction: column;
45
- align-items: flex-end;
46
- text-align: right;
47
40
  color: var(--color-text-default-default);
48
41
  }
49
42
 
50
43
  .muka-spec-row__value-text {
51
- font-family: var(--text-body-md-medium-fontFamily);
52
- font-weight: var(--text-body-md-medium-fontWeight);
53
- font-size: var(--text-body-md-medium-fontSize);
54
- line-height: var(--text-body-md-medium-lineHeight);
44
+ font-family: var(--text-body-md-regular-fontFamily);
45
+ font-weight: var(--text-body-md-regular-fontWeight);
46
+ font-size: var(--text-body-md-regular-fontSize);
47
+ line-height: var(--text-body-md-regular-lineHeight);
55
48
  }
56
49
 
57
50
  .muka-spec-row__hint {
@@ -62,8 +55,28 @@
62
55
  line-height: var(--text-body-sm-regular-lineHeight);
63
56
  }
64
57
 
65
- /* ─── Compact density ─────────────────────────────────── */
58
+ /* ─── Label width (horizontal stacking) ───────────────── */
59
+
60
+ .muka-spec-list--label-small .muka-spec-row__label {
61
+ width: 80px;
62
+ }
63
+
64
+ .muka-spec-list--label-medium .muka-spec-row__label {
65
+ width: 120px;
66
+ }
67
+
68
+ .muka-spec-list--label-large .muka-spec-row__label {
69
+ width: 160px;
70
+ }
71
+
72
+ /* ─── Vertical stacking ───────────────────────────────── */
73
+
74
+ .muka-spec-list--vertical .muka-spec-row {
75
+ flex-direction: column;
76
+ gap: var(--spacing-1);
77
+ }
66
78
 
67
- .muka-spec-list--compact .muka-spec-row {
68
- padding: var(--spacing-2) var(--spacing-4);
79
+ .muka-spec-list--vertical .muka-spec-row__label {
80
+ width: 100%;
81
+ white-space: normal;
69
82
  }