@revikornmann/muka-ui 0.18.0 → 0.20.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 (195) hide show
  1. package/README.md +81 -60
  2. package/cli/bin/muka-ui.js +12 -5
  3. package/cli/commands/brand.js +33 -14
  4. package/cli/commands/init.js +21 -17
  5. package/cli/commands/install-skill.js +84 -26
  6. package/cli/templates/AGENTS.md +128 -0
  7. package/cli/templates/CLAUDE.md +8 -88
  8. package/cli/templates/muka-ui-guidelines.md +50 -14
  9. package/dist/cjs/components/ActionSheet/ActionSheet.css +4 -4
  10. package/dist/cjs/components/BottomBar/BottomBar.css +0 -3
  11. package/dist/cjs/components/Breadcrumb/Breadcrumb.css +26 -2
  12. package/dist/cjs/components/Combobox/Combobox.css +116 -132
  13. package/dist/cjs/components/Combobox/Combobox.js +175 -52
  14. package/dist/cjs/components/Combobox/Combobox.js.map +1 -1
  15. package/dist/cjs/components/Combobox/index.js.map +1 -1
  16. package/dist/cjs/components/ContextSelect/ContextSelect.css +4 -4
  17. package/dist/cjs/components/DocumentViewer/DocumentViewer.css +2 -2
  18. package/dist/cjs/components/DropdownSelect/DropdownSelect.css +225 -0
  19. package/dist/cjs/components/DropdownSelect/DropdownSelect.js +106 -0
  20. package/dist/cjs/components/DropdownSelect/DropdownSelect.js.map +1 -0
  21. package/dist/cjs/components/DropdownSelect/index.js +6 -0
  22. package/dist/cjs/components/DropdownSelect/index.js.map +1 -0
  23. package/dist/cjs/components/EmptyState/EmptyState.css +8 -8
  24. package/dist/cjs/components/FAB/FAB.css +1 -1
  25. package/dist/cjs/components/FileUpload/FileUpload.css +10 -10
  26. package/dist/cjs/components/Icon/custom/ArrowReturnIcon.js +11 -0
  27. package/dist/cjs/components/Icon/custom/ArrowReturnIcon.js.map +1 -0
  28. package/dist/cjs/components/Icon/iconRegistry.js +14 -1
  29. package/dist/cjs/components/Icon/iconRegistry.js.map +1 -1
  30. package/dist/cjs/components/Input/Input.css +47 -10
  31. package/dist/cjs/components/Input/Input.js +14 -3
  32. package/dist/cjs/components/Input/Input.js.map +1 -1
  33. package/dist/cjs/components/Label/Label.css +1 -1
  34. package/dist/cjs/components/LicensePlateInput/LicensePlateInput.css +1 -1
  35. package/dist/cjs/components/Menu/Menu.css +124 -38
  36. package/dist/cjs/components/Menu/Menu.js +283 -25
  37. package/dist/cjs/components/Menu/Menu.js.map +1 -1
  38. package/dist/cjs/components/Pagination/Pagination.css +15 -15
  39. package/dist/cjs/components/PhotoUploader/PhotoUploader.css +4 -4
  40. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.css +10 -6
  41. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.js +27 -16
  42. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.js.map +1 -1
  43. package/dist/cjs/components/ProgressTracker/ProgressTracker.css +273 -22
  44. package/dist/cjs/components/ProgressTracker/ProgressTracker.js +109 -9
  45. package/dist/cjs/components/ProgressTracker/ProgressTracker.js.map +1 -1
  46. package/dist/cjs/components/Scrollbar/Scrollbar.css +7 -6
  47. package/dist/cjs/components/SearchInput/SearchInput.css +4 -4
  48. package/dist/cjs/components/Select/Select.css +2 -2
  49. package/dist/cjs/components/SmsOtpField/SmsOtpField.css +2 -2
  50. package/dist/cjs/components/SpecList/SpecList.css +8 -8
  51. package/dist/cjs/components/Spinner/Spinner.css +1 -1
  52. package/dist/cjs/components/SwipeActions/SwipeActions.css +6 -6
  53. package/dist/cjs/components/Table/Table.css +3 -3
  54. package/dist/cjs/components/Table/TablePagination.css +1 -1
  55. package/dist/cjs/components/Tabs/Tabs.css +6 -6
  56. package/dist/cjs/components/Textarea/Textarea.css +2 -2
  57. package/dist/cjs/components/Waveform/Waveform.css +1 -1
  58. package/dist/cjs/components/index.js +5 -3
  59. package/dist/cjs/components/index.js.map +1 -1
  60. package/dist/esm/components/ActionSheet/ActionSheet.css +4 -4
  61. package/dist/esm/components/BottomBar/BottomBar.css +0 -3
  62. package/dist/esm/components/Breadcrumb/Breadcrumb.css +26 -2
  63. package/dist/esm/components/Combobox/Combobox.css +116 -132
  64. package/dist/esm/components/Combobox/Combobox.js +177 -54
  65. package/dist/esm/components/Combobox/Combobox.js.map +1 -1
  66. package/dist/esm/components/Combobox/index.js +1 -1
  67. package/dist/esm/components/Combobox/index.js.map +1 -1
  68. package/dist/esm/components/ContextSelect/ContextSelect.css +4 -4
  69. package/dist/esm/components/DocumentViewer/DocumentViewer.css +2 -2
  70. package/dist/esm/components/DropdownSelect/DropdownSelect.css +225 -0
  71. package/dist/esm/components/DropdownSelect/DropdownSelect.js +102 -0
  72. package/dist/esm/components/DropdownSelect/DropdownSelect.js.map +1 -0
  73. package/dist/esm/components/DropdownSelect/index.js +2 -0
  74. package/dist/esm/components/DropdownSelect/index.js.map +1 -0
  75. package/dist/esm/components/EmptyState/EmptyState.css +8 -8
  76. package/dist/esm/components/FAB/FAB.css +1 -1
  77. package/dist/esm/components/FileUpload/FileUpload.css +10 -10
  78. package/dist/esm/components/Icon/custom/ArrowReturnIcon.js +7 -0
  79. package/dist/esm/components/Icon/custom/ArrowReturnIcon.js.map +1 -0
  80. package/dist/esm/components/Icon/iconRegistry.js +14 -1
  81. package/dist/esm/components/Icon/iconRegistry.js.map +1 -1
  82. package/dist/esm/components/Input/Input.css +47 -10
  83. package/dist/esm/components/Input/Input.js +14 -3
  84. package/dist/esm/components/Input/Input.js.map +1 -1
  85. package/dist/esm/components/Label/Label.css +1 -1
  86. package/dist/esm/components/LicensePlateInput/LicensePlateInput.css +1 -1
  87. package/dist/esm/components/Menu/Menu.css +124 -38
  88. package/dist/esm/components/Menu/Menu.js +284 -26
  89. package/dist/esm/components/Menu/Menu.js.map +1 -1
  90. package/dist/esm/components/Pagination/Pagination.css +15 -15
  91. package/dist/esm/components/PhotoUploader/PhotoUploader.css +4 -4
  92. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.css +10 -6
  93. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.js +27 -16
  94. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.js.map +1 -1
  95. package/dist/esm/components/ProgressTracker/ProgressTracker.css +273 -22
  96. package/dist/esm/components/ProgressTracker/ProgressTracker.js +110 -10
  97. package/dist/esm/components/ProgressTracker/ProgressTracker.js.map +1 -1
  98. package/dist/esm/components/Scrollbar/Scrollbar.css +7 -6
  99. package/dist/esm/components/SearchInput/SearchInput.css +4 -4
  100. package/dist/esm/components/Select/Select.css +2 -2
  101. package/dist/esm/components/SmsOtpField/SmsOtpField.css +2 -2
  102. package/dist/esm/components/SpecList/SpecList.css +8 -8
  103. package/dist/esm/components/Spinner/Spinner.css +1 -1
  104. package/dist/esm/components/SwipeActions/SwipeActions.css +6 -6
  105. package/dist/esm/components/Table/Table.css +3 -3
  106. package/dist/esm/components/Table/TablePagination.css +1 -1
  107. package/dist/esm/components/Tabs/Tabs.css +6 -6
  108. package/dist/esm/components/Textarea/Textarea.css +2 -2
  109. package/dist/esm/components/Waveform/Waveform.css +1 -1
  110. package/dist/esm/components/index.js +1 -0
  111. package/dist/esm/components/index.js.map +1 -1
  112. package/dist/styles/components/ActionSheet.css +4 -4
  113. package/dist/styles/components/BottomBar.css +0 -3
  114. package/dist/styles/components/Breadcrumb.css +26 -2
  115. package/dist/styles/components/Combobox.css +116 -132
  116. package/dist/styles/components/ContextSelect.css +4 -4
  117. package/dist/styles/components/DocumentViewer.css +2 -2
  118. package/dist/styles/components/DropdownSelect.css +225 -0
  119. package/dist/styles/components/EmptyState.css +8 -8
  120. package/dist/styles/components/FAB.css +1 -1
  121. package/dist/styles/components/FileUpload.css +10 -10
  122. package/dist/styles/components/Input.css +47 -10
  123. package/dist/styles/components/Label.css +1 -1
  124. package/dist/styles/components/LicensePlateInput.css +1 -1
  125. package/dist/styles/components/Menu.css +124 -38
  126. package/dist/styles/components/Pagination.css +15 -15
  127. package/dist/styles/components/PhotoUploader.css +4 -4
  128. package/dist/styles/components/ProgressAccordeon.css +10 -6
  129. package/dist/styles/components/ProgressTracker.css +273 -22
  130. package/dist/styles/components/Scrollbar.css +7 -6
  131. package/dist/styles/components/SearchInput.css +4 -4
  132. package/dist/styles/components/Select.css +2 -2
  133. package/dist/styles/components/SmsOtpField.css +2 -2
  134. package/dist/styles/components/SpecList.css +8 -8
  135. package/dist/styles/components/Spinner.css +1 -1
  136. package/dist/styles/components/SwipeActions.css +6 -6
  137. package/dist/styles/components/Table.css +3 -3
  138. package/dist/styles/components/Tabs.css +6 -6
  139. package/dist/styles/components/Textarea.css +2 -2
  140. package/dist/styles/components/Typography.css +89 -0
  141. package/dist/styles/components/Waveform.css +1 -1
  142. package/dist/styles/index.css +1167 -462
  143. package/dist/styles/muka-dark.css +1167 -462
  144. package/dist/styles/muka-light.css +1167 -462
  145. package/dist/styles/tokens-bouwplan-dark.css +5 -4
  146. package/dist/styles/tokens-bouwplan-light.css +5 -4
  147. package/dist/styles/tokens-fscl-dark.css +25 -24
  148. package/dist/styles/tokens-fscl-light.css +25 -24
  149. package/dist/styles/tokens-grip-dark.css +4 -3
  150. package/dist/styles/tokens-grip-light.css +4 -3
  151. package/dist/styles/tokens-muka-dark.css +4 -3
  152. package/dist/styles/tokens-muka-light.css +4 -3
  153. package/dist/styles/tokens-wireframe-dark.css +49 -48
  154. package/dist/styles/tokens-wireframe-light.css +49 -48
  155. package/dist/styles/wireframe-dark.css +1212 -507
  156. package/dist/styles/wireframe-light.css +1212 -507
  157. package/dist/types/components/Combobox/Combobox.d.ts +38 -38
  158. package/dist/types/components/Combobox/Combobox.d.ts.map +1 -1
  159. package/dist/types/components/Combobox/index.d.ts +1 -1
  160. package/dist/types/components/Combobox/index.d.ts.map +1 -1
  161. package/dist/types/components/DropdownSelect/DropdownSelect.d.ts +71 -0
  162. package/dist/types/components/DropdownSelect/DropdownSelect.d.ts.map +1 -0
  163. package/dist/types/components/DropdownSelect/index.d.ts +2 -0
  164. package/dist/types/components/DropdownSelect/index.d.ts.map +1 -0
  165. package/dist/types/components/Icon/custom/ArrowReturnIcon.d.ts +9 -0
  166. package/dist/types/components/Icon/custom/ArrowReturnIcon.d.ts.map +1 -0
  167. package/dist/types/components/Icon/iconRegistry.d.ts.map +1 -1
  168. package/dist/types/components/Input/Input.d.ts +5 -0
  169. package/dist/types/components/Input/Input.d.ts.map +1 -1
  170. package/dist/types/components/Menu/Menu.d.ts +42 -2
  171. package/dist/types/components/Menu/Menu.d.ts.map +1 -1
  172. package/dist/types/components/ProgressAccordeon/ProgressAccordeon.d.ts +17 -12
  173. package/dist/types/components/ProgressAccordeon/ProgressAccordeon.d.ts.map +1 -1
  174. package/dist/types/components/ProgressTracker/ProgressTracker.d.ts +29 -8
  175. package/dist/types/components/ProgressTracker/ProgressTracker.d.ts.map +1 -1
  176. package/dist/types/components/index.d.ts +1 -0
  177. package/dist/types/components/index.d.ts.map +1 -1
  178. package/docs/consumers/README.md +116 -37
  179. package/docs/consumers/brand.md +261 -0
  180. package/docs/consumers/figma-console-mcp.md +116 -0
  181. package/docs/consumers/setup-instructions.md +98 -12
  182. package/docs/consumers/skills.md +79 -0
  183. package/package.json +5 -6
  184. package/scripts/postinstall-nudge.js +8 -4
  185. package/skills/add-brand/SKILL.md +204 -0
  186. package/skills/add-brand/reference.md +160 -0
  187. package/skills/figma-to-code/SKILL.md +127 -0
  188. package/skills/pull-from-figma/SKILL.md +123 -0
  189. package/skills/push-to-figma/SKILL.md +172 -0
  190. package/skills/setup-muka/SKILL.md +73 -13
  191. package/tokens/README.md +39 -17
  192. package/tokens/t2-alias/brand/bouwplan/fonts.json +1 -1
  193. package/tokens/t2-alias/brand/fscl/fonts.json +3 -3
  194. package/tokens/t2-alias/brand/wireframe/fonts.json +2 -2
  195. package/tokens/t4-components/menu.json +8 -3
