@revikornmann/muka-ui 0.20.0 → 0.21.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/cjs/components/DocumentViewer/DocumentToolbar.js +1 -1
- package/dist/cjs/components/DocumentViewer/DocumentToolbar.js.map +1 -1
- package/dist/cjs/components/Icon/Icon.js +17 -7
- package/dist/cjs/components/Icon/Icon.js.map +1 -1
- package/dist/cjs/components/Icon/iconRegistry.js +140 -116
- package/dist/cjs/components/Icon/iconRegistry.js.map +1 -1
- package/dist/cjs/components/Icon/index.js +4 -1
- package/dist/cjs/components/Icon/index.js.map +1 -1
- package/dist/cjs/components/index.js +5 -3
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/esm/components/DocumentViewer/DocumentToolbar.js +1 -1
- package/dist/esm/components/DocumentViewer/DocumentToolbar.js.map +1 -1
- package/dist/esm/components/Icon/Icon.js +14 -7
- package/dist/esm/components/Icon/Icon.js.map +1 -1
- package/dist/esm/components/Icon/iconRegistry.js +138 -83
- package/dist/esm/components/Icon/iconRegistry.js.map +1 -1
- package/dist/esm/components/Icon/index.js +1 -1
- package/dist/esm/components/Icon/index.js.map +1 -1
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/index.js.map +1 -1
- package/dist/styles/index.css +843 -843
- package/dist/styles/muka-dark.css +843 -843
- package/dist/styles/muka-light.css +843 -843
- package/dist/styles/wireframe-dark.css +843 -843
- package/dist/styles/wireframe-light.css +843 -843
- package/dist/types/components/Icon/Icon.d.ts +20 -7
- package/dist/types/components/Icon/Icon.d.ts.map +1 -1
- package/dist/types/components/Icon/iconRegistry.d.ts +109 -14
- package/dist/types/components/Icon/iconRegistry.d.ts.map +1 -1
- package/dist/types/components/Icon/index.d.ts +1 -1
- package/dist/types/components/Icon/index.d.ts.map +1 -1
- package/dist/types/components/index.d.ts +1 -1
- package/dist/types/components/index.d.ts.map +1 -1
- package/package.json +2 -1
- package/skills/figma-to-code/SKILL.md +17 -2
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import './Icon.css';
|
|
3
|
-
import { type IconName } from './iconRegistry';
|
|
4
|
-
export type { IconName } from './iconRegistry';
|
|
3
|
+
import { type IconComponent, type IconName } from './iconRegistry';
|
|
4
|
+
export type { IconName, RegisteredIconName, ListedIcon } from './iconRegistry';
|
|
5
|
+
export { registerIcon, listRegisteredIcons, iconRegistry, type IconRegistryEntry, } from './iconRegistry';
|
|
5
6
|
export interface IconProps {
|
|
6
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Curated muka (or `registerIcon`) nickname.
|
|
9
|
+
* Prefer this for Tier 1 / Tier 2 system chrome — see Storybook Icon grids.
|
|
10
|
+
*/
|
|
7
11
|
name?: IconName;
|
|
8
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Tree-shakeable pass-through: pass a Remix (or custom) component directly.
|
|
14
|
+
* Use for app/Figma glyphs not in the muka registry — no muka release needed.
|
|
15
|
+
* Precedence: `icon` > `name` > `children`.
|
|
16
|
+
*/
|
|
17
|
+
icon?: IconComponent;
|
|
18
|
+
/** Icon style when using `name`. Default line. */
|
|
9
19
|
variant?: 'line' | 'fill';
|
|
10
|
-
/** SVG element or custom content
|
|
20
|
+
/** SVG element or custom content when not using `name` / `icon`. */
|
|
11
21
|
children?: React.ReactNode;
|
|
12
22
|
/** Size variant — uses icon.size tokens */
|
|
13
23
|
size?: 'xs' | 'sm' | 'md' | 'lg';
|
|
@@ -24,8 +34,11 @@ export interface IconProps {
|
|
|
24
34
|
* Icon Component
|
|
25
35
|
*
|
|
26
36
|
* Wrapper that enforces consistent sizing and color inheritance.
|
|
27
|
-
*
|
|
28
|
-
*
|
|
37
|
+
*
|
|
38
|
+
* Three ways to supply a glyph:
|
|
39
|
+
* 1. `name` — curated muka registry (Tier 1 / Tier 2)
|
|
40
|
+
* 2. `icon` — pass a Remix component (`import { RiWifiOffLine } from '@remixicon/react'`)
|
|
41
|
+
* 3. `children` — any custom SVG / node
|
|
29
42
|
*
|
|
30
43
|
* Tokens used:
|
|
31
44
|
* - icon.size.{xs|sm|default|lg}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../components/Icon/Icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,YAAY,CAAC;AACpB,OAAO,
|
|
1
|
+
{"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../components/Icon/Icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,YAAY,CAAC;AACpB,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,QAAQ,EACd,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB;;;;OAIG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IAErB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1B,oEAAoE;IACpE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B,2CAA2C;IAC3C,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAEjC,oEAAoE;IACpE,YAAY,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;IAE1D,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CA2CpC,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1,24 +1,119 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
export type IconComponent = React.ComponentType<{
|
|
3
|
+
className?: string;
|
|
4
|
+
}>;
|
|
2
5
|
export type IconRegistryEntry = {
|
|
3
|
-
line:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
line: IconComponent;
|
|
7
|
+
fill: IconComponent;
|
|
8
|
+
/** 1 = required by Muka components; 2 = common consumer chrome */
|
|
9
|
+
tier: 1 | 2;
|
|
10
|
+
/** Present when this key is only an alias of another canonical name */
|
|
11
|
+
aliasOf?: string;
|
|
9
12
|
};
|
|
10
13
|
/**
|
|
11
|
-
*
|
|
12
|
-
* Icons are keyed by kebab-case name (e.g., "arrow-left", "delete-bin-2", "more-2").
|
|
14
|
+
* Curated RemixIcon registry (Tier 1 + Tier 2).
|
|
13
15
|
*
|
|
14
|
-
*
|
|
16
|
+
* - Tier 1: glyphs Muka production components hardcode via `name=`
|
|
17
|
+
* - Tier 2: shared shell chrome most consumer apps need via `name=`
|
|
15
18
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
19
|
+
* App/domain icons: use `<Icon icon={Ri…} />` or `registerIcon` — do not expand
|
|
20
|
+
* this map for one-off Figma glyphs (keeps consumer bundles small).
|
|
18
21
|
*/
|
|
22
|
+
declare const canonicalRegistry: {
|
|
23
|
+
readonly add: IconRegistryEntry;
|
|
24
|
+
readonly alert: IconRegistryEntry;
|
|
25
|
+
readonly 'arrow-down': IconRegistryEntry;
|
|
26
|
+
readonly 'arrow-down-s': IconRegistryEntry;
|
|
27
|
+
readonly 'arrow-drop-up-down': IconRegistryEntry;
|
|
28
|
+
readonly 'arrow-left': IconRegistryEntry;
|
|
29
|
+
readonly 'arrow-left-s': IconRegistryEntry;
|
|
30
|
+
readonly 'arrow-return': IconRegistryEntry;
|
|
31
|
+
readonly 'arrow-right': IconRegistryEntry;
|
|
32
|
+
readonly 'arrow-right-s': IconRegistryEntry;
|
|
33
|
+
readonly 'arrow-up-s': IconRegistryEntry;
|
|
34
|
+
readonly attachment: IconRegistryEntry;
|
|
35
|
+
readonly check: IconRegistryEntry;
|
|
36
|
+
readonly 'checkbox-circle': IconRegistryEntry;
|
|
37
|
+
readonly close: IconRegistryEntry;
|
|
38
|
+
readonly 'delete-bin': IconRegistryEntry;
|
|
39
|
+
readonly download: IconRegistryEntry;
|
|
40
|
+
readonly 'emotion-happy': IconRegistryEntry;
|
|
41
|
+
readonly 'error-warning': IconRegistryEntry;
|
|
42
|
+
readonly file: IconRegistryEntry;
|
|
43
|
+
readonly 'file-copy': IconRegistryEntry;
|
|
44
|
+
readonly 'file-pdf': IconRegistryEntry;
|
|
45
|
+
readonly 'file-text': IconRegistryEntry;
|
|
46
|
+
readonly 'filter-3': IconRegistryEntry;
|
|
47
|
+
readonly fullscreen: IconRegistryEntry;
|
|
48
|
+
readonly image: IconRegistryEntry;
|
|
49
|
+
readonly information: IconRegistryEntry;
|
|
50
|
+
readonly mic: IconRegistryEntry;
|
|
51
|
+
readonly pause: IconRegistryEntry;
|
|
52
|
+
readonly 'pause-circle': IconRegistryEntry;
|
|
53
|
+
readonly pencil: IconRegistryEntry;
|
|
54
|
+
readonly play: IconRegistryEntry;
|
|
55
|
+
readonly printer: IconRegistryEntry;
|
|
56
|
+
readonly restart: IconRegistryEntry;
|
|
57
|
+
readonly search: IconRegistryEntry;
|
|
58
|
+
readonly 'send-plane2': IconRegistryEntry;
|
|
59
|
+
readonly 'sort-asc': IconRegistryEntry;
|
|
60
|
+
readonly 'sort-desc': IconRegistryEntry;
|
|
61
|
+
readonly 'thumb-down': IconRegistryEntry;
|
|
62
|
+
readonly 'thumb-up': IconRegistryEntry;
|
|
63
|
+
readonly 'zoom-in': IconRegistryEntry;
|
|
64
|
+
readonly 'zoom-out': IconRegistryEntry;
|
|
65
|
+
readonly bell: IconRegistryEntry;
|
|
66
|
+
readonly building: IconRegistryEntry;
|
|
67
|
+
readonly 'close-large': IconRegistryEntry;
|
|
68
|
+
readonly contrast: IconRegistryEntry;
|
|
69
|
+
readonly edit: IconRegistryEntry;
|
|
70
|
+
readonly eye: IconRegistryEntry;
|
|
71
|
+
readonly 'eye-off': IconRegistryEntry;
|
|
72
|
+
readonly google: IconRegistryEntry;
|
|
73
|
+
readonly home: IconRegistryEntry;
|
|
74
|
+
readonly 'home-4': IconRegistryEntry;
|
|
75
|
+
readonly lock: IconRegistryEntry;
|
|
76
|
+
readonly mail: IconRegistryEntry;
|
|
77
|
+
readonly moon: IconRegistryEntry;
|
|
78
|
+
readonly 'more-2': IconRegistryEntry;
|
|
79
|
+
readonly settings: IconRegistryEntry;
|
|
80
|
+
readonly 'settings-3': IconRegistryEntry;
|
|
81
|
+
readonly share: IconRegistryEntry;
|
|
82
|
+
readonly translate: IconRegistryEntry;
|
|
83
|
+
readonly 'translate-2': IconRegistryEntry;
|
|
84
|
+
readonly upload: IconRegistryEntry;
|
|
85
|
+
readonly 'upload-2': IconRegistryEntry;
|
|
86
|
+
readonly user: IconRegistryEntry;
|
|
87
|
+
readonly 'wifi-off': IconRegistryEntry;
|
|
88
|
+
};
|
|
89
|
+
export type RegisteredIconName = keyof typeof canonicalRegistry;
|
|
19
90
|
export declare const iconRegistry: Record<string, IconRegistryEntry>;
|
|
91
|
+
/** Open string type so dynamic `name={…}` props stay valid; unknown names soft-fail. */
|
|
20
92
|
export type IconName = string;
|
|
21
|
-
export declare function getIconComponent(name: IconName, variant: 'line' | 'fill'):
|
|
22
|
-
|
|
23
|
-
|
|
93
|
+
export declare function getIconComponent(name: IconName, variant: 'line' | 'fill'): IconComponent;
|
|
94
|
+
/**
|
|
95
|
+
* Register an app-local icon nickname without a muka release.
|
|
96
|
+
* Prefer `<Icon icon={Ri…} />` for one-offs; use this when many call sites
|
|
97
|
+
* need the same string `name=`.
|
|
98
|
+
*/
|
|
99
|
+
export declare function registerIcon(name: string, registryEntry: Omit<IconRegistryEntry, 'tier'> & {
|
|
100
|
+
tier?: 1 | 2;
|
|
101
|
+
}): void;
|
|
102
|
+
export type ListedIcon = {
|
|
103
|
+
name: string;
|
|
104
|
+
tier: 1 | 2;
|
|
105
|
+
aliasOf?: string;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* List icons for Storybook grids / tooling.
|
|
109
|
+
* By default lists only the muka curated set (not runtime `registerIcon` demos)
|
|
110
|
+
* and omits aliases so designers see one primary kebab name per glyph.
|
|
111
|
+
*/
|
|
112
|
+
export declare function listRegisteredIcons(options?: {
|
|
113
|
+
tier?: 1 | 2;
|
|
114
|
+
includeAliases?: boolean;
|
|
115
|
+
/** Include icons added via registerIcon at runtime (default false). */
|
|
116
|
+
includeRuntime?: boolean;
|
|
117
|
+
}): ListedIcon[];
|
|
118
|
+
export {};
|
|
24
119
|
//# sourceMappingURL=iconRegistry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iconRegistry.d.ts","sourceRoot":"","sources":["../../../../components/Icon/iconRegistry.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"iconRegistry.d.ts","sourceRoot":"","sources":["../../../../components/Icon/iconRegistry.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AA8H1B,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAExE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,aAAa,CAAC;IACpB,kEAAkE;IAClE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IACZ,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAcF;;;;;;;;GAQG;AACH,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqE+B,CAAC;AAEvD,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAEhE,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAE1D,CAAC;AAwBF,wFAAwF;AACxF,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB,aAAa,CAIf;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;CAAE,GAAG,IAAI,CAOlH;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE;IAC5C,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,UAAU,EAAE,CAoBf"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { Icon, type IconProps, type IconName } from './Icon';
|
|
1
|
+
export { Icon, type IconProps, type IconName, type RegisteredIconName, type ListedIcon, registerIcon, listRegisteredIcons, iconRegistry, type IconRegistryEntry, } from './Icon';
|
|
2
2
|
export { default } from './Icon';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/Icon/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/Icon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -5,7 +5,7 @@ export { Form, type FormProps, useForm, type UseFormOptions, type UseFormReturn,
|
|
|
5
5
|
export { NumberInput, type NumberInputProps } from './NumberInput';
|
|
6
6
|
export { Card, type CardProps } from './Card';
|
|
7
7
|
export { Label, type LabelProps } from './Label';
|
|
8
|
-
export { Icon, type IconProps, type IconName } from './Icon';
|
|
8
|
+
export { Icon, type IconProps, type IconName, type RegisteredIconName, type ListedIcon, registerIcon, listRegisteredIcons, type IconRegistryEntry, } from './Icon';
|
|
9
9
|
export { Chip, type ChipProps } from './Chip';
|
|
10
10
|
export { Divider, type DividerProps } from './Divider';
|
|
11
11
|
export { Select, type SelectProps, type SelectOption } from './Select';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../components/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EACL,IAAI,EACJ,KAAK,SAAS,EACd,OAAO,EACP,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,UAAU,GAChB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../components/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@revikornmann/muka-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0",
|
|
4
4
|
"description": "Muka Design System - Multi-brand design tokens and React components",
|
|
5
5
|
"main": "dist/cjs/components/index.js",
|
|
6
6
|
"module": "dist/esm/components/index.js",
|
|
@@ -62,6 +62,7 @@
|
|
|
62
62
|
"figma:connect:publish": "figma-code-connect --publish",
|
|
63
63
|
"typecheck": "tsc --project tsconfig.typecheck.json",
|
|
64
64
|
"check:docs": "node scripts/check-doc-sync.js",
|
|
65
|
+
"check:icons": "node scripts/check-icon-allowlist.js && node scripts/check-icon-bundle.js",
|
|
65
66
|
"check:tokens-used": "node scripts/check-tokens-used.js",
|
|
66
67
|
"lint": "eslint .",
|
|
67
68
|
"lint:rsc": "eslint --config eslint.rsc.mjs \"components/**/*.{ts,tsx}\"",
|
|
@@ -95,7 +95,22 @@ Build from the outside in: page shell, then regions, then controls.
|
|
|
95
95
|
- **Mobile first.** Muka is designed mobile-up with the desktop breakpoint at
|
|
96
96
|
`1024px`. Build the narrow layout first, then enhance.
|
|
97
97
|
|
|
98
|
-
## Step 4:
|
|
98
|
+
## Step 4: Icons (mukas curated registry vs pass-through)
|
|
99
|
+
|
|
100
|
+
Muka `<Icon>` does **not** ship every Remix glyph. Check Storybook → Icon →
|
|
101
|
+
**Tier 1 / Tier 2 registry** (or the installed types / `listRegisteredIcons`).
|
|
102
|
+
|
|
103
|
+
| Glyph in Figma | Code |
|
|
104
|
+
|---|---|
|
|
105
|
+
| On the muka Tier 1 / Tier 2 grid | `<Icon name="kebab-caption" />` |
|
|
106
|
+
| Remix glyph **not** on those grids | `import { RiFooLine } from '@remixicon/react'` then `<Icon icon={RiFooLine} />` |
|
|
107
|
+
| Brand mark / custom SVG | `<Icon><img … /></Icon>` or children SVG |
|
|
108
|
+
|
|
109
|
+
Do **not** invent a `name=` that is missing from the muka grids (it renders empty).
|
|
110
|
+
Do **not** ask for a muka release just to unlock a one-off Figma icon. Use `icon=`
|
|
111
|
+
(or app-local `registerIcon` if many call sites need the same nickname).
|
|
112
|
+
|
|
113
|
+
## Step 5: Handle what Muka does not have
|
|
99
114
|
|
|
100
115
|
When a design needs something Muka does not ship, say so explicitly rather than
|
|
101
116
|
quietly inventing a lookalike — a bespoke component that mimics a Muka one is
|
|
@@ -107,7 +122,7 @@ the most expensive outcome, because it looks correct until the brand changes.
|
|
|
107
122
|
3. Tell the user it is app-local and worth requesting upstream at
|
|
108
123
|
<https://github.com/revikornmann/muka/issues> if it is generic.
|
|
109
124
|
|
|
110
|
-
## Step
|
|
125
|
+
## Step 6: Verify
|
|
111
126
|
|
|
112
127
|
- The screen renders and type-checks.
|
|
113
128
|
- **No hardcoded colours, type sizes, or radii.** Grep your diff for `#`,
|