@@ -0,0 +1,128 @@
1
+ # Project Guidelines for AI Development
2
+
3
+ > Generated by `muka-ui init` on {{DATE}}
4
+
5
+ This is the vendor-neutral brief every coding agent reads. `CLAUDE.md` points
6
+ here rather than repeating it, so there is one copy to keep current.
7
+
8
+ ---
9
+
10
+ ## UI Component Constraint
11
+
12
+ **This project uses Muka UI as its sole component library. All UI must be built with components from muka-ui.**
13
+
14
+ ### Rules
15
+
16
+ 1. **Only use components available in Muka UI**
17
+ - Check availability at {{STORYBOOK_URL}}
18
+ - Import from `'{{PACKAGE_NAME}}'`
19
+
20
+ 2. **No alternative styling solutions for UI components**
21
+ - No Tailwind utilities for component styling
22
+ - No CSS modules for UI elements
23
+ - No styled-components or Emotion
24
+ - No inline styles except for layout (using Muka tokens)
25
+
26
+ 3. **When a component doesn't exist**
27
+ - Do NOT create a local component as a workaround
28
+ - Note the missing component as a blocker
29
+ - The component must be built in muka-ui first
30
+ - Once available in Storybook, it can be used here
31
+
32
+ ### Imports
33
+
34
+ ```tsx
35
+ // Import components
36
+ import { Button, Card, Input, Chip } from '{{PACKAGE_NAME}}';
37
+
38
+ // Import styles (choose one theme) — these bundles include the brand's fonts
39
+ import '{{PACKAGE_NAME}}/styles'; // Default muka-light + muka fonts
40
+ import '{{PACKAGE_NAME}}/styles/muka-dark.css'; // muka-dark + muka fonts
41
+ import '{{PACKAGE_NAME}}/styles/wireframe-light.css'; // wireframe (system fonts)
42
+
43
+ // For a brand loaded via its raw token file (e.g. bouwplan/grip/fscl), also import fonts:
44
+ import '{{PACKAGE_NAME}}/styles/tokens-bouwplan-light.css';
45
+ import '{{PACKAGE_NAME}}/styles/fonts-bouwplan.css';
46
+ ```
47
+
48
+ ### Fonts come from Muka — never load them yourself
49
+
50
+ - Muka self-hosts every brand's fonts as `@font-face` (offline-ready, no CDN). The
51
+ default `/styles` bundle and the `/styles/muka-*.css` + `/styles/wireframe-*.css`
52
+ bundles already include them; only a brand loaded via a raw `tokens-<brand>-<mode>.css`
53
+ file needs a separate `{{PACKAGE_NAME}}/styles/fonts-<brand>.css` import.
54
+ - Do NOT load these fonts via `next/font` or a Google Fonts `<link>`.
55
+ - Do NOT override the `--*-fontFamily` / `--alias-font-*-family` tokens — their
56
+ values are the exact `@font-face` family names.
57
+
58
+ ### Acceptable Styling Patterns
59
+
60
+ ```tsx
61
+ // ✅ GOOD: Use Muka UI components
62
+ import { Button, Card } from '{{PACKAGE_NAME}}';
63
+
64
+ // ✅ GOOD: Use Muka UI tokens for layout
65
+ <div style={{
66
+ display: 'flex',
67
+ gap: 'var(--spacing-4)',
68
+ padding: 'var(--spacing-6)'
69
+ }}>
70
+
71
+ // ✅ GOOD: Use semantic color tokens
72
+ <span style={{ color: 'var(--color-text-subtle-default)' }}>
73
+
74
+ // ❌ BAD: Tailwind classes
75
+ <div className="flex gap-4 p-6">
76
+
77
+ // ❌ BAD: CSS modules
78
+ import styles from './Component.module.css';
79
+
80
+ // ❌ BAD: Arbitrary values
81
+ <div style={{ color: '#6366f1', padding: '24px' }}>
82
+ ```
83
+
84
+ ---
85
+
86
+ ## Available Components
87
+
88
+ {{COMPONENT_LIST}}
89
+
90
+ For the full component API and examples, visit: {{STORYBOOK_URL}}
91
+
92
+ ---
93
+
94
+ ## Theme and brand selection
95
+
96
+ Muka's token stylesheets are `:root`-scoped. There are **no `[data-brand]` or
97
+ `[data-theme]` selectors**, so the active theme is whichever stylesheet loaded
98
+ last. Do not add those attributes expecting them to switch anything — to toggle
99
+ at runtime, swap a `<link href>` to a different `tokens-<brand>-<mode>.css`.
100
+
101
+ If this repo has a `brand/` directory, it owns a **custom brand** that overrides
102
+ Muka's brand layer. In that case:
103
+
104
+ - Edit colours and fonts only in `brand/light.json`, `brand/dark.json`, and
105
+ `brand/fonts.json`, using `{color.*}` primitive references rather than hex.
106
+ - Run `npm run build:tokens` after any change, and after every Muka upgrade.
107
+ - Never edit semantic or component tokens — they come from `node_modules` and are
108
+ replaced on upgrade.
109
+
110
+ ---
111
+
112
+ ## Muka skills
113
+
114
+ `npx muka-ui install-skill --list` shows the skills the installed version ships.
115
+ `/add-brand` creates or revises this repo's brand; `/figma-to-code` turns a Figma
116
+ link into a screen built from Muka components.
117
+
118
+ Skills install to `.claude/skills/`, which is the directory Claude Code and
119
+ Cursor both read. An agent that does not read that path can still follow the
120
+ skills, since each is a plain markdown file — point it at
121
+ `.claude/skills/<name>/SKILL.md`.
122
+
123
+ ## Human Docs
124
+ <!-- SYNC: Update paths when Storybook docs change -->
125
+ - Storybook: {{STORYBOOK_URL}}
126
+ - Local guidelines: `docs/muka-ui-guidelines.md`
127
+ - Consumer docs: `node_modules/{{PACKAGE_NAME}}/docs/consumers/README.md`
128
+ - Package: {{PACKAGE_NAME}} v{{VERSION}}
@@ -1,95 +1,15 @@
1
- # Project Guidelines for AI Development
1
+ # CLAUDE.md
2
2
 
3
3
  > Generated by `muka-ui init` on {{DATE}}
4
4
 
5
- ---
5
+ The guidelines for this project live in [`AGENTS.md`](AGENTS.md) — the
6
+ vendor-neutral file every coding agent reads. Read it before writing UI code.
6
7
 
7
- ## UI Component Constraint
8
-
9
- **This project uses Muka UI as its sole component library. All UI must be built with components from muka-ui.**
10
-
11
- ### Rules
12
-
13
- 1. **Only use components available in Muka UI**
14
- - Check availability at {{STORYBOOK_URL}}
15
- - Import from `'{{PACKAGE_NAME}}'`
16
-
17
- 2. **No alternative styling solutions for UI components**
18
- - No Tailwind utilities for component styling
19
- - No CSS modules for UI elements
20
- - No styled-components or Emotion
21
- - No inline styles except for layout (using Muka tokens)
22
-
23
- 3. **When a component doesn't exist**
24
- - Do NOT create a local component as a workaround
25
- - Note the missing component as a blocker
26
- - The component must be built in muka-ui first
27
- - Once available in Storybook, it can be used here
28
-
29
- ### Imports
30
-
31
- ```tsx
32
- // Import components
33
- import { Button, Card, Input, Chip } from '{{PACKAGE_NAME}}';
34
-
35
- // Import styles (choose one theme) — these bundles include the brand's fonts
36
- import '{{PACKAGE_NAME}}/styles'; // Default muka-light + muka fonts
37
- import '{{PACKAGE_NAME}}/styles/muka-dark.css'; // muka-dark + muka fonts
38
- import '{{PACKAGE_NAME}}/styles/wireframe-light.css'; // wireframe (system fonts)
39
-
40
- // For a brand loaded via its raw token file (e.g. bouwplan/grip/fscl), also import fonts:
41
- import '{{PACKAGE_NAME}}/styles/tokens-bouwplan-light.css';
42
- import '{{PACKAGE_NAME}}/styles/fonts-bouwplan.css';
43
- ```
44
-
45
- ### Fonts come from Muka — never load them yourself
46
-
47
- - Muka self-hosts every brand's fonts as `@font-face` (offline-ready, no CDN). The
48
- default `/styles` bundle and the `/styles/muka-*.css` + `/styles/wireframe-*.css`
49
- bundles already include them; only a brand loaded via a raw `tokens-<brand>-<mode>.css`
50
- file needs a separate `{{PACKAGE_NAME}}/styles/fonts-<brand>.css` import.
51
- - Do NOT load these fonts via `next/font` or a Google Fonts `<link>`.
52
- - Do NOT override the `--*-fontFamily` / `--alias-font-*-family` tokens — their
53
- values are the exact `@font-face` family names.
54
-
55
- ### Acceptable Styling Patterns
56
-
57
- ```tsx
58
- // ✅ GOOD: Use Muka UI components
59
- import { Button, Card } from '{{PACKAGE_NAME}}';
60
-
61
- // ✅ GOOD: Use Muka UI tokens for layout
62
- <div style={{
63
- display: 'flex',
64
- gap: 'var(--spacing-4)',
65
- padding: 'var(--spacing-6)'
66
- }}>
67
-
68
- // ✅ GOOD: Use semantic color tokens
69
- <span style={{ color: 'var(--color-text-subtle-default)' }}>
70
-
71
- // ❌ BAD: Tailwind classes
72
- <div className="flex gap-4 p-6">
73
-
74
- // ❌ BAD: CSS modules
75
- import styles from './Component.module.css';
76
-
77
- // ❌ BAD: Arbitrary values
78
- <div style={{ color: '#6366f1', padding: '24px' }}>
79
- ```
80
-
81
- ---
82
-
83
- ## Available Components
84
-
85
- {{COMPONENT_LIST}}
86
-
87
- For the full component API and examples, visit: {{STORYBOOK_URL}}
88
-
89
- ---
8
+ It covers: Muka UI as the sole component library, the styling patterns that are
9
+ and are not allowed, how fonts and theme selection work, and the Muka skills
10
+ available in this repo.
90
11
 
91
12
  ## Human Docs
92
- <!-- SYNC: Update paths when Storybook docs change -->
13
+ - Guidelines: `AGENTS.md`
93
14
  - Storybook: {{STORYBOOK_URL}}
94
- - Local guidelines: `docs/muka-ui-guidelines.md`
95
- - Package: {{PACKAGE_NAME}} v{{VERSION}}
15
+ - Consumer docs: `node_modules/{{PACKAGE_NAME}}/docs/consumers/README.md`
@@ -71,17 +71,25 @@ import '{{PACKAGE_NAME}}/styles/fonts-bouwplan.css';
71
71
 
72
72
  ### Theme Switching
73
73
 
74
- To support dynamic theme switching, import all themes and toggle via a CSS class or attribute:
74
+ Every Muka stylesheet declares its variables on `:root`. There are **no
75
+ `[data-brand]` or `[data-theme]` selectors**, so the active theme is simply
76
+ whichever stylesheet loaded last — importing two of them means one always wins.
77
+ Setting `data-theme` does nothing.
75
78
 
76
- ```tsx
77
- // In your root layout
78
- import '{{PACKAGE_NAME}}/styles/muka-light.css';
79
- import '{{PACKAGE_NAME}}/styles/muka-dark.css';
79
+ For a runtime light/dark toggle, swap a `<link>` rather than importing both:
80
80
 
81
- // Apply theme via data attribute or class
82
- <html data-theme="muka-dark">
81
+ ```html
82
+ <link id="muka-theme" rel="stylesheet" href="/styles/tokens-muka-light.css" />
83
83
  ```
84
84
 
85
+ ```ts
86
+ document.getElementById('muka-theme').href =
87
+ `/styles/tokens-${brand}-${mode}.css`;
88
+ ```
89
+
90
+ Copy the token CSS you need into this project's static/public directory so those
91
+ hrefs resolve. If the app only ever needs one theme, a plain import is simpler.
92
+
85
93
  ---
86
94
 
87
95
  ## Available Components
@@ -120,7 +128,8 @@ var(--spacing-12) /* 3rem */
120
128
  /* Text */
121
129
  var(--color-text-default-default)
122
130
  var(--color-text-subtle-default)
123
- var(--color-text-inverse-default)
131
+ var(--color-text-muted-default)
132
+ var(--color-text-default-inverse) /* on an inverted surface */
124
133
 
125
134
  /* Backgrounds */
126
135
  var(--color-surface-level1)
@@ -143,9 +152,16 @@ var(--color-action-pressed)
143
152
  ```css
144
153
  var(--alias-font-brand-family)
145
154
  var(--alias-font-brand-weight-semibold)
146
- var(--text-label-sm-fontSize)
147
- var(--text-label-md-fontSize)
148
- var(--text-label-lg-fontSize)
155
+
156
+ /* Text styles are composite: --text-<role>-<size>-<weight>-<property>.
157
+ The weight is part of the name, so there is no --text-label-md-fontSize.
158
+ Weights: regular | semibold | bold
159
+ label sizes: xs sm md lg xl 2xl
160
+ body sizes: xs sm base lg xl 2xl (body uses "base", not "md") */
161
+ var(--text-label-md-regular-fontSize)
162
+ var(--text-label-md-semibold-lineHeight)
163
+ var(--text-body-base-regular-fontSize)
164
+ var(--text-body-base-regular-lineHeight)
149
165
  ```
150
166
 
151
167
  ---
@@ -159,16 +175,36 @@ If you need a component that doesn't exist in Muka UI:
159
175
  2. **Don't create a local workaround** — this defeats the purpose of using a design system
160
176
 
161
177
  3. **Request the component** by:
162
- - Opening an issue in the muka-ui repository
163
- - Or building it yourself in muka-ui and submitting a PR
178
+ - Opening an issue at https://github.com/revikornmann/muka/issues
179
+ - Or building it yourself in muka and submitting a PR
164
180
 
165
181
  4. **Wait for availability** — once the component is in Storybook, you can use it
166
182
 
167
183
  ---
168
184
 
185
+ ## Muka skills available in this repo
186
+
187
+ Installed with `npx muka-ui install-skill` (run `--list` to see what the
188
+ installed version ships):
189
+
190
+ | Skill | Use it to |
191
+ |---|---|
192
+ | `/setup-muka` | Install and wire up Muka, including the auto-update workflow |
193
+ | `/add-brand` | Give this repo its own brand, overriding Muka's brand layer |
194
+ | `/figma-to-code` | Turn a Figma link into a screen composed from Muka components |
195
+ | `/push-to-figma` | Publish this repo's brand to Figma as variables |
196
+ | `/pull-from-figma` | Bring a designer's Figma brand edits back into the token files |
197
+
198
+ The two Figma sync skills need [Figma Console
199
+ MCP](https://github.com/southleft/figma-console-mcp); see
200
+ `node_modules/{{PACKAGE_NAME}}/docs/consumers/figma-console-mcp.md`.
201
+
202
+ ---
203
+
169
204
  ## Human Docs
170
205
  <!-- SYNC: Update paths when Storybook docs change -->
171
206
 
172
207
  - **Storybook:** {{STORYBOOK_URL}}
173
- - **GitHub:** https://github.com/uxdelta/muka
208
+ - **GitHub:** https://github.com/revikornmann/muka
209
+ - **Consumer docs:** `node_modules/{{PACKAGE_NAME}}/docs/consumers/README.md`
174
210
  - **Package:** {{PACKAGE_NAME}} v{{VERSION}}
@@ -56,10 +56,10 @@
56
56
  cursor: pointer;
57
57
  text-align: left;
58
58
  color: var(--color-text-default-default);
59
- font-family: var(--text-body-md-regular-fontFamily);
60
- font-weight: var(--text-body-md-regular-fontWeight);
61
- font-size: var(--text-body-md-regular-fontSize);
62
- line-height: var(--text-body-md-regular-lineHeight);
59
+ font-family: var(--text-body-base-regular-fontFamily);
60
+ font-weight: var(--text-body-base-regular-fontWeight);
61
+ font-size: var(--text-body-base-regular-fontSize);
62
+ line-height: var(--text-body-base-regular-lineHeight);
63
63
  -webkit-tap-highlight-color: transparent;
64
64
  transition: background-color 0.12s ease;
65
65
  }
@@ -141,7 +141,6 @@
141
141
  font-weight: var(--text-label-sm-regular-fontWeight);
142
142
  font-size: var(--text-label-sm-regular-fontSize);
143
143
  line-height: var(--text-label-sm-regular-lineHeight);
144
- letter-spacing: var(--text-label-sm-regular-letterSpacing);
145
144
  }
146
145
 
147
146
  /* ─── Floating modifier ───────────────────────────────── */
@@ -227,7 +226,6 @@
227
226
  font-weight: var(--text-label-md-regular-fontWeight);
228
227
  font-size: var(--text-label-md-regular-fontSize);
229
228
  line-height: var(--text-label-md-regular-lineHeight);
230
- letter-spacing: var(--text-label-md-regular-letterSpacing);
231
229
  }
232
230
 
233
231
  /* When floating and sidebar, remove the floating card styles */
@@ -292,7 +290,6 @@
292
290
  font-weight: var(--text-label-md-regular-fontWeight);
293
291
  font-size: var(--text-label-md-regular-fontSize);
294
292
  line-height: var(--text-label-md-regular-lineHeight);
295
- letter-spacing: var(--text-label-md-regular-letterSpacing);
296
293
  }
297
294
 
298
295
  /* When floating and topnav, remove the floating card styles */
@@ -16,19 +16,36 @@
16
16
  gap: var(--spacing-1);
17
17
  }
18
18
 
19
+ .muka-breadcrumb__item:has(.muka-breadcrumb__icon) {
20
+ padding-left: var(--spacing-1);
21
+ }
22
+
19
23
  .muka-breadcrumb__icon {
20
24
  display: inline-flex;
21
25
  align-items: center;
22
26
  color: var(--color-text-subtle-default);
23
27
  }
24
28
 
29
+ .muka-breadcrumb__icon .muka-icon {
30
+ color: inherit;
31
+ }
32
+
33
+ .muka-breadcrumb__item:has(.muka-breadcrumb__current) .muka-breadcrumb__icon {
34
+ color: var(--color-text-default-default);
35
+ }
36
+
37
+ .muka-breadcrumb__item:has(.muka-breadcrumb__link:hover) .muka-breadcrumb__icon {
38
+ color: var(--color-text-action-default);
39
+ }
40
+
25
41
  /* Link styles */
26
42
  .muka-breadcrumb__link {
27
43
  color: var(--color-text-subtle-default);
28
44
  text-decoration: none;
29
45
  border: none;
30
46
  background: none;
31
- padding: 0;
47
+ padding-inline: var(--spacing-2);
48
+ padding-block: 0;
32
49
  cursor: pointer;
33
50
  font: inherit;
34
51
  transition: color 0.15s ease;
@@ -39,10 +56,17 @@
39
56
  text-decoration: underline;
40
57
  }
41
58
 
42
- /* Current page (last item) */
59
+ /* Tighter gap after leading icon */
60
+ .muka-breadcrumb__item:has(.muka-breadcrumb__icon) .muka-breadcrumb__link,
61
+ .muka-breadcrumb__item:has(.muka-breadcrumb__icon) .muka-breadcrumb__current {
62
+ padding-left: var(--spacing-1);
63
+ }
64
+
65
+ /* Current page (last item, no context switcher) */
43
66
  .muka-breadcrumb__current {
44
67
  color: var(--color-text-default-default);
45
68
  font-weight: 600;
69
+ padding-inline: var(--spacing-2);
46
70
  }
47
71
 
48
72
  /* Separator */